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.
Files changed (249) hide show
  1. package/checkpoints/index.js +12 -11
  2. package/checkpoints/with-schemas/index.js +12 -11
  3. package/common/index.js +3 -2
  4. package/common/with-schemas/index.js +3 -2
  5. package/index.js +92 -64
  6. package/indexes/index.js +13 -12
  7. package/indexes/with-schemas/index.js +13 -12
  8. package/mergeable-store/index.js +92 -64
  9. package/mergeable-store/with-schemas/index.js +92 -64
  10. package/metrics/index.js +13 -12
  11. package/metrics/with-schemas/index.js +13 -12
  12. package/min/checkpoints/index.js +1 -1
  13. package/min/checkpoints/index.js.gz +0 -0
  14. package/min/checkpoints/with-schemas/index.js +1 -1
  15. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  16. package/min/common/index.js +1 -1
  17. package/min/common/index.js.gz +0 -0
  18. package/min/common/with-schemas/index.js +1 -1
  19. package/min/common/with-schemas/index.js.gz +0 -0
  20. package/min/index.js +1 -1
  21. package/min/index.js.gz +0 -0
  22. package/min/indexes/index.js +1 -1
  23. package/min/indexes/index.js.gz +0 -0
  24. package/min/indexes/with-schemas/index.js +1 -1
  25. package/min/indexes/with-schemas/index.js.gz +0 -0
  26. package/min/mergeable-store/index.js +1 -1
  27. package/min/mergeable-store/index.js.gz +0 -0
  28. package/min/mergeable-store/with-schemas/index.js +1 -1
  29. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  30. package/min/metrics/index.js +1 -1
  31. package/min/metrics/index.js.gz +0 -0
  32. package/min/metrics/with-schemas/index.js +1 -1
  33. package/min/metrics/with-schemas/index.js.gz +0 -0
  34. package/min/omni/index.js +1 -1
  35. package/min/omni/index.js.gz +0 -0
  36. package/min/omni/with-schemas/index.js +1 -1
  37. package/min/omni/with-schemas/index.js.gz +0 -0
  38. package/min/persisters/index.js +1 -1
  39. package/min/persisters/index.js.gz +0 -0
  40. package/min/persisters/persister-automerge/index.js +1 -1
  41. package/min/persisters/persister-automerge/index.js.gz +0 -0
  42. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  43. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  44. package/min/persisters/persister-browser/index.js +1 -1
  45. package/min/persisters/persister-browser/index.js.gz +0 -0
  46. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  47. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  48. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  49. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  50. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  51. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  52. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  53. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  54. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  55. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  56. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  57. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  58. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  59. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/persister-electric-sql/index.js +1 -1
  61. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  62. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  63. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  64. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  65. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  66. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  67. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  68. package/min/persisters/persister-file/index.js +1 -1
  69. package/min/persisters/persister-file/index.js.gz +0 -0
  70. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  71. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  72. package/min/persisters/persister-indexed-db/index.js +1 -1
  73. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  74. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  75. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  76. package/min/persisters/persister-libsql/index.js +1 -1
  77. package/min/persisters/persister-libsql/index.js.gz +0 -0
  78. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  79. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  80. package/min/persisters/persister-partykit-client/index.js +1 -1
  81. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  82. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  83. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  84. package/min/persisters/persister-partykit-server/index.js +1 -1
  85. package/min/persisters/persister-partykit-server/index.js.gz +0 -0
  86. package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
  87. package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  88. package/min/persisters/persister-pglite/index.js +1 -1
  89. package/min/persisters/persister-pglite/index.js.gz +0 -0
  90. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  91. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  92. package/min/persisters/persister-postgres/index.js +1 -1
  93. package/min/persisters/persister-postgres/index.js.gz +0 -0
  94. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  95. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  96. package/min/persisters/persister-powersync/index.js +1 -1
  97. package/min/persisters/persister-powersync/index.js.gz +0 -0
  98. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  99. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  100. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  101. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  102. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  103. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  104. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  105. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  106. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  107. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  108. package/min/persisters/persister-remote/index.js +1 -1
  109. package/min/persisters/persister-remote/index.js.gz +0 -0
  110. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  111. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  112. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  113. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  114. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  115. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  116. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  117. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  119. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite3/index.js +1 -1
  121. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  123. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  124. package/min/persisters/persister-yjs/index.js +1 -1
  125. package/min/persisters/persister-yjs/index.js.gz +0 -0
  126. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  127. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  128. package/min/persisters/with-schemas/index.js +1 -1
  129. package/min/persisters/with-schemas/index.js.gz +0 -0
  130. package/min/queries/index.js +1 -1
  131. package/min/queries/index.js.gz +0 -0
  132. package/min/queries/with-schemas/index.js +1 -1
  133. package/min/queries/with-schemas/index.js.gz +0 -0
  134. package/min/relationships/index.js +1 -1
  135. package/min/relationships/index.js.gz +0 -0
  136. package/min/relationships/with-schemas/index.js +1 -1
  137. package/min/relationships/with-schemas/index.js.gz +0 -0
  138. package/min/store/index.js +1 -1
  139. package/min/store/index.js.gz +0 -0
  140. package/min/store/with-schemas/index.js +1 -1
  141. package/min/store/with-schemas/index.js.gz +0 -0
  142. package/min/synchronizers/index.js +1 -1
  143. package/min/synchronizers/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  147. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  151. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  166. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  167. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  168. package/min/synchronizers/with-schemas/index.js +1 -1
  169. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  170. package/min/ui-react-inspector/index.js +1 -1
  171. package/min/ui-react-inspector/index.js.gz +0 -0
  172. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  173. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  174. package/min/with-schemas/index.js +1 -1
  175. package/min/with-schemas/index.js.gz +0 -0
  176. package/omni/index.js +115 -67
  177. package/omni/with-schemas/index.js +115 -67
  178. package/package.json +13 -13
  179. package/persisters/index.js +29 -12
  180. package/persisters/persister-automerge/index.js +17 -9
  181. package/persisters/persister-automerge/with-schemas/index.js +17 -9
  182. package/persisters/persister-browser/index.js +34 -10
  183. package/persisters/persister-browser/with-schemas/index.js +34 -10
  184. package/persisters/persister-cr-sqlite-wasm/index.js +29 -12
  185. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -12
  186. package/persisters/persister-durable-object-sql-storage/index.js +29 -12
  187. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +29 -12
  188. package/persisters/persister-durable-object-storage/index.js +19 -11
  189. package/persisters/persister-durable-object-storage/with-schemas/index.js +19 -11
  190. package/persisters/persister-electric-sql/index.js +29 -12
  191. package/persisters/persister-electric-sql/with-schemas/index.js +29 -12
  192. package/persisters/persister-expo-sqlite/index.js +29 -12
  193. package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -12
  194. package/persisters/persister-file/index.js +34 -10
  195. package/persisters/persister-file/with-schemas/index.js +34 -10
  196. package/persisters/persister-indexed-db/index.js +17 -9
  197. package/persisters/persister-indexed-db/with-schemas/index.js +17 -9
  198. package/persisters/persister-libsql/index.js +29 -12
  199. package/persisters/persister-libsql/with-schemas/index.js +29 -12
  200. package/persisters/persister-partykit-client/index.js +44 -11
  201. package/persisters/persister-partykit-client/with-schemas/index.js +44 -11
  202. package/persisters/persister-partykit-server/index.js +39 -4
  203. package/persisters/persister-partykit-server/with-schemas/index.js +39 -4
  204. package/persisters/persister-pglite/index.js +29 -12
  205. package/persisters/persister-pglite/with-schemas/index.js +29 -12
  206. package/persisters/persister-postgres/index.js +29 -12
  207. package/persisters/persister-postgres/with-schemas/index.js +29 -12
  208. package/persisters/persister-powersync/index.js +29 -12
  209. package/persisters/persister-powersync/with-schemas/index.js +29 -12
  210. package/persisters/persister-react-native-mmkv/index.js +17 -9
  211. package/persisters/persister-react-native-mmkv/with-schemas/index.js +17 -9
  212. package/persisters/persister-react-native-sqlite/index.js +29 -12
  213. package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -12
  214. package/persisters/persister-remote/index.js +17 -9
  215. package/persisters/persister-remote/with-schemas/index.js +17 -9
  216. package/persisters/persister-sqlite-bun/index.js +29 -12
  217. package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -12
  218. package/persisters/persister-sqlite-wasm/index.js +29 -12
  219. package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -12
  220. package/persisters/persister-sqlite3/index.js +29 -12
  221. package/persisters/persister-sqlite3/with-schemas/index.js +29 -12
  222. package/persisters/persister-yjs/index.js +19 -11
  223. package/persisters/persister-yjs/with-schemas/index.js +19 -11
  224. package/persisters/with-schemas/index.js +29 -12
  225. package/queries/index.js +15 -14
  226. package/queries/with-schemas/index.js +15 -14
  227. package/readme.md +10 -2
  228. package/relationships/index.js +13 -12
  229. package/relationships/with-schemas/index.js +13 -12
  230. package/releases.md +1 -1
  231. package/store/index.js +74 -60
  232. package/store/with-schemas/index.js +74 -60
  233. package/synchronizers/index.js +17 -9
  234. package/synchronizers/synchronizer-broadcast-channel/index.js +17 -9
  235. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -9
  236. package/synchronizers/synchronizer-local/index.js +19 -11
  237. package/synchronizers/synchronizer-local/with-schemas/index.js +19 -11
  238. package/synchronizers/synchronizer-ws-client/index.js +31 -10
  239. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +31 -10
  240. package/synchronizers/synchronizer-ws-server/index.js +34 -13
  241. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +34 -13
  242. package/synchronizers/synchronizer-ws-server-durable-object/index.js +31 -10
  243. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +31 -10
  244. package/synchronizers/synchronizer-ws-server-simple/index.js +11 -10
  245. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +11 -10
  246. package/synchronizers/with-schemas/index.js +17 -9
  247. package/ui-react-inspector/index.js +91 -61
  248. package/ui-react-inspector/with-schemas/index.js +91 -61
  249. 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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
