tinybase 8.0.0-beta.0 → 8.0.0-beta.2
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/index.d.ts +1 -0
- package/@types/mergeable-store/with-schemas/index.d.ts +1 -1
- package/@types/middleware/index.d.ts +1181 -0
- package/@types/middleware/with-schemas/index.d.ts +1495 -0
- package/@types/omni/index.d.ts +1 -0
- package/@types/omni/with-schemas/index.d.ts +1 -0
- package/@types/store/index.d.ts +0 -1
- package/@types/with-schemas/index.d.ts +1 -0
- package/agents.md +33 -11
- package/checkpoints/index.js +20 -20
- package/checkpoints/with-schemas/index.js +20 -20
- package/common/index.js +3 -2
- package/common/with-schemas/index.js +3 -2
- package/index.js +632 -215
- package/indexes/index.js +13 -12
- package/indexes/with-schemas/index.js +13 -12
- package/mergeable-store/index.js +498 -197
- package/mergeable-store/with-schemas/index.js +498 -197
- package/metrics/index.js +13 -12
- package/metrics/with-schemas/index.js +13 -12
- package/middleware/index.js +169 -0
- package/middleware/with-schemas/index.js +169 -0
- package/min/checkpoints/index.js +1 -1
- package/min/checkpoints/index.js.gz +0 -0
- package/min/checkpoints/with-schemas/index.js +1 -1
- package/min/checkpoints/with-schemas/index.js.gz +0 -0
- package/min/common/index.js +1 -1
- package/min/common/index.js.gz +0 -0
- package/min/common/with-schemas/index.js +1 -1
- package/min/common/with-schemas/index.js.gz +0 -0
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/indexes/index.js +1 -1
- package/min/indexes/index.js.gz +0 -0
- package/min/indexes/with-schemas/index.js +1 -1
- package/min/indexes/with-schemas/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/metrics/index.js +1 -1
- package/min/metrics/index.js.gz +0 -0
- package/min/metrics/with-schemas/index.js +1 -1
- package/min/metrics/with-schemas/index.js.gz +0 -0
- package/min/middleware/index.js +1 -0
- package/min/middleware/index.js.gz +0 -0
- package/min/middleware/with-schemas/index.js +1 -0
- package/min/middleware/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-partykit-server/index.js +1 -1
- package/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-server/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/relationships/index.js +1 -1
- package/min/relationships/index.js.gz +0 -0
- package/min/relationships/with-schemas/index.js +1 -1
- package/min/relationships/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/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/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/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/omni/index.js +667 -232
- package/omni/with-schemas/index.js +667 -232
- package/package.json +55 -19
- package/persisters/index.js +29 -12
- package/persisters/persister-automerge/index.js +17 -9
- package/persisters/persister-automerge/with-schemas/index.js +17 -9
- package/persisters/persister-browser/index.js +34 -10
- package/persisters/persister-browser/with-schemas/index.js +34 -10
- package/persisters/persister-cr-sqlite-wasm/index.js +29 -12
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -12
- package/persisters/persister-durable-object-sql-storage/index.js +29 -12
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +29 -12
- package/persisters/persister-durable-object-storage/index.js +24 -17
- package/persisters/persister-durable-object-storage/with-schemas/index.js +24 -17
- package/persisters/persister-electric-sql/index.js +29 -12
- package/persisters/persister-electric-sql/with-schemas/index.js +29 -12
- package/persisters/persister-expo-sqlite/index.js +29 -12
- package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -12
- package/persisters/persister-file/index.js +34 -10
- package/persisters/persister-file/with-schemas/index.js +34 -10
- package/persisters/persister-indexed-db/index.js +17 -9
- package/persisters/persister-indexed-db/with-schemas/index.js +17 -9
- package/persisters/persister-libsql/index.js +29 -12
- package/persisters/persister-libsql/with-schemas/index.js +29 -12
- package/persisters/persister-partykit-client/index.js +44 -11
- package/persisters/persister-partykit-client/with-schemas/index.js +44 -11
- package/persisters/persister-partykit-server/index.js +39 -4
- package/persisters/persister-partykit-server/with-schemas/index.js +39 -4
- package/persisters/persister-pglite/index.js +29 -12
- package/persisters/persister-pglite/with-schemas/index.js +29 -12
- package/persisters/persister-postgres/index.js +29 -12
- package/persisters/persister-postgres/with-schemas/index.js +29 -12
- package/persisters/persister-powersync/index.js +29 -12
- package/persisters/persister-powersync/with-schemas/index.js +29 -12
- package/persisters/persister-react-native-mmkv/index.js +17 -9
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +17 -9
- package/persisters/persister-react-native-sqlite/index.js +29 -12
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -12
- package/persisters/persister-remote/index.js +17 -9
- package/persisters/persister-remote/with-schemas/index.js +17 -9
- package/persisters/persister-sqlite-bun/index.js +29 -12
- package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -12
- package/persisters/persister-sqlite-wasm/index.js +29 -12
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -12
- package/persisters/persister-sqlite3/index.js +29 -12
- package/persisters/persister-sqlite3/with-schemas/index.js +29 -12
- package/persisters/persister-yjs/index.js +19 -11
- package/persisters/persister-yjs/with-schemas/index.js +19 -11
- package/persisters/with-schemas/index.js +29 -12
- package/queries/index.js +16 -20
- package/queries/with-schemas/index.js +16 -20
- package/readme.md +21 -13
- package/relationships/index.js +13 -12
- package/relationships/with-schemas/index.js +13 -12
- package/releases.md +59 -43
- package/store/index.js +479 -192
- package/store/with-schemas/index.js +479 -192
- package/synchronizers/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -9
- package/synchronizers/synchronizer-local/index.js +19 -11
- package/synchronizers/synchronizer-local/with-schemas/index.js +19 -11
- package/synchronizers/synchronizer-ws-client/index.js +31 -10
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +31 -10
- package/synchronizers/synchronizer-ws-server/index.js +34 -13
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +34 -13
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +31 -10
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +31 -10
- package/synchronizers/synchronizer-ws-server-simple/index.js +11 -10
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +11 -10
- package/synchronizers/with-schemas/index.js +17 -9
- package/ui-react-inspector/index.js +475 -193
- package/ui-react-inspector/with-schemas/index.js +475 -193
- package/with-schemas/index.js +632 -215
|
@@ -135,21 +135,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
135
135
|
const objSize = (obj) => size(objIds(obj));
|
|
136
136
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
137
137
|
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
138
|
+
const map = Map;
|
|
139
|
+
const mapNew = (entries) => new map(entries);
|
|
140
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
141
|
+
const mapForEach = (map2, cb) =>
|
|
142
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
142
143
|
const mapMap = (coll, cb) =>
|
|
143
144
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
144
|
-
const mapSet = (
|
|
145
|
-
isUndefined(value) ? (collDel(
|
|
146
|
-
const mapEnsure = (
|
|
147
|
-
if (!collHas(
|
|
148
|
-
mapSet(
|
|
145
|
+
const mapSet = (map2, key, value) =>
|
|
146
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
147
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
148
|
+
if (!collHas(map2, key)) {
|
|
149
|
+
mapSet(map2, key, getDefaultValue());
|
|
149
150
|
} else {
|
|
150
|
-
hadExistingValue?.(mapGet(
|
|
151
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
151
152
|
}
|
|
152
|
-
return mapGet(
|
|
153
|
+
return mapGet(map2, key);
|
|
153
154
|
};
|
|
154
155
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
155
156
|
ifNotUndefined(
|
|
@@ -304,7 +305,16 @@ const jsonParse = JSON.parse;
|
|
|
304
305
|
const jsonStringWithUndefined = (obj) =>
|
|
305
306
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
306
307
|
const jsonParseWithUndefined = (str) =>
|
|
307
|
-
|
|
308
|
+
// JSON.parse reviver removes properties with undefined values
|
|
309
|
+
replaceUndefinedString(jsonParse(str));
|
|
310
|
+
const replaceUndefinedString = (obj) =>
|
|
311
|
+
obj === UNDEFINED
|
|
312
|
+
? void 0
|
|
313
|
+
: isArray(obj)
|
|
314
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
315
|
+
: isObject(obj)
|
|
316
|
+
? objMap(obj, replaceUndefinedString)
|
|
317
|
+
: obj;
|
|
308
318
|
|
|
309
319
|
const INTEGER = /^\d+$/;
|
|
310
320
|
const getPoolFunctions = () => {
|
|
@@ -476,6 +486,11 @@ const createCustomPersister = (
|
|
|
476
486
|
? store.applyChanges
|
|
477
487
|
: store.setContent)(contentOrChanges);
|
|
478
488
|
};
|
|
489
|
+
const saveAfterMutated = async () => {
|
|
490
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
491
|
+
await save();
|
|
492
|
+
}
|
|
493
|
+
};
|
|
479
494
|
const load = async (initialContent) => {
|
|
480
495
|
/* istanbul ignore else */
|
|
481
496
|
if (status != 2 /* Saving */) {
|
|
@@ -500,6 +515,7 @@ const createCustomPersister = (
|
|
|
500
515
|
},
|
|
501
516
|
);
|
|
502
517
|
setStatus(0 /* Idle */);
|
|
518
|
+
await saveAfterMutated();
|
|
503
519
|
});
|
|
504
520
|
}
|
|
505
521
|
return persister;
|
|
@@ -518,6 +534,7 @@ const createCustomPersister = (
|
|
|
518
534
|
loads++;
|
|
519
535
|
setContentOrChanges(changes ?? content);
|
|
520
536
|
setStatus(0 /* Idle */);
|
|
537
|
+
await saveAfterMutated();
|
|
521
538
|
}
|
|
522
539
|
} else {
|
|
523
540
|
await load();
|
|
@@ -135,21 +135,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
135
135
|
const objSize = (obj) => size(objIds(obj));
|
|
136
136
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
137
137
|
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
138
|
+
const map = Map;
|
|
139
|
+
const mapNew = (entries) => new map(entries);
|
|
140
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
141
|
+
const mapForEach = (map2, cb) =>
|
|
142
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
142
143
|
const mapMap = (coll, cb) =>
|
|
143
144
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
144
|
-
const mapSet = (
|
|
145
|
-
isUndefined(value) ? (collDel(
|
|
146
|
-
const mapEnsure = (
|
|
147
|
-
if (!collHas(
|
|
148
|
-
mapSet(
|
|
145
|
+
const mapSet = (map2, key, value) =>
|
|
146
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
147
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
148
|
+
if (!collHas(map2, key)) {
|
|
149
|
+
mapSet(map2, key, getDefaultValue());
|
|
149
150
|
} else {
|
|
150
|
-
hadExistingValue?.(mapGet(
|
|
151
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
151
152
|
}
|
|
152
|
-
return mapGet(
|
|
153
|
+
return mapGet(map2, key);
|
|
153
154
|
};
|
|
154
155
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
155
156
|
ifNotUndefined(
|
|
@@ -304,7 +305,16 @@ const jsonParse = JSON.parse;
|
|
|
304
305
|
const jsonStringWithUndefined = (obj) =>
|
|
305
306
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
306
307
|
const jsonParseWithUndefined = (str) =>
|
|
307
|
-
|
|
308
|
+
// JSON.parse reviver removes properties with undefined values
|
|
309
|
+
replaceUndefinedString(jsonParse(str));
|
|
310
|
+
const replaceUndefinedString = (obj) =>
|
|
311
|
+
obj === UNDEFINED
|
|
312
|
+
? void 0
|
|
313
|
+
: isArray(obj)
|
|
314
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
315
|
+
: isObject(obj)
|
|
316
|
+
? objMap(obj, replaceUndefinedString)
|
|
317
|
+
: obj;
|
|
308
318
|
|
|
309
319
|
const INTEGER = /^\d+$/;
|
|
310
320
|
const getPoolFunctions = () => {
|
|
@@ -476,6 +486,11 @@ const createCustomPersister = (
|
|
|
476
486
|
? store.applyChanges
|
|
477
487
|
: store.setContent)(contentOrChanges);
|
|
478
488
|
};
|
|
489
|
+
const saveAfterMutated = async () => {
|
|
490
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
491
|
+
await save();
|
|
492
|
+
}
|
|
493
|
+
};
|
|
479
494
|
const load = async (initialContent) => {
|
|
480
495
|
/* istanbul ignore else */
|
|
481
496
|
if (status != 2 /* Saving */) {
|
|
@@ -500,6 +515,7 @@ const createCustomPersister = (
|
|
|
500
515
|
},
|
|
501
516
|
);
|
|
502
517
|
setStatus(0 /* Idle */);
|
|
518
|
+
await saveAfterMutated();
|
|
503
519
|
});
|
|
504
520
|
}
|
|
505
521
|
return persister;
|
|
@@ -518,6 +534,7 @@ const createCustomPersister = (
|
|
|
518
534
|
loads++;
|
|
519
535
|
setContentOrChanges(changes ?? content);
|
|
520
536
|
setStatus(0 /* Idle */);
|
|
537
|
+
await saveAfterMutated();
|
|
521
538
|
}
|
|
522
539
|
} else {
|
|
523
540
|
await load();
|
|
@@ -135,21 +135,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
135
135
|
const objSize = (obj) => size(objIds(obj));
|
|
136
136
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
137
137
|
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
138
|
+
const map = Map;
|
|
139
|
+
const mapNew = (entries) => new map(entries);
|
|
140
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
141
|
+
const mapForEach = (map2, cb) =>
|
|
142
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
142
143
|
const mapMap = (coll, cb) =>
|
|
143
144
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
144
|
-
const mapSet = (
|
|
145
|
-
isUndefined(value) ? (collDel(
|
|
146
|
-
const mapEnsure = (
|
|
147
|
-
if (!collHas(
|
|
148
|
-
mapSet(
|
|
145
|
+
const mapSet = (map2, key, value) =>
|
|
146
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
147
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
148
|
+
if (!collHas(map2, key)) {
|
|
149
|
+
mapSet(map2, key, getDefaultValue());
|
|
149
150
|
} else {
|
|
150
|
-
hadExistingValue?.(mapGet(
|
|
151
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
151
152
|
}
|
|
152
|
-
return mapGet(
|
|
153
|
+
return mapGet(map2, key);
|
|
153
154
|
};
|
|
154
155
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
155
156
|
ifNotUndefined(
|
|
@@ -304,7 +305,16 @@ const jsonParse = JSON.parse;
|
|
|
304
305
|
const jsonStringWithUndefined = (obj) =>
|
|
305
306
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
306
307
|
const jsonParseWithUndefined = (str) =>
|
|
307
|
-
|
|
308
|
+
// JSON.parse reviver removes properties with undefined values
|
|
309
|
+
replaceUndefinedString(jsonParse(str));
|
|
310
|
+
const replaceUndefinedString = (obj) =>
|
|
311
|
+
obj === UNDEFINED
|
|
312
|
+
? void 0
|
|
313
|
+
: isArray(obj)
|
|
314
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
315
|
+
: isObject(obj)
|
|
316
|
+
? objMap(obj, replaceUndefinedString)
|
|
317
|
+
: obj;
|
|
308
318
|
|
|
309
319
|
const INTEGER = /^\d+$/;
|
|
310
320
|
const getPoolFunctions = () => {
|
|
@@ -476,6 +486,11 @@ const createCustomPersister = (
|
|
|
476
486
|
? store.applyChanges
|
|
477
487
|
: store.setContent)(contentOrChanges);
|
|
478
488
|
};
|
|
489
|
+
const saveAfterMutated = async () => {
|
|
490
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
491
|
+
await save();
|
|
492
|
+
}
|
|
493
|
+
};
|
|
479
494
|
const load = async (initialContent) => {
|
|
480
495
|
/* istanbul ignore else */
|
|
481
496
|
if (status != 2 /* Saving */) {
|
|
@@ -500,6 +515,7 @@ const createCustomPersister = (
|
|
|
500
515
|
},
|
|
501
516
|
);
|
|
502
517
|
setStatus(0 /* Idle */);
|
|
518
|
+
await saveAfterMutated();
|
|
503
519
|
});
|
|
504
520
|
}
|
|
505
521
|
return persister;
|
|
@@ -518,6 +534,7 @@ const createCustomPersister = (
|
|
|
518
534
|
loads++;
|
|
519
535
|
setContentOrChanges(changes ?? content);
|
|
520
536
|
setStatus(0 /* Idle */);
|
|
537
|
+
await saveAfterMutated();
|
|
521
538
|
}
|
|
522
539
|
} else {
|
|
523
540
|
await load();
|
|
@@ -136,21 +136,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
136
136
|
const objSize = (obj) => size(objIds(obj));
|
|
137
137
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
138
138
|
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
139
|
+
const map = Map;
|
|
140
|
+
const mapNew = (entries) => new map(entries);
|
|
141
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
142
|
+
const mapForEach = (map2, cb) =>
|
|
143
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
143
144
|
const mapMap = (coll, cb) =>
|
|
144
145
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
145
|
-
const mapSet = (
|
|
146
|
-
isUndefined(value) ? (collDel(
|
|
147
|
-
const mapEnsure = (
|
|
148
|
-
if (!collHas(
|
|
149
|
-
mapSet(
|
|
146
|
+
const mapSet = (map2, key, value) =>
|
|
147
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
148
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
149
|
+
if (!collHas(map2, key)) {
|
|
150
|
+
mapSet(map2, key, getDefaultValue());
|
|
150
151
|
} else {
|
|
151
|
-
hadExistingValue?.(mapGet(
|
|
152
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
152
153
|
}
|
|
153
|
-
return mapGet(
|
|
154
|
+
return mapGet(map2, key);
|
|
154
155
|
};
|
|
155
156
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
156
157
|
ifNotUndefined(
|
|
@@ -305,7 +306,16 @@ const jsonParse = JSON.parse;
|
|
|
305
306
|
const jsonStringWithUndefined = (obj) =>
|
|
306
307
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
307
308
|
const jsonParseWithUndefined = (str) =>
|
|
308
|
-
|
|
309
|
+
// JSON.parse reviver removes properties with undefined values
|
|
310
|
+
replaceUndefinedString(jsonParse(str));
|
|
311
|
+
const replaceUndefinedString = (obj) =>
|
|
312
|
+
obj === UNDEFINED
|
|
313
|
+
? void 0
|
|
314
|
+
: isArray(obj)
|
|
315
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
316
|
+
: isObject(obj)
|
|
317
|
+
? objMap(obj, replaceUndefinedString)
|
|
318
|
+
: obj;
|
|
309
319
|
|
|
310
320
|
const INTEGER = /^\d+$/;
|
|
311
321
|
const getPoolFunctions = () => {
|
|
@@ -477,6 +487,11 @@ const createCustomPersister = (
|
|
|
477
487
|
? store.applyChanges
|
|
478
488
|
: store.setContent)(contentOrChanges);
|
|
479
489
|
};
|
|
490
|
+
const saveAfterMutated = async () => {
|
|
491
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
492
|
+
await save();
|
|
493
|
+
}
|
|
494
|
+
};
|
|
480
495
|
const load = async (initialContent) => {
|
|
481
496
|
/* istanbul ignore else */
|
|
482
497
|
if (status != 2 /* Saving */) {
|
|
@@ -501,6 +516,7 @@ const createCustomPersister = (
|
|
|
501
516
|
},
|
|
502
517
|
);
|
|
503
518
|
setStatus(0 /* Idle */);
|
|
519
|
+
await saveAfterMutated();
|
|
504
520
|
});
|
|
505
521
|
}
|
|
506
522
|
return persister;
|
|
@@ -519,6 +535,7 @@ const createCustomPersister = (
|
|
|
519
535
|
loads++;
|
|
520
536
|
setContentOrChanges(changes ?? content);
|
|
521
537
|
setStatus(0 /* Idle */);
|
|
538
|
+
await saveAfterMutated();
|
|
522
539
|
}
|
|
523
540
|
} else {
|
|
524
541
|
await load();
|
|
@@ -136,21 +136,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
136
136
|
const objSize = (obj) => size(objIds(obj));
|
|
137
137
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
138
138
|
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
139
|
+
const map = Map;
|
|
140
|
+
const mapNew = (entries) => new map(entries);
|
|
141
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
142
|
+
const mapForEach = (map2, cb) =>
|
|
143
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
143
144
|
const mapMap = (coll, cb) =>
|
|
144
145
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
145
|
-
const mapSet = (
|
|
146
|
-
isUndefined(value) ? (collDel(
|
|
147
|
-
const mapEnsure = (
|
|
148
|
-
if (!collHas(
|
|
149
|
-
mapSet(
|
|
146
|
+
const mapSet = (map2, key, value) =>
|
|
147
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
148
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
149
|
+
if (!collHas(map2, key)) {
|
|
150
|
+
mapSet(map2, key, getDefaultValue());
|
|
150
151
|
} else {
|
|
151
|
-
hadExistingValue?.(mapGet(
|
|
152
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
152
153
|
}
|
|
153
|
-
return mapGet(
|
|
154
|
+
return mapGet(map2, key);
|
|
154
155
|
};
|
|
155
156
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
156
157
|
ifNotUndefined(
|
|
@@ -305,7 +306,16 @@ const jsonParse = JSON.parse;
|
|
|
305
306
|
const jsonStringWithUndefined = (obj) =>
|
|
306
307
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
307
308
|
const jsonParseWithUndefined = (str) =>
|
|
308
|
-
|
|
309
|
+
// JSON.parse reviver removes properties with undefined values
|
|
310
|
+
replaceUndefinedString(jsonParse(str));
|
|
311
|
+
const replaceUndefinedString = (obj) =>
|
|
312
|
+
obj === UNDEFINED
|
|
313
|
+
? void 0
|
|
314
|
+
: isArray(obj)
|
|
315
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
316
|
+
: isObject(obj)
|
|
317
|
+
? objMap(obj, replaceUndefinedString)
|
|
318
|
+
: obj;
|
|
309
319
|
|
|
310
320
|
const INTEGER = /^\d+$/;
|
|
311
321
|
const getPoolFunctions = () => {
|
|
@@ -477,6 +487,11 @@ const createCustomPersister = (
|
|
|
477
487
|
? store.applyChanges
|
|
478
488
|
: store.setContent)(contentOrChanges);
|
|
479
489
|
};
|
|
490
|
+
const saveAfterMutated = async () => {
|
|
491
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
492
|
+
await save();
|
|
493
|
+
}
|
|
494
|
+
};
|
|
480
495
|
const load = async (initialContent) => {
|
|
481
496
|
/* istanbul ignore else */
|
|
482
497
|
if (status != 2 /* Saving */) {
|
|
@@ -501,6 +516,7 @@ const createCustomPersister = (
|
|
|
501
516
|
},
|
|
502
517
|
);
|
|
503
518
|
setStatus(0 /* Idle */);
|
|
519
|
+
await saveAfterMutated();
|
|
504
520
|
});
|
|
505
521
|
}
|
|
506
522
|
return persister;
|
|
@@ -519,6 +535,7 @@ const createCustomPersister = (
|
|
|
519
535
|
loads++;
|
|
520
536
|
setContentOrChanges(changes ?? content);
|
|
521
537
|
setStatus(0 /* Idle */);
|
|
538
|
+
await saveAfterMutated();
|
|
522
539
|
}
|
|
523
540
|
} else {
|
|
524
541
|
await load();
|
|
@@ -71,19 +71,20 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
71
71
|
return obj[id];
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
const map = Map;
|
|
75
|
+
const mapNew = (entries) => new map(entries);
|
|
76
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
77
|
+
const mapForEach = (map2, cb) =>
|
|
78
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
79
|
+
const mapSet = (map2, key, value) =>
|
|
80
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
81
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
82
|
+
if (!collHas(map2, key)) {
|
|
83
|
+
mapSet(map2, key, getDefaultValue());
|
|
83
84
|
} else {
|
|
84
|
-
hadExistingValue?.(mapGet(
|
|
85
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
85
86
|
}
|
|
86
|
-
return mapGet(
|
|
87
|
+
return mapGet(map2, key);
|
|
87
88
|
};
|
|
88
89
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
89
90
|
ifNotUndefined(
|
|
@@ -285,6 +286,11 @@ const createCustomPersister = (
|
|
|
285
286
|
? store.applyChanges
|
|
286
287
|
: store.setContent)(contentOrChanges);
|
|
287
288
|
};
|
|
289
|
+
const saveAfterMutated = async () => {
|
|
290
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
291
|
+
await save();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
288
294
|
const load = async (initialContent) => {
|
|
289
295
|
/* istanbul ignore else */
|
|
290
296
|
if (status != 2 /* Saving */) {
|
|
@@ -309,6 +315,7 @@ const createCustomPersister = (
|
|
|
309
315
|
},
|
|
310
316
|
);
|
|
311
317
|
setStatus(0 /* Idle */);
|
|
318
|
+
await saveAfterMutated();
|
|
312
319
|
});
|
|
313
320
|
}
|
|
314
321
|
return persister;
|
|
@@ -327,6 +334,7 @@ const createCustomPersister = (
|
|
|
327
334
|
loads++;
|
|
328
335
|
setContentOrChanges(changes ?? content);
|
|
329
336
|
setStatus(0 /* Idle */);
|
|
337
|
+
await saveAfterMutated();
|
|
330
338
|
}
|
|
331
339
|
} else {
|
|
332
340
|
await load();
|
|
@@ -71,19 +71,20 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
71
71
|
return obj[id];
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
const map = Map;
|
|
75
|
+
const mapNew = (entries) => new map(entries);
|
|
76
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
77
|
+
const mapForEach = (map2, cb) =>
|
|
78
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
79
|
+
const mapSet = (map2, key, value) =>
|
|
80
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
81
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
82
|
+
if (!collHas(map2, key)) {
|
|
83
|
+
mapSet(map2, key, getDefaultValue());
|
|
83
84
|
} else {
|
|
84
|
-
hadExistingValue?.(mapGet(
|
|
85
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
85
86
|
}
|
|
86
|
-
return mapGet(
|
|
87
|
+
return mapGet(map2, key);
|
|
87
88
|
};
|
|
88
89
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
89
90
|
ifNotUndefined(
|
|
@@ -285,6 +286,11 @@ const createCustomPersister = (
|
|
|
285
286
|
? store.applyChanges
|
|
286
287
|
: store.setContent)(contentOrChanges);
|
|
287
288
|
};
|
|
289
|
+
const saveAfterMutated = async () => {
|
|
290
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
291
|
+
await save();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
288
294
|
const load = async (initialContent) => {
|
|
289
295
|
/* istanbul ignore else */
|
|
290
296
|
if (status != 2 /* Saving */) {
|
|
@@ -309,6 +315,7 @@ const createCustomPersister = (
|
|
|
309
315
|
},
|
|
310
316
|
);
|
|
311
317
|
setStatus(0 /* Idle */);
|
|
318
|
+
await saveAfterMutated();
|
|
312
319
|
});
|
|
313
320
|
}
|
|
314
321
|
return persister;
|
|
@@ -327,6 +334,7 @@ const createCustomPersister = (
|
|
|
327
334
|
loads++;
|
|
328
335
|
setContentOrChanges(changes ?? content);
|
|
329
336
|
setStatus(0 /* Idle */);
|
|
337
|
+
await saveAfterMutated();
|
|
330
338
|
}
|
|
331
339
|
} else {
|
|
332
340
|
await load();
|
|
@@ -94,21 +94,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
94
94
|
const objSize = (obj) => size(objIds(obj));
|
|
95
95
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
96
96
|
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
|
|
97
|
+
const map = Map;
|
|
98
|
+
const mapNew = (entries) => new map(entries);
|
|
99
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
100
|
+
const mapForEach = (map2, cb) =>
|
|
101
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
101
102
|
const mapMap = (coll, cb) =>
|
|
102
103
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
103
|
-
const mapSet = (
|
|
104
|
-
isUndefined(value) ? (collDel(
|
|
105
|
-
const mapEnsure = (
|
|
106
|
-
if (!collHas(
|
|
107
|
-
mapSet(
|
|
104
|
+
const mapSet = (map2, key, value) =>
|
|
105
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
106
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
107
|
+
if (!collHas(map2, key)) {
|
|
108
|
+
mapSet(map2, key, getDefaultValue());
|
|
108
109
|
} else {
|
|
109
|
-
hadExistingValue?.(mapGet(
|
|
110
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
110
111
|
}
|
|
111
|
-
return mapGet(
|
|
112
|
+
return mapGet(map2, key);
|
|
112
113
|
};
|
|
113
114
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
114
115
|
ifNotUndefined(
|
|
@@ -320,6 +321,11 @@ const createCustomPersister = (
|
|
|
320
321
|
? store.applyChanges
|
|
321
322
|
: store.setContent)(contentOrChanges);
|
|
322
323
|
};
|
|
324
|
+
const saveAfterMutated = async () => {
|
|
325
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
326
|
+
await save();
|
|
327
|
+
}
|
|
328
|
+
};
|
|
323
329
|
const load = async (initialContent) => {
|
|
324
330
|
/* istanbul ignore else */
|
|
325
331
|
if (status != 2 /* Saving */) {
|
|
@@ -344,6 +350,7 @@ const createCustomPersister = (
|
|
|
344
350
|
},
|
|
345
351
|
);
|
|
346
352
|
setStatus(0 /* Idle */);
|
|
353
|
+
await saveAfterMutated();
|
|
347
354
|
});
|
|
348
355
|
}
|
|
349
356
|
return persister;
|
|
@@ -362,6 +369,7 @@ const createCustomPersister = (
|
|
|
362
369
|
loads++;
|
|
363
370
|
setContentOrChanges(changes ?? content);
|
|
364
371
|
setStatus(0 /* Idle */);
|
|
372
|
+
await saveAfterMutated();
|
|
365
373
|
}
|
|
366
374
|
} else {
|
|
367
375
|
await load();
|
|
@@ -479,7 +487,16 @@ const jsonParse = JSON.parse;
|
|
|
479
487
|
const jsonStringWithUndefined = (obj) =>
|
|
480
488
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
481
489
|
const jsonParseWithUndefined = (str) =>
|
|
482
|
-
|
|
490
|
+
// JSON.parse reviver removes properties with undefined values
|
|
491
|
+
replaceUndefinedString(jsonParse(str));
|
|
492
|
+
const replaceUndefinedString = (obj) =>
|
|
493
|
+
obj === UNDEFINED
|
|
494
|
+
? void 0
|
|
495
|
+
: isArray(obj)
|
|
496
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
497
|
+
: isObject(obj)
|
|
498
|
+
? objMap(obj, replaceUndefinedString)
|
|
499
|
+
: obj;
|
|
483
500
|
|
|
484
501
|
const textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();
|
|
485
502
|
const getHash = (string) => {
|
package/queries/index.js
CHANGED
|
@@ -112,24 +112,25 @@ const objIsEqual = (
|
|
|
112
112
|
);
|
|
113
113
|
};
|
|
114
114
|
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
115
|
+
const map = Map;
|
|
116
|
+
const mapNew = (entries) => new map(entries);
|
|
117
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
118
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
119
|
+
const mapForEach = (map2, cb) =>
|
|
120
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
121
|
+
const mapSet = (map2, key, value) =>
|
|
122
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
123
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
124
|
+
if (!collHas(map2, key)) {
|
|
125
|
+
mapSet(map2, key, getDefaultValue());
|
|
125
126
|
} else {
|
|
126
|
-
hadExistingValue?.(mapGet(
|
|
127
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
127
128
|
}
|
|
128
|
-
return mapGet(
|
|
129
|
+
return mapGet(map2, key);
|
|
129
130
|
};
|
|
130
|
-
const mapToObj = (
|
|
131
|
+
const mapToObj = (map2, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
131
132
|
const obj = {};
|
|
132
|
-
collForEach(
|
|
133
|
+
collForEach(map2, (mapValue, id) => {
|
|
133
134
|
{
|
|
134
135
|
const objValue = mapValue;
|
|
135
136
|
{
|
|
@@ -240,10 +241,6 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
240
241
|
? type
|
|
241
242
|
: void 0;
|
|
242
243
|
};
|
|
243
|
-
const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
|
|
244
|
-
isUndefined(cell)
|
|
245
|
-
? store.delCell(tableId, rowId, cellId, true)
|
|
246
|
-
: store.setCell(tableId, rowId, cellId, cell);
|
|
247
244
|
|
|
248
245
|
const setNew = (entryOrEntries) =>
|
|
249
246
|
new Set(
|
|
@@ -748,8 +745,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
748
745
|
selectJoinWhereStore.transaction(() =>
|
|
749
746
|
arrayEvery(wheres, (where2) => where2(getTableCell))
|
|
750
747
|
? mapForEach(selects, (asCellId, tableCellGetter) =>
|
|
751
|
-
setOrDelCell(
|
|
752
|
-
selectJoinWhereStore,
|
|
748
|
+
selectJoinWhereStore.setOrDelCell(
|
|
753
749
|
queryId,
|
|
754
750
|
rootRowId,
|
|
755
751
|
asCellId,
|