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
|
@@ -93,7 +93,16 @@ const jsonParse = JSON.parse;
|
|
|
93
93
|
const jsonStringWithUndefined = (obj) =>
|
|
94
94
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
95
95
|
const jsonParseWithUndefined = (str) =>
|
|
96
|
-
|
|
96
|
+
// JSON.parse reviver removes properties with undefined values
|
|
97
|
+
replaceUndefinedString(jsonParse(str));
|
|
98
|
+
const replaceUndefinedString = (obj) =>
|
|
99
|
+
obj === UNDEFINED
|
|
100
|
+
? void 0
|
|
101
|
+
: isArray(obj)
|
|
102
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
103
|
+
: isObject(obj)
|
|
104
|
+
? objMap(obj, replaceUndefinedString)
|
|
105
|
+
: obj;
|
|
97
106
|
|
|
98
107
|
const textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();
|
|
99
108
|
const getHash = (string) => {
|
|
@@ -106,21 +115,22 @@ const getHash = (string) => {
|
|
|
106
115
|
return hash >>> 0;
|
|
107
116
|
};
|
|
108
117
|
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
|
|
118
|
+
const map = Map;
|
|
119
|
+
const mapNew = (entries) => new map(entries);
|
|
120
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
121
|
+
const mapForEach = (map2, cb) =>
|
|
122
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
113
123
|
const mapMap = (coll, cb) =>
|
|
114
124
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
115
|
-
const mapSet = (
|
|
116
|
-
isUndefined(value) ? (collDel(
|
|
117
|
-
const mapEnsure = (
|
|
118
|
-
if (!collHas(
|
|
119
|
-
mapSet(
|
|
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());
|
|
120
130
|
} else {
|
|
121
|
-
hadExistingValue?.(mapGet(
|
|
131
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
122
132
|
}
|
|
123
|
-
return mapGet(
|
|
133
|
+
return mapGet(map2, key);
|
|
124
134
|
};
|
|
125
135
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
126
136
|
ifNotUndefined(
|
|
@@ -481,6 +491,11 @@ const createCustomPersister = (
|
|
|
481
491
|
? store.applyChanges
|
|
482
492
|
: store.setContent)(contentOrChanges);
|
|
483
493
|
};
|
|
494
|
+
const saveAfterMutated = async () => {
|
|
495
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
496
|
+
await save();
|
|
497
|
+
}
|
|
498
|
+
};
|
|
484
499
|
const load = async (initialContent) => {
|
|
485
500
|
/* istanbul ignore else */
|
|
486
501
|
if (status != 2 /* Saving */) {
|
|
@@ -505,6 +520,7 @@ const createCustomPersister = (
|
|
|
505
520
|
},
|
|
506
521
|
);
|
|
507
522
|
setStatus(0 /* Idle */);
|
|
523
|
+
await saveAfterMutated();
|
|
508
524
|
});
|
|
509
525
|
}
|
|
510
526
|
return persister;
|
|
@@ -523,6 +539,7 @@ const createCustomPersister = (
|
|
|
523
539
|
loads++;
|
|
524
540
|
setContentOrChanges(changes ?? content);
|
|
525
541
|
setStatus(0 /* Idle */);
|
|
542
|
+
await saveAfterMutated();
|
|
526
543
|
}
|
|
527
544
|
} else {
|
|
528
545
|
await load();
|
|
@@ -92,7 +92,16 @@ const jsonParse = JSON.parse;
|
|
|
92
92
|
const jsonStringWithUndefined = (obj) =>
|
|
93
93
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
94
94
|
const jsonParseWithUndefined = (str) =>
|
|
95
|
-
|
|
95
|
+
// JSON.parse reviver removes properties with undefined values
|
|
96
|
+
replaceUndefinedString(jsonParse(str));
|
|
97
|
+
const replaceUndefinedString = (obj) =>
|
|
98
|
+
obj === UNDEFINED
|
|
99
|
+
? void 0
|
|
100
|
+
: isArray(obj)
|
|
101
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
102
|
+
: isObject(obj)
|
|
103
|
+
? objMap(obj, replaceUndefinedString)
|
|
104
|
+
: obj;
|
|
96
105
|
|
|
97
106
|
const textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();
|
|
98
107
|
const getHash = (string) => {
|
|
@@ -105,21 +114,22 @@ const getHash = (string) => {
|
|
|
105
114
|
return hash >>> 0;
|
|
106
115
|
};
|
|
107
116
|
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
|
|
117
|
+
const map = Map;
|
|
118
|
+
const mapNew = (entries) => new map(entries);
|
|
119
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
120
|
+
const mapForEach = (map2, cb) =>
|
|
121
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
112
122
|
const mapMap = (coll, cb) =>
|
|
113
123
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
114
|
-
const mapSet = (
|
|
115
|
-
isUndefined(value) ? (collDel(
|
|
116
|
-
const mapEnsure = (
|
|
117
|
-
if (!collHas(
|
|
118
|
-
mapSet(
|
|
124
|
+
const mapSet = (map2, key, value) =>
|
|
125
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
126
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
127
|
+
if (!collHas(map2, key)) {
|
|
128
|
+
mapSet(map2, key, getDefaultValue());
|
|
119
129
|
} else {
|
|
120
|
-
hadExistingValue?.(mapGet(
|
|
130
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
121
131
|
}
|
|
122
|
-
return mapGet(
|
|
132
|
+
return mapGet(map2, key);
|
|
123
133
|
};
|
|
124
134
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
125
135
|
ifNotUndefined(
|
|
@@ -480,6 +490,11 @@ const createCustomPersister = (
|
|
|
480
490
|
? store.applyChanges
|
|
481
491
|
: store.setContent)(contentOrChanges);
|
|
482
492
|
};
|
|
493
|
+
const saveAfterMutated = async () => {
|
|
494
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
495
|
+
await save();
|
|
496
|
+
}
|
|
497
|
+
};
|
|
483
498
|
const load = async (initialContent) => {
|
|
484
499
|
/* istanbul ignore else */
|
|
485
500
|
if (status != 2 /* Saving */) {
|
|
@@ -504,6 +519,7 @@ const createCustomPersister = (
|
|
|
504
519
|
},
|
|
505
520
|
);
|
|
506
521
|
setStatus(0 /* Idle */);
|
|
522
|
+
await saveAfterMutated();
|
|
507
523
|
});
|
|
508
524
|
}
|
|
509
525
|
return persister;
|
|
@@ -522,6 +538,7 @@ const createCustomPersister = (
|
|
|
522
538
|
loads++;
|
|
523
539
|
setContentOrChanges(changes ?? content);
|
|
524
540
|
setStatus(0 /* Idle */);
|
|
541
|
+
await saveAfterMutated();
|
|
525
542
|
}
|
|
526
543
|
} else {
|
|
527
544
|
await load();
|
|
@@ -92,7 +92,16 @@ const jsonParse = JSON.parse;
|
|
|
92
92
|
const jsonStringWithUndefined = (obj) =>
|
|
93
93
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
94
94
|
const jsonParseWithUndefined = (str) =>
|
|
95
|
-
|
|
95
|
+
// JSON.parse reviver removes properties with undefined values
|
|
96
|
+
replaceUndefinedString(jsonParse(str));
|
|
97
|
+
const replaceUndefinedString = (obj) =>
|
|
98
|
+
obj === UNDEFINED
|
|
99
|
+
? void 0
|
|
100
|
+
: isArray(obj)
|
|
101
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
102
|
+
: isObject(obj)
|
|
103
|
+
? objMap(obj, replaceUndefinedString)
|
|
104
|
+
: obj;
|
|
96
105
|
|
|
97
106
|
const textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();
|
|
98
107
|
const getHash = (string) => {
|
|
@@ -105,21 +114,22 @@ const getHash = (string) => {
|
|
|
105
114
|
return hash >>> 0;
|
|
106
115
|
};
|
|
107
116
|
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
|
|
117
|
+
const map = Map;
|
|
118
|
+
const mapNew = (entries) => new map(entries);
|
|
119
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
120
|
+
const mapForEach = (map2, cb) =>
|
|
121
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
112
122
|
const mapMap = (coll, cb) =>
|
|
113
123
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
114
|
-
const mapSet = (
|
|
115
|
-
isUndefined(value) ? (collDel(
|
|
116
|
-
const mapEnsure = (
|
|
117
|
-
if (!collHas(
|
|
118
|
-
mapSet(
|
|
124
|
+
const mapSet = (map2, key, value) =>
|
|
125
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
126
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
127
|
+
if (!collHas(map2, key)) {
|
|
128
|
+
mapSet(map2, key, getDefaultValue());
|
|
119
129
|
} else {
|
|
120
|
-
hadExistingValue?.(mapGet(
|
|
130
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
121
131
|
}
|
|
122
|
-
return mapGet(
|
|
132
|
+
return mapGet(map2, key);
|
|
123
133
|
};
|
|
124
134
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
125
135
|
ifNotUndefined(
|
|
@@ -480,6 +490,11 @@ const createCustomPersister = (
|
|
|
480
490
|
? store.applyChanges
|
|
481
491
|
: store.setContent)(contentOrChanges);
|
|
482
492
|
};
|
|
493
|
+
const saveAfterMutated = async () => {
|
|
494
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
495
|
+
await save();
|
|
496
|
+
}
|
|
497
|
+
};
|
|
483
498
|
const load = async (initialContent) => {
|
|
484
499
|
/* istanbul ignore else */
|
|
485
500
|
if (status != 2 /* Saving */) {
|
|
@@ -504,6 +519,7 @@ const createCustomPersister = (
|
|
|
504
519
|
},
|
|
505
520
|
);
|
|
506
521
|
setStatus(0 /* Idle */);
|
|
522
|
+
await saveAfterMutated();
|
|
507
523
|
});
|
|
508
524
|
}
|
|
509
525
|
return persister;
|
|
@@ -522,6 +538,7 @@ const createCustomPersister = (
|
|
|
522
538
|
loads++;
|
|
523
539
|
setContentOrChanges(changes ?? content);
|
|
524
540
|
setStatus(0 /* Idle */);
|
|
541
|
+
await saveAfterMutated();
|
|
525
542
|
}
|
|
526
543
|
} else {
|
|
527
544
|
await load();
|
|
@@ -144,21 +144,22 @@ const getWhereCondition = (tableName, condition = TRUE) =>
|
|
|
144
144
|
WHERE +
|
|
145
145
|
`(${strReplace(condition, TABLE_NAME_PLACEHOLDER, escapeId(tableName))})`;
|
|
146
146
|
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
const
|
|
150
|
-
|
|
147
|
+
const map = Map;
|
|
148
|
+
const mapNew = (entries) => new map(entries);
|
|
149
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
150
|
+
const mapForEach = (map2, cb) =>
|
|
151
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
151
152
|
const mapMap = (coll, cb) =>
|
|
152
153
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
153
|
-
const mapSet = (
|
|
154
|
-
isUndefined(value) ? (collDel(
|
|
155
|
-
const mapEnsure = (
|
|
156
|
-
if (!collHas(
|
|
157
|
-
mapSet(
|
|
154
|
+
const mapSet = (map2, key, value) =>
|
|
155
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
156
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
157
|
+
if (!collHas(map2, key)) {
|
|
158
|
+
mapSet(map2, key, getDefaultValue());
|
|
158
159
|
} else {
|
|
159
|
-
hadExistingValue?.(mapGet(
|
|
160
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
160
161
|
}
|
|
161
|
-
return mapGet(
|
|
162
|
+
return mapGet(map2, key);
|
|
162
163
|
};
|
|
163
164
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
164
165
|
ifNotUndefined(
|
|
@@ -305,7 +306,16 @@ const jsonParse = JSON.parse;
|
|
|
305
306
|
const jsonStringWithUndefined = (obj) =>
|
|
306
307
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
307
308
|
const jsonParseWithUndefined = (str) =>
|
|
308
|
-
|
|
309
|
+
// JSON.parse reviver removes properties with undefined values
|
|
310
|
+
replaceUndefinedString(jsonParse(str));
|
|
311
|
+
const replaceUndefinedString = (obj) =>
|
|
312
|
+
obj === UNDEFINED
|
|
313
|
+
? void 0
|
|
314
|
+
: isArray(obj)
|
|
315
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
316
|
+
: isObject(obj)
|
|
317
|
+
? objMap(obj, replaceUndefinedString)
|
|
318
|
+
: obj;
|
|
309
319
|
|
|
310
320
|
const INTEGER = /^\d+$/;
|
|
311
321
|
const getPoolFunctions = () => {
|
|
@@ -477,6 +487,11 @@ const createCustomPersister = (
|
|
|
477
487
|
? store.applyChanges
|
|
478
488
|
: store.setContent)(contentOrChanges);
|
|
479
489
|
};
|
|
490
|
+
const saveAfterMutated = async () => {
|
|
491
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
492
|
+
await save();
|
|
493
|
+
}
|
|
494
|
+
};
|
|
480
495
|
const load = async (initialContent) => {
|
|
481
496
|
/* istanbul ignore else */
|
|
482
497
|
if (status != 2 /* Saving */) {
|
|
@@ -501,6 +516,7 @@ const createCustomPersister = (
|
|
|
501
516
|
},
|
|
502
517
|
);
|
|
503
518
|
setStatus(0 /* Idle */);
|
|
519
|
+
await saveAfterMutated();
|
|
504
520
|
});
|
|
505
521
|
}
|
|
506
522
|
return persister;
|
|
@@ -519,6 +535,7 @@ const createCustomPersister = (
|
|
|
519
535
|
loads++;
|
|
520
536
|
setContentOrChanges(changes ?? content);
|
|
521
537
|
setStatus(0 /* Idle */);
|
|
538
|
+
await saveAfterMutated();
|
|
522
539
|
}
|
|
523
540
|
} else {
|
|
524
541
|
await load();
|
|
@@ -144,21 +144,22 @@ const getWhereCondition = (tableName, condition = TRUE) =>
|
|
|
144
144
|
WHERE +
|
|
145
145
|
`(${strReplace(condition, TABLE_NAME_PLACEHOLDER, escapeId(tableName))})`;
|
|
146
146
|
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
const
|
|
150
|
-
|
|
147
|
+
const map = Map;
|
|
148
|
+
const mapNew = (entries) => new map(entries);
|
|
149
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
150
|
+
const mapForEach = (map2, cb) =>
|
|
151
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
151
152
|
const mapMap = (coll, cb) =>
|
|
152
153
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
153
|
-
const mapSet = (
|
|
154
|
-
isUndefined(value) ? (collDel(
|
|
155
|
-
const mapEnsure = (
|
|
156
|
-
if (!collHas(
|
|
157
|
-
mapSet(
|
|
154
|
+
const mapSet = (map2, key, value) =>
|
|
155
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
156
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
157
|
+
if (!collHas(map2, key)) {
|
|
158
|
+
mapSet(map2, key, getDefaultValue());
|
|
158
159
|
} else {
|
|
159
|
-
hadExistingValue?.(mapGet(
|
|
160
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
160
161
|
}
|
|
161
|
-
return mapGet(
|
|
162
|
+
return mapGet(map2, key);
|
|
162
163
|
};
|
|
163
164
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
164
165
|
ifNotUndefined(
|
|
@@ -305,7 +306,16 @@ const jsonParse = JSON.parse;
|
|
|
305
306
|
const jsonStringWithUndefined = (obj) =>
|
|
306
307
|
jsonString(obj, (_key, value) => (isUndefined(value) ? UNDEFINED : value));
|
|
307
308
|
const jsonParseWithUndefined = (str) =>
|
|
308
|
-
|
|
309
|
+
// JSON.parse reviver removes properties with undefined values
|
|
310
|
+
replaceUndefinedString(jsonParse(str));
|
|
311
|
+
const replaceUndefinedString = (obj) =>
|
|
312
|
+
obj === UNDEFINED
|
|
313
|
+
? void 0
|
|
314
|
+
: isArray(obj)
|
|
315
|
+
? arrayMap(obj, replaceUndefinedString)
|
|
316
|
+
: isObject(obj)
|
|
317
|
+
? objMap(obj, replaceUndefinedString)
|
|
318
|
+
: obj;
|
|
309
319
|
|
|
310
320
|
const INTEGER = /^\d+$/;
|
|
311
321
|
const getPoolFunctions = () => {
|
|
@@ -477,6 +487,11 @@ const createCustomPersister = (
|
|
|
477
487
|
? store.applyChanges
|
|
478
488
|
: store.setContent)(contentOrChanges);
|
|
479
489
|
};
|
|
490
|
+
const saveAfterMutated = async () => {
|
|
491
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
492
|
+
await save();
|
|
493
|
+
}
|
|
494
|
+
};
|
|
480
495
|
const load = async (initialContent) => {
|
|
481
496
|
/* istanbul ignore else */
|
|
482
497
|
if (status != 2 /* Saving */) {
|
|
@@ -501,6 +516,7 @@ const createCustomPersister = (
|
|
|
501
516
|
},
|
|
502
517
|
);
|
|
503
518
|
setStatus(0 /* Idle */);
|
|
519
|
+
await saveAfterMutated();
|
|
504
520
|
});
|
|
505
521
|
}
|
|
506
522
|
return persister;
|
|
@@ -519,6 +535,7 @@ const createCustomPersister = (
|
|
|
519
535
|
loads++;
|
|
520
536
|
setContentOrChanges(changes ?? content);
|
|
521
537
|
setStatus(0 /* Idle */);
|
|
538
|
+
await saveAfterMutated();
|
|
522
539
|
}
|
|
523
540
|
} else {
|
|
524
541
|
await load();
|
|
@@ -51,17 +51,18 @@ const objFreeze = object.freeze;
|
|
|
51
51
|
const objSize = (obj) => size(objIds(obj));
|
|
52
52
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
53
53
|
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
const map = Map;
|
|
55
|
+
const mapNew = (entries) => new map(entries);
|
|
56
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
57
|
+
const mapSet = (map2, key, value) =>
|
|
58
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
59
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
60
|
+
if (!collHas(map2, key)) {
|
|
61
|
+
mapSet(map2, key, getDefaultValue());
|
|
61
62
|
} else {
|
|
62
|
-
hadExistingValue?.(mapGet(
|
|
63
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
63
64
|
}
|
|
64
|
-
return mapGet(
|
|
65
|
+
return mapGet(map2, key);
|
|
65
66
|
};
|
|
66
67
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
67
68
|
ifNotUndefined(
|
|
@@ -263,6 +264,11 @@ const createCustomPersister = (
|
|
|
263
264
|
? store.applyChanges
|
|
264
265
|
: store.setContent)(contentOrChanges);
|
|
265
266
|
};
|
|
267
|
+
const saveAfterMutated = async () => {
|
|
268
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
269
|
+
await save();
|
|
270
|
+
}
|
|
271
|
+
};
|
|
266
272
|
const load = async (initialContent) => {
|
|
267
273
|
/* istanbul ignore else */
|
|
268
274
|
if (status != 2 /* Saving */) {
|
|
@@ -287,6 +293,7 @@ const createCustomPersister = (
|
|
|
287
293
|
},
|
|
288
294
|
);
|
|
289
295
|
setStatus(0 /* Idle */);
|
|
296
|
+
await saveAfterMutated();
|
|
290
297
|
});
|
|
291
298
|
}
|
|
292
299
|
return persister;
|
|
@@ -305,6 +312,7 @@ const createCustomPersister = (
|
|
|
305
312
|
loads++;
|
|
306
313
|
setContentOrChanges(changes ?? content);
|
|
307
314
|
setStatus(0 /* Idle */);
|
|
315
|
+
await saveAfterMutated();
|
|
308
316
|
}
|
|
309
317
|
} else {
|
|
310
318
|
await load();
|
|
@@ -51,17 +51,18 @@ const objFreeze = object.freeze;
|
|
|
51
51
|
const objSize = (obj) => size(objIds(obj));
|
|
52
52
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
53
53
|
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
const map = Map;
|
|
55
|
+
const mapNew = (entries) => new map(entries);
|
|
56
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
57
|
+
const mapSet = (map2, key, value) =>
|
|
58
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
59
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
60
|
+
if (!collHas(map2, key)) {
|
|
61
|
+
mapSet(map2, key, getDefaultValue());
|
|
61
62
|
} else {
|
|
62
|
-
hadExistingValue?.(mapGet(
|
|
63
|
+
hadExistingValue?.(mapGet(map2, key));
|
|
63
64
|
}
|
|
64
|
-
return mapGet(
|
|
65
|
+
return mapGet(map2, key);
|
|
65
66
|
};
|
|
66
67
|
const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
67
68
|
ifNotUndefined(
|
|
@@ -263,6 +264,11 @@ const createCustomPersister = (
|
|
|
263
264
|
? store.applyChanges
|
|
264
265
|
: store.setContent)(contentOrChanges);
|
|
265
266
|
};
|
|
267
|
+
const saveAfterMutated = async () => {
|
|
268
|
+
if (isAutoSaving() && store.hadMutated?.()) {
|
|
269
|
+
await save();
|
|
270
|
+
}
|
|
271
|
+
};
|
|
266
272
|
const load = async (initialContent) => {
|
|
267
273
|
/* istanbul ignore else */
|
|
268
274
|
if (status != 2 /* Saving */) {
|
|
@@ -287,6 +293,7 @@ const createCustomPersister = (
|
|
|
287
293
|
},
|
|
288
294
|
);
|
|
289
295
|
setStatus(0 /* Idle */);
|
|
296
|
+
await saveAfterMutated();
|
|
290
297
|
});
|
|
291
298
|
}
|
|
292
299
|
return persister;
|
|
@@ -305,6 +312,7 @@ const createCustomPersister = (
|
|
|
305
312
|
loads++;
|
|
306
313
|
setContentOrChanges(changes ?? content);
|
|
307
314
|
setStatus(0 /* Idle */);
|
|
315
|
+
await saveAfterMutated();
|
|
308
316
|
}
|
|
309
317
|
} else {
|
|
310
318
|
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();
|