tinybase 5.0.0-beta.0 → 5.0.0-beta.10

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 (493) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/cjs/checkpoints.cjs +1 -1
  5. package/lib/cjs/checkpoints.cjs.gz +0 -0
  6. package/lib/cjs/indexes.cjs +1 -1
  7. package/lib/cjs/indexes.cjs.gz +0 -0
  8. package/lib/cjs/mergeable-store.cjs +1 -0
  9. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  10. package/lib/cjs/metrics.cjs +1 -1
  11. package/lib/cjs/metrics.cjs.gz +0 -0
  12. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  13. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  14. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  15. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  17. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  18. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  19. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  21. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  23. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  24. package/lib/cjs/persisters/persister-file.cjs +1 -1
  25. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  26. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  27. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  29. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  30. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  31. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  32. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  33. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  34. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  35. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  36. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  37. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  39. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  40. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  41. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  42. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  43. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  44. package/lib/cjs/persisters.cjs +1 -1
  45. package/lib/cjs/persisters.cjs.gz +0 -0
  46. package/lib/cjs/queries.cjs +1 -1
  47. package/lib/cjs/queries.cjs.gz +0 -0
  48. package/lib/cjs/relationships.cjs +1 -1
  49. package/lib/cjs/relationships.cjs.gz +0 -0
  50. package/lib/cjs/store.cjs +1 -1
  51. package/lib/cjs/store.cjs.gz +0 -0
  52. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  53. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  54. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  55. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  56. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  57. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  58. package/lib/cjs/synchronizers.cjs +1 -0
  59. package/lib/cjs/synchronizers.cjs.gz +0 -0
  60. package/lib/cjs/tinybase.cjs +1 -1
  61. package/lib/cjs/tinybase.cjs.gz +0 -0
  62. package/lib/cjs/tools.cjs +1 -1
  63. package/lib/cjs/tools.cjs.gz +0 -0
  64. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  65. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  66. package/lib/cjs/ui-react-dom.cjs +1 -1
  67. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  68. package/lib/cjs/ui-react.cjs +1 -1
  69. package/lib/cjs/ui-react.cjs.gz +0 -0
  70. package/lib/cjs-es6/checkpoints.cjs +1 -1
  71. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  72. package/lib/cjs-es6/indexes.cjs +1 -1
  73. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  74. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  75. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  76. package/lib/cjs-es6/metrics.cjs +1 -1
  77. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  78. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  79. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  80. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  81. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  82. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  83. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  84. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  85. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  86. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  87. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  88. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  89. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  90. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  91. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  92. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  93. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  94. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  95. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  96. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  97. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  98. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  99. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  100. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  101. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  102. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  103. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  104. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  105. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  106. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  107. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  108. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  109. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  110. package/lib/cjs-es6/persisters.cjs +1 -1
  111. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  112. package/lib/cjs-es6/queries.cjs +1 -1
  113. package/lib/cjs-es6/queries.cjs.gz +0 -0
  114. package/lib/cjs-es6/relationships.cjs +1 -1
  115. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  116. package/lib/cjs-es6/store.cjs +1 -1
  117. package/lib/cjs-es6/store.cjs.gz +0 -0
  118. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  119. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  120. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  121. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  122. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  123. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  124. package/lib/cjs-es6/synchronizers.cjs +1 -0
  125. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  126. package/lib/cjs-es6/tinybase.cjs +1 -1
  127. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  128. package/lib/cjs-es6/tools.cjs +1 -1
  129. package/lib/cjs-es6/tools.cjs.gz +0 -0
  130. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  131. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  132. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  133. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  134. package/lib/cjs-es6/ui-react.cjs +1 -1
  135. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  136. package/lib/debug/checkpoints.js +254 -235
  137. package/lib/debug/indexes.js +10 -6
  138. package/lib/debug/mergeable-store.js +2230 -0
  139. package/lib/debug/metrics.js +10 -6
  140. package/lib/debug/persisters/persister-automerge.js +113 -87
  141. package/lib/debug/persisters/persister-browser.js +95 -57
  142. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +175 -109
  143. package/lib/debug/persisters/persister-electric-sql.js +176 -109
  144. package/lib/debug/persisters/persister-expo-sqlite-next.js +176 -110
  145. package/lib/debug/persisters/persister-expo-sqlite.js +175 -109
  146. package/lib/debug/persisters/persister-file.js +94 -57
  147. package/lib/debug/persisters/persister-indexed-db.js +94 -57
  148. package/lib/debug/persisters/persister-libsql.js +913 -0
  149. package/lib/debug/persisters/persister-partykit-client.js +90 -59
  150. package/lib/debug/persisters/persister-partykit-server.js +19 -26
  151. package/lib/debug/persisters/persister-powersync.js +928 -0
  152. package/lib/debug/persisters/persister-remote.js +86 -53
  153. package/lib/debug/persisters/persister-sqlite-wasm.js +175 -109
  154. package/lib/debug/persisters/persister-sqlite3.js +175 -109
  155. package/lib/debug/persisters/persister-yjs.js +111 -84
  156. package/lib/debug/persisters.js +82 -50
  157. package/lib/debug/queries.js +18 -12
  158. package/lib/debug/relationships.js +10 -6
  159. package/lib/debug/store.js +150 -127
  160. package/lib/debug/synchronizers/synchronizer-local.js +559 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-client.js +586 -0
  162. package/lib/debug/synchronizers/synchronizer-ws-server.js +96 -0
  163. package/lib/debug/synchronizers.js +519 -0
  164. package/lib/debug/tinybase.js +1281 -409
  165. package/lib/debug/tools.js +41 -64
  166. package/lib/debug/ui-react-dom.js +277 -213
  167. package/lib/debug/ui-react.js +213 -198
  168. package/lib/es6/checkpoints.js +1 -1
  169. package/lib/es6/checkpoints.js.gz +0 -0
  170. package/lib/es6/indexes.js +1 -1
  171. package/lib/es6/indexes.js.gz +0 -0
  172. package/lib/es6/mergeable-store.js +1 -0
  173. package/lib/es6/mergeable-store.js.gz +0 -0
  174. package/lib/es6/metrics.js +1 -1
  175. package/lib/es6/metrics.js.gz +0 -0
  176. package/lib/es6/persisters/persister-automerge.js +1 -1
  177. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  178. package/lib/es6/persisters/persister-browser.js +1 -1
  179. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  180. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  181. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  182. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  183. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  184. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  185. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  186. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  187. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  188. package/lib/es6/persisters/persister-file.js +1 -1
  189. package/lib/es6/persisters/persister-file.js.gz +0 -0
  190. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  191. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  192. package/lib/es6/persisters/persister-libsql.js +1 -0
  193. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  194. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  195. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  196. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  197. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  198. package/lib/es6/persisters/persister-powersync.js +1 -0
  199. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  200. package/lib/es6/persisters/persister-remote.js +1 -1
  201. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  202. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  203. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  204. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  205. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  206. package/lib/es6/persisters/persister-yjs.js +1 -1
  207. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  208. package/lib/es6/persisters.js +1 -1
  209. package/lib/es6/persisters.js.gz +0 -0
  210. package/lib/es6/queries.js +1 -1
  211. package/lib/es6/queries.js.gz +0 -0
  212. package/lib/es6/relationships.js +1 -1
  213. package/lib/es6/relationships.js.gz +0 -0
  214. package/lib/es6/store.js +1 -1
  215. package/lib/es6/store.js.gz +0 -0
  216. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  217. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  218. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  219. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  220. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  221. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  222. package/lib/es6/synchronizers.js +1 -0
  223. package/lib/es6/synchronizers.js.gz +0 -0
  224. package/lib/es6/tinybase.js +1 -1
  225. package/lib/es6/tinybase.js.gz +0 -0
  226. package/lib/es6/tools.js +1 -1
  227. package/lib/es6/tools.js.gz +0 -0
  228. package/lib/es6/ui-react-dom-debug.js +1 -1
  229. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  230. package/lib/es6/ui-react-dom.js +1 -1
  231. package/lib/es6/ui-react-dom.js.gz +0 -0
  232. package/lib/es6/ui-react.js +1 -1
  233. package/lib/es6/ui-react.js.gz +0 -0
  234. package/lib/indexes.js +1 -1
  235. package/lib/indexes.js.gz +0 -0
  236. package/lib/mergeable-store.js +1 -0
  237. package/lib/mergeable-store.js.gz +0 -0
  238. package/lib/metrics.js +1 -1
  239. package/lib/metrics.js.gz +0 -0
  240. package/lib/persisters/persister-automerge.js +1 -1
  241. package/lib/persisters/persister-automerge.js.gz +0 -0
  242. package/lib/persisters/persister-browser.js +1 -1
  243. package/lib/persisters/persister-browser.js.gz +0 -0
  244. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  245. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  246. package/lib/persisters/persister-electric-sql.js +1 -1
  247. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  248. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  249. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  250. package/lib/persisters/persister-expo-sqlite.js +1 -1
  251. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  252. package/lib/persisters/persister-file.js +1 -1
  253. package/lib/persisters/persister-file.js.gz +0 -0
  254. package/lib/persisters/persister-indexed-db.js +1 -1
  255. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  256. package/lib/persisters/persister-libsql.js +1 -0
  257. package/lib/persisters/persister-libsql.js.gz +0 -0
  258. package/lib/persisters/persister-partykit-client.js +1 -1
  259. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  260. package/lib/persisters/persister-partykit-server.js +1 -1
  261. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  262. package/lib/persisters/persister-powersync.js +1 -0
  263. package/lib/persisters/persister-powersync.js.gz +0 -0
  264. package/lib/persisters/persister-remote.js +1 -1
  265. package/lib/persisters/persister-remote.js.gz +0 -0
  266. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  267. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  268. package/lib/persisters/persister-sqlite3.js +1 -1
  269. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  270. package/lib/persisters/persister-yjs.js +1 -1
  271. package/lib/persisters/persister-yjs.js.gz +0 -0
  272. package/lib/persisters.js +1 -1
  273. package/lib/persisters.js.gz +0 -0
  274. package/lib/queries.js +1 -1
  275. package/lib/queries.js.gz +0 -0
  276. package/lib/relationships.js +1 -1
  277. package/lib/relationships.js.gz +0 -0
  278. package/lib/store.js +1 -1
  279. package/lib/store.js.gz +0 -0
  280. package/lib/synchronizers/synchronizer-local.js +1 -0
  281. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  282. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  283. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  284. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  285. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  286. package/lib/synchronizers.js +1 -0
  287. package/lib/synchronizers.js.gz +0 -0
  288. package/lib/tinybase.js +1 -1
  289. package/lib/tinybase.js.gz +0 -0
  290. package/lib/tools.js +1 -1
  291. package/lib/tools.js.gz +0 -0
  292. package/lib/types/checkpoints.d.ts +2 -2
  293. package/lib/types/indexes.d.ts +2 -2
  294. package/lib/types/mergeable-store.d.ts +214 -0
  295. package/lib/types/metrics.d.ts +2 -2
  296. package/lib/types/persisters/persister-automerge.d.ts +11 -7
  297. package/lib/types/persisters/persister-browser.d.ts +13 -4
  298. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
  299. package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
  300. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +7 -3
  301. package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
  302. package/lib/types/persisters/persister-file.d.ts +7 -2
  303. package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
  304. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  305. package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
  306. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  307. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  308. package/lib/types/persisters/persister-remote.d.ts +4 -0
  309. package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
  310. package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
  311. package/lib/types/persisters/persister-yjs.d.ts +6 -2
  312. package/lib/types/persisters.d.ts +125 -48
  313. package/lib/types/queries.d.ts +2 -2
  314. package/lib/types/relationships.d.ts +2 -2
  315. package/lib/types/store.d.ts +275 -187
  316. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  317. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
  318. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +36 -0
  319. package/lib/types/synchronizers.d.ts +132 -0
  320. package/lib/types/tinybase.d.ts +10 -8
  321. package/lib/types/tools.d.ts +4 -4
  322. package/lib/types/ui-react.d.ts +235 -95
  323. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  324. package/lib/types/with-schemas/indexes.d.ts +2 -2
  325. package/lib/types/with-schemas/internal/queries.d.ts +4 -3
  326. package/lib/types/with-schemas/internal/store.d.ts +8 -3
  327. package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
  328. package/lib/types/with-schemas/metrics.d.ts +2 -2
  329. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
  330. package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
  331. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
  332. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
  333. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +8 -4
  334. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
  335. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
  336. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
  337. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  338. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
  339. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  340. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  341. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
  342. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
  343. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
  344. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
  345. package/lib/types/with-schemas/persisters.d.ts +161 -101
  346. package/lib/types/with-schemas/queries.d.ts +3 -3
  347. package/lib/types/with-schemas/relationships.d.ts +2 -2
  348. package/lib/types/with-schemas/store.d.ts +483 -345
  349. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  350. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
  351. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +36 -0
  352. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  353. package/lib/types/with-schemas/tinybase.d.ts +9 -8
  354. package/lib/types/with-schemas/tools.d.ts +4 -4
  355. package/lib/types/with-schemas/ui-react.d.ts +259 -102
  356. package/lib/ui-react-dom.js +1 -1
  357. package/lib/ui-react-dom.js.gz +0 -0
  358. package/lib/ui-react.js +1 -1
  359. package/lib/ui-react.js.gz +0 -0
  360. package/lib/umd/checkpoints.js +1 -1
  361. package/lib/umd/checkpoints.js.gz +0 -0
  362. package/lib/umd/indexes.js +1 -1
  363. package/lib/umd/indexes.js.gz +0 -0
  364. package/lib/umd/mergeable-store.js +1 -0
  365. package/lib/umd/mergeable-store.js.gz +0 -0
  366. package/lib/umd/metrics.js +1 -1
  367. package/lib/umd/metrics.js.gz +0 -0
  368. package/lib/umd/persisters/persister-automerge.js +1 -1
  369. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  370. package/lib/umd/persisters/persister-browser.js +1 -1
  371. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  372. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  373. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  374. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  375. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  376. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  377. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  378. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  379. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  380. package/lib/umd/persisters/persister-file.js +1 -1
  381. package/lib/umd/persisters/persister-file.js.gz +0 -0
  382. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  383. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  384. package/lib/umd/persisters/persister-libsql.js +1 -0
  385. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  386. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  387. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  388. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  389. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  390. package/lib/umd/persisters/persister-powersync.js +1 -0
  391. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  392. package/lib/umd/persisters/persister-remote.js +1 -1
  393. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  394. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  395. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  396. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  397. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  398. package/lib/umd/persisters/persister-yjs.js +1 -1
  399. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  400. package/lib/umd/persisters.js +1 -1
  401. package/lib/umd/persisters.js.gz +0 -0
  402. package/lib/umd/queries.js +1 -1
  403. package/lib/umd/queries.js.gz +0 -0
  404. package/lib/umd/relationships.js +1 -1
  405. package/lib/umd/relationships.js.gz +0 -0
  406. package/lib/umd/store.js +1 -1
  407. package/lib/umd/store.js.gz +0 -0
  408. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  409. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  410. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  411. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  412. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  413. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  414. package/lib/umd/synchronizers.js +1 -0
  415. package/lib/umd/synchronizers.js.gz +0 -0
  416. package/lib/umd/tinybase.js +1 -1
  417. package/lib/umd/tinybase.js.gz +0 -0
  418. package/lib/umd/tools.js +1 -1
  419. package/lib/umd/tools.js.gz +0 -0
  420. package/lib/umd/ui-react-dom-debug.js +1 -1
  421. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  422. package/lib/umd/ui-react-dom.js +1 -1
  423. package/lib/umd/ui-react-dom.js.gz +0 -0
  424. package/lib/umd/ui-react.js +1 -1
  425. package/lib/umd/ui-react.js.gz +0 -0
  426. package/lib/umd-es6/checkpoints.js +1 -1
  427. package/lib/umd-es6/checkpoints.js.gz +0 -0
  428. package/lib/umd-es6/indexes.js +1 -1
  429. package/lib/umd-es6/indexes.js.gz +0 -0
  430. package/lib/umd-es6/mergeable-store.js +1 -0
  431. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  432. package/lib/umd-es6/metrics.js +1 -1
  433. package/lib/umd-es6/metrics.js.gz +0 -0
  434. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  435. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  436. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  437. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  438. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  439. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  440. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  441. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  442. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  443. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  444. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  445. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  446. package/lib/umd-es6/persisters/persister-file.js +1 -1
  447. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  448. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  449. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  450. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  451. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  452. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  453. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  454. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  455. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  456. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  457. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  458. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  459. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  460. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  461. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  462. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  463. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  464. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  465. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  466. package/lib/umd-es6/persisters.js +1 -1
  467. package/lib/umd-es6/persisters.js.gz +0 -0
  468. package/lib/umd-es6/queries.js +1 -1
  469. package/lib/umd-es6/queries.js.gz +0 -0
  470. package/lib/umd-es6/relationships.js +1 -1
  471. package/lib/umd-es6/relationships.js.gz +0 -0
  472. package/lib/umd-es6/store.js +1 -1
  473. package/lib/umd-es6/store.js.gz +0 -0
  474. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  475. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  476. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  477. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  478. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  479. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  480. package/lib/umd-es6/synchronizers.js +1 -0
  481. package/lib/umd-es6/synchronizers.js.gz +0 -0
  482. package/lib/umd-es6/tinybase.js +1 -1
  483. package/lib/umd-es6/tinybase.js.gz +0 -0
  484. package/lib/umd-es6/tools.js +1 -1
  485. package/lib/umd-es6/tools.js.gz +0 -0
  486. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  487. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  488. package/lib/umd-es6/ui-react-dom.js +1 -1
  489. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  490. package/lib/umd-es6/ui-react.js +1 -1
  491. package/lib/umd-es6/ui-react.js.gz +0 -0
  492. package/package.json +68 -48
  493. package/readme.md +2 -2
