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
|
@@ -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
|
|
|
@@ -79,7 +82,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
79
82
|
return await executeCommand(sql, params);
|
|
80
83
|
}
|
|
81
84
|
: executeCommand;
|
|
82
|
-
const escapeId = (str) =>
|
|
85
|
+
const escapeId = (str) =>
|
|
86
|
+
arrayJoin(
|
|
87
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
88
|
+
DOT,
|
|
89
|
+
);
|
|
83
90
|
const escapeColumnNames = (...columnNames) =>
|
|
84
91
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
85
92
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -557,6 +564,25 @@ const createCustomPersister = (
|
|
|
557
564
|
return persister;
|
|
558
565
|
};
|
|
559
566
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
567
|
+
const startAutoPersisting = async (
|
|
568
|
+
initialContent,
|
|
569
|
+
startSaveFirst = false,
|
|
570
|
+
) => {
|
|
571
|
+
const [call1, call2] = startSaveFirst
|
|
572
|
+
? [startAutoSave, startAutoLoad]
|
|
573
|
+
: [startAutoLoad, startAutoSave];
|
|
574
|
+
await call1(initialContent);
|
|
575
|
+
await call2(initialContent);
|
|
576
|
+
return persister;
|
|
577
|
+
};
|
|
578
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
579
|
+
const [call1, call2] = stopSaveFirst
|
|
580
|
+
? [stopAutoSave, stopAutoLoad]
|
|
581
|
+
: [stopAutoLoad, stopAutoSave];
|
|
582
|
+
await call1();
|
|
583
|
+
await call2();
|
|
584
|
+
return persister;
|
|
585
|
+
};
|
|
560
586
|
const getStatus = () => status;
|
|
561
587
|
const addStatusListener = (listener) =>
|
|
562
588
|
addListener(listener, statusListeners);
|
|
@@ -570,10 +596,9 @@ const createCustomPersister = (
|
|
|
570
596
|
return persister;
|
|
571
597
|
};
|
|
572
598
|
const getStore = () => store;
|
|
573
|
-
const destroy =
|
|
599
|
+
const destroy = () => {
|
|
574
600
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
575
|
-
|
|
576
|
-
return await persister.stopAutoSave();
|
|
601
|
+
return stopAutoPersisting();
|
|
577
602
|
};
|
|
578
603
|
const getStats = () => ({loads, saves});
|
|
579
604
|
const persister = {
|
|
@@ -585,6 +610,8 @@ const createCustomPersister = (
|
|
|
585
610
|
startAutoSave,
|
|
586
611
|
stopAutoSave,
|
|
587
612
|
isAutoSaving,
|
|
613
|
+
startAutoPersisting,
|
|
614
|
+
stopAutoPersisting,
|
|
588
615
|
getStatus,
|
|
589
616
|
addStatusListener,
|
|
590
617
|
delListener,
|
|
@@ -902,8 +929,7 @@ const createJsonPersister = (
|
|
|
902
929
|
);
|
|
903
930
|
});
|
|
904
931
|
const destroy = async () => {
|
|
905
|
-
await persister.
|
|
906
|
-
await persister.stopAutoSave();
|
|
932
|
+
await persister.stopAutoPersisting();
|
|
907
933
|
extraDestroy();
|
|
908
934
|
return persister;
|
|
909
935
|
};
|
|
@@ -1037,8 +1063,7 @@ const createTabularPersister = (
|
|
|
1037
1063
|
}
|
|
1038
1064
|
});
|
|
1039
1065
|
const destroy = async () => {
|
|
1040
|
-
await persister.
|
|
1041
|
-
await persister.stopAutoSave();
|
|
1066
|
+
await persister.stopAutoPersisting();
|
|
1042
1067
|
extraDestroy();
|
|
1043
1068
|
return persister;
|
|
1044
1069
|
};
|
|
@@ -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
|
|
|
@@ -79,7 +82,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
79
82
|
return await executeCommand(sql, params);
|
|
80
83
|
}
|
|
81
84
|
: executeCommand;
|
|
82
|
-
const escapeId = (str) =>
|
|
85
|
+
const escapeId = (str) =>
|
|
86
|
+
arrayJoin(
|
|
87
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
88
|
+
DOT,
|
|
89
|
+
);
|
|
83
90
|
const escapeColumnNames = (...columnNames) =>
|
|
84
91
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
85
92
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -557,6 +564,25 @@ const createCustomPersister = (
|
|
|
557
564
|
return persister;
|
|
558
565
|
};
|
|
559
566
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
567
|
+
const startAutoPersisting = async (
|
|
568
|
+
initialContent,
|
|
569
|
+
startSaveFirst = false,
|
|
570
|
+
) => {
|
|
571
|
+
const [call1, call2] = startSaveFirst
|
|
572
|
+
? [startAutoSave, startAutoLoad]
|
|
573
|
+
: [startAutoLoad, startAutoSave];
|
|
574
|
+
await call1(initialContent);
|
|
575
|
+
await call2(initialContent);
|
|
576
|
+
return persister;
|
|
577
|
+
};
|
|
578
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
579
|
+
const [call1, call2] = stopSaveFirst
|
|
580
|
+
? [stopAutoSave, stopAutoLoad]
|
|
581
|
+
: [stopAutoLoad, stopAutoSave];
|
|
582
|
+
await call1();
|
|
583
|
+
await call2();
|
|
584
|
+
return persister;
|
|
585
|
+
};
|
|
560
586
|
const getStatus = () => status;
|
|
561
587
|
const addStatusListener = (listener) =>
|
|
562
588
|
addListener(listener, statusListeners);
|
|
@@ -570,10 +596,9 @@ const createCustomPersister = (
|
|
|
570
596
|
return persister;
|
|
571
597
|
};
|
|
572
598
|
const getStore = () => store;
|
|
573
|
-
const destroy =
|
|
599
|
+
const destroy = () => {
|
|
574
600
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
575
|
-
|
|
576
|
-
return await persister.stopAutoSave();
|
|
601
|
+
return stopAutoPersisting();
|
|
577
602
|
};
|
|
578
603
|
const getStats = () => ({loads, saves});
|
|
579
604
|
const persister = {
|
|
@@ -585,6 +610,8 @@ const createCustomPersister = (
|
|
|
585
610
|
startAutoSave,
|
|
586
611
|
stopAutoSave,
|
|
587
612
|
isAutoSaving,
|
|
613
|
+
startAutoPersisting,
|
|
614
|
+
stopAutoPersisting,
|
|
588
615
|
getStatus,
|
|
589
616
|
addStatusListener,
|
|
590
617
|
delListener,
|
|
@@ -902,8 +929,7 @@ const createJsonPersister = (
|
|
|
902
929
|
);
|
|
903
930
|
});
|
|
904
931
|
const destroy = async () => {
|
|
905
|
-
await persister.
|
|
906
|
-
await persister.stopAutoSave();
|
|
932
|
+
await persister.stopAutoPersisting();
|
|
907
933
|
extraDestroy();
|
|
908
934
|
return persister;
|
|
909
935
|
};
|
|
@@ -1037,8 +1063,7 @@ const createTabularPersister = (
|
|
|
1037
1063
|
}
|
|
1038
1064
|
});
|
|
1039
1065
|
const destroy = async () => {
|
|
1040
|
-
await persister.
|
|
1041
|
-
await persister.stopAutoSave();
|
|
1066
|
+
await persister.stopAutoPersisting();
|
|
1042
1067
|
extraDestroy();
|
|
1043
1068
|
return persister;
|
|
1044
1069
|
};
|
|
@@ -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
|
|
|
@@ -79,7 +82,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
79
82
|
return await executeCommand(sql, params);
|
|
80
83
|
}
|
|
81
84
|
: executeCommand;
|
|
82
|
-
const escapeId = (str) =>
|
|
85
|
+
const escapeId = (str) =>
|
|
86
|
+
arrayJoin(
|
|
87
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
88
|
+
DOT,
|
|
89
|
+
);
|
|
83
90
|
const escapeColumnNames = (...columnNames) =>
|
|
84
91
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
85
92
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -557,6 +564,25 @@ const createCustomPersister = (
|
|
|
557
564
|
return persister;
|
|
558
565
|
};
|
|
559
566
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
567
|
+
const startAutoPersisting = async (
|
|
568
|
+
initialContent,
|
|
569
|
+
startSaveFirst = false,
|
|
570
|
+
) => {
|
|
571
|
+
const [call1, call2] = startSaveFirst
|
|
572
|
+
? [startAutoSave, startAutoLoad]
|
|
573
|
+
: [startAutoLoad, startAutoSave];
|
|
574
|
+
await call1(initialContent);
|
|
575
|
+
await call2(initialContent);
|
|
576
|
+
return persister;
|
|
577
|
+
};
|
|
578
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
579
|
+
const [call1, call2] = stopSaveFirst
|
|
580
|
+
? [stopAutoSave, stopAutoLoad]
|
|
581
|
+
: [stopAutoLoad, stopAutoSave];
|
|
582
|
+
await call1();
|
|
583
|
+
await call2();
|
|
584
|
+
return persister;
|
|
585
|
+
};
|
|
560
586
|
const getStatus = () => status;
|
|
561
587
|
const addStatusListener = (listener) =>
|
|
562
588
|
addListener(listener, statusListeners);
|
|
@@ -570,10 +596,9 @@ const createCustomPersister = (
|
|
|
570
596
|
return persister;
|
|
571
597
|
};
|
|
572
598
|
const getStore = () => store;
|
|
573
|
-
const destroy =
|
|
599
|
+
const destroy = () => {
|
|
574
600
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
575
|
-
|
|
576
|
-
return await persister.stopAutoSave();
|
|
601
|
+
return stopAutoPersisting();
|
|
577
602
|
};
|
|
578
603
|
const getStats = () => ({loads, saves});
|
|
579
604
|
const persister = {
|
|
@@ -585,6 +610,8 @@ const createCustomPersister = (
|
|
|
585
610
|
startAutoSave,
|
|
586
611
|
stopAutoSave,
|
|
587
612
|
isAutoSaving,
|
|
613
|
+
startAutoPersisting,
|
|
614
|
+
stopAutoPersisting,
|
|
588
615
|
getStatus,
|
|
589
616
|
addStatusListener,
|
|
590
617
|
delListener,
|
|
@@ -902,8 +929,7 @@ const createJsonPersister = (
|
|
|
902
929
|
);
|
|
903
930
|
});
|
|
904
931
|
const destroy = async () => {
|
|
905
|
-
await persister.
|
|
906
|
-
await persister.stopAutoSave();
|
|
932
|
+
await persister.stopAutoPersisting();
|
|
907
933
|
extraDestroy();
|
|
908
934
|
return persister;
|
|
909
935
|
};
|
|
@@ -1037,8 +1063,7 @@ const createTabularPersister = (
|
|
|
1037
1063
|
}
|
|
1038
1064
|
});
|
|
1039
1065
|
const destroy = async () => {
|
|
1040
|
-
await persister.
|
|
1041
|
-
await persister.stopAutoSave();
|
|
1066
|
+
await persister.stopAutoPersisting();
|
|
1042
1067
|
extraDestroy();
|
|
1043
1068
|
return persister;
|
|
1044
1069
|
};
|
|
@@ -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
|
|
|
@@ -79,7 +82,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
79
82
|
return await executeCommand(sql, params);
|
|
80
83
|
}
|
|
81
84
|
: executeCommand;
|
|
82
|
-
const escapeId = (str) =>
|
|
85
|
+
const escapeId = (str) =>
|
|
86
|
+
arrayJoin(
|
|
87
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
88
|
+
DOT,
|
|
89
|
+
);
|
|
83
90
|
const escapeColumnNames = (...columnNames) =>
|
|
84
91
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
85
92
|
const getPlaceholders = (array, offset = [1]) =>
|
|
@@ -557,6 +564,25 @@ const createCustomPersister = (
|
|
|
557
564
|
return persister;
|
|
558
565
|
};
|
|
559
566
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
567
|
+
const startAutoPersisting = async (
|
|
568
|
+
initialContent,
|
|
569
|
+
startSaveFirst = false,
|
|
570
|
+
) => {
|
|
571
|
+
const [call1, call2] = startSaveFirst
|
|
572
|
+
? [startAutoSave, startAutoLoad]
|
|
573
|
+
: [startAutoLoad, startAutoSave];
|
|
574
|
+
await call1(initialContent);
|
|
575
|
+
await call2(initialContent);
|
|
576
|
+
return persister;
|
|
577
|
+
};
|
|
578
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
579
|
+
const [call1, call2] = stopSaveFirst
|
|
580
|
+
? [stopAutoSave, stopAutoLoad]
|
|
581
|
+
: [stopAutoLoad, stopAutoSave];
|
|
582
|
+
await call1();
|
|
583
|
+
await call2();
|
|
584
|
+
return persister;
|
|
585
|
+
};
|
|
560
586
|
const getStatus = () => status;
|
|
561
587
|
const addStatusListener = (listener) =>
|
|
562
588
|
addListener(listener, statusListeners);
|
|
@@ -570,10 +596,9 @@ const createCustomPersister = (
|
|
|
570
596
|
return persister;
|
|
571
597
|
};
|
|
572
598
|
const getStore = () => store;
|
|
573
|
-
const destroy =
|
|
599
|
+
const destroy = () => {
|
|
574
600
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
575
|
-
|
|
576
|
-
return await persister.stopAutoSave();
|
|
601
|
+
return stopAutoPersisting();
|
|
577
602
|
};
|
|
578
603
|
const getStats = () => ({loads, saves});
|
|
579
604
|
const persister = {
|
|
@@ -585,6 +610,8 @@ const createCustomPersister = (
|
|
|
585
610
|
startAutoSave,
|
|
586
611
|
stopAutoSave,
|
|
587
612
|
isAutoSaving,
|
|
613
|
+
startAutoPersisting,
|
|
614
|
+
stopAutoPersisting,
|
|
588
615
|
getStatus,
|
|
589
616
|
addStatusListener,
|
|
590
617
|
delListener,
|
|
@@ -902,8 +929,7 @@ const createJsonPersister = (
|
|
|
902
929
|
);
|
|
903
930
|
});
|
|
904
931
|
const destroy = async () => {
|
|
905
|
-
await persister.
|
|
906
|
-
await persister.stopAutoSave();
|
|
932
|
+
await persister.stopAutoPersisting();
|
|
907
933
|
extraDestroy();
|
|
908
934
|
return persister;
|
|
909
935
|
};
|
|
@@ -1037,8 +1063,7 @@ const createTabularPersister = (
|
|
|
1037
1063
|
}
|
|
1038
1064
|
});
|
|
1039
1065
|
const destroy = async () => {
|
|
1040
|
-
await persister.
|
|
1041
|
-
await persister.stopAutoSave();
|
|
1066
|
+
await persister.stopAutoPersisting();
|
|
1042
1067
|
extraDestroy();
|
|
1043
1068
|
return persister;
|
|
1044
1069
|
};
|
|
@@ -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
|
|
|
@@ -80,7 +83,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
80
83
|
return await executeCommand(sql, params);
|
|
81
84
|
}
|
|
82
85
|
: executeCommand;
|
|
83
|
-
const escapeId = (str) =>
|
|
86
|
+
const escapeId = (str) =>
|
|
87
|
+
arrayJoin(
|
|
88
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
89
|
+
DOT,
|
|
90
|
+
);
|
|
84
91
|
const escapeColumnNames = (...columnNames) =>
|
|
85
92
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
86
93
|
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
|
|
|
@@ -80,7 +83,11 @@ const getWrappedCommand = (executeCommand, onSqlCommand) =>
|
|
|
80
83
|
return await executeCommand(sql, params);
|
|
81
84
|
}
|
|
82
85
|
: executeCommand;
|
|
83
|
-
const escapeId = (str) =>
|
|
86
|
+
const escapeId = (str) =>
|
|
87
|
+
arrayJoin(
|
|
88
|
+
arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
|
|
89
|
+
DOT,
|
|
90
|
+
);
|
|
84
91
|
const escapeColumnNames = (...columnNames) =>
|
|
85
92
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
86
93
|
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
|
};
|
|
@@ -375,6 +375,25 @@ const createCustomPersister = (
|
|
|
375
375
|
return persister;
|
|
376
376
|
};
|
|
377
377
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
378
|
+
const startAutoPersisting = async (
|
|
379
|
+
initialContent,
|
|
380
|
+
startSaveFirst = false,
|
|
381
|
+
) => {
|
|
382
|
+
const [call1, call2] = startSaveFirst
|
|
383
|
+
? [startAutoSave, startAutoLoad]
|
|
384
|
+
: [startAutoLoad, startAutoSave];
|
|
385
|
+
await call1(initialContent);
|
|
386
|
+
await call2(initialContent);
|
|
387
|
+
return persister;
|
|
388
|
+
};
|
|
389
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
390
|
+
const [call1, call2] = stopSaveFirst
|
|
391
|
+
? [stopAutoSave, stopAutoLoad]
|
|
392
|
+
: [stopAutoLoad, stopAutoSave];
|
|
393
|
+
await call1();
|
|
394
|
+
await call2();
|
|
395
|
+
return persister;
|
|
396
|
+
};
|
|
378
397
|
const getStatus = () => status;
|
|
379
398
|
const addStatusListener = (listener) =>
|
|
380
399
|
addListener(listener, statusListeners);
|
|
@@ -388,10 +407,9 @@ const createCustomPersister = (
|
|
|
388
407
|
return persister;
|
|
389
408
|
};
|
|
390
409
|
const getStore = () => store;
|
|
391
|
-
const destroy =
|
|
410
|
+
const destroy = () => {
|
|
392
411
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
393
|
-
|
|
394
|
-
return await persister.stopAutoSave();
|
|
412
|
+
return stopAutoPersisting();
|
|
395
413
|
};
|
|
396
414
|
const getStats = () => ({loads, saves});
|
|
397
415
|
const persister = {
|
|
@@ -403,6 +421,8 @@ const createCustomPersister = (
|
|
|
403
421
|
startAutoSave,
|
|
404
422
|
stopAutoSave,
|
|
405
423
|
isAutoSaving,
|
|
424
|
+
startAutoPersisting,
|
|
425
|
+
stopAutoPersisting,
|
|
406
426
|
getStatus,
|
|
407
427
|
addStatusListener,
|
|
408
428
|
delListener,
|
|
@@ -375,6 +375,25 @@ const createCustomPersister = (
|
|
|
375
375
|
return persister;
|
|
376
376
|
};
|
|
377
377
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
378
|
+
const startAutoPersisting = async (
|
|
379
|
+
initialContent,
|
|
380
|
+
startSaveFirst = false,
|
|
381
|
+
) => {
|
|
382
|
+
const [call1, call2] = startSaveFirst
|
|
383
|
+
? [startAutoSave, startAutoLoad]
|
|
384
|
+
: [startAutoLoad, startAutoSave];
|
|
385
|
+
await call1(initialContent);
|
|
386
|
+
await call2(initialContent);
|
|
387
|
+
return persister;
|
|
388
|
+
};
|
|
389
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
390
|
+
const [call1, call2] = stopSaveFirst
|
|
391
|
+
? [stopAutoSave, stopAutoLoad]
|
|
392
|
+
: [stopAutoLoad, stopAutoSave];
|
|
393
|
+
await call1();
|
|
394
|
+
await call2();
|
|
395
|
+
return persister;
|
|
396
|
+
};
|
|
378
397
|
const getStatus = () => status;
|
|
379
398
|
const addStatusListener = (listener) =>
|
|
380
399
|
addListener(listener, statusListeners);
|
|
@@ -388,10 +407,9 @@ const createCustomPersister = (
|
|
|
388
407
|
return persister;
|
|
389
408
|
};
|
|
390
409
|
const getStore = () => store;
|
|
391
|
-
const destroy =
|
|
410
|
+
const destroy = () => {
|
|
392
411
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
393
|
-
|
|
394
|
-
return await persister.stopAutoSave();
|
|
412
|
+
return stopAutoPersisting();
|
|
395
413
|
};
|
|
396
414
|
const getStats = () => ({loads, saves});
|
|
397
415
|
const persister = {
|
|
@@ -403,6 +421,8 @@ const createCustomPersister = (
|
|
|
403
421
|
startAutoSave,
|
|
404
422
|
stopAutoSave,
|
|
405
423
|
isAutoSaving,
|
|
424
|
+
startAutoPersisting,
|
|
425
|
+
stopAutoPersisting,
|
|
406
426
|
getStatus,
|
|
407
427
|
addStatusListener,
|
|
408
428
|
delListener,
|