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