@@ -33,16 +33,46 @@ const isArray = (thing) => Array.isArray(thing);
33
33
  const size = (arrayOrString) => arrayOrString.length;
34
34
  const getUndefined = () => void 0;
35
35
 
36
+ const arrayEvery = (array, cb) => array.every(cb);
37
+ const arrayIsEqual = (array1, array2) =>
38
+ size(array1) === size(array2) &&
39
+ arrayEvery(array1, (value1, index) => array2[index] === value1);
36
40
  const arrayMap = (array, cb) => array.map(cb);
37
41
  const arrayIsEmpty = (array) => size(array) == 0;
38
42
 
39
43
  const object = Object;
44
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
45
+ const objEntries = object.entries;
46
+ const isObject = (obj) =>
47
+ !isUndefined(obj) &&
48
+ ifNotUndefined(
49
+ getPrototypeOf(obj),
50
+ (objPrototype) =>
51
+ objPrototype == object.prototype ||
52
+ isUndefined(getPrototypeOf(objPrototype)),
53
+ /* istanbul ignore next */
54
+ () => true,
55
+ );
40
56
  const objIds = object.keys;
41
57
  const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
42
58
  const objDel = (obj, id) => {
43
59
  delete obj[id];
44
60
  return obj;
45
61
  };
62
+ const objSize = (obj) => size(objIds(obj));
63
+ const objIsEqual = (obj1, obj2) => {
64
+ const entries1 = objEntries(obj1);
65
+ return (
66
+ size(entries1) === objSize(obj2) &&
67
+ arrayEvery(entries1, ([index, value1]) =>
68
+ isObject(value1)
69
+ ? isObject(obj2[index])
70
+ ? objIsEqual(obj2[index], value1)
71
+ : false
72
+ : obj2[index] === value1,
73
+ )
74
+ );
75
+ };
46
76
 
