tinybase 7.3.3 → 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 (244) 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-pglite/index.js +1 -1
  85. package/min/persisters/persister-pglite/index.js.gz +0 -0
  86. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  87. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  88. package/min/persisters/persister-postgres/index.js +1 -1
  89. package/min/persisters/persister-postgres/index.js.gz +0 -0
  90. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  91. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  92. package/min/persisters/persister-powersync/index.js +1 -1
  93. package/min/persisters/persister-powersync/index.js.gz +0 -0
  94. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  95. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  96. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  97. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  98. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  99. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  100. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  101. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  102. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  103. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  104. package/min/persisters/persister-remote/index.js +1 -1
  105. package/min/persisters/persister-remote/index.js.gz +0 -0
  106. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  107. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  108. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  109. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  110. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  111. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  112. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  113. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  114. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  115. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  116. package/min/persisters/persister-sqlite3/index.js +1 -1
  117. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  119. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  120. package/min/persisters/persister-yjs/index.js +1 -1
  121. package/min/persisters/persister-yjs/index.js.gz +0 -0
  122. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  123. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  124. package/min/persisters/with-schemas/index.js +1 -1
  125. package/min/persisters/with-schemas/index.js.gz +0 -0
  126. package/min/queries/index.js +1 -1
  127. package/min/queries/index.js.gz +0 -0
  128. package/min/queries/with-schemas/index.js +1 -1
  129. package/min/queries/with-schemas/index.js.gz +0 -0
  130. package/min/relationships/index.js +1 -1
  131. package/min/relationships/index.js.gz +0 -0
  132. package/min/relationships/with-schemas/index.js +1 -1
  133. package/min/relationships/with-schemas/index.js.gz +0 -0
  134. package/min/store/index.js +1 -1
  135. package/min/store/index.js.gz +0 -0
  136. package/min/store/with-schemas/index.js +1 -1
  137. package/min/store/with-schemas/index.js.gz +0 -0
  138. package/min/synchronizers/index.js +1 -1
  139. package/min/synchronizers/index.js.gz +0 -0
  140. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  141. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-local/index.js +1 -1
  145. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  149. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  164. package/min/synchronizers/with-schemas/index.js +1 -1
  165. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  166. package/min/ui-react-inspector/index.js +1 -1
  167. package/min/ui-react-inspector/index.js.gz +0 -0
  168. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  169. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  170. package/min/with-schemas/index.js +1 -1
  171. package/min/with-schemas/index.js.gz +0 -0
  172. package/omni/index.js +99 -64
  173. package/omni/with-schemas/index.js +99 -64
  174. package/package.json +3 -3
  175. package/persisters/index.js +19 -11
  176. package/persisters/persister-automerge/index.js +17 -9
  177. package/persisters/persister-automerge/with-schemas/index.js +17 -9
  178. package/persisters/persister-browser/index.js +17 -9
  179. package/persisters/persister-browser/with-schemas/index.js +17 -9
  180. package/persisters/persister-cr-sqlite-wasm/index.js +19 -11
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +19 -11
  182. package/persisters/persister-durable-object-sql-storage/index.js +19 -11
  183. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +19 -11
  184. package/persisters/persister-durable-object-storage/index.js +19 -11
  185. package/persisters/persister-durable-object-storage/with-schemas/index.js +19 -11
  186. package/persisters/persister-electric-sql/index.js +19 -11
  187. package/persisters/persister-electric-sql/with-schemas/index.js +19 -11
  188. package/persisters/persister-expo-sqlite/index.js +19 -11
  189. package/persisters/persister-expo-sqlite/with-schemas/index.js +19 -11
  190. package/persisters/persister-file/index.js +17 -9
  191. package/persisters/persister-file/with-schemas/index.js +17 -9
  192. package/persisters/persister-indexed-db/index.js +17 -9
  193. package/persisters/persister-indexed-db/with-schemas/index.js +17 -9
  194. package/persisters/persister-libsql/index.js +19 -11
  195. package/persisters/persister-libsql/with-schemas/index.js +19 -11
  196. package/persisters/persister-partykit-client/index.js +17 -9
  197. package/persisters/persister-partykit-client/with-schemas/index.js +17 -9
  198. package/persisters/persister-partykit-server/index.js +2 -2
  199. package/persisters/persister-partykit-server/with-schemas/index.js +2 -2
  200. package/persisters/persister-pglite/index.js +19 -11
  201. package/persisters/persister-pglite/with-schemas/index.js +19 -11
  202. package/persisters/persister-postgres/index.js +19 -11
  203. package/persisters/persister-postgres/with-schemas/index.js +19 -11
  204. package/persisters/persister-powersync/index.js +19 -11
  205. package/persisters/persister-powersync/with-schemas/index.js +19 -11
  206. package/persisters/persister-react-native-mmkv/index.js +17 -9
  207. package/persisters/persister-react-native-mmkv/with-schemas/index.js +17 -9
  208. package/persisters/persister-react-native-sqlite/index.js +19 -11
  209. package/persisters/persister-react-native-sqlite/with-schemas/index.js +19 -11
  210. package/persisters/persister-remote/index.js +17 -9
  211. package/persisters/persister-remote/with-schemas/index.js +17 -9
  212. package/persisters/persister-sqlite-bun/index.js +19 -11
  213. package/persisters/persister-sqlite-bun/with-schemas/index.js +19 -11
  214. package/persisters/persister-sqlite-wasm/index.js +19 -11
  215. package/persisters/persister-sqlite-wasm/with-schemas/index.js +19 -11
  216. package/persisters/persister-sqlite3/index.js +19 -11
  217. package/persisters/persister-sqlite3/with-schemas/index.js +19 -11
  218. package/persisters/persister-yjs/index.js +19 -11
  219. package/persisters/persister-yjs/with-schemas/index.js +19 -11
  220. package/persisters/with-schemas/index.js +19 -11
  221. package/queries/index.js +15 -14
  222. package/queries/with-schemas/index.js +15 -14
  223. package/readme.md +2 -2
  224. package/relationships/index.js +13 -12
  225. package/relationships/with-schemas/index.js +13 -12
  226. package/store/index.js +74 -60
  227. package/store/with-schemas/index.js +74 -60
  228. package/synchronizers/index.js +17 -9
  229. package/synchronizers/synchronizer-broadcast-channel/index.js +17 -9
  230. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -9
  231. package/synchronizers/synchronizer-local/index.js +19 -11
  232. package/synchronizers/synchronizer-local/with-schemas/index.js +19 -11
  233. package/synchronizers/synchronizer-ws-client/index.js +17 -9
  234. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +17 -9
  235. package/synchronizers/synchronizer-ws-server/index.js +20 -12
  236. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +20 -12
  237. package/synchronizers/synchronizer-ws-server-durable-object/index.js +17 -9
  238. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +17 -9
  239. package/synchronizers/synchronizer-ws-server-simple/index.js +11 -10
  240. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +11 -10
  241. package/synchronizers/with-schemas/index.js +17 -9
  242. package/ui-react-inspector/index.js +81 -60
  243. package/ui-react-inspector/with-schemas/index.js +81 -60
  244. package/with-schemas/index.js +92 -64
