tinybase 8.6.0-beta.0 → 9.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.
Files changed (253) hide show
  1. package/@types/_internal/queries/with-schemas/index.d.ts +1 -2
  2. package/@types/_internal/ui/with-schemas/index.d.ts +8 -16
  3. package/@types/mergeable-store/index.d.ts +4 -4
  4. package/@types/mergeable-store/with-schemas/index.d.ts +41 -17
  5. package/@types/persisters/index.d.ts +34 -13
  6. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +9 -8
  7. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +10 -10
  8. package/@types/persisters/with-schemas/index.d.ts +72 -30
  9. package/@types/queries/index.d.ts +5 -7
  10. package/@types/queries/with-schemas/index.d.ts +9 -15
  11. package/@types/store/index.d.ts +1 -2
  12. package/@types/store/with-schemas/index.d.ts +19 -29
  13. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +9 -3
  14. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +10 -3
  15. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +15 -2
  16. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +17 -2
  17. package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +51 -0
  18. package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +51 -0
  19. package/@types/ui-react/with-schemas/index.d.ts +3 -6
  20. package/@types/ui-react-dom/with-schemas/index.d.ts +6 -12
  21. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +3 -4
  22. package/@types/ui-solid/with-schemas/index.d.ts +4 -8
  23. package/@types/ui-solid-dom/with-schemas/index.d.ts +6 -12
  24. package/@types/ui-svelte-dom/with-schemas/index.d.ts +6 -12
  25. package/index.js +67 -25
  26. package/indexes/index.js +6 -8
  27. package/indexes/with-schemas/index.js +6 -8
  28. package/mergeable-store/index.js +46 -6
  29. package/mergeable-store/with-schemas/index.js +46 -6
  30. package/metrics/index.js +6 -8
  31. package/metrics/with-schemas/index.js +6 -8
  32. package/min/index.js +1 -1
  33. package/min/index.js.gz +0 -0
  34. package/min/mergeable-store/index.js +1 -1
  35. package/min/mergeable-store/index.js.gz +0 -0
  36. package/min/mergeable-store/with-schemas/index.js +1 -1
  37. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  38. package/min/omni/index.js +1 -1
  39. package/min/omni/index.js.gz +0 -0
  40. package/min/omni/with-schemas/index.js +1 -1
  41. package/min/omni/with-schemas/index.js.gz +0 -0
  42. package/min/persisters/index.js +1 -1
  43. package/min/persisters/index.js.gz +0 -0
  44. package/min/persisters/persister-automerge/index.js +1 -1
  45. package/min/persisters/persister-automerge/index.js.gz +0 -0
  46. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  47. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  48. package/min/persisters/persister-browser/index.js +1 -1
  49. package/min/persisters/persister-browser/index.js.gz +0 -0
  50. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  51. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  52. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  53. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  54. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  55. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  56. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  57. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  58. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  59. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  61. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  62. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  63. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  64. package/min/persisters/persister-electric-sql/index.js +1 -1
  65. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  66. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  67. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  68. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  69. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  70. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  71. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  72. package/min/persisters/persister-file/index.js +1 -1
  73. package/min/persisters/persister-file/index.js.gz +0 -0
  74. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  75. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  76. package/min/persisters/persister-indexed-db/index.js +1 -1
  77. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  78. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  79. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  80. package/min/persisters/persister-libsql/index.js +1 -1
  81. package/min/persisters/persister-libsql/index.js.gz +0 -0
  82. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  83. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  84. package/min/persisters/persister-partykit-client/index.js +1 -1
  85. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  86. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  87. package/min/persisters/persister-partykit-client/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/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/with-schemas/index.js +1 -1
  161. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  162. package/min/ui-react-inspector/index.js +1 -1
  163. package/min/ui-react-inspector/index.js.gz +0 -0
  164. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  165. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  166. package/min/ui-solid-inspector/index.js +1 -1
  167. package/min/ui-solid-inspector/index.js.gz +0 -0
  168. package/min/ui-solid-inspector/with-schemas/index.js +1 -1
  169. package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
  170. package/min/ui-svelte-inspector/index.js +1 -1
  171. package/min/ui-svelte-inspector/index.js.gz +0 -0
  172. package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
  173. package/min/ui-svelte-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 +364 -155
  177. package/omni/with-schemas/index.js +364 -155
  178. package/package.json +8 -8
  179. package/persisters/index.js +133 -40
  180. package/persisters/persister-automerge/index.js +4 -3
  181. package/persisters/persister-automerge/with-schemas/index.js +4 -3
  182. package/persisters/persister-browser/index.js +4 -3
  183. package/persisters/persister-browser/with-schemas/index.js +4 -3
  184. package/persisters/persister-cr-sqlite-wasm/index.js +133 -40
  185. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +133 -40
  186. package/persisters/persister-durable-object-sql-storage/index.js +275 -113
  187. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +275 -113
  188. package/persisters/persister-durable-object-storage/index.js +4 -3
  189. package/persisters/persister-durable-object-storage/with-schemas/index.js +4 -3
  190. package/persisters/persister-electric-sql/index.js +133 -40
  191. package/persisters/persister-electric-sql/with-schemas/index.js +133 -40
  192. package/persisters/persister-expo-sqlite/index.js +133 -40
  193. package/persisters/persister-expo-sqlite/with-schemas/index.js +133 -40
  194. package/persisters/persister-file/index.js +4 -3
  195. package/persisters/persister-file/with-schemas/index.js +4 -3
  196. package/persisters/persister-indexed-db/index.js +4 -3
  197. package/persisters/persister-indexed-db/with-schemas/index.js +4 -3
  198. package/persisters/persister-libsql/index.js +133 -40
  199. package/persisters/persister-libsql/with-schemas/index.js +133 -40
  200. package/persisters/persister-partykit-client/index.js +4 -3
  201. package/persisters/persister-partykit-client/with-schemas/index.js +4 -3
  202. package/persisters/persister-pglite/index.js +134 -40
  203. package/persisters/persister-pglite/with-schemas/index.js +134 -40
  204. package/persisters/persister-postgres/index.js +134 -40
  205. package/persisters/persister-postgres/with-schemas/index.js +134 -40
  206. package/persisters/persister-powersync/index.js +186 -120
  207. package/persisters/persister-powersync/with-schemas/index.js +186 -120
  208. package/persisters/persister-react-native-mmkv/index.js +4 -3
  209. package/persisters/persister-react-native-mmkv/with-schemas/index.js +4 -3
  210. package/persisters/persister-react-native-sqlite/index.js +133 -40
  211. package/persisters/persister-react-native-sqlite/with-schemas/index.js +133 -40
  212. package/persisters/persister-remote/index.js +4 -3
  213. package/persisters/persister-remote/with-schemas/index.js +4 -3
  214. package/persisters/persister-sqlite-bun/index.js +133 -40
  215. package/persisters/persister-sqlite-bun/with-schemas/index.js +133 -40
  216. package/persisters/persister-sqlite-wasm/index.js +133 -40
  217. package/persisters/persister-sqlite-wasm/with-schemas/index.js +133 -40
  218. package/persisters/persister-sqlite3/index.js +133 -40
  219. package/persisters/persister-sqlite3/with-schemas/index.js +133 -40
  220. package/persisters/persister-yjs/index.js +4 -3
  221. package/persisters/persister-yjs/with-schemas/index.js +4 -3
  222. package/persisters/with-schemas/index.js +133 -40
  223. package/queries/index.js +21 -19
  224. package/queries/with-schemas/index.js +21 -19
  225. package/readme.md +14 -14
  226. package/relationships/index.js +6 -8
  227. package/relationships/with-schemas/index.js +6 -8
  228. package/releases.md +72 -57
  229. package/store/index.js +33 -2
  230. package/store/with-schemas/index.js +33 -2
  231. package/synchronizers/index.js +4 -3
  232. package/synchronizers/synchronizer-broadcast-channel/index.js +4 -3
  233. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +4 -3
  234. package/synchronizers/synchronizer-local/index.js +4 -3
  235. package/synchronizers/synchronizer-local/with-schemas/index.js +4 -3
  236. package/synchronizers/synchronizer-ws-client/index.js +120 -45
  237. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +120 -45
  238. package/synchronizers/synchronizer-ws-server/index.js +116 -36
  239. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +116 -36
  240. package/synchronizers/synchronizer-ws-server-durable-object/index.js +125 -41
  241. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +125 -41
  242. package/synchronizers/with-schemas/index.js +4 -3
  243. package/ui-react-inspector/index.js +36 -5
  244. package/ui-react-inspector/with-schemas/index.js +36 -5
  245. package/ui-solid-inspector/index.js +36 -5
  246. package/ui-solid-inspector/with-schemas/index.js +36 -5
  247. package/ui-svelte/index.js +1 -1
  248. package/ui-svelte/with-schemas/index.js +1 -1
  249. package/ui-svelte-dom/index.js +2 -2
  250. package/ui-svelte-dom/with-schemas/index.js +2 -2
  251. package/ui-svelte-inspector/index.js +38 -7
  252. package/ui-svelte-inspector/with-schemas/index.js +38 -7
  253. package/with-schemas/index.js +67 -25
