@the_library/public 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2298 -0
- package/assets/branding/data-pond.png +0 -0
- package/assets/branding/dsafe-logo.png +0 -0
- package/assets/branding/founder-photo.jpg +0 -0
- package/assets/branding/icon_transparent.png +0 -0
- package/assets/branding/library-favicon.png +0 -0
- package/assets/branding/pond-enterprise-logo.jpg +0 -0
- package/assets/branding/pond-enterprise-logo.svg +27 -0
- package/dist/branding/index.d.ts +48 -0
- package/dist/branding/index.js +67 -0
- package/dist/branding/index.js.map +1 -0
- package/dist/chunk-2HFOWE5R.js +296 -0
- package/dist/chunk-2HFOWE5R.js.map +1 -0
- package/dist/chunk-3L6LH2XK.js +465 -0
- package/dist/chunk-3L6LH2XK.js.map +1 -0
- package/dist/chunk-4CWVFPBN.js +28 -0
- package/dist/chunk-4CWVFPBN.js.map +1 -0
- package/dist/chunk-AGHPATVL.js +65 -0
- package/dist/chunk-AGHPATVL.js.map +1 -0
- package/dist/chunk-JDUYLUDJ.js +4835 -0
- package/dist/chunk-JDUYLUDJ.js.map +1 -0
- package/dist/chunk-OEZK7IX7.js +77 -0
- package/dist/chunk-OEZK7IX7.js.map +1 -0
- package/dist/chunk-PUYDAUCI.js +2873 -0
- package/dist/chunk-PUYDAUCI.js.map +1 -0
- package/dist/chunk-WHWMTS7D.js +99 -0
- package/dist/chunk-WHWMTS7D.js.map +1 -0
- package/dist/chunk-Y7RS6RTM.js +342 -0
- package/dist/chunk-Y7RS6RTM.js.map +1 -0
- package/dist/chunk-ZEZGI2TP.js +197 -0
- package/dist/chunk-ZEZGI2TP.js.map +1 -0
- package/dist/core-dao-core-logo-VDT2I5IW.svg +33 -0
- package/dist/downloader/dl2-sw.js +199 -0
- package/dist/downloader/dl2-sw.js.map +1 -0
- package/dist/downloader/file-worker-v2.js +258 -0
- package/dist/downloader/file-worker-v2.js.map +1 -0
- package/dist/downloader/index.d.ts +45 -0
- package/dist/downloader/index.js +538 -0
- package/dist/downloader/index.js.map +1 -0
- package/dist/downloader/mu-worker-v2.js +197 -0
- package/dist/downloader/mu-worker-v2.js.map +1 -0
- package/dist/downloader/react.d.ts +19 -0
- package/dist/downloader/react.js +32 -0
- package/dist/downloader/react.js.map +1 -0
- package/dist/downloader/solid.d.ts +21 -0
- package/dist/downloader/solid.js +19 -0
- package/dist/downloader/solid.js.map +1 -0
- package/dist/downloader/sw.d.ts +22 -0
- package/dist/downloader/sw.js +119 -0
- package/dist/downloader/sw.js.map +1 -0
- package/dist/downloader/vue.d.ts +23 -0
- package/dist/downloader/vue.js +19 -0
- package/dist/downloader/vue.js.map +1 -0
- package/dist/level-state-J3pj64Tr.d.ts +15 -0
- package/dist/models/astro.d.ts +47 -0
- package/dist/models/astro.js +44 -0
- package/dist/models/astro.js.map +1 -0
- package/dist/models/index.d.ts +244 -0
- package/dist/models/index.js +340 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/models.d.ts +524 -0
- package/dist/models/models.js +46 -0
- package/dist/models/models.js.map +1 -0
- package/dist/models/models_v2.global.js +1 -0
- package/dist/models/patch-worker.js +543 -0
- package/dist/models/patch-worker.js.map +1 -0
- package/dist/models/react.d.ts +43 -0
- package/dist/models/react.js +73 -0
- package/dist/models/react.js.map +1 -0
- package/dist/models/solid.d.ts +73 -0
- package/dist/models/solid.js +95 -0
- package/dist/models/solid.js.map +1 -0
- package/dist/models/vue.d.ts +51 -0
- package/dist/models/vue.js +98 -0
- package/dist/models/vue.js.map +1 -0
- package/dist/orm-BvkX0aBT.d.ts +507 -0
- package/dist/session-vqOnyxga.d.ts +184 -0
- package/dist/state-BTsp-E4v.d.ts +111 -0
- package/dist/types-Dn0EFMO_.d.ts +293 -0
- package/dist/types-Xb8Ta9tZ.d.ts +155 -0
- package/dist/web3/index.d.ts +820 -0
- package/dist/web3/index.js +1020 -0
- package/dist/web3/index.js.map +1 -0
- package/dist/web3/registry.d.ts +145 -0
- package/dist/web3/registry.js +23 -0
- package/dist/web3/registry.js.map +1 -0
- package/dist/web3/vue.d.ts +174 -0
- package/dist/web3/vue.js +391 -0
- package/dist/web3/vue.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
import {
|
|
2
|
+
_clearFileState,
|
|
3
|
+
_clearRender,
|
|
4
|
+
_hydrateFiles,
|
|
5
|
+
_hydrateRenders,
|
|
6
|
+
_setBookData,
|
|
7
|
+
_setFileState,
|
|
8
|
+
_setPruning,
|
|
9
|
+
_setRenderPage,
|
|
10
|
+
downloadState
|
|
11
|
+
} from "../chunk-WHWMTS7D.js";
|
|
12
|
+
import {
|
|
13
|
+
getAllBookData,
|
|
14
|
+
getAllDownloadRecords,
|
|
15
|
+
getBookData,
|
|
16
|
+
getDownloadRecord,
|
|
17
|
+
openMetaDb,
|
|
18
|
+
putDownloadRecord
|
|
19
|
+
} from "../chunk-AGHPATVL.js";
|
|
20
|
+
|
|
21
|
+
// src/downloader/keys.ts
|
|
22
|
+
var CACHE_VERSION = 1;
|
|
23
|
+
var CACHES = {
|
|
24
|
+
pdf: `dl2-pdf-v${CACHE_VERSION}`,
|
|
25
|
+
preview: `dl2-preview-v${CACHE_VERSION}`,
|
|
26
|
+
pages: `dl2-pages-v${CACHE_VERSION}`
|
|
27
|
+
};
|
|
28
|
+
var DL2_SW_VERSION = "__DL2_SW_VERSION__";
|
|
29
|
+
var arKey = (txId) => `/ar/${txId}`;
|
|
30
|
+
var pdfKey = arKey;
|
|
31
|
+
var previewKey = arKey;
|
|
32
|
+
var pageKey = (txId, n) => `/pages/${encodeURIComponent(txId)}/${n}`;
|
|
33
|
+
|
|
34
|
+
// src/downloader/cache-store.ts
|
|
35
|
+
var openPdfCache = () => caches.open(CACHES.pdf);
|
|
36
|
+
var openPreviewCache = () => caches.open(CACHES.preview);
|
|
37
|
+
var openPagesCache = () => caches.open(CACHES.pages);
|
|
38
|
+
var matchPdf = async (txId) => {
|
|
39
|
+
const c = await openPdfCache();
|
|
40
|
+
return c.match(pdfKey(txId));
|
|
41
|
+
};
|
|
42
|
+
var matchPreview = async (txId) => {
|
|
43
|
+
const c = await openPreviewCache();
|
|
44
|
+
return c.match(previewKey(txId));
|
|
45
|
+
};
|
|
46
|
+
var matchPage = async (txId, n) => {
|
|
47
|
+
const c = await openPagesCache();
|
|
48
|
+
return c.match(pageKey(txId, n));
|
|
49
|
+
};
|
|
50
|
+
var deletePdf = async (txId) => {
|
|
51
|
+
const c = await openPdfCache();
|
|
52
|
+
return c.delete(pdfKey(txId));
|
|
53
|
+
};
|
|
54
|
+
var pdfKeys = async () => {
|
|
55
|
+
const c = await openPdfCache();
|
|
56
|
+
const reqs = await c.keys();
|
|
57
|
+
return reqs.map((r) => txIdFromArKey(r.url)).filter(Boolean);
|
|
58
|
+
};
|
|
59
|
+
var previewKeys = async () => {
|
|
60
|
+
const c = await openPreviewCache();
|
|
61
|
+
const reqs = await c.keys();
|
|
62
|
+
return reqs.map((r) => txIdFromArKey(r.url)).filter(Boolean);
|
|
63
|
+
};
|
|
64
|
+
var pageKeys = async () => {
|
|
65
|
+
const c = await openPagesCache();
|
|
66
|
+
const reqs = await c.keys();
|
|
67
|
+
return reqs.map((r) => txIdFromPageKey(r.url)).filter(Boolean);
|
|
68
|
+
};
|
|
69
|
+
function txIdFromArKey(url) {
|
|
70
|
+
const m = url.match(/\/ar\/([^/?#]+)/);
|
|
71
|
+
return m ? m[1] : null;
|
|
72
|
+
}
|
|
73
|
+
function txIdFromPageKey(url) {
|
|
74
|
+
const m = url.match(/\/pages\/([^/?#/]+)\//);
|
|
75
|
+
return m ? decodeURIComponent(m[1]) : null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/downloader/queue.ts
|
|
79
|
+
var ConcurrentProcessor = class {
|
|
80
|
+
constructor(maxConcurrent) {
|
|
81
|
+
this.active = 0;
|
|
82
|
+
this.queue = [];
|
|
83
|
+
// key → promise for every task currently in-flight or waiting to run.
|
|
84
|
+
this.waiters = /* @__PURE__ */ new Map();
|
|
85
|
+
this.max = maxConcurrent;
|
|
86
|
+
}
|
|
87
|
+
add(key, task) {
|
|
88
|
+
const existing = this.waiters.get(key);
|
|
89
|
+
if (existing) return existing;
|
|
90
|
+
const p = new Promise((resolve, reject) => {
|
|
91
|
+
const run = () => {
|
|
92
|
+
this.active++;
|
|
93
|
+
Promise.resolve().then(task).then(resolve, reject).finally(() => {
|
|
94
|
+
this.waiters.delete(key);
|
|
95
|
+
this.active--;
|
|
96
|
+
this._drain();
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
if (this.active < this.max) {
|
|
100
|
+
run();
|
|
101
|
+
} else {
|
|
102
|
+
this.queue.push({ key, run, reject });
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this.waiters.set(key, p);
|
|
106
|
+
return p;
|
|
107
|
+
}
|
|
108
|
+
start() {
|
|
109
|
+
}
|
|
110
|
+
// Drops queued-but-not-started tasks and rejects their callers (so they never
|
|
111
|
+
// hang waiting on a task that will now never run), then resolves once every
|
|
112
|
+
// already-active task has settled.
|
|
113
|
+
stop() {
|
|
114
|
+
const pending = this.queue;
|
|
115
|
+
this.queue = [];
|
|
116
|
+
for (const { key, reject } of pending) {
|
|
117
|
+
this.waiters.delete(key);
|
|
118
|
+
reject(new Error("[queue] stopped before task started"));
|
|
119
|
+
}
|
|
120
|
+
const remaining = [...this.waiters.values()];
|
|
121
|
+
return Promise.allSettled(remaining).then(() => void 0);
|
|
122
|
+
}
|
|
123
|
+
_drain() {
|
|
124
|
+
if (this.queue.length > 0 && this.active < this.max) {
|
|
125
|
+
const next = this.queue.shift();
|
|
126
|
+
next.run();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// src/downloader/orchestrator.ts
|
|
132
|
+
var MAX_RENDER_RETRIES = 2;
|
|
133
|
+
var DEFAULT_PDF_CONCURRENCY = 3;
|
|
134
|
+
var _fileThread = null;
|
|
135
|
+
var _muThread = null;
|
|
136
|
+
var _muTimeout = 6e4;
|
|
137
|
+
var _pdfProcessor = null;
|
|
138
|
+
var pendingPdf = /* @__PURE__ */ new Map();
|
|
139
|
+
var pendingPage = /* @__PURE__ */ new Map();
|
|
140
|
+
function initOrchestrator(fileThread, muThread, opts = {}) {
|
|
141
|
+
_fileThread = fileThread;
|
|
142
|
+
_muThread = muThread;
|
|
143
|
+
_muTimeout = opts.muWorkerTimeout ?? 6e4;
|
|
144
|
+
_pdfProcessor = new ConcurrentProcessor(opts.pdfConcurrency ?? DEFAULT_PDF_CONCURRENCY);
|
|
145
|
+
muThread.listen(handleMuWorkerMessage);
|
|
146
|
+
}
|
|
147
|
+
function handleMuWorkerMessage(msg) {
|
|
148
|
+
if (msg.type === "MuPageDone") {
|
|
149
|
+
_setRenderPage(msg.txId, msg.page, "done");
|
|
150
|
+
} else if (msg.type === "MuPageError") {
|
|
151
|
+
_setRenderPage(msg.txId, msg.page, "error");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function EnsurePdf(txId) {
|
|
155
|
+
const cached = pendingPdf.get(txId);
|
|
156
|
+
if (cached) return cached;
|
|
157
|
+
const p = _ensurePdfInner(txId).finally(() => pendingPdf.delete(txId));
|
|
158
|
+
pendingPdf.set(txId, p);
|
|
159
|
+
return p;
|
|
160
|
+
}
|
|
161
|
+
async function _ensurePdfInner(txId) {
|
|
162
|
+
const hit = await matchPdf(txId);
|
|
163
|
+
if (hit) return;
|
|
164
|
+
_setFileState(txId, { phase: "queued" });
|
|
165
|
+
await _pdfProcessor.add(txId, async () => {
|
|
166
|
+
const result = await _fileThread.rpc({ type: "GetFile", txId, mime: "pdf" });
|
|
167
|
+
if (!result.ok) {
|
|
168
|
+
throw new Error(result.error ?? "[orchestrator] download failed");
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function EnsurePageImage(txId, page) {
|
|
173
|
+
const key = pageKey(txId, page);
|
|
174
|
+
const cached = pendingPage.get(key);
|
|
175
|
+
if (cached) return cached;
|
|
176
|
+
const p = _ensurePageInner(txId, page, key).finally(() => pendingPage.delete(key));
|
|
177
|
+
pendingPage.set(key, p);
|
|
178
|
+
return p;
|
|
179
|
+
}
|
|
180
|
+
async function _ensurePageInner(txId, page, pKey) {
|
|
181
|
+
const hit = await matchPage(txId, page);
|
|
182
|
+
if (hit) return hit;
|
|
183
|
+
_setRenderPage(txId, page, "queued");
|
|
184
|
+
let retries = 0;
|
|
185
|
+
while (retries <= MAX_RENDER_RETRIES) {
|
|
186
|
+
await EnsurePdf(txId);
|
|
187
|
+
_setRenderPage(txId, page, "downloading");
|
|
188
|
+
const renderResult = await requestRender(txId, page);
|
|
189
|
+
if (renderResult === "done") {
|
|
190
|
+
const resp = await matchPage(txId, page);
|
|
191
|
+
if (resp) return resp;
|
|
192
|
+
throw new Error(`[orchestrator] page ${page} not in cache after render`);
|
|
193
|
+
}
|
|
194
|
+
retries++;
|
|
195
|
+
if (retries > MAX_RENDER_RETRIES) {
|
|
196
|
+
_setRenderPage(txId, page, "error");
|
|
197
|
+
throw new Error(`[orchestrator] render failed for page ${page} of ${txId}`);
|
|
198
|
+
}
|
|
199
|
+
await deletePdf(txId);
|
|
200
|
+
pendingPdf.delete(txId);
|
|
201
|
+
}
|
|
202
|
+
throw new Error(`[orchestrator] unreachable`);
|
|
203
|
+
}
|
|
204
|
+
function requestRender(txId, page) {
|
|
205
|
+
return new Promise((resolve) => {
|
|
206
|
+
const timer = setTimeout(() => {
|
|
207
|
+
cleanup();
|
|
208
|
+
resolve("error");
|
|
209
|
+
}, _muTimeout);
|
|
210
|
+
const cleanup = _addOneShotMuListener(txId, page, (result) => {
|
|
211
|
+
clearTimeout(timer);
|
|
212
|
+
resolve(result);
|
|
213
|
+
});
|
|
214
|
+
_muThread.send({ type: "ProcessPages", txId, from: page, to: page });
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function _addOneShotMuListener(txId, page, cb) {
|
|
218
|
+
const thread = _muThread;
|
|
219
|
+
let done = false;
|
|
220
|
+
const cleanup = () => {
|
|
221
|
+
done = true;
|
|
222
|
+
thread.unlisten(handler);
|
|
223
|
+
};
|
|
224
|
+
const handler = (msg) => {
|
|
225
|
+
if (done) return;
|
|
226
|
+
if (msg.type === "MuPageDone" && msg.txId === txId && msg.page === page) {
|
|
227
|
+
cleanup();
|
|
228
|
+
cb("done");
|
|
229
|
+
} else if (msg.type === "MuPageError" && msg.txId === txId && msg.page === page) {
|
|
230
|
+
cleanup();
|
|
231
|
+
cb("error");
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
thread.listen(handler);
|
|
235
|
+
return cleanup;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// src/downloader/client/worker-client.ts
|
|
239
|
+
var RPC_TIMEOUT_MS = 9e4;
|
|
240
|
+
var BaseThread = class {
|
|
241
|
+
constructor() {
|
|
242
|
+
this.handlers = [];
|
|
243
|
+
this.pending = /* @__PURE__ */ new Map();
|
|
244
|
+
}
|
|
245
|
+
listen(cb) {
|
|
246
|
+
this.handlers.push(cb);
|
|
247
|
+
}
|
|
248
|
+
unlisten(cb) {
|
|
249
|
+
this.handlers = this.handlers.filter((h) => h !== cb);
|
|
250
|
+
}
|
|
251
|
+
rpc(cmd) {
|
|
252
|
+
return rpcWithTimeout(this.pending, cmd, (c) => this.send(c));
|
|
253
|
+
}
|
|
254
|
+
_dispatch(msg) {
|
|
255
|
+
if (msg.type === "FileRpcResponse") {
|
|
256
|
+
const list = this.pending.get(msg.key);
|
|
257
|
+
if (list && list.length > 0) {
|
|
258
|
+
const resolver = list.shift();
|
|
259
|
+
if (list.length === 0) this.pending.delete(msg.key);
|
|
260
|
+
resolver({ ok: msg.ok, key: msg.key, error: msg.error });
|
|
261
|
+
}
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
for (const h of this.handlers) h(msg);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
var DedicatedThread = class extends BaseThread {
|
|
268
|
+
constructor(scriptUrl) {
|
|
269
|
+
super();
|
|
270
|
+
this.w = new Worker(scriptUrl, { type: "module" });
|
|
271
|
+
this.w.onmessage = (e) => this._dispatch(e.data);
|
|
272
|
+
this.w.onerror = (e) => console.error("[DedicatedThread] worker error", e);
|
|
273
|
+
}
|
|
274
|
+
send(cmd) {
|
|
275
|
+
this.w.postMessage(cmd);
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
function rpcRequestKey(cmd) {
|
|
279
|
+
return "mime" in cmd ? `${cmd.txId}:${cmd.mime}` : cmd.txId;
|
|
280
|
+
}
|
|
281
|
+
function rpcWithTimeout(pending, cmd, send) {
|
|
282
|
+
return new Promise((resolve, reject) => {
|
|
283
|
+
const key = rpcRequestKey(cmd);
|
|
284
|
+
const list = pending.get(key) ?? [];
|
|
285
|
+
const settle = (r) => {
|
|
286
|
+
clearTimeout(timer);
|
|
287
|
+
resolve(r);
|
|
288
|
+
};
|
|
289
|
+
const timer = setTimeout(() => {
|
|
290
|
+
const l = pending.get(key);
|
|
291
|
+
if (l) {
|
|
292
|
+
const i = l.indexOf(settle);
|
|
293
|
+
if (i >= 0) l.splice(i, 1);
|
|
294
|
+
if (l.length === 0) pending.delete(key);
|
|
295
|
+
}
|
|
296
|
+
reject(new Error(`[worker-client] rpc timeout after ${RPC_TIMEOUT_MS}ms for ${key}`));
|
|
297
|
+
}, RPC_TIMEOUT_MS);
|
|
298
|
+
list.push(settle);
|
|
299
|
+
pending.set(key, list);
|
|
300
|
+
send(cmd);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
function createFileThread(scriptUrl = "/file-worker-v2.js") {
|
|
304
|
+
return new DedicatedThread(scriptUrl);
|
|
305
|
+
}
|
|
306
|
+
function createMuThread(scriptUrl = "/mu-worker-v2.js") {
|
|
307
|
+
return new DedicatedThread(scriptUrl);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// src/downloader/client/progress.ts
|
|
311
|
+
function emitProgress(txId, loaded, total) {
|
|
312
|
+
if (typeof window === "undefined") return;
|
|
313
|
+
window.dispatchEvent(
|
|
314
|
+
new CustomEvent("ARWEAVE_DOWNLOAD_PROGRESS", {
|
|
315
|
+
detail: { txId, loaded, total },
|
|
316
|
+
bubbles: true
|
|
317
|
+
})
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
function emitDone(txId, mime) {
|
|
321
|
+
if (typeof window === "undefined") return;
|
|
322
|
+
window.dispatchEvent(
|
|
323
|
+
new CustomEvent("ARWEAVE_DOWNLOAD_DONE", {
|
|
324
|
+
detail: { txId, mime },
|
|
325
|
+
bubbles: true
|
|
326
|
+
})
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// src/downloader/client/files.ts
|
|
331
|
+
var DEFAULT_PREVIEW_CONCURRENCY = 6;
|
|
332
|
+
var _initPromise = null;
|
|
333
|
+
var _fileThread2 = null;
|
|
334
|
+
var _muThread2 = null;
|
|
335
|
+
var _previewProcessor = null;
|
|
336
|
+
function getFileThread() {
|
|
337
|
+
if (!_fileThread2) _fileThread2 = createFileThread();
|
|
338
|
+
return _fileThread2;
|
|
339
|
+
}
|
|
340
|
+
function getMuThread() {
|
|
341
|
+
if (!_muThread2) _muThread2 = createMuThread();
|
|
342
|
+
return _muThread2;
|
|
343
|
+
}
|
|
344
|
+
function preloadWorkersV2() {
|
|
345
|
+
getFileThread();
|
|
346
|
+
getMuThread();
|
|
347
|
+
}
|
|
348
|
+
var InitDownloaderV2 = (opts = {}) => {
|
|
349
|
+
if (_initPromise) return _initPromise;
|
|
350
|
+
_initPromise = _doInit(opts).catch((err) => {
|
|
351
|
+
_initPromise = null;
|
|
352
|
+
throw err;
|
|
353
|
+
});
|
|
354
|
+
return _initPromise;
|
|
355
|
+
};
|
|
356
|
+
async function _doInit(opts) {
|
|
357
|
+
const {
|
|
358
|
+
requestPersistence = true,
|
|
359
|
+
muWorkerTimeout,
|
|
360
|
+
mupdfUrl = "/js/mupdf.js"
|
|
361
|
+
} = opts;
|
|
362
|
+
if (requestPersistence && typeof navigator !== "undefined" && navigator.storage?.persist) {
|
|
363
|
+
navigator.storage.persist().catch(() => {
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
await openMetaDb();
|
|
367
|
+
const fileThread = getFileThread();
|
|
368
|
+
const muThread = getMuThread();
|
|
369
|
+
_previewProcessor = new ConcurrentProcessor(opts.concurrency?.preview ?? DEFAULT_PREVIEW_CONCURRENCY);
|
|
370
|
+
muThread.send({ type: "MuInit", mupdfUrl });
|
|
371
|
+
initOrchestrator(fileThread, muThread, {
|
|
372
|
+
muWorkerTimeout,
|
|
373
|
+
pdfConcurrency: opts.concurrency?.pdf
|
|
374
|
+
});
|
|
375
|
+
fileThread.listen((msg) => {
|
|
376
|
+
if (msg.type === "DownloadProgress") {
|
|
377
|
+
_setFileState(msg.txId, { phase: "downloading", loaded: msg.loaded, total: msg.total });
|
|
378
|
+
emitProgress(msg.txId, msg.loaded, msg.total);
|
|
379
|
+
} else if (msg.type === "DownloadFinished") {
|
|
380
|
+
_setFileState(msg.txId, { phase: "done" });
|
|
381
|
+
emitDone(msg.txId, msg.mime);
|
|
382
|
+
} else if (msg.type === "DownloadError") {
|
|
383
|
+
_setFileState(msg.txId, { phase: "error", error: msg.error });
|
|
384
|
+
} else if (msg.type === "StoragePruneStarted") {
|
|
385
|
+
_setPruning({ active: true });
|
|
386
|
+
} else if (msg.type === "StoragePruned") {
|
|
387
|
+
_setPruning({ active: false, freedBytes: msg.freedBytes, removedCount: msg.removed });
|
|
388
|
+
for (const txId of msg.prunedTxIds) {
|
|
389
|
+
_clearFileState(txId);
|
|
390
|
+
_clearRender(txId);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
muThread.listen((msg) => {
|
|
395
|
+
if (msg.type === "MuPdfData") {
|
|
396
|
+
_setBookData(msg.txId, msg.bookData);
|
|
397
|
+
if (typeof window !== "undefined") {
|
|
398
|
+
window.dispatchEvent(new CustomEvent("WorkerEvent.MuPdfData", {
|
|
399
|
+
detail: { ...msg.bookData, fileId: msg.txId },
|
|
400
|
+
bubbles: true
|
|
401
|
+
}));
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
const [pdfTxIds, previewTxIds, pageTxIds, allBookData] = await Promise.all([
|
|
406
|
+
pdfKeys(),
|
|
407
|
+
previewKeys(),
|
|
408
|
+
pageKeys(),
|
|
409
|
+
getAllBookData()
|
|
410
|
+
]);
|
|
411
|
+
await _reconcileDownloads(pdfTxIds, previewTxIds);
|
|
412
|
+
const fileEntries = [
|
|
413
|
+
...pdfTxIds.map((id) => [id, { phase: "done" }]),
|
|
414
|
+
...previewTxIds.map((id) => [id, { phase: "done" }])
|
|
415
|
+
];
|
|
416
|
+
_hydrateFiles(fileEntries);
|
|
417
|
+
if (typeof window !== "undefined") {
|
|
418
|
+
pdfTxIds.forEach((id) => emitDone(id, "pdf"));
|
|
419
|
+
previewTxIds.forEach((id) => emitDone(id, "preview"));
|
|
420
|
+
}
|
|
421
|
+
for (const bd of allBookData) {
|
|
422
|
+
_setBookData(bd.txId, bd);
|
|
423
|
+
const pageEntries = bd.dimensions.map((_, i) => [i, "done"]);
|
|
424
|
+
_hydrateRenders([[bd.txId, pageEntries]]);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
var GetPdf = async (txId) => {
|
|
428
|
+
await InitDownloaderV2();
|
|
429
|
+
const cached = await matchPdf(txId);
|
|
430
|
+
if (cached) {
|
|
431
|
+
_touchAccessTime(txId);
|
|
432
|
+
return cached;
|
|
433
|
+
}
|
|
434
|
+
await EnsurePdf(txId);
|
|
435
|
+
const resp = await matchPdf(txId);
|
|
436
|
+
if (!resp) throw new Error(`[downloader_v2] PDF not in cache after download: ${txId}`);
|
|
437
|
+
return resp;
|
|
438
|
+
};
|
|
439
|
+
var GetImage = async (txId) => {
|
|
440
|
+
await InitDownloaderV2();
|
|
441
|
+
const cached = await matchPreview(txId);
|
|
442
|
+
if (cached) {
|
|
443
|
+
_touchAccessTime(txId);
|
|
444
|
+
return cached;
|
|
445
|
+
}
|
|
446
|
+
const result = await _previewProcessor.add(txId, async () => {
|
|
447
|
+
return getFileThread().rpc({ type: "GetFile", txId, mime: "preview" });
|
|
448
|
+
});
|
|
449
|
+
if (!result.ok) throw new Error(`[downloader_v2] preview download failed for ${txId}: ${result.error}`);
|
|
450
|
+
const resp = await matchPreview(txId);
|
|
451
|
+
if (!resp) throw new Error(`[downloader_v2] preview not in cache after download: ${txId}`);
|
|
452
|
+
return resp;
|
|
453
|
+
};
|
|
454
|
+
var EnsurePageImage2 = async (txId, page) => {
|
|
455
|
+
await InitDownloaderV2();
|
|
456
|
+
return EnsurePageImage(txId, page);
|
|
457
|
+
};
|
|
458
|
+
var EnsurePdf2 = async (txId) => {
|
|
459
|
+
await InitDownloaderV2();
|
|
460
|
+
return EnsurePdf(txId);
|
|
461
|
+
};
|
|
462
|
+
var DownloadPdfToDisk = async (txId, filename) => {
|
|
463
|
+
await InitDownloaderV2();
|
|
464
|
+
await EnsurePdf(txId);
|
|
465
|
+
const pdfCache = await openPdfCache();
|
|
466
|
+
const response = await pdfCache.match(pdfKey(txId));
|
|
467
|
+
if (!response) throw new Error(`[downloader_v2] PDF not in cache after EnsurePdf`);
|
|
468
|
+
const blob = await response.blob();
|
|
469
|
+
const url = URL.createObjectURL(blob);
|
|
470
|
+
const a = document.createElement("a");
|
|
471
|
+
a.href = url;
|
|
472
|
+
a.download = filename.endsWith(".pdf") ? filename : `${filename}.pdf`;
|
|
473
|
+
document.body.appendChild(a);
|
|
474
|
+
a.click();
|
|
475
|
+
document.body.removeChild(a);
|
|
476
|
+
URL.revokeObjectURL(url);
|
|
477
|
+
};
|
|
478
|
+
var GetObjectUrl = async (resp) => {
|
|
479
|
+
const blob = await resp.blob();
|
|
480
|
+
return URL.createObjectURL(blob);
|
|
481
|
+
};
|
|
482
|
+
var revokeObjectUrl = (url) => {
|
|
483
|
+
URL.revokeObjectURL(url);
|
|
484
|
+
};
|
|
485
|
+
var storageEstimate = () => navigator.storage.estimate();
|
|
486
|
+
async function _reconcileDownloads(pdfTxIds, previewTxIds) {
|
|
487
|
+
const existing = new Set((await getAllDownloadRecords()).map((r) => r.txId));
|
|
488
|
+
const sizeOf = (resp) => {
|
|
489
|
+
const len = resp?.headers.get("content-length");
|
|
490
|
+
const n = len ? Number(len) : NaN;
|
|
491
|
+
return Number.isFinite(n) ? n : 0;
|
|
492
|
+
};
|
|
493
|
+
const reconcile = async (txId, fileType, resp) => {
|
|
494
|
+
if (existing.has(txId)) return;
|
|
495
|
+
await putDownloadRecord({
|
|
496
|
+
txId,
|
|
497
|
+
fileType,
|
|
498
|
+
sizeBytes: sizeOf(resp),
|
|
499
|
+
downloadedAt: 0,
|
|
500
|
+
lastAccessedAt: 0
|
|
501
|
+
});
|
|
502
|
+
};
|
|
503
|
+
await Promise.all([
|
|
504
|
+
...pdfTxIds.map(async (id) => reconcile(id, "pdf", await matchPdf(id))),
|
|
505
|
+
...previewTxIds.map(async (id) => reconcile(id, "preview", await matchPreview(id)))
|
|
506
|
+
]);
|
|
507
|
+
}
|
|
508
|
+
function _touchAccessTime(txId) {
|
|
509
|
+
const now = Date.now();
|
|
510
|
+
getDownloadRecord(txId).then((rec) => {
|
|
511
|
+
if (!rec) return;
|
|
512
|
+
if (now - rec.lastAccessedAt < 36e5) return;
|
|
513
|
+
putDownloadRecord({ ...rec, lastAccessedAt: now }).catch(() => {
|
|
514
|
+
});
|
|
515
|
+
}).catch(() => {
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
export {
|
|
519
|
+
CACHES,
|
|
520
|
+
CACHE_VERSION,
|
|
521
|
+
DL2_SW_VERSION,
|
|
522
|
+
DownloadPdfToDisk,
|
|
523
|
+
EnsurePageImage2 as EnsurePageImage,
|
|
524
|
+
EnsurePdf2 as EnsurePdf,
|
|
525
|
+
GetImage,
|
|
526
|
+
GetObjectUrl,
|
|
527
|
+
GetPdf,
|
|
528
|
+
InitDownloaderV2,
|
|
529
|
+
downloadState,
|
|
530
|
+
getBookData,
|
|
531
|
+
pageKey,
|
|
532
|
+
pdfKey,
|
|
533
|
+
preloadWorkersV2,
|
|
534
|
+
previewKey,
|
|
535
|
+
revokeObjectUrl,
|
|
536
|
+
storageEstimate
|
|
537
|
+
};
|
|
538
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/downloader/keys.ts","../../src/downloader/cache-store.ts","../../src/downloader/queue.ts","../../src/downloader/orchestrator.ts","../../src/downloader/client/worker-client.ts","../../src/downloader/client/progress.ts","../../src/downloader/client/files.ts"],"mappings":"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","names":["_fileThread","_muThread","EnsurePageImage","EnsurePdf"]}
|