tinybase 6.1.0-beta.4 → 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 +82 -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 +3 -3
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -3
- 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 +86 -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 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- 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 +8 -4
- 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 +182 -135
- package/persisters/persister-sqlite-bun/with-schemas/index.js +182 -135
- 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
|
@@ -11,9 +11,18 @@ const isArray = (thing) => Array.isArray(thing);
|
|
|
11
11
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
12
12
|
const size = (arrayOrString) => arrayOrString.length;
|
|
13
13
|
const test = (regex, subject) => regex.test(subject);
|
|
14
|
+
const noop = () => {};
|
|
14
15
|
const errorNew = (message) => {
|
|
15
16
|
throw new Error(message);
|
|
16
17
|
};
|
|
18
|
+
const tryCatch = async (action, then1, then2) => {
|
|
19
|
+
try {
|
|
20
|
+
return await action();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
/* istanbul ignore next */
|
|
23
|
+
then1?.(error);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
17
26
|
|
|
18
27
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
19
28
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -276,12 +285,7 @@ const createCustomPersister = (
|
|
|
276
285
|
while (
|
|
277
286
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
278
287
|
) {
|
|
279
|
-
|
|
280
|
-
await action();
|
|
281
|
-
} catch (error) {
|
|
282
|
-
/* istanbul ignore next */
|
|
283
|
-
onIgnoredError?.(error);
|
|
284
|
-
}
|
|
288
|
+
await tryCatch(action, onIgnoredError);
|
|
285
289
|
}
|
|
286
290
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
287
291
|
}
|
|
@@ -301,21 +305,23 @@ const createCustomPersister = (
|
|
|
301
305
|
setStatus(1 /* Loading */);
|
|
302
306
|
loads++;
|
|
303
307
|
await schedule(async () => {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
308
|
+
await tryCatch(
|
|
309
|
+
async () => {
|
|
310
|
+
const content = await getPersisted();
|
|
311
|
+
if (isArray(content)) {
|
|
312
|
+
setContentOrChanges(content);
|
|
313
|
+
} else if (initialContent) {
|
|
314
|
+
setDefaultContent(initialContent);
|
|
315
|
+
} else {
|
|
316
|
+
errorNew(`Content is not an array: ${content}`);
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
() => {
|
|
320
|
+
if (initialContent) {
|
|
321
|
+
setDefaultContent(initialContent);
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
);
|
|
319
325
|
setStatus(0 /* Idle */);
|
|
320
326
|
});
|
|
321
327
|
}
|
|
@@ -324,28 +330,33 @@ const createCustomPersister = (
|
|
|
324
330
|
const startAutoLoad = async (initialContent) => {
|
|
325
331
|
stopAutoLoad();
|
|
326
332
|
await load(initialContent);
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
333
|
+
await tryCatch(
|
|
334
|
+
async () =>
|
|
335
|
+
(autoLoadHandle = await addPersisterListener(
|
|
336
|
+
async (content, changes) => {
|
|
337
|
+
if (changes || content) {
|
|
338
|
+
/* istanbul ignore else */
|
|
339
|
+
if (status != 2 /* Saving */) {
|
|
340
|
+
setStatus(1 /* Loading */);
|
|
341
|
+
loads++;
|
|
342
|
+
setContentOrChanges(changes ?? content);
|
|
343
|
+
setStatus(0 /* Idle */);
|
|
344
|
+
}
|
|
345
|
+
} else {
|
|
346
|
+
await load();
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
)),
|
|
350
|
+
onIgnoredError,
|
|
351
|
+
);
|
|
345
352
|
return persister;
|
|
346
353
|
};
|
|
347
|
-
const stopAutoLoad = () => {
|
|
354
|
+
const stopAutoLoad = async () => {
|
|
348
355
|
if (autoLoadHandle) {
|
|
356
|
+
await tryCatch(
|
|
357
|
+
() => delPersisterListener(autoLoadHandle),
|
|
358
|
+
onIgnoredError,
|
|
359
|
+
);
|
|
349
360
|
autoLoadHandle = void 0;
|
|
350
361
|
}
|
|
351
362
|
return persister;
|
|
@@ -357,12 +368,7 @@ const createCustomPersister = (
|
|
|
357
368
|
setStatus(2 /* Saving */);
|
|
358
369
|
saves++;
|
|
359
370
|
await schedule(async () => {
|
|
360
|
-
|
|
361
|
-
await setPersisted(getContent, changes);
|
|
362
|
-
} catch (error) {
|
|
363
|
-
/* istanbul ignore next */
|
|
364
|
-
onIgnoredError?.(error);
|
|
365
|
-
}
|
|
371
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
366
372
|
setStatus(0 /* Idle */);
|
|
367
373
|
});
|
|
368
374
|
}
|
|
@@ -379,7 +385,7 @@ const createCustomPersister = (
|
|
|
379
385
|
});
|
|
380
386
|
return persister;
|
|
381
387
|
};
|
|
382
|
-
const stopAutoSave = () => {
|
|
388
|
+
const stopAutoSave = async () => {
|
|
383
389
|
if (autoSaveListenerId) {
|
|
384
390
|
store.delListener(autoSaveListenerId);
|
|
385
391
|
autoSaveListenerId = void 0;
|
|
@@ -400,9 +406,10 @@ const createCustomPersister = (
|
|
|
400
406
|
return persister;
|
|
401
407
|
};
|
|
402
408
|
const getStore = () => store;
|
|
403
|
-
const destroy = () => {
|
|
409
|
+
const destroy = async () => {
|
|
404
410
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
405
|
-
|
|
411
|
+
await persister.stopAutoLoad();
|
|
412
|
+
return await persister.stopAutoSave();
|
|
406
413
|
};
|
|
407
414
|
const getStats = () => ({loads, saves});
|
|
408
415
|
const persister = {
|
|
@@ -521,14 +528,12 @@ const createDurableObjectStoragePersister = (
|
|
|
521
528
|
);
|
|
522
529
|
await storage.put(mapToObj(keysToSet));
|
|
523
530
|
};
|
|
524
|
-
const addPersisterListener = () => {};
|
|
525
|
-
const delPersisterListener = () => {};
|
|
526
531
|
return createCustomPersister(
|
|
527
532
|
store,
|
|
528
533
|
getPersisted,
|
|
529
534
|
setPersisted,
|
|
530
|
-
|
|
531
|
-
|
|
535
|
+
noop,
|
|
536
|
+
noop,
|
|
532
537
|
onIgnoredError,
|
|
533
538
|
2,
|
|
534
539
|
// MergeableStoreOnly,
|
|
@@ -11,9 +11,18 @@ const isArray = (thing) => Array.isArray(thing);
|
|
|
11
11
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
12
12
|
const size = (arrayOrString) => arrayOrString.length;
|
|
13
13
|
const test = (regex, subject) => regex.test(subject);
|
|
14
|
+
const noop = () => {};
|
|
14
15
|
const errorNew = (message) => {
|
|
15
16
|
throw new Error(message);
|
|
16
17
|
};
|
|
18
|
+
const tryCatch = async (action, then1, then2) => {
|
|
19
|
+
try {
|
|
20
|
+
return await action();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
/* istanbul ignore next */
|
|
23
|
+
then1?.(error);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
17
26
|
|
|
18
27
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
19
28
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -276,12 +285,7 @@ const createCustomPersister = (
|
|
|
276
285
|
while (
|
|
277
286
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
278
287
|
) {
|
|
279
|
-
|
|
280
|
-
await action();
|
|
281
|
-
} catch (error) {
|
|
282
|
-
/* istanbul ignore next */
|
|
283
|
-
onIgnoredError?.(error);
|
|
284
|
-
}
|
|
288
|
+
await tryCatch(action, onIgnoredError);
|
|
285
289
|
}
|
|
286
290
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
287
291
|
}
|
|
@@ -301,21 +305,23 @@ const createCustomPersister = (
|
|
|
301
305
|
setStatus(1 /* Loading */);
|
|
302
306
|
loads++;
|
|
303
307
|
await schedule(async () => {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
308
|
+
await tryCatch(
|
|
309
|
+
async () => {
|
|
310
|
+
const content = await getPersisted();
|
|
311
|
+
if (isArray(content)) {
|
|
312
|
+
setContentOrChanges(content);
|
|
313
|
+
} else if (initialContent) {
|
|
314
|
+
setDefaultContent(initialContent);
|
|
315
|
+
} else {
|
|
316
|
+
errorNew(`Content is not an array: ${content}`);
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
() => {
|
|
320
|
+
if (initialContent) {
|
|
321
|
+
setDefaultContent(initialContent);
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
);
|
|
319
325
|
setStatus(0 /* Idle */);
|
|
320
326
|
});
|
|
321
327
|
}
|
|
@@ -324,28 +330,33 @@ const createCustomPersister = (
|
|
|
324
330
|
const startAutoLoad = async (initialContent) => {
|
|
325
331
|
stopAutoLoad();
|
|
326
332
|
await load(initialContent);
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
333
|
+
await tryCatch(
|
|
334
|
+
async () =>
|
|
335
|
+
(autoLoadHandle = await addPersisterListener(
|
|
336
|
+
async (content, changes) => {
|
|
337
|
+
if (changes || content) {
|
|
338
|
+
/* istanbul ignore else */
|
|
339
|
+
if (status != 2 /* Saving */) {
|
|
340
|
+
setStatus(1 /* Loading */);
|
|
341
|
+
loads++;
|
|
342
|
+
setContentOrChanges(changes ?? content);
|
|
343
|
+
setStatus(0 /* Idle */);
|
|
344
|
+
}
|
|
345
|
+
} else {
|
|
346
|
+
await load();
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
)),
|
|
350
|
+
onIgnoredError,
|
|
351
|
+
);
|
|
345
352
|
return persister;
|
|
346
353
|
};
|
|
347
|
-
const stopAutoLoad = () => {
|
|
354
|
+
const stopAutoLoad = async () => {
|
|
348
355
|
if (autoLoadHandle) {
|
|
356
|
+
await tryCatch(
|
|
357
|
+
() => delPersisterListener(autoLoadHandle),
|
|
358
|
+
onIgnoredError,
|
|
359
|
+
);
|
|
349
360
|
autoLoadHandle = void 0;
|
|
350
361
|
}
|
|
351
362
|
return persister;
|
|
@@ -357,12 +368,7 @@ const createCustomPersister = (
|
|
|
357
368
|
setStatus(2 /* Saving */);
|
|
358
369
|
saves++;
|
|
359
370
|
await schedule(async () => {
|
|
360
|
-
|
|
361
|
-
await setPersisted(getContent, changes);
|
|
362
|
-
} catch (error) {
|
|
363
|
-
/* istanbul ignore next */
|
|
364
|
-
onIgnoredError?.(error);
|
|
365
|
-
}
|
|
371
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
366
372
|
setStatus(0 /* Idle */);
|
|
367
373
|
});
|
|
368
374
|
}
|
|
@@ -379,7 +385,7 @@ const createCustomPersister = (
|
|
|
379
385
|
});
|
|
380
386
|
return persister;
|
|
381
387
|
};
|
|
382
|
-
const stopAutoSave = () => {
|
|
388
|
+
const stopAutoSave = async () => {
|
|
383
389
|
if (autoSaveListenerId) {
|
|
384
390
|
store.delListener(autoSaveListenerId);
|
|
385
391
|
autoSaveListenerId = void 0;
|
|
@@ -400,9 +406,10 @@ const createCustomPersister = (
|
|
|
400
406
|
return persister;
|
|
401
407
|
};
|
|
402
408
|
const getStore = () => store;
|
|
403
|
-
const destroy = () => {
|
|
409
|
+
const destroy = async () => {
|
|
404
410
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
405
|
-
|
|
411
|
+
await persister.stopAutoLoad();
|
|
412
|
+
return await persister.stopAutoSave();
|
|
406
413
|
};
|
|
407
414
|
const getStats = () => ({loads, saves});
|
|
408
415
|
const persister = {
|
|
@@ -521,14 +528,12 @@ const createDurableObjectStoragePersister = (
|
|
|
521
528
|
);
|
|
522
529
|
await storage.put(mapToObj(keysToSet));
|
|
523
530
|
};
|
|
524
|
-
const addPersisterListener = () => {};
|
|
525
|
-
const delPersisterListener = () => {};
|
|
526
531
|
return createCustomPersister(
|
|
527
532
|
store,
|
|
528
533
|
getPersisted,
|
|
529
534
|
setPersisted,
|
|
530
|
-
|
|
531
|
-
|
|
535
|
+
noop,
|
|
536
|
+
noop,
|
|
532
537
|
onIgnoredError,
|
|
533
538
|
2,
|
|
534
539
|
// MergeableStoreOnly,
|