110
- const mapGet = (map, key) => map?.get(key);
111
- const mapForEach = (map, cb) =>
112
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
116
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
117
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
118
- if (!collHas(map, key)) {
119
- mapSet(map, key, getDefaultValue());
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(map, key));
131
+ hadExistingValue?.(mapGet(map2, key));
122
132
  }
123
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
109
- const mapGet = (map, key) => map?.get(key);
110
- const mapForEach = (map, cb) =>
111
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
115
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
116
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
117
- if (!collHas(map, key)) {
118
- mapSet(map, key, getDefaultValue());
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(map, key));
130
+ hadExistingValue?.(mapGet(map2, key));
121
131
  }
122
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
109
- const mapGet = (map, key) => map?.get(key);
110
- const mapForEach = (map, cb) =>
111
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
115
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
116
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
117
- if (!collHas(map, key)) {
118
- mapSet(map, key, getDefaultValue());
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(map, key));
130
+ hadExistingValue?.(mapGet(map2, key));
121
131
  }
122
- return mapGet(map, key);
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 mapNew = (entries) => new Map(entries);
148
- const mapGet = (map, key) => map?.get(key);
149
- const mapForEach = (map, cb) =>
150
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
154
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
155
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
156
- if (!collHas(map, key)) {
157
- mapSet(map, key, getDefaultValue());
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(map, key));
160
+ hadExistingValue?.(mapGet(map2, key));
160
161
  }
