tinybase 6.1.0-beta.5 → 6.1.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/@types/persisters/index.d.ts +82 -0
- package/@types/persisters/with-schemas/index.d.ts +91 -0
- package/@types/store/index.d.ts +123 -1
- package/@types/store/with-schemas/index.d.ts +159 -24
- package/@types/ui-react/index.d.ts +120 -0
- package/@types/ui-react/with-schemas/index.d.ts +179 -37
- package/index.js +73 -53
- package/mergeable-store/index.js +73 -53
- package/mergeable-store/with-schemas/index.js +73 -53
- 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/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react/index.js +1 -1
- package/min/ui-react/index.js.gz +0 -0
- package/min/ui-react/with-schemas/index.js +1 -1
- package/min/ui-react/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 +6 -6
- package/persisters/index.js +33 -8
- package/persisters/persister-automerge/index.js +23 -3
- package/persisters/persister-automerge/with-schemas/index.js +23 -3
- package/persisters/persister-browser/index.js +23 -3
- package/persisters/persister-browser/with-schemas/index.js +23 -3
- package/persisters/persister-cr-sqlite-wasm/index.js +33 -8
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-durable-object-storage/index.js +23 -3
- package/persisters/persister-durable-object-storage/with-schemas/index.js +23 -3
- package/persisters/persister-electric-sql/index.js +33 -8
- package/persisters/persister-electric-sql/with-schemas/index.js +33 -8
- package/persisters/persister-expo-sqlite/index.js +33 -8
- package/persisters/persister-expo-sqlite/with-schemas/index.js +33 -8
- package/persisters/persister-file/index.js +23 -3
- package/persisters/persister-file/with-schemas/index.js +23 -3
- package/persisters/persister-indexed-db/index.js +23 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +23 -3
- package/persisters/persister-libsql/index.js +33 -8
- package/persisters/persister-libsql/with-schemas/index.js +33 -8
- package/persisters/persister-partykit-client/index.js +23 -3
- package/persisters/persister-partykit-client/with-schemas/index.js +23 -3
- package/persisters/persister-pglite/index.js +33 -8
- package/persisters/persister-pglite/with-schemas/index.js +33 -8
- package/persisters/persister-postgres/index.js +33 -8
- package/persisters/persister-postgres/with-schemas/index.js +33 -8
- package/persisters/persister-powersync/index.js +33 -8
- package/persisters/persister-powersync/with-schemas/index.js +33 -8
- package/persisters/persister-remote/index.js +23 -3
- package/persisters/persister-remote/with-schemas/index.js +23 -3
- package/persisters/persister-sqlite-bun/index.js +33 -8
- package/persisters/persister-sqlite-bun/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite-wasm/index.js +33 -8
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite3/index.js +33 -8
- package/persisters/persister-sqlite3/with-schemas/index.js +33 -8
- package/persisters/persister-yjs/index.js +23 -3
- package/persisters/persister-yjs/with-schemas/index.js +23 -3
- package/persisters/with-schemas/index.js +33 -8
- package/readme.md +6 -6
- package/releases.md +23 -11
- package/store/index.js +73 -53
- package/store/with-schemas/index.js +73 -53
- package/synchronizers/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-local/index.js +27 -9
- package/synchronizers/synchronizer-local/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +27 -9
- package/synchronizers/with-schemas/index.js +27 -9
- package/ui-react/index.js +84 -20
- package/ui-react/with-schemas/index.js +84 -20
- package/ui-react-dom/index.js +1 -1
- package/ui-react-dom/with-schemas/index.js +1 -1
- package/ui-react-inspector/index.js +97 -57
- package/ui-react-inspector/with-schemas/index.js +97 -57
- package/with-schemas/index.js +73 -53
|
@@ -367,6 +367,25 @@ const createCustomPersister = (
|
|
|
367
367
|
return persister;
|
|
368
368
|
};
|
|
369
369
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
370
|
+
const startAutoPersisting = async (
|
|
371
|
+
initialContent,
|
|
372
|
+
startSaveFirst = false,
|
|
373
|
+
) => {
|
|
374
|
+
const [call1, call2] = startSaveFirst
|
|
375
|
+
? [startAutoSave, startAutoLoad]
|
|
376
|
+
: [startAutoLoad, startAutoSave];
|
|
377
|
+
await call1(initialContent);
|
|
378
|
+
await call2(initialContent);
|
|
379
|
+
return persister;
|
|
380
|
+
};
|
|
381
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
382
|
+
const [call1, call2] = stopSaveFirst
|
|
383
|
+
? [stopAutoSave, stopAutoLoad]
|
|
384
|
+
: [stopAutoLoad, stopAutoSave];
|
|
385
|
+
await call1();
|
|
386
|
+
await call2();
|
|
387
|
+
return persister;
|
|
388
|
+
};
|
|
370
389
|
const getStatus = () => status;
|
|
371
390
|
const addStatusListener = (listener) =>
|
|
372
391
|
addListener(listener, statusListeners);
|
|
@@ -380,10 +399,9 @@ const createCustomPersister = (
|
|
|
380
399
|
return persister;
|
|
381
400
|
};
|
|
382
401
|
const getStore = () => store;
|
|
383
|
-
const destroy =
|
|
402
|
+
const destroy = () => {
|
|
384
403
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
385
|
-
|
|
386
|
-
return await persister.stopAutoSave();
|
|
404
|
+
return stopAutoPersisting();
|
|
387
405
|
};
|
|
388
406
|
const getStats = () => ({loads, saves});
|
|
389
407
|
const persister = {
|
|
@@ -395,6 +413,8 @@ const createCustomPersister = (
|
|
|
395
413
|
startAutoSave,
|
|
396
414
|
stopAutoSave,
|
|
397
415
|
isAutoSaving,
|
|
416
|
+
startAutoPersisting,
|
|
417
|
+
stopAutoPersisting,
|
|
398
418
|
getStatus,
|
|
399
419
|
addStatusListener,
|
|
400
420
|
delListener,
|
|
@@ -2,10 +2,13 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
8
9
|
const strMatch = (str, regex) => str?.match(regex);
|
|
10
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
11
|
+
str.split(separator, limit);
|
|
9
12
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
10
13
|
str.replace(searchValue, replaceValue);
|
|
11
14
|
|
|
@@ -161,7 +164,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
161
164
|
return await executeCommand(sql, params);
|
|
162
165
|
}
|
|
163
166
|
: executeCommand;
|
|
164
|
-
const escapeId = (str) =>
|
|
167
|
+
const escapeId = (str) =>
|
|
168
|
+
arrayJoin(
|
|
169
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
170
|
+
DOT,
|
|
171
|
+
);
|
|
165
172
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
166
173
|
const escapeColumnNames = (...columnNames) =>
|
|
167
174
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
@@ -564,6 +571,25 @@ const createCustomPersister = (
|
|
|
564
571
|
return persister;
|
|
565
572
|
};
|
|
566
573
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
574
|
+
const startAutoPersisting = async (
|
|
575
|
+
initialContent,
|
|
576
|
+
startSaveFirst = false,
|
|
577
|
+
) => {
|
|
578
|
+
const [call1, call2] = startSaveFirst
|
|
579
|
+
? [startAutoSave, startAutoLoad]
|
|
580
|
+
: [startAutoLoad, startAutoSave];
|
|
581
|
+
await call1(initialContent);
|
|
582
|
+
await call2(initialContent);
|
|
583
|
+
return persister;
|
|
584
|
+
};
|
|
585
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
586
|
+
const [call1, call2] = stopSaveFirst
|
|
587
|
+
? [stopAutoSave, stopAutoLoad]
|
|
588
|
+
: [stopAutoLoad, stopAutoSave];
|
|
589
|
+
await call1();
|
|
590
|
+
await call2();
|
|
591
|
+
return persister;
|
|
592
|
+
};
|
|
567
593
|
const getStatus = () => status;
|
|
568
594
|
const addStatusListener = (listener) =>
|
|
569
595
|
addListener(listener, statusListeners);
|
|
@@ -577,10 +603,9 @@ const createCustomPersister = (
|
|
|
577
603
|
return persister;
|
|
578
604
|
};
|
|
579
605
|
const getStore = () => store;
|
|
580
|
-
const destroy =
|
|
606
|
+
const destroy = () => {
|
|
581
607
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
582
|
-
|
|
583
|
-
return await persister.stopAutoSave();
|
|
608
|
+
return stopAutoPersisting();
|
|
584
609
|
};
|
|
585
610
|
const getStats = () => ({loads, saves});
|
|
586
611
|
const persister = {
|
|
@@ -592,6 +617,8 @@ const createCustomPersister = (
|
|
|
592
617
|
startAutoSave,
|
|
593
618
|
stopAutoSave,
|
|
594
619
|
isAutoSaving,
|
|
620
|
+
startAutoPersisting,
|
|
621
|
+
stopAutoPersisting,
|
|
595
622
|
getStatus,
|
|
596
623
|
addStatusListener,
|
|
597
624
|
delListener,
|
|
@@ -909,8 +936,7 @@ const createJsonPersister = (
|
|
|
909
936
|
);
|
|
910
937
|
});
|
|
911
938
|
const destroy = async () => {
|
|
912
|
-
await persister.
|
|
913
|
-
await persister.stopAutoSave();
|
|
939
|
+
await persister.stopAutoPersisting();
|
|
914
940
|
extraDestroy();
|
|
915
941
|
return persister;
|
|
916
942
|
};
|
|
@@ -1044,8 +1070,7 @@ const createTabularPersister = (
|
|
|
1044
1070
|
}
|
|
1045
1071
|
});
|
|
1046
1072
|
const destroy = async () => {
|
|
1047
|
-
await persister.
|
|
1048
|
-
await persister.stopAutoSave();
|
|
1073
|
+
await persister.stopAutoPersisting();
|
|
1049
1074
|
extraDestroy();
|
|
1050
1075
|
return persister;
|
|
1051
1076
|
};
|
|
@@ -2,10 +2,13 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
8
9
|
const strMatch = (str, regex) => str?.match(regex);
|
|
10
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
11
|
+
str.split(separator, limit);
|
|
9
12
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
10
13
|
str.replace(searchValue, replaceValue);
|
|
11
14
|
|
|
@@ -161,7 +164,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
161
164
|
return await executeCommand(sql, params);
|
|
162
165
|
}
|
|
163
166
|
: executeCommand;
|
|
164
|
-
const escapeId = (str) =>
|
|
167
|
+
const escapeId = (str) =>
|
|
168
|
+
arrayJoin(
|
|
169
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
170
|
+
DOT,
|
|
171
|
+
);
|
|
165
172
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
166
173
|
const escapeColumnNames = (...columnNames) =>
|
|
167
174
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
@@ -564,6 +571,25 @@ const createCustomPersister = (
|
|
|
564
571
|
return persister;
|
|
565
572
|
};
|
|
566
573
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
574
|
+
const startAutoPersisting = async (
|
|
575
|
+
initialContent,
|
|
576
|
+
startSaveFirst = false,
|
|
577
|
+
) => {
|
|
578
|
+
const [call1, call2] = startSaveFirst
|
|
579
|
+
? [startAutoSave, startAutoLoad]
|
|
580
|
+
: [startAutoLoad, startAutoSave];
|
|
581
|
+
await call1(initialContent);
|
|
582
|
+
await call2(initialContent);
|
|
583
|
+
return persister;
|
|
584
|
+
};
|
|
585
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
586
|
+
const [call1, call2] = stopSaveFirst
|
|
587
|
+
? [stopAutoSave, stopAutoLoad]
|
|
588
|
+
: [stopAutoLoad, stopAutoSave];
|
|
589
|
+
await call1();
|
|
590
|
+
await call2();
|
|
591
|
+
return persister;
|
|
592
|
+
};
|
|
567
593
|
const getStatus = () => status;
|
|
568
594
|
const addStatusListener = (listener) =>
|
|
569
595
|
addListener(listener, statusListeners);
|
|
@@ -577,10 +603,9 @@ const createCustomPersister = (
|
|
|
577
603
|
return persister;
|
|
578
604
|
};
|
|
579
605
|
const getStore = () => store;
|
|
580
|
-
const destroy =
|
|
606
|
+
const destroy = () => {
|
|
581
607
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
582
|
-
|
|
583
|
-
return await persister.stopAutoSave();
|
|
608
|
+
return stopAutoPersisting();
|
|
584
609
|
};
|
|
585
610
|
const getStats = () => ({loads, saves});
|
|
586
611
|
const persister = {
|
|
@@ -592,6 +617,8 @@ const createCustomPersister = (
|
|
|
592
617
|
startAutoSave,
|
|
593
618
|
stopAutoSave,
|
|
594
619
|
isAutoSaving,
|
|
620
|
+
startAutoPersisting,
|
|
621
|
+
stopAutoPersisting,
|
|
595
622
|
getStatus,
|
|
596
623
|
addStatusListener,
|
|
597
624
|
delListener,
|
|
@@ -909,8 +936,7 @@ const createJsonPersister = (
|
|
|
909
936
|
);
|
|
910
937
|
});
|
|
911
938
|
const destroy = async () => {
|
|
912
|
-
await persister.
|
|
913
|
-
await persister.stopAutoSave();
|
|
939
|
+
await persister.stopAutoPersisting();
|
|
914
940
|
extraDestroy();
|
|
915
941
|
return persister;
|
|
916
942
|
};
|
|
@@ -1044,8 +1070,7 @@ const createTabularPersister = (
|
|
|
1044
1070
|
}
|
|
1045
1071
|
});
|
|
1046
1072
|
const destroy = async () => {
|
|
1047
|
-
await persister.
|
|
1048
|
-
await persister.stopAutoSave();
|
|
1073
|
+
await persister.stopAutoPersisting();
|
|
1049
1074
|
extraDestroy();
|
|
1050
1075
|
return persister;
|
|
1051
1076
|
};
|
|
@@ -2,10 +2,13 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
8
9
|
const strMatch = (str, regex) => str?.match(regex);
|
|
10
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
11
|
+
str.split(separator, limit);
|
|
9
12
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
10
13
|
str.replace(searchValue, replaceValue);
|
|
11
14
|
|
|
@@ -160,7 +163,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
160
163
|
return await executeCommand(sql, params);
|
|
161
164
|
}
|
|
162
165
|
: executeCommand;
|
|
163
|
-
const escapeId = (str) =>
|
|
166
|
+
const escapeId = (str) =>
|
|
167
|
+
arrayJoin(
|
|
168
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
169
|
+
DOT,
|
|
170
|
+
);
|
|
164
171
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
165
172
|
const escapeColumnNames = (...columnNames) =>
|
|
166
173
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
@@ -563,6 +570,25 @@ const createCustomPersister = (
|
|
|
563
570
|
return persister;
|
|
564
571
|
};
|
|
565
572
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
573
|
+
const startAutoPersisting = async (
|
|
574
|
+
initialContent,
|
|
575
|
+
startSaveFirst = false,
|
|
576
|
+
) => {
|
|
577
|
+
const [call1, call2] = startSaveFirst
|
|
578
|
+
? [startAutoSave, startAutoLoad]
|
|
579
|
+
: [startAutoLoad, startAutoSave];
|
|
580
|
+
await call1(initialContent);
|
|
581
|
+
await call2(initialContent);
|
|
582
|
+
return persister;
|
|
583
|
+
};
|
|
584
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
585
|
+
const [call1, call2] = stopSaveFirst
|
|
586
|
+
? [stopAutoSave, stopAutoLoad]
|
|
587
|
+
: [stopAutoLoad, stopAutoSave];
|
|
588
|
+
await call1();
|
|
589
|
+
await call2();
|
|
590
|
+
return persister;
|
|
591
|
+
};
|
|
566
592
|
const getStatus = () => status;
|
|
567
593
|
const addStatusListener = (listener) =>
|
|
568
594
|
addListener(listener, statusListeners);
|
|
@@ -576,10 +602,9 @@ const createCustomPersister = (
|
|
|
576
602
|
return persister;
|
|
577
603
|
};
|
|
578
604
|
const getStore = () => store;
|
|
579
|
-
const destroy =
|
|
605
|
+
const destroy = () => {
|
|
580
606
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
581
|
-
|
|
582
|
-
return await persister.stopAutoSave();
|
|
607
|
+
return stopAutoPersisting();
|
|
583
608
|
};
|
|
584
609
|
const getStats = () => ({loads, saves});
|
|
585
610
|
const persister = {
|
|
@@ -591,6 +616,8 @@ const createCustomPersister = (
|
|
|
591
616
|
startAutoSave,
|
|
592
617
|
stopAutoSave,
|
|
593
618
|
isAutoSaving,
|
|
619
|
+
startAutoPersisting,
|
|
620
|
+
stopAutoPersisting,
|
|
594
621
|
getStatus,
|
|
595
622
|
addStatusListener,
|
|
596
623
|
delListener,
|
|
@@ -908,8 +935,7 @@ const createJsonPersister = (
|
|
|
908
935
|
);
|
|
909
936
|
});
|
|
910
937
|
const destroy = async () => {
|
|
911
|
-
await persister.
|
|
912
|
-
await persister.stopAutoSave();
|
|
938
|
+
await persister.stopAutoPersisting();
|
|
913
939
|
extraDestroy();
|
|
914
940
|
return persister;
|
|
915
941
|
};
|
|
@@ -1043,8 +1069,7 @@ const createTabularPersister = (
|
|
|
1043
1069
|
}
|
|
1044
1070
|
});
|
|
1045
1071
|
const destroy = async () => {
|
|
1046
|
-
await persister.
|
|
1047
|
-
await persister.stopAutoSave();
|
|
1072
|
+
await persister.stopAutoPersisting();
|
|
1048
1073
|
extraDestroy();
|
|
1049
1074
|
return persister;
|
|
1050
1075
|
};
|
|
@@ -2,10 +2,13 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
8
9
|
const strMatch = (str, regex) => str?.match(regex);
|
|
10
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
11
|
+
str.split(separator, limit);
|
|
9
12
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
10
13
|
str.replace(searchValue, replaceValue);
|
|
11
14
|
|
|
@@ -160,7 +163,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
160
163
|
return await executeCommand(sql, params);
|
|
161
164
|
}
|
|
162
165
|
: executeCommand;
|
|
163
|
-
const escapeId = (str) =>
|
|
166
|
+
const escapeId = (str) =>
|
|
167
|
+
arrayJoin(
|
|
168
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
169
|
+
DOT,
|
|
170
|
+
);
|
|
164
171
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
165
172
|
const escapeColumnNames = (...columnNames) =>
|
|
166
173
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
@@ -563,6 +570,25 @@ const createCustomPersister = (
|
|
|
563
570
|
return persister;
|
|
564
571
|
};
|
|
565
572
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
573
|
+
const startAutoPersisting = async (
|
|
574
|
+
initialContent,
|
|
575
|
+
startSaveFirst = false,
|
|
576
|
+
) => {
|
|
577
|
+
const [call1, call2] = startSaveFirst
|
|
578
|
+
? [startAutoSave, startAutoLoad]
|
|
579
|
+
: [startAutoLoad, startAutoSave];
|
|
580
|
+
await call1(initialContent);
|
|
581
|
+
await call2(initialContent);
|
|
582
|
+
return persister;
|
|
583
|
+
};
|
|
584
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
585
|
+
const [call1, call2] = stopSaveFirst
|
|
586
|
+
? [stopAutoSave, stopAutoLoad]
|
|
587
|
+
: [stopAutoLoad, stopAutoSave];
|
|
588
|
+
await call1();
|
|
589
|
+
await call2();
|
|
590
|
+
return persister;
|
|
591
|
+
};
|
|
566
592
|
const getStatus = () => status;
|
|
567
593
|
const addStatusListener = (listener) =>
|
|
568
594
|
addListener(listener, statusListeners);
|
|
@@ -576,10 +602,9 @@ const createCustomPersister = (
|
|
|
576
602
|
return persister;
|
|
577
603
|
};
|
|
578
604
|
const getStore = () => store;
|
|
579
|
-
const destroy =
|
|
605
|
+
const destroy = () => {
|
|
580
606
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
581
|
-
|
|
582
|
-
return await persister.stopAutoSave();
|
|
607
|
+
return stopAutoPersisting();
|
|
583
608
|
};
|
|
584
609
|
const getStats = () => ({loads, saves});
|
|
585
610
|
const persister = {
|
|
@@ -591,6 +616,8 @@ const createCustomPersister = (
|
|
|
591
616
|
startAutoSave,
|
|
592
617
|
stopAutoSave,
|
|
593
618
|
isAutoSaving,
|
|
619
|
+
startAutoPersisting,
|
|
620
|
+
stopAutoPersisting,
|
|
594
621
|
getStatus,
|
|
595
622
|
addStatusListener,
|
|
596
623
|
delListener,
|
|
@@ -908,8 +935,7 @@ const createJsonPersister = (
|
|
|
908
935
|
);
|
|
909
936
|
});
|
|
910
937
|
const destroy = async () => {
|
|
911
|
-
await persister.
|
|
912
|
-
await persister.stopAutoSave();
|
|
938
|
+
await persister.stopAutoPersisting();
|
|
913
939
|
extraDestroy();
|
|
914
940
|
return persister;
|
|
915
941
|
};
|
|
@@ -1043,8 +1069,7 @@ const createTabularPersister = (
|
|
|
1043
1069
|
}
|
|
1044
1070
|
});
|
|
1045
1071
|
const destroy = async () => {
|
|
1046
|
-
await persister.
|
|
1047
|
-
await persister.stopAutoSave();
|
|
1072
|
+
await persister.stopAutoPersisting();
|
|
1048
1073
|
extraDestroy();
|
|
1049
1074
|
return persister;
|
|
1050
1075
|
};
|
|
@@ -2,9 +2,12 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
9
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
10
|
+
str.split(separator, limit);
|
|
8
11
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
9
12
|
str.replace(searchValue, replaceValue);
|
|
10
13
|
|
|
@@ -119,7 +122,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
119
122
|
return await executeCommand(sql, params);
|
|
120
123
|
}
|
|
121
124
|
: executeCommand;
|
|
122
|
-
const escapeId = (str) =>
|
|
125
|
+
const escapeId = (str) =>
|
|
126
|
+
arrayJoin(
|
|
127
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
128
|
+
DOT,
|
|
129
|
+
);
|
|
123
130
|
const escapeColumnNames = (...columnNames) =>
|
|
124
131
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
125
132
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -558,6 +565,25 @@ const createCustomPersister = (
|
|
|
558
565
|
return persister;
|
|
559
566
|
};
|
|
560
567
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
568
|
+
const startAutoPersisting = async (
|
|
569
|
+
initialContent,
|
|
570
|
+
startSaveFirst = false,
|
|
571
|
+
) => {
|
|
572
|
+
const [call1, call2] = startSaveFirst
|
|
573
|
+
? [startAutoSave, startAutoLoad]
|
|
574
|
+
: [startAutoLoad, startAutoSave];
|
|
575
|
+
await call1(initialContent);
|
|
576
|
+
await call2(initialContent);
|
|
577
|
+
return persister;
|
|
578
|
+
};
|
|
579
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
580
|
+
const [call1, call2] = stopSaveFirst
|
|
581
|
+
? [stopAutoSave, stopAutoLoad]
|
|
582
|
+
: [stopAutoLoad, stopAutoSave];
|
|
583
|
+
await call1();
|
|
584
|
+
await call2();
|
|
585
|
+
return persister;
|
|
586
|
+
};
|
|
561
587
|
const getStatus = () => status;
|
|
562
588
|
const addStatusListener = (listener) =>
|
|
563
589
|
addListener(listener, statusListeners);
|
|
@@ -571,10 +597,9 @@ const createCustomPersister = (
|
|
|
571
597
|
return persister;
|
|
572
598
|
};
|
|
573
599
|
const getStore = () => store;
|
|
574
|
-
const destroy =
|
|
600
|
+
const destroy = () => {
|
|
575
601
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
576
|
-
|
|
577
|
-
return await persister.stopAutoSave();
|
|
602
|
+
return stopAutoPersisting();
|
|
578
603
|
};
|
|
579
604
|
const getStats = () => ({loads, saves});
|
|
580
605
|
const persister = {
|
|
@@ -586,6 +611,8 @@ const createCustomPersister = (
|
|
|
586
611
|
startAutoSave,
|
|
587
612
|
stopAutoSave,
|
|
588
613
|
isAutoSaving,
|
|
614
|
+
startAutoPersisting,
|
|
615
|
+
stopAutoPersisting,
|
|
589
616
|
getStatus,
|
|
590
617
|
addStatusListener,
|
|
591
618
|
delListener,
|
|
@@ -903,8 +930,7 @@ const createJsonPersister = (
|
|
|
903
930
|
);
|
|
904
931
|
});
|
|
905
932
|
const destroy = async () => {
|
|
906
|
-
await persister.
|
|
907
|
-
await persister.stopAutoSave();
|
|
933
|
+
await persister.stopAutoPersisting();
|
|
908
934
|
extraDestroy();
|
|
909
935
|
return persister;
|
|
910
936
|
};
|
|
@@ -1038,8 +1064,7 @@ const createTabularPersister = (
|
|
|
1038
1064
|
}
|
|
1039
1065
|
});
|
|
1040
1066
|
const destroy = async () => {
|
|
1041
|
-
await persister.
|
|
1042
|
-
await persister.stopAutoSave();
|
|
1067
|
+
await persister.stopAutoPersisting();
|
|
1043
1068
|
extraDestroy();
|
|
1044
1069
|
return persister;
|
|
1045
1070
|
};
|
|
@@ -2,9 +2,12 @@ const getTypeOf = (thing) => typeof thing;
|
|
|
2
2
|
const TINYBASE = 'tinybase';
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
4
|
const COMMA = ',';
|
|
5
|
+
const DOT = '.';
|
|
5
6
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
6
7
|
const TRUE = 'true';
|
|
7
8
|
const UNDEFINED = '\uFFFC';
|
|
9
|
+
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
10
|
+
str.split(separator, limit);
|
|
8
11
|
const strReplace = (str, searchValue, replaceValue) =>
|
|
9
12
|
str.replace(searchValue, replaceValue);
|
|
10
13
|
|
|
@@ -119,7 +122,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
119
122
|
return await executeCommand(sql, params);
|
|
120
123
|
}
|
|
121
124
|
: executeCommand;
|
|
122
|
-
const escapeId = (str) =>
|
|
125
|
+
const escapeId = (str) =>
|
|
126
|
+
arrayJoin(
|
|
127
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
128
|
+
DOT,
|
|
129
|
+
);
|
|
123
130
|
const escapeColumnNames = (...columnNames) =>
|
|
124
131
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
125
132
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -558,6 +565,25 @@ const createCustomPersister = (
|
|
|
558
565
|
return persister;
|
|
559
566
|
};
|
|
560
567
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
568
|
+
const startAutoPersisting = async (
|
|
569
|
+
initialContent,
|
|
570
|
+
startSaveFirst = false,
|
|
571
|
+
) => {
|
|
572
|
+
const [call1, call2] = startSaveFirst
|
|
573
|
+
? [startAutoSave, startAutoLoad]
|
|
574
|
+
: [startAutoLoad, startAutoSave];
|
|
575
|
+
await call1(initialContent);
|
|
576
|
+
await call2(initialContent);
|
|
577
|
+
return persister;
|
|
578
|
+
};
|
|
579
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
580
|
+
const [call1, call2] = stopSaveFirst
|
|
581
|
+
? [stopAutoSave, stopAutoLoad]
|
|
582
|
+
: [stopAutoLoad, stopAutoSave];
|
|
583
|
+
await call1();
|
|
584
|
+
await call2();
|
|
585
|
+
return persister;
|
|
586
|
+
};
|
|
561
587
|
const getStatus = () => status;
|
|
562
588
|
const addStatusListener = (listener) =>
|
|
563
589
|
addListener(listener, statusListeners);
|
|
@@ -571,10 +597,9 @@ const createCustomPersister = (
|
|
|
571
597
|
return persister;
|
|
572
598
|
};
|
|
573
599
|
const getStore = () => store;
|
|
574
|
-
const destroy =
|
|
600
|
+
const destroy = () => {
|
|
575
601
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
576
|
-
|
|
577
|
-
return await persister.stopAutoSave();
|
|
602
|
+
return stopAutoPersisting();
|
|
578
603
|
};
|
|
579
604
|
const getStats = () => ({loads, saves});
|
|
580
605
|
const persister = {
|
|
@@ -586,6 +611,8 @@ const createCustomPersister = (
|
|
|
586
611
|
startAutoSave,
|
|
587
612
|
stopAutoSave,
|
|
588
613
|
isAutoSaving,
|
|
614
|
+
startAutoPersisting,
|
|
615
|
+
stopAutoPersisting,
|
|
589
616
|
getStatus,
|
|
590
617
|
addStatusListener,
|
|
591
618
|
delListener,
|
|
@@ -903,8 +930,7 @@ const createJsonPersister = (
|
|
|
903
930
|
);
|
|
904
931
|
});
|
|
905
932
|
const destroy = async () => {
|
|
906
|
-
await persister.
|
|
907
|
-
await persister.stopAutoSave();
|
|
933
|
+
await persister.stopAutoPersisting();
|
|
908
934
|
extraDestroy();
|
|
909
935
|
return persister;
|
|
910
936
|
};
|
|
@@ -1038,8 +1064,7 @@ const createTabularPersister = (
|
|
|
1038
1064
|
}
|
|
1039
1065
|
});
|
|
1040
1066
|
const destroy = async () => {
|
|
1041
|
-
await persister.
|
|
1042
|
-
await persister.stopAutoSave();
|
|
1067
|
+
await persister.stopAutoPersisting();
|
|
1043
1068
|
extraDestroy();
|
|
1044
1069
|
return persister;
|
|
1045
1070
|
};
|
|
@@ -366,6 +366,25 @@ const createCustomPersister = (
|
|
|
366
366
|
return persister;
|
|
367
367
|
};
|
|
368
368
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
369
|
+
const startAutoPersisting = async (
|
|
370
|
+
initialContent,
|
|
371
|
+
startSaveFirst = false,
|
|
372
|
+
) => {
|
|
373
|
+
const [call1, call2] = startSaveFirst
|
|
374
|
+
? [startAutoSave, startAutoLoad]
|
|
375
|
+
: [startAutoLoad, startAutoSave];
|
|
376
|
+
await call1(initialContent);
|
|
377
|
+
await call2(initialContent);
|
|
378
|
+
return persister;
|
|
379
|
+
};
|
|
380
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
381
|
+
const [call1, call2] = stopSaveFirst
|
|
382
|
+
? [stopAutoSave, stopAutoLoad]
|
|
383
|
+
: [stopAutoLoad, stopAutoSave];
|
|
384
|
+
await call1();
|
|
385
|
+
await call2();
|
|
386
|
+
return persister;
|
|
387
|
+
};
|
|
369
388
|
const getStatus = () => status;
|
|
370
389
|
const addStatusListener = (listener) =>
|
|
371
390
|
addListener(listener, statusListeners);
|
|
@@ -379,10 +398,9 @@ const createCustomPersister = (
|
|
|
379
398
|
return persister;
|
|
380
399
|
};
|
|
381
400
|
const getStore = () => store;
|
|
382
|
-
const destroy =
|
|
401
|
+
const destroy = () => {
|
|
383
402
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
384
|
-
|
|
385
|
-
return await persister.stopAutoSave();
|
|
403
|
+
return stopAutoPersisting();
|
|
386
404
|
};
|
|
387
405
|
const getStats = () => ({loads, saves});
|
|
388
406
|
const persister = {
|
|
@@ -394,6 +412,8 @@ const createCustomPersister = (
|
|
|
394
412
|
startAutoSave,
|
|
395
413
|
stopAutoSave,
|
|
396
414
|
isAutoSaving,
|
|
415
|
+
startAutoPersisting,
|
|
416
|
+
stopAutoPersisting,
|
|
397
417
|
getStatus,
|
|
398
418
|
addStatusListener,
|
|
399
419
|
delListener,
|
|
@@ -366,6 +366,25 @@ const createCustomPersister = (
|
|
|
366
366
|
return persister;
|
|
367
367
|
};
|
|
368
368
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
369
|
+
const startAutoPersisting = async (
|
|
370
|
+
initialContent,
|
|
371
|
+
startSaveFirst = false,
|
|
372
|
+
) => {
|
|
373
|
+
const [call1, call2] = startSaveFirst
|
|
374
|
+
? [startAutoSave, startAutoLoad]
|
|
375
|
+
: [startAutoLoad, startAutoSave];
|
|
376
|
+
await call1(initialContent);
|
|
377
|
+
await call2(initialContent);
|
|
378
|
+
return persister;
|
|
379
|
+
};
|
|
380
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
381
|
+
const [call1, call2] = stopSaveFirst
|
|
382
|
+
? [stopAutoSave, stopAutoLoad]
|
|
383
|
+
: [stopAutoLoad, stopAutoSave];
|
|
384
|
+
await call1();
|
|
385
|
+
await call2();
|
|
386
|
+
return persister;
|
|
387
|
+
};
|
|
369
388
|
const getStatus = () => status;
|
|
370
389
|
const addStatusListener = (listener) =>
|
|
371
390
|
addListener(listener, statusListeners);
|
|
@@ -379,10 +398,9 @@ const createCustomPersister = (
|
|
|
379
398
|
return persister;
|
|
380
399
|
};
|
|
381
400
|
const getStore = () => store;
|
|
382
|
-
const destroy =
|
|
401
|
+
const destroy = () => {
|
|
383
402
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
384
|
-
|
|
385
|
-
return await persister.stopAutoSave();
|
|
403
|
+
return stopAutoPersisting();
|
|
386
404
|
};
|
|
387
405
|
const getStats = () => ({loads, saves});
|
|
388
406
|
const persister = {
|
|
@@ -394,6 +412,8 @@ const createCustomPersister = (
|
|
|
394
412
|
startAutoSave,
|
|
395
413
|
stopAutoSave,
|
|
396
414
|
isAutoSaving,
|
|
415
|
+
startAutoPersisting,
|
|
416
|
+
stopAutoPersisting,
|
|
397
417
|
getStatus,
|
|
398
418
|
addStatusListener,
|
|
399
419
|
delListener,
|