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
|
@@ -49,6 +49,7 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
+
const arrayHas = (array, value) => array.includes(value);
|
|
52
53
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
53
54
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
54
55
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -208,6 +209,8 @@ const DEFAULT_TABULAR_VALUES_CONFIG = {
|
|
|
208
209
|
save: 0,
|
|
209
210
|
[TABLE_NAME]: TINYBASE + '_values',
|
|
210
211
|
};
|
|
212
|
+
const getValuesIn = (config) => (isArray(config) ? config : void 0);
|
|
213
|
+
const hasValues = (config) => isTrue(config) || isArray(config);
|
|
211
214
|
const getDefaultedConfig = (configOrStoreTableName) =>
|
|
212
215
|
objMerge(
|
|
213
216
|
DEFAULT_CONFIG,
|
|
@@ -258,11 +261,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
258
261
|
];
|
|
259
262
|
}
|
|
260
263
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
const valuesConfigObj = objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values);
|
|
265
|
+
const {load: valuesLoad, save: valuesSave} = valuesConfigObj;
|
|
266
|
+
const valuesConfig = [
|
|
267
|
+
hasValues(valuesLoad),
|
|
268
|
+
hasValues(valuesSave),
|
|
269
|
+
valuesConfigObj[TABLE_NAME],
|
|
270
|
+
getValuesIn(valuesLoad),
|
|
271
|
+
getValuesIn(valuesSave),
|
|
272
|
+
];
|
|
266
273
|
const valuesTable = valuesConfig[2];
|
|
267
274
|
const managedTableNames = setNew(valuesTable);
|
|
268
275
|
const excludedTableNames = setNew(valuesTable);
|
|
@@ -506,13 +513,14 @@ const createCustomPersister = (
|
|
|
506
513
|
const content = await getPersisted();
|
|
507
514
|
if (isArray(content)) {
|
|
508
515
|
setContentOrChanges(content);
|
|
509
|
-
} else if (initialContent) {
|
|
516
|
+
} else if (isUndefined(content) && initialContent) {
|
|
510
517
|
setDefaultContent(initialContent);
|
|
511
|
-
} else {
|
|
518
|
+
} else if (!isUndefined(content)) {
|
|
512
519
|
errorNew(`Content is not an array: ${content}`);
|
|
513
520
|
}
|
|
514
521
|
},
|
|
515
|
-
() => {
|
|
522
|
+
(error) => {
|
|
523
|
+
onIgnoredError?.(error);
|
|
516
524
|
if (initialContent) {
|
|
517
525
|
setDefaultContent(initialContent);
|
|
518
526
|
}
|
|
@@ -671,8 +679,18 @@ const getCommandFunctions = (
|
|
|
671
679
|
({tn, cn}) => setAdd(mapEnsure(schemaMap, tn, setNew), cn),
|
|
672
680
|
);
|
|
673
681
|
};
|
|
674
|
-
const loadTable = async (
|
|
675
|
-
|
|
682
|
+
const loadTable = async (
|
|
683
|
+
tableName,
|
|
684
|
+
rowIdColumnName,
|
|
685
|
+
condition,
|
|
686
|
+
contentSubIds,
|
|
687
|
+
) => {
|
|
688
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
689
|
+
? void 0
|
|
690
|
+
: setNew(contentSubIds);
|
|
691
|
+
const includeContentSubId = (contentSubId) =>
|
|
692
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
693
|
+
return canSelect(tableName, rowIdColumnName)
|
|
676
694
|
? objNew(
|
|
677
695
|
arrayFilter(
|
|
678
696
|
arrayMap(
|
|
@@ -681,17 +699,35 @@ const getCommandFunctions = (
|
|
|
681
699
|
escapeId(tableName) +
|
|
682
700
|
getWhereCondition(tableName, condition),
|
|
683
701
|
),
|
|
684
|
-
(row) =>
|
|
685
|
-
row[rowIdColumnName]
|
|
686
|
-
decode
|
|
702
|
+
(row) => {
|
|
703
|
+
const rowId = row[rowIdColumnName];
|
|
704
|
+
const rowContent = decode
|
|
687
705
|
? objMap(objDel(row, rowIdColumnName), decode)
|
|
688
|
-
: objDel(row, rowIdColumnName)
|
|
689
|
-
|
|
706
|
+
: objDel(row, rowIdColumnName);
|
|
707
|
+
return [
|
|
708
|
+
rowId,
|
|
709
|
+
isUndefined(contentSubIdSet)
|
|
710
|
+
? rowContent
|
|
711
|
+
: objNew(
|
|
712
|
+
arrayFilter(
|
|
713
|
+
objToArray(
|
|
714
|
+
rowContent,
|
|
715
|
+
(cellOrValue, contentSubId) => [
|
|
716
|
+
contentSubId,
|
|
717
|
+
cellOrValue,
|
|
718
|
+
],
|
|
719
|
+
),
|
|
720
|
+
([contentSubId]) => includeContentSubId(contentSubId),
|
|
721
|
+
),
|
|
722
|
+
),
|
|
723
|
+
];
|
|
724
|
+
},
|
|
690
725
|
),
|
|
691
726
|
(entry) => !isUndefined(entry[0]) && !objIsEmpty(entry[1]),
|
|
692
727
|
),
|
|
693
728
|
)
|
|
694
729
|
: {};
|
|
730
|
+
};
|
|
695
731
|
const saveTable = async (
|
|
696
732
|
tableName,
|
|
697
733
|
rowIdColumnName,
|
|
@@ -700,15 +736,23 @@ const getCommandFunctions = (
|
|
|
700
736
|
deleteEmptyTable,
|
|
701
737
|
partial = false,
|
|
702
738
|
condition = TRUE,
|
|
739
|
+
contentSubIds,
|
|
703
740
|
) => {
|
|
741
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
742
|
+
? void 0
|
|
743
|
+
: setNew(contentSubIds);
|
|
744
|
+
const includeContentSubId = (contentSubId) =>
|
|
745
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
704
746
|
const settingColumnNameSet = setNew();
|
|
705
747
|
objMap(content ?? {}, (contentRow) =>
|
|
706
|
-
arrayMap(
|
|
707
|
-
|
|
748
|
+
arrayMap(
|
|
749
|
+
arrayFilter(objIds(contentRow ?? {}), includeContentSubId),
|
|
750
|
+
(cellOrValueId) => setAdd(settingColumnNameSet, cellOrValueId),
|
|
708
751
|
),
|
|
709
752
|
);
|
|
710
753
|
const settingColumnNames = collValues(settingColumnNameSet);
|
|
711
754
|
if (
|
|
755
|
+
isUndefined(contentSubIdSet) &&
|
|
712
756
|
!partial &&
|
|
713
757
|
deleteEmptyTable &&
|
|
714
758
|
condition == TRUE &&
|
|
@@ -720,7 +764,13 @@ const getCommandFunctions = (
|
|
|
720
764
|
return;
|
|
721
765
|
}
|
|
722
766
|
const currentColumnNames = mapGet(schemaMap, tableName);
|
|
723
|
-
const unaccountedColumnNames = setNew(
|
|
767
|
+
const unaccountedColumnNames = setNew(
|
|
768
|
+
arrayFilter(
|
|
769
|
+
collValues(currentColumnNames),
|
|
770
|
+
(columnName) =>
|
|
771
|
+
columnName == rowIdColumnName || includeContentSubId(columnName),
|
|
772
|
+
),
|
|
773
|
+
);
|
|
724
774
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
725
775
|
if (!collHas(schemaMap, tableName)) {
|
|
726
776
|
await databaseExecuteCommand(
|
|
@@ -786,11 +836,13 @@ const getCommandFunctions = (
|
|
|
786
836
|
]);
|
|
787
837
|
if (partial) {
|
|
788
838
|
if (isUndefined(content)) {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
839
|
+
if (isUndefined(contentSubIdSet)) {
|
|
840
|
+
await databaseExecuteCommand(
|
|
841
|
+
DELETE_FROM +
|
|
842
|
+
escapeId(tableName) +
|
|
843
|
+
getWhereCondition(tableName, condition),
|
|
844
|
+
);
|
|
845
|
+
}
|
|
794
846
|
} else {
|
|
795
847
|
await promiseAll(
|
|
796
848
|
objToArray(content, async (row, rowId) => {
|
|
@@ -803,18 +855,24 @@ const getCommandFunctions = (
|
|
|
803
855
|
[rowId],
|
|
804
856
|
);
|
|
805
857
|
} else if (!arrayIsEmpty(settingColumnNames)) {
|
|
806
|
-
|
|
807
|
-
databaseExecuteCommand,
|
|
808
|
-
tableName,
|
|
809
|
-
rowIdColumnName,
|
|
858
|
+
const changingColumnNames = arrayFilter(
|
|
810
859
|
objIds(row),
|
|
811
|
-
|
|
812
|
-
[rowId]: encode
|
|
813
|
-
? arrayMap(objValues(row), encode)
|
|
814
|
-
: objValues(row),
|
|
815
|
-
},
|
|
816
|
-
currentColumnNames,
|
|
860
|
+
includeContentSubId,
|
|
817
861
|
);
|
|
862
|
+
if (!arrayIsEmpty(changingColumnNames)) {
|
|
863
|
+
await upsert(
|
|
864
|
+
databaseExecuteCommand,
|
|
865
|
+
tableName,
|
|
866
|
+
rowIdColumnName,
|
|
867
|
+
changingColumnNames,
|
|
868
|
+
{
|
|
869
|
+
[rowId]: arrayMap(changingColumnNames, (cellId) =>
|
|
870
|
+
encode ? encode(row[cellId]) : row[cellId],
|
|
871
|
+
),
|
|
872
|
+
},
|
|
873
|
+
currentColumnNames,
|
|
874
|
+
);
|
|
875
|
+
}
|
|
818
876
|
}
|
|
819
877
|
}),
|
|
820
878
|
);
|
|
@@ -823,7 +881,9 @@ const getCommandFunctions = (
|
|
|
823
881
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
824
882
|
const changingColumnNames = arrayFilter(
|
|
825
883
|
collValues(mapGet(schemaMap, tableName)),
|
|
826
|
-
(changingColumnName) =>
|
|
884
|
+
(changingColumnName) =>
|
|
885
|
+
changingColumnName != rowIdColumnName &&
|
|
886
|
+
includeContentSubId(changingColumnName),
|
|
827
887
|
);
|
|
828
888
|
const rows = {};
|
|
829
889
|
const deleteRowIds = [];
|
|
@@ -839,6 +899,7 @@ const getCommandFunctions = (
|
|
|
839
899
|
rowIdColumnName,
|
|
840
900
|
changingColumnNames,
|
|
841
901
|
rows,
|
|
902
|
+
currentColumnNames,
|
|
842
903
|
);
|
|
843
904
|
await databaseExecuteCommand(
|
|
844
905
|
DELETE_FROM +
|
|
@@ -847,7 +908,10 @@ const getCommandFunctions = (
|
|
|
847
908
|
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
848
909
|
deleteRowIds,
|
|
849
910
|
);
|
|
850
|
-
} else if (
|
|
911
|
+
} else if (
|
|
912
|
+
isUndefined(contentSubIdSet) &&
|
|
913
|
+
collHas(schemaMap, tableName)
|
|
914
|
+
) {
|
|
851
915
|
await databaseExecuteCommand(
|
|
852
916
|
DELETE_FROM +
|
|
853
917
|
escapeId(tableName) +
|
|
@@ -986,7 +1050,13 @@ const createTabularPersister = (
|
|
|
986
1050
|
[
|
|
987
1051
|
tablesLoadConfig,
|
|
988
1052
|
tablesSaveConfig,
|
|
989
|
-
[
|
|
1053
|
+
[
|
|
1054
|
+
valuesLoad,
|
|
1055
|
+
valuesSave,
|
|
1056
|
+
valuesTableName,
|
|
1057
|
+
valuesLoadValueIds,
|
|
1058
|
+
valuesSaveValueIds,
|
|
1059
|
+
],
|
|
990
1060
|
],
|
|
991
1061
|
managedTableNames,
|
|
992
1062
|
querySchema,
|
|
@@ -1036,15 +1106,33 @@ const createTabularPersister = (
|
|
|
1036
1106
|
},
|
|
1037
1107
|
),
|
|
1038
1108
|
);
|
|
1109
|
+
const getValuesSubset = (values, valueIds, partial) =>
|
|
1110
|
+
objNew(
|
|
1111
|
+
partial == true
|
|
1112
|
+
? arrayFilter(
|
|
1113
|
+
objToArray(values, (value, valueId) => [valueId, value]),
|
|
1114
|
+
([valueId]) => arrayHas(valueIds, valueId),
|
|
1115
|
+
)
|
|
1116
|
+
: arrayFilter(
|
|
1117
|
+
arrayMap(valueIds, (valueId) => [valueId, values[valueId]]),
|
|
1118
|
+
([, value]) => !isUndefined(value),
|
|
1119
|
+
),
|
|
1120
|
+
);
|
|
1039
1121
|
const saveValues = async (values, partial) =>
|
|
1040
1122
|
valuesSave
|
|
1041
1123
|
? await saveTable(
|
|
1042
1124
|
valuesTableName,
|
|
1043
1125
|
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1044
|
-
{
|
|
1126
|
+
{
|
|
1127
|
+
[SINGLE_ROW_ID]: isUndefined(valuesSaveValueIds)
|
|
1128
|
+
? values
|
|
1129
|
+
: getValuesSubset(values, valuesSaveValueIds, partial),
|
|
1130
|
+
},
|
|
1045
1131
|
true,
|
|
1046
1132
|
true,
|
|
1047
1133
|
partial,
|
|
1134
|
+
void 0,
|
|
1135
|
+
valuesSaveValueIds,
|
|
1048
1136
|
)
|
|
1049
1137
|
: null;
|
|
1050
1138
|
const loadTables = async () =>
|
|
@@ -1064,9 +1152,14 @@ const createTabularPersister = (
|
|
|
1064
1152
|
);
|
|
1065
1153
|
const loadValues = async () =>
|
|
1066
1154
|
valuesLoad
|
|
1067
|
-
? (
|
|
1068
|
-
|
|
1069
|
-
|
|
1155
|
+
? (
|
|
1156
|
+
await loadTable(
|
|
1157
|
+
valuesTableName,
|
|
1158
|
+
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1159
|
+
void 0,
|
|
1160
|
+
valuesLoadValueIds,
|
|
1161
|
+
)
|
|
1162
|
+
)[SINGLE_ROW_ID]
|
|
1070
1163
|
: {};
|
|
1071
1164
|
const getPersisted = () =>
|
|
1072
1165
|
transaction(async () => {
|
|
@@ -49,6 +49,7 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
+
const arrayHas = (array, value) => array.includes(value);
|
|
52
53
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
53
54
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
54
55
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -208,6 +209,8 @@ const DEFAULT_TABULAR_VALUES_CONFIG = {
|
|
|
208
209
|
save: 0,
|
|
209
210
|
[TABLE_NAME]: TINYBASE + '_values',
|
|
210
211
|
};
|
|
212
|
+
const getValuesIn = (config) => (isArray(config) ? config : void 0);
|
|
213
|
+
const hasValues = (config) => isTrue(config) || isArray(config);
|
|
211
214
|
const getDefaultedConfig = (configOrStoreTableName) =>
|
|
212
215
|
objMerge(
|
|
213
216
|
DEFAULT_CONFIG,
|
|
@@ -258,11 +261,15 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
258
261
|
];
|
|
259
262
|
}
|
|
260
263
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
const valuesConfigObj = objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values);
|
|
265
|
+
const {load: valuesLoad, save: valuesSave} = valuesConfigObj;
|
|
266
|
+
const valuesConfig = [
|
|
267
|
+
hasValues(valuesLoad),
|
|
268
|
+
hasValues(valuesSave),
|
|
269
|
+
valuesConfigObj[TABLE_NAME],
|
|
270
|
+
getValuesIn(valuesLoad),
|
|
271
|
+
getValuesIn(valuesSave),
|
|
272
|
+
];
|
|
266
273
|
const valuesTable = valuesConfig[2];
|
|
267
274
|
const managedTableNames = setNew(valuesTable);
|
|
268
275
|
const excludedTableNames = setNew(valuesTable);
|
|
@@ -506,13 +513,14 @@ const createCustomPersister = (
|
|
|
506
513
|
const content = await getPersisted();
|
|
507
514
|
if (isArray(content)) {
|
|
508
515
|
setContentOrChanges(content);
|
|
509
|
-
} else if (initialContent) {
|
|
516
|
+
} else if (isUndefined(content) && initialContent) {
|
|
510
517
|
setDefaultContent(initialContent);
|
|
511
|
-
} else {
|
|
518
|
+
} else if (!isUndefined(content)) {
|
|
512
519
|
errorNew(`Content is not an array: ${content}`);
|
|
513
520
|
}
|
|
514
521
|
},
|
|
515
|
-
() => {
|
|
522
|
+
(error) => {
|
|
523
|
+
onIgnoredError?.(error);
|
|
516
524
|
if (initialContent) {
|
|
517
525
|
setDefaultContent(initialContent);
|
|
518
526
|
}
|
|
@@ -671,8 +679,18 @@ const getCommandFunctions = (
|
|
|
671
679
|
({tn, cn}) => setAdd(mapEnsure(schemaMap, tn, setNew), cn),
|
|
672
680
|
);
|
|
673
681
|
};
|
|
674
|
-
const loadTable = async (
|
|
675
|
-
|
|
682
|
+
const loadTable = async (
|
|
683
|
+
tableName,
|
|
684
|
+
rowIdColumnName,
|
|
685
|
+
condition,
|
|
686
|
+
contentSubIds,
|
|
687
|
+
) => {
|
|
688
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
689
|
+
? void 0
|
|
690
|
+
: setNew(contentSubIds);
|
|
691
|
+
const includeContentSubId = (contentSubId) =>
|
|
692
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
693
|
+
return canSelect(tableName, rowIdColumnName)
|
|
676
694
|
? objNew(
|
|
677
695
|
arrayFilter(
|
|
678
696
|
arrayMap(
|
|
@@ -681,17 +699,35 @@ const getCommandFunctions = (
|
|
|
681
699
|
escapeId(tableName) +
|
|
682
700
|
getWhereCondition(tableName, condition),
|
|
683
701
|
),
|
|
684
|
-
(row) =>
|
|
685
|
-
row[rowIdColumnName]
|
|
686
|
-
decode
|
|
702
|
+
(row) => {
|
|
703
|
+
const rowId = row[rowIdColumnName];
|
|
704
|
+
const rowContent = decode
|
|
687
705
|
? objMap(objDel(row, rowIdColumnName), decode)
|
|
688
|
-
: objDel(row, rowIdColumnName)
|
|
689
|
-
|
|
706
|
+
: objDel(row, rowIdColumnName);
|
|
707
|
+
return [
|
|
708
|
+
rowId,
|
|
709
|
+
isUndefined(contentSubIdSet)
|
|
710
|
+
? rowContent
|
|
711
|
+
: objNew(
|
|
712
|
+
arrayFilter(
|
|
713
|
+
objToArray(
|
|
714
|
+
rowContent,
|
|
715
|
+
(cellOrValue, contentSubId) => [
|
|
716
|
+
contentSubId,
|
|
717
|
+
cellOrValue,
|
|
718
|
+
],
|
|
719
|
+
),
|
|
720
|
+
([contentSubId]) => includeContentSubId(contentSubId),
|
|
721
|
+
),
|
|
722
|
+
),
|
|
723
|
+
];
|
|
724
|
+
},
|
|
690
725
|
),
|
|
691
726
|
(entry) => !isUndefined(entry[0]) && !objIsEmpty(entry[1]),
|
|
692
727
|
),
|
|
693
728
|
)
|
|
694
729
|
: {};
|
|
730
|
+
};
|
|
695
731
|
const saveTable = async (
|
|
696
732
|
tableName,
|
|
697
733
|
rowIdColumnName,
|
|
@@ -700,15 +736,23 @@ const getCommandFunctions = (
|
|
|
700
736
|
deleteEmptyTable,
|
|
701
737
|
partial = false,
|
|
702
738
|
condition = TRUE,
|
|
739
|
+
contentSubIds,
|
|
703
740
|
) => {
|
|
741
|
+
const contentSubIdSet = isUndefined(contentSubIds)
|
|
742
|
+
? void 0
|
|
743
|
+
: setNew(contentSubIds);
|
|
744
|
+
const includeContentSubId = (contentSubId) =>
|
|
745
|
+
isUndefined(contentSubIdSet) || collHas(contentSubIdSet, contentSubId);
|
|
704
746
|
const settingColumnNameSet = setNew();
|
|
705
747
|
objMap(content ?? {}, (contentRow) =>
|
|
706
|
-
arrayMap(
|
|
707
|
-
|
|
748
|
+
arrayMap(
|
|
749
|
+
arrayFilter(objIds(contentRow ?? {}), includeContentSubId),
|
|
750
|
+
(cellOrValueId) => setAdd(settingColumnNameSet, cellOrValueId),
|
|
708
751
|
),
|
|
709
752
|
);
|
|
710
753
|
const settingColumnNames = collValues(settingColumnNameSet);
|
|
711
754
|
if (
|
|
755
|
+
isUndefined(contentSubIdSet) &&
|
|
712
756
|
!partial &&
|
|
713
757
|
deleteEmptyTable &&
|
|
714
758
|
condition == TRUE &&
|
|
@@ -720,7 +764,13 @@ const getCommandFunctions = (
|
|
|
720
764
|
return;
|
|
721
765
|
}
|
|
722
766
|
const currentColumnNames = mapGet(schemaMap, tableName);
|
|
723
|
-
const unaccountedColumnNames = setNew(
|
|
767
|
+
const unaccountedColumnNames = setNew(
|
|
768
|
+
arrayFilter(
|
|
769
|
+
collValues(currentColumnNames),
|
|
770
|
+
(columnName) =>
|
|
771
|
+
columnName == rowIdColumnName || includeContentSubId(columnName),
|
|
772
|
+
),
|
|
773
|
+
);
|
|
724
774
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
725
775
|
if (!collHas(schemaMap, tableName)) {
|
|
726
776
|
await databaseExecuteCommand(
|
|
@@ -786,11 +836,13 @@ const getCommandFunctions = (
|
|
|
786
836
|
]);
|
|
787
837
|
if (partial) {
|
|
788
838
|
if (isUndefined(content)) {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
839
|
+
if (isUndefined(contentSubIdSet)) {
|
|
840
|
+
await databaseExecuteCommand(
|
|
841
|
+
DELETE_FROM +
|
|
842
|
+
escapeId(tableName) +
|
|
843
|
+
getWhereCondition(tableName, condition),
|
|
844
|
+
);
|
|
845
|
+
}
|
|
794
846
|
} else {
|
|
795
847
|
await promiseAll(
|
|
796
848
|
objToArray(content, async (row, rowId) => {
|
|
@@ -803,18 +855,24 @@ const getCommandFunctions = (
|
|
|
803
855
|
[rowId],
|
|
804
856
|
);
|
|
805
857
|
} else if (!arrayIsEmpty(settingColumnNames)) {
|
|
806
|
-
|
|
807
|
-
databaseExecuteCommand,
|
|
808
|
-
tableName,
|
|
809
|
-
rowIdColumnName,
|
|
858
|
+
const changingColumnNames = arrayFilter(
|
|
810
859
|
objIds(row),
|
|
811
|
-
|
|
812
|
-
[rowId]: encode
|
|
813
|
-
? arrayMap(objValues(row), encode)
|
|
814
|
-
: objValues(row),
|
|
815
|
-
},
|
|
816
|
-
currentColumnNames,
|
|
860
|
+
includeContentSubId,
|
|
817
861
|
);
|
|
862
|
+
if (!arrayIsEmpty(changingColumnNames)) {
|
|
863
|
+
await upsert(
|
|
864
|
+
databaseExecuteCommand,
|
|
865
|
+
tableName,
|
|
866
|
+
rowIdColumnName,
|
|
867
|
+
changingColumnNames,
|
|
868
|
+
{
|
|
869
|
+
[rowId]: arrayMap(changingColumnNames, (cellId) =>
|
|
870
|
+
encode ? encode(row[cellId]) : row[cellId],
|
|
871
|
+
),
|
|
872
|
+
},
|
|
873
|
+
currentColumnNames,
|
|
874
|
+
);
|
|
875
|
+
}
|
|
818
876
|
}
|
|
819
877
|
}),
|
|
820
878
|
);
|
|
@@ -823,7 +881,9 @@ const getCommandFunctions = (
|
|
|
823
881
|
if (!arrayIsEmpty(settingColumnNames)) {
|
|
824
882
|
const changingColumnNames = arrayFilter(
|
|
825
883
|
collValues(mapGet(schemaMap, tableName)),
|
|
826
|
-
(changingColumnName) =>
|
|
884
|
+
(changingColumnName) =>
|
|
885
|
+
changingColumnName != rowIdColumnName &&
|
|
886
|
+
includeContentSubId(changingColumnName),
|
|
827
887
|
);
|
|
828
888
|
const rows = {};
|
|
829
889
|
const deleteRowIds = [];
|
|
@@ -839,6 +899,7 @@ const getCommandFunctions = (
|
|
|
839
899
|
rowIdColumnName,
|
|
840
900
|
changingColumnNames,
|
|
841
901
|
rows,
|
|
902
|
+
currentColumnNames,
|
|
842
903
|
);
|
|
843
904
|
await databaseExecuteCommand(
|
|
844
905
|
DELETE_FROM +
|
|
@@ -847,7 +908,10 @@ const getCommandFunctions = (
|
|
|
847
908
|
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
848
909
|
deleteRowIds,
|
|
849
910
|
);
|
|
850
|
-
} else if (
|
|
911
|
+
} else if (
|
|
912
|
+
isUndefined(contentSubIdSet) &&
|
|
913
|
+
collHas(schemaMap, tableName)
|
|
914
|
+
) {
|
|
851
915
|
await databaseExecuteCommand(
|
|
852
916
|
DELETE_FROM +
|
|
853
917
|
escapeId(tableName) +
|
|
@@ -986,7 +1050,13 @@ const createTabularPersister = (
|
|
|
986
1050
|
[
|
|
987
1051
|
tablesLoadConfig,
|
|
988
1052
|
tablesSaveConfig,
|
|
989
|
-
[
|
|
1053
|
+
[
|
|
1054
|
+
valuesLoad,
|
|
1055
|
+
valuesSave,
|
|
1056
|
+
valuesTableName,
|
|
1057
|
+
valuesLoadValueIds,
|
|
1058
|
+
valuesSaveValueIds,
|
|
1059
|
+
],
|
|
990
1060
|
],
|
|
991
1061
|
managedTableNames,
|
|
992
1062
|
querySchema,
|
|
@@ -1036,15 +1106,33 @@ const createTabularPersister = (
|
|
|
1036
1106
|
},
|
|
1037
1107
|
),
|
|
1038
1108
|
);
|
|
1109
|
+
const getValuesSubset = (values, valueIds, partial) =>
|
|
1110
|
+
objNew(
|
|
1111
|
+
partial == true
|
|
1112
|
+
? arrayFilter(
|
|
1113
|
+
objToArray(values, (value, valueId) => [valueId, value]),
|
|
1114
|
+
([valueId]) => arrayHas(valueIds, valueId),
|
|
1115
|
+
)
|
|
1116
|
+
: arrayFilter(
|
|
1117
|
+
arrayMap(valueIds, (valueId) => [valueId, values[valueId]]),
|
|
1118
|
+
([, value]) => !isUndefined(value),
|
|
1119
|
+
),
|
|
1120
|
+
);
|
|
1039
1121
|
const saveValues = async (values, partial) =>
|
|
1040
1122
|
valuesSave
|
|
1041
1123
|
? await saveTable(
|
|
1042
1124
|
valuesTableName,
|
|
1043
1125
|
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1044
|
-
{
|
|
1126
|
+
{
|
|
1127
|
+
[SINGLE_ROW_ID]: isUndefined(valuesSaveValueIds)
|
|
1128
|
+
? values
|
|
1129
|
+
: getValuesSubset(values, valuesSaveValueIds, partial),
|
|
1130
|
+
},
|
|
1045
1131
|
true,
|
|
1046
1132
|
true,
|
|
1047
1133
|
partial,
|
|
1134
|
+
void 0,
|
|
1135
|
+
valuesSaveValueIds,
|
|
1048
1136
|
)
|
|
1049
1137
|
: null;
|
|
1050
1138
|
const loadTables = async () =>
|
|
@@ -1064,9 +1152,14 @@ const createTabularPersister = (
|
|
|
1064
1152
|
);
|
|
1065
1153
|
const loadValues = async () =>
|
|
1066
1154
|
valuesLoad
|
|
1067
|
-
? (
|
|
1068
|
-
|
|
1069
|
-
|
|
1155
|
+
? (
|
|
1156
|
+
await loadTable(
|
|
1157
|
+
valuesTableName,
|
|
1158
|
+
DEFAULT_ROW_ID_COLUMN_NAME,
|
|
1159
|
+
void 0,
|
|
1160
|
+
valuesLoadValueIds,
|
|
1161
|
+
)
|
|
1162
|
+
)[SINGLE_ROW_ID]
|
|
1070
1163
|
: {};
|
|
1071
1164
|
const getPersisted = () =>
|
|
1072
1165
|
transaction(async () => {
|
|
@@ -305,13 +305,14 @@ const createCustomPersister = (
|
|
|
305
305
|
const content = await getPersisted();
|
|
306
306
|
if (isArray(content)) {
|
|
307
307
|
setContentOrChanges(content);
|
|
308
|
-
} else if (initialContent) {
|
|
308
|
+
} else if (isUndefined(content) && initialContent) {
|
|
309
309
|
setDefaultContent(initialContent);
|
|
310
|
-
} else {
|
|
310
|
+
} else if (!isUndefined(content)) {
|
|
311
311
|
errorNew(`Content is not an array: ${content}`);
|
|
312
312
|
}
|
|
313
313
|
},
|
|
314
|
-
() => {
|
|
314
|
+
(error) => {
|
|
315
|
+
onIgnoredError?.(error);
|
|
315
316
|
if (initialContent) {
|
|
316
317
|
setDefaultContent(initialContent);
|
|
317
318
|
}
|
|
@@ -305,13 +305,14 @@ const createCustomPersister = (
|
|
|
305
305
|
const content = await getPersisted();
|
|
306
306
|
if (isArray(content)) {
|
|
307
307
|
setContentOrChanges(content);
|
|
308
|
-
} else if (initialContent) {
|
|
308
|
+
} else if (isUndefined(content) && initialContent) {
|
|
309
309
|
setDefaultContent(initialContent);
|
|
310
|
-
} else {
|
|
310
|
+
} else if (!isUndefined(content)) {
|
|
311
311
|
errorNew(`Content is not an array: ${content}`);
|
|
312
312
|
}
|
|
313
313
|
},
|
|
314
|
-
() => {
|
|
314
|
+
(error) => {
|
|
315
|
+
onIgnoredError?.(error);
|
|
315
316
|
if (initialContent) {
|
|
316
317
|
setDefaultContent(initialContent);
|
|
317
318
|
}
|