@lls/offline 24.26.0-f2751d4e → 24.27.0-0317dc7d
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/lib/assets/fetch-worker.js +6 -7
- package/lib/assets/offline-worker.js +10 -4
- package/lib/index.js +9 -2
- package/package.json +2 -2
|
@@ -112,7 +112,7 @@ var coreFetchBookDrawerScreen = async (_ev, { offlineWorkerSync: offlineWorkerSy
|
|
|
112
112
|
console.info("fetchBookEffect::no book found", { slug, uris, bookIds });
|
|
113
113
|
return {};
|
|
114
114
|
}
|
|
115
|
-
console.debug("
|
|
115
|
+
console.debug("preloadBook", preloadBook);
|
|
116
116
|
const back = {
|
|
117
117
|
data: {
|
|
118
118
|
viewer: {
|
|
@@ -122,7 +122,7 @@ var coreFetchBookDrawerScreen = async (_ev, { offlineWorkerSync: offlineWorkerSy
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
};
|
|
125
|
-
console.debug("
|
|
125
|
+
console.debug("coreFetchBookDrawerScreen", back);
|
|
126
126
|
return back;
|
|
127
127
|
};
|
|
128
128
|
var coreFetchPagesApi = async (ev, { offlineWorkerSync: offlineWorkerSync2, variables }) => {
|
|
@@ -152,7 +152,6 @@ var coreFetchPagesApi = async (ev, { offlineWorkerSync: offlineWorkerSync2, vari
|
|
|
152
152
|
throw new Error("no offline page");
|
|
153
153
|
}
|
|
154
154
|
const rawPage = pageResponse?.viewer?.pages?.hits?.[0];
|
|
155
|
-
console.debug("before???", rawPage);
|
|
156
155
|
const page = {
|
|
157
156
|
...rawPage,
|
|
158
157
|
book: {
|
|
@@ -225,7 +224,7 @@ var handleScreenCall = async (ev, { offlineWorkerSync: offlineWorkerSync2, known
|
|
|
225
224
|
const json = await handles[key](ev, { offlineWorkerSync: offlineWorkerSync2, variables, knownLinks: knownLinks2 });
|
|
226
225
|
return { status: 200, json };
|
|
227
226
|
} catch (e) {
|
|
228
|
-
console.error(e);
|
|
227
|
+
console.error("failed to handle screencall", e);
|
|
229
228
|
return { status: 500, json: JSON.stringify(e) };
|
|
230
229
|
}
|
|
231
230
|
};
|
|
@@ -253,7 +252,7 @@ var fetchAsset = async (_ev, { entryId, mimeType, offlineWorkerSync: offlineWork
|
|
|
253
252
|
statusText: "OK"
|
|
254
253
|
});
|
|
255
254
|
} catch (e) {
|
|
256
|
-
console.error("FAILED fetchAsset", e);
|
|
255
|
+
console.error("FAILED fetchAsset", entryId, mimeType, e);
|
|
257
256
|
return new Response("FAILED fetchAsset", {
|
|
258
257
|
// @ts-ignore: poor ts typing
|
|
259
258
|
ok: false,
|
|
@@ -312,7 +311,7 @@ var onlineFirst = async (request, event) => {
|
|
|
312
311
|
if (isValidZipName(request.url) && !isValidS3Zip(responseFromNetwork)) {
|
|
313
312
|
throw new Error(`zip is invalid: got ${responseFromNetwork.headers.get("Content-Length")} bytes`);
|
|
314
313
|
}
|
|
315
|
-
const cached = putInCache(request, responseFromNetwork.clone());
|
|
314
|
+
const cached = request.method === "HEAD" ? Promise.resolve() : putInCache(request, responseFromNetwork.clone());
|
|
316
315
|
if (request.url.endsWith(".zip")) {
|
|
317
316
|
await cached;
|
|
318
317
|
event.waitUntil(Promise.resolve());
|
|
@@ -424,6 +423,6 @@ swSelf.onmessage = async ({
|
|
|
424
423
|
}
|
|
425
424
|
throw new Error(`fetchworker:invalid methodName ${Object.keys(services)} ${methodName}`);
|
|
426
425
|
} catch (e) {
|
|
427
|
-
console.error("failed", e);
|
|
426
|
+
console.error("failed", methodName, arg, e);
|
|
428
427
|
}
|
|
429
428
|
};
|
|
@@ -834,7 +834,7 @@ var loadZip = async (buf, bookId) => {
|
|
|
834
834
|
const buffers = [];
|
|
835
835
|
file.ondata = (err2, data, final) => {
|
|
836
836
|
if (err2) {
|
|
837
|
-
console.error("
|
|
837
|
+
console.error("failed to read zip data", file.name, err2);
|
|
838
838
|
}
|
|
839
839
|
if (data.byteLength) {
|
|
840
840
|
buffers.push(data);
|
|
@@ -900,6 +900,7 @@ var fetchZipFile = async (zipUrl, { forceRefresh } = {}) => {
|
|
|
900
900
|
const arrayBuffer = new ArrayBuffer(size);
|
|
901
901
|
accessHandle.read(arrayBuffer);
|
|
902
902
|
await accessHandle.close();
|
|
903
|
+
console.debug("zipfile:", zipUrl, "size:", size);
|
|
903
904
|
return arrayBuffer;
|
|
904
905
|
};
|
|
905
906
|
try {
|
|
@@ -1002,7 +1003,7 @@ var loadBook2 = async ({ id: bookId, forceRefresh }) => {
|
|
|
1002
1003
|
}
|
|
1003
1004
|
return true;
|
|
1004
1005
|
} catch (e) {
|
|
1005
|
-
console.error("failed", e);
|
|
1006
|
+
console.error("failed to load bookId", `${ZIP_BASE_URL}/${bookId}.zip`, e);
|
|
1006
1007
|
return false;
|
|
1007
1008
|
}
|
|
1008
1009
|
})
|
|
@@ -1112,16 +1113,21 @@ var loadPreload2 = async () => {
|
|
|
1112
1113
|
const json = await readZipEntry({ entryName: "preload/books.json", bookId, asJson: true });
|
|
1113
1114
|
loadPreload(json);
|
|
1114
1115
|
} catch (e) {
|
|
1115
|
-
console.error("failed", e);
|
|
1116
|
+
console.error("failed to load preload", e);
|
|
1116
1117
|
}
|
|
1117
1118
|
};
|
|
1119
|
+
var reset = async () => {
|
|
1120
|
+
await (await navigator.storage.getDirectory()).remove({ recursive: true });
|
|
1121
|
+
console.info("opfs cleared");
|
|
1122
|
+
};
|
|
1118
1123
|
var mainHandle = makeSyncHandler(self, {
|
|
1119
1124
|
initChannel,
|
|
1120
1125
|
loadPreload: loadPreload2,
|
|
1121
1126
|
readZipEntry,
|
|
1122
1127
|
loadBooks,
|
|
1123
1128
|
loadBook: loadBook2,
|
|
1124
|
-
configure
|
|
1129
|
+
configure,
|
|
1130
|
+
reset
|
|
1125
1131
|
});
|
|
1126
1132
|
var { handler, ...sender } = makeSyncWorker(self, ["nativeWriteFile", "nativeReadFile", "nativeListZips"]);
|
|
1127
1133
|
self.onmessage = combineHandlers(mainHandle, handler);
|
package/lib/index.js
CHANGED
|
@@ -82,13 +82,14 @@ var combineHandlers = (...handlers) => {
|
|
|
82
82
|
console.error("no handlers matched", methodName);
|
|
83
83
|
};
|
|
84
84
|
};
|
|
85
|
+
var clearCache = async (mode) => caches.delete(`LLS_OFFLINE_${mode}`);
|
|
85
86
|
|
|
86
87
|
// src/hooks/useOfflineWorker.ts
|
|
87
88
|
import { useCallback, useEffect, useState } from "react";
|
|
88
89
|
var offlineWorker = new Worker("/src/worker/offline-worker.js", { type: "module" });
|
|
89
90
|
var { handler, ...offlineWorkerSync } = makeSyncWorker(
|
|
90
91
|
offlineWorker,
|
|
91
|
-
["initChannel", "readZipEntry", "configure", "loadPreload", "loadBooks", "loadBook"],
|
|
92
|
+
["initChannel", "readZipEntry", "configure", "loadPreload", "loadBooks", "loadBook", "reset"],
|
|
92
93
|
"app:offlineWorker"
|
|
93
94
|
);
|
|
94
95
|
var fetchWorkerPromise = new Promise(
|
|
@@ -195,9 +196,15 @@ var useOfflineWorker_default = ({
|
|
|
195
196
|
},
|
|
196
197
|
[]
|
|
197
198
|
);
|
|
199
|
+
const reset = useCallback(async () => {
|
|
200
|
+
await offlineWorkerSync.reset();
|
|
201
|
+
await clearCache(confEnv || "development");
|
|
202
|
+
console.debug("reset: keys:", await caches.keys());
|
|
203
|
+
}, [confEnv]);
|
|
198
204
|
return {
|
|
199
205
|
ready,
|
|
200
|
-
loadBook
|
|
206
|
+
loadBook,
|
|
207
|
+
reset
|
|
201
208
|
};
|
|
202
209
|
};
|
|
203
210
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lls/offline",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.27.0-0317dc7d",
|
|
4
4
|
"description": "offline",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"vite": "7.0.7",
|
|
53
53
|
"vite-tsconfig-paths": "5.1.4",
|
|
54
54
|
"zod": "3.25.50",
|
|
55
|
-
"@lls/vitescripts": "24.
|
|
55
|
+
"@lls/vitescripts": "24.27.0-0317dc7d"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"fflate": "0.8.2"
|