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
|
@@ -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();
|
|
@@ -137,21 +137,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
137
137
|
const objSize = (obj) => size(objIds(obj));
|
|
138
138
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
139
139
|
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
|
|
140
|
+
const map = Map;
|
|
141
|
+
const mapNew = (entries) => new map(entries);
|
|
142
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
143
|
+
const mapForEach = (map2, cb) =>
|
|
144
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
144
145
|
const mapMap = (coll, cb) =>
|
|
145
146
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
146
|
-
const mapSet = (
|
|
147
|
-
isUndefined(value) ? (collDel(
|
|
148
|
-
const mapEnsure = (
|
|
149
|
-
if (!collHas(
|
|
150
|
-
mapSet(
|
|
147
|
+
const mapSet = (map2, key, value) =>
|
|
148
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
149
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
150
|
+
if (!collHas(map2, key)) {
|
|
151
|
+
mapSet(map2, key, getDefaultValue());
|
|
151
152
|
} else {
|
|
152
|
-
hadExistingValue?.(mapGet(
|
|
153
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
153
154
|
}
|
|
154
|
-
return mapGet(
|
|
155
|
+
return mapGet(map2, key);
|
|
155
156
|
};
|
|
156
157
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
157
158
|
ifNotUndefined(
|
|
@@ -306,7 +307,16 @@ const jsonParse = JSON.parse;
|
|
|
306
307
|
const jsonStringWithUndefined = (obj) =>
|
|
307
308
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
308
309
|
const jsonParseWithUndefined = (str) =>
|
|
309
|
-
|
|
310
|
+
// JSON.parse reviver removes properties with undefined values
|
|
311
|
+
replaceUndefinedString(jsonParse(str));
|
|
312
|
+
const replaceUndefinedString = (obj) =>
|
|
313
|
+
obj === UNDEFINED
|
|
314
|
+
? void 0
|
|
315
|
+
: isArray(obj)
|
|
316
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
317
|
+
: isObject(obj)
|
|
318
|
+
? objMap(obj, replaceUndefinedString)
|
|
319
|
+
: obj;
|
|
310
320
|
|
|
311
321
|
const INTEGER = /^\d+$/;
|
|
312
322
|
const getPoolFunctions = () => {
|
|
@@ -478,6 +488,11 @@ const createCustomPersister = (
|
|
|
478
488
|
? store.applyChanges
|
|
479
489
|
: store.setContent)(contentOrChanges);
|
|
480
490
|
};
|
|
491
|
+
const saveAfterMutated = async () => {
|
|
492
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
493
|
+
await save();
|
|
494
|
+
}
|
|
495
|
+
};
|
|
481
496
|
const load = async (initialContent) => {
|
|
482
497
|
/* istanbul ignore else */
|
|
483
498
|
if (status != 2 /* Saving */) {
|
|
@@ -502,6 +517,7 @@ const createCustomPersister = (
|
|
|
502
517
|
},
|
|
503
518
|
);
|
|
504
519
|
setStatus(0 /* Idle */);
|
|
520
|
+
await saveAfterMutated();
|
|
505
521
|
});
|
|
506
522
|
}
|
|
507
523
|
return persister;
|
|
@@ -520,6 +536,7 @@ const createCustomPersister = (
|
|
|
520
536
|
loads++;
|
|
521
537
|
setContentOrChanges(changes ?? content);
|
|
522
538
|
setStatus(0 /* Idle */);
|
|
539
|
+
await saveAfterMutated();
|
|
523
540
|
}
|
|
524
541
|
} else {
|
|
525
542
|
await load();
|
|
@@ -137,21 +137,22 @@ const objValues = (obj) => object.values(obj);
|
|
|
137
137
|
const objSize = (obj) => size(objIds(obj));
|
|
138
138
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
139
139
|
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
|
|
140
|
+
const map = Map;
|
|
141
|
+
const mapNew = (entries) => new map(entries);
|
|
142
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
143
|
+
const mapForEach = (map2, cb) =>
|
|
144
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
144
145
|
const mapMap = (coll, cb) =>
|
|
145
146
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
146
|
-
const mapSet = (
|
|
147
|
-
isUndefined(value) ? (collDel(
|
|
148
|
-
const mapEnsure = (
|
|
149
|
-
if (!collHas(
|
|
150
|
-
mapSet(
|
|
147
|
+
const mapSet = (map2, key, value) =>
|
|
148
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
149
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
150
|
+
if (!collHas(map2, key)) {
|
|
151
|
+
mapSet(map2, key, getDefaultValue());
|
|
151
152
|
} else {
|
|
152
|
-
hadExistingValue?.(mapGet(
|
|
153
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
153
154
|
}
|
|
154
|
-
return mapGet(
|
|
155
|
+
return mapGet(map2, key);
|
|
155
156
|
};
|
|
156
157
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
157
158
|
ifNotUndefined(
|
|
@@ -306,7 +307,16 @@ const jsonParse = JSON.parse;
|
|
|
306
307
|
const jsonStringWithUndefined = (obj) =>
|
|
307
308
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
308
309
|
const jsonParseWithUndefined = (str) =>
|
|
309
|
-
|
|
310
|
+
// JSON.parse reviver removes properties with undefined values
|
|
311
|
+
replaceUndefinedString(jsonParse(str));
|
|
312
|
+
const replaceUndefinedString = (obj) =>
|
|
313
|
+
obj === UNDEFINED
|
|
314
|
+
? void 0
|
|
315
|
+
: isArray(obj)
|
|
316
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
317
|
+
: isObject(obj)
|
|
318
|
+
? objMap(obj, replaceUndefinedString)
|
|
319
|
+
: obj;
|
|
310
320
|
|
|
311
321
|
const INTEGER = /^\d+$/;
|
|
312
322
|
const getPoolFunctions = () => {
|
|
@@ -478,6 +488,11 @@ const createCustomPersister = (
|
|
|
478
488
|
? store.applyChanges
|
|
479
489
|
: store.setContent)(contentOrChanges);
|
|
480
490
|
};
|
|
491
|
+
const saveAfterMutated = async () => {
|
|
492
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
493
|
+
await save();
|
|
494
|
+
}
|
|
495
|
+
};
|
|
481
496
|
const load = async (initialContent) => {
|
|
482
497
|
/* istanbul ignore else */
|
|
483
498
|
if (status != 2 /* Saving */) {
|
|
@@ -502,6 +517,7 @@ const createCustomPersister = (
|
|
|
502
517
|
},
|
|
503
518
|
);
|
|
504
519
|
setStatus(0 /* Idle */);
|
|
520
|
+
await saveAfterMutated();
|
|
505
521
|
});
|
|
506
522
|
}
|
|
507
523
|
return persister;
|
|
@@ -520,6 +536,7 @@ const createCustomPersister = (
|
|
|
520
536
|
loads++;
|
|
521
537
|
setContentOrChanges(changes ?? content);
|
|
522
538
|
setStatus(0 /* Idle */);
|
|
539
|
+
await saveAfterMutated();
|
|
523
540
|
}
|
|
524
541
|
} else {
|
|
525
542
|
await load();
|
|
@@ -28,12 +28,14 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
31
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
31
32
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
32
33
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
33
34
|
const arrayShift = (array) => array.shift();
|
|
34
35
|
|
|
35
36
|
const object = Object;
|
|
36
37
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
38
|
+
const objEntries = object.entries;
|
|
37
39
|
const isObject = (obj) =>
|
|
38
40
|
!isNullish(obj) &&
|
|
39
41
|
ifNotNullish(
|
|
@@ -47,6 +49,11 @@ const isObject = (obj) =>
|
|
|
47
49
|
);
|
|
48
50
|
const objIds = object.keys;
|
|
49
51
|
const objFreeze = object.freeze;
|
|
52
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
53
|
+
const objToArray = (obj, cb) =>
|
|
54
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
55
|
+
const objMap = (obj, cb) =>
|
|
56
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
50
57
|
const objSize = (obj) => size(objIds(obj));
|
|
51
58
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
52
59
|
|
|
@@ -55,7 +62,16 @@ const jsonParse = JSON.parse;
|
|
|
55
62
|
const jsonStringWithUndefined = (obj) =>
|
|
56
63
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
57
64
|
const jsonParseWithUndefined = (str) =>
|
|
58
|
-
|
|
65
|
+
// JSON.parse reviver removes properties with undefined values
|
|
66
|
+
replaceUndefinedString(jsonParse(str));
|
|
67
|
+
const replaceUndefinedString = (obj) =>
|
|
68
|
+
obj === UNDEFINED
|
|
69
|
+
? void 0
|
|
70
|
+
: isArray(obj)
|
|
71
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
72
|
+
: isObject(obj)
|
|
73
|
+
? objMap(obj, replaceUndefinedString)
|
|
74
|
+
: obj;
|
|
59
75
|
|
|
60
76
|
const collSize = (coll) => coll?.size ?? 0;
|
|
61
77
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -63,17 +79,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
63
79
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
64
80
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
65
81
|
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
const map = Map;
|
|
83
|
+
const mapNew = (entries) => new map(entries);
|
|
84
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
85
|
+
const mapSet = (map2, key, value) =>
|
|
86
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
87
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
88
|
+
if (!collHas(map2, key)) {
|
|
89
|
+
mapSet(map2, key, getDefaultValue());
|
|
73
90
|
} else {
|
|
74
|
-
hadExistingValue?.(mapGet(
|
|
91
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
75
92
|
}
|
|
76
|
-
return mapGet(
|
|
93
|
+
return mapGet(map2, key);
|
|
77
94
|
};
|
|
78
95
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
79
96
|
ifNotUndefined(
|
|
@@ -275,6 +292,11 @@ const createCustomPersister = (
|
|
|
275
292
|
? store.applyChanges
|
|
276
293
|
: store.setContent)(contentOrChanges);
|
|
277
294
|
};
|
|
295
|
+
const saveAfterMutated = async () => {
|
|
296
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
297
|
+
await save();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
278
300
|
const load = async (initialContent) => {
|
|
279
301
|
/* istanbul ignore else */
|
|
280
302
|
if (status != 2 /* Saving */) {
|
|
@@ -299,6 +321,7 @@ const createCustomPersister = (
|
|
|
299
321
|
},
|
|
300
322
|
);
|
|
301
323
|
setStatus(0 /* Idle */);
|
|
324
|
+
await saveAfterMutated();
|
|
302
325
|
});
|
|
303
326
|
}
|
|
304
327
|
return persister;
|
|
@@ -317,6 +340,7 @@ const createCustomPersister = (
|
|
|
317
340
|
loads++;
|
|
318
341
|
setContentOrChanges(changes ?? content);
|
|
319
342
|
setStatus(0 /* Idle */);
|
|
343
|
+
await saveAfterMutated();
|
|
320
344
|
}
|
|
321
345
|
} else {
|
|
322
346
|
await load();
|
|
@@ -28,12 +28,14 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
31
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
31
32
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
32
33
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
33
34
|
const arrayShift = (array) => array.shift();
|
|
34
35
|
|
|
35
36
|
const object = Object;
|
|
36
37
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
38
|
+
const objEntries = object.entries;
|
|
37
39
|
const isObject = (obj) =>
|
|
38
40
|
!isNullish(obj) &&
|
|
39
41
|
ifNotNullish(
|
|
@@ -47,6 +49,11 @@ const isObject = (obj) =>
|
|
|
47
49
|
);
|
|
48
50
|
const objIds = object.keys;
|
|
49
51
|
const objFreeze = object.freeze;
|
|
52
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
53
|
+
const objToArray = (obj, cb) =>
|
|
54
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
55
|
+
const objMap = (obj, cb) =>
|
|
56
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
50
57
|
const objSize = (obj) => size(objIds(obj));
|
|
51
58
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
52
59
|
|
|
@@ -55,7 +62,16 @@ const jsonParse = JSON.parse;
|
|
|
55
62
|
const jsonStringWithUndefined = (obj) =>
|
|
56
63
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
57
64
|
const jsonParseWithUndefined = (str) =>
|
|
58
|
-
|
|
65
|
+
// JSON.parse reviver removes properties with undefined values
|
|
66
|
+
replaceUndefinedString(jsonParse(str));
|
|
67
|
+
const replaceUndefinedString = (obj) =>
|
|
68
|
+
obj === UNDEFINED
|
|
69
|
+
? void 0
|
|
70
|
+
: isArray(obj)
|
|
71
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
72
|
+
: isObject(obj)
|
|
73
|
+
? objMap(obj, replaceUndefinedString)
|
|
74
|
+
: obj;
|
|
59
75
|
|
|
60
76
|
const collSize = (coll) => coll?.size ?? 0;
|
|
61
77
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -63,17 +79,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
63
79
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
64
80
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
65
81
|
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
const map = Map;
|
|
83
|
+
const mapNew = (entries) => new map(entries);
|
|
84
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
85
|
+
const mapSet = (map2, key, value) =>
|
|
86
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
87
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
88
|
+
if (!collHas(map2, key)) {
|
|
89
|
+
mapSet(map2, key, getDefaultValue());
|
|
73
90
|
} else {
|
|
74
|
-
hadExistingValue?.(mapGet(
|
|
91
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
75
92
|
}
|
|
76
|
-
return mapGet(
|
|
93
|
+
return mapGet(map2, key);
|
|
77
94
|
};
|
|
78
95
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
79
96
|
ifNotUndefined(
|
|
@@ -275,6 +292,11 @@ const createCustomPersister = (
|
|
|
275
292
|
? store.applyChanges
|
|
276
293
|
: store.setContent)(contentOrChanges);
|
|
277
294
|
};
|
|
295
|
+
const saveAfterMutated = async () => {
|
|
296
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
297
|
+
await save();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
278
300
|
const load = async (initialContent) => {
|
|
279
301
|
/* istanbul ignore else */
|
|
280
302
|
if (status != 2 /* Saving */) {
|
|
@@ -299,6 +321,7 @@ const createCustomPersister = (
|
|
|
299
321
|
},
|
|
300
322
|
);
|
|
301
323
|
setStatus(0 /* Idle */);
|
|
324
|
+
await saveAfterMutated();
|
|
302
325
|
});
|
|
303
326
|
}
|
|
304
327
|
return persister;
|
|
@@ -317,6 +340,7 @@ const createCustomPersister = (
|
|
|
317
340
|
loads++;
|
|
318
341
|
setContentOrChanges(changes ?? content);
|
|
319
342
|
setStatus(0 /* Idle */);
|
|
343
|
+
await saveAfterMutated();
|
|
320
344
|
}
|
|
321
345
|
} else {
|
|
322
346
|
await load();
|
|
@@ -69,17 +69,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
69
69
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
70
70
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
71
71
|
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const map = Map;
|
|
73
|
+
const mapNew = (entries) => new map(entries);
|
|
74
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
75
|
+
const mapSet = (map2, key, value) =>
|
|
76
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
77
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
78
|
+
if (!collHas(map2, key)) {
|
|
79
|
+
mapSet(map2, key, getDefaultValue());
|
|
79
80
|
} else {
|
|
80
|
-
hadExistingValue?.(mapGet(
|
|
81
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
81
82
|
}
|
|
82
|
-
return mapGet(
|
|
83
|
+
return mapGet(map2, key);
|
|
83
84
|
};
|
|
84
85
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
85
86
|
ifNotUndefined(
|
|
@@ -281,6 +282,11 @@ const createCustomPersister = (
|
|
|
281
282
|
? store.applyChanges
|
|
282
283
|
: store.setContent)(contentOrChanges);
|
|
283
284
|
};
|
|
285
|
+
const saveAfterMutated = async () => {
|
|
286
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
287
|
+
await save();
|
|
288
|
+
}
|
|
289
|
+
};
|
|
284
290
|
const load = async (initialContent) => {
|
|
285
291
|
/* istanbul ignore else */
|
|
286
292
|
if (status != 2 /* Saving */) {
|
|
@@ -305,6 +311,7 @@ const createCustomPersister = (
|
|
|
305
311
|
},
|
|
306
312
|
);
|
|
307
313
|
setStatus(0 /* Idle */);
|
|
314
|
+
await saveAfterMutated();
|
|
308
315
|
});
|
|
309
316
|
}
|
|
310
317
|
return persister;
|
|
@@ -323,6 +330,7 @@ const createCustomPersister = (
|
|
|
323
330
|
loads++;
|
|
324
331
|
setContentOrChanges(changes ?? content);
|
|
325
332
|
setStatus(0 /* Idle */);
|
|
333
|
+
await saveAfterMutated();
|
|
326
334
|
}
|
|
327
335
|
} else {
|
|
328
336
|
await load();
|
|
@@ -69,17 +69,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
69
69
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
70
70
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
71
71
|
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const map = Map;
|
|
73
|
+
const mapNew = (entries) => new map(entries);
|
|
74
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
75
|
+
const mapSet = (map2, key, value) =>
|
|
76
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
77
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
78
|
+
if (!collHas(map2, key)) {
|
|
79
|
+
mapSet(map2, key, getDefaultValue());
|
|
79
80
|
} else {
|
|
80
|
-
hadExistingValue?.(mapGet(
|
|
81
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
81
82
|
}
|
|
82
|
-
return mapGet(
|
|
83
|
+
return mapGet(map2, key);
|
|
83
84
|
};
|
|
84
85
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
85
86
|
ifNotUndefined(
|
|
@@ -281,6 +282,11 @@ const createCustomPersister = (
|
|
|
281
282
|
? store.applyChanges
|
|
282
283
|
: store.setContent)(contentOrChanges);
|
|
283
284
|
};
|
|
285
|
+
const saveAfterMutated = async () => {
|
|
286
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
287
|
+
await save();
|
|
288
|
+
}
|
|
289
|
+
};
|
|
284
290
|
const load = async (initialContent) => {
|
|
285
291
|
/* istanbul ignore else */
|
|
286
292
|
if (status != 2 /* Saving */) {
|
|
@@ -305,6 +311,7 @@ const createCustomPersister = (
|
|
|
305
311
|
},
|
|
306
312
|
);
|
|
307
313
|
setStatus(0 /* Idle */);
|
|
314
|
+
await saveAfterMutated();
|
|
308
315
|
});
|
|
309
316
|
}
|
|
310
317
|
return persister;
|
|
@@ -323,6 +330,7 @@ const createCustomPersister = (
|
|
|
323
330
|
loads++;
|
|
324
331
|
setContentOrChanges(changes ?? content);
|
|
325
332
|
setStatus(0 /* Idle */);
|
|
333
|
+
await saveAfterMutated();
|
|
326
334
|
}
|
|
327
335
|
} else {
|
|
328
336
|
await load();
|