tinybase 8.6.0-beta.0 → 9.0.0-beta.1
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/_internal/queries/with-schemas/index.d.ts +1 -2
- package/@types/_internal/ui/with-schemas/index.d.ts +8 -16
- package/@types/mergeable-store/index.d.ts +4 -4
- package/@types/mergeable-store/with-schemas/index.d.ts +41 -17
- package/@types/persisters/index.d.ts +34 -13
- package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +9 -8
- package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +10 -10
- package/@types/persisters/with-schemas/index.d.ts +72 -30
- package/@types/queries/index.d.ts +5 -7
- package/@types/queries/with-schemas/index.d.ts +9 -15
- package/@types/store/index.d.ts +1 -2
- package/@types/store/with-schemas/index.d.ts +19 -29
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +9 -3
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +10 -3
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +15 -2
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +17 -2
- package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +51 -0
- package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +51 -0
- package/@types/ui-react/with-schemas/index.d.ts +3 -6
- package/@types/ui-react-dom/with-schemas/index.d.ts +6 -12
- package/@types/ui-react-dom-charts/with-schemas/index.d.ts +3 -4
- package/@types/ui-solid/with-schemas/index.d.ts +4 -8
- package/@types/ui-solid-dom/with-schemas/index.d.ts +6 -12
- package/@types/ui-svelte-dom/with-schemas/index.d.ts +6 -12
- package/index.js +67 -25
- package/indexes/index.js +6 -8
- package/indexes/with-schemas/index.js +6 -8
- package/mergeable-store/index.js +46 -6
- package/mergeable-store/with-schemas/index.js +46 -6
- package/metrics/index.js +6 -8
- package/metrics/with-schemas/index.js +6 -8
- 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/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/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-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/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-react-native-mmkv/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/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/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/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-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/ui-solid-inspector/index.js +1 -1
- package/min/ui-solid-inspector/index.js.gz +0 -0
- package/min/ui-solid-inspector/with-schemas/index.js +1 -1
- package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
- package/min/ui-svelte-inspector/index.js +1 -1
- package/min/ui-svelte-inspector/index.js.gz +0 -0
- package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
- package/min/ui-svelte-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/omni/index.js +364 -155
- package/omni/with-schemas/index.js +364 -155
- package/package.json +8 -8
- package/persisters/index.js +133 -40
- package/persisters/persister-automerge/index.js +4 -3
- package/persisters/persister-automerge/with-schemas/index.js +4 -3
- package/persisters/persister-browser/index.js +4 -3
- package/persisters/persister-browser/with-schemas/index.js +4 -3
- package/persisters/persister-cr-sqlite-wasm/index.js +133 -40
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +133 -40
- package/persisters/persister-durable-object-sql-storage/index.js +275 -113
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +275 -113
- package/persisters/persister-durable-object-storage/index.js +4 -3
- package/persisters/persister-durable-object-storage/with-schemas/index.js +4 -3
- package/persisters/persister-electric-sql/index.js +133 -40
- package/persisters/persister-electric-sql/with-schemas/index.js +133 -40
- package/persisters/persister-expo-sqlite/index.js +133 -40
- package/persisters/persister-expo-sqlite/with-schemas/index.js +133 -40
- package/persisters/persister-file/index.js +4 -3
- package/persisters/persister-file/with-schemas/index.js +4 -3
- package/persisters/persister-indexed-db/index.js +4 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +4 -3
- package/persisters/persister-libsql/index.js +133 -40
- package/persisters/persister-libsql/with-schemas/index.js +133 -40
- package/persisters/persister-partykit-client/index.js +4 -3
- package/persisters/persister-partykit-client/with-schemas/index.js +4 -3
- package/persisters/persister-pglite/index.js +134 -40
- package/persisters/persister-pglite/with-schemas/index.js +134 -40
- package/persisters/persister-postgres/index.js +134 -40
- package/persisters/persister-postgres/with-schemas/index.js +134 -40
- package/persisters/persister-powersync/index.js +186 -120
- package/persisters/persister-powersync/with-schemas/index.js +186 -120
- package/persisters/persister-react-native-mmkv/index.js +4 -3
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +4 -3
- package/persisters/persister-react-native-sqlite/index.js +133 -40
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +133 -40
- package/persisters/persister-remote/index.js +4 -3
- package/persisters/persister-remote/with-schemas/index.js +4 -3
- package/persisters/persister-sqlite-bun/index.js +133 -40
- package/persisters/persister-sqlite-bun/with-schemas/index.js +133 -40
- package/persisters/persister-sqlite-wasm/index.js +133 -40
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +133 -40
- package/persisters/persister-sqlite3/index.js +133 -40
- package/persisters/persister-sqlite3/with-schemas/index.js +133 -40
- package/persisters/persister-yjs/index.js +4 -3
- package/persisters/persister-yjs/with-schemas/index.js +4 -3
- package/persisters/with-schemas/index.js +133 -40
- package/queries/index.js +21 -19
- package/queries/with-schemas/index.js +21 -19
- package/readme.md +14 -14
- package/relationships/index.js +6 -8
- package/relationships/with-schemas/index.js +6 -8
- package/releases.md +72 -57
- package/store/index.js +33 -2
- package/store/with-schemas/index.js +33 -2
- package/synchronizers/index.js +4 -3
- package/synchronizers/synchronizer-broadcast-channel/index.js +4 -3
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +4 -3
- package/synchronizers/synchronizer-local/index.js +4 -3
- package/synchronizers/synchronizer-local/with-schemas/index.js +4 -3
- package/synchronizers/synchronizer-ws-client/index.js +120 -45
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +120 -45
- package/synchronizers/synchronizer-ws-server/index.js +116 -36
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +116 -36
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +125 -41
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +125 -41
- package/synchronizers/with-schemas/index.js +4 -3
- package/ui-react-inspector/index.js +36 -5
- package/ui-react-inspector/with-schemas/index.js +36 -5
- package/ui-solid-inspector/index.js +36 -5
- package/ui-solid-inspector/with-schemas/index.js +36 -5
- package/ui-svelte/index.js +1 -1
- package/ui-svelte/with-schemas/index.js +1 -1
- package/ui-svelte-dom/index.js +2 -2
- package/ui-svelte-dom/with-schemas/index.js +2 -2
- package/ui-svelte-inspector/index.js +38 -7
- package/ui-svelte-inspector/with-schemas/index.js +38 -7
- package/with-schemas/index.js +67 -25
|
@@ -50,6 +50,7 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
const arrayHas = (array, value) => array.includes(value);
|
|
53
54
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
54
55
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
55
56
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -209,6 +210,8 @@ const DEFAULT_TABULAR_VALUES_CONFIG = {
|
|
|
209
210
|
save: 0,
|
|
210
211
|
[TABLE_NAME]: TINYBASE + '_values',
|
|
211
212
|
};
|
|
213
|
+
const getValuesIn = (config) => (isArray(config) ? config : void 0);
|
|
214
|
+
const hasValues = (config) => isTrue(config) || isArray(config);
|
|
212
215
|
const getDefaultedConfig = (configOrStoreTableName) =>
|
|
213
216
|
objMerge(
|
|
214
217
|
DEFAULT_CONFIG,
|
|
@@ -259,11 +262,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
259
262
|
];
|
|
260
263
|
}
|
|
261
264
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
const valuesConfigObj = objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values);
|
|
266
|
+
const {load: valuesLoad, save: valuesSave} = valuesConfigObj;
|
|
267
|
+
const valuesConfig = [
|
|
268
|
+
hasValues(valuesLoad),
|
|
269
|
+
hasValues(valuesSave),
|
|
270
|
+
valuesConfigObj[TABLE_NAME],
|
|
271
|
+
getValuesIn(valuesLoad),
|
|
272
|
+
getValuesIn(valuesSave),
|
|
273
|
+
];
|
|
267
274
|
const valuesTable = valuesConfig[2];
|
|
268
275
|
const managedTableNames = setNew(valuesTable);
|
|
269
276
|
const excludedTableNames = setNew(valuesTable);
|
|
@@ -507,13 +514,14 @@ const createCustomPersister = (
|
|
|
507
514
|
const content = await getPersisted();
|
|
508
515
|
if (isArray(content)) {
|
|
509
516
|
setContentOrChanges(content);
|
|
510
|
-
} else if (initialContent) {
|
|
517
|
+
} else if (isUndefined(content) && initialContent) {
|
|
511
518
|
setDefaultContent(initialContent);
|
|
512
|
-
} else {
|
|
519
|
+
} else if (!isUndefined(content)) {
|
|
513
520
|
errorNew(`Content is not an array: ${content}`);
|
|
514
521
|
}
|
|
515
522
|
},
|
|
516
|
-
() => {
|
|
523
|
+
(error) => {
|
|
524
|
+
onIgnoredError?.(error);
|
|
517
525
|
if (initialContent) {
|
|
518
526
|
setDefaultContent(initialContent);
|
|
519
527
|
}
|
|
@@ -672,8 +680,18 @@ const getCommandFunctions = (
|
|
|
672
680
|
({tn, cn}) => setAdd(mapEnsure(schemaMap, tn, setNew), cn),
|
|
673
681
|
);
|
|
674
682
|
};
|
|
675
|
-
const loadTable = async (
|
|
676
|
-
|
|
683
|
+
const loadTable = async (
|
|
684
|
+
tableName,
|
|
685
|
+
rowIdColumnName,
|
|
686
|
+
condition,
|
|
687
|
+
contentSubIds,
|
|
688
|
+
) => {
|
|
689
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
690
|
+
? void 0
|
|
691
|
+
: setNew(contentSubIds);
|
|
692
|
+
const includeContentSubId = (contentSubId) =>
|
|
693
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
694
|
+
return canSelect(tableName, rowIdColumnName)
|
|
677
695
|
? objNew(
|
|
678
696
|
arrayFilter(
|
|
679
697
|
arrayMap(
|
|
@@ -682,17 +700,35 @@ const getCommandFunctions = (
|
|
|
682
700
|
escapeId(tableName) +
|
|
683
701
|
getWhereCondition(tableName, condition),
|
|
684
702
|
),
|
|
685
|
-
(row) =>
|
|
686
|
-
row[rowIdColumnName]
|
|
687
|
-
decode
|
|
703
|
+
(row) => {
|
|
704
|
+
const rowId = row[rowIdColumnName];
|
|
705
|
+
const rowContent = decode
|
|
688
706
|
? objMap(objDel(row, rowIdColumnName), decode)
|
|
689
|
-
: objDel(row, rowIdColumnName)
|
|
690
|
-
|
|
707
|
+
: objDel(row, rowIdColumnName);
|
|
708
|
+
return [
|
|
709
|
+
rowId,
|
|
710
|
+
isUndefined(contentSubIdSet)
|
|
711
|
+
? rowContent
|
|
712
|
+
: objNew(
|
|
713
|
+
arrayFilter(
|
|
714
|
+
objToArray(
|
|
715
|
+
rowContent,
|
|
716
|
+
(cellOrValue, contentSubId) => [
|
|
717
|
+
contentSubId,
|
|
718
|
+
cellOrValue,
|
|
719
|
+
],
|
|
720
|
+
),
|
|
721
|
+
([contentSubId]) => includeContentSubId(contentSubId),
|
|
722
|
+
),
|
|
723
|
+
),
|
|
724
|
+
];
|
|
725
|
+
},
|
|
691
726
|
),
|
|
692
727
|
(entry) => !isUndefined(entry[0]) && !objIsEmpty(entry[1]),
|
|
693
728
|
),
|
|
694
729
|
)
|
|
695
730
|
: {};
|
|
731
|
+
};
|
|
696
732
|
const saveTable = async (
|
|
697
733
|
tableName,
|
|
698
734
|
rowIdColumnName,
|
|
@@ -701,15 +737,23 @@ const getCommandFunctions = (
|
|
|
701
737
|
deleteEmptyTable,
|
|
702
738
|
partial = false,
|
|
703
739
|
condition = TRUE,
|
|
740
|
+
contentSubIds,
|
|
704
741
|
) => {
|
|
742
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
743
|
+
? void 0
|
|
744
|
+
: setNew(contentSubIds);
|
|
745
|
+
const includeContentSubId = (contentSubId) =>
|
|
746
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
705
747
|
const settingColumnNameSet = setNew();
|
|
706
748
|
objMap(content ?? {}, (contentRow) =>
|
|
707
|
-
arrayMap(
|
|
708
|
-
|
|
749
|
+
arrayMap(
|
|
750
|
+
arrayFilter(objIds(contentRow ?? {}), includeContentSubId),
|
|
751
|
+
(cellOrValueId) => setAdd(settingColumnNameSet, cellOrValueId),
|
|
709
752
|
),
|
|
710
753
|
);
|
|
711
754
|
const settingColumnNames = collValues(settingColumnNameSet);
|
|
712
755
|
if (
|
|
756
|
+
isUndefined(contentSubIdSet) &&
|
|
713
757
|
!partial &&
|
|
714
758
|
deleteEmptyTable &&
|
|
715
759
|
condition == TRUE &&
|
|
@@ -721,7 +765,13 @@ const getCommandFunctions = (
|
|
|
721
765
|
return;
|
|
722
766
|
}
|
|
723
767
|
const currentColumnNames = mapGet(schemaMap, tableName);
|
|
724
|
-
const unaccountedColumnNames = setNew(
|
|
768
|
+
const unaccountedColumnNames = setNew(
|
|
769
|
+
arrayFilter(
|
|
770
|
+
collValues(currentColumnNames),
|
|
771
|
+
(columnName) =>
|
|
772
|
+
columnName == rowIdColumnName || includeContentSubId(columnName),
|
|
773
|
+
),
|
|
774
|
+
);
|
|
725
775
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
726
776
|
if (!collHas(schemaMap, tableName)) {
|
|
727
777
|
await databaseExecuteCommand(
|
|
@@ -787,11 +837,13 @@ const getCommandFunctions = (
|
|
|
787
837
|
]);
|
|
788
838
|
if (partial) {
|
|
789
839
|
if (isUndefined(content)) {
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
840
|
+
if (isUndefined(contentSubIdSet)) {
|
|
841
|
+
await databaseExecuteCommand(
|
|
842
|
+
DELETE_FROM +
|
|
843
|
+
escapeId(tableName) +
|
|
844
|
+
getWhereCondition(tableName, condition),
|
|
845
|
+
);
|
|
846
|
+
}
|
|
795
847
|
} else {
|
|
796
848
|
await promiseAll(
|
|
797
849
|
objToArray(content, async (row, rowId) => {
|
|
@@ -804,18 +856,24 @@ const getCommandFunctions = (
|
|
|
804
856
|
[rowId],
|
|
805
857
|
);
|
|
806
858
|
} else if (!arrayIsEmpty(settingColumnNames)) {
|
|
807
|
-
|
|
808
|
-
databaseExecuteCommand,
|
|
809
|
-
tableName,
|
|
810
|
-
rowIdColumnName,
|
|
859
|
+
const changingColumnNames = arrayFilter(
|
|
811
860
|
objIds(row),
|
|
812
|
-
|
|
813
|
-
[rowId]: encode
|
|
814
|
-
? arrayMap(objValues(row), encode)
|
|
815
|
-
: objValues(row),
|
|
816
|
-
},
|
|
817
|
-
currentColumnNames,
|
|
861
|
+
includeContentSubId,
|
|
818
862
|
);
|
|
863
|
+
if (!arrayIsEmpty(changingColumnNames)) {
|
|
864
|
+
await upsert(
|
|
865
|
+
databaseExecuteCommand,
|
|
866
|
+
tableName,
|
|
867
|
+
rowIdColumnName,
|
|
868
|
+
changingColumnNames,
|
|
869
|
+
{
|
|
870
|
+
[rowId]: arrayMap(changingColumnNames, (cellId) =>
|
|
871
|
+
encode ? encode(row[cellId]) : row[cellId],
|
|
872
|
+
),
|
|
873
|
+
},
|
|
874
|
+
currentColumnNames,
|
|
875
|
+
);
|
|
876
|
+
}
|
|
819
877
|
}
|
|
820
878
|
}),
|
|
821
879
|
);
|
|
@@ -824,7 +882,9 @@ const getCommandFunctions = (
|
|
|
824
882
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
825
883
|
const changingColumnNames = arrayFilter(
|
|
826
884
|
collValues(mapGet(schemaMap, tableName)),
|
|
827
|
-
(changingColumnName) =>
|
|
885
|
+
(changingColumnName) =>
|
|
886
|
+
changingColumnName != rowIdColumnName &&
|
|
887
|
+
includeContentSubId(changingColumnName),
|
|
828
888
|
);
|
|
829
889
|
const rows = {};
|
|
830
890
|
const deleteRowIds = [];
|
|
@@ -840,6 +900,7 @@ const getCommandFunctions = (
|
|
|
840
900
|
rowIdColumnName,
|
|
841
901
|
changingColumnNames,
|
|
842
902
|
rows,
|
|
903
|
+
currentColumnNames,
|
|
843
904
|
);
|
|
844
905
|
await databaseExecuteCommand(
|
|
845
906
|
DELETE_FROM +
|
|
@@ -848,7 +909,10 @@ const getCommandFunctions = (
|
|
|
848
909
|
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
849
910
|
deleteRowIds,
|
|
850
911
|
);
|
|
851
|
-
} else if (
|
|
912
|
+
} else if (
|
|
913
|
+
isUndefined(contentSubIdSet) &&
|
|
914
|
+
collHas(schemaMap, tableName)
|
|
915
|
+
) {
|
|
852
916
|
await databaseExecuteCommand(
|
|
853
917
|
DELETE_FROM +
|
|
854
918
|
escapeId(tableName) +
|
|
@@ -987,7 +1051,13 @@ const createTabularPersister = (
|
|
|
987
1051
|
[
|
|
988
1052
|
tablesLoadConfig,
|
|
989
1053
|
tablesSaveConfig,
|
|
990
|
-
[
|
|
1054
|
+
[
|
|
1055
|
+
valuesLoad,
|
|
1056
|
+
valuesSave,
|
|
1057
|
+
valuesTableName,
|
|
1058
|
+
valuesLoadValueIds,
|
|
1059
|
+
valuesSaveValueIds,
|
|
1060
|
+
],
|
|
991
1061
|
],
|
|
992
1062
|
managedTableNames,
|
|
993
1063
|
querySchema,
|
|
@@ -1037,15 +1107,33 @@ const createTabularPersister = (
|
|
|
1037
1107
|
},
|
|
1038
1108
|
),
|
|
1039
1109
|
);
|
|
1110
|
+
const getValuesSubset = (values, valueIds, partial) =>
|
|
1111
|
+
objNew(
|
|
1112
|
+
partial == true
|
|
1113
|
+
? arrayFilter(
|
|
1114
|
+
objToArray(values, (value, valueId) => [valueId, value]),
|
|
1115
|
+
([valueId]) => arrayHas(valueIds, valueId),
|
|
1116
|
+
)
|
|
1117
|
+
: arrayFilter(
|
|
1118
|
+
arrayMap(valueIds, (valueId) => [valueId, values[valueId]]),
|
|
1119
|
+
([, value]) => !isUndefined(value),
|
|
1120
|
+
),
|
|
1121
|
+
);
|
|
1040
1122
|
const saveValues = async (values, partial) =>
|
|
1041
1123
|
valuesSave
|
|
1042
1124
|
? await saveTable(
|
|
1043
1125
|
valuesTableName,
|
|
1044
1126
|
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1045
|
-
{
|
|
1127
|
+
{
|
|
1128
|
+
[SINGLE_ROW_ID]: isUndefined(valuesSaveValueIds)
|
|
1129
|
+
? values
|
|
1130
|
+
: getValuesSubset(values, valuesSaveValueIds, partial),
|
|
1131
|
+
},
|
|
1046
1132
|
true,
|
|
1047
1133
|
true,
|
|
1048
1134
|
partial,
|
|
1135
|
+
void 0,
|
|
1136
|
+
valuesSaveValueIds,
|
|
1049
1137
|
)
|
|
1050
1138
|
: null;
|
|
1051
1139
|
const loadTables = async () =>
|
|
@@ -1065,9 +1153,14 @@ const createTabularPersister = (
|
|
|
1065
1153
|
);
|
|
1066
1154
|
const loadValues = async () =>
|
|
1067
1155
|
valuesLoad
|
|
1068
|
-
? (
|
|
1069
|
-
|
|
1070
|
-
|
|
1156
|
+
? (
|
|
1157
|
+
await loadTable(
|
|
1158
|
+
valuesTableName,
|
|
1159
|
+
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1160
|
+
void 0,
|
|
1161
|
+
valuesLoadValueIds,
|
|
1162
|
+
)
|
|
1163
|
+
)[SINGLE_ROW_ID]
|
|
1071
1164
|
: {};
|
|
1072
1165
|
const getPersisted = () =>
|
|
1073
1166
|
transaction(async () => {
|
|
@@ -50,6 +50,7 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
const arrayHas = (array, value) => array.includes(value);
|
|
53
54
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
54
55
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
55
56
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -209,6 +210,8 @@ const DEFAULT_TABULAR_VALUES_CONFIG = {
|
|
|
209
210
|
save: 0,
|
|
210
211
|
[TABLE_NAME]: TINYBASE + '_values',
|
|
211
212
|
};
|
|
213
|
+
const getValuesIn = (config) => (isArray(config) ? config : void 0);
|
|
214
|
+
const hasValues = (config) => isTrue(config) || isArray(config);
|
|
212
215
|
const getDefaultedConfig = (configOrStoreTableName) =>
|
|
213
216
|
objMerge(
|
|
214
217
|
DEFAULT_CONFIG,
|
|
@@ -259,11 +262,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
259
262
|
];
|
|
260
263
|
}
|
|
261
264
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
const valuesConfigObj = objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values);
|
|
266
|
+
const {load: valuesLoad, save: valuesSave} = valuesConfigObj;
|
|
267
|
+
const valuesConfig = [
|
|
268
|
+
hasValues(valuesLoad),
|
|
269
|
+
hasValues(valuesSave),
|
|
270
|
+
valuesConfigObj[TABLE_NAME],
|
|
271
|
+
getValuesIn(valuesLoad),
|
|
272
|
+
getValuesIn(valuesSave),
|
|
273
|
+
];
|
|
267
274
|
const valuesTable = valuesConfig[2];
|
|
268
275
|
const managedTableNames = setNew(valuesTable);
|
|
269
276
|
const excludedTableNames = setNew(valuesTable);
|
|
@@ -507,13 +514,14 @@ const createCustomPersister = (
|
|
|
507
514
|
const content = await getPersisted();
|
|
508
515
|
if (isArray(content)) {
|
|
509
516
|
setContentOrChanges(content);
|
|
510
|
-
} else if (initialContent) {
|
|
517
|
+
} else if (isUndefined(content) && initialContent) {
|
|
511
518
|
setDefaultContent(initialContent);
|
|
512
|
-
} else {
|
|
519
|
+
} else if (!isUndefined(content)) {
|
|
513
520
|
errorNew(`Content is not an array: ${content}`);
|
|
514
521
|
}
|
|
515
522
|
},
|
|
516
|
-
() => {
|
|
523
|
+
(error) => {
|
|
524
|
+
onIgnoredError?.(error);
|
|
517
525
|
if (initialContent) {
|
|
518
526
|
setDefaultContent(initialContent);
|
|
519
527
|
}
|
|
@@ -672,8 +680,18 @@ const getCommandFunctions = (
|
|
|
672
680
|
({tn, cn}) => setAdd(mapEnsure(schemaMap, tn, setNew), cn),
|
|
673
681
|
);
|
|
674
682
|
};
|
|
675
|
-
const loadTable = async (
|
|
676
|
-
|
|
683
|
+
const loadTable = async (
|
|
684
|
+
tableName,
|
|
685
|
+
rowIdColumnName,
|
|
686
|
+
condition,
|
|
687
|
+
contentSubIds,
|
|
688
|
+
) => {
|
|
689
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
690
|
+
? void 0
|
|
691
|
+
: setNew(contentSubIds);
|
|
692
|
+
const includeContentSubId = (contentSubId) =>
|
|
693
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
694
|
+
return canSelect(tableName, rowIdColumnName)
|
|
677
695
|
? objNew(
|
|
678
696
|
arrayFilter(
|
|
679
697
|
arrayMap(
|
|
@@ -682,17 +700,35 @@ const getCommandFunctions = (
|
|
|
682
700
|
escapeId(tableName) +
|
|
683
701
|
getWhereCondition(tableName, condition),
|
|
684
702
|
),
|
|
685
|
-
(row) =>
|
|
686
|
-
row[rowIdColumnName]
|
|
687
|
-
decode
|
|
703
|
+
(row) => {
|
|
704
|
+
const rowId = row[rowIdColumnName];
|
|
705
|
+
const rowContent = decode
|
|
688
706
|
? objMap(objDel(row, rowIdColumnName), decode)
|
|
689
|
-
: objDel(row, rowIdColumnName)
|
|
690
|
-
|
|
707
|
+
: objDel(row, rowIdColumnName);
|
|
708
|
+
return [
|
|
709
|
+
rowId,
|
|
710
|
+
isUndefined(contentSubIdSet)
|
|
711
|
+
? rowContent
|
|
712
|
+
: objNew(
|
|
713
|
+
arrayFilter(
|
|
714
|
+
objToArray(
|
|
715
|
+
rowContent,
|
|
716
|
+
(cellOrValue, contentSubId) => [
|
|
717
|
+
contentSubId,
|
|
718
|
+
cellOrValue,
|
|
719
|
+
],
|
|
720
|
+
),
|
|
721
|
+
([contentSubId]) => includeContentSubId(contentSubId),
|
|
722
|
+
),
|
|
723
|
+
),
|
|
724
|
+
];
|
|
725
|
+
},
|
|
691
726
|
),
|
|
692
727
|
(entry) => !isUndefined(entry[0]) && !objIsEmpty(entry[1]),
|
|
693
728
|
),
|
|
694
729
|
)
|
|
695
730
|
: {};
|
|
731
|
+
};
|
|
696
732
|
const saveTable = async (
|
|
697
733
|
tableName,
|
|
698
734
|
rowIdColumnName,
|
|
@@ -701,15 +737,23 @@ const getCommandFunctions = (
|
|
|
701
737
|
deleteEmptyTable,
|
|
702
738
|
partial = false,
|
|
703
739
|
condition = TRUE,
|
|
740
|
+
contentSubIds,
|
|
704
741
|
) => {
|
|
742
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
743
|
+
? void 0
|
|
744
|
+
: setNew(contentSubIds);
|
|
745
|
+
const includeContentSubId = (contentSubId) =>
|
|
746
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
705
747
|
const settingColumnNameSet = setNew();
|
|
706
748
|
objMap(content ?? {}, (contentRow) =>
|
|
707
|
-
arrayMap(
|
|
708
|
-
|
|
749
|
+
arrayMap(
|
|
750
|
+
arrayFilter(objIds(contentRow ?? {}), includeContentSubId),
|
|
751
|
+
(cellOrValueId) => setAdd(settingColumnNameSet, cellOrValueId),
|
|
709
752
|
),
|
|
710
753
|
);
|
|
711
754
|
const settingColumnNames = collValues(settingColumnNameSet);
|
|
712
755
|
if (
|
|
756
|
+
isUndefined(contentSubIdSet) &&
|
|
713
757
|
!partial &&
|
|
714
758
|
deleteEmptyTable &&
|
|
715
759
|
condition == TRUE &&
|
|
@@ -721,7 +765,13 @@ const getCommandFunctions = (
|
|
|
721
765
|
return;
|
|
722
766
|
}
|
|
723
767
|
const currentColumnNames = mapGet(schemaMap, tableName);
|
|
724
|
-
const unaccountedColumnNames = setNew(
|
|
768
|
+
const unaccountedColumnNames = setNew(
|
|
769
|
+
arrayFilter(
|
|
770
|
+
collValues(currentColumnNames),
|
|
771
|
+
(columnName) =>
|
|
772
|
+
columnName == rowIdColumnName || includeContentSubId(columnName),
|
|
773
|
+
),
|
|
774
|
+
);
|
|
725
775
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
726
776
|
if (!collHas(schemaMap, tableName)) {
|
|
727
777
|
await databaseExecuteCommand(
|
|
@@ -787,11 +837,13 @@ const getCommandFunctions = (
|
|
|
787
837
|
]);
|
|
788
838
|
if (partial) {
|
|
789
839
|
if (isUndefined(content)) {
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
840
|
+
if (isUndefined(contentSubIdSet)) {
|
|
841
|
+
await databaseExecuteCommand(
|
|
842
|
+
DELETE_FROM +
|
|
843
|
+
escapeId(tableName) +
|
|
844
|
+
getWhereCondition(tableName, condition),
|
|
845
|
+
);
|
|
846
|
+
}
|
|
795
847
|
} else {
|
|
796
848
|
await promiseAll(
|
|
797
849
|
objToArray(content, async (row, rowId) => {
|
|
@@ -804,18 +856,24 @@ const getCommandFunctions = (
|
|
|
804
856
|
[rowId],
|
|
805
857
|
);
|
|
806
858
|
} else if (!arrayIsEmpty(settingColumnNames)) {
|
|
807
|
-
|
|
808
|
-
databaseExecuteCommand,
|
|
809
|
-
tableName,
|
|
810
|
-
rowIdColumnName,
|
|
859
|
+
const changingColumnNames = arrayFilter(
|
|
811
860
|
objIds(row),
|
|
812
|
-
|
|
813
|
-
[rowId]: encode
|
|
814
|
-
? arrayMap(objValues(row), encode)
|
|
815
|
-
: objValues(row),
|
|
816
|
-
},
|
|
817
|
-
currentColumnNames,
|
|
861
|
+
includeContentSubId,
|
|
818
862
|
);
|
|
863
|
+
if (!arrayIsEmpty(changingColumnNames)) {
|
|
864
|
+
await upsert(
|
|
865
|
+
databaseExecuteCommand,
|
|
866
|
+
tableName,
|
|
867
|
+
rowIdColumnName,
|
|
868
|
+
changingColumnNames,
|
|
869
|
+
{
|
|
870
|
+
[rowId]: arrayMap(changingColumnNames, (cellId) =>
|
|
871
|
+
encode ? encode(row[cellId]) : row[cellId],
|
|
872
|
+
),
|
|
873
|
+
},
|
|
874
|
+
currentColumnNames,
|
|
875
|
+
);
|
|
876
|
+
}
|
|
819
877
|
}
|
|
820
878
|
}),
|
|
821
879
|
);
|
|
@@ -824,7 +882,9 @@ const getCommandFunctions = (
|
|
|
824
882
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
825
883
|
const changingColumnNames = arrayFilter(
|
|
826
884
|
collValues(mapGet(schemaMap, tableName)),
|
|
827
|
-
(changingColumnName) =>
|
|
885
|
+
(changingColumnName) =>
|
|
886
|
+
changingColumnName != rowIdColumnName &&
|
|
887
|
+
includeContentSubId(changingColumnName),
|
|
828
888
|
);
|
|
829
889
|
const rows = {};
|
|
830
890
|
const deleteRowIds = [];
|
|
@@ -840,6 +900,7 @@ const getCommandFunctions = (
|
|
|
840
900
|
rowIdColumnName,
|
|
841
901
|
changingColumnNames,
|
|
842
902
|
rows,
|
|
903
|
+
currentColumnNames,
|
|
843
904
|
);
|
|
844
905
|
await databaseExecuteCommand(
|
|
845
906
|
DELETE_FROM +
|
|
@@ -848,7 +909,10 @@ const getCommandFunctions = (
|
|
|
848
909
|
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
849
910
|
deleteRowIds,
|
|
850
911
|
);
|
|
851
|
-
} else if (
|
|
912
|
+
} else if (
|
|
913
|
+
isUndefined(contentSubIdSet) &&
|
|
914
|
+
collHas(schemaMap, tableName)
|
|
915
|
+
) {
|
|
852
916
|
await databaseExecuteCommand(
|
|
853
917
|
DELETE_FROM +
|
|
854
918
|
escapeId(tableName) +
|
|
@@ -987,7 +1051,13 @@ const createTabularPersister = (
|
|
|
987
1051
|
[
|
|
988
1052
|
tablesLoadConfig,
|
|
989
1053
|
tablesSaveConfig,
|
|
990
|
-
[
|
|
1054
|
+
[
|
|
1055
|
+
valuesLoad,
|
|
1056
|
+
valuesSave,
|
|
1057
|
+
valuesTableName,
|
|
1058
|
+
valuesLoadValueIds,
|
|
1059
|
+
valuesSaveValueIds,
|
|
1060
|
+
],
|
|
991
1061
|
],
|
|
992
1062
|
managedTableNames,
|
|
993
1063
|
querySchema,
|
|
@@ -1037,15 +1107,33 @@ const createTabularPersister = (
|
|
|
1037
1107
|
},
|
|
1038
1108
|
),
|
|
1039
1109
|
);
|
|
1110
|
+
const getValuesSubset = (values, valueIds, partial) =>
|
|
1111
|
+
objNew(
|
|
1112
|
+
partial == true
|
|
1113
|
+
? arrayFilter(
|
|
1114
|
+
objToArray(values, (value, valueId) => [valueId, value]),
|
|
1115
|
+
([valueId]) => arrayHas(valueIds, valueId),
|
|
1116
|
+
)
|
|
1117
|
+
: arrayFilter(
|
|
1118
|
+
arrayMap(valueIds, (valueId) => [valueId, values[valueId]]),
|
|
1119
|
+
([, value]) => !isUndefined(value),
|
|
1120
|
+
),
|
|
1121
|
+
);
|
|
1040
1122
|
const saveValues = async (values, partial) =>
|
|
1041
1123
|
valuesSave
|
|
1042
1124
|
? await saveTable(
|
|
1043
1125
|
valuesTableName,
|
|
1044
1126
|
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1045
|
-
{
|
|
1127
|
+
{
|
|
1128
|
+
[SINGLE_ROW_ID]: isUndefined(valuesSaveValueIds)
|
|
1129
|
+
? values
|
|
1130
|
+
: getValuesSubset(values, valuesSaveValueIds, partial),
|
|
1131
|
+
},
|
|
1046
1132
|
true,
|
|
1047
1133
|
true,
|
|
1048
1134
|
partial,
|
|
1135
|
+
void 0,
|
|
1136
|
+
valuesSaveValueIds,
|
|
1049
1137
|
)
|
|
1050
1138
|
: null;
|
|
1051
1139
|
const loadTables = async () =>
|
|
@@ -1065,9 +1153,14 @@ const createTabularPersister = (
|
|
|
1065
1153
|
);
|
|
1066
1154
|
const loadValues = async () =>
|
|
1067
1155
|
valuesLoad
|
|
1068
|
-
? (
|
|
1069
|
-
|
|
1070
|
-
|
|
1156
|
+
? (
|
|
1157
|
+
await loadTable(
|
|
1158
|
+
valuesTableName,
|
|
1159
|
+
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1160
|
+
void 0,
|
|
1161
|
+
valuesLoadValueIds,
|
|
1162
|
+
)
|
|
1163
|
+
)[SINGLE_ROW_ID]
|
|
1071
1164
|
: {};
|
|
1072
1165
|
const getPersisted = () =>
|
|
1073
1166
|
transaction(async () => {
|
|
@@ -311,13 +311,14 @@ const createCustomPersister = (
|
|
|
311
311
|
const content = await getPersisted();
|
|
312
312
|
if (isArray(content)) {
|
|
313
313
|
setContentOrChanges(content);
|
|
314
|
-
} else if (initialContent) {
|
|
314
|
+
} else if (isUndefined(content) && initialContent) {
|
|
315
315
|
setDefaultContent(initialContent);
|
|
316
|
-
} else {
|
|
316
|
+
} else if (!isUndefined(content)) {
|
|
317
317
|
errorNew(`Content is not an array: ${content}`);
|
|
318
318
|
}
|
|
319
319
|
},
|
|
320
|
-
() => {
|
|
320
|
+
(error) => {
|
|
321
|
+
onIgnoredError?.(error);
|
|
321
322
|
if (initialContent) {
|
|
322
323
|
setDefaultContent(initialContent);
|
|
323
324
|
}
|
|
@@ -311,13 +311,14 @@ const createCustomPersister = (
|
|
|
311
311
|
const content = await getPersisted();
|
|
312
312
|
if (isArray(content)) {
|
|
313
313
|
setContentOrChanges(content);
|
|
314
|
-
} else if (initialContent) {
|
|
314
|
+
} else if (isUndefined(content) && initialContent) {
|
|
315
315
|
setDefaultContent(initialContent);
|
|
316
|
-
} else {
|
|
316
|
+
} else if (!isUndefined(content)) {
|
|
317
317
|
errorNew(`Content is not an array: ${content}`);
|
|
318
318
|
}
|
|
319
319
|
},
|
|
320
|
-
() => {
|
|
320
|
+
(error) => {
|
|
321
|
+
onIgnoredError?.(error);
|
|
321
322
|
if (initialContent) {
|
|
322
323
|
setDefaultContent(initialContent);
|
|
323
324
|
}
|
|
@@ -301,13 +301,14 @@ const createCustomPersister = (
|
|
|
301
301
|
const content = await getPersisted();
|
|
302
302
|
if (isArray(content)) {
|
|
303
303
|
setContentOrChanges(content);
|
|
304
|
-
} else if (initialContent) {
|
|
304
|
+
} else if (isUndefined(content) && initialContent) {
|
|
305
305
|
setDefaultContent(initialContent);
|
|
306
|
-
} else {
|
|
306
|
+
} else if (!isUndefined(content)) {
|
|
307
307
|
errorNew(`Content is not an array: ${content}`);
|
|
308
308
|
}
|
|
309
309
|
},
|
|
310
|
-
() => {
|
|
310
|
+
(error) => {
|
|
311
|
+
onIgnoredError?.(error);
|
|
311
312
|
if (initialContent) {
|
|
312
313
|
setDefaultContent(initialContent);
|
|
313
314
|
}
|
|
@@ -301,13 +301,14 @@ const createCustomPersister = (
|
|
|
301
301
|
const content = await getPersisted();
|
|
302
302
|
if (isArray(content)) {
|
|
303
303
|
setContentOrChanges(content);
|
|
304
|
-
} else if (initialContent) {
|
|
304
|
+
} else if (isUndefined(content) && initialContent) {
|
|
305
305
|
setDefaultContent(initialContent);
|
|
306
|
-
} else {
|
|
306
|
+
} else if (!isUndefined(content)) {
|
|
307
307
|
errorNew(`Content is not an array: ${content}`);
|
|
308
308
|
}
|
|
309
309
|
},
|
|
310
|
-
() => {
|
|
310
|
+
(error) => {
|
|
311
|
+
onIgnoredError?.(error);
|
|
311
312
|
if (initialContent) {
|
|
312
313
|
setDefaultContent(initialContent);
|
|
313
314
|
}
|