47
77
  const {createContext, useContext: useContext$1, useEffect: useEffect$1} = React;
48
78
  const Context = createContext([]);
@@ -99,49 +129,67 @@ const {
99
129
  useLayoutEffect: useLayoutEffect$1,
100
130
  useRef: useRef$1,
101
131
  useState: useState$2,
132
+ useSyncExternalStore,
102
133
  } = React;
103
134
  const EMPTY_ARRAY = [];
104
- const EMPTY_OBJECT = {};
105
- const DEFAULT_CHECKPOINT_IDS = [[], void 0, []];
135
+ const DEFAULTS = [{}, [], [EMPTY_ARRAY, void 0, EMPTY_ARRAY], void 0, false, 0];
136
+ const IS_EQUAL = (thing1, thing2) => thing1 === thing2;
137
+ const IS_EQUALS = [
138
+ objIsEqual,
139
+ arrayIsEqual,
140
+ (
141
+ [backwardIds1, currentId1, forwardIds1],
142
+ [backwardIds2, currentId2, forwardIds2],
143
+ ) =>
144
+ currentId1 === currentId2 &&
145
+ arrayIsEqual(backwardIds1, backwardIds2) &&
146
+ arrayIsEqual(forwardIds1, forwardIds2),
147
+ ];
106
148
  const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
107
- const thing = useMemo$1(
108
- () => create(store),
149
+ const [, rerender] = useState$2();
150
+ const [thing, setThing] = useState$2();
151
+ useEffect(
152
+ () => {
153
+ const newThing = create(store);
154
+ setThing(newThing);
155
+ rerender([]);
156
+ return newThing.destroy;
157
+ },
109
158
  // eslint-disable-next-line react-hooks/exhaustive-deps
110
159
  [store, ...createDeps],
111
160
  );
112
- useEffect(() => () => thing.destroy(), [thing]);
113
161
  return thing;
114
162
  };
115
- const useListenable = (
116
- listenable,
117
- thing,
118
- defaulted,
119
- args = EMPTY_ARRAY,
120
- getFromListenerArg,
121
- getterPrefix = GET,
122
- listenerPrefix = EMPTY_STRING,
123
- ) => {
124
- const [, rerender] = useState$2();
163
+ const addAndDelListener = (thing, listenable, ...args) => {
164
+ const listenerId = thing?.[ADD + listenable + LISTENER]?.(...args);
165
+ return () => thing?.delListener(listenerId);
166
+ };
167
+ const useListenable = (listenable, thing, type, args = EMPTY_ARRAY) => {
168
+ const lastResult = useRef$1(DEFAULTS[type]);
125
169
  const getResult = useCallback$2(
126
- () => thing?.[getterPrefix + listenable]?.(...args) ?? defaulted,
127
- /* eslint-disable-next-line react-hooks/exhaustive-deps */
128
- [thing, listenable, ...args, defaulted],
129
- );
130
- const result = useRef$1();
131
- useMemo$1(() => (result.current = getResult()), [getResult]);
132
- useListener(
133
- listenerPrefix + listenable,
134
- thing,
135
- (...listenerArgs) => {
136
- result.current = isUndefined(getFromListenerArg)
137
- ? getResult()
138
- : listenerArgs[getFromListenerArg];
139
- rerender([]);
170
+ () => {
171
+ const nextResult =
172
+ thing?.[(type == 4 ? _HAS : GET) + listenable]?.(...args) ??
173
+ DEFAULTS[type];
174
+ return !(IS_EQUALS[type] ?? IS_EQUAL)(nextResult, lastResult.current)
175
+ ? (lastResult.current = nextResult)
176
+ : lastResult.current;
140
177
  },
141
- [getResult, getFromListenerArg],
142
- args,
178
+ /* eslint-disable-next-line react-hooks/exhaustive-deps */
179
+ [thing, type, listenable, ...args],
180
+ );
181
+ const subscribe = useCallback$2(
182
+ (listener) =>
183
+ addAndDelListener(
184
+ thing,
185
+ (type == 4 ? HAS : EMPTY_STRING) + listenable,
186
+ ...args,
187
+ listener,
188
+ ),
189
+ /* eslint-disable-next-line react-hooks/exhaustive-deps */
190
+ [thing, type, listenable, ...args],
143
191
  );
144
- return result.current;
192
+ return useSyncExternalStore(subscribe, getResult);
145
193
  };
146
194
  const useListener = (
147
195
  listenable,
@@ -151,14 +199,12 @@ const useListener = (
151
199
  preArgs = EMPTY_ARRAY,
152
200
  ...postArgs
153
201
  ) =>
154
- useLayoutEffect$1(() => {
155
- const listenerId = thing?.[ADD + listenable + LISTENER]?.(
156
- ...preArgs,
157
- listener,
158
- ...postArgs,
159
- );
160
- return () => thing?.delListener(listenerId);
161
- }, [thing, listenable, ...preArgs, ...listenerDeps, ...postArgs]);
202
+ useLayoutEffect$1(
203
+ () =>
204
+ addAndDelListener(thing, listenable, ...preArgs, listener, ...postArgs),
205
+ // eslint-disable-next-line react-hooks/exhaustive-deps
206
+ [thing, listenable, ...preArgs, ...listenerDeps, ...postArgs],
207
+ );
162
208
  const useSetCallback = (
163
209
  storeOrStoreId,
164
210
  settable,
@@ -214,58 +260,32 @@ const useCheckpointAction = (checkpointsOrCheckpointsId, action, arg) => {
214
260
  };
215
261
  const useCreateStore = (create, createDeps = EMPTY_ARRAY) =>
216
262
  useMemo$1(create, createDeps);
263
+ const useCreateMergeableStore = (create, createDeps = EMPTY_ARRAY) =>
264
+ useMemo$1(create, createDeps);
217
265
  const useStoreIds = () => useThingIds(1);
218
266
  const useHasTables = (storeOrStoreId) =>
219
- useListenable(
220
- TABLES,
221
- useStoreOrStoreById(storeOrStoreId),
222
- false,
223
- [],
224
- 1,
225
- _HAS,
226
- HAS,
227
- );
267
+ useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), 4, []);
228
268
  const useTables = (storeOrStoreId) =>
229
- useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT);
269
+ useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), 0);
230
270
  const useTableIds = (storeOrStoreId) =>
