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
|
@@ -75,17 +75,18 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
75
75
|
return obj[id];
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
const map = Map;
|
|
79
|
+
const mapNew = (entries) => new map(entries);
|
|
80
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
81
|
+
const mapSet = (map2, key, value) =>
|
|
82
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
83
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
84
|
+
if (!collHas(map2, key)) {
|
|
85
|
+
mapSet(map2, key, getDefaultValue());
|
|
85
86
|
} else {
|
|
86
|
-
hadExistingValue?.(mapGet(
|
|
87
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
87
88
|
}
|
|
88
|
-
return mapGet(
|
|
89
|
+
return mapGet(map2, key);
|
|
89
90
|
};
|
|
90
91
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
91
92
|
ifNotUndefined(
|
|
@@ -309,6 +310,11 @@ const createCustomPersister = (
|
|
|
309
310
|
? store.applyChanges
|
|
310
311
|
: store.setContent)(contentOrChanges);
|
|
311
312
|
};
|
|
313
|
+
const saveAfterMutated = async () => {
|
|
314
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
315
|
+
await save();
|
|
316
|
+
}
|
|
317
|
+
};
|
|
312
318
|
const load = async (initialContent) => {
|
|
313
319
|
/* istanbul ignore else */
|
|
314
320
|
if (status != 2 /* Saving */) {
|
|
@@ -333,6 +339,7 @@ const createCustomPersister = (
|
|
|
333
339
|
},
|
|
334
340
|
);
|
|
335
341
|
setStatus(0 /* Idle */);
|
|
342
|
+
await saveAfterMutated();
|
|
336
343
|
});
|
|
337
344
|
}
|
|
338
345
|
return persister;
|
|
@@ -351,6 +358,7 @@ const createCustomPersister = (
|
|
|
351
358
|
loads++;
|
|
352
359
|
setContentOrChanges(changes ?? content);
|
|
353
360
|
setStatus(0 /* Idle */);
|
|
361
|
+
await saveAfterMutated();
|
|
354
362
|
}
|
|
355
363
|
} else {
|
|
356
364
|
await load();
|
|
@@ -75,19 +75,20 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
75
75
|
return obj[id];
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
const map = Map;
|
|
79
|
+
const mapNew = (entries) => new map(entries);
|
|
80
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
81
|
+
const mapForEach = (map2, cb) =>
|
|
82
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
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());
|
|
87
88
|
} else {
|
|
88
|
-
hadExistingValue?.(mapGet(
|
|
89
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
89
90
|
}
|
|
90
|
-
return mapGet(
|
|
91
|
+
return mapGet(map2, key);
|
|
91
92
|
};
|
|
92
93
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
93
94
|
ifNotUndefined(
|
|
@@ -311,6 +312,11 @@ const createCustomPersister = (
|
|
|
311
312
|
? store.applyChanges
|
|
312
313
|
: store.setContent)(contentOrChanges);
|
|
313
314
|
};
|
|
315
|
+
const saveAfterMutated = async () => {
|
|
316
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
317
|
+
await save();
|
|
318
|
+
}
|
|
319
|
+
};
|
|
314
320
|
const load = async (initialContent) => {
|
|
315
321
|
/* istanbul ignore else */
|
|
316
322
|
if (status != 2 /* Saving */) {
|
|
@@ -335,6 +341,7 @@ const createCustomPersister = (
|
|
|
335
341
|
},
|
|
336
342
|
);
|
|
337
343
|
setStatus(0 /* Idle */);
|
|
344
|
+
await saveAfterMutated();
|
|
338
345
|
});
|
|
339
346
|
}
|
|
340
347
|
return persister;
|
|
@@ -353,6 +360,7 @@ const createCustomPersister = (
|
|
|
353
360
|
loads++;
|
|
354
361
|
setContentOrChanges(changes ?? content);
|
|
355
362
|
setStatus(0 /* Idle */);
|
|
363
|
+
await saveAfterMutated();
|
|
356
364
|
}
|
|
357
365
|
} else {
|
|
358
366
|
await load();
|
|
@@ -75,19 +75,20 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
75
75
|
return obj[id];
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
const map = Map;
|
|
79
|
+
const mapNew = (entries) => new map(entries);
|
|
80
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
81
|
+
const mapForEach = (map2, cb) =>
|
|
82
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
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());
|
|
87
88
|
} else {
|
|
88
|
-
hadExistingValue?.(mapGet(
|
|
89
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
89
90
|
}
|
|
90
|
-
return mapGet(
|
|
91
|
+
return mapGet(map2, key);
|
|
91
92
|
};
|
|
92
93
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
93
94
|
ifNotUndefined(
|
|
@@ -311,6 +312,11 @@ const createCustomPersister = (
|
|
|
311
312
|
? store.applyChanges
|
|
312
313
|
: store.setContent)(contentOrChanges);
|
|
313
314
|
};
|
|
315
|
+
const saveAfterMutated = async () => {
|
|
316
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
317
|
+
await save();
|
|
318
|
+
}
|
|
319
|
+
};
|
|
314
320
|
const load = async (initialContent) => {
|
|
315
321
|
/* istanbul ignore else */
|
|
316
322
|
if (status != 2 /* Saving */) {
|
|
@@ -335,6 +341,7 @@ const createCustomPersister = (
|
|
|
335
341
|
},
|
|
336
342
|
);
|
|
337
343
|
setStatus(0 /* Idle */);
|
|
344
|
+
await saveAfterMutated();
|
|
338
345
|
});
|
|
339
346
|
}
|
|
340
347
|
return persister;
|
|
@@ -353,6 +360,7 @@ const createCustomPersister = (
|
|
|
353
360
|
loads++;
|
|
354
361
|
setContentOrChanges(changes ?? content);
|
|
355
362
|
setStatus(0 /* Idle */);
|
|
363
|
+
await saveAfterMutated();
|
|
356
364
|
}
|
|
357
365
|
} else {
|
|
358
366
|
await load();
|
|
@@ -66,6 +66,10 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
66
66
|
const objHas = (obj, id) => id in obj;
|
|
67
67
|
const objForEach = (obj, cb) =>
|
|
68
68
|
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
69
|
+
const objToArray = (obj, cb) =>
|
|
70
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
71
|
+
const objMap = (obj, cb) =>
|
|
72
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
69
73
|
const objSize = (obj) => size(objIds(obj));
|
|
70
74
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
71
75
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -80,7 +84,16 @@ const jsonParse = JSON.parse;
|
|
|
80
84
|
const jsonStringWithUndefined = (obj) =>
|
|
81
85
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
82
86
|
const jsonParseWithUndefined = (str) =>
|
|
83
|
-
|
|
87
|
+
// JSON.parse reviver removes properties with undefined values
|
|
88
|
+
replaceUndefinedString(jsonParse(str));
|
|
89
|
+
const replaceUndefinedString = (obj) =>
|
|
90
|
+
obj === UNDEFINED
|
|
91
|
+
? void 0
|
|
92
|
+
: isArray(obj)
|
|
93
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
94
|
+
: isObject(obj)
|
|
95
|
+
? objMap(obj, replaceUndefinedString)
|
|
96
|
+
: obj;
|
|
84
97
|
|
|
85
98
|
const MESSAGE_SEPARATOR = '\n';
|
|
86
99
|
const ifPayloadValid = (payload, then) => {
|
|
@@ -104,17 +117,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
104
117
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
105
118
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
106
119
|
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
const map = Map;
|
|
121
|
+
const mapNew = (entries) => new map(entries);
|
|
122
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
123
|
+
const mapSet = (map2, key, value) =>
|
|
124
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
125
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
126
|
+
if (!collHas(map2, key)) {
|
|
127
|
+
mapSet(map2, key, getDefaultValue());
|
|
114
128
|
} else {
|
|
115
|
-
hadExistingValue?.(mapGet(
|
|
129
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
116
130
|
}
|
|
117
|
-
return mapGet(
|
|
131
|
+
return mapGet(map2, key);
|
|
118
132
|
};
|
|
119
133
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
120
134
|
ifNotUndefined(
|
|
@@ -338,6 +352,11 @@ const createCustomPersister = (
|
|
|
338
352
|
? store.applyChanges
|
|
339
353
|
: store.setContent)(contentOrChanges);
|
|
340
354
|
};
|
|
355
|
+
const saveAfterMutated = async () => {
|
|
356
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
357
|
+
await save();
|
|
358
|
+
}
|
|
359
|
+
};
|
|
341
360
|
const load = async (initialContent) => {
|
|
342
361
|
/* istanbul ignore else */
|
|
343
362
|
if (status != 2 /* Saving */) {
|
|
@@ -362,6 +381,7 @@ const createCustomPersister = (
|
|
|
362
381
|
},
|
|
363
382
|
);
|
|
364
383
|
setStatus(0 /* Idle */);
|
|
384
|
+
await saveAfterMutated();
|
|
365
385
|
});
|
|
366
386
|
}
|
|
367
387
|
return persister;
|
|
@@ -380,6 +400,7 @@ const createCustomPersister = (
|
|
|
380
400
|
loads++;
|
|
381
401
|
setContentOrChanges(changes ?? content);
|
|
382
402
|
setStatus(0 /* Idle */);
|
|
403
|
+
await saveAfterMutated();
|
|
383
404
|
}
|
|
384
405
|
} else {
|
|
385
406
|
await load();
|
|
@@ -66,6 +66,10 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
66
66
|
const objHas = (obj, id) => id in obj;
|
|
67
67
|
const objForEach = (obj, cb) =>
|
|
68
68
|
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
69
|
+
const objToArray = (obj, cb) =>
|
|
70
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
71
|
+
const objMap = (obj, cb) =>
|
|
72
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
69
73
|
const objSize = (obj) => size(objIds(obj));
|
|
70
74
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
71
75
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -80,7 +84,16 @@ const jsonParse = JSON.parse;
|
|
|
80
84
|
const jsonStringWithUndefined = (obj) =>
|
|
81
85
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
82
86
|
const jsonParseWithUndefined = (str) =>
|
|
83
|
-
|
|
87
|
+
// JSON.parse reviver removes properties with undefined values
|
|
88
|
+
replaceUndefinedString(jsonParse(str));
|
|
89
|
+
const replaceUndefinedString = (obj) =>
|
|
90
|
+
obj === UNDEFINED
|
|
91
|
+
? void 0
|
|
92
|
+
: isArray(obj)
|
|
93
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
94
|
+
: isObject(obj)
|
|
95
|
+
? objMap(obj, replaceUndefinedString)
|
|
96
|
+
: obj;
|
|
84
97
|
|
|
85
98
|
const MESSAGE_SEPARATOR = '\n';
|
|
86
99
|
const ifPayloadValid = (payload, then) => {
|
|
@@ -104,17 +117,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
104
117
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
105
118
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
106
119
|
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
const map = Map;
|
|
121
|
+
const mapNew = (entries) => new map(entries);
|
|
122
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
123
|
+
const mapSet = (map2, key, value) =>
|
|
124
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
125
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
126
|
+
if (!collHas(map2, key)) {
|
|
127
|
+
mapSet(map2, key, getDefaultValue());
|
|
114
128
|
} else {
|
|
115
|
-
hadExistingValue?.(mapGet(
|
|
129
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
116
130
|
}
|
|
117
|
-
return mapGet(
|
|
131
|
+
return mapGet(map2, key);
|
|
118
132
|
};
|
|
119
133
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
120
134
|
ifNotUndefined(
|
|
@@ -338,6 +352,11 @@ const createCustomPersister = (
|
|
|
338
352
|
? store.applyChanges
|
|
339
353
|
: store.setContent)(contentOrChanges);
|
|
340
354
|
};
|
|
355
|
+
const saveAfterMutated = async () => {
|
|
356
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
357
|
+
await save();
|
|
358
|
+
}
|
|
359
|
+
};
|
|
341
360
|
const load = async (initialContent) => {
|
|
342
361
|
/* istanbul ignore else */
|
|
343
362
|
if (status != 2 /* Saving */) {
|
|
@@ -362,6 +381,7 @@ const createCustomPersister = (
|
|
|
362
381
|
},
|
|
363
382
|
);
|
|
364
383
|
setStatus(0 /* Idle */);
|
|
384
|
+
await saveAfterMutated();
|
|
365
385
|
});
|
|
366
386
|
}
|
|
367
387
|
return persister;
|
|
@@ -380,6 +400,7 @@ const createCustomPersister = (
|
|
|
380
400
|
loads++;
|
|
381
401
|
setContentOrChanges(changes ?? content);
|
|
382
402
|
setStatus(0 /* Idle */);
|
|
403
|
+
await saveAfterMutated();
|
|
383
404
|
}
|
|
384
405
|
} else {
|
|
385
406
|
await load();
|
|
@@ -79,6 +79,10 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
79
79
|
const objHas = (obj, id) => id in obj;
|
|
80
80
|
const objForEach = (obj, cb) =>
|
|
81
81
|
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
82
|
+
const objToArray = (obj, cb) =>
|
|
83
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
84
|
+
const objMap = (obj, cb) =>
|
|
85
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
82
86
|
const objSize = (obj) => size(objIds(obj));
|
|
83
87
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
84
88
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -88,22 +92,23 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
88
92
|
return obj[id];
|
|
89
93
|
};
|
|
90
94
|
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
95
|
+
const map = Map;
|
|
96
|
+
const mapNew = (entries) => new map(entries);
|
|
97
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
98
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
99
|
+
const mapForEach = (map2, cb) =>
|
|
100
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
96
101
|
const mapMap = (coll, cb) =>
|
|
97
102
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
98
|
-
const mapSet = (
|
|
99
|
-
isUndefined(value) ? (collDel(
|
|
100
|
-
const mapEnsure = (
|
|
101
|
-
if (!collHas(
|
|
102
|
-
mapSet(
|
|
103
|
+
const mapSet = (map2, key, value) =>
|
|
104
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
105
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
106
|
+
if (!collHas(map2, key)) {
|
|
107
|
+
mapSet(map2, key, getDefaultValue());
|
|
103
108
|
} else {
|
|
104
|
-
hadExistingValue?.(mapGet(
|
|
109
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
105
110
|
}
|
|
106
|
-
return mapGet(
|
|
111
|
+
return mapGet(map2, key);
|
|
107
112
|
};
|
|
108
113
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
109
114
|
ifNotUndefined(
|
|
@@ -226,7 +231,16 @@ const jsonParse = JSON.parse;
|
|
|
226
231
|
const jsonStringWithUndefined = (obj) =>
|
|
227
232
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
228
233
|
const jsonParseWithUndefined = (str) =>
|
|
229
|
-
|
|
234
|
+
// JSON.parse reviver removes properties with undefined values
|
|
235
|
+
replaceUndefinedString(jsonParse(str));
|
|
236
|
+
const replaceUndefinedString = (obj) =>
|
|
237
|
+
obj === UNDEFINED
|
|
238
|
+
? void 0
|
|
239
|
+
: isArray(obj)
|
|
240
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
241
|
+
: isObject(obj)
|
|
242
|
+
? objMap(obj, replaceUndefinedString)
|
|
243
|
+
: obj;
|
|
230
244
|
|
|
231
245
|
const MESSAGE_SEPARATOR = '\n';
|
|
232
246
|
const ifPayloadValid = (payload, then) => {
|
|
@@ -350,6 +364,11 @@ const createCustomPersister = (
|
|
|
350
364
|
? store.applyChanges
|
|
351
365
|
: store.setContent)(contentOrChanges);
|
|
352
366
|
};
|
|
367
|
+
const saveAfterMutated = async () => {
|
|
368
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
369
|
+
await save();
|
|
370
|
+
}
|
|
371
|
+
};
|
|
353
372
|
const load = async (initialContent) => {
|
|
354
373
|
/* istanbul ignore else */
|
|
355
374
|
if (status != 2 /* Saving */) {
|
|
@@ -374,6 +393,7 @@ const createCustomPersister = (
|
|
|
374
393
|
},
|
|
375
394
|
);
|
|
376
395
|
setStatus(0 /* Idle */);
|
|
396
|
+
await saveAfterMutated();
|
|
377
397
|
});
|
|
378
398
|
}
|
|
379
399
|
return persister;
|
|
@@ -392,6 +412,7 @@ const createCustomPersister = (
|
|
|
392
412
|
loads++;
|
|
393
413
|
setContentOrChanges(changes ?? content);
|
|
394
414
|
setStatus(0 /* Idle */);
|
|
415
|
+
await saveAfterMutated();
|
|
395
416
|
}
|
|
396
417
|
} else {
|
|
397
418
|
await load();
|
|
@@ -79,6 +79,10 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
79
79
|
const objHas = (obj, id) => id in obj;
|
|
80
80
|
const objForEach = (obj, cb) =>
|
|
81
81
|
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
82
|
+
const objToArray = (obj, cb) =>
|
|
83
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
84
|
+
const objMap = (obj, cb) =>
|
|
85
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
82
86
|
const objSize = (obj) => size(objIds(obj));
|
|
83
87
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
84
88
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
@@ -88,22 +92,23 @@ const objEnsure = (obj, id, getDefaultValue) => {
|
|
|
88
92
|
return obj[id];
|
|
89
93
|
};
|
|
90
94
|
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
95
|
+
const map = Map;
|
|
96
|
+
const mapNew = (entries) => new map(entries);
|
|
97
|
+
const mapKeys = (map2) => [...(map2?.keys() ?? [])];
|
|
98
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
99
|
+
const mapForEach = (map2, cb) =>
|
|
100
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
96
101
|
const mapMap = (coll, cb) =>
|
|
97
102
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
98
|
-
const mapSet = (
|
|
99
|
-
isUndefined(value) ? (collDel(
|
|
100
|
-
const mapEnsure = (
|
|
101
|
-
if (!collHas(
|
|
102
|
-
mapSet(
|
|
103
|
+
const mapSet = (map2, key, value) =>
|
|
104
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
105
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
106
|
+
if (!collHas(map2, key)) {
|
|
107
|
+
mapSet(map2, key, getDefaultValue());
|
|
103
108
|
} else {
|
|
104
|
-
hadExistingValue?.(mapGet(
|
|
109
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
105
110
|
}
|
|
106
|
-
return mapGet(
|
|
111
|
+
return mapGet(map2, key);
|
|
107
112
|
};
|
|
108
113
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
109
114
|
ifNotUndefined(
|
|
@@ -226,7 +231,16 @@ const jsonParse = JSON.parse;
|
|
|
226
231
|
const jsonStringWithUndefined = (obj) =>
|
|
227
232
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
228
233
|
const jsonParseWithUndefined = (str) =>
|
|
229
|
-
|
|
234
|
+
// JSON.parse reviver removes properties with undefined values
|
|
235
|
+
replaceUndefinedString(jsonParse(str));
|
|
236
|
+
const replaceUndefinedString = (obj) =>
|
|
237
|
+
obj === UNDEFINED
|
|
238
|
+
? void 0
|
|
239
|
+
: isArray(obj)
|
|
240
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
241
|
+
: isObject(obj)
|
|
242
|
+
? objMap(obj, replaceUndefinedString)
|
|
243
|
+
: obj;
|
|
230
244
|
|
|
231
245
|
const MESSAGE_SEPARATOR = '\n';
|
|
232
246
|
const ifPayloadValid = (payload, then) => {
|
|
@@ -350,6 +364,11 @@ const createCustomPersister = (
|
|
|
350
364
|
? store.applyChanges
|
|
351
365
|
: store.setContent)(contentOrChanges);
|
|
352
366
|
};
|
|
367
|
+
const saveAfterMutated = async () => {
|
|
368
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
369
|
+
await save();
|
|
370
|
+
}
|
|
371
|
+
};
|
|
353
372
|
const load = async (initialContent) => {
|
|
354
373
|
/* istanbul ignore else */
|
|
355
374
|
if (status != 2 /* Saving */) {
|
|
@@ -374,6 +393,7 @@ const createCustomPersister = (
|
|
|
374
393
|
},
|
|
375
394
|
);
|
|
376
395
|
setStatus(0 /* Idle */);
|
|
396
|
+
await saveAfterMutated();
|
|
377
397
|
});
|
|
378
398
|
}
|
|
379
399
|
return persister;
|
|
@@ -392,6 +412,7 @@ const createCustomPersister = (
|
|
|
392
412
|
loads++;
|
|
393
413
|
setContentOrChanges(changes ?? content);
|
|
394
414
|
setStatus(0 /* Idle */);
|
|
415
|
+
await saveAfterMutated();
|
|
395
416
|
}
|
|
396
417
|
} else {
|
|
397
418
|
await load();
|
|
@@ -67,6 +67,10 @@ const objNew = (entries = []) => object.fromEntries(entries);
|
|
|
67
67
|
const objHas = (obj, id) => id in obj;
|
|
68
68
|
const objForEach = (obj, cb) =>
|
|
69
69
|
arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
|
|
70
|
+
const objToArray = (obj, cb) =>
|
|
71
|
+
arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
|
|
72
|
+
const objMap = (obj, cb) =>
|
|
73
|
+
objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
|
|
70
74
|
const objValues = (obj) => object.values(obj);
|
|
71
75
|
const objSize = (obj) => size(objIds(obj));
|
|
72
76
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
@@ -82,7 +86,16 @@ const jsonParse = JSON.parse;
|
|
|
82
86
|
const jsonStringWithUndefined = (obj) =>
|
|
83
87
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
84
88
|
const jsonParseWithUndefined = (str) =>
|
|
85
|
-
|
|
89
|
+
// JSON.parse reviver removes properties with undefined values
|
|
90
|
+
replaceUndefinedString(jsonParse(str));
|
|
91
|
+
const replaceUndefinedString = (obj) =>
|
|
92
|
+
obj === UNDEFINED
|
|
93
|
+
? void 0
|
|
94
|
+
: isArray(obj)
|
|
95
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
96
|
+
: isObject(obj)
|
|
97
|
+
? objMap(obj, replaceUndefinedString)
|
|
98
|
+
: obj;
|
|
86
99
|
|
|
87
100
|
const MESSAGE_SEPARATOR = '\n';
|
|
88
101
|
const ifPayloadValid = (payload, then) => {
|
|
@@ -106,17 +119,18 @@ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
|
106
119
|
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
107
120
|
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
108
121
|
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
122
|
+
const map = Map;
|
|
123
|
+
const mapNew = (entries) => new map(entries);
|
|
124
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
125
|
+
const mapSet = (map2, key, value) =>
|
|
126
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
127
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
128
|
+
if (!collHas(map2, key)) {
|
|
129
|
+
mapSet(map2, key, getDefaultValue());
|
|
116
130
|
} else {
|
|
117
|
-
hadExistingValue?.(mapGet(
|
|
131
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
118
132
|
}
|
|
119
|
-
return mapGet(
|
|
133
|
+
return mapGet(map2, key);
|
|
120
134
|
};
|
|
121
135
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
122
136
|
ifNotUndefined(
|
|
@@ -340,6 +354,11 @@ const createCustomPersister = (
|
|
|
340
354
|
? store.applyChanges
|
|
341
355
|
: store.setContent)(contentOrChanges);
|
|
342
356
|
};
|
|
357
|
+
const saveAfterMutated = async () => {
|
|
358
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
359
|
+
await save();
|
|
360
|
+
}
|
|
361
|
+
};
|
|
343
362
|
const load = async (initialContent) => {
|
|
344
363
|
/* istanbul ignore else */
|
|
345
364
|
if (status != 2 /* Saving */) {
|
|
@@ -364,6 +383,7 @@ const createCustomPersister = (
|
|
|
364
383
|
},
|
|
365
384
|
);
|
|
366
385
|
setStatus(0 /* Idle */);
|
|
386
|
+
await saveAfterMutated();
|
|
367
387
|
});
|
|
368
388
|
}
|
|
369
389
|
return persister;
|
|
@@ -382,6 +402,7 @@ const createCustomPersister = (
|
|
|
382
402
|
loads++;
|
|
383
403
|
setContentOrChanges(changes ?? content);
|
|
384
404
|
setStatus(0 /* Idle */);
|
|
405
|
+
await saveAfterMutated();
|
|
385
406
|
}
|
|
386
407
|
} else {
|
|
387
408
|
await load();
|