@@ -39,19 +39,20 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
39
39
  const object = Object;
40
40
  const objFreeze = object.freeze;
41
41
 
42
- const mapNew = (entries) => new Map(entries);
43
- const mapGet = (map, key) => map?.get(key);
44
- const mapForEach = (map, cb) =>
45
- collForEach(map, (value, key) => cb(key, value));
46
- const mapSet = (map, key, value) =>
47
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
48
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
49
- if (!collHas(map, key)) {
50
- mapSet(map, key, getDefaultValue());
42
+ const map = Map;
43
+ const mapNew = (entries) => new map(entries);
44
+ const mapGet = (map2, key) => map2?.get(key);
45
+ const mapForEach = (map2, cb) =>
46
+ collForEach(map2, (value, key) => cb(key, value));
47
+ const mapSet = (map2, key, value) =>
48
+ isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
49
+ const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
50
+ if (!collHas(map2, key)) {
51
+ mapSet(map2, key, getDefaultValue());
51
52
  } else {
52
- hadExistingValue?.(mapGet(map, key));
53
+ hadExistingValue?.(mapGet(map2, key));
53
54
  }
54
- return mapGet(map, key);
55
+ return mapGet(map2, key);
55
56
  };
56
57
  const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
57
58
  ifNotUndefined(
@@ -39,19 +39,20 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
39
39
  const object = Object;
40
40
  const objFreeze = object.freeze;
41
41
 
42
- const mapNew = (entries) => new Map(entries);
43
- const mapGet = (map, key) => map?.get(key);
44
- const mapForEach = (map, cb) =>
45
- collForEach(map, (value, key) => cb(key, value));
46
- const mapSet = (map, key, value) =>
47
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
48
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
49
- if (!collHas(map, key)) {
50
- mapSet(map, key, getDefaultValue());
42
+ const map = Map;
43
+ const mapNew = (entries) => new map(entries);
44
+ const mapGet = (map2, key) => map2?.get(key);
45
+ const mapForEach = (map2, cb) =>
46
+ collForEach(map2, (value, key) => cb(key, value));
47
+ const mapSet = (map2, key, value) =>
48
+ isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
49
+ const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
50
+ if (!collHas(map2, key)) {
51
+ mapSet(map2, key, getDefaultValue());
51
52
  } else {
52
- hadExistingValue?.(mapGet(map, key));
53
+ hadExistingValue?.(mapGet(map2, key));
53
54
  }
54
- return mapGet(map, key);
55
+ return mapGet(map2, key);
55
56
  };
56
57
  const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
57
58
  ifNotUndefined(
package/common/index.js CHANGED
@@ -19,8 +19,9 @@ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
19
19
  const object = Object;
20
20
  const objEntries = object.entries;
21
21
 
22
- const mapNew = (entries) => new Map(entries);
23
- const mapGet = (map, key) => map?.get(key);
22
+ const map = Map;
23
+ const mapNew = (entries) => new map(entries);
24
+ const mapGet = (map2, key) => map2?.get(key);
24
25
 
25
26
  const MASK6 = 63;
26
27
  const ENCODE = /* @__PURE__ */ strSplit(
@@ -19,8 +19,9 @@ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
19
19
  const object = Object;
20
20
  const objEntries = object.entries;
21
21
 
22
- const mapNew = (entries) => new Map(entries);
23
- const mapGet = (map, key) => map?.get(key);
22
+ const map = Map;
23
+ const mapNew = (entries) => new map(entries);
24
+ const mapGet = (map2, key) => map2?.get(key);
24
25
 
25
26
  const MASK6 = 63;
26
27
  const ENCODE = /* @__PURE__ */ strSplit(
package/index.js CHANGED
@@ -208,31 +208,32 @@ const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
208
208
  return emptyIsValid ? true : !objIsEmpty(obj);
209
209
  };
210
210
 
211
- const mapNew = (entries) => new Map(entries);
212
- const mapKeys = (map) => [...(map?.keys() ?? [])];
213
- const mapGet = (map, key) => map?.get(key);
214
- const mapForEach = (map, cb) =>
215
- collForEach(map, (value, key) => cb(key, value));
211
+ const map = Map;
212
+ const mapNew = (entries) => new map(entries);
213
+ const mapKeys = (map2) => [...(map2?.keys() ?? [])];
214
+ const mapGet = (map2, key) => map2?.get(key);
215
+ const mapForEach = (map2, cb) =>
216
+ collForEach(map2, (value, key) => cb(key, value));
216
217
  const mapMap = (coll, cb) =>
217
218
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
218
- const mapSet = (map, key, value) =>
219
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
220
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
221
- if (!collHas(map, key)) {
222
- mapSet(map, key, getDefaultValue());
219
+ const mapSet = (map2, key, value) =>
220
+ isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
221
+ const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
222
+ if (!collHas(map2, key)) {
223
+ mapSet(map2, key, getDefaultValue());
223
224
  } else {
224
- hadExistingValue?.(mapGet(map, key));
225
+ hadExistingValue?.(mapGet(map2, key));
225
226
  }
226
- return mapGet(map, key);
227
+ return mapGet(map2, key);
227
228
  };
228
- const mapMatch = (map, obj, set, del = mapSet) => {
229
- objMap(obj, (value, id) => set(map, id, value));
230
- mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
231
- return map;
229
+ const mapMatch = (map2, obj, set, del = mapSet) => {
230
+ objMap(obj, (value, id) => set(map2, id, value));
231
+ mapForEach(map2, (id) => (objHas(obj, id) ? 0 : del(map2, id)));
232
+ return map2;
232
233
  };
233
- const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
234
+ const mapToObj = (map2, valueMapper, excludeMapValue, excludeObjValue) => {
234
235
  const obj = {};
235
- collForEach(map, (mapValue, id) => {
236
+ collForEach(map2, (mapValue, id) => {
236
237
  if (!excludeMapValue?.(mapValue, id)) {
237
238
  const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
238
239
  if (!excludeObjValue?.(objValue)) {
@@ -242,27 +243,27 @@ const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
242
243
  });
243
244
  return obj;
244
245
  };
245
- const mapToObj2 = (map, valueMapper, excludeMapValue) =>
246
+ const mapToObj2 = (map2, valueMapper, excludeMapValue) =>
246
247
  mapToObj(
247
- map,
248
+ map2,
248
249
  (childMap) => mapToObj(childMap, valueMapper, excludeMapValue),
249
250
  collIsEmpty,
250
251
  objIsEmpty,
251
252
  );
252
- const mapToObj3 = (map, valueMapper, excludeMapValue) =>
253
+ const mapToObj3 = (map2, valueMapper, excludeMapValue) =>
253
254
  mapToObj(
254
- map,
255
+ map2,
255
256
  (childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),
256
257
  collIsEmpty,
257
258
  objIsEmpty,
258
259
  );
259
- const mapClone = (map, mapValue) => {
260
- const map2 = mapNew();
261
- collForEach(map, (value, key) => map2.set(key, mapValue?.(value) ?? value));
262
- return map2;
260
+ const mapClone = (map2, mapValue) => {
261
+ const map22 = mapNew();
262
+ collForEach(map2, (value, key) => map22.set(key, mapValue?.(value) ?? value));
263
+ return map22;
263
264
  };
264
- const mapClone2 = (map) => mapClone(map, mapClone);
265
- const mapClone3 = (map) => mapClone(map, mapClone2);
265
+ const mapClone2 = (map2) => mapClone(map2, mapClone);
266
+ const mapClone3 = (map2) => mapClone(map2, mapClone2);
266
267
  const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
267
268
  ifNotUndefined(
268
269
  (ensureLeaf ? mapEnsure : mapGet)(
@@ -1218,6 +1219,7 @@ const createStore = () => {
1218
1219
  let hadValues = false;
1219
1220
  let transactions = 0;
1220
1221
  let internalListeners = [];
1222
+ let mutating = 0;
1221
1223
  const changedTableIds = mapNew();
1222
1224
  const changedTableCellIds = mapNew();
1223
1225
  const changedRowCount = mapNew();
@@ -1622,13 +1624,13 @@ const createStore = () => {
1622
1624
  cellId,
1623
1625
  () => [oldCell, 0],
1624
1626
  )[1] = newCell;
1625
- internalListeners[3]?.(tableId, rowId, cellId, newCell);
1627
+ internalListeners[3]?.(tableId, rowId, cellId, newCell, mutating);
1626
1628
  };
1627
1629
  const valueIdsChanged = (valueId, addedOrRemoved) =>
1628
1630
  idsChanged(changedValueIds, valueId, addedOrRemoved);
1629
1631
  const valueChanged = (valueId, oldValue, newValue) => {
1630
1632
  mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
1631
- internalListeners[4]?.(valueId, newValue);
1633
+ internalListeners[4]?.(valueId, newValue, mutating);
1632
1634
  };
1633
1635
  const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
1634
1636
  arrayPush(
@@ -1703,14 +1705,11 @@ const createStore = () => {
1703
1705
  }
1704
1706
  };
1705
1707
  const callTabularListenersForChanges = (mutator) => {
1706
- const hasTablesNow = hasTables();
1707
- if (hasTablesNow != hadTables) {
1708
- callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
1709
- }
1710
- const emptySortedRowIdListeners = collIsEmpty(
1708
+ const hasHasTablesListeners = !collIsEmpty(hasTablesListeners[mutator]);
1709
+ const hasSortedRowIdListeners = !collIsEmpty(
1711
1710
  sortedRowIdsListeners[mutator],
1712
1711
  );
1713
- const emptyIdAndHasListeners =
1712
+ const hasIdOrHasListeners = !(
1714
1713
  collIsEmpty(cellIdsListeners[mutator]) &&
1715
1714
  collIsEmpty(hasCellListeners[mutator]) &&
1716
1715
  collIsEmpty(rowIdsListeners[mutator]) &&
@@ -1718,15 +1717,17 @@ const createStore = () => {
1718
1717
  collIsEmpty(tableCellIdsListeners[mutator]) &&
1719
1718
  collIsEmpty(hasTableCellListeners[mutator]) &&
1720
1719
  collIsEmpty(rowCountListeners[mutator]) &&
1721
- emptySortedRowIdListeners &&
1720
+ !hasSortedRowIdListeners &&
1722
1721
  collIsEmpty(tableIdsListeners[mutator]) &&
1723
- collIsEmpty(hasTableListeners[mutator]);
1724
- const emptyOtherListeners =
1722
+ collIsEmpty(hasTableListeners[mutator])
1723
+ );
1724
+ const hasOtherListeners = !(
1725
1725
  collIsEmpty(cellListeners[mutator]) &&
1726
1726
  collIsEmpty(rowListeners[mutator]) &&
1727
1727
  collIsEmpty(tableListeners[mutator]) &&
1728
- collIsEmpty(tablesListeners[mutator]);
1729
- if (!emptyIdAndHasListeners || !emptyOtherListeners) {
1728
+ collIsEmpty(tablesListeners[mutator])
1729
+ );
1730
+ if (hasHasTablesListeners || hasIdOrHasListeners || hasOtherListeners) {
1730
1731
  const changes = mutator
1731
1732
  ? [
1732
1733
  mapClone(changedTableIds),
@@ -1734,7 +1735,9 @@ const createStore = () => {
1734
1735
  mapClone(changedRowCount),
1735
1736
  mapClone2(changedRowIds),
1736
1737
  mapClone3(changedCellIds),
1737
- mapClone3(changedCells),
1738
+ mapClone(changedCells, (map) =>
1739
+ mapClone(map, (map2) => mapClone(map2, pairClone)),
1740
+ ),
1738
1741
  ]
1739
1742
  : [
1740
1743
  changedTableIds,
@@ -1744,7 +1747,13 @@ const createStore = () => {
1744
1747
  changedCellIds,
1745
1748
  changedCells,
1746
1749
  ];
1747
- if (!emptyIdAndHasListeners) {
1750
+ if (hasHasTablesListeners) {
1751
+ const hasTablesNow = hasTables();
1752
+ if (hasTablesNow != hadTables) {
1753
+ callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
1754
+ }
1755
+ }
1756
+ if (hasIdOrHasListeners) {
1748
1757
  callIdsAndHasListenersIfChanged(
1749
1758
  changes[0],
1750
1759
  tableIdsListeners[mutator],
@@ -1776,13 +1785,13 @@ const createStore = () => {
1776
1785
  hasRowListeners[mutator],
1777
1786
  [tableId],
1778
1787
  ) &&
1779
- !emptySortedRowIdListeners
1788
+ hasSortedRowIdListeners
1780
1789
  ) {
1781
1790
  callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
1782
1791
  setAdd(calledSortableTableIds, tableId);
1783
1792
  }
1784
1793
  });
1785
- if (!emptySortedRowIdListeners) {
1794
+ if (hasSortedRowIdListeners) {
1786
1795
  collForEach(changes[5], (rows, tableId) => {
1787
1796
  if (!collHas(calledSortableTableIds, tableId)) {
1788
1797
  const sortableCellIds = setNew();
@@ -1813,7 +1822,7 @@ const createStore = () => {
1813
1822
  ),
1814
1823
  );
1815
1824
  }
1816
- if (!emptyOtherListeners) {
1825
+ if (hasOtherListeners) {
1817
1826
  let tablesChanged;
1818
1827
  collForEach(changes[5], (rows, tableId) => {
1819
1828
  let tableChanged;
@@ -1850,28 +1859,31 @@ const createStore = () => {
1850
1859
  }
1851
1860
  };
1852
1861
  const callValuesListenersForChanges = (mutator) => {
1853
- const hasValuesNow = hasValues();
1854
- if (hasValuesNow != hadValues) {
1855
- callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
1856
- }
1857
- const emptyIdAndHasListeners =
1858
- collIsEmpty(valueIdsListeners[mutator]) &&
1859
- collIsEmpty(hasValueListeners[mutator]);
1860
- const emptyOtherListeners =
1861
- collIsEmpty(valueListeners[mutator]) &&
1862
- collIsEmpty(valuesListeners[mutator]);
1863
- if (!emptyIdAndHasListeners || !emptyOtherListeners) {
1862
+ const hasHasValuesListeners = !collIsEmpty(hasValuesListeners[mutator]);
1863
+ const hasIdOrHasListeners =
1864
+ !collIsEmpty(valueIdsListeners[mutator]) ||
1865
+ !collIsEmpty(hasValueListeners[mutator]);
1866
+ const hasOtherListeners =
1867
+ !collIsEmpty(valueListeners[mutator]) ||
1868
+ !collIsEmpty(valuesListeners[mutator]);
1869
+ if (hasHasValuesListeners || hasIdOrHasListeners || hasOtherListeners) {
1864
1870
  const changes = mutator
1865
- ? [mapClone(changedValueIds), mapClone(changedValues)]
1871
+ ? [mapClone(changedValueIds), mapClone(changedValues, pairClone)]
1866
1872
  : [changedValueIds, changedValues];
1867
- if (!emptyIdAndHasListeners) {
1873
+ if (hasHasValuesListeners) {
1874
+ const hasValuesNow = hasValues();
1875
+ if (hasValuesNow != hadValues) {
1876
+ callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
1877
+ }
1878
+ }
1879
+ if (hasIdOrHasListeners) {
1868
1880
  callIdsAndHasListenersIfChanged(
1869
1881
  changes[0],
1870
1882
  valueIdsListeners[mutator],
1871
1883
  hasValueListeners[mutator],
1872
1884
  );
1873
1885
  }
1874
- if (!emptyOtherListeners) {
1886
+ if (hasOtherListeners) {
1875
1887
  let valuesChanged;
1876
1888
  collForEach(changes[1], ([oldValue, newValue], valueId) => {
1877
1889
  if (newValue !== oldValue) {
@@ -2268,6 +2280,7 @@ const createStore = () => {
2268
2280
  transactions--;
2269
2281
  if (transactions == 0) {
2270
2282
  transactions = 1;
2283
+ mutating = 1;
2271
2284
  callInvalidCellListeners(1);
2272
2285
  if (!collIsEmpty(changedCells)) {
2273
2286
  callTabularListenersForChanges(1);
@@ -2276,6 +2289,7 @@ const createStore = () => {
2276
2289
  if (!collIsEmpty(changedValues)) {
2277
2290
  callValuesListenersForChanges(1);
2278
2291
  }
2292
+ mutating = 0;
2279
2293
  if (doRollback?.(store)) {
2280
2294
  collForEach(changedCells, (table, tableId) =>
2281
2295
  collForEach(table, (row, rowId) =>
@@ -2642,6 +2656,7 @@ const createMergeableStore = (uniqueId, getNow) => {
2642
2656
  let listeningToRawStoreChanges = 1;
2643
2657
  let contentStampMap = newContentStampMap();
2644
2658
  let defaultingContent = 0;
2659
+ let mutated = 0;
2645
2660
  const touchedCells = mapNew();
2646
2661
  const touchedValues = setNew();
2647
2662
  const [getNextHlc, seenHlc] = getHlcFunctions(uniqueId, getNow);
@@ -2768,12 +2783,15 @@ const createMergeableStore = (uniqueId, getNow) => {
2768
2783
  collClear(touchedCells);
2769
2784
  collClear(touchedValues);
2770
2785
  };
2771
- const cellChanged = (tableId, rowId, cellId, newCell) => {
2786
+ const cellChanged = (tableId, rowId, cellId, newCell, mutating) => {
2772
2787
  setAdd(
2773
2788
  mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
2774
2789
  cellId,
2775
2790
  );
2776
- if (listeningToRawStoreChanges) {
2791
+ if (listeningToRawStoreChanges || mutating) {
2792
+ if (mutating) {
2793
+ mutated = 1;
2794
+ }
2777
2795
  mergeContentOrChanges([
2778
2796
  [
2779
2797
  {
@@ -2796,9 +2814,12 @@ const createMergeableStore = (uniqueId, getNow) => {
2796
2814
  ]);
2797
2815
  }
2798
2816
  };
2799
- const valueChanged = (valueId, newValue) => {
2817
+ const valueChanged = (valueId, newValue, mutating) => {
2800
2818
  setAdd(touchedValues, valueId);
2801
- if (listeningToRawStoreChanges) {
2819
+ if (listeningToRawStoreChanges || mutating) {
2820
+ if (mutating) {
2821
+ mutated = 1;
2822
+ }
2802
2823
  mergeContentOrChanges([
2803
2824
  [{}],
2804
2825
  [
@@ -3016,6 +3037,11 @@ const createMergeableStore = (uniqueId, getNow) => {
3016
3037
  mergeableStore2.applyMergeableChanges(mergeableChanges);
3017
3038
  return applyMergeableChanges(mergeableChanges2);
3018
3039
  };
3040
+ const hadMutated = () => {
3041
+ const result = mutated;
3042
+ mutated = 0;
3043
+ return result;
3044
+ };
3019
3045
  const mergeableStore = {
3020
3046
  getMergeableContent,
3021
3047
  getMergeableContentHashes,
@@ -3032,6 +3058,8 @@ const createMergeableStore = (uniqueId, getNow) => {
3032
3058
  getTransactionMergeableChanges,
3033
3059
  applyMergeableChanges,
3034
3060
  merge,
3061
+ // only used internally by other modules
3062
+ hadMutated,
3035
3063
  };
3036
3064
  store.setInternalListeners(
3037
3065
  preStartTransaction,
package/indexes/index.js CHANGED
@@ -45,20 +45,21 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
45
45
  const object = Object;
46
46
  const objFreeze = object.freeze;
47
47
 
48
- const mapNew = (entries) => new Map(entries);
49
- const mapKeys = (map) => [...(map?.keys() ?? [])];
50
- const mapGet = (map, key) => map?.get(key);
51
- const mapForEach = (map, cb) =>
52
- collForEach(map, (value, key) => cb(key, value));
53
- const mapSet = (map, key, value) =>
54
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
55
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
56
- if (!collHas(map, key)) {
57
- mapSet(map, key, getDefaultValue());
48
+ const map = Map;
49
+ const mapNew = (entries) => new map(entries);
50
+ const mapKeys = (map2) => [...(map2?.keys() ?? [])];
51
+ const mapGet = (map2, key) => map2?.get(key);
52
+ const mapForEach = (map2, cb) =>
53
+ collForEach(map2, (value, key) => cb(key, value));
54
+ const mapSet = (map2, key, value) =>
55
+ isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
56
+ const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
57
+ if (!collHas(map2, key)) {
58
+ mapSet(map2, key, getDefaultValue());
58
59
  } else {
59
- hadExistingValue?.(mapGet(map, key));
60
+ hadExistingValue?.(mapGet(map2, key));
60
61
  }
61
- return mapGet(map, key);
62
+ return mapGet(map2, key);
62
63
  };
63
64
  const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
64
65
  ifNotUndefined(
@@ -45,20 +45,21 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
45
45
  const object = Object;
46
46
  const objFreeze = object.freeze;
47
47
 
48
- const mapNew = (entries) => new Map(entries);
49
- const mapKeys = (map) => [...(map?.keys() ?? [])];
50
- const mapGet = (map, key) => map?.get(key);
51
- const mapForEach = (map, cb) =>
52
- collForEach(map, (value, key) => cb(key, value));
53
- const mapSet = (map, key, value) =>
54
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
55
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
56
- if (!collHas(map, key)) {
57
- mapSet(map, key, getDefaultValue());
48
+ const map = Map;
49
+ const mapNew = (entries) => new map(entries);
50
+ const mapKeys = (map2) => [...(map2?.keys() ?? [])];
51
+ const mapGet = (map2, key) => map2?.get(key);
52
+ const mapForEach = (map2, cb) =>
53
+ collForEach(map2, (value, key) => cb(key, value));
54
+ const mapSet = (map2, key, value) =>
55
+ isUndefined(value) ? (collDel(map2, key), map2) : map2?.set(key, value);
56
+ const mapEnsure = (map2, key, getDefaultValue, hadExistingValue) => {
57
+ if (!collHas(map2, key)) {
58
+ mapSet(map2, key, getDefaultValue());
58
59
  } else {
59
- hadExistingValue?.(mapGet(map, key));
60
+ hadExistingValue?.(mapGet(map2, key));
60
61
  }
61
- return mapGet(map, key);
62
+ return mapGet(map2, key);
62
63
  };
63
64
  const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
64
65
  ifNotUndefined(