tinybase 6.1.0-beta.3 → 6.1.0-beta.5
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/@types/persisters/index.d.ts +83 -40
- package/@types/persisters/persister-automerge/index.d.ts +4 -4
- package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-browser/index.d.ts +4 -4
- package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-file/index.d.ts +2 -2
- package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-libsql/index.d.ts +3 -3
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
- package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-pglite/index.d.ts +3 -3
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-remote/index.d.ts +2 -2
- package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-sqlite-bun/index.d.ts +159 -0
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-yjs/index.d.ts +4 -4
- package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
- package/@types/persisters/with-schemas/index.d.ts +87 -42
- package/@types/synchronizers/index.d.ts +18 -16
- package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
- package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
- package/@types/synchronizers/with-schemas/index.d.ts +18 -16
- package/@types/ui-react/index.d.ts +2 -2
- package/@types/ui-react/with-schemas/index.d.ts +2 -2
- package/index.js +23 -17
- package/mergeable-store/index.js +23 -17
- package/mergeable-store/with-schemas/index.js +23 -17
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -0
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +46 -6
- package/persisters/index.js +293 -161
- package/persisters/persister-automerge/index.js +55 -50
- package/persisters/persister-automerge/with-schemas/index.js +55 -50
- package/persisters/persister-browser/index.js +56 -55
- package/persisters/persister-browser/with-schemas/index.js +56 -55
- package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
- package/persisters/persister-durable-object-storage/index.js +58 -53
- package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
- package/persisters/persister-electric-sql/index.js +181 -134
- package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
- package/persisters/persister-expo-sqlite/index.js +181 -134
- package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
- package/persisters/persister-file/index.js +55 -50
- package/persisters/persister-file/with-schemas/index.js +55 -50
- package/persisters/persister-indexed-db/index.js +82 -78
- package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
- package/persisters/persister-libsql/index.js +182 -135
- package/persisters/persister-libsql/with-schemas/index.js +182 -135
- package/persisters/persister-partykit-client/index.js +56 -51
- package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
- package/persisters/persister-pglite/index.js +299 -173
- package/persisters/persister-pglite/with-schemas/index.js +299 -173
- package/persisters/persister-postgres/index.js +296 -171
- package/persisters/persister-postgres/with-schemas/index.js +296 -171
- package/persisters/persister-powersync/index.js +189 -138
- package/persisters/persister-powersync/with-schemas/index.js +189 -138
- package/persisters/persister-remote/index.js +55 -50
- package/persisters/persister-remote/with-schemas/index.js +55 -50
- package/persisters/persister-sqlite-bun/index.js +1171 -0
- package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
- package/persisters/persister-sqlite-wasm/index.js +182 -135
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
- package/persisters/persister-sqlite3/index.js +181 -134
- package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
- package/persisters/persister-yjs/index.js +55 -50
- package/persisters/persister-yjs/with-schemas/index.js +55 -50
- package/persisters/with-schemas/index.js +293 -161
- package/readme.md +2 -2
- package/releases.md +29 -1
- package/store/index.js +20 -15
- package/store/with-schemas/index.js +20 -15
- package/synchronizers/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-local/index.js +68 -63
- package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-server/index.js +79 -70
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/synchronizers/with-schemas/index.js +68 -63
- package/ui-react-inspector/index.js +68 -60
- package/ui-react-inspector/with-schemas/index.js +68 -60
- package/with-schemas/index.js +23 -17
|
@@ -10,6 +10,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
10
10
|
const errorNew = (message) => {
|
|
11
11
|
throw new Error(message);
|
|
12
12
|
};
|
|
13
|
+
const tryCatch = async (action, then1, then2) => {
|
|
14
|
+
try {
|
|
15
|
+
return await action();
|
|
16
|
+
} catch (error) {
|
|
17
|
+
/* istanbul ignore next */
|
|
18
|
+
then1?.(error);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
13
21
|
|
|
14
22
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
15
23
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -257,12 +265,7 @@ const createCustomPersister = (
|
|
|
257
265
|
while (
|
|
258
266
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
259
267
|
) {
|
|
260
|
-
|
|
261
|
-
await action();
|
|
262
|
-
} catch (error) {
|
|
263
|
-
/* istanbul ignore next */
|
|
264
|
-
onIgnoredError?.(error);
|
|
265
|
-
}
|
|
268
|
+
await tryCatch(action, onIgnoredError);
|
|
266
269
|
}
|
|
267
270
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
268
271
|
}
|
|
@@ -282,21 +285,23 @@ const createCustomPersister = (
|
|
|
282
285
|
setStatus(1 /* Loading */);
|
|
283
286
|
loads++;
|
|
284
287
|
await schedule(async () => {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
288
|
+
await tryCatch(
|
|
289
|
+
async () => {
|
|
290
|
+
const content = await getPersisted();
|
|
291
|
+
if (isArray(content)) {
|
|
292
|
+
setContentOrChanges(content);
|
|
293
|
+
} else if (initialContent) {
|
|
294
|
+
setDefaultContent(initialContent);
|
|
295
|
+
} else {
|
|
296
|
+
errorNew(`Content is not an array: ${content}`);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
() => {
|
|
300
|
+
if (initialContent) {
|
|
301
|
+
setDefaultContent(initialContent);
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
);
|
|
300
305
|
setStatus(0 /* Idle */);
|
|
301
306
|
});
|
|
302
307
|
}
|
|
@@ -305,29 +310,33 @@ const createCustomPersister = (
|
|
|
305
310
|
const startAutoLoad = async (initialContent) => {
|
|
306
311
|
stopAutoLoad();
|
|
307
312
|
await load(initialContent);
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
313
|
+
await tryCatch(
|
|
314
|
+
async () =>
|
|
315
|
+
(autoLoadHandle = await addPersisterListener(
|
|
316
|
+
async (content, changes) => {
|
|
317
|
+
if (changes || content) {
|
|
318
|
+
/* istanbul ignore else */
|
|
319
|
+
if (status != 2 /* Saving */) {
|
|
320
|
+
setStatus(1 /* Loading */);
|
|
321
|
+
loads++;
|
|
322
|
+
setContentOrChanges(changes ?? content);
|
|
323
|
+
setStatus(0 /* Idle */);
|
|
324
|
+
}
|
|
325
|
+
} else {
|
|
326
|
+
await load();
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
)),
|
|
330
|
+
onIgnoredError,
|
|
331
|
+
);
|
|
326
332
|
return persister;
|
|
327
333
|
};
|
|
328
|
-
const stopAutoLoad = () => {
|
|
334
|
+
const stopAutoLoad = async () => {
|
|
329
335
|
if (autoLoadHandle) {
|
|
330
|
-
|
|
336
|
+
await tryCatch(
|
|
337
|
+
() => delPersisterListener(autoLoadHandle),
|
|
338
|
+
onIgnoredError,
|
|
339
|
+
);
|
|
331
340
|
autoLoadHandle = void 0;
|
|
332
341
|
}
|
|
333
342
|
return persister;
|
|
@@ -339,12 +348,7 @@ const createCustomPersister = (
|
|
|
339
348
|
setStatus(2 /* Saving */);
|
|
340
349
|
saves++;
|
|
341
350
|
await schedule(async () => {
|
|
342
|
-
|
|
343
|
-
await setPersisted(getContent, changes);
|
|
344
|
-
} catch (error) {
|
|
345
|
-
/* istanbul ignore next */
|
|
346
|
-
onIgnoredError?.(error);
|
|
347
|
-
}
|
|
351
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
348
352
|
setStatus(0 /* Idle */);
|
|
349
353
|
});
|
|
350
354
|
}
|
|
@@ -361,7 +365,7 @@ const createCustomPersister = (
|
|
|
361
365
|
});
|
|
362
366
|
return persister;
|
|
363
367
|
};
|
|
364
|
-
const stopAutoSave = () => {
|
|
368
|
+
const stopAutoSave = async () => {
|
|
365
369
|
if (autoSaveListenerId) {
|
|
366
370
|
store.delListener(autoSaveListenerId);
|
|
367
371
|
autoSaveListenerId = void 0;
|
|
@@ -382,9 +386,10 @@ const createCustomPersister = (
|
|
|
382
386
|
return persister;
|
|
383
387
|
};
|
|
384
388
|
const getStore = () => store;
|
|
385
|
-
const destroy = () => {
|
|
389
|
+
const destroy = async () => {
|
|
386
390
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
387
|
-
|
|
391
|
+
await persister.stopAutoLoad();
|
|
392
|
+
return await persister.stopAutoSave();
|
|
388
393
|
};
|
|
389
394
|
const getStats = () => ({loads, saves});
|
|
390
395
|
const persister = {
|
|
@@ -10,6 +10,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
10
10
|
const errorNew = (message) => {
|
|
11
11
|
throw new Error(message);
|
|
12
12
|
};
|
|
13
|
+
const tryCatch = async (action, then1, then2) => {
|
|
14
|
+
try {
|
|
15
|
+
return await action();
|
|
16
|
+
} catch (error) {
|
|
17
|
+
/* istanbul ignore next */
|
|
18
|
+
then1?.(error);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
13
21
|
|
|
14
22
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
15
23
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -257,12 +265,7 @@ const createCustomPersister = (
|
|
|
257
265
|
while (
|
|
258
266
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
259
267
|
) {
|
|
260
|
-
|
|
261
|
-
await action();
|
|
262
|
-
} catch (error) {
|
|
263
|
-
/* istanbul ignore next */
|
|
264
|
-
onIgnoredError?.(error);
|
|
265
|
-
}
|
|
268
|
+
await tryCatch(action, onIgnoredError);
|
|
266
269
|
}
|
|
267
270
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
268
271
|
}
|
|
@@ -282,21 +285,23 @@ const createCustomPersister = (
|
|
|
282
285
|
setStatus(1 /* Loading */);
|
|
283
286
|
loads++;
|
|
284
287
|
await schedule(async () => {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
288
|
+
await tryCatch(
|
|
289
|
+
async () => {
|
|
290
|
+
const content = await getPersisted();
|
|
291
|
+
if (isArray(content)) {
|
|
292
|
+
setContentOrChanges(content);
|
|
293
|
+
} else if (initialContent) {
|
|
294
|
+
setDefaultContent(initialContent);
|
|
295
|
+
} else {
|
|
296
|
+
errorNew(`Content is not an array: ${content}`);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
() => {
|
|
300
|
+
if (initialContent) {
|
|
301
|
+
setDefaultContent(initialContent);
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
);
|
|
300
305
|
setStatus(0 /* Idle */);
|
|
301
306
|
});
|
|
302
307
|
}
|
|
@@ -305,29 +310,33 @@ const createCustomPersister = (
|
|
|
305
310
|
const startAutoLoad = async (initialContent) => {
|
|
306
311
|
stopAutoLoad();
|
|
307
312
|
await load(initialContent);
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
313
|
+
await tryCatch(
|
|
314
|
+
async () =>
|
|
315
|
+
(autoLoadHandle = await addPersisterListener(
|
|
316
|
+
async (content, changes) => {
|
|
317
|
+
if (changes || content) {
|
|
318
|
+
/* istanbul ignore else */
|
|
319
|
+
if (status != 2 /* Saving */) {
|
|
320
|
+
setStatus(1 /* Loading */);
|
|
321
|
+
loads++;
|
|
322
|
+
setContentOrChanges(changes ?? content);
|
|
323
|
+
setStatus(0 /* Idle */);
|
|
324
|
+
}
|
|
325
|
+
} else {
|
|
326
|
+
await load();
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
)),
|
|
330
|
+
onIgnoredError,
|
|
331
|
+
);
|
|
326
332
|
return persister;
|
|
327
333
|
};
|
|
328
|
-
const stopAutoLoad = () => {
|
|
334
|
+
const stopAutoLoad = async () => {
|
|
329
335
|
if (autoLoadHandle) {
|
|
330
|
-
|
|
336
|
+
await tryCatch(
|
|
337
|
+
() => delPersisterListener(autoLoadHandle),
|
|
338
|
+
onIgnoredError,
|
|
339
|
+
);
|
|
331
340
|
autoLoadHandle = void 0;
|
|
332
341
|
}
|
|
333
342
|
return persister;
|
|
@@ -339,12 +348,7 @@ const createCustomPersister = (
|
|
|
339
348
|
setStatus(2 /* Saving */);
|
|
340
349
|
saves++;
|
|
341
350
|
await schedule(async () => {
|
|
342
|
-
|
|
343
|
-
await setPersisted(getContent, changes);
|
|
344
|
-
} catch (error) {
|
|
345
|
-
/* istanbul ignore next */
|
|
346
|
-
onIgnoredError?.(error);
|
|
347
|
-
}
|
|
351
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
348
352
|
setStatus(0 /* Idle */);
|
|
349
353
|
});
|
|
350
354
|
}
|
|
@@ -361,7 +365,7 @@ const createCustomPersister = (
|
|
|
361
365
|
});
|
|
362
366
|
return persister;
|
|
363
367
|
};
|
|
364
|
-
const stopAutoSave = () => {
|
|
368
|
+
const stopAutoSave = async () => {
|
|
365
369
|
if (autoSaveListenerId) {
|
|
366
370
|
store.delListener(autoSaveListenerId);
|
|
367
371
|
autoSaveListenerId = void 0;
|
|
@@ -382,9 +386,10 @@ const createCustomPersister = (
|
|
|
382
386
|
return persister;
|
|
383
387
|
};
|
|
384
388
|
const getStore = () => store;
|
|
385
|
-
const destroy = () => {
|
|
389
|
+
const destroy = async () => {
|
|
386
390
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
387
|
-
|
|
391
|
+
await persister.stopAutoLoad();
|
|
392
|
+
return await persister.stopAutoSave();
|
|
388
393
|
};
|
|
389
394
|
const getStats = () => ({loads, saves});
|
|
390
395
|
const persister = {
|
|
@@ -12,6 +12,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
12
12
|
const errorNew = (message) => {
|
|
13
13
|
throw new Error(message);
|
|
14
14
|
};
|
|
15
|
+
const tryCatch = async (action, then1, then2) => {
|
|
16
|
+
try {
|
|
17
|
+
return await action();
|
|
18
|
+
} catch (error) {
|
|
19
|
+
/* istanbul ignore next */
|
|
20
|
+
then1?.(error);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
15
23
|
|
|
16
24
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
17
25
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -247,12 +255,7 @@ const createCustomPersister = (
|
|
|
247
255
|
while (
|
|
248
256
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
249
257
|
) {
|
|
250
|
-
|
|
251
|
-
await action();
|
|
252
|
-
} catch (error) {
|
|
253
|
-
/* istanbul ignore next */
|
|
254
|
-
onIgnoredError?.(error);
|
|
255
|
-
}
|
|
258
|
+
await tryCatch(action, onIgnoredError);
|
|
256
259
|
}
|
|
257
260
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
258
261
|
}
|
|
@@ -272,21 +275,23 @@ const createCustomPersister = (
|
|
|
272
275
|
setStatus(1 /* Loading */);
|
|
273
276
|
loads++;
|
|
274
277
|
await schedule(async () => {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
278
|
+
await tryCatch(
|
|
279
|
+
async () => {
|
|
280
|
+
const content = await getPersisted();
|
|
281
|
+
if (isArray(content)) {
|
|
282
|
+
setContentOrChanges(content);
|
|
283
|
+
} else if (initialContent) {
|
|
284
|
+
setDefaultContent(initialContent);
|
|
285
|
+
} else {
|
|
286
|
+
errorNew(`Content is not an array: ${content}`);
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
() => {
|
|
290
|
+
if (initialContent) {
|
|
291
|
+
setDefaultContent(initialContent);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
);
|
|
290
295
|
setStatus(0 /* Idle */);
|
|
291
296
|
});
|
|
292
297
|
}
|
|
@@ -295,29 +300,33 @@ const createCustomPersister = (
|
|
|
295
300
|
const startAutoLoad = async (initialContent) => {
|
|
296
301
|
stopAutoLoad();
|
|
297
302
|
await load(initialContent);
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
303
|
+
await tryCatch(
|
|
304
|
+
async () =>
|
|
305
|
+
(autoLoadHandle = await addPersisterListener(
|
|
306
|
+
async (content, changes) => {
|
|
307
|
+
if (changes || content) {
|
|
308
|
+
/* istanbul ignore else */
|
|
309
|
+
if (status != 2 /* Saving */) {
|
|
310
|
+
setStatus(1 /* Loading */);
|
|
311
|
+
loads++;
|
|
312
|
+
setContentOrChanges(changes ?? content);
|
|
313
|
+
setStatus(0 /* Idle */);
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
await load();
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
)),
|
|
320
|
+
onIgnoredError,
|
|
321
|
+
);
|
|
316
322
|
return persister;
|
|
317
323
|
};
|
|
318
|
-
const stopAutoLoad = () => {
|
|
324
|
+
const stopAutoLoad = async () => {
|
|
319
325
|
if (autoLoadHandle) {
|
|
320
|
-
|
|
326
|
+
await tryCatch(
|
|
327
|
+
() => delPersisterListener(autoLoadHandle),
|
|
328
|
+
onIgnoredError,
|
|
329
|
+
);
|
|
321
330
|
autoLoadHandle = void 0;
|
|
322
331
|
}
|
|
323
332
|
return persister;
|
|
@@ -329,12 +338,7 @@ const createCustomPersister = (
|
|
|
329
338
|
setStatus(2 /* Saving */);
|
|
330
339
|
saves++;
|
|
331
340
|
await schedule(async () => {
|
|
332
|
-
|
|
333
|
-
await setPersisted(getContent, changes);
|
|
334
|
-
} catch (error) {
|
|
335
|
-
/* istanbul ignore next */
|
|
336
|
-
onIgnoredError?.(error);
|
|
337
|
-
}
|
|
341
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
338
342
|
setStatus(0 /* Idle */);
|
|
339
343
|
});
|
|
340
344
|
}
|
|
@@ -351,7 +355,7 @@ const createCustomPersister = (
|
|
|
351
355
|
});
|
|
352
356
|
return persister;
|
|
353
357
|
};
|
|
354
|
-
const stopAutoSave = () => {
|
|
358
|
+
const stopAutoSave = async () => {
|
|
355
359
|
if (autoSaveListenerId) {
|
|
356
360
|
store.delListener(autoSaveListenerId);
|
|
357
361
|
autoSaveListenerId = void 0;
|
|
@@ -372,9 +376,10 @@ const createCustomPersister = (
|
|
|
372
376
|
return persister;
|
|
373
377
|
};
|
|
374
378
|
const getStore = () => store;
|
|
375
|
-
const destroy = () => {
|
|
379
|
+
const destroy = async () => {
|
|
376
380
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
377
|
-
|
|
381
|
+
await persister.stopAutoLoad();
|
|
382
|
+
return await persister.stopAutoSave();
|
|
378
383
|
};
|
|
379
384
|
const getStats = () => ({loads, saves});
|
|
380
385
|
const persister = {
|
|
@@ -412,11 +417,7 @@ const createStoragePersister = (
|
|
|
412
417
|
const addPersisterListener = (listener) => {
|
|
413
418
|
const storageListener = (event) => {
|
|
414
419
|
if (event.storageArea === storage && event.key === storageName) {
|
|
415
|
-
|
|
416
|
-
listener(jsonParse(event.newValue));
|
|
417
|
-
} catch {
|
|
418
|
-
listener();
|
|
419
|
-
}
|
|
420
|
+
tryCatch(() => listener(jsonParse(event.newValue)), listener);
|
|
420
421
|
}
|
|
421
422
|
};
|
|
422
423
|
WINDOW.addEventListener(STORAGE, storageListener);
|
|
@@ -12,6 +12,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
12
12
|
const errorNew = (message) => {
|
|
13
13
|
throw new Error(message);
|
|
14
14
|
};
|
|
15
|
+
const tryCatch = async (action, then1, then2) => {
|
|
16
|
+
try {
|
|
17
|
+
return await action();
|
|
18
|
+
} catch (error) {
|
|
19
|
+
/* istanbul ignore next */
|
|
20
|
+
then1?.(error);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
15
23
|
|
|
16
24
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
17
25
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -247,12 +255,7 @@ const createCustomPersister = (
|
|
|
247
255
|
while (
|
|
248
256
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
249
257
|
) {
|
|
250
|
-
|
|
251
|
-
await action();
|
|
252
|
-
} catch (error) {
|
|
253
|
-
/* istanbul ignore next */
|
|
254
|
-
onIgnoredError?.(error);
|
|
255
|
-
}
|
|
258
|
+
await tryCatch(action, onIgnoredError);
|
|
256
259
|
}
|
|
257
260
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
258
261
|
}
|
|
@@ -272,21 +275,23 @@ const createCustomPersister = (
|
|
|
272
275
|
setStatus(1 /* Loading */);
|
|
273
276
|
loads++;
|
|
274
277
|
await schedule(async () => {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
278
|
+
await tryCatch(
|
|
279
|
+
async () => {
|
|
280
|
+
const content = await getPersisted();
|
|
281
|
+
if (isArray(content)) {
|
|
282
|
+
setContentOrChanges(content);
|
|
283
|
+
} else if (initialContent) {
|
|
284
|
+
setDefaultContent(initialContent);
|
|
285
|
+
} else {
|
|
286
|
+
errorNew(`Content is not an array: ${content}`);
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
() => {
|
|
290
|
+
if (initialContent) {
|
|
291
|
+
setDefaultContent(initialContent);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
);
|
|
290
295
|
setStatus(0 /* Idle */);
|
|
291
296
|
});
|
|
292
297
|
}
|
|
@@ -295,29 +300,33 @@ const createCustomPersister = (
|
|
|
295
300
|
const startAutoLoad = async (initialContent) => {
|
|
296
301
|
stopAutoLoad();
|
|
297
302
|
await load(initialContent);
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
303
|
+
await tryCatch(
|
|
304
|
+
async () =>
|
|
305
|
+
(autoLoadHandle = await addPersisterListener(
|
|
306
|
+
async (content, changes) => {
|
|
307
|
+
if (changes || content) {
|
|
308
|
+
/* istanbul ignore else */
|
|
309
|
+
if (status != 2 /* Saving */) {
|
|
310
|
+
setStatus(1 /* Loading */);
|
|
311
|
+
loads++;
|
|
312
|
+
setContentOrChanges(changes ?? content);
|
|
313
|
+
setStatus(0 /* Idle */);
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
await load();
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
)),
|
|
320
|
+
onIgnoredError,
|
|
321
|
+
);
|
|
316
322
|
return persister;
|
|
317
323
|
};
|
|
318
|
-
const stopAutoLoad = () => {
|
|
324
|
+
const stopAutoLoad = async () => {
|
|
319
325
|
if (autoLoadHandle) {
|
|
320
|
-
|
|
326
|
+
await tryCatch(
|
|
327
|
+
() => delPersisterListener(autoLoadHandle),
|
|
328
|
+
onIgnoredError,
|
|
329
|
+
);
|
|
321
330
|
autoLoadHandle = void 0;
|
|
322
331
|
}
|
|
323
332
|
return persister;
|
|
@@ -329,12 +338,7 @@ const createCustomPersister = (
|
|
|
329
338
|
setStatus(2 /* Saving */);
|
|
330
339
|
saves++;
|
|
331
340
|
await schedule(async () => {
|
|
332
|
-
|
|
333
|
-
await setPersisted(getContent, changes);
|
|
334
|
-
} catch (error) {
|
|
335
|
-
/* istanbul ignore next */
|
|
336
|
-
onIgnoredError?.(error);
|
|
337
|
-
}
|
|
341
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
338
342
|
setStatus(0 /* Idle */);
|
|
339
343
|
});
|
|
340
344
|
}
|
|
@@ -351,7 +355,7 @@ const createCustomPersister = (
|
|
|
351
355
|
});
|
|
352
356
|
return persister;
|
|
353
357
|
};
|
|
354
|
-
const stopAutoSave = () => {
|
|
358
|
+
const stopAutoSave = async () => {
|
|
355
359
|
if (autoSaveListenerId) {
|
|
356
360
|
store.delListener(autoSaveListenerId);
|
|
357
361
|
autoSaveListenerId = void 0;
|
|
@@ -372,9 +376,10 @@ const createCustomPersister = (
|
|
|
372
376
|
return persister;
|
|
373
377
|
};
|
|
374
378
|
const getStore = () => store;
|
|
375
|
-
const destroy = () => {
|
|
379
|
+
const destroy = async () => {
|
|
376
380
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
377
|
-
|
|
381
|
+
await persister.stopAutoLoad();
|
|
382
|
+
return await persister.stopAutoSave();
|
|
378
383
|
};
|
|
379
384
|
const getStats = () => ({loads, saves});
|
|
380
385
|
const persister = {
|
|
@@ -412,11 +417,7 @@ const createStoragePersister = (
|
|
|
412
417
|
const addPersisterListener = (listener) => {
|
|
413
418
|
const storageListener = (event) => {
|
|
414
419
|
if (event.storageArea === storage && event.key === storageName) {
|
|
415
|
-
|
|
416
|
-
listener(jsonParse(event.newValue));
|
|
417
|
-
} catch {
|
|
418
|
-
listener();
|
|
419
|
-
}
|
|
420
|
+
tryCatch(() => listener(jsonParse(event.newValue)), listener);
|
|
420
421
|
}
|
|
421
422
|
};
|
|
422
423
|
WINDOW.addEventListener(STORAGE, storageListener);
|