tinybase 5.0.0-beta.17 → 5.0.0-beta.19

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 (1522) hide show
  1. package/@types/_internal/queries/index.d.ts +0 -0
  2. package/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  3. package/@types/_internal/store/index.d.ts +3 -0
  4. package/@types/_internal/store/with-schemas/index.d.ts +106 -0
  5. package/@types/_internal/ui-react/index.d.ts +0 -0
  6. package/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  7. package/@types/checkpoints/index.d.ts +1033 -0
  8. package/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  9. package/@types/common/index.d.ts +117 -0
  10. package/@types/common/with-schemas/index.d.ts +117 -0
  11. package/@types/index.d.ts +18 -0
  12. package/@types/indexes/index.d.ts +1037 -0
  13. package/@types/indexes/with-schemas/index.d.ts +1183 -0
  14. package/@types/mergeable-store/index.d.ts +222 -0
  15. package/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  16. package/@types/metrics/index.d.ts +895 -0
  17. package/@types/metrics/with-schemas/index.d.ts +982 -0
  18. package/@types/persisters/index.d.ts +1319 -0
  19. package/@types/persisters/persister-automerge/index.d.ts +162 -0
  20. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  21. package/@types/persisters/persister-browser/index.d.ts +174 -0
  22. package/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  23. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  24. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  25. package/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  26. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  27. package/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  28. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  29. package/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  30. package/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  31. package/@types/persisters/persister-file/index.d.ts +88 -0
  32. package/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  33. package/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  34. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  35. package/@types/persisters/persister-libsql/index.d.ts +154 -0
  36. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  37. package/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  38. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  39. package/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  40. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  41. package/@types/persisters/persister-powersync/index.d.ts +169 -0
  42. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  43. package/@types/persisters/persister-remote/index.d.ts +113 -0
  44. package/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  45. package/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  46. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  47. package/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  48. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  49. package/@types/persisters/persister-yjs/index.d.ts +157 -0
  50. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  51. package/@types/persisters/with-schemas/index.d.ts +1393 -0
  52. package/@types/queries/index.d.ts +3640 -0
  53. package/@types/queries/with-schemas/index.d.ts +3961 -0
  54. package/@types/relationships/index.d.ts +1266 -0
  55. package/@types/relationships/with-schemas/index.d.ts +1420 -0
  56. package/@types/store/index.d.ts +7453 -0
  57. package/@types/store/with-schemas/index.d.ts +9131 -0
  58. package/@types/synchronizers/index.d.ts +139 -0
  59. package/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  60. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  61. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  62. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  63. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  64. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  65. package/@types/synchronizers/with-schemas/index.d.ts +156 -0
  66. package/@types/tools/index.d.ts +556 -0
  67. package/@types/tools/with-schemas/index.d.ts +567 -0
  68. package/@types/ui-react/index.d.ts +15318 -0
  69. package/@types/ui-react/with-schemas/index.d.ts +16235 -0
  70. package/@types/ui-react-dom/index.d.ts +1751 -0
  71. package/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  72. package/@types/ui-react-inspector/index.d.ts +77 -0
  73. package/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  74. package/@types/with-schemas/index.d.ts +18 -0
  75. package/checkpoints/with-schemas/index.js +1 -0
  76. package/cjs/@types/_internal/queries/index.d.ts +0 -0
  77. package/cjs/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  78. package/cjs/@types/_internal/store/index.d.ts +3 -0
  79. package/cjs/@types/_internal/store/with-schemas/index.d.ts +106 -0
  80. package/cjs/@types/_internal/ui-react/index.d.ts +0 -0
  81. package/cjs/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  82. package/cjs/@types/checkpoints/index.d.ts +1033 -0
  83. package/cjs/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  84. package/cjs/@types/common/index.d.ts +117 -0
  85. package/cjs/@types/common/with-schemas/index.d.ts +117 -0
  86. package/cjs/@types/index.d.ts +18 -0
  87. package/cjs/@types/indexes/index.d.ts +1037 -0
  88. package/cjs/@types/indexes/with-schemas/index.d.ts +1183 -0
  89. package/cjs/@types/mergeable-store/index.d.ts +222 -0
  90. package/cjs/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  91. package/cjs/@types/metrics/index.d.ts +895 -0
  92. package/cjs/@types/metrics/with-schemas/index.d.ts +982 -0
  93. package/cjs/@types/persisters/index.d.ts +1319 -0
  94. package/cjs/@types/persisters/persister-automerge/index.d.ts +162 -0
  95. package/cjs/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  96. package/cjs/@types/persisters/persister-browser/index.d.ts +174 -0
  97. package/cjs/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  98. package/cjs/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  99. package/cjs/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  100. package/cjs/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  101. package/cjs/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  102. package/cjs/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  103. package/cjs/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  104. package/cjs/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  105. package/cjs/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  106. package/cjs/@types/persisters/persister-file/index.d.ts +88 -0
  107. package/cjs/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  108. package/cjs/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  109. package/cjs/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  110. package/cjs/@types/persisters/persister-libsql/index.d.ts +154 -0
  111. package/cjs/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  112. package/cjs/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  113. package/cjs/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  114. package/cjs/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  115. package/cjs/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  116. package/cjs/@types/persisters/persister-powersync/index.d.ts +169 -0
  117. package/cjs/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  118. package/cjs/@types/persisters/persister-remote/index.d.ts +113 -0
  119. package/cjs/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  120. package/cjs/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  121. package/cjs/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  122. package/cjs/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  123. package/cjs/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  124. package/cjs/@types/persisters/persister-yjs/index.d.ts +157 -0
  125. package/cjs/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  126. package/cjs/@types/persisters/with-schemas/index.d.ts +1393 -0
  127. package/cjs/@types/queries/index.d.ts +3640 -0
  128. package/cjs/@types/queries/with-schemas/index.d.ts +3961 -0
  129. package/cjs/@types/relationships/index.d.ts +1266 -0
  130. package/cjs/@types/relationships/with-schemas/index.d.ts +1420 -0
  131. package/cjs/@types/store/index.d.ts +7453 -0
  132. package/cjs/@types/store/with-schemas/index.d.ts +9131 -0
  133. package/cjs/@types/synchronizers/index.d.ts +139 -0
  134. package/cjs/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  135. package/cjs/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  136. package/cjs/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  137. package/cjs/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  138. package/cjs/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  139. package/cjs/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  140. package/cjs/@types/synchronizers/with-schemas/index.d.ts +156 -0
  141. package/cjs/@types/tools/index.d.ts +556 -0
  142. package/cjs/@types/tools/with-schemas/index.d.ts +567 -0
  143. package/cjs/@types/ui-react/index.d.ts +15318 -0
  144. package/cjs/@types/ui-react/with-schemas/index.d.ts +16235 -0
  145. package/cjs/@types/ui-react-dom/index.d.ts +1751 -0
  146. package/cjs/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  147. package/cjs/@types/ui-react-inspector/index.d.ts +77 -0
  148. package/cjs/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  149. package/cjs/@types/with-schemas/index.d.ts +18 -0
  150. package/cjs/checkpoints/with-schemas/index.cjs +1 -0
  151. package/cjs/common/with-schemas/index.cjs +1 -0
  152. package/cjs/index.cjs +1 -0
  153. package/cjs/index.cjs.gz +0 -0
  154. package/cjs/indexes/with-schemas/index.cjs +1 -0
  155. package/cjs/mergeable-store/index.cjs +1 -0
  156. package/cjs/mergeable-store/index.cjs.gz +0 -0
  157. package/cjs/mergeable-store/with-schemas/index.cjs +1 -0
  158. package/cjs/metrics/with-schemas/index.cjs +1 -0
  159. package/cjs/persisters/index.cjs +1 -0
  160. package/cjs/persisters/index.cjs.gz +0 -0
  161. package/cjs/persisters/persister-automerge/index.cjs +1 -0
  162. package/cjs/persisters/persister-automerge/index.cjs.gz +0 -0
  163. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +1 -0
  164. package/cjs/persisters/persister-browser/index.cjs +1 -0
  165. package/cjs/persisters/persister-browser/index.cjs.gz +0 -0
  166. package/cjs/persisters/persister-browser/with-schemas/index.cjs +1 -0
  167. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +1 -0
  168. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  169. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -0
  170. package/cjs/persisters/persister-electric-sql/index.cjs +1 -0
  171. package/cjs/persisters/persister-electric-sql/index.cjs.gz +0 -0
  172. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +1 -0
  173. package/cjs/persisters/persister-expo-sqlite/index.cjs +1 -0
  174. package/cjs/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  175. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -0
  176. package/cjs/persisters/persister-expo-sqlite-next/index.cjs +1 -0
  177. package/cjs/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
  178. package/cjs/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +1 -0
  179. package/cjs/persisters/persister-file/index.cjs +1 -0
  180. package/cjs/persisters/persister-file/index.cjs.gz +0 -0
  181. package/cjs/persisters/persister-file/with-schemas/index.cjs +1 -0
  182. package/cjs/persisters/persister-indexed-db/index.cjs +1 -0
  183. package/cjs/persisters/persister-indexed-db/index.cjs.gz +0 -0
  184. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +1 -0
  185. package/cjs/persisters/persister-libsql/index.cjs +1 -0
  186. package/cjs/persisters/persister-libsql/index.cjs.gz +0 -0
  187. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +1 -0
  188. package/cjs/persisters/persister-partykit-client/index.cjs +1 -0
  189. package/cjs/persisters/persister-partykit-client/index.cjs.gz +0 -0
  190. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +1 -0
  191. package/cjs/persisters/persister-partykit-server/index.cjs +1 -0
  192. package/cjs/persisters/persister-partykit-server/index.cjs.gz +0 -0
  193. package/cjs/persisters/persister-partykit-server/with-schemas/index.cjs +1 -0
  194. package/cjs/persisters/persister-powersync/index.cjs +1 -0
  195. package/cjs/persisters/persister-powersync/index.cjs.gz +0 -0
  196. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +1 -0
  197. package/cjs/persisters/persister-remote/index.cjs +1 -0
  198. package/cjs/persisters/persister-remote/index.cjs.gz +0 -0
  199. package/cjs/persisters/persister-remote/with-schemas/index.cjs +1 -0
  200. package/cjs/persisters/persister-sqlite-wasm/index.cjs +1 -0
  201. package/cjs/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  202. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -0
  203. package/cjs/persisters/persister-sqlite3/index.cjs +1 -0
  204. package/cjs/persisters/persister-sqlite3/index.cjs.gz +0 -0
  205. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +1 -0
  206. package/cjs/persisters/persister-yjs/index.cjs +1 -0
  207. package/cjs/persisters/persister-yjs/index.cjs.gz +0 -0
  208. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +1 -0
  209. package/cjs/persisters/with-schemas/index.cjs +1 -0
  210. package/cjs/queries/with-schemas/index.cjs +1 -0
  211. package/cjs/relationships/with-schemas/index.cjs +1 -0
  212. package/cjs/store/index.cjs +1 -0
  213. package/cjs/store/index.cjs.gz +0 -0
  214. package/cjs/store/with-schemas/index.cjs +1 -0
  215. package/cjs/synchronizers/index.cjs +1 -0
  216. package/cjs/synchronizers/index.cjs.gz +0 -0
  217. package/cjs/synchronizers/synchronizer-local/index.cjs +1 -0
  218. package/cjs/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  219. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -0
  220. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +1 -0
  221. package/cjs/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  222. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -0
  223. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -0
  224. package/cjs/synchronizers/with-schemas/index.cjs +1 -0
  225. package/cjs/tools/with-schemas/index.cjs +1 -0
  226. package/cjs/ui-react/with-schemas/index.cjs +1 -0
  227. package/cjs/ui-react-dom/index.cjs +1 -0
  228. package/cjs/ui-react-dom/index.cjs.gz +0 -0
  229. package/cjs/ui-react-dom/with-schemas/index.cjs +1 -0
  230. package/cjs/ui-react-inspector/index.cjs +1 -0
  231. package/cjs/ui-react-inspector/index.cjs.gz +0 -0
  232. package/cjs/ui-react-inspector/with-schemas/index.cjs +1 -0
  233. package/cjs/with-schemas/index.cjs +1 -0
  234. package/cjs-es6/@types/_internal/queries/index.d.ts +0 -0
  235. package/cjs-es6/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  236. package/cjs-es6/@types/_internal/store/index.d.ts +3 -0
  237. package/cjs-es6/@types/_internal/store/with-schemas/index.d.ts +106 -0
  238. package/cjs-es6/@types/_internal/ui-react/index.d.ts +0 -0
  239. package/cjs-es6/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  240. package/cjs-es6/@types/checkpoints/index.d.ts +1033 -0
  241. package/cjs-es6/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  242. package/cjs-es6/@types/common/index.d.ts +117 -0
  243. package/cjs-es6/@types/common/with-schemas/index.d.ts +117 -0
  244. package/cjs-es6/@types/index.d.ts +18 -0
  245. package/cjs-es6/@types/indexes/index.d.ts +1037 -0
  246. package/cjs-es6/@types/indexes/with-schemas/index.d.ts +1183 -0
  247. package/cjs-es6/@types/mergeable-store/index.d.ts +222 -0
  248. package/cjs-es6/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  249. package/cjs-es6/@types/metrics/index.d.ts +895 -0
  250. package/cjs-es6/@types/metrics/with-schemas/index.d.ts +982 -0
  251. package/cjs-es6/@types/persisters/index.d.ts +1319 -0
  252. package/cjs-es6/@types/persisters/persister-automerge/index.d.ts +162 -0
  253. package/cjs-es6/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  254. package/cjs-es6/@types/persisters/persister-browser/index.d.ts +174 -0
  255. package/cjs-es6/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  256. package/cjs-es6/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  257. package/cjs-es6/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  258. package/cjs-es6/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  259. package/cjs-es6/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  260. package/cjs-es6/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  261. package/cjs-es6/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  262. package/cjs-es6/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  263. package/cjs-es6/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  264. package/cjs-es6/@types/persisters/persister-file/index.d.ts +88 -0
  265. package/cjs-es6/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  266. package/cjs-es6/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  267. package/cjs-es6/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  268. package/cjs-es6/@types/persisters/persister-libsql/index.d.ts +154 -0
  269. package/cjs-es6/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  270. package/cjs-es6/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  271. package/cjs-es6/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  272. package/cjs-es6/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  273. package/cjs-es6/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  274. package/cjs-es6/@types/persisters/persister-powersync/index.d.ts +169 -0
  275. package/cjs-es6/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  276. package/cjs-es6/@types/persisters/persister-remote/index.d.ts +113 -0
  277. package/cjs-es6/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  278. package/cjs-es6/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  279. package/cjs-es6/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  280. package/cjs-es6/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  281. package/cjs-es6/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  282. package/cjs-es6/@types/persisters/persister-yjs/index.d.ts +157 -0
  283. package/cjs-es6/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  284. package/cjs-es6/@types/persisters/with-schemas/index.d.ts +1393 -0
  285. package/cjs-es6/@types/queries/index.d.ts +3640 -0
  286. package/cjs-es6/@types/queries/with-schemas/index.d.ts +3961 -0
  287. package/cjs-es6/@types/relationships/index.d.ts +1266 -0
  288. package/cjs-es6/@types/relationships/with-schemas/index.d.ts +1420 -0
  289. package/cjs-es6/@types/store/index.d.ts +7453 -0
  290. package/cjs-es6/@types/store/with-schemas/index.d.ts +9131 -0
  291. package/cjs-es6/@types/synchronizers/index.d.ts +139 -0
  292. package/cjs-es6/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  293. package/cjs-es6/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  294. package/cjs-es6/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  295. package/cjs-es6/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  296. package/cjs-es6/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  297. package/cjs-es6/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  298. package/cjs-es6/@types/synchronizers/with-schemas/index.d.ts +156 -0
  299. package/cjs-es6/@types/tools/index.d.ts +556 -0
  300. package/cjs-es6/@types/tools/with-schemas/index.d.ts +567 -0
  301. package/cjs-es6/@types/ui-react/index.d.ts +15318 -0
  302. package/cjs-es6/@types/ui-react/with-schemas/index.d.ts +16235 -0
  303. package/cjs-es6/@types/ui-react-dom/index.d.ts +1751 -0
  304. package/cjs-es6/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  305. package/cjs-es6/@types/ui-react-inspector/index.d.ts +77 -0
  306. package/cjs-es6/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  307. package/cjs-es6/@types/with-schemas/index.d.ts +18 -0
  308. package/cjs-es6/checkpoints/with-schemas/index.cjs +1 -0
  309. package/cjs-es6/common/with-schemas/index.cjs +1 -0
  310. package/cjs-es6/index.cjs +1 -0
  311. package/cjs-es6/index.cjs.gz +0 -0
  312. package/cjs-es6/indexes/with-schemas/index.cjs +1 -0
  313. package/cjs-es6/mergeable-store/index.cjs +1 -0
  314. package/cjs-es6/mergeable-store/index.cjs.gz +0 -0
  315. package/cjs-es6/mergeable-store/with-schemas/index.cjs +1 -0
  316. package/cjs-es6/metrics/with-schemas/index.cjs +1 -0
  317. package/cjs-es6/persisters/index.cjs +1 -0
  318. package/cjs-es6/persisters/index.cjs.gz +0 -0
  319. package/cjs-es6/persisters/persister-automerge/index.cjs +1 -0
  320. package/cjs-es6/persisters/persister-automerge/index.cjs.gz +0 -0
  321. package/cjs-es6/persisters/persister-automerge/with-schemas/index.cjs +1 -0
  322. package/cjs-es6/persisters/persister-browser/index.cjs +1 -0
  323. package/cjs-es6/persisters/persister-browser/index.cjs.gz +0 -0
  324. package/cjs-es6/persisters/persister-browser/with-schemas/index.cjs +1 -0
  325. package/cjs-es6/persisters/persister-cr-sqlite-wasm/index.cjs +1 -0
  326. package/cjs-es6/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  327. package/cjs-es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -0
  328. package/cjs-es6/persisters/persister-electric-sql/index.cjs +1 -0
  329. package/cjs-es6/persisters/persister-electric-sql/index.cjs.gz +0 -0
  330. package/cjs-es6/persisters/persister-electric-sql/with-schemas/index.cjs +1 -0
  331. package/cjs-es6/persisters/persister-expo-sqlite/index.cjs +1 -0
  332. package/cjs-es6/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  333. package/cjs-es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -0
  334. package/cjs-es6/persisters/persister-expo-sqlite-next/index.cjs +1 -0
  335. package/cjs-es6/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
  336. package/cjs-es6/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +1 -0
  337. package/cjs-es6/persisters/persister-file/index.cjs +1 -0
  338. package/cjs-es6/persisters/persister-file/index.cjs.gz +0 -0
  339. package/cjs-es6/persisters/persister-file/with-schemas/index.cjs +1 -0
  340. package/cjs-es6/persisters/persister-indexed-db/index.cjs +1 -0
  341. package/cjs-es6/persisters/persister-indexed-db/index.cjs.gz +0 -0
  342. package/cjs-es6/persisters/persister-indexed-db/with-schemas/index.cjs +1 -0
  343. package/cjs-es6/persisters/persister-libsql/index.cjs +1 -0
  344. package/cjs-es6/persisters/persister-libsql/index.cjs.gz +0 -0
  345. package/cjs-es6/persisters/persister-libsql/with-schemas/index.cjs +1 -0
  346. package/cjs-es6/persisters/persister-partykit-client/index.cjs +1 -0
  347. package/cjs-es6/persisters/persister-partykit-client/index.cjs.gz +0 -0
  348. package/cjs-es6/persisters/persister-partykit-client/with-schemas/index.cjs +1 -0
  349. package/cjs-es6/persisters/persister-partykit-server/index.cjs +1 -0
  350. package/cjs-es6/persisters/persister-partykit-server/index.cjs.gz +0 -0
  351. package/cjs-es6/persisters/persister-partykit-server/with-schemas/index.cjs +1 -0
  352. package/cjs-es6/persisters/persister-powersync/index.cjs +1 -0
  353. package/cjs-es6/persisters/persister-powersync/index.cjs.gz +0 -0
  354. package/cjs-es6/persisters/persister-powersync/with-schemas/index.cjs +1 -0
  355. package/cjs-es6/persisters/persister-remote/index.cjs +1 -0
  356. package/cjs-es6/persisters/persister-remote/index.cjs.gz +0 -0
  357. package/cjs-es6/persisters/persister-remote/with-schemas/index.cjs +1 -0
  358. package/cjs-es6/persisters/persister-sqlite-wasm/index.cjs +1 -0
  359. package/cjs-es6/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  360. package/cjs-es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -0
  361. package/cjs-es6/persisters/persister-sqlite3/index.cjs +1 -0
  362. package/cjs-es6/persisters/persister-sqlite3/index.cjs.gz +0 -0
  363. package/cjs-es6/persisters/persister-sqlite3/with-schemas/index.cjs +1 -0
  364. package/cjs-es6/persisters/persister-yjs/index.cjs +1 -0
  365. package/cjs-es6/persisters/persister-yjs/index.cjs.gz +0 -0
  366. package/cjs-es6/persisters/persister-yjs/with-schemas/index.cjs +1 -0
  367. package/cjs-es6/persisters/with-schemas/index.cjs +1 -0
  368. package/cjs-es6/queries/with-schemas/index.cjs +1 -0
  369. package/cjs-es6/relationships/with-schemas/index.cjs +1 -0
  370. package/cjs-es6/store/index.cjs +1 -0
  371. package/cjs-es6/store/index.cjs.gz +0 -0
  372. package/cjs-es6/store/with-schemas/index.cjs +1 -0
  373. package/cjs-es6/synchronizers/index.cjs +1 -0
  374. package/cjs-es6/synchronizers/index.cjs.gz +0 -0
  375. package/cjs-es6/synchronizers/synchronizer-local/index.cjs +1 -0
  376. package/cjs-es6/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  377. package/cjs-es6/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -0
  378. package/cjs-es6/synchronizers/synchronizer-ws-client/index.cjs +1 -0
  379. package/cjs-es6/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  380. package/cjs-es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -0
  381. package/cjs-es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -0
  382. package/cjs-es6/synchronizers/with-schemas/index.cjs +1 -0
  383. package/cjs-es6/tools/with-schemas/index.cjs +1 -0
  384. package/cjs-es6/ui-react/with-schemas/index.cjs +1 -0
  385. package/cjs-es6/ui-react-dom/index.cjs +1 -0
  386. package/cjs-es6/ui-react-dom/index.cjs.gz +0 -0
  387. package/cjs-es6/ui-react-dom/with-schemas/index.cjs +1 -0
  388. package/cjs-es6/ui-react-inspector/index.cjs +1 -0
  389. package/cjs-es6/ui-react-inspector/index.cjs.gz +0 -0
  390. package/cjs-es6/ui-react-inspector/with-schemas/index.cjs +1 -0
  391. package/cjs-es6/with-schemas/index.cjs +1 -0
  392. package/cli/index.js +2 -0
  393. package/common/with-schemas/index.js +1 -0
  394. package/debug/checkpoints/with-schemas/index.js +431 -0
  395. package/debug/common/with-schemas/index.js +25 -0
  396. package/debug/index.js +4102 -0
  397. package/debug/indexes/with-schemas/index.js +553 -0
  398. package/debug/mergeable-store/index.js +2247 -0
  399. package/debug/mergeable-store/with-schemas/index.js +2247 -0
  400. package/debug/metrics/with-schemas/index.js +519 -0
  401. package/debug/persisters/index.js +228 -0
  402. package/debug/persisters/persister-automerge/index.js +376 -0
  403. package/debug/persisters/persister-automerge/with-schemas/index.js +376 -0
  404. package/debug/persisters/persister-browser/index.js +279 -0
  405. package/debug/persisters/persister-browser/with-schemas/index.js +279 -0
  406. package/debug/persisters/persister-cr-sqlite-wasm/index.js +927 -0
  407. package/debug/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +927 -0
  408. package/debug/persisters/persister-electric-sql/index.js +935 -0
  409. package/debug/persisters/persister-electric-sql/with-schemas/index.js +935 -0
  410. package/debug/persisters/persister-expo-sqlite/index.js +928 -0
  411. package/debug/persisters/persister-expo-sqlite/with-schemas/index.js +928 -0
  412. package/debug/persisters/persister-expo-sqlite-next/index.js +930 -0
  413. package/debug/persisters/persister-expo-sqlite-next/with-schemas/index.js +930 -0
  414. package/debug/persisters/persister-file/index.js +258 -0
  415. package/debug/persisters/persister-file/with-schemas/index.js +258 -0
  416. package/debug/persisters/persister-indexed-db/index.js +339 -0
  417. package/debug/persisters/persister-indexed-db/with-schemas/index.js +339 -0
  418. package/debug/persisters/persister-libsql/index.js +928 -0
  419. package/debug/persisters/persister-libsql/with-schemas/index.js +928 -0
  420. package/debug/persisters/persister-partykit-client/index.js +327 -0
  421. package/debug/persisters/persister-partykit-client/with-schemas/index.js +327 -0
  422. package/debug/persisters/persister-partykit-server/index.js +284 -0
  423. package/debug/persisters/persister-partykit-server/with-schemas/index.js +284 -0
  424. package/debug/persisters/persister-powersync/index.js +943 -0
  425. package/debug/persisters/persister-powersync/with-schemas/index.js +943 -0
  426. package/debug/persisters/persister-remote/index.js +285 -0
  427. package/debug/persisters/persister-remote/with-schemas/index.js +285 -0
  428. package/debug/persisters/persister-sqlite-wasm/index.js +936 -0
  429. package/debug/persisters/persister-sqlite-wasm/with-schemas/index.js +936 -0
  430. package/debug/persisters/persister-sqlite3/index.js +938 -0
  431. package/debug/persisters/persister-sqlite3/with-schemas/index.js +938 -0
  432. package/debug/persisters/persister-yjs/index.js +424 -0
  433. package/debug/persisters/persister-yjs/with-schemas/index.js +424 -0
  434. package/debug/persisters/with-schemas/index.js +228 -0
  435. package/debug/queries/with-schemas/index.js +812 -0
  436. package/debug/relationships/with-schemas/index.js +529 -0
  437. package/debug/store/index.js +1634 -0
  438. package/debug/store/with-schemas/index.js +1634 -0
  439. package/debug/synchronizers/index.js +464 -0
  440. package/debug/synchronizers/synchronizer-local/index.js +504 -0
  441. package/debug/synchronizers/synchronizer-local/with-schemas/index.js +504 -0
  442. package/debug/synchronizers/synchronizer-ws-client/index.js +527 -0
  443. package/debug/synchronizers/synchronizer-ws-client/with-schemas/index.js +527 -0
  444. package/debug/synchronizers/synchronizer-ws-server/with-schemas/index.js +241 -0
  445. package/debug/synchronizers/with-schemas/index.js +464 -0
  446. package/debug/tools/index.js +3298 -0
  447. package/debug/tools/with-schemas/index.js +3298 -0
  448. package/debug/ui-react/index.js +1984 -0
  449. package/debug/ui-react/with-schemas/index.js +1984 -0
  450. package/debug/ui-react-dom/index.js +789 -0
  451. package/debug/ui-react-dom/with-schemas/index.js +789 -0
  452. package/debug/ui-react-inspector/index.js +3281 -0
  453. package/debug/ui-react-inspector/with-schemas/index.js +3281 -0
  454. package/debug/with-schemas/index.js +4102 -0
  455. package/es6/@types/_internal/queries/index.d.ts +0 -0
  456. package/es6/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  457. package/es6/@types/_internal/store/index.d.ts +3 -0
  458. package/es6/@types/_internal/store/with-schemas/index.d.ts +106 -0
  459. package/es6/@types/_internal/ui-react/index.d.ts +0 -0
  460. package/es6/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  461. package/es6/@types/checkpoints/index.d.ts +1033 -0
  462. package/es6/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  463. package/es6/@types/common/index.d.ts +117 -0
  464. package/es6/@types/common/with-schemas/index.d.ts +117 -0
  465. package/es6/@types/index.d.ts +18 -0
  466. package/es6/@types/indexes/index.d.ts +1037 -0
  467. package/es6/@types/indexes/with-schemas/index.d.ts +1183 -0
  468. package/es6/@types/mergeable-store/index.d.ts +222 -0
  469. package/es6/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  470. package/es6/@types/metrics/index.d.ts +895 -0
  471. package/es6/@types/metrics/with-schemas/index.d.ts +982 -0
  472. package/es6/@types/persisters/index.d.ts +1319 -0
  473. package/es6/@types/persisters/persister-automerge/index.d.ts +162 -0
  474. package/es6/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  475. package/es6/@types/persisters/persister-browser/index.d.ts +174 -0
  476. package/es6/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  477. package/es6/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  478. package/es6/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  479. package/es6/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  480. package/es6/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  481. package/es6/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  482. package/es6/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  483. package/es6/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  484. package/es6/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  485. package/es6/@types/persisters/persister-file/index.d.ts +88 -0
  486. package/es6/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  487. package/es6/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  488. package/es6/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  489. package/es6/@types/persisters/persister-libsql/index.d.ts +154 -0
  490. package/es6/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  491. package/es6/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  492. package/es6/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  493. package/es6/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  494. package/es6/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  495. package/es6/@types/persisters/persister-powersync/index.d.ts +169 -0
  496. package/es6/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  497. package/es6/@types/persisters/persister-remote/index.d.ts +113 -0
  498. package/es6/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  499. package/es6/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  500. package/es6/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  501. package/es6/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  502. package/es6/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  503. package/es6/@types/persisters/persister-yjs/index.d.ts +157 -0
  504. package/es6/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  505. package/es6/@types/persisters/with-schemas/index.d.ts +1393 -0
  506. package/es6/@types/queries/index.d.ts +3640 -0
  507. package/es6/@types/queries/with-schemas/index.d.ts +3961 -0
  508. package/es6/@types/relationships/index.d.ts +1266 -0
  509. package/es6/@types/relationships/with-schemas/index.d.ts +1420 -0
  510. package/es6/@types/store/index.d.ts +7453 -0
  511. package/es6/@types/store/with-schemas/index.d.ts +9131 -0
  512. package/es6/@types/synchronizers/index.d.ts +139 -0
  513. package/es6/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  514. package/es6/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  515. package/es6/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  516. package/es6/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  517. package/es6/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  518. package/es6/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  519. package/es6/@types/synchronizers/with-schemas/index.d.ts +156 -0
  520. package/es6/@types/tools/index.d.ts +556 -0
  521. package/es6/@types/tools/with-schemas/index.d.ts +567 -0
  522. package/es6/@types/ui-react/index.d.ts +15318 -0
  523. package/es6/@types/ui-react/with-schemas/index.d.ts +16235 -0
  524. package/es6/@types/ui-react-dom/index.d.ts +1751 -0
  525. package/es6/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  526. package/es6/@types/ui-react-inspector/index.d.ts +77 -0
  527. package/es6/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  528. package/es6/@types/with-schemas/index.d.ts +18 -0
  529. package/es6/checkpoints/with-schemas/index.js +1 -0
  530. package/es6/common/with-schemas/index.js +1 -0
  531. package/es6/index.js +1 -0
  532. package/es6/index.js.gz +0 -0
  533. package/es6/indexes/with-schemas/index.js +1 -0
  534. package/es6/mergeable-store/index.js +1 -0
  535. package/es6/mergeable-store/index.js.gz +0 -0
  536. package/es6/mergeable-store/with-schemas/index.js +1 -0
  537. package/es6/metrics/with-schemas/index.js +1 -0
  538. package/es6/persisters/index.js +1 -0
  539. package/es6/persisters/index.js.gz +0 -0
  540. package/es6/persisters/persister-automerge/index.js +1 -0
  541. package/es6/persisters/persister-automerge/index.js.gz +0 -0
  542. package/es6/persisters/persister-automerge/with-schemas/index.js +1 -0
  543. package/es6/persisters/persister-browser/index.js +1 -0
  544. package/es6/persisters/persister-browser/index.js.gz +0 -0
  545. package/es6/persisters/persister-browser/with-schemas/index.js +1 -0
  546. package/es6/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  547. package/es6/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  548. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  549. package/es6/persisters/persister-electric-sql/index.js +1 -0
  550. package/es6/persisters/persister-electric-sql/index.js.gz +0 -0
  551. package/es6/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  552. package/es6/persisters/persister-expo-sqlite/index.js +1 -0
  553. package/es6/persisters/persister-expo-sqlite/index.js.gz +0 -0
  554. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  555. package/es6/persisters/persister-expo-sqlite-next/index.js +1 -0
  556. package/es6/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  557. package/es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +1 -0
  558. package/es6/persisters/persister-file/index.js +1 -0
  559. package/es6/persisters/persister-file/index.js.gz +0 -0
  560. package/es6/persisters/persister-file/with-schemas/index.js +1 -0
  561. package/es6/persisters/persister-indexed-db/index.js +1 -0
  562. package/es6/persisters/persister-indexed-db/index.js.gz +0 -0
  563. package/es6/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  564. package/es6/persisters/persister-libsql/index.js +1 -0
  565. package/es6/persisters/persister-libsql/index.js.gz +0 -0
  566. package/es6/persisters/persister-libsql/with-schemas/index.js +1 -0
  567. package/es6/persisters/persister-partykit-client/index.js +1 -0
  568. package/es6/persisters/persister-partykit-client/index.js.gz +0 -0
  569. package/es6/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  570. package/es6/persisters/persister-partykit-server/index.js +1 -0
  571. package/es6/persisters/persister-partykit-server/index.js.gz +0 -0
  572. package/es6/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  573. package/es6/persisters/persister-powersync/index.js +1 -0
  574. package/es6/persisters/persister-powersync/index.js.gz +0 -0
  575. package/es6/persisters/persister-powersync/with-schemas/index.js +1 -0
  576. package/es6/persisters/persister-remote/index.js +1 -0
  577. package/es6/persisters/persister-remote/index.js.gz +0 -0
  578. package/es6/persisters/persister-remote/with-schemas/index.js +1 -0
  579. package/es6/persisters/persister-sqlite-wasm/index.js +1 -0
  580. package/es6/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  581. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  582. package/es6/persisters/persister-sqlite3/index.js +1 -0
  583. package/es6/persisters/persister-sqlite3/index.js.gz +0 -0
  584. package/es6/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  585. package/es6/persisters/persister-yjs/index.js +1 -0
  586. package/es6/persisters/persister-yjs/index.js.gz +0 -0
  587. package/es6/persisters/persister-yjs/with-schemas/index.js +1 -0
  588. package/es6/persisters/with-schemas/index.js +1 -0
  589. package/es6/queries/with-schemas/index.js +1 -0
  590. package/es6/relationships/with-schemas/index.js +1 -0
  591. package/es6/store/index.js +1 -0
  592. package/es6/store/index.js.gz +0 -0
  593. package/es6/store/with-schemas/index.js +1 -0
  594. package/es6/synchronizers/index.js +1 -0
  595. package/es6/synchronizers/index.js.gz +0 -0
  596. package/es6/synchronizers/synchronizer-local/index.js +1 -0
  597. package/es6/synchronizers/synchronizer-local/index.js.gz +0 -0
  598. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  599. package/es6/synchronizers/synchronizer-ws-client/index.js +1 -0
  600. package/es6/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  601. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  602. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  603. package/es6/synchronizers/with-schemas/index.js +1 -0
  604. package/es6/tools/with-schemas/index.js +1 -0
  605. package/es6/ui-react/with-schemas/index.js +1 -0
  606. package/es6/ui-react-dom/index.js +1 -0
  607. package/es6/ui-react-dom/index.js.gz +0 -0
  608. package/es6/ui-react-dom/with-schemas/index.js +1 -0
  609. package/es6/ui-react-inspector/index.js +1 -0
  610. package/es6/ui-react-inspector/index.js.gz +0 -0
  611. package/es6/ui-react-inspector/with-schemas/index.js +1 -0
  612. package/es6/with-schemas/index.js +1 -0
  613. package/index.js +1 -0
  614. package/index.js.gz +0 -0
  615. package/indexes/with-schemas/index.js +1 -0
  616. package/mergeable-store/index.js +1 -0
  617. package/mergeable-store/index.js.gz +0 -0
  618. package/mergeable-store/with-schemas/index.js +1 -0
  619. package/metrics/with-schemas/index.js +1 -0
  620. package/package.json +66 -280
  621. package/persisters/index.js +1 -0
  622. package/persisters/index.js.gz +0 -0
  623. package/persisters/persister-automerge/index.js +1 -0
  624. package/persisters/persister-automerge/index.js.gz +0 -0
  625. package/persisters/persister-automerge/with-schemas/index.js +1 -0
  626. package/persisters/persister-browser/index.js +1 -0
  627. package/persisters/persister-browser/index.js.gz +0 -0
  628. package/persisters/persister-browser/with-schemas/index.js +1 -0
  629. package/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  630. package/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  631. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  632. package/persisters/persister-electric-sql/index.js +1 -0
  633. package/persisters/persister-electric-sql/index.js.gz +0 -0
  634. package/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  635. package/persisters/persister-expo-sqlite/index.js +1 -0
  636. package/persisters/persister-expo-sqlite/index.js.gz +0 -0
  637. package/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  638. package/persisters/persister-expo-sqlite-next/index.js +1 -0
  639. package/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  640. package/persisters/persister-expo-sqlite-next/with-schemas/index.js +1 -0
  641. package/persisters/persister-file/index.js +1 -0
  642. package/persisters/persister-file/index.js.gz +0 -0
  643. package/persisters/persister-file/with-schemas/index.js +1 -0
  644. package/persisters/persister-indexed-db/index.js +1 -0
  645. package/persisters/persister-indexed-db/index.js.gz +0 -0
  646. package/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  647. package/persisters/persister-libsql/index.js +1 -0
  648. package/persisters/persister-libsql/index.js.gz +0 -0
  649. package/persisters/persister-libsql/with-schemas/index.js +1 -0
  650. package/persisters/persister-partykit-client/index.js +1 -0
  651. package/persisters/persister-partykit-client/index.js.gz +0 -0
  652. package/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  653. package/persisters/persister-partykit-server/index.js +1 -0
  654. package/persisters/persister-partykit-server/index.js.gz +0 -0
  655. package/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  656. package/persisters/persister-powersync/index.js +1 -0
  657. package/persisters/persister-powersync/index.js.gz +0 -0
  658. package/persisters/persister-powersync/with-schemas/index.js +1 -0
  659. package/persisters/persister-remote/index.js +1 -0
  660. package/persisters/persister-remote/index.js.gz +0 -0
  661. package/persisters/persister-remote/with-schemas/index.js +1 -0
  662. package/persisters/persister-sqlite-wasm/index.js +1 -0
  663. package/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  664. package/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  665. package/persisters/persister-sqlite3/index.js +1 -0
  666. package/persisters/persister-sqlite3/index.js.gz +0 -0
  667. package/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  668. package/persisters/persister-yjs/index.js +1 -0
  669. package/persisters/persister-yjs/index.js.gz +0 -0
  670. package/persisters/persister-yjs/with-schemas/index.js +1 -0
  671. package/persisters/with-schemas/index.js +1 -0
  672. package/queries/with-schemas/index.js +1 -0
  673. package/readme.md +21 -3
  674. package/relationships/with-schemas/index.js +1 -0
  675. package/releases.md +452 -0
  676. package/store/index.js +1 -0
  677. package/store/index.js.gz +0 -0
  678. package/store/with-schemas/index.js +1 -0
  679. package/synchronizers/index.js +1 -0
  680. package/synchronizers/index.js.gz +0 -0
  681. package/synchronizers/synchronizer-local/index.js +1 -0
  682. package/synchronizers/synchronizer-local/index.js.gz +0 -0
  683. package/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  684. package/synchronizers/synchronizer-ws-client/index.js +1 -0
  685. package/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  686. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  687. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  688. package/synchronizers/with-schemas/index.js +1 -0
  689. package/tools/with-schemas/index.js +1 -0
  690. package/ui-react/with-schemas/index.js +1 -0
  691. package/ui-react-dom/index.js +1 -0
  692. package/ui-react-dom/index.js.gz +0 -0
  693. package/ui-react-dom/with-schemas/index.js +1 -0
  694. package/ui-react-inspector/index.js +1 -0
  695. package/ui-react-inspector/index.js.gz +0 -0
  696. package/ui-react-inspector/with-schemas/index.js +1 -0
  697. package/umd/@types/_internal/queries/index.d.ts +0 -0
  698. package/umd/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  699. package/umd/@types/_internal/store/index.d.ts +3 -0
  700. package/umd/@types/_internal/store/with-schemas/index.d.ts +106 -0
  701. package/umd/@types/_internal/ui-react/index.d.ts +0 -0
  702. package/umd/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  703. package/umd/@types/checkpoints/index.d.ts +1033 -0
  704. package/umd/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  705. package/umd/@types/common/index.d.ts +117 -0
  706. package/umd/@types/common/with-schemas/index.d.ts +117 -0
  707. package/umd/@types/index.d.ts +18 -0
  708. package/umd/@types/indexes/index.d.ts +1037 -0
  709. package/umd/@types/indexes/with-schemas/index.d.ts +1183 -0
  710. package/umd/@types/mergeable-store/index.d.ts +222 -0
  711. package/umd/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  712. package/umd/@types/metrics/index.d.ts +895 -0
  713. package/umd/@types/metrics/with-schemas/index.d.ts +982 -0
  714. package/umd/@types/persisters/index.d.ts +1319 -0
  715. package/umd/@types/persisters/persister-automerge/index.d.ts +162 -0
  716. package/umd/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  717. package/umd/@types/persisters/persister-browser/index.d.ts +174 -0
  718. package/umd/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  719. package/umd/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  720. package/umd/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  721. package/umd/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  722. package/umd/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  723. package/umd/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  724. package/umd/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  725. package/umd/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  726. package/umd/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  727. package/umd/@types/persisters/persister-file/index.d.ts +88 -0
  728. package/umd/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  729. package/umd/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  730. package/umd/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  731. package/umd/@types/persisters/persister-libsql/index.d.ts +154 -0
  732. package/umd/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  733. package/umd/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  734. package/umd/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  735. package/umd/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  736. package/umd/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  737. package/umd/@types/persisters/persister-powersync/index.d.ts +169 -0
  738. package/umd/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  739. package/umd/@types/persisters/persister-remote/index.d.ts +113 -0
  740. package/umd/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  741. package/umd/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  742. package/umd/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  743. package/umd/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  744. package/umd/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  745. package/umd/@types/persisters/persister-yjs/index.d.ts +157 -0
  746. package/umd/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  747. package/umd/@types/persisters/with-schemas/index.d.ts +1393 -0
  748. package/umd/@types/queries/index.d.ts +3640 -0
  749. package/umd/@types/queries/with-schemas/index.d.ts +3961 -0
  750. package/umd/@types/relationships/index.d.ts +1266 -0
  751. package/umd/@types/relationships/with-schemas/index.d.ts +1420 -0
  752. package/umd/@types/store/index.d.ts +7453 -0
  753. package/umd/@types/store/with-schemas/index.d.ts +9131 -0
  754. package/umd/@types/synchronizers/index.d.ts +139 -0
  755. package/umd/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  756. package/umd/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  757. package/umd/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  758. package/umd/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  759. package/umd/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  760. package/umd/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  761. package/umd/@types/synchronizers/with-schemas/index.d.ts +156 -0
  762. package/umd/@types/tools/index.d.ts +556 -0
  763. package/umd/@types/tools/with-schemas/index.d.ts +567 -0
  764. package/umd/@types/ui-react/index.d.ts +15318 -0
  765. package/umd/@types/ui-react/with-schemas/index.d.ts +16235 -0
  766. package/umd/@types/ui-react-dom/index.d.ts +1751 -0
  767. package/umd/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  768. package/umd/@types/ui-react-inspector/index.d.ts +77 -0
  769. package/umd/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  770. package/umd/@types/with-schemas/index.d.ts +18 -0
  771. package/umd/checkpoints/with-schemas/index.js +1 -0
  772. package/umd/common/with-schemas/index.js +1 -0
  773. package/umd/index.js +1 -0
  774. package/umd/index.js.gz +0 -0
  775. package/umd/indexes/with-schemas/index.js +1 -0
  776. package/umd/mergeable-store/index.js +1 -0
  777. package/umd/mergeable-store/index.js.gz +0 -0
  778. package/umd/mergeable-store/with-schemas/index.js +1 -0
  779. package/umd/metrics/with-schemas/index.js +1 -0
  780. package/umd/persisters/index.js +1 -0
  781. package/umd/persisters/index.js.gz +0 -0
  782. package/umd/persisters/persister-automerge/index.js +1 -0
  783. package/umd/persisters/persister-automerge/index.js.gz +0 -0
  784. package/umd/persisters/persister-automerge/with-schemas/index.js +1 -0
  785. package/umd/persisters/persister-browser/index.js +1 -0
  786. package/umd/persisters/persister-browser/index.js.gz +0 -0
  787. package/umd/persisters/persister-browser/with-schemas/index.js +1 -0
  788. package/umd/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  789. package/umd/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  790. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  791. package/umd/persisters/persister-electric-sql/index.js +1 -0
  792. package/umd/persisters/persister-electric-sql/index.js.gz +0 -0
  793. package/umd/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  794. package/umd/persisters/persister-expo-sqlite/index.js +1 -0
  795. package/umd/persisters/persister-expo-sqlite/index.js.gz +0 -0
  796. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  797. package/umd/persisters/persister-expo-sqlite-next/index.js +1 -0
  798. package/umd/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  799. package/umd/persisters/persister-expo-sqlite-next/with-schemas/index.js +1 -0
  800. package/umd/persisters/persister-file/index.js +1 -0
  801. package/umd/persisters/persister-file/index.js.gz +0 -0
  802. package/umd/persisters/persister-file/with-schemas/index.js +1 -0
  803. package/umd/persisters/persister-indexed-db/index.js +1 -0
  804. package/umd/persisters/persister-indexed-db/index.js.gz +0 -0
  805. package/umd/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  806. package/umd/persisters/persister-libsql/index.js +1 -0
  807. package/umd/persisters/persister-libsql/index.js.gz +0 -0
  808. package/umd/persisters/persister-libsql/with-schemas/index.js +1 -0
  809. package/umd/persisters/persister-partykit-client/index.js +1 -0
  810. package/umd/persisters/persister-partykit-client/index.js.gz +0 -0
  811. package/umd/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  812. package/umd/persisters/persister-partykit-server/index.js +1 -0
  813. package/umd/persisters/persister-partykit-server/index.js.gz +0 -0
  814. package/umd/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  815. package/umd/persisters/persister-powersync/index.js +1 -0
  816. package/umd/persisters/persister-powersync/index.js.gz +0 -0
  817. package/umd/persisters/persister-powersync/with-schemas/index.js +1 -0
  818. package/umd/persisters/persister-remote/index.js +1 -0
  819. package/umd/persisters/persister-remote/index.js.gz +0 -0
  820. package/umd/persisters/persister-remote/with-schemas/index.js +1 -0
  821. package/umd/persisters/persister-sqlite-wasm/index.js +1 -0
  822. package/umd/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  823. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  824. package/umd/persisters/persister-sqlite3/index.js +1 -0
  825. package/umd/persisters/persister-sqlite3/index.js.gz +0 -0
  826. package/umd/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  827. package/umd/persisters/persister-yjs/index.js +1 -0
  828. package/umd/persisters/persister-yjs/index.js.gz +0 -0
  829. package/umd/persisters/persister-yjs/with-schemas/index.js +1 -0
  830. package/umd/persisters/with-schemas/index.js +1 -0
  831. package/umd/queries/with-schemas/index.js +1 -0
  832. package/umd/relationships/with-schemas/index.js +1 -0
  833. package/umd/store/index.js +1 -0
  834. package/umd/store/index.js.gz +0 -0
  835. package/umd/store/with-schemas/index.js +1 -0
  836. package/umd/synchronizers/index.js +1 -0
  837. package/umd/synchronizers/index.js.gz +0 -0
  838. package/umd/synchronizers/synchronizer-local/index.js +1 -0
  839. package/umd/synchronizers/synchronizer-local/index.js.gz +0 -0
  840. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  841. package/umd/synchronizers/synchronizer-ws-client/index.js +1 -0
  842. package/umd/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  843. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  844. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  845. package/umd/synchronizers/with-schemas/index.js +1 -0
  846. package/umd/tools/with-schemas/index.js +1 -0
  847. package/umd/ui-react/with-schemas/index.js +1 -0
  848. package/umd/ui-react-dom/index.js +1 -0
  849. package/umd/ui-react-dom/index.js.gz +0 -0
  850. package/umd/ui-react-dom/with-schemas/index.js +1 -0
  851. package/umd/ui-react-inspector/index.js +1 -0
  852. package/umd/ui-react-inspector/index.js.gz +0 -0
  853. package/umd/ui-react-inspector/with-schemas/index.js +1 -0
  854. package/umd/with-schemas/index.js +1 -0
  855. package/umd-es6/@types/_internal/queries/index.d.ts +0 -0
  856. package/umd-es6/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  857. package/umd-es6/@types/_internal/store/index.d.ts +3 -0
  858. package/umd-es6/@types/_internal/store/with-schemas/index.d.ts +106 -0
  859. package/umd-es6/@types/_internal/ui-react/index.d.ts +0 -0
  860. package/umd-es6/@types/_internal/ui-react/with-schemas/index.d.ts +813 -0
  861. package/umd-es6/@types/checkpoints/index.d.ts +1033 -0
  862. package/umd-es6/@types/checkpoints/with-schemas/index.d.ts +1125 -0
  863. package/umd-es6/@types/common/index.d.ts +117 -0
  864. package/umd-es6/@types/common/with-schemas/index.d.ts +117 -0
  865. package/umd-es6/@types/index.d.ts +18 -0
  866. package/umd-es6/@types/indexes/index.d.ts +1037 -0
  867. package/umd-es6/@types/indexes/with-schemas/index.d.ts +1183 -0
  868. package/umd-es6/@types/mergeable-store/index.d.ts +222 -0
  869. package/umd-es6/@types/mergeable-store/with-schemas/index.d.ts +509 -0
  870. package/umd-es6/@types/metrics/index.d.ts +895 -0
  871. package/umd-es6/@types/metrics/with-schemas/index.d.ts +982 -0
  872. package/umd-es6/@types/persisters/index.d.ts +1319 -0
  873. package/umd-es6/@types/persisters/persister-automerge/index.d.ts +162 -0
  874. package/umd-es6/@types/persisters/persister-automerge/with-schemas/index.d.ts +177 -0
  875. package/umd-es6/@types/persisters/persister-browser/index.d.ts +174 -0
  876. package/umd-es6/@types/persisters/persister-browser/with-schemas/index.d.ts +199 -0
  877. package/umd-es6/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +157 -0
  878. package/umd-es6/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +176 -0
  879. package/umd-es6/@types/persisters/persister-electric-sql/index.d.ts +183 -0
  880. package/umd-es6/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +202 -0
  881. package/umd-es6/@types/persisters/persister-expo-sqlite/index.d.ts +186 -0
  882. package/umd-es6/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +205 -0
  883. package/umd-es6/@types/persisters/persister-expo-sqlite-next/index.d.ts +187 -0
  884. package/umd-es6/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +206 -0
  885. package/umd-es6/@types/persisters/persister-file/index.d.ts +88 -0
  886. package/umd-es6/@types/persisters/persister-file/with-schemas/index.d.ts +102 -0
  887. package/umd-es6/@types/persisters/persister-indexed-db/index.d.ts +116 -0
  888. package/umd-es6/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +131 -0
  889. package/umd-es6/@types/persisters/persister-libsql/index.d.ts +154 -0
  890. package/umd-es6/@types/persisters/persister-libsql/with-schemas/index.d.ts +173 -0
  891. package/umd-es6/@types/persisters/persister-partykit-client/index.d.ts +185 -0
  892. package/umd-es6/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +200 -0
  893. package/umd-es6/@types/persisters/persister-partykit-server/index.d.ts +631 -0
  894. package/umd-es6/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +673 -0
  895. package/umd-es6/@types/persisters/persister-powersync/index.d.ts +169 -0
  896. package/umd-es6/@types/persisters/persister-powersync/with-schemas/index.d.ts +188 -0
  897. package/umd-es6/@types/persisters/persister-remote/index.d.ts +113 -0
  898. package/umd-es6/@types/persisters/persister-remote/with-schemas/index.d.ts +129 -0
  899. package/umd-es6/@types/persisters/persister-sqlite-wasm/index.d.ts +170 -0
  900. package/umd-es6/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +190 -0
  901. package/umd-es6/@types/persisters/persister-sqlite3/index.d.ts +171 -0
  902. package/umd-es6/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +190 -0
  903. package/umd-es6/@types/persisters/persister-yjs/index.d.ts +157 -0
  904. package/umd-es6/@types/persisters/persister-yjs/with-schemas/index.d.ts +172 -0
  905. package/umd-es6/@types/persisters/with-schemas/index.d.ts +1393 -0
  906. package/umd-es6/@types/queries/index.d.ts +3640 -0
  907. package/umd-es6/@types/queries/with-schemas/index.d.ts +3961 -0
  908. package/umd-es6/@types/relationships/index.d.ts +1266 -0
  909. package/umd-es6/@types/relationships/with-schemas/index.d.ts +1420 -0
  910. package/umd-es6/@types/store/index.d.ts +7453 -0
  911. package/umd-es6/@types/store/with-schemas/index.d.ts +9131 -0
  912. package/umd-es6/@types/synchronizers/index.d.ts +139 -0
  913. package/umd-es6/@types/synchronizers/synchronizer-local/index.d.ts +27 -0
  914. package/umd-es6/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +29 -0
  915. package/umd-es6/@types/synchronizers/synchronizer-ws-client/index.d.ts +36 -0
  916. package/umd-es6/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +42 -0
  917. package/umd-es6/@types/synchronizers/synchronizer-ws-server/index.d.ts +58 -0
  918. package/umd-es6/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +58 -0
  919. package/umd-es6/@types/synchronizers/with-schemas/index.d.ts +156 -0
  920. package/umd-es6/@types/tools/index.d.ts +556 -0
  921. package/umd-es6/@types/tools/with-schemas/index.d.ts +567 -0
  922. package/umd-es6/@types/ui-react/index.d.ts +15318 -0
  923. package/umd-es6/@types/ui-react/with-schemas/index.d.ts +16235 -0
  924. package/umd-es6/@types/ui-react-dom/index.d.ts +1751 -0
  925. package/umd-es6/@types/ui-react-dom/with-schemas/index.d.ts +1883 -0
  926. package/umd-es6/@types/ui-react-inspector/index.d.ts +77 -0
  927. package/umd-es6/@types/ui-react-inspector/with-schemas/index.d.ts +1871 -0
  928. package/umd-es6/@types/with-schemas/index.d.ts +18 -0
  929. package/umd-es6/checkpoints/with-schemas/index.js +1 -0
  930. package/umd-es6/common/with-schemas/index.js +1 -0
  931. package/umd-es6/index.js +1 -0
  932. package/umd-es6/index.js.gz +0 -0
  933. package/umd-es6/indexes/with-schemas/index.js +1 -0
  934. package/umd-es6/mergeable-store/index.js +1 -0
  935. package/umd-es6/mergeable-store/index.js.gz +0 -0
  936. package/umd-es6/mergeable-store/with-schemas/index.js +1 -0
  937. package/umd-es6/metrics/with-schemas/index.js +1 -0
  938. package/umd-es6/persisters/index.js +1 -0
  939. package/umd-es6/persisters/index.js.gz +0 -0
  940. package/umd-es6/persisters/persister-automerge/index.js +1 -0
  941. package/umd-es6/persisters/persister-automerge/index.js.gz +0 -0
  942. package/umd-es6/persisters/persister-automerge/with-schemas/index.js +1 -0
  943. package/umd-es6/persisters/persister-browser/index.js +1 -0
  944. package/umd-es6/persisters/persister-browser/index.js.gz +0 -0
  945. package/umd-es6/persisters/persister-browser/with-schemas/index.js +1 -0
  946. package/umd-es6/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  947. package/umd-es6/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  948. package/umd-es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  949. package/umd-es6/persisters/persister-electric-sql/index.js +1 -0
  950. package/umd-es6/persisters/persister-electric-sql/index.js.gz +0 -0
  951. package/umd-es6/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  952. package/umd-es6/persisters/persister-expo-sqlite/index.js +1 -0
  953. package/umd-es6/persisters/persister-expo-sqlite/index.js.gz +0 -0
  954. package/umd-es6/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  955. package/umd-es6/persisters/persister-expo-sqlite-next/index.js +1 -0
  956. package/umd-es6/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  957. package/umd-es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +1 -0
  958. package/umd-es6/persisters/persister-file/index.js +1 -0
  959. package/umd-es6/persisters/persister-file/index.js.gz +0 -0
  960. package/umd-es6/persisters/persister-file/with-schemas/index.js +1 -0
  961. package/umd-es6/persisters/persister-indexed-db/index.js +1 -0
  962. package/umd-es6/persisters/persister-indexed-db/index.js.gz +0 -0
  963. package/umd-es6/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  964. package/umd-es6/persisters/persister-libsql/index.js +1 -0
  965. package/umd-es6/persisters/persister-libsql/index.js.gz +0 -0
  966. package/umd-es6/persisters/persister-libsql/with-schemas/index.js +1 -0
  967. package/umd-es6/persisters/persister-partykit-client/index.js +1 -0
  968. package/umd-es6/persisters/persister-partykit-client/index.js.gz +0 -0
  969. package/umd-es6/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  970. package/umd-es6/persisters/persister-partykit-server/index.js +1 -0
  971. package/umd-es6/persisters/persister-partykit-server/index.js.gz +0 -0
  972. package/umd-es6/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  973. package/umd-es6/persisters/persister-powersync/index.js +1 -0
  974. package/umd-es6/persisters/persister-powersync/index.js.gz +0 -0
  975. package/umd-es6/persisters/persister-powersync/with-schemas/index.js +1 -0
  976. package/umd-es6/persisters/persister-remote/index.js +1 -0
  977. package/umd-es6/persisters/persister-remote/index.js.gz +0 -0
  978. package/umd-es6/persisters/persister-remote/with-schemas/index.js +1 -0
  979. package/umd-es6/persisters/persister-sqlite-wasm/index.js +1 -0
  980. package/umd-es6/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  981. package/umd-es6/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  982. package/umd-es6/persisters/persister-sqlite3/index.js +1 -0
  983. package/umd-es6/persisters/persister-sqlite3/index.js.gz +0 -0
  984. package/umd-es6/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  985. package/umd-es6/persisters/persister-yjs/index.js +1 -0
  986. package/umd-es6/persisters/persister-yjs/index.js.gz +0 -0
  987. package/umd-es6/persisters/persister-yjs/with-schemas/index.js +1 -0
  988. package/umd-es6/persisters/with-schemas/index.js +1 -0
  989. package/umd-es6/queries/with-schemas/index.js +1 -0
  990. package/umd-es6/relationships/with-schemas/index.js +1 -0
  991. package/umd-es6/store/index.js +1 -0
  992. package/umd-es6/store/index.js.gz +0 -0
  993. package/umd-es6/store/with-schemas/index.js +1 -0
  994. package/umd-es6/synchronizers/index.js +1 -0
  995. package/umd-es6/synchronizers/index.js.gz +0 -0
  996. package/umd-es6/synchronizers/synchronizer-local/index.js +1 -0
  997. package/umd-es6/synchronizers/synchronizer-local/index.js.gz +0 -0
  998. package/umd-es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  999. package/umd-es6/synchronizers/synchronizer-ws-client/index.js +1 -0
  1000. package/umd-es6/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  1001. package/umd-es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  1002. package/umd-es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  1003. package/umd-es6/synchronizers/with-schemas/index.js +1 -0
  1004. package/umd-es6/tools/with-schemas/index.js +1 -0
  1005. package/umd-es6/ui-react/with-schemas/index.js +1 -0
  1006. package/umd-es6/ui-react-dom/index.js +1 -0
  1007. package/umd-es6/ui-react-dom/index.js.gz +0 -0
  1008. package/umd-es6/ui-react-dom/with-schemas/index.js +1 -0
  1009. package/umd-es6/ui-react-inspector/index.js +1 -0
  1010. package/umd-es6/ui-react-inspector/index.js.gz +0 -0
  1011. package/umd-es6/ui-react-inspector/with-schemas/index.js +1 -0
  1012. package/umd-es6/with-schemas/index.js +1 -0
  1013. package/with-schemas/index.js +1 -0
  1014. package/bin/cli.js +0 -2
  1015. package/lib/cjs/mergeable-store.cjs +0 -1
  1016. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  1017. package/lib/cjs/persisters/persister-automerge.cjs +0 -1
  1018. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  1019. package/lib/cjs/persisters/persister-browser.cjs +0 -1
  1020. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  1021. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +0 -1
  1022. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  1023. package/lib/cjs/persisters/persister-electric-sql.cjs +0 -1
  1024. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  1025. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +0 -1
  1026. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  1027. package/lib/cjs/persisters/persister-expo-sqlite.cjs +0 -1
  1028. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  1029. package/lib/cjs/persisters/persister-file.cjs +0 -1
  1030. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  1031. package/lib/cjs/persisters/persister-indexed-db.cjs +0 -1
  1032. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  1033. package/lib/cjs/persisters/persister-libsql.cjs +0 -1
  1034. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  1035. package/lib/cjs/persisters/persister-partykit-client.cjs +0 -1
  1036. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  1037. package/lib/cjs/persisters/persister-partykit-server.cjs +0 -1
  1038. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  1039. package/lib/cjs/persisters/persister-powersync.cjs +0 -1
  1040. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  1041. package/lib/cjs/persisters/persister-remote.cjs +0 -1
  1042. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  1043. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +0 -1
  1044. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  1045. package/lib/cjs/persisters/persister-sqlite3.cjs +0 -1
  1046. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  1047. package/lib/cjs/persisters/persister-yjs.cjs +0 -1
  1048. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  1049. package/lib/cjs/persisters.cjs +0 -1
  1050. package/lib/cjs/persisters.cjs.gz +0 -0
  1051. package/lib/cjs/store.cjs +0 -1
  1052. package/lib/cjs/store.cjs.gz +0 -0
  1053. package/lib/cjs/synchronizers/synchronizer-local.cjs +0 -1
  1054. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  1055. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +0 -1
  1056. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  1057. package/lib/cjs/synchronizers.cjs +0 -1
  1058. package/lib/cjs/synchronizers.cjs.gz +0 -0
  1059. package/lib/cjs/tinybase.cjs +0 -1
  1060. package/lib/cjs/tinybase.cjs.gz +0 -0
  1061. package/lib/cjs/ui-react-dom-debug.cjs +0 -1
  1062. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  1063. package/lib/cjs/ui-react-dom.cjs +0 -1
  1064. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  1065. package/lib/cjs-es6/mergeable-store.cjs +0 -1
  1066. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  1067. package/lib/cjs-es6/persisters/persister-automerge.cjs +0 -1
  1068. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  1069. package/lib/cjs-es6/persisters/persister-browser.cjs +0 -1
  1070. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  1071. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +0 -1
  1072. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  1073. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +0 -1
  1074. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  1075. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +0 -1
  1076. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  1077. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +0 -1
  1078. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  1079. package/lib/cjs-es6/persisters/persister-file.cjs +0 -1
  1080. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  1081. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +0 -1
  1082. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  1083. package/lib/cjs-es6/persisters/persister-libsql.cjs +0 -1
  1084. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  1085. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +0 -1
  1086. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  1087. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +0 -1
  1088. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  1089. package/lib/cjs-es6/persisters/persister-powersync.cjs +0 -1
  1090. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  1091. package/lib/cjs-es6/persisters/persister-remote.cjs +0 -1
  1092. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  1093. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +0 -1
  1094. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  1095. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +0 -1
  1096. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  1097. package/lib/cjs-es6/persisters/persister-yjs.cjs +0 -1
  1098. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  1099. package/lib/cjs-es6/persisters.cjs +0 -1
  1100. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  1101. package/lib/cjs-es6/store.cjs +0 -1
  1102. package/lib/cjs-es6/store.cjs.gz +0 -0
  1103. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +0 -1
  1104. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  1105. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +0 -1
  1106. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  1107. package/lib/cjs-es6/synchronizers.cjs +0 -1
  1108. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  1109. package/lib/cjs-es6/tinybase.cjs +0 -1
  1110. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  1111. package/lib/cjs-es6/ui-react-dom-debug.cjs +0 -1
  1112. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  1113. package/lib/cjs-es6/ui-react-dom.cjs +0 -1
  1114. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  1115. package/lib/debug/mergeable-store.js +0 -2242
  1116. package/lib/debug/persisters/persister-automerge.js +0 -373
  1117. package/lib/debug/persisters/persister-browser.js +0 -276
  1118. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +0 -924
  1119. package/lib/debug/persisters/persister-electric-sql.js +0 -932
  1120. package/lib/debug/persisters/persister-expo-sqlite-next.js +0 -927
  1121. package/lib/debug/persisters/persister-expo-sqlite.js +0 -925
  1122. package/lib/debug/persisters/persister-file.js +0 -255
  1123. package/lib/debug/persisters/persister-indexed-db.js +0 -336
  1124. package/lib/debug/persisters/persister-libsql.js +0 -925
  1125. package/lib/debug/persisters/persister-partykit-client.js +0 -324
  1126. package/lib/debug/persisters/persister-partykit-server.js +0 -284
  1127. package/lib/debug/persisters/persister-powersync.js +0 -940
  1128. package/lib/debug/persisters/persister-remote.js +0 -282
  1129. package/lib/debug/persisters/persister-sqlite-wasm.js +0 -933
  1130. package/lib/debug/persisters/persister-sqlite3.js +0 -935
  1131. package/lib/debug/persisters/persister-yjs.js +0 -421
  1132. package/lib/debug/persisters.js +0 -225
  1133. package/lib/debug/store.js +0 -1631
  1134. package/lib/debug/synchronizers/synchronizer-local.js +0 -501
  1135. package/lib/debug/synchronizers/synchronizer-ws-client.js +0 -524
  1136. package/lib/debug/synchronizers.js +0 -461
  1137. package/lib/debug/tinybase.js +0 -4095
  1138. package/lib/debug/tools.js +0 -3297
  1139. package/lib/debug/ui-react-dom.js +0 -3318
  1140. package/lib/debug/ui-react.js +0 -1983
  1141. package/lib/es6/mergeable-store.js +0 -1
  1142. package/lib/es6/mergeable-store.js.gz +0 -0
  1143. package/lib/es6/persisters/persister-automerge.js +0 -1
  1144. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  1145. package/lib/es6/persisters/persister-browser.js +0 -1
  1146. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  1147. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +0 -1
  1148. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1149. package/lib/es6/persisters/persister-electric-sql.js +0 -1
  1150. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  1151. package/lib/es6/persisters/persister-expo-sqlite-next.js +0 -1
  1152. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1153. package/lib/es6/persisters/persister-expo-sqlite.js +0 -1
  1154. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  1155. package/lib/es6/persisters/persister-file.js +0 -1
  1156. package/lib/es6/persisters/persister-file.js.gz +0 -0
  1157. package/lib/es6/persisters/persister-indexed-db.js +0 -1
  1158. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  1159. package/lib/es6/persisters/persister-libsql.js +0 -1
  1160. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  1161. package/lib/es6/persisters/persister-partykit-client.js +0 -1
  1162. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  1163. package/lib/es6/persisters/persister-partykit-server.js +0 -1
  1164. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  1165. package/lib/es6/persisters/persister-powersync.js +0 -1
  1166. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  1167. package/lib/es6/persisters/persister-remote.js +0 -1
  1168. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  1169. package/lib/es6/persisters/persister-sqlite-wasm.js +0 -1
  1170. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  1171. package/lib/es6/persisters/persister-sqlite3.js +0 -1
  1172. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  1173. package/lib/es6/persisters/persister-yjs.js +0 -1
  1174. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  1175. package/lib/es6/persisters.js +0 -1
  1176. package/lib/es6/persisters.js.gz +0 -0
  1177. package/lib/es6/store.js +0 -1
  1178. package/lib/es6/store.js.gz +0 -0
  1179. package/lib/es6/synchronizers/synchronizer-local.js +0 -1
  1180. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  1181. package/lib/es6/synchronizers/synchronizer-ws-client.js +0 -1
  1182. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1183. package/lib/es6/synchronizers.js +0 -1
  1184. package/lib/es6/synchronizers.js.gz +0 -0
  1185. package/lib/es6/tinybase.js +0 -1
  1186. package/lib/es6/tinybase.js.gz +0 -0
  1187. package/lib/es6/ui-react-dom-debug.js +0 -1
  1188. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  1189. package/lib/es6/ui-react-dom.js +0 -1
  1190. package/lib/es6/ui-react-dom.js.gz +0 -0
  1191. package/lib/mergeable-store.js +0 -1
  1192. package/lib/mergeable-store.js.gz +0 -0
  1193. package/lib/persisters/persister-automerge.js +0 -1
  1194. package/lib/persisters/persister-automerge.js.gz +0 -0
  1195. package/lib/persisters/persister-browser.js +0 -1
  1196. package/lib/persisters/persister-browser.js.gz +0 -0
  1197. package/lib/persisters/persister-cr-sqlite-wasm.js +0 -1
  1198. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1199. package/lib/persisters/persister-electric-sql.js +0 -1
  1200. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  1201. package/lib/persisters/persister-expo-sqlite-next.js +0 -1
  1202. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1203. package/lib/persisters/persister-expo-sqlite.js +0 -1
  1204. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  1205. package/lib/persisters/persister-file.js +0 -1
  1206. package/lib/persisters/persister-file.js.gz +0 -0
  1207. package/lib/persisters/persister-indexed-db.js +0 -1
  1208. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  1209. package/lib/persisters/persister-libsql.js +0 -1
  1210. package/lib/persisters/persister-libsql.js.gz +0 -0
  1211. package/lib/persisters/persister-partykit-client.js +0 -1
  1212. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  1213. package/lib/persisters/persister-partykit-server.js +0 -1
  1214. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  1215. package/lib/persisters/persister-powersync.js +0 -1
  1216. package/lib/persisters/persister-powersync.js.gz +0 -0
  1217. package/lib/persisters/persister-remote.js +0 -1
  1218. package/lib/persisters/persister-remote.js.gz +0 -0
  1219. package/lib/persisters/persister-sqlite-wasm.js +0 -1
  1220. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  1221. package/lib/persisters/persister-sqlite3.js +0 -1
  1222. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  1223. package/lib/persisters/persister-yjs.js +0 -1
  1224. package/lib/persisters/persister-yjs.js.gz +0 -0
  1225. package/lib/persisters.js +0 -1
  1226. package/lib/persisters.js.gz +0 -0
  1227. package/lib/store.js +0 -1
  1228. package/lib/store.js.gz +0 -0
  1229. package/lib/synchronizers/synchronizer-local.js +0 -1
  1230. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  1231. package/lib/synchronizers/synchronizer-ws-client.js +0 -1
  1232. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1233. package/lib/synchronizers.js +0 -1
  1234. package/lib/synchronizers.js.gz +0 -0
  1235. package/lib/tinybase.js +0 -1
  1236. package/lib/tinybase.js.gz +0 -0
  1237. package/lib/types/checkpoints.d.ts +0 -986
  1238. package/lib/types/common.d.ts +0 -113
  1239. package/lib/types/indexes.d.ts +0 -993
  1240. package/lib/types/mergeable-store.d.ts +0 -208
  1241. package/lib/types/metrics.d.ts +0 -856
  1242. package/lib/types/persisters/persister-automerge.d.ts +0 -149
  1243. package/lib/types/persisters/persister-browser.d.ts +0 -162
  1244. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +0 -145
  1245. package/lib/types/persisters/persister-electric-sql.d.ts +0 -168
  1246. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +0 -172
  1247. package/lib/types/persisters/persister-expo-sqlite.d.ts +0 -173
  1248. package/lib/types/persisters/persister-file.d.ts +0 -82
  1249. package/lib/types/persisters/persister-indexed-db.d.ts +0 -110
  1250. package/lib/types/persisters/persister-libsql.d.ts +0 -142
  1251. package/lib/types/persisters/persister-partykit-client.d.ts +0 -177
  1252. package/lib/types/persisters/persister-partykit-server.d.ts +0 -602
  1253. package/lib/types/persisters/persister-powersync.d.ts +0 -157
  1254. package/lib/types/persisters/persister-remote.d.ts +0 -107
  1255. package/lib/types/persisters/persister-sqlite-wasm.d.ts +0 -157
  1256. package/lib/types/persisters/persister-sqlite3.d.ts +0 -158
  1257. package/lib/types/persisters/persister-yjs.d.ts +0 -145
  1258. package/lib/types/persisters.d.ts +0 -1252
  1259. package/lib/types/queries.d.ts +0 -3506
  1260. package/lib/types/relationships.d.ts +0 -1242
  1261. package/lib/types/store.d.ts +0 -7042
  1262. package/lib/types/synchronizers/synchronizer-local.d.ts +0 -27
  1263. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +0 -36
  1264. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +0 -58
  1265. package/lib/types/synchronizers.d.ts +0 -136
  1266. package/lib/types/tinybase.d.ts +0 -15
  1267. package/lib/types/tools.d.ts +0 -521
  1268. package/lib/types/ui-react-dom.d.ts +0 -1705
  1269. package/lib/types/ui-react.d.ts +0 -13828
  1270. package/lib/types/with-schemas/checkpoints.d.ts +0 -1078
  1271. package/lib/types/with-schemas/common.d.ts +0 -113
  1272. package/lib/types/with-schemas/indexes.d.ts +0 -1131
  1273. package/lib/types/with-schemas/internal/queries.d.ts +0 -16
  1274. package/lib/types/with-schemas/internal/store.d.ts +0 -106
  1275. package/lib/types/with-schemas/internal/ui-react.d.ts +0 -810
  1276. package/lib/types/with-schemas/mergeable-store.d.ts +0 -486
  1277. package/lib/types/with-schemas/metrics.d.ts +0 -936
  1278. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +0 -161
  1279. package/lib/types/with-schemas/persisters/persister-browser.d.ts +0 -184
  1280. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +0 -158
  1281. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +0 -181
  1282. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +0 -185
  1283. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +0 -186
  1284. package/lib/types/with-schemas/persisters/persister-file.d.ts +0 -93
  1285. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +0 -122
  1286. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +0 -155
  1287. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +0 -189
  1288. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +0 -650
  1289. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +0 -170
  1290. package/lib/types/with-schemas/persisters/persister-remote.d.ts +0 -120
  1291. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +0 -171
  1292. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +0 -171
  1293. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +0 -157
  1294. package/lib/types/with-schemas/persisters.d.ts +0 -1326
  1295. package/lib/types/with-schemas/queries.d.ts +0 -3827
  1296. package/lib/types/with-schemas/relationships.d.ts +0 -1393
  1297. package/lib/types/with-schemas/store.d.ts +0 -8715
  1298. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +0 -29
  1299. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +0 -42
  1300. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +0 -58
  1301. package/lib/types/with-schemas/synchronizers.d.ts +0 -150
  1302. package/lib/types/with-schemas/tinybase.d.ts +0 -14
  1303. package/lib/types/with-schemas/tools.d.ts +0 -532
  1304. package/lib/types/with-schemas/ui-react-dom.d.ts +0 -1834
  1305. package/lib/types/with-schemas/ui-react.d.ts +0 -14742
  1306. package/lib/ui-react-dom.js +0 -1
  1307. package/lib/ui-react-dom.js.gz +0 -0
  1308. package/lib/umd/mergeable-store.js +0 -1
  1309. package/lib/umd/mergeable-store.js.gz +0 -0
  1310. package/lib/umd/persisters/persister-automerge.js +0 -1
  1311. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  1312. package/lib/umd/persisters/persister-browser.js +0 -1
  1313. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  1314. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +0 -1
  1315. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1316. package/lib/umd/persisters/persister-electric-sql.js +0 -1
  1317. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  1318. package/lib/umd/persisters/persister-expo-sqlite-next.js +0 -1
  1319. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1320. package/lib/umd/persisters/persister-expo-sqlite.js +0 -1
  1321. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  1322. package/lib/umd/persisters/persister-file.js +0 -1
  1323. package/lib/umd/persisters/persister-file.js.gz +0 -0
  1324. package/lib/umd/persisters/persister-indexed-db.js +0 -1
  1325. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  1326. package/lib/umd/persisters/persister-libsql.js +0 -1
  1327. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  1328. package/lib/umd/persisters/persister-partykit-client.js +0 -1
  1329. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  1330. package/lib/umd/persisters/persister-partykit-server.js +0 -1
  1331. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  1332. package/lib/umd/persisters/persister-powersync.js +0 -1
  1333. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  1334. package/lib/umd/persisters/persister-remote.js +0 -1
  1335. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  1336. package/lib/umd/persisters/persister-sqlite-wasm.js +0 -1
  1337. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  1338. package/lib/umd/persisters/persister-sqlite3.js +0 -1
  1339. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  1340. package/lib/umd/persisters/persister-yjs.js +0 -1
  1341. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  1342. package/lib/umd/persisters.js +0 -1
  1343. package/lib/umd/persisters.js.gz +0 -0
  1344. package/lib/umd/store.js +0 -1
  1345. package/lib/umd/store.js.gz +0 -0
  1346. package/lib/umd/synchronizers/synchronizer-local.js +0 -1
  1347. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  1348. package/lib/umd/synchronizers/synchronizer-ws-client.js +0 -1
  1349. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1350. package/lib/umd/synchronizers.js +0 -1
  1351. package/lib/umd/synchronizers.js.gz +0 -0
  1352. package/lib/umd/tinybase.js +0 -1
  1353. package/lib/umd/tinybase.js.gz +0 -0
  1354. package/lib/umd/ui-react-dom-debug.js +0 -1
  1355. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  1356. package/lib/umd/ui-react-dom.js +0 -1
  1357. package/lib/umd/ui-react-dom.js.gz +0 -0
  1358. package/lib/umd-es6/mergeable-store.js +0 -1
  1359. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  1360. package/lib/umd-es6/persisters/persister-automerge.js +0 -1
  1361. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  1362. package/lib/umd-es6/persisters/persister-browser.js +0 -1
  1363. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  1364. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +0 -1
  1365. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1366. package/lib/umd-es6/persisters/persister-electric-sql.js +0 -1
  1367. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  1368. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +0 -1
  1369. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1370. package/lib/umd-es6/persisters/persister-expo-sqlite.js +0 -1
  1371. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  1372. package/lib/umd-es6/persisters/persister-file.js +0 -1
  1373. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  1374. package/lib/umd-es6/persisters/persister-indexed-db.js +0 -1
  1375. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  1376. package/lib/umd-es6/persisters/persister-libsql.js +0 -1
  1377. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  1378. package/lib/umd-es6/persisters/persister-partykit-client.js +0 -1
  1379. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  1380. package/lib/umd-es6/persisters/persister-partykit-server.js +0 -1
  1381. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  1382. package/lib/umd-es6/persisters/persister-powersync.js +0 -1
  1383. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  1384. package/lib/umd-es6/persisters/persister-remote.js +0 -1
  1385. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  1386. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +0 -1
  1387. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  1388. package/lib/umd-es6/persisters/persister-sqlite3.js +0 -1
  1389. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  1390. package/lib/umd-es6/persisters/persister-yjs.js +0 -1
  1391. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  1392. package/lib/umd-es6/persisters.js +0 -1
  1393. package/lib/umd-es6/persisters.js.gz +0 -0
  1394. package/lib/umd-es6/store.js +0 -1
  1395. package/lib/umd-es6/store.js.gz +0 -0
  1396. package/lib/umd-es6/synchronizers/synchronizer-local.js +0 -1
  1397. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  1398. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +0 -1
  1399. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1400. package/lib/umd-es6/synchronizers.js +0 -1
  1401. package/lib/umd-es6/synchronizers.js.gz +0 -0
  1402. package/lib/umd-es6/tinybase.js +0 -1
  1403. package/lib/umd-es6/tinybase.js.gz +0 -0
  1404. package/lib/umd-es6/ui-react-dom-debug.js +0 -1
  1405. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  1406. package/lib/umd-es6/ui-react-dom.js +0 -1
  1407. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  1408. /package/{lib/checkpoints.js → checkpoints/index.js} +0 -0
  1409. /package/{lib/checkpoints.js.gz → checkpoints/index.js.gz} +0 -0
  1410. /package/{lib/cjs/checkpoints.cjs → cjs/checkpoints/index.cjs} +0 -0
  1411. /package/{lib/cjs/checkpoints.cjs.gz → cjs/checkpoints/index.cjs.gz} +0 -0
  1412. /package/{lib/cjs/common.cjs → cjs/common/index.cjs} +0 -0
  1413. /package/{lib/cjs/common.cjs.gz → cjs/common/index.cjs.gz} +0 -0
  1414. /package/{lib/cjs/indexes.cjs → cjs/indexes/index.cjs} +0 -0
  1415. /package/{lib/cjs/indexes.cjs.gz → cjs/indexes/index.cjs.gz} +0 -0
  1416. /package/{lib/cjs/metrics.cjs → cjs/metrics/index.cjs} +0 -0
  1417. /package/{lib/cjs/metrics.cjs.gz → cjs/metrics/index.cjs.gz} +0 -0
  1418. /package/{lib/cjs/queries.cjs → cjs/queries/index.cjs} +0 -0
  1419. /package/{lib/cjs/queries.cjs.gz → cjs/queries/index.cjs.gz} +0 -0
  1420. /package/{lib/cjs/relationships.cjs → cjs/relationships/index.cjs} +0 -0
  1421. /package/{lib/cjs/relationships.cjs.gz → cjs/relationships/index.cjs.gz} +0 -0
  1422. /package/{lib/cjs/synchronizers/synchronizer-ws-server.cjs → cjs/synchronizers/synchronizer-ws-server/index.cjs} +0 -0
  1423. /package/{lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz → cjs/synchronizers/synchronizer-ws-server/index.cjs.gz} +0 -0
  1424. /package/{lib/cjs/tools.cjs → cjs/tools/index.cjs} +0 -0
  1425. /package/{lib/cjs/tools.cjs.gz → cjs/tools/index.cjs.gz} +0 -0
  1426. /package/{lib/cjs/ui-react.cjs → cjs/ui-react/index.cjs} +0 -0
  1427. /package/{lib/cjs/ui-react.cjs.gz → cjs/ui-react/index.cjs.gz} +0 -0
  1428. /package/{lib/cjs-es6/checkpoints.cjs → cjs-es6/checkpoints/index.cjs} +0 -0
  1429. /package/{lib/cjs-es6/checkpoints.cjs.gz → cjs-es6/checkpoints/index.cjs.gz} +0 -0
  1430. /package/{lib/cjs-es6/common.cjs → cjs-es6/common/index.cjs} +0 -0
  1431. /package/{lib/cjs-es6/common.cjs.gz → cjs-es6/common/index.cjs.gz} +0 -0
  1432. /package/{lib/cjs-es6/indexes.cjs → cjs-es6/indexes/index.cjs} +0 -0
  1433. /package/{lib/cjs-es6/indexes.cjs.gz → cjs-es6/indexes/index.cjs.gz} +0 -0
  1434. /package/{lib/cjs-es6/metrics.cjs → cjs-es6/metrics/index.cjs} +0 -0
  1435. /package/{lib/cjs-es6/metrics.cjs.gz → cjs-es6/metrics/index.cjs.gz} +0 -0
  1436. /package/{lib/cjs-es6/queries.cjs → cjs-es6/queries/index.cjs} +0 -0
  1437. /package/{lib/cjs-es6/queries.cjs.gz → cjs-es6/queries/index.cjs.gz} +0 -0
  1438. /package/{lib/cjs-es6/relationships.cjs → cjs-es6/relationships/index.cjs} +0 -0
  1439. /package/{lib/cjs-es6/relationships.cjs.gz → cjs-es6/relationships/index.cjs.gz} +0 -0
  1440. /package/{lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs → cjs-es6/synchronizers/synchronizer-ws-server/index.cjs} +0 -0
  1441. /package/{lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz → cjs-es6/synchronizers/synchronizer-ws-server/index.cjs.gz} +0 -0
  1442. /package/{lib/cjs-es6/tools.cjs → cjs-es6/tools/index.cjs} +0 -0
  1443. /package/{lib/cjs-es6/tools.cjs.gz → cjs-es6/tools/index.cjs.gz} +0 -0
  1444. /package/{lib/cjs-es6/ui-react.cjs → cjs-es6/ui-react/index.cjs} +0 -0
  1445. /package/{lib/cjs-es6/ui-react.cjs.gz → cjs-es6/ui-react/index.cjs.gz} +0 -0
  1446. /package/{lib/common.js → common/index.js} +0 -0
  1447. /package/{lib/common.js.gz → common/index.js.gz} +0 -0
  1448. /package/{lib/debug/checkpoints.js → debug/checkpoints/index.js} +0 -0
  1449. /package/{lib/debug/common.js → debug/common/index.js} +0 -0
  1450. /package/{lib/debug/indexes.js → debug/indexes/index.js} +0 -0
  1451. /package/{lib/debug/metrics.js → debug/metrics/index.js} +0 -0
  1452. /package/{lib/debug/queries.js → debug/queries/index.js} +0 -0
  1453. /package/{lib/debug/relationships.js → debug/relationships/index.js} +0 -0
  1454. /package/{lib/debug/synchronizers/synchronizer-ws-server.js → debug/synchronizers/synchronizer-ws-server/index.js} +0 -0
  1455. /package/{lib/es6/checkpoints.js → es6/checkpoints/index.js} +0 -0
  1456. /package/{lib/es6/checkpoints.js.gz → es6/checkpoints/index.js.gz} +0 -0
  1457. /package/{lib/es6/common.js → es6/common/index.js} +0 -0
  1458. /package/{lib/es6/common.js.gz → es6/common/index.js.gz} +0 -0
  1459. /package/{lib/es6/indexes.js → es6/indexes/index.js} +0 -0
  1460. /package/{lib/es6/indexes.js.gz → es6/indexes/index.js.gz} +0 -0
  1461. /package/{lib/es6/metrics.js → es6/metrics/index.js} +0 -0
  1462. /package/{lib/es6/metrics.js.gz → es6/metrics/index.js.gz} +0 -0
  1463. /package/{lib/es6/queries.js → es6/queries/index.js} +0 -0
  1464. /package/{lib/es6/queries.js.gz → es6/queries/index.js.gz} +0 -0
  1465. /package/{lib/es6/relationships.js → es6/relationships/index.js} +0 -0
  1466. /package/{lib/es6/relationships.js.gz → es6/relationships/index.js.gz} +0 -0
  1467. /package/{lib/es6/synchronizers/synchronizer-ws-server.js → es6/synchronizers/synchronizer-ws-server/index.js} +0 -0
  1468. /package/{lib/es6/synchronizers/synchronizer-ws-server.js.gz → es6/synchronizers/synchronizer-ws-server/index.js.gz} +0 -0
  1469. /package/{lib/es6/tools.js → es6/tools/index.js} +0 -0
  1470. /package/{lib/es6/tools.js.gz → es6/tools/index.js.gz} +0 -0
  1471. /package/{lib/es6/ui-react.js → es6/ui-react/index.js} +0 -0
  1472. /package/{lib/es6/ui-react.js.gz → es6/ui-react/index.js.gz} +0 -0
  1473. /package/{lib/indexes.js → indexes/index.js} +0 -0
  1474. /package/{lib/indexes.js.gz → indexes/index.js.gz} +0 -0
  1475. /package/{lib/metrics.js → metrics/index.js} +0 -0
  1476. /package/{lib/metrics.js.gz → metrics/index.js.gz} +0 -0
  1477. /package/{lib/queries.js → queries/index.js} +0 -0
  1478. /package/{lib/queries.js.gz → queries/index.js.gz} +0 -0
  1479. /package/{lib/relationships.js → relationships/index.js} +0 -0
  1480. /package/{lib/relationships.js.gz → relationships/index.js.gz} +0 -0
  1481. /package/{lib/synchronizers/synchronizer-ws-server.js → synchronizers/synchronizer-ws-server/index.js} +0 -0
  1482. /package/{lib/synchronizers/synchronizer-ws-server.js.gz → synchronizers/synchronizer-ws-server/index.js.gz} +0 -0
  1483. /package/{lib/tools.js → tools/index.js} +0 -0
  1484. /package/{lib/tools.js.gz → tools/index.js.gz} +0 -0
  1485. /package/{lib/ui-react.js → ui-react/index.js} +0 -0
  1486. /package/{lib/ui-react.js.gz → ui-react/index.js.gz} +0 -0
  1487. /package/{lib/umd/checkpoints.js → umd/checkpoints/index.js} +0 -0
  1488. /package/{lib/umd/checkpoints.js.gz → umd/checkpoints/index.js.gz} +0 -0
  1489. /package/{lib/umd/common.js → umd/common/index.js} +0 -0
  1490. /package/{lib/umd/common.js.gz → umd/common/index.js.gz} +0 -0
  1491. /package/{lib/umd/indexes.js → umd/indexes/index.js} +0 -0
  1492. /package/{lib/umd/indexes.js.gz → umd/indexes/index.js.gz} +0 -0
  1493. /package/{lib/umd/metrics.js → umd/metrics/index.js} +0 -0
  1494. /package/{lib/umd/metrics.js.gz → umd/metrics/index.js.gz} +0 -0
  1495. /package/{lib/umd/queries.js → umd/queries/index.js} +0 -0
  1496. /package/{lib/umd/queries.js.gz → umd/queries/index.js.gz} +0 -0
  1497. /package/{lib/umd/relationships.js → umd/relationships/index.js} +0 -0
  1498. /package/{lib/umd/relationships.js.gz → umd/relationships/index.js.gz} +0 -0
  1499. /package/{lib/umd/synchronizers/synchronizer-ws-server.js → umd/synchronizers/synchronizer-ws-server/index.js} +0 -0
  1500. /package/{lib/umd/synchronizers/synchronizer-ws-server.js.gz → umd/synchronizers/synchronizer-ws-server/index.js.gz} +0 -0
  1501. /package/{lib/umd/tools.js → umd/tools/index.js} +0 -0
  1502. /package/{lib/umd/tools.js.gz → umd/tools/index.js.gz} +0 -0
  1503. /package/{lib/umd/ui-react.js → umd/ui-react/index.js} +0 -0
  1504. /package/{lib/umd/ui-react.js.gz → umd/ui-react/index.js.gz} +0 -0
  1505. /package/{lib/umd-es6/checkpoints.js → umd-es6/checkpoints/index.js} +0 -0
  1506. /package/{lib/umd-es6/checkpoints.js.gz → umd-es6/checkpoints/index.js.gz} +0 -0
  1507. /package/{lib/umd-es6/common.js → umd-es6/common/index.js} +0 -0
  1508. /package/{lib/umd-es6/common.js.gz → umd-es6/common/index.js.gz} +0 -0
  1509. /package/{lib/umd-es6/indexes.js → umd-es6/indexes/index.js} +0 -0
  1510. /package/{lib/umd-es6/indexes.js.gz → umd-es6/indexes/index.js.gz} +0 -0
  1511. /package/{lib/umd-es6/metrics.js → umd-es6/metrics/index.js} +0 -0
  1512. /package/{lib/umd-es6/metrics.js.gz → umd-es6/metrics/index.js.gz} +0 -0
  1513. /package/{lib/umd-es6/queries.js → umd-es6/queries/index.js} +0 -0
  1514. /package/{lib/umd-es6/queries.js.gz → umd-es6/queries/index.js.gz} +0 -0
  1515. /package/{lib/umd-es6/relationships.js → umd-es6/relationships/index.js} +0 -0
  1516. /package/{lib/umd-es6/relationships.js.gz → umd-es6/relationships/index.js.gz} +0 -0
  1517. /package/{lib/umd-es6/synchronizers/synchronizer-ws-server.js → umd-es6/synchronizers/synchronizer-ws-server/index.js} +0 -0
  1518. /package/{lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz → umd-es6/synchronizers/synchronizer-ws-server/index.js.gz} +0 -0
  1519. /package/{lib/umd-es6/tools.js → umd-es6/tools/index.js} +0 -0
  1520. /package/{lib/umd-es6/tools.js.gz → umd-es6/tools/index.js.gz} +0 -0
  1521. /package/{lib/umd-es6/ui-react.js → umd-es6/ui-react/index.js} +0 -0
  1522. /package/{lib/umd-es6/ui-react.js.gz → umd-es6/ui-react/index.js.gz} +0 -0
