tinybase 8.0.0-beta.0 → 8.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/index.d.ts +1 -0
- package/@types/mergeable-store/with-schemas/index.d.ts +1 -1
- package/@types/middleware/index.d.ts +1064 -0
- package/@types/middleware/with-schemas/index.d.ts +1355 -0
- package/@types/omni/index.d.ts +1 -0
- package/@types/omni/with-schemas/index.d.ts +1 -0
- package/@types/store/index.d.ts +0 -1
- package/@types/with-schemas/index.d.ts +1 -0
- package/agents.md +33 -11
- package/checkpoints/index.js +20 -20
- package/checkpoints/with-schemas/index.js +20 -20
- package/common/index.js +3 -2
- package/common/with-schemas/index.js +3 -2
- package/index.js +574 -215
- package/indexes/index.js +13 -12
- package/indexes/with-schemas/index.js +13 -12
- package/mergeable-store/index.js +461 -197
- package/mergeable-store/with-schemas/index.js +461 -197
- package/metrics/index.js +13 -12
- package/metrics/with-schemas/index.js +13 -12
- package/middleware/index.js +130 -0
- package/middleware/with-schemas/index.js +130 -0
- package/min/checkpoints/index.js +1 -1
- package/min/checkpoints/index.js.gz +0 -0
- package/min/checkpoints/with-schemas/index.js +1 -1
- package/min/checkpoints/with-schemas/index.js.gz +0 -0
- package/min/common/index.js +1 -1
- package/min/common/index.js.gz +0 -0
- package/min/common/with-schemas/index.js +1 -1
- package/min/common/with-schemas/index.js.gz +0 -0
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/indexes/index.js +1 -1
- package/min/indexes/index.js.gz +0 -0
- package/min/indexes/with-schemas/index.js +1 -1
- package/min/indexes/with-schemas/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/metrics/index.js +1 -1
- package/min/metrics/index.js.gz +0 -0
- package/min/metrics/with-schemas/index.js +1 -1
- package/min/metrics/with-schemas/index.js.gz +0 -0
- package/min/middleware/index.js +1 -0
- package/min/middleware/index.js.gz +0 -0
- package/min/middleware/with-schemas/index.js +1 -0
- package/min/middleware/with-schemas/index.js.gz +0 -0
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/index.js +1 -1
- package/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/with-schemas/index.js.gz +0 -0
- package/min/relationships/index.js +1 -1
- package/min/relationships/index.js.gz +0 -0
- package/min/relationships/with-schemas/index.js +1 -1
- package/min/relationships/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/omni/index.js +610 -232
- package/omni/with-schemas/index.js +610 -232
- package/package.json +55 -19
- package/persisters/index.js +29 -12
- package/persisters/persister-automerge/index.js +17 -9
- package/persisters/persister-automerge/with-schemas/index.js +17 -9
- package/persisters/persister-browser/index.js +34 -10
- package/persisters/persister-browser/with-schemas/index.js +34 -10
- package/persisters/persister-cr-sqlite-wasm/index.js +29 -12
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -12
- package/persisters/persister-durable-object-sql-storage/index.js +29 -12
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +29 -12
- package/persisters/persister-durable-object-storage/index.js +24 -17
- package/persisters/persister-durable-object-storage/with-schemas/index.js +24 -17
- package/persisters/persister-electric-sql/index.js +29 -12
- package/persisters/persister-electric-sql/with-schemas/index.js +29 -12
- package/persisters/persister-expo-sqlite/index.js +29 -12
- package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -12
- package/persisters/persister-file/index.js +34 -10
- package/persisters/persister-file/with-schemas/index.js +34 -10
- package/persisters/persister-indexed-db/index.js +17 -9
- package/persisters/persister-indexed-db/with-schemas/index.js +17 -9
- package/persisters/persister-libsql/index.js +29 -12
- package/persisters/persister-libsql/with-schemas/index.js +29 -12
- package/persisters/persister-partykit-client/index.js +44 -11
- package/persisters/persister-partykit-client/with-schemas/index.js +44 -11
- package/persisters/persister-partykit-server/index.js +39 -4
- package/persisters/persister-partykit-server/with-schemas/index.js +39 -4
- package/persisters/persister-pglite/index.js +29 -12
- package/persisters/persister-pglite/with-schemas/index.js +29 -12
- package/persisters/persister-postgres/index.js +29 -12
- package/persisters/persister-postgres/with-schemas/index.js +29 -12
- package/persisters/persister-powersync/index.js +29 -12
- package/persisters/persister-powersync/with-schemas/index.js +29 -12
- package/persisters/persister-react-native-mmkv/index.js +17 -9
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +17 -9
- package/persisters/persister-react-native-sqlite/index.js +29 -12
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -12
- package/persisters/persister-remote/index.js +17 -9
- package/persisters/persister-remote/with-schemas/index.js +17 -9
- package/persisters/persister-sqlite-bun/index.js +29 -12
- package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -12
- package/persisters/persister-sqlite-wasm/index.js +29 -12
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -12
- package/persisters/persister-sqlite3/index.js +29 -12
- package/persisters/persister-sqlite3/with-schemas/index.js +29 -12
- package/persisters/persister-yjs/index.js +19 -11
- package/persisters/persister-yjs/with-schemas/index.js +19 -11
- package/persisters/with-schemas/index.js +29 -12
- package/queries/index.js +16 -20
- package/queries/with-schemas/index.js +16 -20
- package/readme.md +21 -13
- package/relationships/index.js +13 -12
- package/relationships/with-schemas/index.js +13 -12
- package/releases.md +41 -41
- package/store/index.js +442 -192
- package/store/with-schemas/index.js +442 -192
- package/synchronizers/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +17 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -9
- package/synchronizers/synchronizer-local/index.js +19 -11
- package/synchronizers/synchronizer-local/with-schemas/index.js +19 -11
- package/synchronizers/synchronizer-ws-client/index.js +31 -10
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +31 -10
- package/synchronizers/synchronizer-ws-server/index.js +34 -13
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +34 -13
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +31 -10
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +31 -10
- package/synchronizers/synchronizer-ws-server-simple/index.js +11 -10
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +11 -10
- package/synchronizers/with-schemas/index.js +17 -9
- package/ui-react-inspector/index.js +438 -193
- package/ui-react-inspector/with-schemas/index.js +438 -193
- package/with-schemas/index.js +574 -215
|
@@ -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();
|
|
@@ -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();
|
|
@@ -19,17 +19,18 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const objFreeze = object.freeze;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
const map = Map;
|
|
23
|
+
const mapNew = (entries) => new map(entries);
|
|
24
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
25
|
+
const mapForEach = (map2, cb) =>
|
|
26
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
27
|
+
const mapSet = (map2, key, value) =>
|
|
28
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
29
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
30
|
+
if (!collHas(map2, key)) {
|
|
31
|
+
mapSet(map2, key, getDefaultValue());
|
|
31
32
|
}
|
|
32
|
-
return mapGet(
|
|
33
|
+
return mapGet(map2, key);
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
const MESSAGE_SEPARATOR = '\n';
|
|
@@ -19,17 +19,18 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const objFreeze = object.freeze;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
const map = Map;
|
|
23
|
+
const mapNew = (entries) => new map(entries);
|
|
24
|
+
const mapGet = (map2, key) => map2?.get(key);
|
|
25
|
+
const mapForEach = (map2, cb) =>
|
|
26
|
+
collForEach(map2, (value, key) => cb(key, value));
|
|
27
|
+
const mapSet = (map2, key, value) =>
|
|
28
|
+
isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
|
|
29
|
+
const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
|
|
30
|
+
if (!collHas(map2, key)) {
|
|
31
|
+
mapSet(map2, key, getDefaultValue());
|
|
31
32
|
}
|
|
32
|
-
return mapGet(
|
|
33
|
+
return mapGet(map2, key);
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
const MESSAGE_SEPARATOR = '\n';
|
|
@@ -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();
|