tinybase 7.3.2 → 7.3.4
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/checkpoints/index.js +12 -11
- package/checkpoints/with-schemas/index.js +12 -11
- package/common/index.js +3 -2
- package/common/with-schemas/index.js +3 -2
- package/index.js +92 -64
- package/indexes/index.js +13 -12
- package/indexes/with-schemas/index.js +13 -12
- package/mergeable-store/index.js +92 -64
- package/mergeable-store/with-schemas/index.js +92 -64
- package/metrics/index.js +13 -12
- package/metrics/with-schemas/index.js +13 -12
- 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/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 +115 -67
- package/omni/with-schemas/index.js +115 -67
- package/package.json +13 -13
- 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 +19 -11
- package/persisters/persister-durable-object-storage/with-schemas/index.js +19 -11
- 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 +15 -14
- package/queries/with-schemas/index.js +15 -14
- package/readme.md +10 -2
- package/relationships/index.js +13 -12
- package/relationships/with-schemas/index.js +13 -12
- package/releases.md +1 -1
- package/store/index.js +74 -60
- package/store/with-schemas/index.js +74 -60
- 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 +91 -61
- package/ui-react-inspector/with-schemas/index.js +91 -61
- package/with-schemas/index.js +92 -64
|
@@ -26,12 +26,14 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
29
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
29
30
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
30
31
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
31
32
|
const arrayShift = (array) => array.shift();
|
|
32
33
|
|
|
33
34
|
const object = Object;
|
|
34
35
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
36
|
+
const objEntries = object.entries;
|
|
35
37
|
const isObject = (obj) =>
|
|
36
38
|
!isNullish(obj) &&
|
|
37
39
|
ifNotNullish(
|
|
@@ -45,6 +47,11 @@ const isObject = (obj) =>
|
|
|
45
47
|
);
|
|
46
48
|
const objIds = object.keys;
|
|
47
49
|
const objFreeze = object.freeze;
|
|
50
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
51
|
+
const objToArray = (obj, cb) =>
|
|
52
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
53
|
+
const objMap = (obj, cb) =>
|
|
54
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
48
55
|
const objSize = (obj) => size(objIds(obj));
|
|
49
56
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
50
57
|
|
|
@@ -53,7 +60,16 @@ const jsonParse = JSON.parse;
|
|
|
53
60
|
const jsonStringWithUndefined = (obj) =>
|
|
54
61
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
55
62
|
const jsonParseWithUndefined = (str) =>
|
|
56
|
-
|
|
63
|
+
// JSON.parse reviver removes properties with undefined values
|
|
64
|
+
replaceUndefinedString(jsonParse(str));
|
|
65
|
+
const replaceUndefinedString = (obj) =>
|
|
66
|
+
obj === UNDEFINED
|
|
67
|
+
? void 0
|
|
68
|
+
: isArray(obj)
|
|
69
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
70
|
+
: isObject(obj)
|
|
71
|
+
? objMap(obj, replaceUndefinedString)
|
|
72
|
+
: obj;
|
|
57
73
|
|
|
58
74
|
const collSize = (coll) => coll?.size ?? 0;
|
|
59
75
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -61,17 +77,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
61
77
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
62
78
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
63
79
|
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
const map = Map;
|
|
81
|
+
const mapNew = (entries) => new map(entries);
|
|
82
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
83
|
+
const mapSet = (map2, key, value) =>
|
|
84
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
85
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
86
|
+
if (!collHas(map2, key)) {
|
|
87
|
+
mapSet(map2, key, getDefaultValue());
|
|
71
88
|
} else {
|
|
72
|
-
hadExistingValue?.(mapGet(
|
|
89
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
73
90
|
}
|
|
74
|
-
return mapGet(
|
|
91
|
+
return mapGet(map2, key);
|
|
75
92
|
};
|
|
76
93
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
77
94
|
ifNotUndefined(
|
|
@@ -273,6 +290,11 @@ const createCustomPersister = (
|
|
|
273
290
|
? store.applyChanges
|
|
274
291
|
: store.setContent)(contentOrChanges);
|
|
275
292
|
};
|
|
293
|
+
const saveAfterMutated = async () => {
|
|
294
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
295
|
+
await save();
|
|
296
|
+
}
|
|
297
|
+
};
|
|
276
298
|
const load = async (initialContent) => {
|
|
277
299
|
/* istanbul ignore else */
|
|
278
300
|
if (status != 2 /* Saving */) {
|
|
@@ -297,6 +319,7 @@ const createCustomPersister = (
|
|
|
297
319
|
},
|
|
298
320
|
);
|
|
299
321
|
setStatus(0 /* Idle */);
|
|
322
|
+
await saveAfterMutated();
|
|
300
323
|
});
|
|
301
324
|
}
|
|
302
325
|
return persister;
|
|
@@ -315,6 +338,7 @@ const createCustomPersister = (
|
|
|
315
338
|
loads++;
|
|
316
339
|
setContentOrChanges(changes ?? content);
|
|
317
340
|
setStatus(0 /* Idle */);
|
|
341
|
+
await saveAfterMutated();
|
|
318
342
|
}
|
|
319
343
|
} else {
|
|
320
344
|
await load();
|
|
@@ -26,12 +26,14 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
29
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
29
30
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
30
31
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
31
32
|
const arrayShift = (array) => array.shift();
|
|
32
33
|
|
|
33
34
|
const object = Object;
|
|
34
35
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
36
|
+
const objEntries = object.entries;
|
|
35
37
|
const isObject = (obj) =>
|
|
36
38
|
!isNullish(obj) &&
|
|
37
39
|
ifNotNullish(
|
|
@@ -45,6 +47,11 @@ const isObject = (obj) =>
|
|
|
45
47
|
);
|
|
46
48
|
const objIds = object.keys;
|
|
47
49
|
const objFreeze = object.freeze;
|
|
50
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
51
|
+
const objToArray = (obj, cb) =>
|
|
52
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
53
|
+
const objMap = (obj, cb) =>
|
|
54
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
48
55
|
const objSize = (obj) => size(objIds(obj));
|
|
49
56
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
50
57
|
|
|
@@ -53,7 +60,16 @@ const jsonParse = JSON.parse;
|
|
|
53
60
|
const jsonStringWithUndefined = (obj) =>
|
|
54
61
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
55
62
|
const jsonParseWithUndefined = (str) =>
|
|
56
|
-
|
|
63
|
+
// JSON.parse reviver removes properties with undefined values
|
|
64
|
+
replaceUndefinedString(jsonParse(str));
|
|
65
|
+
const replaceUndefinedString = (obj) =>
|
|
66
|
+
obj === UNDEFINED
|
|
67
|
+
? void 0
|
|
68
|
+
: isArray(obj)
|
|
69
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
70
|
+
: isObject(obj)
|
|
71
|
+
? objMap(obj, replaceUndefinedString)
|
|
72
|
+
: obj;
|
|
57
73
|
|
|
58
74
|
const collSize = (coll) => coll?.size ?? 0;
|
|
59
75
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -61,17 +77,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
61
77
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
62
78
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
63
79
|
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
const map = Map;
|
|
81
|
+
const mapNew = (entries) => new map(entries);
|
|
82
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
83
|
+
const mapSet = (map2, key, value) =>
|
|
84
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
85
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
86
|
+
if (!collHas(map2, key)) {
|
|
87
|
+
mapSet(map2, key, getDefaultValue());
|
|
71
88
|
} else {
|
|
72
|
-
hadExistingValue?.(mapGet(
|
|
89
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
73
90
|
}
|
|
74
|
-
return mapGet(
|
|
91
|
+
return mapGet(map2, key);
|
|
75
92
|
};
|
|
76
93
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
77
94
|
ifNotUndefined(
|
|
@@ -273,6 +290,11 @@ const createCustomPersister = (
|
|
|
273
290
|
? store.applyChanges
|
|
274
291
|
: store.setContent)(contentOrChanges);
|
|
275
292
|
};
|
|
293
|
+
const saveAfterMutated = async () => {
|
|
294
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
295
|
+
await save();
|
|
296
|
+
}
|
|
297
|
+
};
|
|
276
298
|
const load = async (initialContent) => {
|
|
277
299
|
/* istanbul ignore else */
|
|
278
300
|
if (status != 2 /* Saving */) {
|
|
@@ -297,6 +319,7 @@ const createCustomPersister = (
|
|
|
297
319
|
},
|
|
298
320
|
);
|
|
299
321
|
setStatus(0 /* Idle */);
|
|
322
|
+
await saveAfterMutated();
|
|
300
323
|
});
|
|
301
324
|
}
|
|
302
325
|
return persister;
|
|
@@ -315,6 +338,7 @@ const createCustomPersister = (
|
|
|
315
338
|
loads++;
|
|
316
339
|
setContentOrChanges(changes ?? content);
|
|
317
340
|
setStatus(0 /* Idle */);
|
|
341
|
+
await saveAfterMutated();
|
|
318
342
|
}
|
|
319
343
|
} else {
|
|
320
344
|
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();
|
|
@@ -99,7 +99,16 @@ const jsonParse = JSON.parse;
|
|
|
99
99
|
const jsonStringWithUndefined = (obj) =>
|
|
100
100
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
101
101
|
const jsonParseWithUndefined = (str) =>
|
|
102
|
-
|
|
102
|
+
// JSON.parse reviver removes properties with undefined values
|
|
103
|
+
replaceUndefinedString(jsonParse(str));
|
|
104
|
+
const replaceUndefinedString = (obj) =>
|
|
105
|
+
obj === UNDEFINED
|
|
106
|
+
? void 0
|
|
107
|
+
: isArray(obj)
|
|
108
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
109
|
+
: isObject(obj)
|
|
110
|
+
? objMap(obj, replaceUndefinedString)
|
|
111
|
+
: obj;
|
|
103
112
|
|
|
104
113
|
const collSize = (coll) => coll?.size ?? 0;
|
|
105
114
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -109,21 +118,22 @@ const collClear = (coll) => coll.clear();
|
|
|
109
118
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
110
119
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
111
120
|
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
|
|
121
|
+
const map = Map;
|
|
122
|
+
const mapNew = (entries) => new map(entries);
|
|
123
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
124
|
+
const mapForEach = (map2, cb) =>
|
|
125
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
116
126
|
const mapMap = (coll, cb) =>
|
|
117
127
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
118
|
-
const mapSet = (
|
|
119
|
-
isUndefined(value) ? (collDel(
|
|
120
|
-
const mapEnsure = (
|
|
121
|
-
if (!collHas(
|
|
122
|
-
mapSet(
|
|
128
|
+
const mapSet = (map2, key, value) =>
|
|
129
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
130
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
131
|
+
if (!collHas(map2, key)) {
|
|
132
|
+
mapSet(map2, key, getDefaultValue());
|
|
123
133
|
} else {
|
|
124
|
-
hadExistingValue?.(mapGet(
|
|
134
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
125
135
|
}
|
|
126
|
-
return mapGet(
|
|
136
|
+
return mapGet(map2, key);
|
|
127
137
|
};
|
|
128
138
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
129
139
|
ifNotUndefined(
|
|
@@ -333,6 +343,11 @@ const createCustomPersister = (
|
|
|
333
343
|
? store.applyChanges
|
|
334
344
|
: store.setContent)(contentOrChanges);
|
|
335
345
|
};
|
|
346
|
+
const saveAfterMutated = async () => {
|
|
347
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
348
|
+
await save();
|
|
349
|
+
}
|
|
350
|
+
};
|
|
336
351
|
const load = async (initialContent) => {
|
|
337
352
|
/* istanbul ignore else */
|
|
338
353
|
if (status != 2 /* Saving */) {
|
|
@@ -357,6 +372,7 @@ const createCustomPersister = (
|
|
|
357
372
|
},
|
|
358
373
|
);
|
|
359
374
|
setStatus(0 /* Idle */);
|
|
375
|
+
await saveAfterMutated();
|
|
360
376
|
});
|
|
361
377
|
}
|
|
362
378
|
return persister;
|
|
@@ -375,6 +391,7 @@ const createCustomPersister = (
|
|
|
375
391
|
loads++;
|
|
376
392
|
setContentOrChanges(changes ?? content);
|
|
377
393
|
setStatus(0 /* Idle */);
|
|
394
|
+
await saveAfterMutated();
|
|
378
395
|
}
|
|
379
396
|
} else {
|
|
380
397
|
await load();
|
|
@@ -99,7 +99,16 @@ const jsonParse = JSON.parse;
|
|
|
99
99
|
const jsonStringWithUndefined = (obj) =>
|
|
100
100
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
101
101
|
const jsonParseWithUndefined = (str) =>
|
|
102
|
-
|
|
102
|
+
// JSON.parse reviver removes properties with undefined values
|
|
103
|
+
replaceUndefinedString(jsonParse(str));
|
|
104
|
+
const replaceUndefinedString = (obj) =>
|
|
105
|
+
obj === UNDEFINED
|
|
106
|
+
? void 0
|
|
107
|
+
: isArray(obj)
|
|
108
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
109
|
+
: isObject(obj)
|
|
110
|
+
? objMap(obj, replaceUndefinedString)
|
|
111
|
+
: obj;
|
|
103
112
|
|
|
104
113
|
const collSize = (coll) => coll?.size ?? 0;
|
|
105
114
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -109,21 +118,22 @@ const collClear = (coll) => coll.clear();
|
|
|
109
118
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
110
119
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
111
120
|
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
|
|
121
|
+
const map = Map;
|
|
122
|
+
const mapNew = (entries) => new map(entries);
|
|
123
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
124
|
+
const mapForEach = (map2, cb) =>
|
|
125
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
116
126
|
const mapMap = (coll, cb) =>
|
|
117
127
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
118
|
-
const mapSet = (
|
|
119
|
-
isUndefined(value) ? (collDel(
|
|
120
|
-
const mapEnsure = (
|
|
121
|
-
if (!collHas(
|
|
122
|
-
mapSet(
|
|
128
|
+
const mapSet = (map2, key, value) =>
|
|
129
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
130
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
131
|
+
if (!collHas(map2, key)) {
|
|
132
|
+
mapSet(map2, key, getDefaultValue());
|
|
123
133
|
} else {
|
|
124
|
-
hadExistingValue?.(mapGet(
|
|
134
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
125
135
|
}
|
|
126
|
-
return mapGet(
|
|
136
|
+
return mapGet(map2, key);
|
|
127
137
|
};
|
|
128
138
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
129
139
|
ifNotUndefined(
|
|
@@ -333,6 +343,11 @@ const createCustomPersister = (
|
|
|
333
343
|
? store.applyChanges
|
|
334
344
|
: store.setContent)(contentOrChanges);
|
|
335
345
|
};
|
|
346
|
+
const saveAfterMutated = async () => {
|
|
347
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
348
|
+
await save();
|
|
349
|
+
}
|
|
350
|
+
};
|
|
336
351
|
const load = async (initialContent) => {
|
|
337
352
|
/* istanbul ignore else */
|
|
338
353
|
if (status != 2 /* Saving */) {
|
|
@@ -357,6 +372,7 @@ const createCustomPersister = (
|
|
|
357
372
|
},
|
|
358
373
|
);
|
|
359
374
|
setStatus(0 /* Idle */);
|
|
375
|
+
await saveAfterMutated();
|
|
360
376
|
});
|
|
361
377
|
}
|
|
362
378
|
return persister;
|
|
@@ -375,6 +391,7 @@ const createCustomPersister = (
|
|
|
375
391
|
loads++;
|
|
376
392
|
setContentOrChanges(changes ?? content);
|
|
377
393
|
setStatus(0 /* Idle */);
|
|
394
|
+
await saveAfterMutated();
|
|
378
395
|
}
|
|
379
396
|
} else {
|
|
380
397
|
await load();
|
|
@@ -71,21 +71,22 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
71
71
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
72
72
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
73
73
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
const map = Map;
|
|
75
|
+
const mapNew = (entries) => new map(entries);
|
|
76
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
77
|
+
const mapSet = (map2, key, value) =>
|
|
78
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
79
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
80
|
+
if (!collHas(map2, key)) {
|
|
81
|
+
mapSet(map2, key, getDefaultValue());
|
|
81
82
|
} else {
|
|
82
|
-
hadExistingValue?.(mapGet(
|
|
83
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
83
84
|
}
|
|
84
|
-
return mapGet(
|
|
85
|
+
return mapGet(map2, key);
|
|
85
86
|
};
|
|
86
|
-
const mapToObj = (
|
|
87
|
+
const mapToObj = (map2, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
87
88
|
const obj = {};
|
|
88
|
-
collForEach(
|
|
89
|
+
collForEach(map2, (mapValue, id) => {
|
|
89
90
|
{
|
|
90
91
|
const objValue = mapValue;
|
|
91
92
|
{
|
|
@@ -303,6 +304,11 @@ const createCustomPersister = (
|
|
|
303
304
|
? store.applyChanges
|
|
304
305
|
: store.setContent)(contentOrChanges);
|
|
305
306
|
};
|
|
307
|
+
const saveAfterMutated = async () => {
|
|
308
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
309
|
+
await save();
|
|
310
|
+
}
|
|
311
|
+
};
|
|
306
312
|
const load = async (initialContent) => {
|
|
307
313
|
/* istanbul ignore else */
|
|
308
314
|
if (status != 2 /* Saving */) {
|
|
@@ -327,6 +333,7 @@ const createCustomPersister = (
|
|
|
327
333
|
},
|
|
328
334
|
);
|
|
329
335
|
setStatus(0 /* Idle */);
|
|
336
|
+
await saveAfterMutated();
|
|
330
337
|
});
|
|
331
338
|
}
|
|
332
339
|
return persister;
|
|
@@ -345,6 +352,7 @@ const createCustomPersister = (
|
|
|
345
352
|
loads++;
|
|
346
353
|
setContentOrChanges(changes ?? content);
|
|
347
354
|
setStatus(0 /* Idle */);
|
|
355
|
+
await saveAfterMutated();
|
|
348
356
|
}
|
|
349
357
|
} else {
|
|
350
358
|
await load();
|
|
@@ -71,21 +71,22 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
71
71
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
72
72
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
73
73
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
const map = Map;
|
|
75
|
+
const mapNew = (entries) => new map(entries);
|
|
76
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
77
|
+
const mapSet = (map2, key, value) =>
|
|
78
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
79
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
80
|
+
if (!collHas(map2, key)) {
|
|
81
|
+
mapSet(map2, key, getDefaultValue());
|
|
81
82
|
} else {
|
|
82
|
-
hadExistingValue?.(mapGet(
|
|
83
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
83
84
|
}
|
|
84
|
-
return mapGet(
|
|
85
|
+
return mapGet(map2, key);
|
|
85
86
|
};
|
|
86
|
-
const mapToObj = (
|
|
87
|
+
const mapToObj = (map2, valueMapper, excludeMapValue, excludeObjValue) => {
|
|
87
88
|
const obj = {};
|
|
88
|
-
collForEach(
|
|
89
|
+
collForEach(map2, (mapValue, id) => {
|
|
89
90
|
{
|
|
90
91
|
const objValue = mapValue;
|
|
91
92
|
{
|
|
@@ -303,6 +304,11 @@ const createCustomPersister = (
|
|
|
303
304
|
? store.applyChanges
|
|
304
305
|
: store.setContent)(contentOrChanges);
|
|
305
306
|
};
|
|
307
|
+
const saveAfterMutated = async () => {
|
|
308
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
309
|
+
await save();
|
|
310
|
+
}
|
|
311
|
+
};
|
|
306
312
|
const load = async (initialContent) => {
|
|
307
313
|
/* istanbul ignore else */
|
|
308
314
|
if (status != 2 /* Saving */) {
|
|
@@ -327,6 +333,7 @@ const createCustomPersister = (
|
|
|
327
333
|
},
|
|
328
334
|
);
|
|
329
335
|
setStatus(0 /* Idle */);
|
|
336
|
+
await saveAfterMutated();
|
|
330
337
|
});
|
|
331
338
|
}
|
|
332
339
|
return persister;
|
|
@@ -345,6 +352,7 @@ const createCustomPersister = (
|
|
|
345
352
|
loads++;
|
|
346
353
|
setContentOrChanges(changes ?? content);
|
|
347
354
|
setStatus(0 /* Idle */);
|
|
355
|
+
await saveAfterMutated();
|
|
348
356
|
}
|
|
349
357
|
} else {
|
|
350
358
|
await load();
|