@@ -339,14 +339,12 @@ const getDefinableFunctions = (
339
339
  const newRowValue = hasRow(tableId, rowId)
340
340
  ? validateRowValue(getRowValue(getCell, rowId))
341
341
  : void 0;
342
- if (
343
- !(
344
- oldRowValue === newRowValue ||
345
- (isArray(oldRowValue) &&
346
- isArray(newRowValue) &&
347
- arrayIsEqual(oldRowValue, newRowValue))
348
- )
349
- ) {
342
+ if (!(
343
+ oldRowValue === newRowValue ||
344
+ (isArray(oldRowValue) &&
345
+ isArray(newRowValue) &&
346
+ arrayIsEqual(oldRowValue, newRowValue))
347
+ )) {
350
348
  mapSet(changedRowValues, rowId, [oldRowValue, newRowValue]);
351
349
  }
352
350
  if (!isUndefined(getSortKey)) {
@@ -1227,8 +1225,10 @@ const createStore = () => {
1227
1225
  const changedRowIds = mapNew();
1228
1226
  const changedCellIds = mapNew();
1229
1227
  const changedCells = mapNew();
1228
+ const defaultedCells = mapNew();
1230
1229
  const changedValueIds = mapNew();
1231
1230
  const changedValues = mapNew();
1231
+ const defaultedValues = setNew();
1232
1232
  const invalidCells = mapNew();
1233
1233
  const invalidValues = mapNew();
1234
1234
  const tablesSchemaMap = mapNew();
@@ -1402,6 +1402,16 @@ const createStore = () => {
1402
1402
  collForEach(rowDefaulted, (cell, cellId) => {
1403
1403
  if (!objHas(row, cellId)) {
1404
1404
  row[cellId] = cell;
1405
+ ifNotUndefined(rowId, (rowId2) =>
1406
+ setAdd(
1407
+ mapEnsure(
1408
+ mapEnsure(defaultedCells, tableId, mapNew),
1409
+ rowId2,
1410
+ setNew,
1411
+ ),
1412
+ cellId,
1413
+ ),
1414
+ );
1405
1415
  }
1406
1416
  });
1407
1417
  collForEach(rowNonDefaulted, (cellId) => {
@@ -1418,6 +1428,7 @@ const createStore = () => {
1418
1428
  collForEach(valuesDefaulted, (value, valueId) => {
1419
1429
  if (!objHas(values, valueId)) {
1420
1430
  values[valueId] = value;
1431
+ setAdd(defaultedValues, valueId);
1421
1432
  }
1422
1433
  });
1423
1434
  collForEach(valuesNonDefaulted, (valueId) => {
@@ -1821,18 +1832,34 @@ const createStore = () => {
1821
1832
  );
1822
1833
  };
1823
1834
  const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
1835
+ const defaulted =
1836
+ collHas(mapGet(mapGet(defaultedCells, tableId), rowId), cellId) &&
1837
+ isUndefined(oldCell)
1838
+ ? 1
1839
+ : 0;
1824
1840
  mapEnsure(
1825
1841
  mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
1826
1842
  cellId,
1827
1843
  () => [oldCell, 0],
1828
1844
  )[1] = newCell;
1829
- internalListeners[3]?.(tableId, rowId, cellId, newCell, mutating);
1845
+ internalListeners[3]?.(
1846
+ tableId,
1847
+ rowId,
1848
+ cellId,
1849
+ newCell,
1850
+ mutating,
1851
+ defaulted,
1852
+ );
1853
+ collDel(mapGet(mapGet(defaultedCells, tableId), rowId), cellId);
1830
1854
  };
1831
1855
  const valueIdsChanged = (valueId, addedOrRemoved) =>
1832
1856
  idsChanged(changedValueIds, valueId, addedOrRemoved);
1833
1857
  const valueChanged = (valueId, oldValue, newValue) => {
1858
+ const defaulted =
1859
+ collHas(defaultedValues, valueId) && isUndefined(oldValue) ? 1 : 0;
1834
1860
  mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
1835
- internalListeners[4]?.(valueId, newValue, mutating);
1861
+ internalListeners[4]?.(valueId, newValue, mutating, defaulted);
1862
+ collDel(defaultedValues, valueId);
1836
1863
  };
1837
1864
  const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
1838
1865
  arrayPush(
@@ -2620,9 +2647,11 @@ const createStore = () => {
2620
2647
  changedRowIds,
2621
2648
  changedCellIds,
2622
2649
  changedCells,
2650
+ defaultedCells,
2623
2651
  invalidCells,
2624
2652
  changedValueIds,
2625
2653
  changedValues,
2654
+ defaultedValues,
2626
2655
  invalidValues,
2627
2656
  ],
2628
2657
  collClear,
@@ -3127,7 +3156,14 @@ const createMergeableStore = (uniqueId, getNow) => {
3127
3156
  collClear(touchedCells);
3128
3157
  collClear(touchedValues);
3129
3158
  };
3130
- const cellChanged = (tableId, rowId, cellId, newCell, mutating) => {
3159
+ const cellChanged = (
3160
+ tableId,
3161
+ rowId,
3162
+ cellId,
3163
+ newCell,
3164
+ mutating,
3165
+ defaulted,
3166
+ ) => {
3131
3167
  setAdd(
3132
3168
  mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
3133
3169
  cellId,
@@ -3145,7 +3181,9 @@ const createMergeableStore = (uniqueId, getNow) => {
3145
3181
  {
3146
3182
  [cellId]: [
3147
3183
  newCell,
3148
- defaultingContent ? EMPTY_STRING : getNextHlc(),
3184
+ defaultingContent || defaulted
3185
+ ? EMPTY_STRING
3186
+ : getNextHlc(),
3149
3187
  ],
3150
3188
  },
3151
3189
  ],
@@ -3158,7 +3196,7 @@ const createMergeableStore = (uniqueId, getNow) => {
3158
3196
  ]);
3159
3197
  }
3160
3198
  };
3161
- const valueChanged = (valueId, newValue, mutating) => {
3199
+ const valueChanged = (valueId, newValue, mutating, defaulted) => {
3162
3200
  setAdd(touchedValues, valueId);
3163
3201
  if (listeningToRawStoreChanges || mutating) {
3164
3202
  if (mutating) {
@@ -3170,7 +3208,7 @@ const createMergeableStore = (uniqueId, getNow) => {
3170
3208
  {
3171
3209
  [valueId]: [
3172
3210
  newValue,
3173
- defaultingContent ? EMPTY_STRING : getNextHlc(),
3211
+ defaultingContent || defaulted ? EMPTY_STRING : getNextHlc(),
3174
3212
  ],
3175
3213
  },
3176
3214
  ],
@@ -3753,9 +3791,9 @@ const PARAMS_TABLE = '_';
3753
3791
  const PARAM_LISTENER_PREFIX = 'p';
3754
3792
  const createQueries = getCreateFunction((store) => {
3755
3793
  const createStore = store._[0];
3756
- const preStore = createStore();
3757
3794
  const paramStore = createStore();
3758
3795
  const resultStore = createStore();
3796
+ const preStores = mapNew();
3759
3797
  const resultStores = mapNew();
3760
3798
  const redefiningQueryIds = setNew();
3761
3799
  const routedResultListeners = mapNew();
@@ -3798,12 +3836,13 @@ const createQueries = getCreateFunction((store) => {
3798
3836
  );
3799
3837
  const getResultStore = (queryId) =>
3800
3838
  mapEnsure(resultStores, queryId, createStore);
3801
- const addPreStoreListener = (preStore2, queryId, ...listenerIds) =>
3839
+ const getPreStore = (queryId) => mapEnsure(preStores, queryId, createStore);
3840
+ const addPreStoreListener = (preStore, queryId, ...listenerIds) =>
3802
3841
  arrayForEach(listenerIds, (listenerId) =>
3803
3842
  setAdd(
3804
3843
  mapEnsure(
3805
3844
  mapEnsure(preStoreListenerIds, queryId, mapNew),
3806
- preStore2,
3845
+ preStore,
3807
3846
  setNew,
3808
3847
  ),
3809
3848
  listenerId,
@@ -3813,16 +3852,17 @@ const createQueries = getCreateFunction((store) => {
3813
3852
  ifNotUndefined(
3814
3853
  mapGet(preStoreListenerIds, queryId),
3815
3854
  (queryPreStoreListenerIds) => {
3816
- mapForEach(queryPreStoreListenerIds, (preStore2, listenerIds) =>
3855
+ mapForEach(queryPreStoreListenerIds, (preStore, listenerIds) =>
3817
3856
  collForEach(listenerIds, (listenerId) =>
3818
- preStore2.delListener(listenerId),
3857
+ preStore.delListener(listenerId),
3819
3858
  ),
3820
3859
  );
3821
3860
  collClear(queryPreStoreListenerIds);
3822
3861
  },
3823
3862
  );
3824
- arrayForEach([getResultStore(queryId), preStore], (store2) =>
3825
- store2.delTable(queryId),
3863
+ arrayForEach(
3864
+ [getResultStore(queryId), mapGet(preStores, queryId)],
3865
+ (store2) => store2?.delTable(queryId),
3826
3866
  );
3827
3867
  };
3828
3868
  const addSourceStoreListeners = (
@@ -4050,10 +4090,12 @@ const createQueries = getCreateFunction((store) => {
4050
4090
  ),
4051
4091
  );
4052
4092
  const groups = mapNew(groupEntries);
4053
- let selectJoinWhereStore = preStore;
4054
- if (collIsEmpty(groups) && arrayIsEmpty(havings)) {
4055
- selectJoinWhereStore = resultStore2;
4056
- } else {
4093
+ const hasGroupsOrHavings =
4094
+ !collIsEmpty(groups) || !arrayIsEmpty(havings);
4095
+ const selectJoinWhereStore = hasGroupsOrHavings
4096
+ ? getPreStore(queryId)
4097
+ : resultStore2;
4098
+ if (hasGroupsOrHavings) {
4057
4099
  synchronizeTransactions(queryId, selectJoinWhereStore, resultStore2);
4058
4100
  const groupedSelectedCellIds = mapNew();
4059
4101
  mapForEach(groups, (groupedCellId, [selectedCellId, aggregators]) =>