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