231
- useListenable(TABLE_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY);
271
+ useListenable(TABLE_IDS, useStoreOrStoreById(storeOrStoreId), 1);
232
272
  const useHasTable = (tableId, storeOrStoreId) =>
233
- useListenable(
234
- TABLE,
235
- useStoreOrStoreById(storeOrStoreId),
236
- false,
237
- [tableId],
238
- 2,
239
- _HAS,
240
- HAS,
241
- );
273
+ useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), 4, [tableId]);
242
274
  const useTable = (tableId, storeOrStoreId) =>
243
- useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT, [
275
+ useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), 0, [tableId]);
276
+ const useTableCellIds = (tableId, storeOrStoreId) =>
277
+ useListenable(TABLE + CELL_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
244
278
  tableId,
245
279
  ]);
246
- const useTableCellIds = (tableId, storeOrStoreId) =>
247
- useListenable(
248
- TABLE + CELL_IDS,
249
- useStoreOrStoreById(storeOrStoreId),
250
- EMPTY_ARRAY,
251
- [tableId],
252
- );
253
280
  const useHasTableCell = (tableId, cellId, storeOrStoreId) =>
254
- useListenable(
255
- TABLE + CELL,
256
- useStoreOrStoreById(storeOrStoreId),
257
- false,
258
- [tableId, cellId],
259
- 3,
260
- _HAS,
261
- HAS,
262
- );
263
- const useRowCount = (tableId, storeOrStoreId) =>
264
- useListenable(ROW_COUNT, useStoreOrStoreById(storeOrStoreId), 0, [tableId]);
265
- const useRowIds = (tableId, storeOrStoreId) =>
266
- useListenable(ROW_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY, [
281
+ useListenable(TABLE + CELL, useStoreOrStoreById(storeOrStoreId), 4, [
267
282
  tableId,
283
+ cellId,
268
284
  ]);
285
+ const useRowCount = (tableId, storeOrStoreId) =>
286
+ useListenable(ROW_COUNT, useStoreOrStoreById(storeOrStoreId), 5, [tableId]);
287
+ const useRowIds = (tableId, storeOrStoreId) =>
288
+ useListenable(ROW_IDS, useStoreOrStoreById(storeOrStoreId), 1, [tableId]);
269
289
  const useSortedRowIds = (
270
290
  tableId,
271
291
  cellId,
@@ -274,77 +294,44 @@ const useSortedRowIds = (
274
294
  limit,
275
295
  storeOrStoreId,
276
296
  ) =>
277
- useListenable(
278
- SORTED_ROW_IDS,
279
- useStoreOrStoreById(storeOrStoreId),
280
- EMPTY_ARRAY,
281
- [tableId, cellId, descending, offset, limit],
282
- 6,
283
- );
297
+ useListenable(SORTED_ROW_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
298
+ tableId,
299
+ cellId,
300
+ descending,
301
+ offset,
302
+ limit,
303
+ ]);
284
304
  const useHasRow = (tableId, rowId, storeOrStoreId) =>
285
- useListenable(
286
- ROW,
287
- useStoreOrStoreById(storeOrStoreId),
288
- false,
289
- [tableId, rowId],
290
- 3,
291
- _HAS,
292
- HAS,
293
- );
305
+ useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 4, [tableId, rowId]);
294
306
  const useRow = (tableId, rowId, storeOrStoreId) =>
295
- useListenable(ROW, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT, [
307
+ useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 0, [tableId, rowId]);
308
+ const useCellIds = (tableId, rowId, storeOrStoreId) =>
309
+ useListenable(CELL_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
296
310
  tableId,
297
311
  rowId,
298
312
  ]);
299
- const useCellIds = (tableId, rowId, storeOrStoreId) =>
300
- useListenable(CELL_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY, [
313
+ const useHasCell = (tableId, rowId, cellId, storeOrStoreId) =>
314
+ useListenable(CELL, useStoreOrStoreById(storeOrStoreId), 4, [
301
315
  tableId,
302
316
  rowId,
317
+ cellId,
303
318
  ]);
304
- const useHasCell = (tableId, rowId, cellId, storeOrStoreId) =>
305
- useListenable(
306
- CELL,
307
- useStoreOrStoreById(storeOrStoreId),
308
- false,
309
- [tableId, rowId, cellId],
310
- 4,
311
- _HAS,
312
- HAS,
313
- );
314
319
  const useCell = (tableId, rowId, cellId, storeOrStoreId) =>
315
- useListenable(
316
- CELL,
317
- useStoreOrStoreById(storeOrStoreId),
318
- void 0,
319
- [tableId, rowId, cellId],
320
- 4,
321
- );
320
+ useListenable(CELL, useStoreOrStoreById(storeOrStoreId), 3, [
321
+ tableId,
322
+ rowId,
323
+ cellId,
324
+ ]);
322
325
  const useHasValues = (storeOrStoreId) =>
323
- useListenable(
324
- VALUES,
325
- useStoreOrStoreById(storeOrStoreId),
326
- false,
327
- [],
328
- 1,
329
- _HAS,
330
- HAS,
331
- );
326
+ useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), 4, []);
332
327
  const useValues = (storeOrStoreId) =>
333
- useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT);
328
+ useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), 0);
334
329
  const useValueIds = (storeOrStoreId) =>
335
- useListenable(VALUE_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY);
330
+ useListenable(VALUE_IDS, useStoreOrStoreById(storeOrStoreId), 1);
336
331
  const useHasValue = (valueId, storeOrStoreId) =>
337
- useListenable(
338
- VALUE,
339
- useStoreOrStoreById(storeOrStoreId),
340
- false,
341
- [valueId],
342
- 2,
343
- _HAS,
344
- HAS,
345
- );
332
+ useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), 4, [valueId]);
346
333
  const useValue = (valueId, storeOrStoreId) =>