161
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
148
- const mapGet = (map, key) => map?.get(key);
149
- const mapForEach = (map, cb) =>
150
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
154
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
155
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
156
- if (!collHas(map, key)) {
157
- mapSet(map, key, getDefaultValue());
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(map, key));
160
+ hadExistingValue?.(mapGet(map2, key));
160
161
  }
161
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
55
- const mapGet = (map, key) => map?.get(key);
56
- const mapSet = (map, key, value) =>
57
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
58
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
59
- if (!collHas(map, key)) {
60
- mapSet(map, key, getDefaultValue());
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(map, key));
63
+ hadExistingValue?.(mapGet(map2, key));
63
64
  }
64
- return mapGet(map, key);
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 mapNew = (entries) => new Map(entries);
55
- const mapGet = (map, key) => map?.get(key);
56
- const mapSet = (map, key, value) =>
57
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
58
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
59
- if (!collHas(map, key)) {
60
- mapSet(map, key, getDefaultValue());
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(map, key));
63
+ hadExistingValue?.(mapGet(map2, key));
63
64
  }
64
- return mapGet(map, key);
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 mapNew = (entries) => new Map(entries);
139
- const mapGet = (map, key) => map?.get(key);
140
- const mapForEach = (map, cb) =>
141
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
145
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
146
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
147
- if (!collHas(map, key)) {
148
- mapSet(map, key, getDefaultValue());
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(map, key));
151
+ hadExistingValue?.(mapGet(map2, key));
151
152
  }
152
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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 mapNew = (entries) => new Map(entries);
139
- const mapGet = (map, key) => map?.get(key);
140
- const mapForEach = (map, cb) =>
141
- collForEach(map, (value, key) => cb(key, value));
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 = (map, key, value) =>
145
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
146
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
147
- if (!collHas(map, key)) {
148
- mapSet(map, key, getDefaultValue());
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(map, key));
151
+ hadExistingValue?.(mapGet(map2, key));
151
152
  }
152
- return mapGet(map, key);
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
- jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
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();