@@ -1,4095 +0,0 @@
1
- const getTypeOf = (thing) => typeof thing;
2
- const EMPTY_STRING = '';
3
- const STRING = getTypeOf(EMPTY_STRING);
4
- const BOOLEAN = getTypeOf(true);
5
- const NUMBER = getTypeOf(0);
6
- const FUNCTION = getTypeOf(getTypeOf);
7
- const TYPE = 'type';
8
- const DEFAULT = 'default';
9
- const SUM = 'sum';
10
- const AVG = 'avg';
11
- const MIN = 'min';
12
- const MAX = 'max';
13
- const LISTENER = 'Listener';
14
- const RESULT = 'Result';
15
- const GET = 'get';
16
- const ADD = 'add';
17
- const HAS = 'Has';
18
- const IDS = 'Ids';
19
- const TABLE = 'Table';
20
- const TABLES = TABLE + 's';
21
- const TABLE_IDS = TABLE + IDS;
22
- const ROW = 'Row';
23
- const ROW_COUNT = ROW + 'Count';
24
- const ROW_IDS = ROW + IDS;
25
- const SORTED_ROW_IDS = 'Sorted' + ROW + IDS;
26
- const CELL = 'Cell';
27
- const CELL_IDS = CELL + IDS;
28
- const VALUE = 'Value';
29
- const VALUES = VALUE + 's';
30
- const VALUE_IDS = VALUE + IDS;
31
- const id = (key) => EMPTY_STRING + key;
32
- const strStartsWith = (str, prefix) => str.startsWith(prefix);
33
- const strEndsWith = (str, suffix) => str.endsWith(suffix);
34
-
35
- const promise = Promise;
36
- const mathMax = Math.max;
37
- const mathMin = Math.min;
38
- const isFiniteNumber = isFinite;
39
- const isInstanceOf = (thing, cls) => thing instanceof cls;
40
- const isUndefined = (thing) => thing == void 0;
41
- const ifNotUndefined = (value, then, otherwise) =>
42
- isUndefined(value) ? otherwise?.() : then(value);
43
- const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
44
- const isString = (thing) => getTypeOf(thing) == STRING;
45
- const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
46
- const isArray = (thing) => Array.isArray(thing);
47
- const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
48
- const size = (arrayOrString) => arrayOrString.length;
49
- const test = (regex, subject) => regex.test(subject);
50
- const getUndefined = () => void 0;
51
- const promiseNew = (resolver) => new promise(resolver);
52
-
53
- const arrayHas = (array, value) => array.includes(value);
54
- const arrayEvery = (array, cb) => array.every(cb);
55
- const arrayIsEqual = (array1, array2) =>
56
- size(array1) === size(array2) &&
57
- arrayEvery(array1, (value1, index) => array2[index] === value1);
58
- const arrayIsSorted = (array, sorter) =>
59
- arrayEvery(
60
- array,
61
- (value, index) => index == 0 || sorter(array[index - 1], value) <= 0,
62
- );
63
- const arraySort = (array, sorter) => array.sort(sorter);
64
- const arrayForEach = (array, cb) => array.forEach(cb);
65
- const arrayMap = (array, cb) => array.map(cb);
66
- const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
67
- const arrayIsEmpty = (array) => size(array) == 0;
68
- const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
69
- const arrayClear = (array, to) => array.splice(0, to);
70
- const arrayPush = (array, ...values) => array.push(...values);
71
- const arrayPop = (array) => array.pop();
72
- const arrayUnshift = (array, ...values) => array.unshift(...values);
73
- const arrayShift = (array) => array.shift();
74
-
75
- const object = Object;
76
- const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
77
- const objEntries = object.entries;
78
- const objFrozen = object.isFrozen;
79
- const isObject = (obj) =>
80
- !isUndefined(obj) &&
81
- ifNotUndefined(
82
- getPrototypeOf(obj),
83
- (objPrototype) =>
84
- objPrototype == object.prototype ||
85
- isUndefined(getPrototypeOf(objPrototype)),
86
- /* istanbul ignore next */
87
- () => true,
88
- );
89
- const objIds = object.keys;
90
- const objFreeze = object.freeze;
91
- const objNew = (entries = []) => object.fromEntries(entries);
92
- const objHas = (obj, id) => id in obj;
93
- const objDel = (obj, id) => {
94
- delete obj[id];
95
- return obj;
96
- };
97
- const objForEach = (obj, cb) =>
98
- arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
99
- const objToArray = (obj, cb) =>
100
- arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
101
- const objSize = (obj) => size(objIds(obj));
102
- const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
103
- const objEnsure = (obj, id, getDefaultValue) => {
104
- if (!objHas(obj, id)) {
105
- obj[id] = getDefaultValue();
106
- }
107
- return obj[id];
108
- };
109
- const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
110
- if (
111
- isUndefined(obj) ||
112
- !isObject(obj) ||
113
- (!emptyIsValid && objIsEmpty(obj)) ||
114
- objFrozen(obj)
115
- ) {
116
- onInvalidObj?.();
117
- return false;
118
- }
119
- objToArray(obj, (child, id) => {
120
- if (!validateChild(child, id)) {
121
- objDel(obj, id);
122
- }
123
- });
124
- return emptyIsValid ? true : !objIsEmpty(obj);
125
- };
126
-
127
- const collSizeN = (collSizer) => (coll) =>
128
- arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
129
- const collSize = (coll) => coll?.size ?? 0;
130
- const collSize2 = collSizeN(collSize);
131
- const collSize3 = collSizeN(collSize2);
132
- const collSize4 = collSizeN(collSize3);
133
- const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
134
- const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
135
- const collValues = (coll) => [...(coll?.values() ?? [])];
136
- const collClear = (coll) => coll.clear();
137
- const collForEach = (coll, cb) => coll?.forEach(cb);
138
- const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
139
-
140
- const mapNew = (entries) => new Map(entries);
141
- const mapKeys = (map) => [...(map?.keys() ?? [])];
142
- const mapGet = (map, key) => map?.get(key);
143
- const mapForEach = (map, cb) =>
144
- collForEach(map, (value, key) => cb(key, value));
145
- const mapMap = (coll, cb) =>
146
- arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
147
- const mapSet = (map, key, value) =>
148
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
149
- const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
150
- if (!collHas(map, key)) {
151
- mapSet(map, key, getDefaultValue());
152
- } else {
153
- hadExistingValue?.(mapGet(map, key));
154
- }
155
- return mapGet(map, key);
156
- };
157
- const mapMatch = (map, obj, set, del = mapSet) => {
158
- objToArray(obj, (value, id) => set(map, id, value));
159
- mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
160
- return map;
161
- };
162
- const mapToObj = (map, valueMapper, excludeMapValue, excludeObjValue) => {
163
- const obj = {};
164
- collForEach(map, (mapValue, id) => {
165
- if (!excludeMapValue?.(mapValue, id)) {
166
- const objValue = valueMapper ? valueMapper(mapValue, id) : mapValue;
167
- excludeObjValue?.(objValue) ? 0 : (obj[id] = objValue);
168
- }
169
- });
170
- return obj;
171
- };
172
- const mapToObj2 = (map, valueMapper, excludeMapValue) =>
173
- mapToObj(
174
- map,
175
- (childMap) => mapToObj(childMap, valueMapper, excludeMapValue),
176
- collIsEmpty,
177
- objIsEmpty,
178
- );
179
- const mapToObj3 = (map, valueMapper, excludeMapValue) =>
180
- mapToObj(
181
- map,
182
- (childMap) => mapToObj2(childMap, valueMapper, excludeMapValue),
183
- collIsEmpty,
184
- objIsEmpty,
185
- );
186
- const mapClone = (map, mapValue) => {
187
- const map2 = mapNew();
188
- collForEach(map, (value, key) => map2.set(key, mapValue?.(value) ?? value));
189
- return map2;
190
- };
191
- const mapClone2 = (map) => mapClone(map, mapClone);
192
- const mapClone3 = (map) => mapClone(map, mapClone2);
193
- const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
194
- ifNotUndefined(
195
- (ensureLeaf ? mapEnsure : mapGet)(
196
- node,
197
- path[p],
198
- p > size(path) - 2 ? ensureLeaf : mapNew,
199
- ),
200
- (nodeOrLeaf) => {
201
- if (p > size(path) - 2) {
202
- if (pruneLeaf?.(nodeOrLeaf)) {
203
- mapSet(node, path[p]);
204
- }
205
- return nodeOrLeaf;
206
- }
207
- const leaf = visitTree(nodeOrLeaf, path, ensureLeaf, pruneLeaf, p + 1);
208
- if (collIsEmpty(nodeOrLeaf)) {
209
- mapSet(node, path[p]);
210
- }
211
- return leaf;
212
- },
213
- );
214
-
215
- const getCellOrValueType = (cellOrValue) => {
216
- const type = getTypeOf(cellOrValue);
217
- return isTypeStringOrBoolean(type) ||
218
- (type == NUMBER && isFiniteNumber(cellOrValue))
219
- ? type
220
- : void 0;
221
- };
222
- const isCellOrValueOrNullOrUndefined = (cellOrValue) =>
223
- isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
224
- const setOrDelCell = (store, tableId, rowId, cellId, cell) =>
225
- isUndefined(cell)
226
- ? store.delCell(tableId, rowId, cellId, true)
227
- : store.setCell(tableId, rowId, cellId, cell);
228
- const setOrDelValue = (store, valueId, value) =>
229
- isUndefined(value) ? store.delValue(valueId) : store.setValue(valueId, value);
230
-
231
- const setNew = (entryOrEntries) =>
232
- new Set(
233
- isArray(entryOrEntries) || isUndefined(entryOrEntries)
234
- ? entryOrEntries
235
- : [entryOrEntries],
236
- );
237
- const setAdd = (set, value) => set?.add(value);
238
-
239
- const getDefinableFunctions = (
240
- store,
241
- getDefaultThing,
242
- validateRowValue,
243
- addListener,
244
- callListeners,
245
- ) => {
246
- const hasRow = store.hasRow;
247
- const tableIds = mapNew();
248
- const things = mapNew();
249
- const thingIdListeners = mapNew();
250
- const allRowValues = mapNew();
251
- const allSortKeys = mapNew();
252
- const storeListenerIds = mapNew();
253
- const getStore = () => store;
254
- const getThingIds = () => mapKeys(tableIds);
255
- const forEachThing = (cb) => mapForEach(things, cb);
256
- const hasThing = (id) => collHas(things, id);
257
- const getTableId = (id) => mapGet(tableIds, id);
258
- const getThing = (id) => mapGet(things, id);
259
- const setThing = (id, thing) => mapSet(things, id, thing);
260
- const addStoreListeners = (id, andCall, ...listenerIds) => {
261
- const set = mapEnsure(storeListenerIds, id, setNew);
262
- arrayForEach(
263
- listenerIds,
264
- (listenerId) =>
265
- setAdd(set, listenerId) && andCall && store.callListener(listenerId),
266
- );
267
- return listenerIds;
268
- };
269
- const delStoreListeners = (id, ...listenerIds) =>
270
- ifNotUndefined(mapGet(storeListenerIds, id), (allListenerIds) => {
271
- arrayForEach(
272
- arrayIsEmpty(listenerIds) ? collValues(allListenerIds) : listenerIds,
273
- (listenerId) => {
274
- store.delListener(listenerId);
275
- collDel(allListenerIds, listenerId);
276
- },
277
- );
278
- if (collIsEmpty(allListenerIds)) {
279
- mapSet(storeListenerIds, id);
280
- }
281
- });
282
- const setDefinition = (id, tableId) => {
283
- mapSet(tableIds, id, tableId);
284
- if (!collHas(things, id)) {
285
- mapSet(things, id, getDefaultThing());
286
- mapSet(allRowValues, id, mapNew());
287
- mapSet(allSortKeys, id, mapNew());
288
- callListeners(thingIdListeners);
289
- }
290
- };
291
- const setDefinitionAndListen = (
292
- id,
293
- tableId,
294
- onChanged,
295
- getRowValue,
296
- getSortKey,
297
- ) => {
298
- setDefinition(id, tableId);
299
- const changedRowValues = mapNew();
300
- const changedSortKeys = mapNew();
301
- const rowValues = mapGet(allRowValues, id);
302
- const sortKeys = mapGet(allSortKeys, id);
303
- const processRow = (rowId) => {
304
- const getCell = (cellId) => store.getCell(tableId, rowId, cellId);
305
- const oldRowValue = mapGet(rowValues, rowId);
306
- const newRowValue = hasRow(tableId, rowId)
307
- ? validateRowValue(getRowValue(getCell, rowId))
308
- : void 0;
309
- if (
310
- !(
311
- oldRowValue === newRowValue ||
312
- (isArray(oldRowValue) &&
313
- isArray(newRowValue) &&
314
- arrayIsEqual(oldRowValue, newRowValue))
315
- )
316
- ) {
317
- mapSet(changedRowValues, rowId, [oldRowValue, newRowValue]);
318
- }
319
- if (!isUndefined(getSortKey)) {
320
- const oldSortKey = mapGet(sortKeys, rowId);
321
- const newSortKey = hasRow(tableId, rowId)
322
- ? getSortKey(getCell, rowId)
323
- : void 0;
324
- if (oldSortKey != newSortKey) {
325
- mapSet(changedSortKeys, rowId, newSortKey);
326
- }
327
- }
328
- };
329
- const processTable = (force) => {
330
- onChanged(
331
- () => {
332
- collForEach(changedRowValues, ([, newRowValue], rowId) =>
333
- mapSet(rowValues, rowId, newRowValue),
334
- );
335
- collForEach(changedSortKeys, (newSortKey, rowId) =>
336
- mapSet(sortKeys, rowId, newSortKey),
337
- );
338
- },
339
- changedRowValues,
340
- changedSortKeys,
341
- rowValues,
342
- sortKeys,
343
- force,
344
- );
345
- collClear(changedRowValues);
346
- collClear(changedSortKeys);
347
- };
348
- mapForEach(rowValues, processRow);
349
- if (store.hasTable(tableId)) {
350
- arrayForEach(store.getRowIds(tableId), (rowId) => {
351
- if (!collHas(rowValues, rowId)) {
352
- processRow(rowId);
353
- }
354
- });
355
- }
356
- processTable(true);
357
- delStoreListeners(id);
358
- addStoreListeners(
359
- id,
360
- 0,
361
- store.addRowListener(tableId, null, (_store, _tableId, rowId) =>
362
- processRow(rowId),
363
- ),
364
- store.addTableListener(tableId, () => processTable()),
365
- );
366
- };
367
- const delDefinition = (id) => {
368
- mapSet(tableIds, id);
369
- mapSet(things, id);
370
- mapSet(allRowValues, id);
371
- mapSet(allSortKeys, id);
372
- delStoreListeners(id);
373
- callListeners(thingIdListeners);
374
- };
375
- const addThingIdsListener = (listener) =>
376
- addListener(listener, thingIdListeners);
377
- const destroy = () => mapForEach(storeListenerIds, delDefinition);
378
- return [
379
- getStore,
380
- getThingIds,
381
- forEachThing,
382
- hasThing,
383
- getTableId,
384
- getThing,
385
- setThing,
386
- setDefinition,
387
- setDefinitionAndListen,
388
- delDefinition,
389
- addThingIdsListener,
390
- destroy,
391
- addStoreListeners,
392
- delStoreListeners,
393
- ];
394
- };
395
- const getRowCellFunction = (getRowCell, defaultCellValue) =>
396
- isString(getRowCell)
397
- ? (getCell) => getCell(getRowCell)
398
- : getRowCell ?? (() => defaultCellValue ?? EMPTY_STRING);
399
- const getCreateFunction = (getFunction, initFunction) => {
400
- const thingsByStore = /* @__PURE__ */ new WeakMap();
401
- return (store) => {
402
- if (!thingsByStore.has(store)) {
403
- thingsByStore.set(store, getFunction(store));
404
- }
405
- const thing = thingsByStore.get(store);
406
- initFunction?.(thing);
407
- return thing;
408
- };
409
- };
410
-
411
- const INTEGER = /^\d+$/;
412
- const getPoolFunctions = () => {
413
- const pool = [];
414
- let nextId = 0;
415
- return [
416
- (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
417
- (id) => {
418
- if (test(INTEGER, id) && size(pool) < 1e3) {
419
- arrayPush(pool, id);
420
- }
421
- },
422
- ];
423
- };
424
-
425
- const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
426
- const leaves = [];
427
- const deep = (node, p) =>
428
- p == size(path)
429
- ? arrayPush(leaves, node)
430
- : path[p] === null
431
- ? collForEach(node, (node2) => deep(node2, p + 1))
432
- : arrayForEach([path[p], null], (id) => deep(mapGet(node, id), p + 1));
433
- deep(deepIdSet, 0);
434
- return leaves;
435
- };
436
- const getListenerFunctions = (getThing) => {
437
- let thing;
438
- const [getId, releaseId] = getPoolFunctions();
439
- const allListeners = mapNew();
440
- const addListener = (
441
- listener,
442
- idSetNode,
443
- path,
444
- pathGetters = [],
445
- extraArgsGetter = () => [],
446
- ) => {
447
- thing ??= getThing();
448
- const id = getId(1);
449
- mapSet(allListeners, id, [
450
- listener,
451
- idSetNode,
452
- path,
453
- pathGetters,
454
- extraArgsGetter,
455
- ]);
456
- setAdd(visitTree(idSetNode, path ?? [EMPTY_STRING], setNew), id);
457
- return id;
458
- };
459
- const callListeners = (idSetNode, ids, ...extraArgs) =>
460
- arrayForEach(getWildcardedLeaves(idSetNode, ids), (set) =>
461
- collForEach(set, (id) =>
462
- mapGet(allListeners, id)[0](thing, ...(ids ?? []), ...extraArgs),
463
- ),
464
- );
465
- const delListener = (id) =>
466
- ifNotUndefined(mapGet(allListeners, id), ([, idSetNode, idOrNulls]) => {
467
- visitTree(idSetNode, idOrNulls ?? [EMPTY_STRING], void 0, (idSet) => {
468
- collDel(idSet, id);
469
- return collIsEmpty(idSet) ? 1 : 0;
470
- });
471
- mapSet(allListeners, id);
472
- releaseId(id);
473
- return idOrNulls;
474
- });
475
- const callListener = (id) =>
476
- ifNotUndefined(
477
- mapGet(allListeners, id),
478
- ([listener, , path = [], pathGetters, extraArgsGetter]) => {
479
- const callWithIds = (...ids) => {
480
- const index = size(ids);
481
- index == size(path)
482
- ? listener(thing, ...ids, ...extraArgsGetter(ids))
483
- : isUndefined(path[index])
484
- ? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
485
- callWithIds(...ids, id2),
486
- )
487
- : callWithIds(...ids, path[index]);
488
- };
489
- callWithIds();
490
- },
491
- );
492
- return [addListener, callListeners, delListener, callListener];
493
- };
494
-
495
- const createCheckpoints = getCreateFunction(
496
- (store) => {
497
- let backwardIdsSize = 100;
498
- let currentId;
499
- let cellsDelta = mapNew();
500
- let valuesDelta = mapNew();
501
- let listening = 1;
502
- let nextCheckpointId;
503
- let checkpointsChanged;
504
- const checkpointIdsListeners = mapNew();
505
- const checkpointListeners = mapNew();
506
- const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
507
- () => checkpoints,
508
- );
509
- const deltas = mapNew();
510
- const labels = mapNew();
511
- const backwardIds = [];
512
- const forwardIds = [];
513
- const updateStore = (oldOrNew, checkpointId) => {
514
- listening = 0;
515
- store.transaction(() => {
516
- const [cellsDelta2, valuesDelta2] = mapGet(deltas, checkpointId);
517
- collForEach(cellsDelta2, (table, tableId) =>
518
- collForEach(table, (row, rowId) =>
519
- collForEach(row, (oldNew, cellId) =>
520
- setOrDelCell(store, tableId, rowId, cellId, oldNew[oldOrNew]),
521
- ),
522
- ),
523
- );
524
- collForEach(valuesDelta2, (oldNew, valueId) =>
525
- setOrDelValue(store, valueId, oldNew[oldOrNew]),
526
- );
527
- });
528
- listening = 1;
529
- };
530
- const clearCheckpointId = (checkpointId) => {
531
- mapSet(deltas, checkpointId);
532
- mapSet(labels, checkpointId);
533
- callListeners(checkpointListeners, [checkpointId]);
534
- };
535
- const clearCheckpointIds = (checkpointIds, to) =>
536
- arrayForEach(
537
- arrayClear(checkpointIds, to ?? size(checkpointIds)),
538
- clearCheckpointId,
539
- );
540
- const trimBackwardsIds = () =>
541
- clearCheckpointIds(backwardIds, size(backwardIds) - backwardIdsSize);
542
- const storeChanged = () =>
543
- ifNotUndefined(currentId, () => {
544
- arrayPush(backwardIds, currentId);
545
- trimBackwardsIds();
546
- clearCheckpointIds(forwardIds);
547
- currentId = void 0;
548
- checkpointsChanged = 1;
549
- });
550
- const storeUnchanged = () => {
551
- currentId = arrayPop(backwardIds);
552
- checkpointsChanged = 1;
553
- };
554
- let cellListenerId;
555
- let valueListenerId;
556
- const addCheckpointImpl = (label = EMPTY_STRING) => {
557
- if (isUndefined(currentId)) {
558
- currentId = EMPTY_STRING + nextCheckpointId++;
559
- mapSet(deltas, currentId, [cellsDelta, valuesDelta]);
560
- setCheckpoint(currentId, label);
561
- cellsDelta = mapNew();
562
- valuesDelta = mapNew();
563
- checkpointsChanged = 1;
564
- }
565
- return currentId;
566
- };
567
- const goBackwardImpl = () => {
568
- if (!arrayIsEmpty(backwardIds)) {
569
- arrayUnshift(forwardIds, addCheckpointImpl());
570
- updateStore(0, currentId);
571
- currentId = arrayPop(backwardIds);
572
- checkpointsChanged = 1;
573
- }
574
- };
575
- const goForwardImpl = () => {
576
- if (!arrayIsEmpty(forwardIds)) {
577
- arrayPush(backwardIds, currentId);
578
- currentId = arrayShift(forwardIds);
579
- updateStore(1, currentId);
580
- checkpointsChanged = 1;
581
- }
582
- };
583
- const callListenersIfChanged = () => {
584
- if (checkpointsChanged) {
585
- callListeners(checkpointIdsListeners);
586
- checkpointsChanged = 0;
587
- }
588
- };
589
- const setSize = (size2) => {
590
- backwardIdsSize = size2;
591
- trimBackwardsIds();
592
- return checkpoints;
593
- };
594
- const addCheckpoint = (label) => {
595
- const id = addCheckpointImpl(label);
596
- callListenersIfChanged();
597
- return id;
598
- };
599
- const setCheckpoint = (checkpointId, label) => {
600
- if (
601
- hasCheckpoint(checkpointId) &&
602
- mapGet(labels, checkpointId) !== label
603
- ) {
604
- mapSet(labels, checkpointId, label);
605
- callListeners(checkpointListeners, [checkpointId]);
606
- }
607
- return checkpoints;
608
- };
609
- const getStore = () => store;
610
- const getCheckpointIds = () => [
611
- [...backwardIds],
612
- currentId,
613
- [...forwardIds],
614
- ];
615
- const forEachCheckpoint = (checkpointCallback) =>
616
- mapForEach(labels, checkpointCallback);
617
- const hasCheckpoint = (checkpointId) => collHas(deltas, checkpointId);
618
- const getCheckpoint = (checkpointId) => mapGet(labels, checkpointId);
619
- const goBackward = () => {
620
- goBackwardImpl();
621
- callListenersIfChanged();
622
- return checkpoints;
623
- };
624
- const goForward = () => {
625
- goForwardImpl();
626
- callListenersIfChanged();
627
- return checkpoints;
628
- };
629
- const goTo = (checkpointId) => {
630
- const action = arrayHas(backwardIds, checkpointId)
631
- ? goBackwardImpl
632
- : arrayHas(forwardIds, checkpointId)
633
- ? goForwardImpl
634
- : null;
635
- while (!isUndefined(action) && checkpointId != currentId) {
636
- action();
637
- }
638
- callListenersIfChanged();
639
- return checkpoints;
640
- };
641
- const addCheckpointIdsListener = (listener) =>
642
- addListener(listener, checkpointIdsListeners);
643
- const addCheckpointListener = (checkpointId, listener) =>
644
- addListener(listener, checkpointListeners, [checkpointId]);
645
- const delListener = (listenerId) => {
646
- delListenerImpl(listenerId);
647
- return checkpoints;
648
- };
649
- const clear = () => {
650
- clearCheckpointIds(backwardIds);
651
- clearCheckpointIds(forwardIds);
652
- if (!isUndefined(currentId)) {
653
- clearCheckpointId(currentId);
654
- }
655
- currentId = void 0;
656
- nextCheckpointId = 0;
657
- addCheckpoint();
658
- return checkpoints;
659
- };
660
- const clearForward = () => {
661
- if (!arrayIsEmpty(forwardIds)) {
662
- clearCheckpointIds(forwardIds);
663
- callListeners(checkpointIdsListeners);
664
- }
665
- return checkpoints;
666
- };
667
- const destroy = () => {
668
- store.delListener(cellListenerId);
669
- store.delListener(valueListenerId);
670
- };
671
- const getListenerStats = () => ({
672
- checkpointIds: collSize2(checkpointIdsListeners),
673
- checkpoint: collSize2(checkpointListeners),
674
- });
675
- const _registerListeners = () => {
676
- cellListenerId = store.addCellListener(
677
- null,
678
- null,
679
- null,
680
- (_store, tableId, rowId, cellId, newCell, oldCell) => {
681
- if (listening) {
682
- storeChanged();
683
- const table = mapEnsure(cellsDelta, tableId, mapNew);
684
- const row = mapEnsure(table, rowId, mapNew);
685
- const oldNew = mapEnsure(row, cellId, () => [oldCell, void 0]);
686
- oldNew[1] = newCell;
687
- if (
688
- oldNew[0] === newCell &&
689
- collIsEmpty(mapSet(row, cellId)) &&
690
- collIsEmpty(mapSet(table, rowId)) &&
691
- collIsEmpty(mapSet(cellsDelta, tableId))
692
- ) {
693
- storeUnchanged();
694
- }
695
- callListenersIfChanged();
696
- }
697
- },
698
- );
699
- valueListenerId = store.addValueListener(
700
- null,
701
- (_store, valueId, newValue, oldValue) => {
702
- if (listening) {
703
- storeChanged();
704
- const oldNew = mapEnsure(valuesDelta, valueId, () => [
705
- oldValue,
706
- void 0,
707
- ]);
708
- oldNew[1] = newValue;
709
- if (
710
- oldNew[0] === newValue &&
711
- collIsEmpty(mapSet(valuesDelta, valueId))
712
- ) {
713
- storeUnchanged();
714
- }
715
- callListenersIfChanged();
716
- }
717
- },
718
- );
719
- };
720
- const checkpoints = {
721
- setSize,
722
- addCheckpoint,
723
- setCheckpoint,
724
- getStore,
725
- getCheckpointIds,
726
- forEachCheckpoint,
727
- hasCheckpoint,
728
- getCheckpoint,
729
- goBackward,
730
- goForward,
731
- goTo,
732
- addCheckpointIdsListener,
733
- addCheckpointListener,
734
- delListener,
735
- clear,
736
- clearForward,
737
- destroy,
738
- getListenerStats,
739
- _registerListeners,
740
- };
741
- return objFreeze(checkpoints.clear());
742
- },
743
- (checkpoints) => checkpoints._registerListeners(),
744
- );
745
-
746
- const MASK6 = 63;
747
- const ENCODE =
748
- '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
749
- EMPTY_STRING,
750
- );
751
- const DECODE = mapNew(arrayMap(ENCODE, (char, index) => [char, index]));
752
- const encode = (num) => ENCODE[num & MASK6];
753
- const decode = (str, pos) => mapGet(DECODE, str[pos]) ?? 0;
754
-
755
- const defaultSorter = (sortKey1, sortKey2) =>
756
- (sortKey1 ?? 0) < (sortKey2 ?? 0) ? -1 : 1;
757
- const getUniqueId = (length = 16) =>
758
- arrayReduce(
759
- crypto.getRandomValues(new Uint8Array(length)),
760
- (uniqueId, number) => uniqueId + encode(number),
761
- '',
762
- );
763
-
764
- const createIndexes = getCreateFunction((store) => {
765
- const sliceIdsListeners = mapNew();
766
- const sliceRowIdsListeners = mapNew();
767
- const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
768
- () => indexes,
769
- );
770
- const [
771
- getStore,
772
- getIndexIds,
773
- forEachIndexImpl,
774
- hasIndex,
775
- getTableId,
776
- getIndex,
777
- setIndex,
778
- ,
779
- setDefinitionAndListen,
780
- delDefinition,
781
- addIndexIdsListener,
782
- destroy,
783
- ] = getDefinableFunctions(
784
- store,
785
- mapNew,
786
- (value) =>
787
- isUndefined(value)
788
- ? EMPTY_STRING
789
- : isArray(value)
790
- ? arrayMap(value, id)
791
- : id(value),
792
- addListener,
793
- callListeners,
794
- );
795
- const hasSlice = (indexId, sliceId) => collHas(getIndex(indexId), sliceId);
796
- const setIndexDefinition = (
797
- indexId,
798
- tableId,
799
- getSliceIdOrIds,
800
- getSortKey,
801
- sliceIdSorter,
802
- rowIdSorter = defaultSorter,
803
- ) => {
804
- const sliceIdArraySorter = isUndefined(sliceIdSorter)
805
- ? void 0
806
- : ([id1], [id2]) => sliceIdSorter(id1, id2);
807
- setDefinitionAndListen(
808
- indexId,
809
- tableId,
810
- (change, changedSliceIds, changedSortKeys, sliceIds, sortKeys, force) => {
811
- let sliceIdsChanged = 0;
812
- const changedSlices = setNew();
813
- const unsortedSlices = setNew();
814
- const index = getIndex(indexId);
815
- collForEach(
816
- changedSliceIds,
817
- ([oldSliceIdOrIds, newSliceIdOrIds], rowId) => {
818
- const oldSliceIds = setNew(oldSliceIdOrIds);
819
- const newSliceIds = setNew(newSliceIdOrIds);
820
- collForEach(oldSliceIds, (oldSliceId) =>
821
- collDel(newSliceIds, oldSliceId)
822
- ? collDel(oldSliceIds, oldSliceId)
823
- : 0,
824
- );
825
- collForEach(oldSliceIds, (oldSliceId) => {
826
- setAdd(changedSlices, oldSliceId);
827
- ifNotUndefined(mapGet(index, oldSliceId), (oldSlice) => {
828
- collDel(oldSlice, rowId);
829
- if (collIsEmpty(oldSlice)) {
830
- mapSet(index, oldSliceId);
831
- sliceIdsChanged = 1;
832
- }
833
- });
834
- });
835
- collForEach(newSliceIds, (newSliceId) => {
836
- setAdd(changedSlices, newSliceId);
837
- if (!collHas(index, newSliceId)) {
838
- mapSet(index, newSliceId, setNew());
839
- sliceIdsChanged = 1;
840
- }
841
- setAdd(mapGet(index, newSliceId), rowId);
842
- if (!isUndefined(getSortKey)) {
843
- setAdd(unsortedSlices, newSliceId);
844
- }
845
- });
846
- },
847
- );
848
- change();
849
- if (!collIsEmpty(sortKeys)) {
850
- if (force) {
851
- mapForEach(index, (sliceId) => setAdd(unsortedSlices, sliceId));
852
- } else {
853
- mapForEach(changedSortKeys, (rowId) =>
854
- ifNotUndefined(mapGet(sliceIds, rowId), (sliceId) =>
855
- setAdd(unsortedSlices, sliceId),
856
- ),
857
- );
858
- }
859
- collForEach(unsortedSlices, (sliceId) => {
860
- const rowIdArraySorter = (rowId1, rowId2) =>
861
- rowIdSorter(
862
- mapGet(sortKeys, rowId1),
863
- mapGet(sortKeys, rowId2),
864
- sliceId,
865
- );
866
- const sliceArray = [...mapGet(index, sliceId)];
867
- if (!arrayIsSorted(sliceArray, rowIdArraySorter)) {
868
- mapSet(
869
- index,
870
- sliceId,
871
- setNew(arraySort(sliceArray, rowIdArraySorter)),
872
- );
873
- setAdd(changedSlices, sliceId);
874
- }
875
- });
876
- }
877
- if (sliceIdsChanged || force) {
878
- if (!isUndefined(sliceIdArraySorter)) {
879
- const indexArray = [...index];
880
- if (!arrayIsSorted(indexArray, sliceIdArraySorter)) {
881
- setIndex(
882
- indexId,
883
- mapNew(arraySort(indexArray, sliceIdArraySorter)),
884
- );
885
- sliceIdsChanged = 1;
886
- }
887
- }
888
- }
889
- if (sliceIdsChanged) {
890
- callListeners(sliceIdsListeners, [indexId]);
891
- }
892
- collForEach(changedSlices, (sliceId) =>
893
- callListeners(sliceRowIdsListeners, [indexId, sliceId]),
894
- );
895
- },
896
- getRowCellFunction(getSliceIdOrIds),
897
- ifNotUndefined(getSortKey, getRowCellFunction),
898
- );
899
- return indexes;
900
- };
901
- const forEachIndex = (indexCallback) =>
902
- forEachIndexImpl((indexId, slices) =>
903
- indexCallback(indexId, (sliceCallback) =>
904
- forEachSliceImpl(indexId, sliceCallback, slices),
905
- ),
906
- );
907
- const forEachSlice = (indexId, sliceCallback) =>
908
- forEachSliceImpl(indexId, sliceCallback, getIndex(indexId));
909
- const forEachSliceImpl = (indexId, sliceCallback, slices) => {
910
- const tableId = getTableId(indexId);
911
- collForEach(slices, (rowIds, sliceId) =>
912
- sliceCallback(sliceId, (rowCallback) =>
913
- collForEach(rowIds, (rowId) =>
914
- rowCallback(rowId, (cellCallback) =>
915
- store.forEachCell(tableId, rowId, cellCallback),
916
- ),
917
- ),
918
- ),
919
- );
920
- };
921
- const delIndexDefinition = (indexId) => {
922
- delDefinition(indexId);
923
- return indexes;
924
- };
925
- const getSliceIds = (indexId) => mapKeys(getIndex(indexId));
926
- const getSliceRowIds = (indexId, sliceId) =>
927
- collValues(mapGet(getIndex(indexId), sliceId));
928
- const addSliceIdsListener = (indexId, listener) =>
929
- addListener(listener, sliceIdsListeners, [indexId]);
930
- const addSliceRowIdsListener = (indexId, sliceId, listener) =>
931
- addListener(listener, sliceRowIdsListeners, [indexId, sliceId]);
932
- const delListener = (listenerId) => {
933
- delListenerImpl(listenerId);
934
- return indexes;
935
- };
936
- const getListenerStats = () => ({
937
- sliceIds: collSize2(sliceIdsListeners),
938
- sliceRowIds: collSize3(sliceRowIdsListeners),
939
- });
940
- const indexes = {
941
- setIndexDefinition,
942
- delIndexDefinition,
943
- getStore,
944
- getIndexIds,
945
- forEachIndex,
946
- forEachSlice,
947
- hasIndex,
948
- hasSlice,
949
- getTableId,
950
- getSliceIds,
951
- getSliceRowIds,
952
- addIndexIdsListener,
953
- addSliceIdsListener,
954
- addSliceRowIdsListener,
955
- delListener,
956
- destroy,
957
- getListenerStats,
958
- };
959
- return objFreeze(indexes);
960
- });
961
-
962
- const numericAggregators = mapNew([
963
- [
964
- AVG,
965
- [
966
- (numbers, length) => arraySum(numbers) / length,
967
- (metric, add, length) => metric + (add - metric) / (length + 1),
968
- (metric, remove, length) => metric + (metric - remove) / (length - 1),
969
- (metric, add, remove, length) => metric + (add - remove) / length,
970
- ],
971
- ],
972
- [
973
- MAX,
974
- [
975
- (numbers) => mathMax(...numbers),
976
- (metric, add) => mathMax(add, metric),
977
- (metric, remove) => (remove == metric ? void 0 : metric),
978
- (metric, add, remove) =>
979
- remove == metric ? void 0 : mathMax(add, metric),
980
- ],
981
- ],
982
- [
983
- MIN,
984
- [
985
- (numbers) => mathMin(...numbers),
986
- (metric, add) => mathMin(add, metric),
987
- (metric, remove) => (remove == metric ? void 0 : metric),
988
- (metric, add, remove) =>
989
- remove == metric ? void 0 : mathMin(add, metric),
990
- ],
991
- ],
992
- [
993
- SUM,
994
- [
995
- (numbers) => arraySum(numbers),
996
- (metric, add) => metric + add,
997
- (metric, remove) => metric - remove,
998
- (metric, add, remove) => metric - remove + add,
999
- ],
1000
- ],
1001
- ]);
1002
- const getAggregateValue = (
1003
- aggregateValue,
1004
- oldLength,
1005
- newValues,
1006
- changedValues,
1007
- aggregators,
1008
- force = false,
1009
- ) => {
1010
- if (collIsEmpty(newValues)) {
1011
- return void 0;
1012
- }
1013
- const [aggregate, aggregateAdd, aggregateRemove, aggregateReplace] =
1014
- aggregators;
1015
- force ||= isUndefined(aggregateValue);
1016
- collForEach(changedValues, ([oldValue, newValue]) => {
1017
- if (!force) {
1018
- aggregateValue = isUndefined(oldValue)
1019
- ? aggregateAdd?.(aggregateValue, newValue, oldLength++)
1020
- : isUndefined(newValue)
1021
- ? aggregateRemove?.(aggregateValue, oldValue, oldLength--)
1022
- : aggregateReplace?.(aggregateValue, newValue, oldValue, oldLength);
1023
- force ||= isUndefined(aggregateValue);
1024
- }
1025
- });
1026
- return force
1027
- ? aggregate(collValues(newValues), collSize(newValues))
1028
- : aggregateValue;
1029
- };
1030
-
1031
- const createMetrics = getCreateFunction((store) => {
1032
- const metricListeners = mapNew();
1033
- const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
1034
- () => metrics,
1035
- );
1036
- const [
1037
- getStore,
1038
- getMetricIds,
1039
- forEachMetric,
1040
- hasMetric,
1041
- getTableId,
1042
- getMetric,
1043
- setMetric,
1044
- ,
1045
- setDefinitionAndListen,
1046
- delDefinition,
1047
- addMetricIdsListener,
1048
- destroy,
1049
- ] = getDefinableFunctions(
1050
- store,
1051
- getUndefined,
1052
- (value) =>
1053
- isNaN(value) ||
1054
- isUndefined(value) ||
1055
- value === true ||
1056
- value === false ||
1057
- value === EMPTY_STRING
1058
- ? void 0
1059
- : value * 1,
1060
- addListener,
1061
- callListeners,
1062
- );
1063
- const setMetricDefinition = (
1064
- metricId,
1065
- tableId,
1066
- aggregate,
1067
- getNumber,
1068
- aggregateAdd,
1069
- aggregateRemove,
1070
- aggregateReplace,
1071
- ) => {
1072
- const aggregators = isFunction(aggregate)
1073
- ? [aggregate, aggregateAdd, aggregateRemove, aggregateReplace]
1074
- : mapGet(numericAggregators, aggregate) ??
1075
- mapGet(numericAggregators, SUM);
1076
- setDefinitionAndListen(
1077
- metricId,
1078
- tableId,
1079
- (change, changedNumbers, _changedSortKeys, numbers, _sortKeys, force) => {
1080
- const oldMetric = getMetric(metricId);
1081
- const oldLength = collSize(numbers);
1082
- force ||= isUndefined(oldMetric);
1083
- change();
1084
- let newMetric = getAggregateValue(
1085
- oldMetric,
1086
- oldLength,
1087
- numbers,
1088
- changedNumbers,
1089
- aggregators,
1090
- force,
1091
- );
1092
- if (!isFiniteNumber(newMetric)) {
1093
- newMetric = void 0;
1094
- }
1095
- if (newMetric != oldMetric) {
1096
- setMetric(metricId, newMetric);
1097
- callListeners(metricListeners, [metricId], newMetric, oldMetric);
1098
- }
1099
- },
1100
- getRowCellFunction(getNumber, 1),
1101
- );
1102
- return metrics;
1103
- };
1104
- const delMetricDefinition = (metricId) => {
1105
- delDefinition(metricId);
1106
- return metrics;
1107
- };
1108
- const addMetricListener = (metricId, listener) =>
1109
- addListener(listener, metricListeners, [metricId]);
1110
- const delListener = (listenerId) => {
1111
- delListenerImpl(listenerId);
1112
- return metrics;
1113
- };
1114
- const getListenerStats = () => ({metric: collSize2(metricListeners)});
1115
- const metrics = {
1116
- setMetricDefinition,
1117
- delMetricDefinition,
1118
- getStore,
1119
- getMetricIds,
1120
- forEachMetric,
1121
- hasMetric,
1122
- getTableId,
1123
- getMetric,
1124
- addMetricIdsListener,
1125
- addMetricListener,
1126
- delListener,
1127
- destroy,
1128
- getListenerStats,
1129
- };
1130
- return objFreeze(metrics);
1131
- });
1132
-
1133
- const scheduleRunning = mapNew();
1134
- const scheduleActions = mapNew();
1135
- const getStoreFunctions = (supportedStoreType = 1, store) =>
1136
- supportedStoreType > 1 && 'merge' in store
1137
- ? [
1138
- 1,
1139
- store.getMergeableContent,
1140
- store.getTransactionMergeableChanges,
1141
- ([[changedTables], [changedValues]]) =>
1142
- !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
1143
- store.setDefaultContent,
1144
- ]
1145
- : supportedStoreType != 2
1146
- ? [
1147
- 0,
1148
- store.getContent,
1149
- store.getTransactionChanges,
1150
- ([changedTables, changedValues]) =>
1151
- !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
1152
- store.setContent,
1153
- ]
1154
- : /* istanbul ignore next */
1155
- 0;
1156
- const createCustomPersister = (
1157
- store,
1158
- getPersisted,
1159
- setPersisted,
1160
- addPersisterListener,
1161
- delPersisterListener,
1162
- onIgnoredError,
1163
- supportedStoreType,
1164
- extra = {},
1165
- scheduleId = [],
1166
- ) => {
1167
- let loadSave = 0;
1168
- let loads = 0;
1169
- let saves = 0;
1170
- let action;
1171
- let autoLoadHandle;
1172
- let autoSaveListenerId;
1173
- mapEnsure(scheduleRunning, scheduleId, () => 0);
1174
- mapEnsure(scheduleActions, scheduleId, () => []);
1175
- const [
1176
- isMergeableStore,
1177
- getContent,
1178
- getChanges,
1179
- hasChanges,
1180
- setDefaultContent,
1181
- ] = getStoreFunctions(supportedStoreType, store);
1182
- const run = async () => {
1183
- /* istanbul ignore else */
1184
- if (!mapGet(scheduleRunning, scheduleId)) {
1185
- mapSet(scheduleRunning, scheduleId, 1);
1186
- while (
1187
- !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
1188
- ) {
1189
- try {
1190
- await action();
1191
- } catch (error) {
1192
- /* istanbul ignore next */
1193
- onIgnoredError?.(error);
1194
- }
1195
- }
1196
- mapSet(scheduleRunning, scheduleId, 0);
1197
- }
1198
- };
1199
- const setContentOrChanges = (contentOrChanges) => {
1200
- (isMergeableStore && isArray(contentOrChanges?.[0])
1201
- ? contentOrChanges?.[2] === 1
1202
- ? store.applyMergeableChanges
1203
- : store.setMergeableContent
1204
- : contentOrChanges?.[2] === 1
1205
- ? store.applyChanges
1206
- : store.setContent)(contentOrChanges);
1207
- };
1208
- const load = async (initialContent) => {
1209
- /* istanbul ignore else */
1210
- if (loadSave != 2) {
1211
- loadSave = 1;
1212
- {
1213
- loads++;
1214
- }
1215
- await schedule(async () => {
1216
- try {
1217
- setContentOrChanges(await getPersisted());
1218
- } catch (error) {
1219
- onIgnoredError?.(error);
1220
- if (initialContent) {
1221
- setDefaultContent(initialContent);
1222
- }
1223
- }
1224
- loadSave = 0;
1225
- });
1226
- }
1227
- return persister;
1228
- };
1229
- const startAutoLoad = async (initialContent) => {
1230
- await stopAutoLoad().load(initialContent);
1231
- autoLoadHandle = addPersisterListener(async (content, changes) => {
1232
- if (changes || content) {
1233
- /* istanbul ignore else */
1234
- if (loadSave != 2) {
1235
- loadSave = 1;
1236
- {
1237
- loads++;
1238
- }
1239
- setContentOrChanges(changes ?? content);
1240
- loadSave = 0;
1241
- }
1242
- } else {
1243
- await load();
1244
- }
1245
- });
1246
- return persister;
1247
- };
1248
- const stopAutoLoad = () => {
1249
- if (autoLoadHandle) {
1250
- delPersisterListener(autoLoadHandle);
1251
- autoLoadHandle = void 0;
1252
- }
1253
- return persister;
1254
- };
1255
- const isAutoLoading = () => !isUndefined(autoLoadHandle);
1256
- const save = async (changes) => {
1257
- /* istanbul ignore else */
1258
- if (loadSave != 1) {
1259
- loadSave = 2;
1260
- {
1261
- saves++;
1262
- }
1263
- await schedule(async () => {
1264
- try {
1265
- await setPersisted(getContent, changes);
1266
- } catch (error) {
1267
- /* istanbul ignore next */
1268
- onIgnoredError?.(error);
1269
- }
1270
- loadSave = 0;
1271
- });
1272
- }
1273
- return persister;
1274
- };
1275
- const startAutoSave = async () => {
1276
- await stopAutoSave().save();
1277
- autoSaveListenerId = store.addDidFinishTransactionListener(() => {
1278
- const changes = getChanges();
1279
- if (hasChanges(changes)) {
1280
- save(changes);
1281
- }
1282
- });
1283
- return persister;
1284
- };
1285
- const stopAutoSave = () => {
1286
- ifNotUndefined(autoSaveListenerId, store.delListener);
1287
- autoSaveListenerId = void 0;
1288
- return persister;
1289
- };
1290
- const isAutoSaving = () => !isUndefined(autoSaveListenerId);
1291
- const schedule = async (...actions) => {
1292
- arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
1293
- await run();
1294
- return persister;
1295
- };
1296
- const getStore = () => store;
1297
- const destroy = () => stopAutoLoad().stopAutoSave();
1298
- const getStats = () => ({loads, saves});
1299
- const persister = {
1300
- load,
1301
- startAutoLoad,
1302
- stopAutoLoad,
1303
- isAutoLoading,
1304
- save,
1305
- startAutoSave,
1306
- stopAutoSave,
1307
- isAutoSaving,
1308
- schedule,
1309
- getStore,
1310
- destroy,
1311
- getStats,
1312
- ...extra,
1313
- };
1314
- return objFreeze(persister);
1315
- };
1316
-
1317
- const textEncoder = new globalThis.TextEncoder();
1318
- const getHash = (value) => {
1319
- let hash = 2166136261;
1320
- arrayForEach(textEncoder.encode(value), (char) => {
1321
- hash ^= char;
1322
- hash +=
1323
- (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
1324
- });
1325
- return hash >>> 0;
1326
- };
1327
-
1328
- const stampCloneWithHash = ([value, time, hash]) => [value, time, hash];
1329
- const stampCloneWithoutHash = ([value, time]) => newStamp(value, time);
1330
- const newStamp = (value, time) => (time ? [value, time] : [value]);
1331
- const getStampHash = (stamp) => stamp[2];
1332
- const hashIdAndHash = (id, hash) => getHash(id + ':' + hash);
1333
- const replaceTimeHash = (oldTime, newTime) =>
1334
- newTime > oldTime ? (oldTime ? getHash(oldTime) : 0) ^ getHash(newTime) : 0;
1335
- const getLatestTime = (time1, time2) =>
1336
- ((time1 ?? '') > (time2 ?? '') ? time1 : time2) ?? '';
1337
- const stampUpdate = (stamp, hash, time) => {
1338
- stamp[2] = hash >>> 0;
1339
- if (time > stamp[1]) {
1340
- stamp[1] = time;
1341
- }
1342
- };
1343
- const stampNewObj = (time = EMPTY_STRING) => newStamp(objNew(), time);
1344
- const stampNewMap = (time = EMPTY_STRING) => [mapNew(), time, 0];
1345
- const stampMapToObjWithHash = (
1346
- [map, time, hash],
1347
- mapper = stampCloneWithHash,
1348
- ) => [mapToObj(map, mapper), time, hash];
1349
- const stampMapToObjWithoutHash = (
1350
- [map, time],
1351
- mapper = stampCloneWithoutHash,
1352
- ) => newStamp(mapToObj(map, mapper), time);
1353
- const stampValidate = (stamp, validateThing) =>
1354
- isArray(stamp) &&
1355
- size(stamp) == 3 &&
1356
- isString(stamp[1]) &&
1357
- getTypeOf(stamp[2]) == NUMBER &&
1358
- isFiniteNumber(stamp[2]) &&
1359
- validateThing(stamp[0]);
1360
-
1361
- const RESPONSE = 0;
1362
- const GET_CONTENT_HASHES = 1;
1363
- const CONTENT_HASHES = 2;
1364
- const CONTENT_DIFF = 3;
1365
- const GET_TABLE_DIFF = 4;
1366
- const GET_ROW_DIFF = 5;
1367
- const GET_CELL_DIFF = 6;
1368
- const GET_VALUE_DIFF = 7;
1369
- const createCustomSynchronizer = (
1370
- store,
1371
- send,
1372
- onReceive,
1373
- destroyImpl,
1374
- requestTimeoutSeconds,
1375
- onIgnoredError,
1376
- extra = {},
1377
- ) => {
1378
- let persisterListener;
1379
- let sends = 0;
1380
- let receives = 0;
1381
- const pendingRequests = mapNew();
1382
- onReceive((fromClientId, requestId, messageType, messageBody) => {
1383
- {
1384
- receives++;
1385
- }
1386
- if (messageType == RESPONSE) {
1387
- ifNotUndefined(
1388
- mapGet(pendingRequests, requestId),
1389
- ([toClientId, handleResponse]) =>
1390
- isUndefined(toClientId) || toClientId == fromClientId
1391
- ? handleResponse(messageBody, fromClientId)
1392
- : /* istanbul ignore next */
1393
- 0,
1394
- );
1395
- } else if (messageType == CONTENT_HASHES && persister.isAutoLoading()) {
1396
- getChangesFromOtherStore(fromClientId, messageBody).then((changes) => {
1397
- persisterListener?.(void 0, changes);
1398
- });
1399
- } else if (messageType == CONTENT_DIFF && persister.isAutoLoading()) {
1400
- persisterListener?.(void 0, messageBody);
1401
- } else {
1402
- ifNotUndefined(
1403
- messageType == GET_CONTENT_HASHES && persister.isAutoSaving()
1404
- ? store.getMergeableContentHashes()
1405
- : messageType == GET_TABLE_DIFF
1406
- ? store.getMergeableTableDiff(messageBody)
1407
- : messageType == GET_ROW_DIFF
1408
- ? store.getMergeableRowDiff(messageBody)
1409
- : messageType == GET_CELL_DIFF
1410
- ? store.getMergeableCellDiff(messageBody)
1411
- : messageType == GET_VALUE_DIFF
1412
- ? store.getMergeableValueDiff(messageBody)
1413
- : void 0,
1414
- (response) => {
1415
- {
1416
- sends++;
1417
- }
1418
- send(fromClientId, requestId, RESPONSE, response);
1419
- },
1420
- );
1421
- }
1422
- });
1423
- const request = async (toClientId, messageType, messageBody = EMPTY_STRING) =>
1424
- promiseNew((resolve, reject) => {
1425
- const requestId = getUniqueId();
1426
- const timeout = setTimeout(() => {
1427
- collDel(pendingRequests, requestId);
1428
- reject(
1429
- `No response from ${toClientId ?? 'anyone'} to '${messageType}'`,
1430
- );
1431
- }, requestTimeoutSeconds * 1e3);
1432
- mapSet(pendingRequests, requestId, [
1433
- toClientId,
1434
- (response, fromClientId) => {
1435
- clearTimeout(timeout);
1436
- collDel(pendingRequests, requestId);
1437
- resolve([response, fromClientId]);
1438
- },
1439
- ]);
1440
- {
1441
- sends++;
1442
- }
1443
- send(toClientId, requestId, messageType, messageBody);
1444
- });
1445
- const mergeTablesStamps = (tablesStamp, [tableStamps2, tablesTime2]) => {
1446
- objForEach(tableStamps2, ([rowStamps2, tableTime2], tableId) => {
1447
- const tableStamp = objEnsure(tablesStamp[0], tableId, stampNewObj);
1448
- objForEach(rowStamps2, ([cellStamps2, rowTime2], rowId) => {
1449
- const rowStamp = objEnsure(tableStamp[0], rowId, stampNewObj);
1450
- objForEach(
1451
- cellStamps2,
1452
- ([cell2, cellTime2], cellId) =>
1453
- (rowStamp[0][cellId] = newStamp(cell2, cellTime2)),
1454
- );
1455
- rowStamp[1] = getLatestTime(rowStamp[1], rowTime2);
1456
- });
1457
- tableStamp[1] = getLatestTime(tableStamp[1], tableTime2);
1458
- });
1459
- tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
1460
- };
1461
- const getChangesFromOtherStore = async (
1462
- otherClientId = null,
1463
- otherContentHashes,
1464
- ) => {
1465
- if (isUndefined(otherContentHashes)) {
1466
- [otherContentHashes, otherClientId] = await request(
1467
- otherClientId,
1468
- GET_CONTENT_HASHES,
1469
- );
1470
- }
1471
- const [otherTablesHash, otherValuesHash] = otherContentHashes;
1472
- const [tablesHash, valuesHash] = store.getMergeableContentHashes();
1473
- let tablesChanges = stampNewObj();
1474
- if (tablesHash != otherTablesHash) {
1475
- const [newTables, differentTableHashes] = (
1476
- await request(
1477
- otherClientId,
1478
- GET_TABLE_DIFF,
1479
- store.getMergeableTableHashes(),
1480
- )
1481
- )[0];
1482
- tablesChanges = newTables;
1483
- if (!objIsEmpty(differentTableHashes)) {
1484
- const [newRows, differentRowHashes] = (
1485
- await request(
1486
- otherClientId,
1487
- GET_ROW_DIFF,
1488
- store.getMergeableRowHashes(differentTableHashes),
1489
- )
1490
- )[0];
1491
- mergeTablesStamps(tablesChanges, newRows);
1492
- if (!objIsEmpty(differentRowHashes)) {
1493
- const newCells = (
1494
- await request(
1495
- otherClientId,
1496
- GET_CELL_DIFF,
1497
- store.getMergeableCellHashes(differentRowHashes),
1498
- )
1499
- )[0];
1500
- mergeTablesStamps(tablesChanges, newCells);
1501
- }
1502
- }
1503
- }
1504
- return [
1505
- tablesChanges,
1506
- valuesHash == otherValuesHash
1507
- ? stampNewObj()
1508
- : (
1509
- await request(
1510
- otherClientId,
1511
- GET_VALUE_DIFF,
1512
- store.getMergeableValuesHashes(),
1513
- )
1514
- )[0],
1515
- 1,
1516
- ];
1517
- };
1518
- const getPersisted = async () => {
1519
- const changes = await getChangesFromOtherStore();
1520
- return !objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0])
1521
- ? changes
1522
- : void 0;
1523
- };
1524
- const setPersisted = async (_getContent, changes) => {
1525
- {
1526
- sends++;
1527
- }
1528
- if (changes) {
1529
- send(null, null, CONTENT_DIFF, changes);
1530
- } else {
1531
- send(null, null, CONTENT_HASHES, store.getMergeableContentHashes());
1532
- }
1533
- };
1534
- const addPersisterListener = (listener) => (persisterListener = listener);
1535
- const delPersisterListener = () => (persisterListener = void 0);
1536
- const startSync = async (initialContent) =>
1537
- await (await persister.startAutoLoad(initialContent)).startAutoSave();
1538
- const stopSync = () => persister.stopAutoLoad().stopAutoSave();
1539
- const destroy = () => {
1540
- destroyImpl();
1541
- return persister.stopSync();
1542
- };
1543
- const getSynchronizerStats = () => ({sends, receives});
1544
- const persister = createCustomPersister(
1545
- store,
1546
- getPersisted,
1547
- setPersisted,
1548
- addPersisterListener,
1549
- delPersisterListener,
1550
- onIgnoredError,
1551
- 2,
1552
- {startSync, stopSync, destroy, getSynchronizerStats, ...extra},
1553
- );
1554
- return persister;
1555
- };
1556
-
1557
- const createQueries = getCreateFunction((store) => {
1558
- const createStore = store.createStore;
1559
- const preStore = createStore();
1560
- const resultStore = createStore();
1561
- const preStoreListenerIds = mapNew();
1562
- const {
1563
- addListener,
1564
- callListeners,
1565
- delListener: delListenerImpl,
1566
- } = resultStore;
1567
- const [
1568
- getStore,
1569
- getQueryIds,
1570
- forEachQuery,
1571
- hasQuery,
1572
- getTableId,
1573
- ,
1574
- ,
1575
- setDefinition,
1576
- ,
1577
- delDefinition,
1578
- addQueryIdsListenerImpl,
1579
- destroy,
1580
- addStoreListeners,
1581
- delStoreListeners,
1582
- ] = getDefinableFunctions(
1583
- store,
1584
- () => true,
1585
- getUndefined,
1586
- addListener,
1587
- callListeners,
1588
- );
1589
- const addPreStoreListener = (preStore2, queryId, ...listenerIds) =>
1590
- arrayForEach(listenerIds, (listenerId) =>
1591
- setAdd(
1592
- mapEnsure(
1593
- mapEnsure(preStoreListenerIds, queryId, mapNew),
1594
- preStore2,
1595
- setNew,
1596
- ),
1597
- listenerId,
1598
- ),
1599
- );
1600
- const resetPreStores = (queryId) => {
1601
- ifNotUndefined(
1602
- mapGet(preStoreListenerIds, queryId),
1603
- (queryPreStoreListenerIds) => {
1604
- mapForEach(queryPreStoreListenerIds, (preStore2, listenerIds) =>
1605
- collForEach(listenerIds, (listenerId) =>
1606
- preStore2.delListener(listenerId),
1607
- ),
1608
- );
1609
- collClear(queryPreStoreListenerIds);
1610
- },
1611
- );
1612
- arrayForEach([resultStore, preStore], (store2) => store2.delTable(queryId));
1613
- };
1614
- const synchronizeTransactions = (queryId, fromStore, toStore) =>
1615
- addPreStoreListener(
1616
- fromStore,
1617
- queryId,
1618
- fromStore.addStartTransactionListener(toStore.startTransaction),
1619
- fromStore.addDidFinishTransactionListener(() =>
1620
- toStore.finishTransaction(),
1621
- ),
1622
- );
1623
- const setQueryDefinition = (queryId, tableId, build) => {
1624
- setDefinition(queryId, tableId);
1625
- resetPreStores(queryId);
1626
- const selectEntries = [];
1627
- const joinEntries = [[null, [tableId, null, null, [], mapNew()]]];
1628
- const wheres = [];
1629
- const groupEntries = [];
1630
- const havings = [];
1631
- const select = (arg1, arg2) => {
1632
- const selectEntry = isFunction(arg1)
1633
- ? [size(selectEntries) + EMPTY_STRING, arg1]
1634
- : [
1635
- isUndefined(arg2) ? arg1 : arg2,
1636
- (getTableCell) => getTableCell(arg1, arg2),
1637
- ];
1638
- arrayPush(selectEntries, selectEntry);
1639
- return {as: (selectedCellId) => (selectEntry[0] = selectedCellId)};
1640
- };
1641
- const join = (joinedTableId, arg1, arg2) => {
1642
- const fromIntermediateJoinedTableId =
1643
- isUndefined(arg2) || isFunction(arg1) ? null : arg1;
1644
- const onArg = isUndefined(fromIntermediateJoinedTableId) ? arg1 : arg2;
1645
- const joinEntry = [
1646
- joinedTableId,
1647
- [
1648
- joinedTableId,
1649
- fromIntermediateJoinedTableId,
1650
- isFunction(onArg) ? onArg : (getCell) => getCell(onArg),
1651
- [],
1652
- mapNew(),
1653
- ],
1654
- ];
1655
- arrayPush(joinEntries, joinEntry);
1656
- return {as: (joinedTableId2) => (joinEntry[0] = joinedTableId2)};
1657
- };
1658
- const where = (arg1, arg2, arg3) =>
1659
- arrayPush(
1660
- wheres,
1661
- isFunction(arg1)
1662
- ? arg1
1663
- : isUndefined(arg3)
1664
- ? (getTableCell) => getTableCell(arg1) === arg2
1665
- : (getTableCell) => getTableCell(arg1, arg2) === arg3,
1666
- );
1667
- const group = (
1668
- selectedCellId,
1669
- aggregate,
1670
- aggregateAdd,
1671
- aggregateRemove,
1672
- aggregateReplace,
1673
- ) => {
1674
- const groupEntry = [
1675
- selectedCellId,
1676
- [
1677
- selectedCellId,
1678
- isFunction(aggregate)
1679
- ? [aggregate, aggregateAdd, aggregateRemove, aggregateReplace]
1680
- : mapGet(numericAggregators, aggregate) ?? [
1681
- (_cells, length) => length,
1682
- ],
1683
- ],
1684
- ];
1685
- arrayPush(groupEntries, groupEntry);
1686
- return {as: (groupedCellId) => (groupEntry[0] = groupedCellId)};
1687
- };
1688
- const having = (arg1, arg2) =>
1689
- arrayPush(
1690
- havings,
1691
- isFunction(arg1)
1692
- ? arg1
1693
- : (getSelectedOrGroupedCell) =>
1694
- getSelectedOrGroupedCell(arg1) === arg2,
1695
- );
1696
- build({select, join, where, group, having});
1697
- const selects = mapNew(selectEntries);
1698
- if (collIsEmpty(selects)) {
1699
- return queries;
1700
- }
1701
- const joins = mapNew(joinEntries);
1702
- mapForEach(joins, (asTableId, [, fromAsTableId]) =>
1703
- ifNotUndefined(mapGet(joins, fromAsTableId), ({3: toAsTableIds}) =>
1704
- isUndefined(asTableId) ? 0 : arrayPush(toAsTableIds, asTableId),
1705
- ),
1706
- );
1707
- const groups = mapNew(groupEntries);
1708
- let selectJoinWhereStore = preStore;
1709
- if (collIsEmpty(groups) && arrayIsEmpty(havings)) {
1710
- selectJoinWhereStore = resultStore;
1711
- } else {
1712
- synchronizeTransactions(queryId, selectJoinWhereStore, resultStore);
1713
- const groupedSelectedCellIds = mapNew();
1714
- mapForEach(groups, (groupedCellId, [selectedCellId, aggregators]) =>
1715
- setAdd(mapEnsure(groupedSelectedCellIds, selectedCellId, setNew), [
1716
- groupedCellId,
1717
- aggregators,
1718
- ]),
1719
- );
1720
- const groupBySelectedCellIds = setNew();
1721
- mapForEach(selects, (selectedCellId) =>
1722
- collHas(groupedSelectedCellIds, selectedCellId)
1723
- ? 0
1724
- : setAdd(groupBySelectedCellIds, selectedCellId),
1725
- );
1726
- const tree = mapNew();
1727
- const writeGroupRow = (
1728
- leaf,
1729
- changedGroupedSelectedCells,
1730
- selectedRowId,
1731
- forceRemove,
1732
- ) =>
1733
- ifNotUndefined(
1734
- leaf,
1735
- ([selectedCells, selectedRowIds, groupRowId, groupRow]) => {
1736
- mapForEach(
1737
- changedGroupedSelectedCells,
1738
- (selectedCellId, [newCell]) => {
1739
- const selectedCell = mapEnsure(
1740
- selectedCells,
1741
- selectedCellId,
1742
- mapNew,
1743
- );
1744
- const oldLeafCell = mapGet(selectedCell, selectedRowId);
1745
- const newLeafCell = forceRemove ? void 0 : newCell;
1746
- if (oldLeafCell !== newLeafCell) {
1747
- const oldNewSet = setNew([[oldLeafCell, newLeafCell]]);
1748
- const oldLength = collSize(selectedCell);
1749
- mapSet(selectedCell, selectedRowId, newLeafCell);
1750
- collForEach(
1751
- mapGet(groupedSelectedCellIds, selectedCellId),
1752
- ([groupedCellId, aggregators]) => {
1753
- const aggregateValue = getAggregateValue(
1754
- groupRow[groupedCellId],
1755
- oldLength,
1756
- selectedCell,
1757
- oldNewSet,
1758
- aggregators,
1759
- );
1760
- groupRow[groupedCellId] = isUndefined(
1761
- getCellOrValueType(aggregateValue),
1762
- )
1763
- ? null
1764
- : aggregateValue;
1765
- },
1766
- );
1767
- }
1768
- },
1769
- );
1770
- if (
1771
- collIsEmpty(selectedRowIds) ||
1772
- !arrayEvery(havings, (having2) =>
1773
- having2((cellId) => groupRow[cellId]),
1774
- )
1775
- ) {
1776
- resultStore.delRow(queryId, groupRowId);
1777
- } else if (isUndefined(groupRowId)) {
1778
- leaf[2] = resultStore.addRow(queryId, groupRow);
1779
- } else {
1780
- resultStore.setRow(queryId, groupRowId, groupRow);
1781
- }
1782
- },
1783
- );
1784
- addPreStoreListener(
1785
- selectJoinWhereStore,
1786
- queryId,
1787
- selectJoinWhereStore.addRowListener(
1788
- queryId,
1789
- null,
1790
- (_store, _tableId, selectedRowId, getCellChange) => {
1791
- const oldPath = [];
1792
- const newPath = [];
1793
- const changedGroupedSelectedCells = mapNew();
1794
- const rowExists = selectJoinWhereStore.hasRow(
1795
- queryId,
1796
- selectedRowId,
1797
- );
1798
- let changedLeaf = !rowExists;
1799
- collForEach(groupBySelectedCellIds, (selectedCellId) => {
1800
- const [changed, oldCell, newCell] = getCellChange(
1801
- queryId,
1802
- selectedRowId,
1803
- selectedCellId,
1804
- );
1805
- arrayPush(oldPath, oldCell);
1806
- arrayPush(newPath, newCell);
1807
- changedLeaf ||= changed;
1808
- });
1809
- mapForEach(groupedSelectedCellIds, (selectedCellId) => {
1810
- const [changed, , newCell] = getCellChange(
1811
- queryId,
1812
- selectedRowId,
1813
- selectedCellId,
1814
- );
1815
- if (changedLeaf || changed) {
1816
- mapSet(changedGroupedSelectedCells, selectedCellId, [newCell]);
1817
- }
1818
- });
1819
- if (changedLeaf) {
1820
- writeGroupRow(
1821
- visitTree(tree, oldPath, void 0, ([, selectedRowIds]) => {
1822
- collDel(selectedRowIds, selectedRowId);
1823
- return collIsEmpty(selectedRowIds);
1824
- }),
1825
- changedGroupedSelectedCells,
1826
- selectedRowId,
1827
- 1,
1828
- );
1829
- }
1830
- if (rowExists) {
1831
- writeGroupRow(
1832
- visitTree(
1833
- tree,
1834
- newPath,
1835
- () => {
1836
- const groupRow = {};
1837
- collForEach(
1838
- groupBySelectedCellIds,
1839
- (selectedCellId) =>
1840
- (groupRow[selectedCellId] =
1841
- selectJoinWhereStore.getCell(
1842
- queryId,
1843
- selectedRowId,
1844
- selectedCellId,
1845
- )),
1846
- );
1847
- return [mapNew(), setNew(), void 0, groupRow];
1848
- },
1849
- ([, selectedRowIds]) => {
1850
- setAdd(selectedRowIds, selectedRowId);
1851
- },
1852
- ),
1853
- changedGroupedSelectedCells,
1854
- selectedRowId,
1855
- );
1856
- }
1857
- },
1858
- ),
1859
- );
1860
- }
1861
- synchronizeTransactions(queryId, store, selectJoinWhereStore);
1862
- const writeSelectRow = (rootRowId) => {
1863
- const getTableCell = (arg1, arg2) =>
1864
- store.getCell(
1865
- ...(isUndefined(arg2)
1866
- ? [tableId, rootRowId, arg1]
1867
- : arg1 === tableId
1868
- ? [tableId, rootRowId, arg2]
1869
- : [
1870
- mapGet(joins, arg1)?.[0],
1871
- mapGet(mapGet(joins, arg1)?.[4], rootRowId)?.[0],
1872
- arg2,
1873
- ]),
1874
- );
1875
- selectJoinWhereStore.transaction(() =>
1876
- arrayEvery(wheres, (where2) => where2(getTableCell))
1877
- ? mapForEach(selects, (asCellId, tableCellGetter) =>
1878
- setOrDelCell(
1879
- selectJoinWhereStore,
1880
- queryId,
1881
- rootRowId,
1882
- asCellId,
1883
- tableCellGetter(getTableCell, rootRowId),
1884
- ),
1885
- )
1886
- : selectJoinWhereStore.delRow(queryId, rootRowId),
1887
- );
1888
- };
1889
- const listenToTable = (rootRowId, tableId2, rowId, joinedTableIds2) => {
1890
- const getCell = (cellId) => store.getCell(tableId2, rowId, cellId);
1891
- arrayForEach(joinedTableIds2, (remoteAsTableId) => {
1892
- const [realJoinedTableId, , on, nextJoinedTableIds, remoteIdPair] =
1893
- mapGet(joins, remoteAsTableId);
1894
- const remoteRowId = on?.(getCell, rootRowId);
1895
- const [previousRemoteRowId, previousRemoteListenerId] =
1896
- mapGet(remoteIdPair, rootRowId) ?? [];
1897
- if (remoteRowId != previousRemoteRowId) {
1898
- if (!isUndefined(previousRemoteListenerId)) {
1899
- delStoreListeners(queryId, previousRemoteListenerId);
1900
- }
1901
- mapSet(
1902
- remoteIdPair,
1903
- rootRowId,
1904
- isUndefined(remoteRowId)
1905
- ? null
1906
- : [
1907
- remoteRowId,
1908
- ...addStoreListeners(
1909
- queryId,
1910
- 1,
1911
- store.addRowListener(realJoinedTableId, remoteRowId, () =>
1912
- listenToTable(
1913
- rootRowId,
1914
- realJoinedTableId,
1915
- remoteRowId,
1916
- nextJoinedTableIds,
1917
- ),
1918
- ),
1919
- ),
1920
- ],
1921
- );
1922
- }
1923
- });
1924
- writeSelectRow(rootRowId);
1925
- };
1926
- const {3: joinedTableIds} = mapGet(joins, null);
1927
- selectJoinWhereStore.transaction(() =>
1928
- addStoreListeners(
1929
- queryId,
1930
- 1,
1931
- store.addRowListener(tableId, null, (_store, _tableId, rootRowId) => {
1932
- if (store.hasRow(tableId, rootRowId)) {
1933
- listenToTable(rootRowId, tableId, rootRowId, joinedTableIds);
1934
- } else {
1935
- selectJoinWhereStore.delRow(queryId, rootRowId);
1936
- collForEach(joins, ({4: idsByRootRowId}) =>
1937
- ifNotUndefined(
1938
- mapGet(idsByRootRowId, rootRowId),
1939
- ([, listenerId]) => {
1940
- delStoreListeners(queryId, listenerId);
1941
- mapSet(idsByRootRowId, rootRowId);
1942
- },
1943
- ),
1944
- );
1945
- }
1946
- }),
1947
- ),
1948
- );
1949
- return queries;
1950
- };
1951
- const delQueryDefinition = (queryId) => {
1952
- resetPreStores(queryId);
1953
- delDefinition(queryId);
1954
- return queries;
1955
- };
1956
- const addQueryIdsListener = (listener) =>
1957
- addQueryIdsListenerImpl(() => listener(queries));
1958
- const delListener = (listenerId) => {
1959
- delListenerImpl(listenerId);
1960
- return queries;
1961
- };
1962
- const getListenerStats = () => {
1963
- const {
1964
- tables: _1,
1965
- tableIds: _2,
1966
- transaction: _3,
1967
- ...stats
1968
- } = resultStore.getListenerStats();
1969
- return stats;
1970
- };
1971
- const queries = {
1972
- setQueryDefinition,
1973
- delQueryDefinition,
1974
- getStore,
1975
- getQueryIds,
1976
- forEachQuery,
1977
- hasQuery,
1978
- getTableId,
1979
- addQueryIdsListener,
1980
- delListener,
1981
- destroy,
1982
- getListenerStats,
1983
- };
1984
- objToArray(
1985
- {
1986
- [TABLE]: [1, 1],
1987
- [TABLE + CELL_IDS]: [0, 1],
1988
- [ROW_COUNT]: [0, 1],
1989
- [ROW_IDS]: [0, 1],
1990
- [SORTED_ROW_IDS]: [0, 5],
1991
- [ROW]: [1, 2],
1992
- [CELL_IDS]: [0, 2],
1993
- [CELL]: [1, 3],
1994
- },
1995
- ([hasAndForEach, argumentCount], gettable) => {
1996
- arrayForEach(
1997
- hasAndForEach ? [GET, 'has', 'forEach'] : [GET],
1998
- (prefix) =>
1999
- (queries[prefix + RESULT + gettable] = (...args) =>
2000
- resultStore[prefix + gettable](...args)),
2001
- );
2002
- queries[ADD + RESULT + gettable + LISTENER] = (...args) =>
2003
- resultStore[ADD + gettable + LISTENER](
2004
- ...slice(args, 0, argumentCount),
2005
- (_store, ...listenerArgs) =>
2006
- args[argumentCount](queries, ...listenerArgs),
2007
- true,
2008
- );
2009
- },
2010
- );
2011
- return objFreeze(queries);
2012
- });
2013
-
2014
- const createRelationships = getCreateFunction((store) => {
2015
- const remoteTableIds = mapNew();
2016
- const remoteRowIdListeners = mapNew();
2017
- const localRowIdsListeners = mapNew();
2018
- const linkedRowIdsListeners = mapNew();
2019
- const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
2020
- () => relationships,
2021
- );
2022
- const [
2023
- getStore,
2024
- getRelationshipIds,
2025
- forEachRelationshipImpl,
2026
- hasRelationship,
2027
- getLocalTableId,
2028
- getRelationship,
2029
- ,
2030
- ,
2031
- setDefinitionAndListen,
2032
- delDefinition,
2033
- addRelationshipIdsListener,
2034
- destroy,
2035
- ] = getDefinableFunctions(
2036
- store,
2037
- () => [mapNew(), mapNew(), mapNew(), mapNew()],
2038
- (value) => (isUndefined(value) ? void 0 : value + EMPTY_STRING),
2039
- addListener,
2040
- callListeners,
2041
- );
2042
- const getLinkedRowIdsCache = (relationshipId, firstRowId, skipCache) =>
2043
- ifNotUndefined(
2044
- getRelationship(relationshipId),
2045
- ([remoteRows, , linkedRowsCache]) => {
2046
- if (!collHas(linkedRowsCache, firstRowId)) {
2047
- const linkedRows = setNew();
2048
- if (
2049
- getLocalTableId(relationshipId) != getRemoteTableId(relationshipId)
2050
- ) {
2051
- setAdd(linkedRows, firstRowId);
2052
- } else {
2053
- let rowId = firstRowId;
2054
- while (!isUndefined(rowId) && !collHas(linkedRows, rowId)) {
2055
- setAdd(linkedRows, rowId);
2056
- rowId = mapGet(remoteRows, rowId);
2057
- }
2058
- }
2059
- if (skipCache) {
2060
- return linkedRows;
2061
- }
2062
- mapSet(linkedRowsCache, firstRowId, linkedRows);
2063
- }
2064
- return mapGet(linkedRowsCache, firstRowId);
2065
- },
2066
- );
2067
- const delLinkedRowIdsCache = (relationshipId, firstRowId) =>
2068
- ifNotUndefined(getRelationship(relationshipId), ([, , linkedRowsCache]) =>
2069
- mapSet(linkedRowsCache, firstRowId),
2070
- );
2071
- const setRelationshipDefinition = (
2072
- relationshipId,
2073
- localTableId,
2074
- remoteTableId,
2075
- getRemoteRowId2,
2076
- ) => {
2077
- mapSet(remoteTableIds, relationshipId, remoteTableId);
2078
- setDefinitionAndListen(
2079
- relationshipId,
2080
- localTableId,
2081
- (change, changedRemoteRowIds) => {
2082
- const changedLocalRows = setNew();
2083
- const changedRemoteRows = setNew();
2084
- const changedLinkedRows = setNew();
2085
- const [localRows, remoteRows] = getRelationship(relationshipId);
2086
- collForEach(
2087
- changedRemoteRowIds,
2088
- ([oldRemoteRowId, newRemoteRowId], localRowId) => {
2089
- if (!isUndefined(oldRemoteRowId)) {
2090
- setAdd(changedRemoteRows, oldRemoteRowId);
2091
- ifNotUndefined(
2092
- mapGet(remoteRows, oldRemoteRowId),
2093
- (oldRemoteRow) => {
2094
- collDel(oldRemoteRow, localRowId);
2095
- if (collIsEmpty(oldRemoteRow)) {
2096
- mapSet(remoteRows, oldRemoteRowId);
2097
- }
2098
- },
2099
- );
2100
- }
2101
- if (!isUndefined(newRemoteRowId)) {
2102
- setAdd(changedRemoteRows, newRemoteRowId);
2103
- if (!collHas(remoteRows, newRemoteRowId)) {
2104
- mapSet(remoteRows, newRemoteRowId, setNew());
2105
- }
2106
- setAdd(mapGet(remoteRows, newRemoteRowId), localRowId);
2107
- }
2108
- setAdd(changedLocalRows, localRowId);
2109
- mapSet(localRows, localRowId, newRemoteRowId);
2110
- mapForEach(
2111
- mapGet(linkedRowIdsListeners, relationshipId),
2112
- (firstRowId) => {
2113
- if (
2114
- collHas(
2115
- getLinkedRowIdsCache(relationshipId, firstRowId),
2116
- localRowId,
2117
- )
2118
- ) {
2119
- setAdd(changedLinkedRows, firstRowId);
2120
- }
2121
- },
2122
- );
2123
- },
2124
- );
2125
- change();
2126
- collForEach(changedLocalRows, (localRowId) =>
2127
- callListeners(remoteRowIdListeners, [relationshipId, localRowId]),
2128
- );
2129
- collForEach(changedRemoteRows, (remoteRowId) =>
2130
- callListeners(localRowIdsListeners, [relationshipId, remoteRowId]),
2131
- );
2132
- collForEach(changedLinkedRows, (firstRowId) => {
2133
- delLinkedRowIdsCache(relationshipId, firstRowId);
2134
- callListeners(linkedRowIdsListeners, [relationshipId, firstRowId]);
2135
- });
2136
- },
2137
- getRowCellFunction(getRemoteRowId2),
2138
- );
2139
- return relationships;
2140
- };
2141
- const forEachRelationship = (relationshipCallback) =>
2142
- forEachRelationshipImpl((relationshipId) =>
2143
- relationshipCallback(relationshipId, (rowCallback) =>
2144
- store.forEachRow(getLocalTableId(relationshipId), rowCallback),
2145
- ),
2146
- );
2147
- const delRelationshipDefinition = (relationshipId) => {
2148
- mapSet(remoteTableIds, relationshipId);
2149
- delDefinition(relationshipId);
2150
- return relationships;
2151
- };
2152
- const getRemoteTableId = (relationshipId) =>
2153
- mapGet(remoteTableIds, relationshipId);
2154
- const getRemoteRowId = (relationshipId, localRowId) =>
2155
- mapGet(getRelationship(relationshipId)?.[0], localRowId);
2156
- const getLocalRowIds = (relationshipId, remoteRowId) =>
2157
- collValues(mapGet(getRelationship(relationshipId)?.[1], remoteRowId));
2158
- const getLinkedRowIds = (relationshipId, firstRowId) =>
2159
- isUndefined(getRelationship(relationshipId))
2160
- ? [firstRowId]
2161
- : collValues(getLinkedRowIdsCache(relationshipId, firstRowId, true));
2162
- const addRemoteRowIdListener = (relationshipId, localRowId, listener) =>
2163
- addListener(listener, remoteRowIdListeners, [relationshipId, localRowId]);
2164
- const addLocalRowIdsListener = (relationshipId, remoteRowId, listener) =>
2165
- addListener(listener, localRowIdsListeners, [relationshipId, remoteRowId]);
2166
- const addLinkedRowIdsListener = (relationshipId, firstRowId, listener) => {
2167
- getLinkedRowIdsCache(relationshipId, firstRowId);
2168
- return addListener(listener, linkedRowIdsListeners, [
2169
- relationshipId,
2170
- firstRowId,
2171
- ]);
2172
- };
2173
- const delListener = (listenerId) => {
2174
- delLinkedRowIdsCache(...(delListenerImpl(listenerId) ?? []));
2175
- return relationships;
2176
- };
2177
- const getListenerStats = () => ({
2178
- remoteRowId: collSize3(remoteRowIdListeners),
2179
- localRowIds: collSize3(localRowIdsListeners),
2180
- linkedRowIds: collSize3(linkedRowIdsListeners),
2181
- });
2182
- const relationships = {
2183
- setRelationshipDefinition,
2184
- delRelationshipDefinition,
2185
- getStore,
2186
- getRelationshipIds,
2187
- forEachRelationship,
2188
- hasRelationship,
2189
- getLocalTableId,
2190
- getRemoteTableId,
2191
- getRemoteRowId,
2192
- getLocalRowIds,
2193
- getLinkedRowIds,
2194
- addRelationshipIdsListener,
2195
- addRemoteRowIdListener,
2196
- addLocalRowIdsListener,
2197
- addLinkedRowIdsListener,
2198
- delListener,
2199
- destroy,
2200
- getListenerStats,
2201
- };
2202
- return objFreeze(relationships);
2203
- });
2204
-
2205
- const pairNew = (value) => [value, value];
2206
- const pairCollSize2 = (pair, func = collSize2) => func(pair[0]) + func(pair[1]);
2207
- const pairNewMap = () => [mapNew(), mapNew()];
2208
- const pairClone = (array) => [...array];
2209
- const pairIsEqual = ([entry1, entry2]) => entry1 === entry2;
2210
-
2211
- const jsonStringWithMap = (obj) =>
2212
- JSON.stringify(obj, (_key, value) =>
2213
- isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
2214
- );
2215
- const jsonParse = JSON.parse;
2216
-
2217
- const idsChanged = (changedIds, id2, addedOrRemoved) =>
2218
- mapSet(
2219
- changedIds,
2220
- id2,
2221
- mapGet(changedIds, id2) == -addedOrRemoved ? void 0 : addedOrRemoved,
2222
- );
2223
- const createStore = () => {
2224
- let hasTablesSchema;
2225
- let hasValuesSchema;
2226
- let hadTables = false;
2227
- let hadValues = false;
2228
- let transactions = 0;
2229
- let internalListeners = [];
2230
- const changedTableIds = mapNew();
2231
- const changedTableCellIds = mapNew();
2232
- const changedRowCount = mapNew();
2233
- const changedRowIds = mapNew();
2234
- const changedCellIds = mapNew();
2235
- const changedCells = mapNew();
2236
- const changedValueIds = mapNew();
2237
- const changedValues = mapNew();
2238
- const invalidCells = mapNew();
2239
- const invalidValues = mapNew();
2240
- const tablesSchemaMap = mapNew();
2241
- const tablesSchemaRowCache = mapNew();
2242
- const valuesSchemaMap = mapNew();
2243
- const valuesDefaulted = mapNew();
2244
- const valuesNonDefaulted = setNew();
2245
- const tablePoolFunctions = mapNew();
2246
- const tableCellIds = mapNew();
2247
- const tablesMap = mapNew();
2248
- const valuesMap = mapNew();
2249
- const hasTablesListeners = pairNewMap();
2250
- const tablesListeners = pairNewMap();
2251
- const tableIdsListeners = pairNewMap();
2252
- const hasTableListeners = pairNewMap();
2253
- const tableListeners = pairNewMap();
2254
- const tableCellIdsListeners = pairNewMap();
2255
- const hasTableCellListeners = pairNewMap();
2256
- const rowCountListeners = pairNewMap();
2257
- const rowIdsListeners = pairNewMap();
2258
- const sortedRowIdsListeners = pairNewMap();
2259
- const hasRowListeners = pairNewMap();
2260
- const rowListeners = pairNewMap();
2261
- const cellIdsListeners = pairNewMap();
2262
- const hasCellListeners = pairNewMap();
2263
- const cellListeners = pairNewMap();
2264
- const invalidCellListeners = pairNewMap();
2265
- const invalidValueListeners = pairNewMap();
2266
- const hasValuesListeners = pairNewMap();
2267
- const valuesListeners = pairNewMap();
2268
- const valueIdsListeners = pairNewMap();
2269
- const hasValueListeners = pairNewMap();
2270
- const valueListeners = pairNewMap();
2271
- const startTransactionListeners = mapNew();
2272
- const finishTransactionListeners = pairNewMap();
2273
- const [addListener, callListeners, delListenerImpl, callListenerImpl] =
2274
- getListenerFunctions(() => store);
2275
- const validateTablesSchema = (tableSchema) =>
2276
- objValidate(tableSchema, (tableSchema2) =>
2277
- objValidate(tableSchema2, validateCellOrValueSchema),
2278
- );
2279
- const validateValuesSchema = (valuesSchema) =>
2280
- objValidate(valuesSchema, validateCellOrValueSchema);
2281
- const validateCellOrValueSchema = (schema) => {
2282
- if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {
2283
- return false;
2284
- }
2285
- const type = schema[TYPE];
2286
- if (!isTypeStringOrBoolean(type) && type != NUMBER) {
2287
- return false;
2288
- }
2289
- if (getCellOrValueType(schema[DEFAULT]) != type) {
2290
- objDel(schema, DEFAULT);
2291
- }
2292
- return true;
2293
- };
2294
- const validateTables = (tables) =>
2295
- objValidate(tables, validateTable, cellInvalid);
2296
- const validateTable = (table, tableId) =>
2297
- (!hasTablesSchema ||
2298
- collHas(tablesSchemaMap, tableId) ||
2299
- cellInvalid(tableId)) &&
2300
- objValidate(
2301
- table,
2302
- (row, rowId) => validateRow(tableId, rowId, row),
2303
- () => cellInvalid(tableId),
2304
- );
2305
- const validateRow = (tableId, rowId, row, skipDefaults) =>
2306
- objValidate(
2307
- skipDefaults ? row : addDefaultsToRow(row, tableId, rowId),
2308
- (cell, cellId) =>
2309
- ifNotUndefined(
2310
- getValidatedCell(tableId, rowId, cellId, cell),
2311
- (validCell) => {
2312
- row[cellId] = validCell;
2313
- return true;
2314
- },
2315
- () => false,
2316
- ),
2317
- () => cellInvalid(tableId, rowId),
2318
- );
2319
- const getValidatedCell = (tableId, rowId, cellId, cell) =>
2320
- hasTablesSchema
2321
- ? ifNotUndefined(
2322
- mapGet(mapGet(tablesSchemaMap, tableId), cellId),
2323
- (cellSchema) =>
2324
- getCellOrValueType(cell) != cellSchema[TYPE]
2325
- ? cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
2326
- : cell,
2327
- () => cellInvalid(tableId, rowId, cellId, cell),
2328
- )
2329
- : isUndefined(getCellOrValueType(cell))
2330
- ? cellInvalid(tableId, rowId, cellId, cell)
2331
- : cell;
2332
- const validateValues = (values, skipDefaults) =>
2333
- objValidate(
2334
- skipDefaults ? values : addDefaultsToValues(values),
2335
- (value, valueId) =>
2336
- ifNotUndefined(
2337
- getValidatedValue(valueId, value),
2338
- (validValue) => {
2339
- values[valueId] = validValue;
2340
- return true;
2341
- },
2342
- () => false,
2343
- ),
2344
- () => valueInvalid(),
2345
- );
2346
- const getValidatedValue = (valueId, value) =>
2347
- hasValuesSchema
2348
- ? ifNotUndefined(
2349
- mapGet(valuesSchemaMap, valueId),
2350
- (valueSchema) =>
2351
- getCellOrValueType(value) != valueSchema[TYPE]
2352
- ? valueInvalid(valueId, value, valueSchema[DEFAULT])
2353
- : value,
2354
- () => valueInvalid(valueId, value),
2355
- )
2356
- : isUndefined(getCellOrValueType(value))
2357
- ? valueInvalid(valueId, value)
2358
- : value;
2359
- const addDefaultsToRow = (row, tableId, rowId) => {
2360
- ifNotUndefined(
2361
- mapGet(tablesSchemaRowCache, tableId),
2362
- ([rowDefaulted, rowNonDefaulted]) => {
2363
- collForEach(rowDefaulted, (cell, cellId) => {
2364
- if (!objHas(row, cellId)) {
2365
- row[cellId] = cell;
2366
- }
2367
- });
2368
- collForEach(rowNonDefaulted, (cellId) => {
2369
- if (!objHas(row, cellId)) {
2370
- cellInvalid(tableId, rowId, cellId);
2371
- }
2372
- });
2373
- },
2374
- );
2375
- return row;
2376
- };
2377
- const addDefaultsToValues = (values) => {
2378
- if (hasValuesSchema) {
2379
- collForEach(valuesDefaulted, (value, valueId) => {
2380
- if (!objHas(values, valueId)) {
2381
- values[valueId] = value;
2382
- }
2383
- });
2384
- collForEach(valuesNonDefaulted, (valueId) => {
2385
- if (!objHas(values, valueId)) {
2386
- valueInvalid(valueId);
2387
- }
2388
- });
2389
- }
2390
- return values;
2391
- };
2392
- const setValidTablesSchema = (tablesSchema) =>
2393
- mapMatch(
2394
- tablesSchemaMap,
2395
- tablesSchema,
2396
- (_tablesSchema, tableId, tableSchema) => {
2397
- const rowDefaulted = mapNew();
2398
- const rowNonDefaulted = setNew();
2399
- mapMatch(
2400
- mapEnsure(tablesSchemaMap, tableId, mapNew),
2401
- tableSchema,
2402
- (tableSchemaMap, cellId, cellSchema) => {
2403
- mapSet(tableSchemaMap, cellId, cellSchema);
2404
- ifNotUndefined(
2405
- cellSchema[DEFAULT],
2406
- (def) => mapSet(rowDefaulted, cellId, def),
2407
- () => setAdd(rowNonDefaulted, cellId),
2408
- );
2409
- },
2410
- );
2411
- mapSet(tablesSchemaRowCache, tableId, [rowDefaulted, rowNonDefaulted]);
2412
- },
2413
- (_tablesSchema, tableId) => {
2414
- mapSet(tablesSchemaMap, tableId);
2415
- mapSet(tablesSchemaRowCache, tableId);
2416
- },
2417
- );
2418
- const setValidValuesSchema = (valuesSchema) =>
2419
- mapMatch(
2420
- valuesSchemaMap,
2421
- valuesSchema,
2422
- (_valuesSchema, valueId, valueSchema) => {
2423
- mapSet(valuesSchemaMap, valueId, valueSchema);
2424
- ifNotUndefined(
2425
- valueSchema[DEFAULT],
2426
- (def) => mapSet(valuesDefaulted, valueId, def),
2427
- () => setAdd(valuesNonDefaulted, valueId),
2428
- );
2429
- },
2430
- (_valuesSchema, valueId) => {
2431
- mapSet(valuesSchemaMap, valueId);
2432
- mapSet(valuesDefaulted, valueId);
2433
- collDel(valuesNonDefaulted, valueId);
2434
- },
2435
- );
2436
- const setOrDelTables = (tables) =>
2437
- objIsEmpty(tables) ? delTables() : setTables(tables);
2438
- const setValidTables = (tables) =>
2439
- mapMatch(
2440
- tablesMap,
2441
- tables,
2442
- (_tables, tableId, table) => setValidTable(tableId, table),
2443
- (_tables, tableId) => delValidTable(tableId),
2444
- );
2445
- const setValidTable = (tableId, table) =>
2446
- mapMatch(
2447
- mapEnsure(tablesMap, tableId, () => {
2448
- tableIdsChanged(tableId, 1);
2449
- mapSet(tablePoolFunctions, tableId, getPoolFunctions());
2450
- mapSet(tableCellIds, tableId, mapNew());
2451
- return mapNew();
2452
- }),
2453
- table,
2454
- (tableMap, rowId, row) => setValidRow(tableId, tableMap, rowId, row),
2455
- (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
2456
- );
2457
- const setValidRow = (tableId, tableMap, rowId, row, forceDel) =>
2458
- mapMatch(
2459
- mapEnsure(tableMap, rowId, () => {
2460
- rowIdsChanged(tableId, rowId, 1);
2461
- return mapNew();
2462
- }),
2463
- row,
2464
- (rowMap, cellId, cell) =>
2465
- setValidCell(tableId, rowId, rowMap, cellId, cell),
2466
- (rowMap, cellId) =>
2467
- delValidCell(tableId, tableMap, rowId, rowMap, cellId, forceDel),
2468
- );
2469
- const setValidCell = (tableId, rowId, rowMap, cellId, cell) => {
2470
- if (!collHas(rowMap, cellId)) {
2471
- cellIdsChanged(tableId, rowId, cellId, 1);
2472
- }
2473
- const oldCell = mapGet(rowMap, cellId);
2474
- if (cell !== oldCell) {
2475
- cellChanged(tableId, rowId, cellId, oldCell, cell);
2476
- mapSet(rowMap, cellId, cell);
2477
- }
2478
- };
2479
- const setCellIntoDefaultRow = (tableId, tableMap, rowId, cellId, validCell) =>
2480
- ifNotUndefined(
2481
- mapGet(tableMap, rowId),
2482
- (rowMap) => setValidCell(tableId, rowId, rowMap, cellId, validCell),
2483
- () =>
2484
- setValidRow(
2485
- tableId,
2486
- tableMap,
2487
- rowId,
2488
- addDefaultsToRow({[cellId]: validCell}, tableId, rowId),
2489
- ),
2490
- );
2491
- const setOrDelValues = (values) =>
2492
- objIsEmpty(values) ? delValues() : setValues(values);
2493
- const setValidValues = (values) =>
2494
- mapMatch(
2495
- valuesMap,
2496
- values,
2497
- (_valuesMap, valueId, value) => setValidValue(valueId, value),
2498
- (_valuesMap, valueId) => delValidValue(valueId),
2499
- );
2500
- const setValidValue = (valueId, value) => {
2501
- if (!collHas(valuesMap, valueId)) {
2502
- valueIdsChanged(valueId, 1);
2503
- }
2504
- const oldValue = mapGet(valuesMap, valueId);
2505
- if (value !== oldValue) {
2506
- valueChanged(valueId, oldValue, value);
2507
- mapSet(valuesMap, valueId, value);
2508
- }
2509
- };
2510
- const getNewRowId = (tableId, reuse) => {
2511
- const [getId] = mapGet(tablePoolFunctions, tableId);
2512
- const rowId = getId(reuse);
2513
- if (!collHas(mapGet(tablesMap, tableId), rowId)) {
2514
- return rowId;
2515
- }
2516
- return getNewRowId(tableId, reuse);
2517
- };
2518
- const getOrCreateTable = (tableId) =>
2519
- mapGet(tablesMap, tableId) ?? setValidTable(tableId, {});
2520
- const delValidTable = (tableId) => setValidTable(tableId, {});
2521
- const delValidRow = (tableId, tableMap, rowId) => {
2522
- const [, releaseId] = mapGet(tablePoolFunctions, tableId);
2523
- releaseId(rowId);
2524
- setValidRow(tableId, tableMap, rowId, {}, true);
2525
- };
2526
- const delValidCell = (tableId, table, rowId, row, cellId, forceDel) => {
2527
- const defaultCell = mapGet(
2528
- mapGet(tablesSchemaRowCache, tableId)?.[0],
2529
- cellId,
2530
- );
2531
- if (!isUndefined(defaultCell) && !forceDel) {
2532
- return setValidCell(tableId, rowId, row, cellId, defaultCell);
2533
- }
2534
- const delCell2 = (cellId2) => {
2535
- cellChanged(tableId, rowId, cellId2, mapGet(row, cellId2));
2536
- cellIdsChanged(tableId, rowId, cellId2, -1);
2537
- mapSet(row, cellId2);
2538
- };
2539
- isUndefined(defaultCell) ? delCell2(cellId) : mapForEach(row, delCell2);
2540
- if (collIsEmpty(row)) {
2541
- rowIdsChanged(tableId, rowId, -1);
2542
- if (collIsEmpty(mapSet(table, rowId))) {
2543
- tableIdsChanged(tableId, -1);
2544
- mapSet(tablesMap, tableId);
2545
- mapSet(tablePoolFunctions, tableId);
2546
- mapSet(tableCellIds, tableId);
2547
- }
2548
- }
2549
- };
2550
- const delValidValue = (valueId) => {
2551
- const defaultValue = mapGet(valuesDefaulted, valueId);
2552
- if (!isUndefined(defaultValue)) {
2553
- return setValidValue(valueId, defaultValue);
2554
- }
2555
- valueChanged(valueId, mapGet(valuesMap, valueId));
2556
- valueIdsChanged(valueId, -1);
2557
- mapSet(valuesMap, valueId);
2558
- };
2559
- const tableIdsChanged = (tableId, addedOrRemoved) =>
2560
- idsChanged(changedTableIds, tableId, addedOrRemoved);
2561
- const rowIdsChanged = (tableId, rowId, addedOrRemoved) =>
2562
- idsChanged(
2563
- mapEnsure(changedRowIds, tableId, mapNew),
2564
- rowId,
2565
- addedOrRemoved,
2566
- ) &&
2567
- mapSet(
2568
- changedRowCount,
2569
- tableId,
2570
- mapEnsure(changedRowCount, tableId, () => 0) + addedOrRemoved,
2571
- );
2572
- const cellIdsChanged = (tableId, rowId, cellId, addedOrRemoved) => {
2573
- const cellIds = mapGet(tableCellIds, tableId);
2574
- const count = mapGet(cellIds, cellId) ?? 0;
2575
- if (
2576
- (count == 0 && addedOrRemoved == 1) ||
2577
- (count == 1 && addedOrRemoved == -1)
2578
- ) {
2579
- idsChanged(
2580
- mapEnsure(changedTableCellIds, tableId, mapNew),
2581
- cellId,
2582
- addedOrRemoved,
2583
- );
2584
- }
2585
- mapSet(
2586
- cellIds,
2587
- cellId,
2588
- count != -addedOrRemoved ? count + addedOrRemoved : null,
2589
- );
2590
- idsChanged(
2591
- mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
2592
- cellId,
2593
- addedOrRemoved,
2594
- );
2595
- };
2596
- const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
2597
- mapEnsure(
2598
- mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
2599
- cellId,
2600
- () => [oldCell, 0],
2601
- )[1] = newCell;
2602
- internalListeners[3]?.(tableId, rowId, cellId, newCell);
2603
- };
2604
- const valueIdsChanged = (valueId, addedOrRemoved) =>
2605
- idsChanged(changedValueIds, valueId, addedOrRemoved);
2606
- const valueChanged = (valueId, oldValue, newValue) => {
2607
- mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
2608
- internalListeners[4]?.(valueId, newValue);
2609
- };
2610
- const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
2611
- arrayPush(
2612
- mapEnsure(
2613
- mapEnsure(mapEnsure(invalidCells, tableId, mapNew), rowId, mapNew),
2614
- cellId,
2615
- () => [],
2616
- ),
2617
- invalidCell,
2618
- );
2619
- return defaultedCell;
2620
- };
2621
- const valueInvalid = (valueId, invalidValue, defaultedValue) => {
2622
- arrayPush(
2623
- mapEnsure(invalidValues, valueId, () => []),
2624
- invalidValue,
2625
- );
2626
- return defaultedValue;
2627
- };
2628
- const getCellChange = (tableId, rowId, cellId) =>
2629
- ifNotUndefined(
2630
- mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),
2631
- ([oldCell, newCell]) => [true, oldCell, newCell],
2632
- () => [false, ...pairNew(getCell(tableId, rowId, cellId))],
2633
- );
2634
- const getValueChange = (valueId) =>
2635
- ifNotUndefined(
2636
- mapGet(changedValues, valueId),
2637
- ([oldValue, newValue]) => [true, oldValue, newValue],
2638
- () => [false, ...pairNew(getValue(valueId))],
2639
- );
2640
- const callInvalidCellListeners = (mutator) =>
2641
- !collIsEmpty(invalidCells) && !collIsEmpty(invalidCellListeners[mutator])
2642
- ? collForEach(
2643
- mutator ? mapClone3(invalidCells) : invalidCells,
2644
- (rows, tableId) =>
2645
- collForEach(rows, (cells, rowId) =>
2646
- collForEach(cells, (invalidCell, cellId) =>
2647
- callListeners(
2648
- invalidCellListeners[mutator],
2649
- [tableId, rowId, cellId],
2650
- invalidCell,
2651
- ),
2652
- ),
2653
- ),
2654
- )
2655
- : 0;
2656
- const callInvalidValueListeners = (mutator) =>
2657
- !collIsEmpty(invalidValues) && !collIsEmpty(invalidValueListeners[mutator])
2658
- ? collForEach(
2659
- mutator ? mapClone(invalidValues) : invalidValues,
2660
- (invalidValue, valueId) =>
2661
- callListeners(
2662
- invalidValueListeners[mutator],
2663
- [valueId],
2664
- invalidValue,
2665
- ),
2666
- )
2667
- : 0;
2668
- const callIdsAndHasListenersIfChanged = (
2669
- changedIds,
2670
- idListeners,
2671
- hasListeners,
2672
- ids,
2673
- ) => {
2674
- if (!collIsEmpty(changedIds)) {
2675
- callListeners(idListeners, ids, () => mapToObj(changedIds));
2676
- mapForEach(changedIds, (changedId, changed) =>
2677
- callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
2678
- );
2679
- return 1;
2680
- }
2681
- };
2682
- const callTabularListenersForChanges = (mutator) => {
2683
- const hasTablesNow = hasTables();
2684
- if (hasTablesNow != hadTables) {
2685
- callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
2686
- }
2687
- const emptySortedRowIdListeners = collIsEmpty(
2688
- sortedRowIdsListeners[mutator],
2689
- );
2690
- const emptyIdAndHasListeners =
2691
- collIsEmpty(cellIdsListeners[mutator]) &&
2692
- collIsEmpty(hasCellListeners[mutator]) &&
2693
- collIsEmpty(rowIdsListeners[mutator]) &&
2694
- collIsEmpty(hasRowListeners[mutator]) &&
2695
- collIsEmpty(tableCellIdsListeners[mutator]) &&
2696
- collIsEmpty(hasTableCellListeners[mutator]) &&
2697
- collIsEmpty(rowCountListeners[mutator]) &&
2698
- emptySortedRowIdListeners &&
2699
- collIsEmpty(tableIdsListeners[mutator]) &&
2700
- collIsEmpty(hasTableListeners[mutator]);
2701
- const emptyOtherListeners =
2702
- collIsEmpty(cellListeners[mutator]) &&
2703
- collIsEmpty(rowListeners[mutator]) &&
2704
- collIsEmpty(tableListeners[mutator]) &&
2705
- collIsEmpty(tablesListeners[mutator]);
2706
- if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2707
- const changes = mutator
2708
- ? [
2709
- mapClone(changedTableIds),
2710
- mapClone2(changedTableCellIds),
2711
- mapClone(changedRowCount),
2712
- mapClone2(changedRowIds),
2713
- mapClone3(changedCellIds),
2714
- mapClone3(changedCells),
2715
- ]
2716
- : [
2717
- changedTableIds,
2718
- changedTableCellIds,
2719
- changedRowCount,
2720
- changedRowIds,
2721
- changedCellIds,
2722
- changedCells,
2723
- ];
2724
- if (!emptyIdAndHasListeners) {
2725
- callIdsAndHasListenersIfChanged(
2726
- changes[0],
2727
- tableIdsListeners[mutator],
2728
- hasTableListeners[mutator],
2729
- );
2730
- collForEach(changes[1], (changedIds, tableId) =>
2731
- callIdsAndHasListenersIfChanged(
2732
- changedIds,
2733
- tableCellIdsListeners[mutator],
2734
- hasTableCellListeners[mutator],
2735
- [tableId],
2736
- ),
2737
- );
2738
- collForEach(changes[2], (changedCount, tableId) => {
2739
- if (changedCount != 0) {
2740
- callListeners(
2741
- rowCountListeners[mutator],
2742
- [tableId],
2743
- getRowCount(tableId),
2744
- );
2745
- }
2746
- });
2747
- const calledSortableTableIds = setNew();
2748
- collForEach(changes[3], (changedIds, tableId) => {
2749
- if (
2750
- callIdsAndHasListenersIfChanged(
2751
- changedIds,
2752
- rowIdsListeners[mutator],
2753
- hasRowListeners[mutator],
2754
- [tableId],
2755
- ) &&
2756
- !emptySortedRowIdListeners
2757
- ) {
2758
- callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
2759
- setAdd(calledSortableTableIds, tableId);
2760
- }
2761
- });
2762
- if (!emptySortedRowIdListeners) {
2763
- collForEach(changes[5], (rows, tableId) => {
2764
- if (!collHas(calledSortableTableIds, tableId)) {
2765
- const sortableCellIds = setNew();
2766
- collForEach(rows, (cells) =>
2767
- collForEach(cells, ([oldCell, newCell], cellId) =>
2768
- newCell !== oldCell
2769
- ? setAdd(sortableCellIds, cellId)
2770
- : collDel(cells, cellId),
2771
- ),
2772
- );
2773
- collForEach(sortableCellIds, (cellId) =>
2774
- callListeners(sortedRowIdsListeners[mutator], [
2775
- tableId,
2776
- cellId,
2777
- ]),
2778
- );
2779
- }
2780
- });
2781
- }
2782
- collForEach(changes[4], (rowCellIds, tableId) =>
2783
- collForEach(rowCellIds, (changedIds, rowId) =>
2784
- callIdsAndHasListenersIfChanged(
2785
- changedIds,
2786
- cellIdsListeners[mutator],
2787
- hasCellListeners[mutator],
2788
- [tableId, rowId],
2789
- ),
2790
- ),
2791
- );
2792
- }
2793
- if (!emptyOtherListeners) {
2794
- let tablesChanged;
2795
- collForEach(changes[5], (rows, tableId) => {
2796
- let tableChanged;
2797
- collForEach(rows, (cells, rowId) => {
2798
- let rowChanged;
2799
- collForEach(cells, ([oldCell, newCell], cellId) => {
2800
- if (newCell !== oldCell) {
2801
- callListeners(
2802
- cellListeners[mutator],
2803
- [tableId, rowId, cellId],
2804
- newCell,
2805
- oldCell,
2806
- getCellChange,
2807
- );
2808
- tablesChanged = tableChanged = rowChanged = 1;
2809
- }
2810
- });
2811
- if (rowChanged) {
2812
- callListeners(
2813
- rowListeners[mutator],
2814
- [tableId, rowId],
2815
- getCellChange,
2816
- );
2817
- }
2818
- });
2819
- if (tableChanged) {
2820
- callListeners(tableListeners[mutator], [tableId], getCellChange);
2821
- }
2822
- });
2823
- if (tablesChanged) {
2824
- callListeners(tablesListeners[mutator], void 0, getCellChange);
2825
- }
2826
- }
2827
- }
2828
- };
2829
- const callValuesListenersForChanges = (mutator) => {
2830
- const hasValuesNow = hasValues();
2831
- if (hasValuesNow != hadValues) {
2832
- callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
2833
- }
2834
- const emptyIdAndHasListeners =
2835
- collIsEmpty(valueIdsListeners[mutator]) &&
2836
- collIsEmpty(hasValueListeners[mutator]);
2837
- const emptyOtherListeners =
2838
- collIsEmpty(valueListeners[mutator]) &&
2839
- collIsEmpty(valuesListeners[mutator]);
2840
- if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2841
- const changes = mutator
2842
- ? [mapClone(changedValueIds), mapClone(changedValues)]
2843
- : [changedValueIds, changedValues];
2844
- if (!emptyIdAndHasListeners) {
2845
- callIdsAndHasListenersIfChanged(
2846
- changes[0],
2847
- valueIdsListeners[mutator],
2848
- hasValueListeners[mutator],
2849
- );
2850
- }
2851
- if (!emptyOtherListeners) {
2852
- let valuesChanged;
2853
- collForEach(changes[1], ([oldValue, newValue], valueId) => {
2854
- if (newValue !== oldValue) {
2855
- callListeners(
2856
- valueListeners[mutator],
2857
- [valueId],
2858
- newValue,
2859
- oldValue,
2860
- getValueChange,
2861
- );
2862
- valuesChanged = 1;
2863
- }
2864
- });
2865
- if (valuesChanged) {
2866
- callListeners(valuesListeners[mutator], void 0, getValueChange);
2867
- }
2868
- }
2869
- }
2870
- };
2871
- const fluentTransaction = (actions, ...args) => {
2872
- transaction(() => actions(...arrayMap(args, id)));
2873
- return store;
2874
- };
2875
- const getContent = () => [getTables(), getValues()];
2876
- const getTables = () => mapToObj3(tablesMap);
2877
- const getTableIds = () => mapKeys(tablesMap);
2878
- const getTable = (tableId) => mapToObj2(mapGet(tablesMap, id(tableId)));
2879
- const getTableCellIds = (tableId) =>
2880
- mapKeys(mapGet(tableCellIds, id(tableId)));
2881
- const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
2882
- const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
2883
- const getSortedRowIds = (tableId, cellId, descending, offset = 0, limit) =>
2884
- arrayMap(
2885
- slice(
2886
- arraySort(
2887
- mapMap(mapGet(tablesMap, id(tableId)), (row, rowId) => [
2888
- isUndefined(cellId) ? rowId : mapGet(row, id(cellId)),
2889
- rowId,
2890
- ]),
2891
- ([cell1], [cell2]) =>
2892
- defaultSorter(cell1, cell2) * (descending ? -1 : 1),
2893
- ),
2894
- offset,
2895
- isUndefined(limit) ? limit : offset + limit,
2896
- ),
2897
- ([, rowId]) => rowId,
2898
- );
2899
- const getRow = (tableId, rowId) =>
2900
- mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
2901
- const getCellIds = (tableId, rowId) =>
2902
- mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
2903
- const getCell = (tableId, rowId, cellId) =>
2904
- mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
2905
- const getValues = () => mapToObj(valuesMap);
2906
- const getValueIds = () => mapKeys(valuesMap);
2907
- const getValue = (valueId) => mapGet(valuesMap, id(valueId));
2908
- const hasTables = () => !collIsEmpty(tablesMap);
2909
- const hasTable = (tableId) => collHas(tablesMap, id(tableId));
2910
- const hasTableCell = (tableId, cellId) =>
2911
- collHas(mapGet(tableCellIds, id(tableId)), id(cellId));
2912
- const hasRow = (tableId, rowId) =>
2913
- collHas(mapGet(tablesMap, id(tableId)), id(rowId));
2914
- const hasCell = (tableId, rowId, cellId) =>
2915
- collHas(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
2916
- const hasValues = () => !collIsEmpty(valuesMap);
2917
- const hasValue = (valueId) => collHas(valuesMap, id(valueId));
2918
- const getTablesJson = () => jsonStringWithMap(tablesMap);
2919
- const getValuesJson = () => jsonStringWithMap(valuesMap);
2920
- const getJson = () => jsonStringWithMap([tablesMap, valuesMap]);
2921
- const getTablesSchemaJson = () => jsonStringWithMap(tablesSchemaMap);
2922
- const getValuesSchemaJson = () => jsonStringWithMap(valuesSchemaMap);
2923
- const getSchemaJson = () =>
2924
- jsonStringWithMap([tablesSchemaMap, valuesSchemaMap]);
2925
- const setContent = ([tables, values]) =>
2926
- fluentTransaction(() => {
2927
- (objIsEmpty(tables) ? delTables : setTables)(tables);
2928
- (objIsEmpty(values) ? delValues : setValues)(values);
2929
- });
2930
- const setTables = (tables) =>
2931
- fluentTransaction(() =>
2932
- validateTables(tables) ? setValidTables(tables) : 0,
2933
- );
2934
- const setTable = (tableId, table) =>
2935
- fluentTransaction(
2936
- (tableId2) =>
2937
- validateTable(table, tableId2) ? setValidTable(tableId2, table) : 0,
2938
- tableId,
2939
- );
2940
- const setRow = (tableId, rowId, row) =>
2941
- fluentTransaction(
2942
- (tableId2, rowId2) =>
2943
- validateRow(tableId2, rowId2, row)
2944
- ? setValidRow(tableId2, getOrCreateTable(tableId2), rowId2, row)
2945
- : 0,
2946
- tableId,
2947
- rowId,
2948
- );
2949
- const addRow = (tableId, row, reuseRowIds = true) =>
2950
- transaction(() => {
2951
- let rowId = void 0;
2952
- if (validateRow(tableId, rowId, row)) {
2953
- tableId = id(tableId);
2954
- setValidRow(
2955
- tableId,
2956
- getOrCreateTable(tableId),
2957
- (rowId = getNewRowId(tableId, reuseRowIds ? 1 : 0)),
2958
- row,
2959
- );
2960
- }
2961
- return rowId;
2962
- });
2963
- const setPartialRow = (tableId, rowId, partialRow) =>
2964
- fluentTransaction(
2965
- (tableId2, rowId2) => {
2966
- if (validateRow(tableId2, rowId2, partialRow, 1)) {
2967
- const table = getOrCreateTable(tableId2);
2968
- objToArray(partialRow, (cell, cellId) =>
2969
- setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
2970
- );
2971
- }
2972
- },
2973
- tableId,
2974
- rowId,
2975
- );
2976
- const setCell = (tableId, rowId, cellId, cell) =>
2977
- fluentTransaction(
2978
- (tableId2, rowId2, cellId2) =>
2979
- ifNotUndefined(
2980
- getValidatedCell(
2981
- tableId2,
2982
- rowId2,
2983
- cellId2,
2984
- isFunction(cell) ? cell(getCell(tableId2, rowId2, cellId2)) : cell,
2985
- ),
2986
- (validCell) =>
2987
- setCellIntoDefaultRow(
2988
- tableId2,
2989
- getOrCreateTable(tableId2),
2990
- rowId2,
2991
- cellId2,
2992
- validCell,
2993
- ),
2994
- ),
2995
- tableId,
2996
- rowId,
2997
- cellId,
2998
- );
2999
- const setValues = (values) =>
3000
- fluentTransaction(() =>
3001
- validateValues(values) ? setValidValues(values) : 0,
3002
- );
3003
- const setPartialValues = (partialValues) =>
3004
- fluentTransaction(() =>
3005
- validateValues(partialValues, 1)
3006
- ? objToArray(partialValues, (value, valueId) =>
3007
- setValidValue(valueId, value),
3008
- )
3009
- : 0,
3010
- );
3011
- const setValue = (valueId, value) =>
3012
- fluentTransaction(
3013
- (valueId2) =>
3014
- ifNotUndefined(
3015
- getValidatedValue(
3016
- valueId2,
3017
- isFunction(value) ? value(getValue(valueId2)) : value,
3018
- ),
3019
- (validValue) => setValidValue(valueId2, validValue),
3020
- ),
3021
- valueId,
3022
- );
3023
- const applyChanges = (changes) =>
3024
- fluentTransaction(() => {
3025
- objToArray(changes[0], (table, tableId) =>
3026
- isUndefined(table)
3027
- ? delTable(tableId)
3028
- : objToArray(table, (row, rowId) =>
3029
- isUndefined(row)
3030
- ? delRow(tableId, rowId)
3031
- : objToArray(row, (cell, cellId) =>
3032
- setOrDelCell(store, tableId, rowId, cellId, cell),
3033
- ),
3034
- ),
3035
- );
3036
- objToArray(changes[1], (value, valueId) =>
3037
- setOrDelValue(store, valueId, value),
3038
- );
3039
- });
3040
- const setTablesJson = (tablesJson) => {
3041
- try {
3042
- setOrDelTables(jsonParse(tablesJson));
3043
- } catch {}
3044
- return store;
3045
- };
3046
- const setValuesJson = (valuesJson) => {
3047
- try {
3048
- setOrDelValues(jsonParse(valuesJson));
3049
- } catch {}
3050
- return store;
3051
- };
3052
- const setJson = (tablesAndValuesJson) =>
3053
- fluentTransaction(() => {
3054
- try {
3055
- const [tables, values] = jsonParse(tablesAndValuesJson);
3056
- setOrDelTables(tables);
3057
- setOrDelValues(values);
3058
- } catch {
3059
- setTablesJson(tablesAndValuesJson);
3060
- }
3061
- });
3062
- const setTablesSchema = (tablesSchema) =>
3063
- fluentTransaction(() => {
3064
- if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
3065
- setValidTablesSchema(tablesSchema);
3066
- if (!collIsEmpty(tablesMap)) {
3067
- const tables = getTables();
3068
- delTables();
3069
- setTables(tables);
3070
- }
3071
- }
3072
- });
3073
- const setValuesSchema = (valuesSchema) =>
3074
- fluentTransaction(() => {
3075
- if ((hasValuesSchema = validateValuesSchema(valuesSchema))) {
3076
- const values = getValues();
3077
- delValuesSchema();
3078
- delValues();
3079
- hasValuesSchema = true;
3080
- setValidValuesSchema(valuesSchema);
3081
- setValues(values);
3082
- }
3083
- });
3084
- const setSchema = (tablesSchema, valuesSchema) =>
3085
- fluentTransaction(() => {
3086
- setTablesSchema(tablesSchema);
3087
- setValuesSchema(valuesSchema);
3088
- });
3089
- const delTables = () => fluentTransaction(() => setValidTables({}));
3090
- const delTable = (tableId) =>
3091
- fluentTransaction(
3092
- (tableId2) =>
3093
- collHas(tablesMap, tableId2) ? delValidTable(tableId2) : 0,
3094
- tableId,
3095
- );
3096
- const delRow = (tableId, rowId) =>
3097
- fluentTransaction(
3098
- (tableId2, rowId2) =>
3099
- ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
3100
- collHas(tableMap, rowId2)
3101
- ? delValidRow(tableId2, tableMap, rowId2)
3102
- : 0,
3103
- ),
3104
- tableId,
3105
- rowId,
3106
- );
3107
- const delCell = (tableId, rowId, cellId, forceDel) =>
3108
- fluentTransaction(
3109
- (tableId2, rowId2, cellId2) =>
3110
- ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
3111
- ifNotUndefined(mapGet(tableMap, rowId2), (rowMap) =>
3112
- collHas(rowMap, cellId2)
3113
- ? delValidCell(
3114
- tableId2,
3115
- tableMap,
3116
- rowId2,
3117
- rowMap,
3118
- cellId2,
3119
- forceDel,
3120
- )
3121
- : 0,
3122
- ),
3123
- ),
3124
- tableId,
3125
- rowId,
3126
- cellId,
3127
- );
3128
- const delValues = () => fluentTransaction(() => setValidValues({}));
3129
- const delValue = (valueId) =>
3130
- fluentTransaction(
3131
- (valueId2) =>
3132
- collHas(valuesMap, valueId2) ? delValidValue(valueId2) : 0,
3133
- valueId,
3134
- );
3135
- const delTablesSchema = () =>
3136
- fluentTransaction(() => {
3137
- setValidTablesSchema({});
3138
- hasTablesSchema = false;
3139
- });
3140
- const delValuesSchema = () =>
3141
- fluentTransaction(() => {
3142
- setValidValuesSchema({});
3143
- hasValuesSchema = false;
3144
- });
3145
- const delSchema = () =>
3146
- fluentTransaction(() => {
3147
- delTablesSchema();
3148
- delValuesSchema();
3149
- });
3150
- const transaction = (actions, doRollback) => {
3151
- if (transactions != -1) {
3152
- startTransaction();
3153
- const result = actions();
3154
- finishTransaction(doRollback);
3155
- return result;
3156
- }
3157
- };
3158
- const startTransaction = () => {
3159
- if (transactions != -1) {
3160
- transactions++;
3161
- }
3162
- if (transactions == 1) {
3163
- internalListeners[0]?.();
3164
- callListeners(startTransactionListeners);
3165
- }
3166
- return store;
3167
- };
3168
- const getTransactionChanges = () => [
3169
- mapToObj(
3170
- changedCells,
3171
- (table, tableId) =>
3172
- mapGet(changedTableIds, tableId) === -1
3173
- ? void 0
3174
- : mapToObj(
3175
- table,
3176
- (row, rowId) =>
3177
- mapGet(mapGet(changedRowIds, tableId), rowId) === -1
3178
- ? void 0
3179
- : mapToObj(
3180
- row,
3181
- ([, newCell]) => newCell,
3182
- (changedCell) => pairIsEqual(changedCell),
3183
- ),
3184
- collIsEmpty,
3185
- objIsEmpty,
3186
- ),
3187
- collIsEmpty,
3188
- objIsEmpty,
3189
- ),
3190
- mapToObj(
3191
- changedValues,
3192
- ([, newValue]) => newValue,
3193
- (changedValue) => pairIsEqual(changedValue),
3194
- ),
3195
- 1,
3196
- ];
3197
- const getTransactionLog = () => [
3198
- !collIsEmpty(changedCells),
3199
- !collIsEmpty(changedValues),
3200
- mapToObj3(changedCells, pairClone, pairIsEqual),
3201
- mapToObj3(invalidCells),
3202
- mapToObj(changedValues, pairClone, pairIsEqual),
3203
- mapToObj(invalidValues),
3204
- mapToObj(changedTableIds),
3205
- mapToObj2(changedRowIds),
3206
- mapToObj3(changedCellIds),
3207
- mapToObj(changedValueIds),
3208
- ];
3209
- const finishTransaction = (doRollback) => {
3210
- if (transactions > 0) {
3211
- transactions--;
3212
- if (transactions == 0) {
3213
- transactions = 1;
3214
- callInvalidCellListeners(1);
3215
- if (!collIsEmpty(changedCells)) {
3216
- callTabularListenersForChanges(1);
3217
- }
3218
- callInvalidValueListeners(1);
3219
- if (!collIsEmpty(changedValues)) {
3220
- callValuesListenersForChanges(1);
3221
- }
3222
- if (doRollback?.(store)) {
3223
- collForEach(changedCells, (table, tableId) =>
3224
- collForEach(table, (row, rowId) =>
3225
- collForEach(row, ([oldCell], cellId) =>
3226
- setOrDelCell(store, tableId, rowId, cellId, oldCell),
3227
- ),
3228
- ),
3229
- );
3230
- collClear(changedCells);
3231
- collForEach(changedValues, ([oldValue], valueId) =>
3232
- setOrDelValue(store, valueId, oldValue),
3233
- );
3234
- collClear(changedValues);
3235
- }
3236
- callListeners(finishTransactionListeners[0], void 0);
3237
- transactions = -1;
3238
- callInvalidCellListeners(0);
3239
- if (!collIsEmpty(changedCells)) {
3240
- callTabularListenersForChanges(0);
3241
- }
3242
- callInvalidValueListeners(0);
3243
- if (!collIsEmpty(changedValues)) {
3244
- callValuesListenersForChanges(0);
3245
- }
3246
- internalListeners[1]?.();
3247
- callListeners(finishTransactionListeners[1], void 0);
3248
- internalListeners[2]?.();
3249
- transactions = 0;
3250
- hadTables = hasTables();
3251
- hadValues = hasValues();
3252
- arrayForEach(
3253
- [
3254
- changedTableIds,
3255
- changedTableCellIds,
3256
- changedRowCount,
3257
- changedRowIds,
3258
- changedCellIds,
3259
- changedCells,
3260
- invalidCells,
3261
- changedValueIds,
3262
- changedValues,
3263
- invalidValues,
3264
- ],
3265
- collClear,
3266
- );
3267
- }
3268
- }
3269
- return store;
3270
- };
3271
- const forEachTable = (tableCallback) =>
3272
- collForEach(tablesMap, (tableMap, tableId) =>
3273
- tableCallback(tableId, (rowCallback) =>
3274
- collForEach(tableMap, (rowMap, rowId) =>
3275
- rowCallback(rowId, (cellCallback) =>
3276
- mapForEach(rowMap, cellCallback),
3277
- ),
3278
- ),
3279
- ),
3280
- );
3281
- const forEachTableCell = (tableId, tableCellCallback) =>
3282
- mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
3283
- const forEachRow = (tableId, rowCallback) =>
3284
- collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
3285
- rowCallback(rowId, (cellCallback) => mapForEach(rowMap, cellCallback)),
3286
- );
3287
- const forEachCell = (tableId, rowId, cellCallback) =>
3288
- mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);
3289
- const forEachValue = (valueCallback) => mapForEach(valuesMap, valueCallback);
3290
- const addSortedRowIdsListener = (
3291
- tableId,
3292
- cellId,
3293
- descending,
3294
- offset,
3295
- limit,
3296
- listener,
3297
- mutator,
3298
- ) => {
3299
- let sortedRowIds = getSortedRowIds(
3300
- tableId,
3301
- cellId,
3302
- descending,
3303
- offset,
3304
- limit,
3305
- );
3306
- return addListener(
3307
- () => {
3308
- const newSortedRowIds = getSortedRowIds(
3309
- tableId,
3310
- cellId,
3311
- descending,
3312
- offset,
3313
- limit,
3314
- );
3315
- if (!arrayIsEqual(newSortedRowIds, sortedRowIds)) {
3316
- sortedRowIds = newSortedRowIds;
3317
- listener(
3318
- store,
3319
- tableId,
3320
- cellId,
3321
- descending,
3322
- offset,
3323
- limit,
3324
- sortedRowIds,
3325
- );
3326
- }
3327
- },
3328
- sortedRowIdsListeners[mutator ? 1 : 0],
3329
- [tableId, cellId],
3330
- [getTableIds],
3331
- );
3332
- };
3333
- const addStartTransactionListener = (listener) =>
3334
- addListener(listener, startTransactionListeners);
3335
- const addWillFinishTransactionListener = (listener) =>
3336
- addListener(listener, finishTransactionListeners[0]);
3337
- const addDidFinishTransactionListener = (listener) =>
3338
- addListener(listener, finishTransactionListeners[1]);
3339
- const callListener = (listenerId) => {
3340
- callListenerImpl(listenerId);
3341
- return store;
3342
- };
3343
- const delListener = (listenerId) => {
3344
- delListenerImpl(listenerId);
3345
- return store;
3346
- };
3347
- const getListenerStats = () => ({
3348
- hasTables: pairCollSize2(hasTablesListeners),
3349
- tables: pairCollSize2(tablesListeners),
3350
- tableIds: pairCollSize2(tableIdsListeners),
3351
- hasTable: pairCollSize2(hasTableListeners),
3352
- table: pairCollSize2(tableListeners),
3353
- tableCellIds: pairCollSize2(tableCellIdsListeners),
3354
- hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
3355
- rowCount: pairCollSize2(rowCountListeners),
3356
- rowIds: pairCollSize2(rowIdsListeners),
3357
- sortedRowIds: pairCollSize2(sortedRowIdsListeners),
3358
- hasRow: pairCollSize2(hasRowListeners, collSize3),
3359
- row: pairCollSize2(rowListeners, collSize3),
3360
- cellIds: pairCollSize2(cellIdsListeners, collSize3),
3361
- hasCell: pairCollSize2(hasCellListeners, collSize4),
3362
- cell: pairCollSize2(cellListeners, collSize4),
3363
- invalidCell: pairCollSize2(invalidCellListeners, collSize4),
3364
- hasValues: pairCollSize2(hasValuesListeners),
3365
- values: pairCollSize2(valuesListeners),
3366
- valueIds: pairCollSize2(valueIdsListeners),
3367
- hasValue: pairCollSize2(hasValueListeners),
3368
- value: pairCollSize2(valueListeners),
3369
- invalidValue: pairCollSize2(invalidValueListeners),
3370
- transaction:
3371
- collSize2(startTransactionListeners) +
3372
- pairCollSize2(finishTransactionListeners),
3373
- });
3374
- const setInternalListeners = (
3375
- preStartTransaction,
3376
- preFinishTransaction,
3377
- postFinishTransaction,
3378
- cellChanged2,
3379
- valueChanged2,
3380
- ) =>
3381
- (internalListeners = [
3382
- preStartTransaction,
3383
- preFinishTransaction,
3384
- postFinishTransaction,
3385
- cellChanged2,
3386
- valueChanged2,
3387
- ]);
3388
- const store = {
3389
- getContent,
3390
- getTables,
3391
- getTableIds,
3392
- getTable,
3393
- getTableCellIds,
3394
- getRowCount,
3395
- getRowIds,
3396
- getSortedRowIds,
3397
- getRow,
3398
- getCellIds,
3399
- getCell,
3400
- getValues,
3401
- getValueIds,
3402
- getValue,
3403
- hasTables,
3404
- hasTable,
3405
- hasTableCell,
3406
- hasRow,
3407
- hasCell,
3408
- hasValues,
3409
- hasValue,
3410
- getTablesJson,
3411
- getValuesJson,
3412
- getJson,
3413
- getTablesSchemaJson,
3414
- getValuesSchemaJson,
3415
- getSchemaJson,
3416
- hasTablesSchema: () => hasTablesSchema,
3417
- hasValuesSchema: () => hasValuesSchema,
3418
- setContent,
3419
- setTables,
3420
- setTable,
3421
- setRow,
3422
- addRow,
3423
- setPartialRow,
3424
- setCell,
3425
- setValues,
3426
- setPartialValues,
3427
- setValue,
3428
- applyChanges,
3429
- setTablesJson,
3430
- setValuesJson,
3431
- setJson,
3432
- setTablesSchema,
3433
- setValuesSchema,
3434
- setSchema,
3435
- delTables,
3436
- delTable,
3437
- delRow,
3438
- delCell,
3439
- delValues,
3440
- delValue,
3441
- delTablesSchema,
3442
- delValuesSchema,
3443
- delSchema,
3444
- transaction,
3445
- startTransaction,
3446
- getTransactionChanges,
3447
- getTransactionLog,
3448
- finishTransaction,
3449
- forEachTable,
3450
- forEachTableCell,
3451
- forEachRow,
3452
- forEachCell,
3453
- forEachValue,
3454
- addSortedRowIdsListener,
3455
- addStartTransactionListener,
3456
- addWillFinishTransactionListener,
3457
- addDidFinishTransactionListener,
3458
- callListener,
3459
- delListener,
3460
- getListenerStats,
3461
- // only used internally by other modules
3462
- createStore,
3463
- addListener,
3464
- callListeners,
3465
- setInternalListeners,
3466
- };
3467
- objToArray(
3468
- {
3469
- [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
3470
- [TABLES]: [0, tablesListeners],
3471
- [TABLE_IDS]: [0, tableIdsListeners],
3472
- [HAS + TABLE]: [
3473
- 1,
3474
- hasTableListeners,
3475
- [getTableIds],
3476
- (ids) => [hasTable(...ids)],
3477
- ],
3478
- [TABLE]: [1, tableListeners, [getTableIds]],
3479
- [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
3480
- [HAS + TABLE + CELL]: [
3481
- 2,
3482
- hasTableCellListeners,
3483
- [getTableIds, getTableCellIds],
3484
- (ids) => [hasTableCell(...ids)],
3485
- ],
3486
- [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
3487
- [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
3488
- [HAS + ROW]: [
3489
- 2,
3490
- hasRowListeners,
3491
- [getTableIds, getRowIds],
3492
- (ids) => [hasRow(...ids)],
3493
- ],
3494
- [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
3495
- [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
3496
- [HAS + CELL]: [
3497
- 3,
3498
- hasCellListeners,
3499
- [getTableIds, getRowIds, getCellIds],
3500
- (ids) => [hasCell(...ids)],
3501
- ],
3502
- [CELL]: [
3503
- 3,
3504
- cellListeners,
3505
- [getTableIds, getRowIds, getCellIds],
3506
- (ids) => pairNew(getCell(...ids)),
3507
- ],
3508
- InvalidCell: [3, invalidCellListeners],
3509
- [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
3510
- [VALUES]: [0, valuesListeners],
3511
- [VALUE_IDS]: [0, valueIdsListeners],
3512
- [HAS + VALUE]: [
3513
- 1,
3514
- hasValueListeners,
3515
- [getValueIds],
3516
- (ids) => [hasValue(...ids)],
3517
- ],
3518
- [VALUE]: [
3519
- 1,
3520
- valueListeners,
3521
- [getValueIds],
3522
- (ids) => pairNew(getValue(ids[0])),
3523
- ],
3524
- InvalidValue: [1, invalidValueListeners],
3525
- },
3526
- ([argumentCount, idSetNode, pathGetters, extraArgsGetter], listenable) => {
3527
- store[ADD + listenable + LISTENER] = (...args) =>
3528
- addListener(
3529
- args[argumentCount],
3530
- idSetNode[args[argumentCount + 1] ? 1 : 0],
3531
- argumentCount > 0 ? slice(args, 0, argumentCount) : void 0,
3532
- pathGetters,
3533
- extraArgsGetter,
3534
- );
3535
- },
3536
- );
3537
- return objFreeze(store);
3538
- };
3539
-
3540
- const SHIFT36 = 2 ** 36;
3541
- const SHIFT30 = 2 ** 30;
3542
- const SHIFT24 = 2 ** 24;
3543
- const SHIFT18 = 2 ** 18;
3544
- const SHIFT12 = 2 ** 12;
3545
- const SHIFT6 = 2 ** 6;
3546
- const encodeTimeAndCounter = (logicalTime42, counter24) =>
3547
- encode(logicalTime42 / SHIFT36) +
3548
- encode(logicalTime42 / SHIFT30) +
3549
- encode(logicalTime42 / SHIFT24) +
3550
- encode(logicalTime42 / SHIFT18) +
3551
- encode(logicalTime42 / SHIFT12) +
3552
- encode(logicalTime42 / SHIFT6) +
3553
- encode(logicalTime42) +
3554
- encode(counter24 / SHIFT18) +
3555
- encode(counter24 / SHIFT12) +
3556
- encode(counter24 / SHIFT6) +
3557
- encode(counter24);
3558
- const decodeTimeAndCounter = (hlc16) => [
3559
- decode(hlc16, 0) * SHIFT36 +
3560
- decode(hlc16, 1) * SHIFT30 +
3561
- decode(hlc16, 2) * SHIFT24 +
3562
- decode(hlc16, 3) * SHIFT18 +
3563
- decode(hlc16, 4) * SHIFT12 +
3564
- decode(hlc16, 5) * SHIFT6 +
3565
- decode(hlc16, 6),
3566
- decode(hlc16, 7) * SHIFT18 +
3567
- decode(hlc16, 8) * SHIFT12 +
3568
- decode(hlc16, 9) * SHIFT6 +
3569
- decode(hlc16, 10),
3570
- ];
3571
- const getHlcFunctions = (uniqueId) => {
3572
- let logicalTime = 0;
3573
- let lastCounter = -1;
3574
- const clientPart = ifNotUndefined(
3575
- uniqueId,
3576
- (uniqueId2) => {
3577
- const clientHash30 = getHash(uniqueId2);
3578
- return (
3579
- encode(clientHash30 / SHIFT24) +
3580
- encode(clientHash30 / SHIFT18) +
3581
- encode(clientHash30 / SHIFT12) +
3582
- encode(clientHash30 / SHIFT6) +
3583
- encode(clientHash30)
3584
- );
3585
- },
3586
- () => getUniqueId(5),
3587
- );
3588
- const getHlc = () => {
3589
- seenHlc();
3590
- return encodeTimeAndCounter(logicalTime, ++lastCounter) + clientPart;
3591
- };
3592
- const seenHlc = (hlc) => {
3593
- const previousLogicalTime = logicalTime;
3594
- const [remoteLogicalTime, remoteCounter] =
3595
- isUndefined(hlc) || hlc == '' ? [0, 0] : decodeTimeAndCounter(hlc);
3596
- logicalTime = mathMax(
3597
- previousLogicalTime,
3598
- remoteLogicalTime,
3599
- globalThis.HLC_TIME ?? Date.now(),
3600
- );
3601
- lastCounter =
3602
- logicalTime == previousLogicalTime
3603
- ? logicalTime == remoteLogicalTime
3604
- ? mathMax(lastCounter, remoteCounter)
3605
- : lastCounter
3606
- : logicalTime == remoteLogicalTime
3607
- ? remoteCounter
3608
- : -1;
3609
- };
3610
- return [getHlc, seenHlc];
3611
- };
3612
-
3613
- const LISTENER_ARGS = {
3614
- HasTable: 1,
3615
- Table: 1,
3616
- TableCellIds: 1,
3617
- HasTableCell: 2,
3618
- RowCount: 1,
3619
- RowIds: 1,
3620
- SortedRowIds: 5,
3621
- HasRow: 2,
3622
- Row: 2,
3623
- CellIds: 2,
3624
- HasCell: 3,
3625
- Cell: 3,
3626
- HasValue: 1,
3627
- Value: 1,
3628
- InvalidCell: 3,
3629
- InvalidValue: 1,
3630
- };
3631
- const newContentStampMap = (time = EMPTY_STRING) => [
3632
- stampNewMap(time),
3633
- stampNewMap(time),
3634
- ];
3635
- const validateMergeableContent = (mergeableContent) =>
3636
- isArray(mergeableContent) &&
3637
- size(mergeableContent) == 2 &&
3638
- stampValidate(mergeableContent[0], (tableStamps) =>
3639
- objValidate(
3640
- tableStamps,
3641
- (tableStamp) =>
3642
- stampValidate(tableStamp, (rowStamps) =>
3643
- objValidate(
3644
- rowStamps,
3645
- (rowStamp) =>
3646
- stampValidate(rowStamp, (cellStamps) =>
3647
- objValidate(
3648
- cellStamps,
3649
- (cellStamp) =>
3650
- stampValidate(cellStamp, isCellOrValueOrNullOrUndefined),
3651
- void 0,
3652
- 1,
3653
- ),
3654
- ),
3655
- void 0,
3656
- 1,
3657
- ),
3658
- ),
3659
- void 0,
3660
- 1,
3661
- ),
3662
- ) &&
3663
- stampValidate(mergeableContent[1], (values) =>
3664
- objValidate(
3665
- values,
3666
- (value) => stampValidate(value, isCellOrValueOrNullOrUndefined),
3667
- void 0,
3668
- 1,
3669
- ),
3670
- );
3671
- const createMergeableStore = (uniqueId) => {
3672
- let listeningToRawStoreChanges = 1;
3673
- let contentStampMap = newContentStampMap();
3674
- let defaultingContent = 0;
3675
- const touchedCells = mapNew();
3676
- const touchedValues = setNew();
3677
- const [getHlc, seenHlc] = getHlcFunctions(uniqueId);
3678
- const store = createStore();
3679
- const disableListeningToRawStoreChanges = (actions) => {
3680
- const wasListening = listeningToRawStoreChanges;
3681
- listeningToRawStoreChanges = 0;
3682
- actions();
3683
- listeningToRawStoreChanges = wasListening;
3684
- return mergeableStore;
3685
- };
3686
- const mergeContentOrChanges = (contentOrChanges, isContent = 0) => {
3687
- const tablesChanges = {};
3688
- const valuesChanges = {};
3689
- const [
3690
- [tablesObj, incomingTablesTime = EMPTY_STRING, incomingTablesHash = 0],
3691
- values,
3692
- ] = contentOrChanges;
3693
- const [tablesStampMap, valuesStampMap] = contentStampMap;
3694
- const [tableStampMaps, oldTablesTime, oldTablesHash] = tablesStampMap;
3695
- let tablesHash = isContent ? incomingTablesHash : oldTablesHash;
3696
- let tablesTime = incomingTablesTime;
3697
- objForEach(
3698
- tablesObj,
3699
- (
3700
- [rowsObj, incomingTableTime = EMPTY_STRING, incomingTableHash = 0],
3701
- tableId,
3702
- ) => {
3703
- const tableStampMap = mapEnsure(tableStampMaps, tableId, stampNewMap);
3704
- const [rowStampMaps, oldTableTime, oldTableHash] = tableStampMap;
3705
- let tableHash = isContent ? incomingTableHash : oldTableHash;
3706
- let tableTime = incomingTableTime;
3707
- objForEach(rowsObj, (row, rowId) => {
3708
- const [rowTime, oldRowHash, rowHash] = mergeCellsOrValues(
3709
- row,
3710
- mapEnsure(rowStampMaps, rowId, stampNewMap),
3711
- objEnsure(objEnsure(tablesChanges, tableId, objNew), rowId, objNew),
3712
- isContent,
3713
- );
3714
- tableHash ^= isContent
3715
- ? 0
3716
- : (oldRowHash ? hashIdAndHash(rowId, oldRowHash) : 0) ^
3717
- hashIdAndHash(rowId, rowHash);
3718
- tableTime = getLatestTime(tableTime, rowTime);
3719
- });
3720
- tableHash ^= isContent
3721
- ? 0
3722
- : replaceTimeHash(oldTableTime, incomingTableTime);
3723
- stampUpdate(tableStampMap, tableHash, incomingTableTime);
3724
- tablesHash ^= isContent
3725
- ? 0
3726
- : (oldTableHash ? hashIdAndHash(tableId, oldTableHash) : 0) ^
3727
- hashIdAndHash(tableId, tableStampMap[2]);
3728
- tablesTime = getLatestTime(tablesTime, tableTime);
3729
- },
3730
- );
3731
- tablesHash ^= isContent
3732
- ? 0
3733
- : replaceTimeHash(oldTablesTime, incomingTablesTime);
3734
- stampUpdate(tablesStampMap, tablesHash, incomingTablesTime);
3735
- const [valuesTime] = mergeCellsOrValues(
3736
- values,
3737
- valuesStampMap,
3738
- valuesChanges,
3739
- isContent,
3740
- );
3741
- seenHlc(getLatestTime(tablesTime, valuesTime));
3742
- return [tablesChanges, valuesChanges, 1];
3743
- };
3744
- const mergeCellsOrValues = (
3745
- things,
3746
- thingsStampMap,
3747
- thingsChanges,
3748
- isContent,
3749
- ) => {
3750
- const [
3751
- thingsObj,
3752
- incomingThingsTime = EMPTY_STRING,
3753
- incomingThingsHash = 0,
3754
- ] = things;
3755
- const [thingStampMaps, oldThingsTime, oldThingsHash] = thingsStampMap;
3756
- let thingsTime = incomingThingsTime;
3757
- let thingsHash = isContent ? incomingThingsHash : oldThingsHash;
3758
- objForEach(
3759
- thingsObj,
3760
- ([thing, thingTime, incomingThingHash = 0], thingId) => {
3761
- const thingStampMap = mapEnsure(thingStampMaps, thingId, () => [
3762
- void 0,
3763
- EMPTY_STRING,
3764
- 0,
3765
- ]);
3766
- const [, oldThingTime, oldThingHash] = thingStampMap;
3767
- if (!oldThingTime || thingTime > oldThingTime) {
3768
- stampUpdate(
3769
- thingStampMap,
3770
- isContent
3771
- ? incomingThingHash
3772
- : getHash(jsonStringWithMap(thing ?? null) + ':' + thingTime),
3773
- thingTime,
3774
- );
3775
- thingStampMap[0] = thing;
3776
- thingsChanges[thingId] = thing;
3777
- thingsHash ^= isContent
3778
- ? 0
3779
- : hashIdAndHash(thingId, oldThingHash) ^
3780
- hashIdAndHash(thingId, thingStampMap[2]);
3781
- thingsTime = getLatestTime(thingsTime, thingTime);
3782
- }
3783
- },
3784
- );
3785
- thingsHash ^= isContent
3786
- ? 0
3787
- : replaceTimeHash(oldThingsTime, incomingThingsTime);
3788
- stampUpdate(thingsStampMap, thingsHash, incomingThingsTime);
3789
- return [thingsTime, oldThingsHash, thingsStampMap[2]];
3790
- };
3791
- const preStartTransaction = () => {};
3792
- const preFinishTransaction = () => {};
3793
- const postFinishTransaction = () => {
3794
- collClear(touchedCells);
3795
- collClear(touchedValues);
3796
- };
3797
- const cellChanged = (tableId, rowId, cellId, newCell) => {
3798
- setAdd(
3799
- mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
3800
- cellId,
3801
- );
3802
- if (listeningToRawStoreChanges) {
3803
- mergeContentOrChanges([
3804
- [
3805
- {
3806
- [tableId]: [
3807
- {
3808
- [rowId]: [
3809
- {
3810
- [cellId]: [
3811
- newCell,
3812
- defaultingContent ? EMPTY_STRING : getHlc(),
3813
- ],
3814
- },
3815
- ],
3816
- },
3817
- ],
3818
- },
3819
- ],
3820
- [{}],
3821
- 1,
3822
- ]);
3823
- }
3824
- };
3825
- const valueChanged = (valueId, newValue) => {
3826
- setAdd(touchedValues, valueId);
3827
- if (listeningToRawStoreChanges) {
3828
- mergeContentOrChanges([
3829
- [{}],
3830
- [{[valueId]: [newValue, defaultingContent ? EMPTY_STRING : getHlc()]}],
3831
- 1,
3832
- ]);
3833
- }
3834
- };
3835
- const getMergeableContent = () => [
3836
- stampMapToObjWithHash(contentStampMap[0], (tableStampMap) =>
3837
- stampMapToObjWithHash(tableStampMap, (rowStampMap) =>
3838
- stampMapToObjWithHash(rowStampMap),
3839
- ),
3840
- ),
3841
- stampMapToObjWithHash(contentStampMap[1]),
3842
- ];
3843
- const getMergeableContentHashes = () => [
3844
- contentStampMap[0][2],
3845
- contentStampMap[1][2],
3846
- ];
3847
- const getMergeableTableHashes = () =>
3848
- mapToObj(contentStampMap[0][0], getStampHash);
3849
- const getMergeableTableDiff = (otherTableHashes) => {
3850
- const newTables = stampNewObj(contentStampMap[0][1]);
3851
- const differentTableHashes = {};
3852
- mapForEach(
3853
- contentStampMap[0][0],
3854
- (tableId, [tableStampMap, tableTime, hash]) =>
3855
- objHas(otherTableHashes, tableId)
3856
- ? hash != otherTableHashes[tableId]
3857
- ? (differentTableHashes[tableId] = hash)
3858
- : 0
3859
- : (newTables[0][tableId] = stampMapToObjWithoutHash(
3860
- [tableStampMap, tableTime],
3861
- (rowStampMap) => stampMapToObjWithoutHash(rowStampMap),
3862
- )),
3863
- );
3864
- return [newTables, differentTableHashes];
3865
- };
3866
- const getMergeableRowHashes = (otherTableHashes) => {
3867
- const rowHashes = {};
3868
- objForEach(otherTableHashes, (otherTableHash, tableId) =>
3869
- ifNotUndefined(
3870
- mapGet(contentStampMap[0][0], tableId),
3871
- ([rowStampMaps, , tableHash]) =>
3872
- tableHash != otherTableHash
3873
- ? mapForEach(
3874
- rowStampMaps,
3875
- (rowId, [, , rowHash]) =>
3876
- (objEnsure(rowHashes, tableId, objNew)[rowId] = rowHash),
3877
- )
3878
- : 0,
3879
- ),
3880
- );
3881
- return rowHashes;
3882
- };
3883
- const getMergeableRowDiff = (otherTableRowHashes) => {
3884
- const newRows = stampNewObj(contentStampMap[0][1]);
3885
- const differentRowHashes = {};
3886
- objForEach(otherTableRowHashes, (otherRowHashes, tableId) =>
3887
- mapForEach(
3888
- mapGet(contentStampMap[0][0], tableId)?.[0],
3889
- (rowId, [rowStampMap, rowTime, hash]) =>
3890
- objHas(otherRowHashes, rowId)
3891
- ? hash !== otherRowHashes[rowId]
3892
- ? (objEnsure(differentRowHashes, tableId, objNew)[rowId] = hash)
3893
- : 0
3894
- : (objEnsure(newRows[0], tableId, stampNewObj)[0][rowId] =
3895
- stampMapToObjWithoutHash([rowStampMap, rowTime])),
3896
- ),
3897
- );
3898
- return [newRows, differentRowHashes];
3899
- };
3900
- const getMergeableCellHashes = (otherTableRowHashes) => {
3901
- const cellHashes = {};
3902
- objForEach(otherTableRowHashes, (otherRowHashes, tableId) =>
3903
- ifNotUndefined(mapGet(contentStampMap[0][0], tableId), ([rowStampMaps]) =>
3904
- objForEach(otherRowHashes, (otherRowHash, rowId) =>
3905
- ifNotUndefined(
3906
- mapGet(rowStampMaps, rowId),
3907
- ([cellStampMaps, , rowHash]) =>
3908
- rowHash !== otherRowHash
3909
- ? mapForEach(
3910
- cellStampMaps,
3911
- (cellId, [, , cellHash]) =>
3912
- (objEnsure(
3913
- objEnsure(cellHashes, tableId, objNew),
3914
- rowId,
3915
- objNew,
3916
- )[cellId] = cellHash),
3917
- )
3918
- : 0,
3919
- ),
3920
- ),
3921
- ),
3922
- );
3923
- return cellHashes;
3924
- };
3925
- const getMergeableCellDiff = (otherTableRowCellHashes) => {
3926
- const [[tableStampMaps, tablesTime]] = contentStampMap;
3927
- const tablesObj = {};
3928
- objForEach(otherTableRowCellHashes, (otherRowCellHashes, tableId) =>
3929
- objForEach(otherRowCellHashes, (otherCellHashes, rowId) =>
3930
- ifNotUndefined(
3931
- mapGet(tableStampMaps, tableId),
3932
- ([rowStampMaps, tableTime]) =>
3933
- ifNotUndefined(
3934
- mapGet(rowStampMaps, rowId),
3935
- ([cellStampMaps, rowTime]) =>
3936
- mapForEach(cellStampMaps, (cellId, [cell, cellTime, hash]) =>
3937
- hash !== otherCellHashes[cellId]
3938
- ? (objEnsure(
3939
- objEnsure(tablesObj, tableId, () =>
3940
- stampNewObj(tableTime),
3941
- )[0],
3942
- rowId,
3943
- () => stampNewObj(rowTime),
3944
- )[0][cellId] = [cell, cellTime])
3945
- : 0,
3946
- ),
3947
- ),
3948
- ),
3949
- ),
3950
- );
3951
- return newStamp(tablesObj, tablesTime);
3952
- };
3953
- const getMergeableValuesHashes = () =>
3954
- mapToObj(contentStampMap[1][0], getStampHash);
3955
- const getMergeableValueDiff = (relativeTo) => {
3956
- const [, [valueStampMaps, valuesTime]] = contentStampMap;
3957
- const values = mapToObj(
3958
- valueStampMaps,
3959
- stampCloneWithoutHash,
3960
- ([, , hash], valueId) => hash == relativeTo?.[valueId],
3961
- );
3962
- return newStamp(values, valuesTime);
3963
- };
3964
- const setMergeableContent = (mergeableContent) =>
3965
- disableListeningToRawStoreChanges(() =>
3966
- validateMergeableContent(mergeableContent)
3967
- ? store.transaction(() => {
3968
- store.delTables().delValues();
3969
- contentStampMap = newContentStampMap();
3970
- store.applyChanges(mergeContentOrChanges(mergeableContent, 1));
3971
- })
3972
- : 0,
3973
- );
3974
- const setDefaultContent = (content) => {
3975
- store.transaction(() => {
3976
- defaultingContent = 1;
3977
- store.setContent(content);
3978
- defaultingContent = 0;
3979
- });
3980
- return mergeableStore;
3981
- };
3982
- const getTransactionMergeableChanges = () => {
3983
- const [[tableStampMaps, tablesTime], [valueStampMaps, valuesTime]] =
3984
- contentStampMap;
3985
- const tablesObj = {};
3986
- collForEach(touchedCells, (touchedTable, tableId) =>
3987
- ifNotUndefined(
3988
- mapGet(tableStampMaps, tableId),
3989
- ([rowStampMaps, tableTime]) => {
3990
- const tableObj = {};
3991
- collForEach(touchedTable, (touchedRow, rowId) =>
3992
- ifNotUndefined(
3993
- mapGet(rowStampMaps, rowId),
3994
- ([cellStampMaps, rowTime]) => {
3995
- const rowObj = {};
3996
- collForEach(touchedRow, (cellId) => {
3997
- ifNotUndefined(
3998
- mapGet(cellStampMaps, cellId),
3999
- ([cell, time]) => (rowObj[cellId] = newStamp(cell, time)),
4000
- );
4001
- });
4002
- tableObj[rowId] = newStamp(rowObj, rowTime);
4003
- },
4004
- ),
4005
- );
4006
- tablesObj[tableId] = newStamp(tableObj, tableTime);
4007
- },
4008
- ),
4009
- );
4010
- const valuesObj = {};
4011
- collForEach(touchedValues, (valueId) =>
4012
- ifNotUndefined(
4013
- mapGet(valueStampMaps, valueId),
4014
- ([value, time]) => (valuesObj[valueId] = newStamp(value, time)),
4015
- ),
4016
- );
4017
- return [
4018
- newStamp(tablesObj, tablesTime),
4019
- newStamp(valuesObj, valuesTime),
4020
- 1,
4021
- ];
4022
- };
4023
- const applyMergeableChanges = (mergeableChanges) =>
4024
- disableListeningToRawStoreChanges(() =>
4025
- store.applyChanges(mergeContentOrChanges(mergeableChanges)),
4026
- );
4027
- const merge = (mergeableStore2) => {
4028
- const mergeableChanges = getMergeableContent();
4029
- const mergeableChanges2 = mergeableStore2.getMergeableContent();
4030
- mergeableStore2.applyMergeableChanges(mergeableChanges);
4031
- return applyMergeableChanges(mergeableChanges2);
4032
- };
4033
- const mergeableStore = {
4034
- getMergeableContent,
4035
- getMergeableContentHashes,
4036
- getMergeableTableHashes,
4037
- getMergeableTableDiff,
4038
- getMergeableRowHashes,
4039
- getMergeableRowDiff,
4040
- getMergeableCellHashes,
4041
- getMergeableCellDiff,
4042
- getMergeableValuesHashes,
4043
- getMergeableValueDiff,
4044
- setMergeableContent,
4045
- setDefaultContent,
4046
- getTransactionMergeableChanges,
4047
- applyMergeableChanges,
4048
- merge,
4049
- };
4050
- store.setInternalListeners(
4051
- preStartTransaction,
4052
- preFinishTransaction,
4053
- postFinishTransaction,
4054
- cellChanged,
4055
- valueChanged,
4056
- );
4057
- objToArray(
4058
- store,
4059
- (method, name) =>
4060
- (mergeableStore[name] = // fluent methods
4061
- strStartsWith(name, 'set') ||
4062
- strStartsWith(name, 'del') ||
4063
- strStartsWith(name, 'apply') ||
4064
- strEndsWith(name, 'Transaction') ||
4065
- name == 'callListener'
4066
- ? (...args) => {
4067
- method(...args);
4068
- return mergeableStore;
4069
- }
4070
- : strStartsWith(name, 'add') && strEndsWith(name, 'Listener')
4071
- ? (...args) => {
4072
- const listenerArg = LISTENER_ARGS[slice(name, 3, -8)] ?? 0;
4073
- const listener = args[listenerArg];
4074
- args[listenerArg] = (_store, ...args2) =>
4075
- listener(mergeableStore, ...args2);
4076
- return method(...args);
4077
- }
4078
- : method),
4079
- );
4080
- return objFreeze(mergeableStore);
4081
- };
4082
-
4083
- export {
4084
- createCheckpoints,
4085
- createCustomPersister,
4086
- createCustomSynchronizer,
4087
- createIndexes,
4088
- createMergeableStore,
4089
- createMetrics,
4090
- createQueries,
4091
- createRelationships,
4092
- createStore,
4093
- defaultSorter,
4094
- getUniqueId,
4095
- };