347
- useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), void 0, [valueId]);
334
+ useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), 3, [valueId]);
348
335
  const useSetTablesCallback = (
349
336
  getTables,
350
337
  getTablesDeps,
@@ -860,13 +847,9 @@ const useCreateMetrics = (store, create, createDeps) =>
860
847
  useCreate(store, create, createDeps);
861
848
  const useMetricsIds = () => useThingIds(3);
862
849
  const useMetricIds = (metricsOrMetricsId) =>
863
- useListenable(
864
- 'MetricIds',
865
- useMetricsOrMetricsById(metricsOrMetricsId),
866
- EMPTY_ARRAY,
867
- );
850
+ useListenable('MetricIds', useMetricsOrMetricsById(metricsOrMetricsId), 1);
868
851
  const useMetric = (metricId, metricsOrMetricsId) =>
869
- useListenable('Metric', useMetricsOrMetricsById(metricsOrMetricsId), void 0, [
852
+ useListenable('Metric', useMetricsOrMetricsById(metricsOrMetricsId), 3, [
870
853
  metricId,
871
854
  ]);
872
855
  const useMetricListener = (
@@ -886,23 +869,16 @@ const useCreateIndexes = (store, create, createDeps) =>
886
869
  useCreate(store, create, createDeps);
887
870
  const useIndexesIds = () => useThingIds(5);
888
871
  const useSliceIds = (indexId, indexesOrIndexesId) =>
889
- useListenable(
890
- 'SliceIds',
891
- useIndexesOrIndexesById(indexesOrIndexesId),
892
- EMPTY_ARRAY,
893
- [indexId],
894
- );
872
+ useListenable('SliceIds', useIndexesOrIndexesById(indexesOrIndexesId), 1, [
873
+ indexId,
874
+ ]);
895
875
  const useIndexIds = (indexesOrIndexesId) =>
896
- useListenable(
897
- 'IndexIds',
898
- useIndexesOrIndexesById(indexesOrIndexesId),
899
- EMPTY_ARRAY,
900
- );
876
+ useListenable('IndexIds', useIndexesOrIndexesById(indexesOrIndexesId), 1);
901
877
  const useSliceRowIds = (indexId, sliceId, indexesOrIndexesId) =>
902
878
  useListenable(
903
879
  'Slice' + ROW_IDS,
904
880
  useIndexesOrIndexesById(indexesOrIndexesId),
905
- EMPTY_ARRAY,
881
+ 1,
906
882
  [indexId, sliceId],
907
883
  );
908
884
  const useSliceIdsListener = (
@@ -939,7 +915,7 @@ const useRelationshipIds = (relationshipsOrRelationshipsId) =>
939
915
  useListenable(
940
916
  'RelationshipIds',
941
917
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
942
- EMPTY_ARRAY,
918
+ 1,
943
919
  );
944
920
  const useRemoteRowId = (
945
921
  relationshipId,
@@ -949,7 +925,7 @@ const useRemoteRowId = (
949
925
  useListenable(
950
926
  'RemoteRowId',
951
927
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
952
- void 0,
928
+ 3,
953
929
  [relationshipId, localRowId],
954
930
  );
955
931
  const useLocalRowIds = (
@@ -960,7 +936,7 @@ const useLocalRowIds = (
960
936
  useListenable(
961
937
  'Local' + ROW_IDS,
962
938
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
963
- EMPTY_ARRAY,
939
+ 1,
964
940
  [relationshipId, remoteRowId],
965
941
  );
966
942
  const useLinkedRowIds = (
@@ -971,7 +947,7 @@ const useLinkedRowIds = (
971
947
  useListenable(
972
948
  'Linked' + ROW_IDS,
973
949
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
974
- EMPTY_ARRAY,
950
+ 1,
975
951
  [relationshipId, firstRowId],
976
952
  );
977
953
  const useRemoteRowIdListener = (
@@ -1020,37 +996,33 @@ const useCreateQueries = (store, create, createDeps) =>
1020
996
  useCreate(store, create, createDeps);
1021
997
  const useQueriesIds = () => useThingIds(9);
1022
998
  const useQueryIds = (queriesOrQueriesId) =>
1023
- useListenable(
1024
- 'QueryIds',
1025
- useQueriesOrQueriesById(queriesOrQueriesId),
1026
- EMPTY_ARRAY,
1027
- );
999
+ useListenable('QueryIds', useQueriesOrQueriesById(queriesOrQueriesId), 1);
1028
1000
  const useResultTable = (queryId, queriesOrQueriesId) =>
1029
1001
  useListenable(
1030
1002
  RESULT + TABLE,
1031
1003
  useQueriesOrQueriesById(queriesOrQueriesId),
1032
- EMPTY_OBJECT,
1004
+ 0,
1033
1005
  [queryId],
1034
1006
  );
1035
1007
  const useResultTableCellIds = (queryId, queriesOrQueriesId) =>
1036
1008
  useListenable(
1037
1009
  RESULT + TABLE + CELL_IDS,
1038
1010
  useQueriesOrQueriesById(queriesOrQueriesId),
1039
- EMPTY_ARRAY,
1011
+ 1,
1040
1012
  [queryId],
1041
1013
  );
1042
1014
  const useResultRowCount = (queryId, queriesOrQueriesId) =>
1043
1015
  useListenable(
1044
1016
  RESULT + ROW_COUNT,
1045
1017
  useQueriesOrQueriesById(queriesOrQueriesId),
1046
- 0,
1018
+ 5,
1047
1019
  [queryId],
1048
1020
  );
1049
1021
  const useResultRowIds = (queryId, queriesOrQueriesId) =>
1050
1022
  useListenable(
1051
1023
  RESULT + ROW_IDS,
1052
1024
  useQueriesOrQueriesById(queriesOrQueriesId),
1053
- EMPTY_ARRAY,
1025
+ 1,
1054
1026
  [queryId],
1055
1027
  );
1056
1028
  const useResultSortedRowIds = (
@@ -1064,31 +1036,27 @@ const useResultSortedRowIds = (
1064
1036
  useListenable(
1065
1037
  RESULT + SORTED_ROW_IDS,
1066
1038
  useQueriesOrQueriesById(queriesOrQueriesId),
1067
- EMPTY_ARRAY,
1039
+ 1,
1068
1040
  [queryId, cellId, descending, offset, limit],
1069
- 6,
1070
1041
  );
1071
1042
  const useResultRow = (queryId, rowId, queriesOrQueriesId) =>
1072
- useListenable(
1073
- RESULT + ROW,
1074
- useQueriesOrQueriesById(queriesOrQueriesId),
1075
- EMPTY_OBJECT,
1076
- [queryId, rowId],
1077
- );
1043
+ useListenable(RESULT + ROW, useQueriesOrQueriesById(queriesOrQueriesId), 0, [
1044
+ queryId,
1045
+ rowId,
1046
+ ]);
1078
1047
  const useResultCellIds = (queryId, rowId, queriesOrQueriesId) =>
1079
1048
  useListenable(
1080
1049
  RESULT + CELL_IDS,
1081
1050
  useQueriesOrQueriesById(queriesOrQueriesId),
1082
- EMPTY_ARRAY,
1051
+ 1,
1083
1052
  [queryId, rowId],
1084
1053
  );
1085
1054
  const useResultCell = (queryId, rowId, cellId, queriesOrQueriesId) =>
1086
- useListenable(
1087
- RESULT + CELL,
1088
- useQueriesOrQueriesById(queriesOrQueriesId),
1089
- void 0,
1090
- [queryId, rowId, cellId],
1091
- );
1055
+ useListenable(RESULT + CELL, useQueriesOrQueriesById(queriesOrQueriesId), 3, [
1056
+ queryId,
1057
+ rowId,
1058
+ cellId,
1059
+ ]);
1092
1060
  const useResultTableListener = (
1093
1061
  queryId,
1094
1062
  listener,
@@ -1208,13 +1176,13 @@ const useCheckpointIds = (checkpointsOrCheckpointsId) =>
1208
1176
  useListenable(
1209
1177
  'CheckpointIds',
1210
1178
  useCheckpointsOrCheckpointsById(checkpointsOrCheckpointsId),
1211
- DEFAULT_CHECKPOINT_IDS,
1179
+ 2,
1212
1180
  );
1213
1181
  const useCheckpoint = (checkpointId, checkpointsOrCheckpointsId) =>
1214
1182
  useListenable(
1215
1183
  'Checkpoint',
1216
1184
  useCheckpointsOrCheckpointsById(checkpointsOrCheckpointsId),
1217
- void 0,
1185
+ 3,
1218
1186
  [checkpointId],
1219
1187
  );
1220
1188
  const useSetCheckpointCallback = (
@@ -1322,28 +1290,73 @@ const useCreatePersister = (
1322
1290
  destroyDeps = EMPTY_ARRAY,
1323
1291
  ) => {
1324
1292
  const [, rerender] = useState$2();
1325
- const persister = useMemo$1(
1326
- () => create(store),
1293
+ const [persister, setPersister] = useState$2();
1294
+ useEffect(
1295
+ () => {
1296
+ const newPersister = create(store);
1297
+ setPersister(newPersister);
1298
+ if (newPersister) {
1299
+ if (then) {
1300
+ (async () => {
1301
+ await then(newPersister);
1302
+ rerender([]);
1303
+ })();
1304
+ }
1305
+ }
1306
+ },
1327
1307
  // eslint-disable-next-line react-hooks/exhaustive-deps
1328
- [store, ...createDeps],
1308
+ [store, ...createDeps, ...thenDeps],
1309
+ );
1310
+ useEffect(
1311
+ () => () => {
1312
+ if (persister) {
1313
+ persister.destroy();
1314
+ destroy?.(persister);
1315
+ }
1316
+ },
1317
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1318
+ [persister, ...destroyDeps],
1329
1319
  );
1320
+ return persister;
1321
+ };
1322
+ const useCreateSynchronizer = (
1323
+ store,
1324
+ create,
1325
+ createDeps = EMPTY_ARRAY,
1326
+ then,
1327
+ thenDeps = EMPTY_ARRAY,
1328
+ destroy,
1329
+ destroyDeps = EMPTY_ARRAY,
1330
+ ) => {
1331
+ const [, rerender] = useState$2();
1332
+ const [synchronizer, setSynchronizer] = useState$2();
1330
1333
  useEffect(
1331
1334
  () => {
1332
1335
  (async () => {
1333
- if (then) {
1334
- await then(persister);
1335
- rerender([]);
1336
+ const newSynchronizer = await create(store);
1337
+ setSynchronizer(newSynchronizer);
1338
+ if (newSynchronizer && then) {
1339
+ (async () => {
1340
+ await then(newSynchronizer);
1341
+ rerender([]);
1342
+ })();
1336
1343
  }
1337
1344
  })();
1338
- return () => {
1339
- persister?.destroy();
1340
- destroy?.(persister);
1341
- };
1342
1345
  },
1343
1346
  // eslint-disable-next-line react-hooks/exhaustive-deps
1344
- [persister, ...thenDeps, ...destroyDeps],
1347
+ [store, ...createDeps, ...thenDeps],
1345
1348
  );
1346
- return persister;
1349
+ useEffect(
1350
+ () => () => {
1351
+ if (synchronizer) {
1352
+ synchronizer.destroy();
1353
+ destroy?.(synchronizer);
1354
+ }
1355
+ },
1356
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1357
+ [synchronizer, ...destroyDeps],
1358
+ );
1359
+ return synchronizer;
1347
1360
  };
1348
1361
 
1349
1362
  const {
@@ -1863,11 +1876,13 @@ export {
1863
1876
  useCheckpointsOrCheckpointsById,
1864
1877
  useCreateCheckpoints,
1865
1878
  useCreateIndexes,
1879
+ useCreateMergeableStore,
1866
1880
  useCreateMetrics,
1867
1881
  useCreatePersister,
1868
1882
  useCreateQueries,
1869
1883
  useCreateRelationships,
1870
1884
  useCreateStore,
1885
+ useCreateSynchronizer,
1871
1886
  useDelCellCallback,
1872
1887
  useDelRowCallback,
1873
1888
  useDelTableCallback,
@@ -1 +1 @@
1
- const e=e=>null==e,l=(l,n,t)=>e(l)?null==t?void 0:t():n(l),n=e=>e.length,t=(e,l)=>e.includes(l),r=(e,l)=>e.forEach(l),o=e=>0==n(e),u=(e,...l)=>e.push(...l),s=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,l)=>{var n;return null!=(n=null==e?void 0:e.has(l))&&n},c=l=>e(l)||0==(e=>{var l;return null!=(l=null==e?void 0:e.size)?l:0})(l),v=(e,l)=>null==e?void 0:e.forEach(l),h=(e,l)=>null==e?void 0:e.delete(l),p=e=>new Map(e),C=(e,l)=>null==e?void 0:e.get(l),f=(l,n,t)=>e(t)?(h(l,n),l):null==l?void 0:l.set(n,t),g=(e,l,n)=>(a(e,l)||f(e,l,n()),C(e,l)),k=(e,t,r,o,u=0)=>l((r?g:C)(e,t[u],u>n(t)-2?r:p),(l=>{if(u>n(t)-2)return(null==o?void 0:o(l))&&f(e,t[u]),l;const s=k(l,t,r,o,u+1);return c(l)&&f(e,t[u]),s})),L=l=>new Set(Array.isArray(l)||e(l)?l:[l]),w=/^\d+$/,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=p(),F=p(),I=1;const M=p(),b=p(),[j,x,B]=(t=>{let o;const[s,d]=(()=>{const e=[];let l=0;return[n=>{var t;return null!=(t=n?i(e):null)?t:""+l++},l=>{w.test(l)&&n(e)<1e3&&u(e,l)}]})(),a=p();return[(e,l,n,t=[],r=(()=>[]))=>{null!=o||(o=_);const u=s(1);var i,d;return f(a,u,[e,l,n,t,r]),d=u,null==(i=k(l,null!=n?n:[""],L))||i.add(d),u},(e,l,...t)=>r(((e,l=[""])=>{const t=[],o=(e,s)=>s==n(l)?u(t,e):null===l[s]?v(e,(e=>o(e,s+1))):r([l[s],null],(l=>o(C(e,l),s+1)));return o(e,0),t})(e,l),(e=>v(e,(e=>C(a,e)[0](o,...null!=l?l:[],...t))))),e=>l(C(a,e),(([,l,n])=>(k(l,null!=n?n:[""],void 0,(l=>(h(l,e),c(l)?1:0))),f(a,e),d(e),n))),t=>l(C(a,t),(([l,,t=[],u,s])=>{const i=(...d)=>{var a,c;const v=n(d);v==n(t)?l(o,...d,...s(d)):e(t[v])?r(null!=(c=null==(a=u[v])?void 0:a.call(u,...d))?c:[],(e=>i(...d,e))):i(...d,t[v])};i()}))]})(),O=p(),T=p(),W=[],$=[],m=(l,n)=>{I=0,S.transaction((()=>{const[t,r]=C(O,n);v(t,((n,t)=>v(n,((n,r)=>v(n,((n,o)=>((l,n,t,r,o)=>e(o)?l.delCell(n,t,r,!0):l.setCell(n,t,r,o))(S,t,r,o,n[l]))))))),v(r,((n,t)=>((l,n,t)=>e(t)?l.delValue(n):l.setValue(n,t))(S,t,n[l])))})),I=1},q=e=>{f(O,e),f(T,e),x(b,[e])},D=(e,l)=>r(((e,l)=>e.splice(0,l))(e,null!=l?l:n(e)),q),G=()=>D(W,n(W)-V),H=()=>l(y,(()=>{u(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=s(W),E=1},K=S.addCellListener(null,null,null,((e,l,n,t,r,o)=>{if(I){H();const e=g(A,l,p),u=g(e,n,p),s=g(u,t,(()=>[o,void 0]));s[1]=r,s[0]===r&&c(f(u,t))&&c(f(e,n))&&c(f(A,l))&&J(),U()}})),N=S.addValueListener(null,((e,l,n,t)=>{if(I){H();const e=g(F,l,(()=>[t,void 0]));e[1]=n,e[0]===n&&c(f(F,l))&&J(),U()}})),P=(l="")=>(e(y)&&(y=""+z++,f(O,y,[A,F]),Y(y,l),A=p(),F=p(),E=1),y),Q=()=>{o(W)||(((e,...l)=>{e.unshift(...l)})($,P()),m(0,y),y=s(W),E=1)},R=()=>{o($)||(u(W,y),y=i($),m(1,y),E=1)},U=()=>{E&&(x(M),E=0)},X=e=>{const l=P(e);return U(),l},Y=(e,l)=>(Z(e)&&C(T,e)!==l&&(f(T,e,l),x(b,[e])),_),Z=e=>a(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return l=e,v(T,((e,n)=>l(n,e)));var l},hasCheckpoint:Z,getCheckpoint:e=>C(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:l=>{const n=t(W,l)?Q:t($,l)?R:null;for(;!e(n)&&l!=y;)n();return U(),_},addCheckpointIdsListener:e=>j(e,M),addCheckpointListener:(e,l)=>j(l,b,[e]),delListener:e=>(B(e),_),clear:()=>(D(W),D($),e(y)||q(y),y=void 0,z=0,X(),_),clearForward:()=>(o($)||(D($),x(M)),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return d(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
1
+ const e=e=>null==e,n=(n,l,t)=>e(n)?null==t?void 0:t():l(n),l=e=>e.length,t=(e,n)=>e.includes(n),r=(e,n)=>e.forEach(n),o=e=>0==l(e),s=(e,...n)=>e.push(...n),u=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},c=n=>e(n)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(n),v=(e,n)=>null==e?void 0:e.forEach(n),h=(e,n)=>null==e?void 0:e.delete(n),p=e=>new Map(e),g=(e,n)=>null==e?void 0:e.get(n),C=(n,l,t)=>e(t)?(h(n,l),n):null==n?void 0:n.set(l,t),f=(e,n,l,t)=>(a(e,n)?null==t||t(g(e,n)):C(e,n,l()),g(e,n)),k=(e,t,r,o,s=0)=>n((r?f:g)(e,t[s],s>l(t)-2?r:p),(n=>{if(s>l(t)-2)return(null==o?void 0:o(n))&&C(e,t[s]),n;const u=k(n,t,r,o,s+1);return c(n)&&C(e,t[s]),u})),L=n=>new Set(Array.isArray(n)||e(n)?n:[n]),w=/^\d+$/,S=((S,y)=>{const z=new WeakMap;return S=>{z.has(S)||z.set(S,(S=>{let y,z,E,V=100,A=p(),F=p(),I=1;const M=p(),_=p(),[b,j,x]=(t=>{let o;const[u,d]=(()=>{const e=[];let n=0;return[l=>{var t;return null!=(t=l?i(e):null)?t:""+n++},n=>{w.test(n)&&l(e)<1e3&&s(e,n)}]})(),a=p();return[(e,n,l,t=[],r=(()=>[]))=>{null!=o||(o=Z);const s=u(1);var i,d;return C(a,s,[e,n,l,t,r]),d=s,null==(i=k(n,null!=l?l:[""],L))||i.add(d),s},(e,n,...t)=>r(((e,n=[""])=>{const t=[],o=(e,u)=>u==l(n)?s(t,e):null===n[u]?v(e,(e=>o(e,u+1))):r([n[u],null],(n=>o(g(e,n),u+1)));return o(e,0),t})(e,n),(e=>v(e,(e=>g(a,e)[0](o,...null!=n?n:[],...t))))),e=>n(g(a,e),(([,n,l])=>(k(n,null!=l?l:[""],void 0,(n=>(h(n,e),c(n)?1:0))),C(a,e),d(e),l))),t=>n(g(a,t),(([n,,t=[],s,u])=>{const i=(...d)=>{var a,c;const v=l(d);v==l(t)?n(o,...d,...u(d)):e(t[v])?r(null!=(c=null==(a=s[v])?void 0:a.call(s,...d))?c:[],(e=>i(...d,e))):i(...d,t[v])};i()}))]})(),B=p(),O=p(),T=[],W=[],$=(n,l)=>{I=0,S.transaction((()=>{const[t,r]=g(B,l);v(t,((l,t)=>v(l,((l,r)=>v(l,((l,o)=>((n,l,t,r,o)=>e(o)?n.delCell(l,t,r,!0):n.setCell(l,t,r,o))(S,t,r,o,l[n]))))))),v(r,((l,t)=>((n,l,t)=>e(t)?n.delValue(l):n.setValue(l,t))(S,t,l[n])))})),I=1},m=e=>{C(B,e),C(O,e),j(_,[e])},q=(e,n)=>r(((e,n)=>e.splice(0,n))(e,null!=n?n:l(e)),m),D=()=>q(T,l(T)-V),G=()=>n(y,(()=>{s(T,y),D(),q(W),y=void 0,E=1})),H=()=>{y=u(T),E=1};let J,K;const N=(n="")=>(e(y)&&(y=""+z++,C(B,y,[A,F]),X(y,n),A=p(),F=p(),E=1),y),P=()=>{o(T)||(((e,...n)=>{e.unshift(...n)})(W,N()),$(0,y),y=u(T),E=1)},Q=()=>{o(W)||(s(T,y),y=i(W),$(1,y),E=1)},R=()=>{E&&(j(M),E=0)},U=e=>{const n=N(e);return R(),n},X=(e,n)=>(Y(e)&&g(O,e)!==n&&(C(O,e,n),j(_,[e])),Z),Y=e=>a(B,e),Z={setSize:e=>(V=e,D(),Z),addCheckpoint:U,setCheckpoint:X,getStore:()=>S,getCheckpointIds:()=>[[...T],y,[...W]],forEachCheckpoint:e=>{return n=e,v(O,((e,l)=>n(l,e)));var n},hasCheckpoint:Y,getCheckpoint:e=>g(O,e),goBackward:()=>(P(),R(),Z),goForward:()=>(Q(),R(),Z),goTo:n=>{const l=t(T,n)?P:t(W,n)?Q:null;for(;!e(l)&&n!=y;)l();return R(),Z},addCheckpointIdsListener:e=>b(e,M),addCheckpointListener:(e,n)=>b(n,_,[e]),delListener:e=>(x(e),Z),clear:()=>(q(T),q(W),e(y)||m(y),y=void 0,z=0,U(),Z),clearForward:()=>(o(W)||(q(W),j(M)),Z),destroy:()=>{S.delListener(J),S.delListener(K)},getListenerStats:()=>({}),_registerListeners:()=>{J=S.addCellListener(null,null,null,((e,n,l,t,r,o)=>{if(I){G();const e=f(A,n,p),s=f(e,l,p),u=f(s,t,(()=>[o,void 0]));u[1]=r,u[0]===r&&c(C(s,t))&&c(C(e,l))&&c(C(A,n))&&H(),R()}})),K=S.addValueListener(null,((e,n,l,t)=>{if(I){G();const e=f(F,n,(()=>[t,void 0]));e[1]=l,e[0]===l&&c(C(F,n))&&H(),R()}}))}};return d(Z.clear())})(S));const E=z.get(S);return null==y||y(E),E}})(0,(e=>e._registerListeners()));export{S as createCheckpoints};
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=e=>e.length,d=(e,n)=>e.every(n),i=(e,n)=>d(e,((l,t)=>0==t||n(e[t-1],l)<=0)),a=(e,n)=>e.sort(n),c=(e,n)=>e.forEach(n),v=(e,...n)=>e.push(...n),h=Object.freeze,I=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>r(e)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},L=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},y=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>S(e,((e,l)=>n(l,e))),R=(e,n,l)=>r(l)?(w(e,n),e):null==e?void 0:e.set(n,l),b=(e,n,l)=>(I(e,n)||R(e,n,l()),y(e,n)),T=(e,n,l,t,r=0)=>s((l?b:y)(e,n[r],r>u(n)-2?l:x),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&R(e,n[r]),s;const o=T(s,n,l,t,r+1);return f(s)&&R(e,n[r]),o})),k=e=>new Set(o(e)||r(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,C=(e,n)=>(null!=e?e:0)<(null!=n?n:0)?-1:1,D=/^\d+$/,M=(e=>{const l=new WeakMap;return e=>(l.has(e)||l.set(e,(e=>{const l=x(),M=x(),[j,m,O]=(e=>{let l;const[t,o]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{D.test(n)&&u(e)<1e3&&v(e,n)}]})(),d=x();return[(e,r,s,o=[],u=(()=>[]))=>{null!=l||(l=U);const i=t(1);return R(d,i,[e,r,s,o,u]),z(T(r,null!=s?s:[n],k),i),i},(e,t,...r)=>c(((e,l=[n])=>{const t=[],r=(e,n)=>n==u(l)?v(t,e):null===l[n]?S(e,(e=>r(e,n+1))):c([l[n],null],(l=>r(y(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>y(d,e)[0](l,...null!=t?t:[],...r))))),e=>s(y(d,e),(([,l,t])=>(T(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),R(d,e),o(e),t))),e=>s(y(d,e),(([e,,n=[],t,s])=>{const o=(...d)=>{var i,a;const v=u(d);v==u(n)?e(l,...d,...s(d)):r(n[v])?c(null!=(a=null==(i=t[v])?void 0:i.call(t,...d))?a:[],(e=>o(...d,e))):o(...d,n[v])};o()}))]})(),[W,$,q,B,F,G,H,,J,K,N,P]=((e,n,l,t,i)=>{const a=e.hasRow,v=x(),h=x(),T=x(),A=x(),C=x(),D=x(),M=(n,l,...t)=>{const r=b(D,n,k);return c(t,(n=>z(r,n)&&l&&e.callListener(n))),t},j=(n,...l)=>s(y(D,n),(t=>{c(0==u(l)?g(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&R(D,n)})),m=(e,l)=>{R(v,e,l),I(h,e)||(R(h,e,n()),R(A,e,x()),R(C,e,x()),i(T))},O=e=>{R(v,e),R(h,e),R(A,e),R(C,e),j(e),i(T)};return[()=>e,()=>p(v),e=>E(h,e),e=>I(h,e),e=>y(v,e),e=>y(h,e),(e,n)=>R(h,e,n),m,(n,t,s,i,v)=>{m(n,t);const h=x(),f=x(),g=y(A,n),w=y(C,n),p=n=>{const s=l=>e.getCell(t,n,l),c=y(g,n),I=a(t,n)?l(i(s,n)):void 0;var L,S;if(c===I||o(c)&&o(I)&&(S=I,u(L=c)===u(S)&&d(L,((e,n)=>S[n]===e)))||R(h,n,[c,I]),!r(v)){const e=y(w,n),l=a(t,n)?v(s,n):void 0;e!=l&&R(f,n,l)}},b=e=>{s((()=>{S(h,(([,e],n)=>R(g,n,e))),S(f,((e,n)=>R(w,n,e)))}),h,f,g,w,e),L(h),L(f)};E(g,p),e.hasTable(t)&&c(e.getRowIds(t),(e=>{I(g,e)||p(e)})),b(!0),j(n),M(n,0,e.addRowListener(t,null,((e,n,l)=>p(l))),e.addTableListener(t,(()=>b())))},O,e=>t(e,T),()=>E(D,O),M,j]})(e,x,(e=>{return r(e)?n:o(e)?(l=t,e.map(l)):t(e);var l}),j,m),Q=(n,l,t)=>{const r=F(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},U={setIndexDefinition:(e,n,t,o,u,d=C)=>{const c=r(u)?void 0:([e],[n])=>u(e,n);return J(e,n,((n,t,u,v,h,g)=>{let L=0;const p=k(),b=k(),T=G(e);if(S(t,(([e,n],l)=>{const t=k(e),u=k(n);S(t,(e=>w(u,e)?w(t,e):0)),S(t,(e=>{z(p,e),s(y(T,e),(n=>{w(n,l),f(n)&&(R(T,e),L=1)}))})),S(u,(e=>{z(p,e),I(T,e)||(R(T,e,k()),L=1),z(y(T,e),l),r(o)||z(b,e)}))})),n(),f(h)||(g?E(T,(e=>z(b,e))):E(u,(e=>s(y(v,e),(e=>z(b,e))))),S(b,(e=>{const n=(n,l)=>d(y(h,n),y(h,l),e),l=[...y(T,e)];i(l,n)||(R(T,e,k(a(l,n))),z(p,e))}))),(L||g)&&!r(c)){const n=[...T];i(n,c)||(H(e,x(a(n,c))),L=1)}L&&m(l,[e]),S(p,(n=>m(M,[e,n])))}),A(t),s(o,A)),U},delIndexDefinition:e=>(K(e),U),getStore:W,getIndexIds:$,forEachIndex:e=>q(((n,l)=>e(n,(e=>Q(n,e,l))))),forEachSlice:(e,n)=>Q(e,n,G(e)),hasIndex:B,hasSlice:(e,n)=>I(G(e),n),getTableId:F,getSliceIds:e=>p(G(e)),getSliceRowIds:(e,n)=>g(y(G(e),n)),addIndexIdsListener:N,addSliceIdsListener:(e,n)=>j(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>j(l,M,[e,n]),delListener:e=>(O(e),U),destroy:P,getListenerStats:()=>({})};return h(U)})(e)),l.get(e))})();export{M as createIndexes};
1
+ const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=e=>e.length,d=(e,n)=>e.every(n),i=(e,n)=>d(e,((l,t)=>0==t||n(e[t-1],l)<=0)),a=(e,n)=>e.sort(n),c=(e,n)=>e.forEach(n),v=(e,...n)=>e.push(...n),h=Object.freeze,I=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>r(e)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},L=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},y=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>S(e,((e,l)=>n(l,e))),R=(e,n,l)=>r(l)?(w(e,n),e):null==e?void 0:e.set(n,l),b=(e,n,l,t)=>(I(e,n)?null==t||t(y(e,n)):R(e,n,l()),y(e,n)),T=(e,n,l,t,r=0)=>s((l?b:y)(e,n[r],r>u(n)-2?l:x),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&R(e,n[r]),s;const o=T(s,n,l,t,r+1);return f(s)&&R(e,n[r]),o})),k=e=>new Set(o(e)||r(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,C=(e,n)=>(null!=e?e:0)<(null!=n?n:0)?-1:1,D=/^\d+$/,M=((e,l)=>{const M=new WeakMap;return e=>{M.has(e)||M.set(e,(e=>{const l=x(),M=x(),[j,m,O]=(e=>{let l;const[t,o]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{D.test(n)&&u(e)<1e3&&v(e,n)}]})(),d=x();return[(e,r,s,o=[],u=(()=>[]))=>{null!=l||(l=U);const i=t(1);return R(d,i,[e,r,s,o,u]),z(T(r,null!=s?s:[n],k),i),i},(e,t,...r)=>c(((e,l=[n])=>{const t=[],r=(e,n)=>n==u(l)?v(t,e):null===l[n]?S(e,(e=>r(e,n+1))):c([l[n],null],(l=>r(y(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>y(d,e)[0](l,...null!=t?t:[],...r))))),e=>s(y(d,e),(([,l,t])=>(T(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),R(d,e),o(e),t))),e=>s(y(d,e),(([e,,n=[],t,s])=>{const o=(...d)=>{var i,a;const v=u(d);v==u(n)?e(l,...d,...s(d)):r(n[v])?c(null!=(a=null==(i=t[v])?void 0:i.call(t,...d))?a:[],(e=>o(...d,e))):o(...d,n[v])};o()}))]})(),[W,$,q,B,F,G,H,,J,K,N,P]=((e,n,l,t,i)=>{const a=e.hasRow,v=x(),h=x(),T=x(),A=x(),C=x(),D=x(),M=(n,l,...t)=>{const r=b(D,n,k);return c(t,(n=>z(r,n)&&l&&e.callListener(n))),t},j=(n,...l)=>s(y(D,n),(t=>{c(0==u(l)?g(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&R(D,n)})),m=(e,l)=>{R(v,e,l),I(h,e)||(R(h,e,n()),R(A,e,x()),R(C,e,x()),i(T))},O=e=>{R(v,e),R(h,e),R(A,e),R(C,e),j(e),i(T)};return[()=>e,()=>p(v),e=>E(h,e),e=>I(h,e),e=>y(v,e),e=>y(h,e),(e,n)=>R(h,e,n),m,(n,t,s,i,v)=>{m(n,t);const h=x(),f=x(),g=y(A,n),w=y(C,n),p=n=>{const s=l=>e.getCell(t,n,l),c=y(g,n),I=a(t,n)?l(i(s,n)):void 0;var L,S;if(c===I||o(c)&&o(I)&&(S=I,u(L=c)===u(S)&&d(L,((e,n)=>S[n]===e)))||R(h,n,[c,I]),!r(v)){const e=y(w,n),l=a(t,n)?v(s,n):void 0;e!=l&&R(f,n,l)}},b=e=>{s((()=>{S(h,(([,e],n)=>R(g,n,e))),S(f,((e,n)=>R(w,n,e)))}),h,f,g,w,e),L(h),L(f)};E(g,p),e.hasTable(t)&&c(e.getRowIds(t),(e=>{I(g,e)||p(e)})),b(!0),j(n),M(n,0,e.addRowListener(t,null,((e,n,l)=>p(l))),e.addTableListener(t,(()=>b())))},O,e=>t(e,T),()=>E(D,O),M,j]})(e,x,(e=>{return r(e)?n:o(e)?(l=t,e.map(l)):t(e);var l}),j,m),Q=(n,l,t)=>{const r=F(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},U={setIndexDefinition:(e,n,t,o,u,d=C)=>{const c=r(u)?void 0:([e],[n])=>u(e,n);return J(e,n,((n,t,u,v,h,g)=>{let L=0;const p=k(),b=k(),T=G(e);if(S(t,(([e,n],l)=>{const t=k(e),u=k(n);S(t,(e=>w(u,e)?w(t,e):0)),S(t,(e=>{z(p,e),s(y(T,e),(n=>{w(n,l),f(n)&&(R(T,e),L=1)}))})),S(u,(e=>{z(p,e),I(T,e)||(R(T,e,k()),L=1),z(y(T,e),l),r(o)||z(b,e)}))})),n(),f(h)||(g?E(T,(e=>z(b,e))):E(u,(e=>s(y(v,e),(e=>z(b,e))))),S(b,(e=>{const n=(n,l)=>d(y(h,n),y(h,l),e),l=[...y(T,e)];i(l,n)||(R(T,e,k(a(l,n))),z(p,e))}))),(L||g)&&!r(c)){const n=[...T];i(n,c)||(H(e,x(a(n,c))),L=1)}L&&m(l,[e]),S(p,(n=>m(M,[e,n])))}),A(t),s(o,A)),U},delIndexDefinition:e=>(K(e),U),getStore:W,getIndexIds:$,forEachIndex:e=>q(((n,l)=>e(n,(e=>Q(n,e,l))))),forEachSlice:(e,n)=>Q(e,n,G(e)),hasIndex:B,hasSlice:(e,n)=>I(G(e),n),getTableId:F,getSliceIds:e=>p(G(e)),getSliceRowIds:(e,n)=>g(y(G(e),n)),addIndexIdsListener:N,addSliceIdsListener:(e,n)=>j(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>j(l,M,[e,n]),delListener:e=>(O(e),U),destroy:P,getListenerStats:()=>({})};return h(U)})(e));return M.get(e)}})();export{M as createIndexes};
Binary file