tinybase 5.0.0-beta.8 → 5.0.0-beta.9

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 (324) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  20. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-powersync.cjs +1 -1
  24. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  26. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  30. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  32. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  33. package/lib/cjs/persisters.cjs +1 -1
  34. package/lib/cjs/persisters.cjs.gz +0 -0
  35. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -1
  36. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  37. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
  38. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  39. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -1
  40. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  41. package/lib/cjs/synchronizers.cjs +1 -1
  42. package/lib/cjs/synchronizers.cjs.gz +0 -0
  43. package/lib/cjs/tinybase.cjs +1 -1
  44. package/lib/cjs/tinybase.cjs.gz +0 -0
  45. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  46. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  47. package/lib/cjs/ui-react.cjs +1 -1
  48. package/lib/cjs/ui-react.cjs.gz +0 -0
  49. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  50. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters.cjs +1 -1
  82. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  83. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -1
  84. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  85. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
  86. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  87. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -1
  88. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  89. package/lib/cjs-es6/synchronizers.cjs +1 -1
  90. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  91. package/lib/cjs-es6/tinybase.cjs +1 -1
  92. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  93. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  94. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  95. package/lib/cjs-es6/ui-react.cjs +1 -1
  96. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  97. package/lib/debug/mergeable-store.js +6 -0
  98. package/lib/debug/persisters/persister-automerge.js +15 -6
  99. package/lib/debug/persisters/persister-browser.js +15 -6
  100. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +15 -6
  101. package/lib/debug/persisters/persister-electric-sql.js +15 -6
  102. package/lib/debug/persisters/persister-expo-sqlite-next.js +15 -6
  103. package/lib/debug/persisters/persister-expo-sqlite.js +15 -6
  104. package/lib/debug/persisters/persister-file.js +15 -6
  105. package/lib/debug/persisters/persister-indexed-db.js +15 -6
  106. package/lib/debug/persisters/persister-libsql.js +15 -6
  107. package/lib/debug/persisters/persister-partykit-client.js +15 -6
  108. package/lib/debug/persisters/persister-powersync.js +15 -6
  109. package/lib/debug/persisters/persister-remote.js +15 -6
  110. package/lib/debug/persisters/persister-sqlite-wasm.js +15 -6
  111. package/lib/debug/persisters/persister-sqlite3.js +15 -6
  112. package/lib/debug/persisters/persister-yjs.js +15 -6
  113. package/lib/debug/persisters.js +15 -6
  114. package/lib/debug/synchronizers/synchronizer-local.js +20 -12
  115. package/lib/debug/synchronizers/synchronizer-ws-client.js +22 -13
  116. package/lib/debug/synchronizers/synchronizer-ws-server.js +65 -26
  117. package/lib/debug/synchronizers.js +20 -12
  118. package/lib/debug/tinybase.js +26 -12
  119. package/lib/debug/ui-react-dom.js +22 -10
  120. package/lib/debug/ui-react.js +54 -5
  121. package/lib/es6/mergeable-store.js +1 -1
  122. package/lib/es6/mergeable-store.js.gz +0 -0
  123. package/lib/es6/persisters/persister-automerge.js +1 -1
  124. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  125. package/lib/es6/persisters/persister-browser.js +1 -1
  126. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  127. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  128. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  129. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  130. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  131. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  132. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  133. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  134. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  135. package/lib/es6/persisters/persister-file.js +1 -1
  136. package/lib/es6/persisters/persister-file.js.gz +0 -0
  137. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  138. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  139. package/lib/es6/persisters/persister-libsql.js +1 -1
  140. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  141. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  142. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  143. package/lib/es6/persisters/persister-powersync.js +1 -1
  144. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  145. package/lib/es6/persisters/persister-remote.js +1 -1
  146. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  147. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  148. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  149. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  150. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  151. package/lib/es6/persisters/persister-yjs.js +1 -1
  152. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  153. package/lib/es6/persisters.js +1 -1
  154. package/lib/es6/persisters.js.gz +0 -0
  155. package/lib/es6/synchronizers/synchronizer-local.js +1 -1
  156. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  157. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
  158. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  159. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -1
  160. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  161. package/lib/es6/synchronizers.js +1 -1
  162. package/lib/es6/synchronizers.js.gz +0 -0
  163. package/lib/es6/tinybase.js +1 -1
  164. package/lib/es6/tinybase.js.gz +0 -0
  165. package/lib/es6/ui-react-dom-debug.js +1 -1
  166. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  167. package/lib/es6/ui-react.js +1 -1
  168. package/lib/es6/ui-react.js.gz +0 -0
  169. package/lib/mergeable-store.js +1 -1
  170. package/lib/mergeable-store.js.gz +0 -0
  171. package/lib/persisters/persister-automerge.js +1 -1
  172. package/lib/persisters/persister-automerge.js.gz +0 -0
  173. package/lib/persisters/persister-browser.js +1 -1
  174. package/lib/persisters/persister-browser.js.gz +0 -0
  175. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  176. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  177. package/lib/persisters/persister-electric-sql.js +1 -1
  178. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  179. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  180. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  181. package/lib/persisters/persister-expo-sqlite.js +1 -1
  182. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  183. package/lib/persisters/persister-file.js +1 -1
  184. package/lib/persisters/persister-file.js.gz +0 -0
  185. package/lib/persisters/persister-indexed-db.js +1 -1
  186. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  187. package/lib/persisters/persister-libsql.js +1 -1
  188. package/lib/persisters/persister-libsql.js.gz +0 -0
  189. package/lib/persisters/persister-partykit-client.js +1 -1
  190. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  191. package/lib/persisters/persister-powersync.js +1 -1
  192. package/lib/persisters/persister-powersync.js.gz +0 -0
  193. package/lib/persisters/persister-remote.js +1 -1
  194. package/lib/persisters/persister-remote.js.gz +0 -0
  195. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  196. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  197. package/lib/persisters/persister-sqlite3.js +1 -1
  198. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  199. package/lib/persisters/persister-yjs.js +1 -1
  200. package/lib/persisters/persister-yjs.js.gz +0 -0
  201. package/lib/persisters.js +1 -1
  202. package/lib/persisters.js.gz +0 -0
  203. package/lib/synchronizers/synchronizer-local.js +1 -1
  204. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  205. package/lib/synchronizers/synchronizer-ws-client.js +1 -1
  206. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  207. package/lib/synchronizers/synchronizer-ws-server.js +1 -1
  208. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  209. package/lib/synchronizers.js +1 -1
  210. package/lib/synchronizers.js.gz +0 -0
  211. package/lib/tinybase.js +1 -1
  212. package/lib/tinybase.js.gz +0 -0
  213. package/lib/types/mergeable-store.d.ts +7 -1
  214. package/lib/types/persisters.d.ts +10 -14
  215. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +9 -4
  216. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +12 -0
  217. package/lib/types/synchronizers.d.ts +3 -3
  218. package/lib/types/ui-react.d.ts +151 -1
  219. package/lib/types/with-schemas/mergeable-store.d.ts +7 -0
  220. package/lib/types/with-schemas/persisters.d.ts +11 -23
  221. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +14 -5
  222. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +12 -0
  223. package/lib/types/with-schemas/synchronizers.d.ts +4 -7
  224. package/lib/types/with-schemas/ui-react.d.ts +169 -1
  225. package/lib/ui-react.js +1 -1
  226. package/lib/ui-react.js.gz +0 -0
  227. package/lib/umd/mergeable-store.js +1 -1
  228. package/lib/umd/mergeable-store.js.gz +0 -0
  229. package/lib/umd/persisters/persister-automerge.js +1 -1
  230. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  231. package/lib/umd/persisters/persister-browser.js +1 -1
  232. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  233. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  234. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  235. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  236. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  237. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  238. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  239. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  240. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  241. package/lib/umd/persisters/persister-file.js +1 -1
  242. package/lib/umd/persisters/persister-file.js.gz +0 -0
  243. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  244. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  245. package/lib/umd/persisters/persister-libsql.js +1 -1
  246. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  247. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  248. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  249. package/lib/umd/persisters/persister-powersync.js +1 -1
  250. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  251. package/lib/umd/persisters/persister-remote.js +1 -1
  252. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  253. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  254. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  255. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  256. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  257. package/lib/umd/persisters/persister-yjs.js +1 -1
  258. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  259. package/lib/umd/persisters.js +1 -1
  260. package/lib/umd/persisters.js.gz +0 -0
  261. package/lib/umd/synchronizers/synchronizer-local.js +1 -1
  262. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  263. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
  264. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  265. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -1
  266. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  267. package/lib/umd/synchronizers.js +1 -1
  268. package/lib/umd/synchronizers.js.gz +0 -0
  269. package/lib/umd/tinybase.js +1 -1
  270. package/lib/umd/tinybase.js.gz +0 -0
  271. package/lib/umd/ui-react-dom-debug.js +1 -1
  272. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  273. package/lib/umd/ui-react.js +1 -1
  274. package/lib/umd/ui-react.js.gz +0 -0
  275. package/lib/umd-es6/mergeable-store.js +1 -1
  276. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  277. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  278. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  279. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  280. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  281. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  282. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  283. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  284. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  285. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  286. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  287. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  288. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  289. package/lib/umd-es6/persisters/persister-file.js +1 -1
  290. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  291. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  292. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  293. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  294. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  295. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  296. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  297. package/lib/umd-es6/persisters/persister-powersync.js +1 -1
  298. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  299. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  300. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  301. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  302. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  303. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  304. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  305. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  306. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  307. package/lib/umd-es6/persisters.js +1 -1
  308. package/lib/umd-es6/persisters.js.gz +0 -0
  309. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -1
  310. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  311. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
  312. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  313. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -1
  314. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  315. package/lib/umd-es6/synchronizers.js +1 -1
  316. package/lib/umd-es6/synchronizers.js.gz +0 -0
  317. package/lib/umd-es6/tinybase.js +1 -1
  318. package/lib/umd-es6/tinybase.js.gz +0 -0
  319. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  320. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  321. package/lib/umd-es6/ui-react.js +1 -1
  322. package/lib/umd-es6/ui-react.js.gz +0 -0
  323. package/package.json +1 -1
  324. package/readme.md +2 -2
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),a=Promise,s=Math.max,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=Object,c=e=>r.getPrototypeOf(e),i=r.keys,g=r.freeze,l=e=>(e=>!n(e)&&o(c(e),(e=>e==r.prototype||n(c(e))),(()=>!0)))(e)&&0==(e=>i(e).length)(e),u=(e,t)=>e?.delete(t),y=e=>new Map(e),d=(e,t)=>e?.get(t),h=(e,t,a)=>n(a)?(u(e,t),e):e?.set(t,a),w=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)?s?.(d(e,t)):h(e,t,a()),d(e,t)},v=y(),p=y(),b=new globalThis.TextEncoder,C=2**36,M=2**30,A=2**24,S=2**18,f=4096,L=64,T=e=>String.fromCharCode(48+(63&e)),H=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,m=(r,c,i,m,D=1,x)=>{let I;const[z]=(e=>{let t=0,a=-1;const o=(e=>{let t=2166136261;var a;return a=e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)},b.encode(e).forEach(a),t>>>0})(e),r=e=>{const o=t,[r,c]=n(e)||""==e?[0,0]:[H(i=e,0)*C+H(i,1)*M+H(i,2)*A+H(i,3)*S+H(i,4)*f+H(i,5)*L+H(i,6),H(i,7)*S+H(i,8)*f+H(i,9)*L+H(i,10),H(i,11)*A+H(i,12)*S+H(i,13)*f+H(i,14)*L+H(i,15)];var i;t=s(o,r,Date.now()),a=t==o?t==r?s(a,c):a:t==r?c:-1};return[()=>{return r(),s=++a,n=o,T((e=t)/C)+T(e/M)+T(e/A)+T(e/S)+T(e/f)+T(e/L)+T(e)+T(s/S)+T(s/f)+T(s/L)+T(s)+T(n/A)+T(n/S)+T(n/f)+T(n/L)+T(n);var e,s,n},r]})(r.getId()),E=y();i(((e,t,a,s)=>{0==a?o(d(E,t),(([t,a])=>n(t)||t==e?a(s,e):0)):1==a&&R.isAutoLoading()?P(e,s).then((e=>I?.(void 0,(()=>e)))):o(2==a&&R.isAutoSaving()?r.getMergeableContentHashes():3==a?r.getMergeableTableIdsDiff(s):4==a?r.getMergeableRowIdsDiff(s):5==a?r.getMergeableTablesChanges(s):6==a?r.getMergeableValuesChanges(s):void 0,(a=>{c(e,t,0,a)}))}));const O=async(e,t,s="")=>new a(((a,n)=>{const o=z(),r=setTimeout((()=>{u(E,o),n(`No response from ${e??"anyone"} to '${t}'`)}),1e3*D);h(E,o,[e,(e,t)=>{clearTimeout(r),u(E,o),a([e,t])}]),c(e,o,t,s)})),P=async(e=null,t)=>{n(t)&&([t,e]=await O(e,2));const[a,[s,o]]=t,[,[c,i]]=r.getMergeableContentHashes(),g=["",[["",{}],["",{}],1]];return c!=s&&(g[0]=a,g[1][0]=(await O(e,5,r.getMergeableCellHashes((await O(e,4,r.getMergeableRowHashes((await O(e,3,r.getMergeableTableHashes()))[0])))[0])))[0]),i!=o&&(g[0]=a,g[1][1]=(await O(e,6,r.getMergeableValuesHashes()))[0]),g},R=((a,s,r,c,i,u,y,b={},C=[])=>{let M,A,S,f=0;w(v,C,(()=>0)),w(p,C,(()=>[]));const[L,T,H,m]=((e,t)=>!e||n(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!l(e)||!l(t)]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!l(e)||!l(t)])(y,a),D=async e=>(2!=f&&(f=1,await I.schedule((async()=>{await e(),f=0}))),I),x=s=>{var n;(L&&(n=s?.[0],e(n)==t)?1===s?.[1][2]?a.applyMergeableChanges:a.setMergeableContent:1===s?.[2]?a.applyChanges:a.setContent)(s)},I={load:async(e,t)=>await D((async()=>{try{x(await s())}catch(s){u?.(s),a.setContent([e,t])}})),startAutoLoad:async(e={},t={})=>(await I.stopAutoLoad().load(e,t),A=c((async(e,t)=>{const a=t?.();await D((async()=>{try{x(a??e?.()??await s())}catch(e){u?.(e)}}))})),I),stopAutoLoad:()=>(A&&(i(A),A=void 0),I),isAutoLoading:()=>!n(A),save:async e=>(1!=f&&(f=2,await I.schedule((async()=>{try{await r(T,e)}catch(e){u?.(e)}f=0}))),I),startAutoSave:async()=>(await I.stopAutoSave().save(),S=a.addDidFinishTransactionListener((()=>{const e=H();m(e)&&I.save((()=>e))})),I),stopAutoSave:()=>(o(S,a.delListener),S=void 0,I),isAutoSaving:()=>!n(S),schedule:async(...e)=>(((e,...t)=>{e.push(...t)})(d(p,C),...e),await(async()=>{if(!d(v,C)){for(h(v,C,1);!n((e=d(p,C),M=e.shift()));)try{await M()}catch(e){u?.(e)}h(v,C,0)}var e})(),I),getStore:()=>a,destroy:()=>I.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...b};return g(I)})(r,(async()=>{const e=await P();return""!=e[0]?e:void 0}),(async()=>{c(null,null,1,r.getMergeableContentHashes())}),(e=>I=e),(()=>I=void 0),x,!0,{startSync:async(e,t)=>await(await R.startAutoLoad(e,t)).startAutoSave(),stopSync:()=>R.stopAutoLoad().stopAutoSave(),destroy:()=>(m(),R.stopSync()),getSynchronizerStats:()=>({})});return R};export{m as createCustomSynchronizer};
1
+ const e=e=>typeof e,t=e(""),a=Promise,s=Math.max,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=Object,c=e=>r.getPrototypeOf(e),i=r.keys,g=r.freeze,l=e=>(e=>!n(e)&&o(c(e),(e=>e==r.prototype||n(c(e))),(()=>!0)))(e)&&0==(e=>i(e).length)(e),u=(e,t)=>e?.delete(t),y=e=>new Map(e),d=(e,t)=>e?.get(t),h=(e,t,a)=>n(a)?(u(e,t),e):e?.set(t,a),w=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)?s?.(d(e,t)):h(e,t,a()),d(e,t)},v=y(),p=y(),b=new globalThis.TextEncoder,C=2**36,M=2**30,A=2**24,S=2**18,f=4096,L=64,T=e=>String.fromCharCode(48+(63&e)),H=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,m=(r,c,i,m,D,x,I={})=>{let z;const[E]=(e=>{let t=0,a=-1;const o=(e=>{let t=2166136261;var a;return a=e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)},b.encode(e).forEach(a),t>>>0})(e),r=e=>{const o=t,[r,c]=n(e)||""==e?[0,0]:[H(i=e,0)*C+H(i,1)*M+H(i,2)*A+H(i,3)*S+H(i,4)*f+H(i,5)*L+H(i,6),H(i,7)*S+H(i,8)*f+H(i,9)*L+H(i,10),H(i,11)*A+H(i,12)*S+H(i,13)*f+H(i,14)*L+H(i,15)];var i;t=s(o,r,Date.now()),a=t==o?t==r?s(a,c):a:t==r?c:-1};return[()=>{return r(),s=++a,n=o,T((e=t)/C)+T(e/M)+T(e/A)+T(e/S)+T(e/f)+T(e/L)+T(e)+T(s/S)+T(s/f)+T(s/L)+T(s)+T(n/A)+T(n/S)+T(n/f)+T(n/L)+T(n);var e,s,n},r]})(r.getId()),O=y();i(((e,t,a,s)=>{0==a?o(d(O,t),(([t,a])=>n(t)||t==e?a(s,e):0)):1==a&&V.isAutoLoading()?R(e,s).then((e=>z?.(void 0,(()=>e)))):o(2==a&&V.isAutoSaving()?r.getMergeableContentHashes():3==a?r.getMergeableTableIdsDiff(s):4==a?r.getMergeableRowIdsDiff(s):5==a?r.getMergeableTablesChanges(s):6==a?r.getMergeableValuesChanges(s):void 0,(a=>{c(e,t,0,a)}))}));const P=async(e,t,s="")=>new a(((a,n)=>{const o=E(),r=setTimeout((()=>{u(O,o),n(`No response from ${e??"anyone"} to '${t}'`)}),1e3*D);h(O,o,[e,(e,t)=>{clearTimeout(r),u(O,o),a([e,t])}]),c(e,o,t,s)})),R=async(e=null,t)=>{n(t)&&([t,e]=await P(e,2));const[a,[s,o]]=t,[,[c,i]]=r.getMergeableContentHashes(),g=["",[["",{}],["",{}],1]];return c!=s&&(g[0]=a,g[1][0]=(await P(e,5,r.getMergeableCellHashes((await P(e,4,r.getMergeableRowHashes((await P(e,3,r.getMergeableTableHashes()))[0])))[0])))[0]),i!=o&&(g[0]=a,g[1][1]=(await P(e,6,r.getMergeableValuesHashes()))[0]),g},V=((a,s,r,c,i,u,y,b={},C=[])=>{let M,A,S,f=0;w(v,C,(()=>0)),w(p,C,(()=>[]));const[L,T,H,m,D]=((e,t)=>!e||n(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!l(e)||!l(t),t.setContent]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!l(e)||!l(t),t.setDefaultContent])(y,a),x=async e=>(2!=f&&(f=1,await z.schedule((async()=>{await e(),f=0}))),z),I=s=>{var n;(L&&(n=s?.[0],e(n)==t)?1===s?.[1][2]?a.applyMergeableChanges:a.setMergeableContent:1===s?.[2]?a.applyChanges:a.setContent)(s)},z={load:async e=>await x((async()=>{try{I(await s())}catch(t){u?.(t),e&&D(e)}})),startAutoLoad:async e=>(await z.stopAutoLoad().load(e),A=c((async(e,t)=>{const a=t?.();await x((async()=>{try{I(a??e?.()??await s())}catch(e){u?.(e)}}))})),z),stopAutoLoad:()=>(A&&(i(A),A=void 0),z),isAutoLoading:()=>!n(A),save:async e=>(1!=f&&(f=2,await z.schedule((async()=>{try{await r(T,e)}catch(e){u?.(e)}f=0}))),z),startAutoSave:async()=>(await z.stopAutoSave().save(),S=a.addDidFinishTransactionListener((()=>{const e=H();m(e)&&z.save((()=>e))})),z),stopAutoSave:()=>(o(S,a.delListener),S=void 0,z),isAutoSaving:()=>!n(S),schedule:async(...e)=>(((e,...t)=>{e.push(...t)})(d(p,C),...e),await(async()=>{if(!d(v,C)){for(h(v,C,1);!n((e=d(p,C),M=e.shift()));)try{await M()}catch(e){u?.(e)}h(v,C,0)}var e})(),z),getStore:()=>a,destroy:()=>z.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...b};return g(z)})(r,(async()=>{const e=await R();return""!=e[0]?e:void 0}),(async()=>{c(null,null,1,r.getMergeableContentHashes())}),(e=>z=e),(()=>z=void 0),x,!0,{startSync:async e=>await(await V.startAutoLoad(e)).startAutoSave(),stopSync:()=>V.stopAutoLoad().stopAutoSave(),destroy:()=>(m(),V.stopSync()),getSynchronizerStats:()=>({}),...I});return V};export{m as createCustomSynchronizer};
Binary file
package/lib/tinybase.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t="",s=e(t),n=e(!0),a=e(0),o=e(e),r="type",l="default",i="Listener",c="Result",d="add",g="Has",u="Ids",h="Table",f=h+"s",b=h+u,w="Row",L=w+"Count",C=w+u,v="Sorted"+w+u,T="Cell",y=T+u,p="Value",I=p+"s",S=p+u,R=e=>t+e,M=(e,t)=>e.startsWith(t),V=(e,t)=>e.endsWith(t),m=Promise,A=Math.max,E=Math.min,H=isFinite,D=e=>null==e,k=(e,t,s)=>D(e)?s?.():t(e),J=e=>e==s||e==n,x=t=>e(t)==s,F=t=>e(t)==o,Q=e=>Array.isArray(e),z=(e,t,s)=>e.slice(t,s),N=e=>e.length,O=()=>{},P=(e,t)=>e.includes(t),W=(e,t)=>e.every(t),$=(e,t)=>N(e)===N(t)&&W(e,((e,s)=>t[s]===e)),j=(e,t)=>W(e,((s,n)=>0==n||t(e[n-1],s)<=0)),_=(e,t)=>e.sort(t),B=(e,t)=>e.forEach(t),q=(e,t)=>e.map(t),G=e=>U(e,((e,t)=>e+t),0),K=e=>0==N(e),U=(e,t,s)=>e.reduce(t,s),X=(e,...t)=>e.push(...t),Y=e=>e.pop(),Z=e=>e.shift(),ee=Object,te=e=>ee.getPrototypeOf(e),se=ee.entries,ne=ee.isFrozen,ae=e=>!D(e)&&k(te(e),(e=>e==ee.prototype||D(te(e))),(()=>!0)),oe=ee.keys,re=ee.freeze,le=(e=[])=>ee.fromEntries(e),ie=(e,t)=>t in e,ce=(e,t)=>(delete e[t],e),de=(e,t)=>B(se(e),(([e,s])=>t(s,e))),ge=(e,t)=>q(se(e),(([e,s])=>t(s,e))),ue=(e,t)=>le(ge(e,((e,s)=>[s,t(e,s)]))),he=e=>ae(e)&&0==(e=>N(oe(e)))(e),fe=(e,t,s)=>(ie(e,t)||(e[t]=s()),e[t]),be=(e,t,s,n=0)=>D(e)||!ae(e)||!n&&he(e)||ne(e)?(s?.(),!1):(ge(e,((s,n)=>{t(s,n)||ce(e,n)})),!!n||!he(e)),we=e=>e?.size??0,Le=(e,t)=>e?.has(t)??!1,Ce=e=>D(e)||0==we(e),ve=e=>[...e?.values()??[]],Te=e=>e.clear(),ye=(e,t)=>e?.forEach(t),pe=(e,t)=>e?.delete(t),Ie=e=>new Map(e),Se=e=>[...e?.keys()??[]],Re=(e,t)=>e?.get(t),Me=(e,t)=>ye(e,((e,s)=>t(s,e))),Ve=(e,t,s)=>D(s)?(pe(e,t),e):e?.set(t,s),me=(e,t,s,n)=>(Le(e,t)?n?.(Re(e,t)):Ve(e,t,s()),Re(e,t)),Ae=(e,t,s,n=Ve)=>(ge(t,((t,n)=>s(e,n,t))),Me(e,(s=>ie(t,s)?0:n(e,s))),e),Ee=(e,t,s,n)=>{const a={};return ye(e,((e,o)=>{if(!s?.(e,o)){const s=t?t(e,o):e;!n?.(s)&&(a[o]=s)}})),a},He=(e,t,s)=>Ee(e,(e=>Ee(e,t,s)),Ce,he),De=(e,t,s)=>Ee(e,(e=>He(e,t,s)),Ce,he),ke=(e,t)=>{const s=Ie();return ye(e,((e,n)=>s.set(n,t?.(e)??e))),s},Je=e=>ke(e,ke),xe=e=>ke(e,Je),Fe=(e,t,s,n,a=0)=>k((s?me:Re)(e,t[a],a>N(t)-2?s:Ie),(o=>{if(a>N(t)-2)return n?.(o)&&Ve(e,t[a]),o;const r=Fe(o,t,s,n,a+1);return Ce(o)&&Ve(e,t[a]),r})),Qe=t=>{const s=e(t);return J(s)||s==a&&H(t)?s:void 0},ze=e=>null===e||!D(Qe(e)),Ne=(e,t,s,n,a)=>D(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),Oe=(e,t,s)=>D(s)?e.delValue(t):e.setValue(t,s),Pe=e=>new Set(Q(e)||D(e)?e:[e]),We=(e,t)=>e?.add(t),$e=(e,t,s,n,a)=>{const o=e.hasRow,r=Ie(),l=Ie(),i=Ie(),c=Ie(),d=Ie(),g=Ie(),u=(t,s,...n)=>{const a=me(g,t,Pe);return B(n,(t=>We(a,t)&&s&&e.callListener(t))),n},h=(t,...s)=>k(Re(g,t),(n=>{B(K(s)?ve(n):s,(t=>{e.delListener(t),pe(n,t)})),Ce(n)&&Ve(g,t)})),f=(e,s)=>{Ve(r,e,s),Le(l,e)||(Ve(l,e,t()),Ve(c,e,Ie()),Ve(d,e,Ie()),a(i))},b=e=>{Ve(r,e),Ve(l,e),Ve(c,e),Ve(d,e),h(e),a(i)};return[()=>e,()=>Se(r),e=>Me(l,e),e=>Le(l,e),e=>Re(r,e),e=>Re(l,e),(e,t)=>Ve(l,e,t),f,(t,n,a,r,l)=>{f(t,n);const i=Ie(),g=Ie(),b=Re(c,t),w=Re(d,t),L=t=>{const a=s=>e.getCell(n,t,s),c=Re(b,t),d=o(n,t)?s(r(a,t)):void 0;if(c===d||Q(c)&&Q(d)&&$(c,d)||Ve(i,t,[c,d]),!D(l)){const e=Re(w,t),s=o(n,t)?l(a,t):void 0;e!=s&&Ve(g,t,s)}},C=e=>{a((()=>{ye(i,(([,e],t)=>Ve(b,t,e))),ye(g,((e,t)=>Ve(w,t,e)))}),i,g,b,w,e),Te(i),Te(g)};Me(b,L),e.hasTable(n)&&B(e.getRowIds(n),(e=>{Le(b,e)||L(e)})),C(!0),h(t),u(t,0,e.addRowListener(n,null,((e,t,s)=>L(s))),e.addTableListener(n,(()=>C())))},b,e=>n(e,i),()=>Me(g,b),u,h]},je=(e,s)=>x(e)?t=>t(e):e??(()=>s??t),_e=(e,t)=>{const s=new WeakMap;return n=>{s.has(n)||s.set(n,e(n));const a=s.get(n);return t?.(a),a}},Be=/^\d+$/,qe=()=>{const e=[];let s=0;return[n=>(n?Z(e):null)??t+s++,t=>{Be.test(t)&&N(e)<1e3&&X(e,t)}]},Ge=e=>{let s;const[n,a]=qe(),o=Ie();return[(a,r,l,i=[],c=(()=>[]))=>{s??=e();const d=n(1);return Ve(o,d,[a,r,l,i,c]),We(Fe(r,l??[t],Pe),d),d},(e,n,...a)=>B(((e,s=[t])=>{const n=[],a=(e,t)=>t==N(s)?X(n,e):null===s[t]?ye(e,(e=>a(e,t+1))):B([s[t],null],(s=>a(Re(e,s),t+1)));return a(e,0),n})(e,n),(e=>ye(e,(e=>Re(o,e)[0](s,...n??[],...a))))),e=>k(Re(o,e),(([,s,n])=>(Fe(s,n??[t],void 0,(t=>(pe(t,e),Ce(t)?1:0))),Ve(o,e),a(e),n))),e=>k(Re(o,e),(([e,,t=[],n,a])=>{const o=(...r)=>{const l=N(r);l==N(t)?e(s,...r,...a(r)):D(t[l])?B(n[l]?.(...r)??[],(e=>o(...r,e))):o(...r,t[l])};o()}))]},Ke=_e((e=>{let s,n,a,o=100,r=Ie(),l=Ie(),i=1;const c=Ie(),d=Ie(),[g,u,h]=Ge((()=>x)),f=Ie(),b=Ie(),w=[],L=[],C=(t,s)=>{i=0,e.transaction((()=>{const[n,a]=Re(f,s);ye(n,((s,n)=>ye(s,((s,a)=>ye(s,((s,o)=>Ne(e,n,a,o,s[t]))))))),ye(a,((s,n)=>Oe(e,n,s[t])))})),i=1},v=e=>{Ve(f,e),Ve(b,e),u(d,[e])},T=(e,t)=>B(((e,t)=>e.splice(0,t))(e,t??N(e)),v),y=()=>T(w,N(w)-o),p=()=>k(s,(()=>{X(w,s),y(),T(L),s=void 0,a=1})),I=()=>{s=Y(w),a=1};let S,R;const M=(e="")=>(D(s)&&(s=t+n++,Ve(f,s,[r,l]),H(s,e),r=Ie(),l=Ie(),a=1),s),V=()=>{K(w)||(((e,...t)=>{e.unshift(...t)})(L,M()),C(0,s),s=Y(w),a=1)},m=()=>{K(L)||(X(w,s),s=Z(L),C(1,s),a=1)},A=()=>{a&&(u(c),a=0)},E=e=>{const t=M(e);return A(),t},H=(e,t)=>(J(e)&&Re(b,e)!==t&&(Ve(b,e,t),u(d,[e])),x),J=e=>Le(f,e),x={setSize:e=>(o=e,y(),x),addCheckpoint:E,setCheckpoint:H,getStore:()=>e,getCheckpointIds:()=>[[...w],s,[...L]],forEachCheckpoint:e=>Me(b,e),hasCheckpoint:J,getCheckpoint:e=>Re(b,e),goBackward:()=>(V(),A(),x),goForward:()=>(m(),A(),x),goTo:e=>{const t=P(w,e)?V:P(L,e)?m:null;for(;!D(t)&&e!=s;)t();return A(),x},addCheckpointIdsListener:e=>g(e,c),addCheckpointListener:(e,t)=>g(t,d,[e]),delListener:e=>(h(e),x),clear:()=>(T(w),T(L),D(s)||v(s),s=void 0,n=0,E(),x),clearForward:()=>(K(L)||(T(L),u(c)),x),destroy:()=>{e.delListener(S),e.delListener(R)},getListenerStats:()=>({}),_registerListeners:()=>{S=e.addCellListener(null,null,null,((e,t,s,n,a,o)=>{if(i){p();const e=me(r,t,Ie),l=me(e,s,Ie),i=me(l,n,(()=>[o,void 0]));i[1]=a,i[0]===a&&Ce(Ve(l,n))&&Ce(Ve(e,s))&&Ce(Ve(r,t))&&I(),A()}})),R=e.addValueListener(null,((e,t,s,n)=>{if(i){p();const e=me(l,t,(()=>[n,void 0]));e[1]=s,e[0]===s&&Ce(Ve(l,t))&&I(),A()}}))}};return re(x.clear())}),(e=>e._registerListeners())),Ue=(e,t)=>(e??0)<(t??0)?-1:1,Xe=_e((e=>{const s=Ie(),n=Ie(),[a,o,r]=Ge((()=>v)),[l,i,c,d,g,u,h,,f,b,w,L]=$e(e,Ie,(e=>D(e)?t:Q(e)?q(e,R):R(e)),a,o),C=(t,s,n)=>{const a=g(t);ye(n,((t,n)=>s(n,(s=>ye(t,(t=>s(t,(s=>e.forEachCell(a,t,s)))))))))},v={setIndexDefinition:(e,t,a,r,l,i=Ue)=>{const c=D(l)?void 0:([e],[t])=>l(e,t);return f(e,t,((t,a,l,d,g,f)=>{let b=0;const w=Pe(),L=Pe(),C=u(e);if(ye(a,(([e,t],s)=>{const n=Pe(e),a=Pe(t);ye(n,(e=>pe(a,e)?pe(n,e):0)),ye(n,(e=>{We(w,e),k(Re(C,e),(t=>{pe(t,s),Ce(t)&&(Ve(C,e),b=1)}))})),ye(a,(e=>{We(w,e),Le(C,e)||(Ve(C,e,Pe()),b=1),We(Re(C,e),s),D(r)||We(L,e)}))})),t(),Ce(g)||(f?Me(C,(e=>We(L,e))):Me(l,(e=>k(Re(d,e),(e=>We(L,e))))),ye(L,(e=>{const t=(t,s)=>i(Re(g,t),Re(g,s),e),s=[...Re(C,e)];j(s,t)||(Ve(C,e,Pe(_(s,t))),We(w,e))}))),(b||f)&&!D(c)){const t=[...C];j(t,c)||(h(e,Ie(_(t,c))),b=1)}b&&o(s,[e]),ye(w,(t=>o(n,[e,t])))}),je(a),k(r,je)),v},delIndexDefinition:e=>(b(e),v),getStore:l,getIndexIds:i,forEachIndex:e=>c(((t,s)=>e(t,(e=>C(t,e,s))))),forEachSlice:(e,t)=>C(e,t,u(e)),hasIndex:d,hasSlice:(e,t)=>Le(u(e),t),getTableId:g,getSliceIds:e=>Se(u(e)),getSliceRowIds:(e,t)=>ve(Re(u(e),t)),addIndexIdsListener:w,addSliceIdsListener:(e,t)=>a(t,s,[e]),addSliceRowIdsListener:(e,t,s)=>a(s,n,[e,t]),delListener:e=>(r(e),v),destroy:L,getListenerStats:()=>({})};return re(v)})),Ye=Ie([["avg",[(e,t)=>G(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>A(...e),(e,t)=>A(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:A(t,e)]],["min",[e=>E(...e),(e,t)=>E(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:E(t,e)]],["sum",[e=>G(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Ze=(e,t,s,n,a,o=!1)=>{if(Ce(s))return;const[r,l,i,c]=a;return o||=D(e),ye(n,(([s,n])=>{o||(e=D(s)?l?.(e,n,t++):D(n)?i?.(e,s,t--):c?.(e,n,s,t),o||=D(e))})),o?r(ve(s),we(s)):e},et=_e((e=>{const s=Ie(),[n,a,o]=Ge((()=>L)),[r,l,i,c,d,g,u,,h,f,b,w]=$e(e,O,(e=>isNaN(e)||D(e)||!0===e||!1===e||e===t?void 0:1*e),n,a),L={setMetricDefinition:(e,t,n,o,r,l,i)=>{const c=F(n)?[n,r,l,i]:Re(Ye,n)??Re(Ye,"sum");return h(e,t,((t,n,o,r,l,i)=>{const d=g(e),h=we(r);i||=D(d),t();let f=Ze(d,h,r,n,c,i);H(f)||(f=void 0),f!=d&&(u(e,f),a(s,[e],f,d))}),je(o,1)),L},delMetricDefinition:e=>(f(e),L),getStore:r,getMetricIds:l,forEachMetric:i,hasMetric:c,getTableId:d,getMetric:g,addMetricIdsListener:b,addMetricListener:(e,t)=>n(t,s,[e]),delListener:e=>(o(e),L),destroy:w,getListenerStats:()=>({})};return re(L)})),tt=Ie(),st=Ie(),nt=(e,t,s,n,a,o,r,l={},i=[])=>{let c,d,g,u=0;me(tt,i,(()=>0)),me(st,i,(()=>[]));const[h,f,b,w]=((e,t)=>!e||D(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!he(e)||!he(t)]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!he(e)||!he(t)])(r,e),L=async e=>(2!=u&&(u=1,await v.schedule((async()=>{await e(),u=0}))),v),C=t=>{(h&&x(t?.[0])?1===t?.[1][2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},v={load:async(s,n)=>await L((async()=>{try{C(await t())}catch(t){o?.(t),e.setContent([s,n])}})),startAutoLoad:async(e={},s={})=>(await v.stopAutoLoad().load(e,s),d=n((async(e,s)=>{const n=s?.();await L((async()=>{try{C(n??e?.()??await t())}catch(e){o?.(e)}}))})),v),stopAutoLoad:()=>(d&&(a(d),d=void 0),v),isAutoLoading:()=>!D(d),save:async e=>(1!=u&&(u=2,await v.schedule((async()=>{try{await s(f,e)}catch(e){o?.(e)}u=0}))),v),startAutoSave:async()=>(await v.stopAutoSave().save(),g=e.addDidFinishTransactionListener((()=>{const e=b();w(e)&&v.save((()=>e))})),v),stopAutoSave:()=>(k(g,e.delListener),g=void 0,v),isAutoSaving:()=>!D(g),schedule:async(...e)=>(X(Re(st,i),...e),await(async()=>{if(!Re(tt,i)){for(Ve(tt,i,1);!D(c=Z(Re(st,i)));)try{await c()}catch(e){o?.(e)}Ve(tt,i,0)}})(),v),getStore:()=>e,destroy:()=>v.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...l};return re(v)},at=new globalThis.TextEncoder,ot=e=>{let t=2166136261;return B(at.encode(e),(e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0},rt=2**36,lt=2**30,it=2**24,ct=2**18,dt=4096,gt=64,ut=e=>String.fromCharCode(48+(63&e)),ht=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,ft=e=>{let t=0,s=-1;const n=ot(e),a=e=>{const n=t,[a,o]=D(e)||""==e?[0,0]:[ht(r=e,0)*rt+ht(r,1)*lt+ht(r,2)*it+ht(r,3)*ct+ht(r,4)*dt+ht(r,5)*gt+ht(r,6),ht(r,7)*ct+ht(r,8)*dt+ht(r,9)*gt+ht(r,10),ht(r,11)*it+ht(r,12)*ct+ht(r,13)*dt+ht(r,14)*gt+ht(r,15)];var r;t=A(n,a,Date.now()),s=t==n?t==a?A(s,o):s:t==a?o:-1};return[()=>{return a(),o=++s,r=n,ut((e=t)/rt)+ut(e/lt)+ut(e/it)+ut(e/ct)+ut(e/dt)+ut(e/gt)+ut(e)+ut(o/ct)+ut(o/dt)+ut(o/gt)+ut(o)+ut(r/it)+ut(r/ct)+ut(r/dt)+ut(r/gt)+ut(r);var e,o,r},a]},bt=(e,s,n,a,o=1,r)=>{let l;const[i]=ft(e.getId()),c=Ie();n(((t,n,a,o)=>{0==a?k(Re(c,n),(([e,s])=>D(e)||e==t?s(o,t):0)):1==a&&u.isAutoLoading()?g(t,o).then((e=>l?.(void 0,(()=>e)))):k(2==a&&u.isAutoSaving()?e.getMergeableContentHashes():3==a?e.getMergeableTableIdsDiff(o):4==a?e.getMergeableRowIdsDiff(o):5==a?e.getMergeableTablesChanges(o):6==a?e.getMergeableValuesChanges(o):void 0,(e=>{s(t,n,0,e)}))}));const d=async(e,t,n="")=>new m(((a,r)=>{const l=i(),d=setTimeout((()=>{pe(c,l),r(`No response from ${e??"anyone"} to '${t}'`)}),1e3*o);Ve(c,l,[e,(e,t)=>{clearTimeout(d),pe(c,l),a([e,t])}]),s(e,l,t,n)})),g=async(s=null,n)=>{D(n)&&([n,s]=await d(s,2));const[a,[o,r]]=n,[,[l,i]]=e.getMergeableContentHashes(),c=[t,[[t,{}],[t,{}],1]];return l!=o&&(c[0]=a,c[1][0]=(await d(s,5,e.getMergeableCellHashes((await d(s,4,e.getMergeableRowHashes((await d(s,3,e.getMergeableTableHashes()))[0])))[0])))[0]),i!=r&&(c[0]=a,c[1][1]=(await d(s,6,e.getMergeableValuesHashes()))[0]),c},u=nt(e,(async()=>{const e=await g();return e[0]!=t?e:void 0}),(async()=>{s(null,null,1,e.getMergeableContentHashes())}),(e=>l=e),(()=>l=void 0),r,!0,{startSync:async(e,t)=>await(await u.startAutoLoad(e,t)).startAutoSave(),stopSync:()=>u.stopAutoLoad().stopAutoSave(),destroy:()=>(a(),u.stopSync()),getSynchronizerStats:()=>({})});return u},wt=_e((e=>{const s=e.createStore,n=s(),a=s(),o=Ie(),{addListener:r,callListeners:l,delListener:g}=a,[u,f,b,p,I,,,S,,R,M,V,m,A]=$e(e,(()=>!0),O,r,l),E=(e,t,...s)=>B(s,(s=>We(me(me(o,t,Ie),e,Pe),s))),H=e=>{k(Re(o,e),(e=>{Me(e,((e,t)=>ye(t,(t=>e.delListener(t))))),Te(e)})),B([a,n],(t=>t.delTable(e)))},J=(e,t,s)=>E(t,e,t.addStartTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),x={setQueryDefinition:(s,o,r)=>{S(s,o),H(s);const l=[],i=[[null,[o,null,null,[],Ie()]]],c=[],d=[],g=[];r({select:(e,s)=>{const n=F(e)?[N(l)+t,e]:[D(s)?e:s,t=>t(e,s)];return X(l,n),{as:e=>n[0]=e}},join:(e,t,s)=>{const n=D(s)||F(t)?null:t,a=D(n)?t:s,o=[e,[e,n,F(a)?a:e=>e(a),[],Ie()]];return X(i,o),{as:e=>o[0]=e}},where:(e,t,s)=>X(c,F(e)?e:D(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,a)=>{const o=[e,[e,F(t)?[t,s,n,a]:Re(Ye,t)??[(e,t)=>t]]];return X(d,o),{as:e=>o[0]=e}},having:(e,t)=>X(g,F(e)?e:s=>s(e)===t)});const u=Ie(l);if(Ce(u))return x;const h=Ie(i);Me(h,((e,[,t])=>k(Re(h,t),(({3:t})=>D(e)?0:X(t,e)))));const f=Ie(d);let b=n;if(Ce(f)&&K(g))b=a;else{J(s,b,a);const e=Ie();Me(f,((t,[s,n])=>We(me(e,s,Pe),[t,n])));const t=Pe();Me(u,(s=>Le(e,s)?0:We(t,s)));const n=Ie(),o=(t,n,o,r)=>k(t,(([l,i,c,d])=>{Me(n,((t,[s])=>{const n=me(l,t,Ie),a=Re(n,o),i=r?void 0:s;if(a!==i){const s=Pe([[a,i]]),r=we(n);Ve(n,o,i),ye(Re(e,t),(([e,t])=>{const a=Ze(d[e],r,n,s,t);d[e]=D(Qe(a))?null:a}))}})),Ce(i)||!W(g,(e=>e((e=>d[e]))))?a.delRow(s,c):D(c)?t[2]=a.addRow(s,d):a.setRow(s,c,d)}));E(b,s,b.addRowListener(s,null,((a,r,l,i)=>{const c=[],d=[],g=Ie(),u=b.hasRow(s,l);let h=!u;ye(t,(e=>{const[t,n,a]=i(s,l,e);X(c,n),X(d,a),h||=t})),Me(e,(e=>{const[t,,n]=i(s,l,e);(h||t)&&Ve(g,e,[n])})),h&&o(Fe(n,c,void 0,(([,e])=>(pe(e,l),Ce(e)))),g,l,1),u&&o(Fe(n,d,(()=>{const e={};return ye(t,(t=>e[t]=b.getCell(s,l,t))),[Ie(),Pe(),void 0,e]}),(([,e])=>{We(e,l)})),g,l)})))}J(s,e,b);const w=(t,n,a,r)=>{const l=t=>e.getCell(n,a,t);B(r,(n=>{const[a,,o,r,i]=Re(h,n),c=o?.(l,t),[d,g]=Re(i,t)??[];c!=d&&(D(g)||A(s,g),Ve(i,t,D(c)?null:[c,...m(s,1,e.addRowListener(a,c,(()=>w(t,a,c,r))))]))})),(t=>{const n=(s,n)=>e.getCell(...D(n)?[o,t,s]:s===o?[o,t,n]:[Re(h,s)?.[0],Re(Re(h,s)?.[4],t)?.[0],n]);b.transaction((()=>W(c,(e=>e(n)))?Me(u,((e,a)=>Ne(b,s,t,e,a(n,t)))):b.delRow(s,t)))})(t)},{3:L}=Re(h,null);return b.transaction((()=>m(s,1,e.addRowListener(o,null,((t,n,a)=>{e.hasRow(o,a)?w(a,o,a,L):(b.delRow(s,a),ye(h,(({4:e})=>k(Re(e,a),(([,t])=>{A(s,t),Ve(e,a)})))))}))))),x},delQueryDefinition:e=>(H(e),R(e),x),getStore:u,getQueryIds:f,forEachQuery:b,hasQuery:p,getTableId:I,addQueryIdsListener:e=>M((()=>e(x))),delListener:e=>(g(e),x),destroy:V,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=a.getListenerStats();return n}};return ge({[h]:[1,1],[h+y]:[0,1],[L]:[0,1],[C]:[0,1],[v]:[0,5],[w]:[1,2],[y]:[0,2],[T]:[1,3]},(([e,t],s)=>{B(e?["get","has","forEach"]:["get"],(e=>x[e+c+s]=(...t)=>a[e+s](...t))),x[d+c+s+i]=(...e)=>a[d+s+i](...z(e,0,t),((s,...n)=>e[t](x,...n)),!0)})),re(x)})),Lt=_e((e=>{const s=Ie(),n=Ie(),a=Ie(),o=Ie(),[r,l,i]=Ge((()=>p)),[c,d,g,u,h,f,,,b,w,L,C]=$e(e,(()=>[Ie(),Ie(),Ie(),Ie()]),(e=>D(e)?void 0:e+t),r,l),v=(e,t,s)=>k(f(e),(([n,,a])=>{if(!Le(a,t)){const o=Pe();if(h(e)!=y(e))We(o,t);else{let e=t;for(;!D(e)&&!Le(o,e);)We(o,e),e=Re(n,e)}if(s)return o;Ve(a,t,o)}return Re(a,t)})),T=(e,t)=>k(f(e),(([,,e])=>Ve(e,t))),y=e=>Re(s,e),p={setRelationshipDefinition:(e,t,r,i)=>(Ve(s,e,r),b(e,t,((t,s)=>{const r=Pe(),i=Pe(),c=Pe(),[d,g]=f(e);ye(s,(([t,s],n)=>{D(t)||(We(i,t),k(Re(g,t),(e=>{pe(e,n),Ce(e)&&Ve(g,t)}))),D(s)||(We(i,s),Le(g,s)||Ve(g,s,Pe()),We(Re(g,s),n)),We(r,n),Ve(d,n,s),Me(Re(o,e),(t=>{Le(v(e,t),n)&&We(c,t)}))})),t(),ye(r,(t=>l(n,[e,t]))),ye(i,(t=>l(a,[e,t]))),ye(c,(t=>{T(e,t),l(o,[e,t])}))}),je(i)),p),delRelationshipDefinition:e=>(Ve(s,e),w(e),p),getStore:c,getRelationshipIds:d,forEachRelationship:t=>g((s=>t(s,(t=>e.forEachRow(h(s),t))))),hasRelationship:u,getLocalTableId:h,getRemoteTableId:y,getRemoteRowId:(e,t)=>Re(f(e)?.[0],t),getLocalRowIds:(e,t)=>ve(Re(f(e)?.[1],t)),getLinkedRowIds:(e,t)=>D(f(e))?[t]:ve(v(e,t,!0)),addRelationshipIdsListener:L,addRemoteRowIdListener:(e,t,s)=>r(s,n,[e,t]),addLocalRowIdsListener:(e,t,s)=>r(s,a,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(v(e,t),r(s,o,[e,t])),delListener:e=>(T(...i(e)??[]),p),destroy:C,getListenerStats:()=>({})};return re(p)})),Ct=([e,t,s])=>[e,t,s],vt=([e,t])=>[e,t],Tt=e=>e[2],yt=(e,t)=>ot(e+":"+t),pt=(e,t,s)=>{e[2]=t>>>0,s>e[0]&&(e[0]=s)},It=e=>[e,le()],St=(e="")=>[e,Ie(),0],Rt=([e,t,s],n=Ct)=>[e,Ee(t,n),s],Mt=(t,s)=>Q(t)&&3==N(t)&&x(t[0])&&s(t[1])&&e(t[2])==a&&H(t[2]),Vt=e=>[e,e],mt=()=>[Ie(),Ie()],At=e=>[...e],Et=([e,t])=>e===t,Ht=e=>JSON.stringify(e,((e,t)=>t instanceof Map?ee.fromEntries([...t]):t)),Dt=JSON.parse,kt=(e,t,s)=>Ve(e,t,Re(e,t)==-s?void 0:s),Jt=()=>{let e,t,s=!1,n=!1,o=0,c=[];const u=Ie(),v=Ie(),M=Ie(),V=Ie(),m=Ie(),A=Ie(),E=Ie(),H=Ie(),x=Ie(),Q=Ie(),N=Ie(),O=Ie(),W=Ie(),j=Ie(),G=Pe(),K=Ie(),U=Ie(),Y=Ie(),Z=Ie(),ee=mt(),te=mt(),se=mt(),ne=mt(),ae=mt(),oe=mt(),le=mt(),de=mt(),ue=mt(),fe=mt(),ve=mt(),Fe=mt(),ze=mt(),$e=mt(),je=mt(),_e=mt(),Be=mt(),Ke=mt(),Xe=mt(),Ye=mt(),Ze=mt(),et=mt(),tt=Ie(),st=mt(),[nt,at,ot,rt]=Ge((()=>Js)),lt=e=>{if(!be(e,((e,t)=>P([r,l],t))))return!1;const t=e[r];return!(!J(t)&&t!=a||(Qe(e[l])!=t&&ce(e,l),0))},it=(t,s)=>(!e||Le(N,s)||Bt(s))&&be(t,((e,t)=>ct(s,t,e)),(()=>Bt(s))),ct=(e,t,s,n)=>be(n?s:ht(s,e,t),((n,a)=>k(dt(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>Bt(e,t))),dt=(t,s,n,a)=>e?k(Re(Re(N,t),n),(e=>Qe(a)!=e[r]?Bt(t,s,n,a,e[l]):a),(()=>Bt(t,s,n,a))):D(Qe(a))?Bt(t,s,n,a):a,gt=(e,t)=>be(t?e:ft(e),((t,s)=>k(ut(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),ut=(e,s)=>t?k(Re(W,e),(t=>Qe(s)!=t[r]?qt(e,s,t[l]):s),(()=>qt(e,s))):D(Qe(s))?qt(e,s):s,ht=(e,t,s)=>(k(Re(O,t),(([n,a])=>{ye(n,((t,s)=>{ie(e,s)||(e[s]=t)})),ye(a,(n=>{ie(e,n)||Bt(t,s,n)}))})),e),ft=e=>(t&&(ye(j,((t,s)=>{ie(e,s)||(e[s]=t)})),ye(G,(t=>{ie(e,t)||qt(t)}))),e),bt=e=>Ae(N,e,((e,t,s)=>{const n=Ie(),a=Pe();Ae(me(N,t,Ie),s,((e,t,s)=>{Ve(e,t,s),k(s[l],(e=>Ve(n,t,e)),(()=>We(a,t)))})),Ve(O,t,[n,a])}),((e,t)=>{Ve(N,t),Ve(O,t)})),wt=e=>Ae(W,e,((e,t,s)=>{Ve(W,t,s),k(s[l],(e=>Ve(j,t,e)),(()=>We(G,t)))}),((e,t)=>{Ve(W,t),Ve(j,t),pe(G,t)})),Lt=e=>he(e)?Rs():Ts(e),Ct=e=>Ae(Y,e,((e,t,s)=>vt(t,s)),((e,t)=>Ft(t))),vt=(e,t)=>Ae(me(Y,e,(()=>(Ot(e,1),Ve(K,e,qe()),Ve(U,e,Ie()),Ie()))),t,((t,s,n)=>Tt(e,t,s,n)),((t,s)=>Qt(e,t,s))),Tt=(e,t,s,n,a)=>Ae(me(t,s,(()=>(Pt(e,s,1),Ie()))),n,((t,n,a)=>yt(e,s,t,n,a)),((n,o)=>zt(e,t,s,n,o,a))),yt=(e,t,s,n,a)=>{Le(s,n)||Wt(e,t,n,1);const o=Re(s,n);a!==o&&($t(e,t,n,o,a),Ve(s,n,a))},pt=(e,t,s,n,a)=>k(Re(t,s),(t=>yt(e,s,t,n,a)),(()=>Tt(e,t,s,ht({[n]:a},e,s)))),It=e=>he(e)?ms():ys(e),St=e=>Ae(Z,e,((e,t,s)=>Rt(t,s)),((e,t)=>Nt(t))),Rt=(e,t)=>{Le(Z,e)||jt(e,1);const s=Re(Z,e);t!==s&&(_t(e,s,t),Ve(Z,e,t))},Mt=(e,t)=>{const[s]=Re(K,e),n=s(t);return Le(Re(Y,e),n)?Mt(e,t):n},xt=e=>Re(Y,e)??vt(e,{}),Ft=e=>vt(e,{}),Qt=(e,t,s)=>{const[,n]=Re(K,e);n(s),Tt(e,t,s,{},!0)},zt=(e,t,s,n,a,o)=>{const r=Re(Re(O,e)?.[0],a);if(!D(r)&&!o)return yt(e,s,n,a,r);const l=t=>{$t(e,s,t,Re(n,t)),Wt(e,s,t,-1),Ve(n,t)};D(r)?l(a):Me(n,l),Ce(n)&&(Pt(e,s,-1),Ce(Ve(t,s))&&(Ot(e,-1),Ve(Y,e),Ve(K,e),Ve(U,e)))},Nt=e=>{const t=Re(j,e);if(!D(t))return Rt(e,t);_t(e,Re(Z,e)),jt(e,-1),Ve(Z,e)},Ot=(e,t)=>kt(u,e,t),Pt=(e,t,s)=>kt(me(V,e,Ie),t,s)&&Ve(M,e,me(M,e,(()=>0))+s),Wt=(e,t,s,n)=>{const a=Re(U,e),o=Re(a,s)??0;(0==o&&1==n||1==o&&-1==n)&&kt(me(v,e,Ie),s,n),Ve(a,s,o!=-n?o+n:null),kt(me(me(m,e,Ie),t,Ie),s,n)},$t=(e,t,s,n,a)=>me(me(me(A,e,Ie),t,Ie),s,(()=>[n,0]))[1]=a,jt=(e,t)=>kt(E,e,t),_t=(e,t,s)=>me(H,e,(()=>[t,0]))[1]=s,Bt=(e,t,s,n,a)=>(X(me(me(me(x,e,Ie),t,Ie),s,(()=>[])),n),a),qt=(e,t,s)=>(X(me(Q,e,(()=>[])),t),s),Gt=(e,t,s)=>k(Re(Re(Re(A,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Vt(cs(e,t,s))])),Kt=e=>k(Re(H,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Vt(us(e))])),Ut=e=>Ce(x)||Ce(_e[e])?0:ye(e?xe(x):x,((t,s)=>ye(t,((t,n)=>ye(t,((t,a)=>at(_e[e],[s,n,a],t))))))),Xt=e=>Ce(Q)||Ce(Be[e])?0:ye(e?ke(Q):Q,((t,s)=>at(Be[e],[s],t))),Yt=(e,t,s,n)=>{if(!Ce(e))return at(t,n,(()=>Ee(e))),Me(e,((e,t)=>at(s,[...n??[],e],1==t))),1},Zt=e=>{const t=hs();t!=s&&at(ee[e],void 0,t);const n=Ce(fe[e]),a=Ce(ze[e])&&Ce($e[e])&&Ce(ue[e])&&Ce(ve[e])&&Ce(oe[e])&&Ce(le[e])&&Ce(de[e])&&n&&Ce(se[e])&&Ce(ne[e]),o=Ce(je[e])&&Ce(Fe[e])&&Ce(ae[e])&&Ce(te[e]);if(!a||!o){const t=e?[ke(u),Je(v),ke(M),Je(V),xe(m),xe(A)]:[u,v,M,V,m,A];if(!a){Yt(t[0],se[e],ne[e]),ye(t[1],((t,s)=>Yt(t,oe[e],le[e],[s]))),ye(t[2],((t,s)=>{0!=t&&at(de[e],[s],os(s))}));const s=Pe();ye(t[3],((t,a)=>{Yt(t,ue[e],ve[e],[a])&&!n&&(at(fe[e],[a,null]),We(s,a))})),n||ye(t[5],((t,n)=>{if(!Le(s,n)){const s=Pe();ye(t,(e=>ye(e,(([t,n],a)=>n!==t?We(s,a):pe(e,a))))),ye(s,(t=>at(fe[e],[n,t])))}})),ye(t[4],((t,s)=>ye(t,((t,n)=>Yt(t,ze[e],$e[e],[s,n])))))}if(!o){let s;ye(t[5],((t,n)=>{let a;ye(t,((t,o)=>{let r;ye(t,(([t,l],i)=>{l!==t&&(at(je[e],[n,o,i],l,t,Gt),s=a=r=1)})),r&&at(Fe[e],[n,o],Gt)})),a&&at(ae[e],[n],Gt)})),s&&at(te[e],void 0,Gt)}}},es=e=>{const t=Cs();t!=n&&at(Ke[e],void 0,t);const s=Ce(Ye[e])&&Ce(Ze[e]),a=Ce(et[e])&&Ce(Xe[e]);if(!s||!a){const t=e?[ke(E),ke(H)]:[E,H];if(s||Yt(t[0],Ye[e],Ze[e]),!a){let s;ye(t[1],(([t,n],a)=>{n!==t&&(at(et[e],[a],n,t,Kt),s=1)})),s&&at(Xe[e],void 0,Kt)}}},ts=(e,...t)=>(Hs((()=>e(...q(t,R)))),Js),ss=()=>De(Y),ns=()=>Se(Y),as=e=>Se(Re(U,R(e))),os=e=>we(Re(Y,R(e))),rs=e=>Se(Re(Y,R(e))),ls=(e,t,s,n=0,a)=>{return q(z(_((o=Re(Y,R(e)),r=(e,s)=>[D(t)?s:Re(e,R(t)),s],q([...o?.entries()??[]],(([e,t])=>r(t,e)))),(([e],[t])=>Ue(e,t)*(s?-1:1))),n,D(a)?a:n+a),(([,e])=>e));var o,r},is=(e,t)=>Se(Re(Re(Y,R(e)),R(t))),cs=(e,t,s)=>Re(Re(Re(Y,R(e)),R(t)),R(s)),ds=()=>Ee(Z),gs=()=>Se(Z),us=e=>Re(Z,R(e)),hs=()=>!Ce(Y),fs=e=>Le(Y,R(e)),bs=(e,t)=>Le(Re(U,R(e)),R(t)),ws=(e,t)=>Le(Re(Y,R(e)),R(t)),Ls=(e,t,s)=>Le(Re(Re(Y,R(e)),R(t)),R(s)),Cs=()=>!Ce(Z),vs=e=>Le(Z,R(e)),Ts=e=>ts((()=>(e=>be(e,it,Bt))(e)?Ct(e):0)),ys=e=>ts((()=>gt(e)?St(e):0)),ps=e=>{try{Lt(Dt(e))}catch{}return Js},Is=t=>ts((()=>{if((e=be(t,(e=>be(e,lt))))&&(bt(t),!Ce(Y))){const e=ss();Rs(),Ts(e)}})),Ss=e=>ts((()=>{if(t=(e=>be(e,lt))(e)){const s=ds();Es(),ms(),t=!0,wt(e),ys(s)}})),Rs=()=>ts((()=>Ct({}))),Ms=e=>ts((e=>Le(Y,e)?Ft(e):0),e),Vs=(e,t)=>ts(((e,t)=>k(Re(Y,e),(s=>Le(s,t)?Qt(e,s,t):0))),e,t),ms=()=>ts((()=>St({}))),As=()=>ts((()=>{bt({}),e=!1})),Es=()=>ts((()=>{wt({}),t=!1})),Hs=(e,t)=>{if(-1!=o){Ds();const s=e();return ks(t),s}},Ds=()=>(-1!=o&&o++,1==o&&at(tt,void 0),Js),ks=e=>(o>0&&(o--,0==o&&(o=1,Ut(1),Ce(A)||Zt(1),Xt(1),Ce(H)||es(1),e?.(Js)&&(ye(A,((e,t)=>ye(e,((e,s)=>ye(e,(([e],n)=>Ne(Js,t,s,n,e))))))),Te(A),ye(H,(([e],t)=>Oe(Js,t,e))),Te(H)),at(st[0],void 0),o=-1,Ut(0),Ce(A)||Zt(0),Xt(0),Ce(H)||es(0),c[0]?.(Js),at(st[1],void 0),c[1]?.(Js),o=0,s=hs(),n=Cs(),B([u,v,M,V,m,A,x,E,H,Q],Te))),Js),Js={getContent:()=>[ss(),ds()],getTables:ss,getTableIds:ns,getTable:e=>He(Re(Y,R(e))),getTableCellIds:as,getRowCount:os,getRowIds:rs,getSortedRowIds:ls,getRow:(e,t)=>Ee(Re(Re(Y,R(e)),R(t))),getCellIds:is,getCell:cs,getValues:ds,getValueIds:gs,getValue:us,hasTables:hs,hasTable:fs,hasTableCell:bs,hasRow:ws,hasCell:Ls,hasValues:Cs,hasValue:vs,getTablesJson:()=>Ht(Y),getValuesJson:()=>Ht(Z),getJson:()=>Ht([Y,Z]),getTablesSchemaJson:()=>Ht(N),getValuesSchemaJson:()=>Ht(W),getSchemaJson:()=>Ht([N,W]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>ts((()=>{(he(e)?Rs:Ts)(e),(he(t)?ms:ys)(t)})),setTables:Ts,setTable:(e,t)=>ts((e=>it(t,e)?vt(e,t):0),e),setRow:(e,t,s)=>ts(((e,t)=>ct(e,t,s)?Tt(e,xt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Hs((()=>{let n;return ct(e,n,t)&&(e=R(e),Tt(e,xt(e),n=Mt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>ts(((e,t)=>{if(ct(e,t,s,1)){const n=xt(e);ge(s,((s,a)=>pt(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>ts(((e,t,s)=>k(dt(e,t,s,F(n)?n(cs(e,t,s)):n),(n=>pt(e,xt(e),t,s,n)))),e,t,s),setValues:ys,setPartialValues:e=>ts((()=>gt(e,1)?ge(e,((e,t)=>Rt(t,e))):0)),setValue:(e,t)=>ts((e=>k(ut(e,F(t)?t(us(e)):t),(t=>Rt(e,t)))),e),applyChanges:e=>ts((()=>{ge(e[0],((e,t)=>D(e)?Ms(t):ge(e,((e,s)=>D(e)?Vs(t,s):ge(e,((e,n)=>Ne(Js,t,s,n,e))))))),ge(e[1],((e,t)=>Oe(Js,t,e)))})),setTablesJson:ps,setValuesJson:e=>{try{It(Dt(e))}catch{}return Js},setJson:e=>ts((()=>{try{const[t,s]=Dt(e);Lt(t),It(s)}catch{ps(e)}})),setTablesSchema:Is,setValuesSchema:Ss,setSchema:(e,t)=>ts((()=>{Is(e),Ss(t)})),delTables:Rs,delTable:Ms,delRow:Vs,delCell:(e,t,s,n)=>ts(((e,t,s)=>k(Re(Y,e),(a=>k(Re(a,t),(o=>Le(o,s)?zt(e,a,t,o,s,n):0))))),e,t,s),delValues:ms,delValue:e=>ts((e=>Le(Z,e)?Nt(e):0),e),delTablesSchema:As,delValuesSchema:Es,delSchema:()=>ts((()=>{As(),Es()})),transaction:Hs,startTransaction:Ds,getTransactionChanges:()=>[Ee(A,((e,t)=>-1===Re(u,t)?void 0:Ee(e,((e,s)=>-1===Re(Re(V,t),s)?void 0:Ee(e,(([,e])=>e),(e=>Et(e)))),Ce,he)),Ce,he),Ee(H,(([,e])=>e),(e=>Et(e))),1],getTransactionLog:()=>[!Ce(A),!Ce(H),De(A,At,Et),De(x),Ee(H,At,Et),Ee(Q),Ee(u),He(V),De(m),Ee(E)],finishTransaction:ks,forEachTable:e=>ye(Y,((t,s)=>e(s,(e=>ye(t,((t,s)=>e(s,(e=>Me(t,e))))))))),forEachTableCell:(e,t)=>Me(Re(U,R(e)),t),forEachRow:(e,t)=>ye(Re(Y,R(e)),((e,s)=>t(s,(t=>Me(e,t))))),forEachCell:(e,t,s)=>Me(Re(Re(Y,R(e)),R(t)),s),forEachValue:e=>Me(Z,e),addSortedRowIdsListener:(e,t,s,n,a,o,r)=>{let l=ls(e,t,s,n,a);return nt((()=>{const r=ls(e,t,s,n,a);$(r,l)||(l=r,o(Js,e,t,s,n,a,l))}),fe[r?1:0],[e,t],[ns])},addStartTransactionListener:e=>nt(e,tt),addWillFinishTransactionListener:e=>nt(e,st[0]),addDidFinishTransactionListener:e=>nt(e,st[1]),callListener:e=>(rt(e),Js),delListener:e=>(ot(e),Js),getListenerStats:()=>({}),createStore:Jt,addListener:nt,callListeners:at,setInternalListeners:(e,t)=>c=[e,t]};return ge({[g+f]:[0,ee,[],()=>[hs()]],[f]:[0,te],[b]:[0,se],[g+h]:[1,ne,[ns],e=>[fs(...e)]],[h]:[1,ae,[ns]],[h+y]:[1,oe,[ns]],[g+h+T]:[2,le,[ns,as],e=>[bs(...e)]],[L]:[1,de,[ns]],[C]:[1,ue,[ns]],[g+w]:[2,ve,[ns,rs],e=>[ws(...e)]],[w]:[2,Fe,[ns,rs]],[y]:[2,ze,[ns,rs]],[g+T]:[3,$e,[ns,rs,is],e=>[Ls(...e)]],[T]:[3,je,[ns,rs,is],e=>Vt(cs(...e))],InvalidCell:[3,_e],[g+I]:[0,Ke,[],()=>[Cs()]],[I]:[0,Xe],[S]:[0,Ye],[g+p]:[1,Ze,[gs],e=>[vs(...e)]],[p]:[1,et,[gs],e=>Vt(us(e[0]))],InvalidValue:[1,Be]},(([e,t,s,n],a)=>{Js[d+a+i]=(...a)=>nt(a[e],t[a[e+1]?1:0],e>0?z(a,0,e):void 0,s,n)})),re(Js)},xt={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1},Ft=(e="")=>[e,[St(e),St(e)],0],Qt=e=>{let s,n,a=1,o=Ft();const[r,l]=ft(e),i=Jt(),c=e=>{const t=a;return a=0,e(),a=t,b},d=(e,t=0)=>{const s={},n={},[a,[[r,l,i],c],d]=e,[,[u,h]]=o,[f,b,w]=u;if(r){let e=t?i:w^(r>f?(f?ot(f):0)^ot(r):0);de(l,(([n,a,o],r)=>{const l=me(b,r,St),[i,c,d]=l;let u=t?o:d^(n>i?(i?ot(i):0)^ot(n):0);de(a,((e,n)=>{const[a,o]=g(e,me(c,n,St),fe(fe(s,r,le),n,le),t);u^=t?0:(a?yt(n,a):0)^yt(n,o)})),pt(l,u,n),e^=t?0:(d?yt(r,d):0)^yt(r,l[2])})),pt(u,e,r)}return g(c,h,n,t),pt(o,t?d:u[2]^h[2],a),[s,n,1]},g=(e,s,n,a)=>{const[o,r,l]=e,[i,c,d]=s;if(o){let e=a?l:d^(o>i?(i?ot(i):0)^ot(o):0);de(r,(([s,o,r],l)=>{const i=me(c,l,(()=>[t,void 0,0])),[d,,g]=i;s>d&&(pt(i,a?r:ot(Ht(o??null)+":"+s),s),i[1]=o,n[l]=o,e^=a?0:yt(l,g)^yt(l,i[2]))})),pt(s,e,o)}return[d,s[2]]},u=()=>[o[0],[Rt(o[1][0],(e=>Rt(e,(e=>Rt(e))))),Rt(o[1][1])],o[2]],h=()=>{if(D(n)){const[,,e,,n]=i.getTransactionLog(),a=he(e)&&he(n)?t:s??(s=r()),o=[a,[It(he(e)?t:a),It(he(n)?t:a),1]],[[,l],[,c]]=o[1];return ge(e,((e,t)=>{const[,s]=l[t]=It(a);ge(e,((e,t)=>{const[,n]=s[t]=It(a);ge(e,(([,e],t)=>n[t]=[a,e]))}))})),ge(n,(([,e],t)=>c[t]=[a,e])),o}return n},f=e=>c((()=>{l(e[0]),i.applyChanges(d(e))})),b={getId:()=>e,getMergeableContent:u,getMergeableContentHashes:()=>[o[0],[o[1][0][2],o[1][1][2]]],getMergeableTableHashes:()=>Ee(o[1][0][1],Tt),getMergeableTableIdsDiff:e=>{const t=[];return Me(o[1][0][1],((s,[,,n])=>{n!==e?.[s]&&X(t,s)})),t},getMergeableRowHashes:e=>le(q(e,(e=>[e,Ee(Re(o[1][0][1],e)?.[1],Tt)]))),getMergeableRowIdsDiff:e=>ue(e,((e,t)=>{const s=[];return Me(Re(o[1][0][1],t)?.[1],((t,[,,n])=>{n!==e?.[t]&&X(s,t)})),s})),getMergeableCellHashes:e=>ue(e,((e,t)=>le(q(e,(e=>[e,Ee(Re(Re(o[1][0][1],t)?.[1],e)?.[1],Tt)]))))),getMergeableTablesChanges:e=>{const[,[[t,s]]]=o,n={};return de(e,((e,t)=>k(Re(s,t),(([s,a])=>{const o={};de(e,((e,t)=>k(Re(a,t),(([s,n])=>{const a=Ee(n,vt,(([,,t],s)=>t==e?.[s]));he(a)||(o[t]=[s,a])})))),he(o)||(n[t]=[s,o])})))),[t,n]},getMergeableValuesHashes:()=>Ee(o[1][1][1],Tt),getMergeableValuesChanges:e=>[o[1][1][0],Ee(o[1][1][1],vt,(([,,t],s)=>t==e?.[s]))],setMergeableContent:e=>c((()=>(e=>Mt(e,(e=>Q(e)&&2==N(e)&&Mt(e[0],(e=>be(e,(e=>Mt(e,(e=>be(e,(e=>Mt(e,(e=>be(e,(e=>Mt(e,ze)),void 0,1)))),void 0,1)))),void 0,1)))&&Mt(e[1],(e=>be(e,(e=>Mt(e,ze)),void 0,1))))))(e)?i.transaction((()=>{i.delTables().delValues(),o=Ft(),l(e[0]),i.applyChanges(d(e,1))})):0)),getTransactionMergeableChanges:h,applyMergeableChanges:f,merge:e=>{const t=u(),s=e.getMergeableContent();return e.applyMergeableChanges(t),f(s)}};return i.setInternalListeners((()=>{a&&(n=h(),d(n))}),(()=>s=n=void 0)),ge(i,((e,t)=>b[t]=M(t,"set")||M(t,"del")||M(t,"apply")||V(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),b):M(t,"add")&&V(t,"Listener")?(...s)=>{const n=xt[z(t,3,-8)]??0,a=s[n];return s[n]=(e,...t)=>a(b,...t),e(...s)}:e)),re(b)};export{Ke as createCheckpoints,nt as createCustomPersister,bt as createCustomSynchronizer,Xe as createIndexes,Qt as createMergeableStore,et as createMetrics,wt as createQueries,Lt as createRelationships,Jt as createStore,Ue as defaultSorter};
1
+ const e=e=>typeof e,t="",s=e(t),n=e(!0),a=e(0),o=e(e),r="type",l="default",i="Listener",c="Result",d="add",u="Has",g="Ids",h="Table",f=h+"s",b=h+g,C="Row",w=C+"Count",L=C+g,v="Sorted"+C+g,T="Cell",y=T+g,p="Value",I=p+"s",S=p+g,R=e=>t+e,M=(e,t)=>e.startsWith(t),V=(e,t)=>e.endsWith(t),m=Promise,A=Math.max,E=Math.min,D=isFinite,H=e=>null==e,k=(e,t,s)=>H(e)?s?.():t(e),J=e=>e==s||e==n,x=t=>e(t)==s,F=t=>e(t)==o,Q=e=>Array.isArray(e),z=(e,t,s)=>e.slice(t,s),N=e=>e.length,O=()=>{},P=(e,t)=>e.includes(t),W=(e,t)=>e.every(t),$=(e,t)=>N(e)===N(t)&&W(e,((e,s)=>t[s]===e)),j=(e,t)=>W(e,((s,n)=>0==n||t(e[n-1],s)<=0)),_=(e,t)=>e.sort(t),B=(e,t)=>e.forEach(t),q=(e,t)=>e.map(t),G=e=>U(e,((e,t)=>e+t),0),K=e=>0==N(e),U=(e,t,s)=>e.reduce(t,s),X=(e,...t)=>e.push(...t),Y=e=>e.pop(),Z=e=>e.shift(),ee=Object,te=e=>ee.getPrototypeOf(e),se=ee.entries,ne=ee.isFrozen,ae=e=>!H(e)&&k(te(e),(e=>e==ee.prototype||H(te(e))),(()=>!0)),oe=ee.keys,re=ee.freeze,le=(e=[])=>ee.fromEntries(e),ie=(e,t)=>t in e,ce=(e,t)=>(delete e[t],e),de=(e,t)=>B(se(e),(([e,s])=>t(s,e))),ue=(e,t)=>q(se(e),(([e,s])=>t(s,e))),ge=(e,t)=>le(ue(e,((e,s)=>[s,t(e,s)]))),he=e=>ae(e)&&0==(e=>N(oe(e)))(e),fe=(e,t,s)=>(ie(e,t)||(e[t]=s()),e[t]),be=(e,t,s,n=0)=>H(e)||!ae(e)||!n&&he(e)||ne(e)?(s?.(),!1):(ue(e,((s,n)=>{t(s,n)||ce(e,n)})),!!n||!he(e)),Ce=e=>e?.size??0,we=(e,t)=>e?.has(t)??!1,Le=e=>H(e)||0==Ce(e),ve=e=>[...e?.values()??[]],Te=e=>e.clear(),ye=(e,t)=>e?.forEach(t),pe=(e,t)=>e?.delete(t),Ie=e=>new Map(e),Se=e=>[...e?.keys()??[]],Re=(e,t)=>e?.get(t),Me=(e,t)=>ye(e,((e,s)=>t(s,e))),Ve=(e,t,s)=>H(s)?(pe(e,t),e):e?.set(t,s),me=(e,t,s,n)=>(we(e,t)?n?.(Re(e,t)):Ve(e,t,s()),Re(e,t)),Ae=(e,t,s,n=Ve)=>(ue(t,((t,n)=>s(e,n,t))),Me(e,(s=>ie(t,s)?0:n(e,s))),e),Ee=(e,t,s,n)=>{const a={};return ye(e,((e,o)=>{if(!s?.(e,o)){const s=t?t(e,o):e;!n?.(s)&&(a[o]=s)}})),a},De=(e,t,s)=>Ee(e,(e=>Ee(e,t,s)),Le,he),He=(e,t,s)=>Ee(e,(e=>De(e,t,s)),Le,he),ke=(e,t)=>{const s=Ie();return ye(e,((e,n)=>s.set(n,t?.(e)??e))),s},Je=e=>ke(e,ke),xe=e=>ke(e,Je),Fe=(e,t,s,n,a=0)=>k((s?me:Re)(e,t[a],a>N(t)-2?s:Ie),(o=>{if(a>N(t)-2)return n?.(o)&&Ve(e,t[a]),o;const r=Fe(o,t,s,n,a+1);return Le(o)&&Ve(e,t[a]),r})),Qe=t=>{const s=e(t);return J(s)||s==a&&D(t)?s:void 0},ze=e=>null===e||!H(Qe(e)),Ne=(e,t,s,n,a)=>H(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),Oe=(e,t,s)=>H(s)?e.delValue(t):e.setValue(t,s),Pe=e=>new Set(Q(e)||H(e)?e:[e]),We=(e,t)=>e?.add(t),$e=(e,t,s,n,a)=>{const o=e.hasRow,r=Ie(),l=Ie(),i=Ie(),c=Ie(),d=Ie(),u=Ie(),g=(t,s,...n)=>{const a=me(u,t,Pe);return B(n,(t=>We(a,t)&&s&&e.callListener(t))),n},h=(t,...s)=>k(Re(u,t),(n=>{B(K(s)?ve(n):s,(t=>{e.delListener(t),pe(n,t)})),Le(n)&&Ve(u,t)})),f=(e,s)=>{Ve(r,e,s),we(l,e)||(Ve(l,e,t()),Ve(c,e,Ie()),Ve(d,e,Ie()),a(i))},b=e=>{Ve(r,e),Ve(l,e),Ve(c,e),Ve(d,e),h(e),a(i)};return[()=>e,()=>Se(r),e=>Me(l,e),e=>we(l,e),e=>Re(r,e),e=>Re(l,e),(e,t)=>Ve(l,e,t),f,(t,n,a,r,l)=>{f(t,n);const i=Ie(),u=Ie(),b=Re(c,t),C=Re(d,t),w=t=>{const a=s=>e.getCell(n,t,s),c=Re(b,t),d=o(n,t)?s(r(a,t)):void 0;if(c===d||Q(c)&&Q(d)&&$(c,d)||Ve(i,t,[c,d]),!H(l)){const e=Re(C,t),s=o(n,t)?l(a,t):void 0;e!=s&&Ve(u,t,s)}},L=e=>{a((()=>{ye(i,(([,e],t)=>Ve(b,t,e))),ye(u,((e,t)=>Ve(C,t,e)))}),i,u,b,C,e),Te(i),Te(u)};Me(b,w),e.hasTable(n)&&B(e.getRowIds(n),(e=>{we(b,e)||w(e)})),L(!0),h(t),g(t,0,e.addRowListener(n,null,((e,t,s)=>w(s))),e.addTableListener(n,(()=>L())))},b,e=>n(e,i),()=>Me(u,b),g,h]},je=(e,s)=>x(e)?t=>t(e):e??(()=>s??t),_e=(e,t)=>{const s=new WeakMap;return n=>{s.has(n)||s.set(n,e(n));const a=s.get(n);return t?.(a),a}},Be=/^\d+$/,qe=()=>{const e=[];let s=0;return[n=>(n?Z(e):null)??t+s++,t=>{Be.test(t)&&N(e)<1e3&&X(e,t)}]},Ge=e=>{let s;const[n,a]=qe(),o=Ie();return[(a,r,l,i=[],c=(()=>[]))=>{s??=e();const d=n(1);return Ve(o,d,[a,r,l,i,c]),We(Fe(r,l??[t],Pe),d),d},(e,n,...a)=>B(((e,s=[t])=>{const n=[],a=(e,t)=>t==N(s)?X(n,e):null===s[t]?ye(e,(e=>a(e,t+1))):B([s[t],null],(s=>a(Re(e,s),t+1)));return a(e,0),n})(e,n),(e=>ye(e,(e=>Re(o,e)[0](s,...n??[],...a))))),e=>k(Re(o,e),(([,s,n])=>(Fe(s,n??[t],void 0,(t=>(pe(t,e),Le(t)?1:0))),Ve(o,e),a(e),n))),e=>k(Re(o,e),(([e,,t=[],n,a])=>{const o=(...r)=>{const l=N(r);l==N(t)?e(s,...r,...a(r)):H(t[l])?B(n[l]?.(...r)??[],(e=>o(...r,e))):o(...r,t[l])};o()}))]},Ke=_e((e=>{let s,n,a,o=100,r=Ie(),l=Ie(),i=1;const c=Ie(),d=Ie(),[u,g,h]=Ge((()=>x)),f=Ie(),b=Ie(),C=[],w=[],L=(t,s)=>{i=0,e.transaction((()=>{const[n,a]=Re(f,s);ye(n,((s,n)=>ye(s,((s,a)=>ye(s,((s,o)=>Ne(e,n,a,o,s[t]))))))),ye(a,((s,n)=>Oe(e,n,s[t])))})),i=1},v=e=>{Ve(f,e),Ve(b,e),g(d,[e])},T=(e,t)=>B(((e,t)=>e.splice(0,t))(e,t??N(e)),v),y=()=>T(C,N(C)-o),p=()=>k(s,(()=>{X(C,s),y(),T(w),s=void 0,a=1})),I=()=>{s=Y(C),a=1};let S,R;const M=(e="")=>(H(s)&&(s=t+n++,Ve(f,s,[r,l]),D(s,e),r=Ie(),l=Ie(),a=1),s),V=()=>{K(C)||(((e,...t)=>{e.unshift(...t)})(w,M()),L(0,s),s=Y(C),a=1)},m=()=>{K(w)||(X(C,s),s=Z(w),L(1,s),a=1)},A=()=>{a&&(g(c),a=0)},E=e=>{const t=M(e);return A(),t},D=(e,t)=>(J(e)&&Re(b,e)!==t&&(Ve(b,e,t),g(d,[e])),x),J=e=>we(f,e),x={setSize:e=>(o=e,y(),x),addCheckpoint:E,setCheckpoint:D,getStore:()=>e,getCheckpointIds:()=>[[...C],s,[...w]],forEachCheckpoint:e=>Me(b,e),hasCheckpoint:J,getCheckpoint:e=>Re(b,e),goBackward:()=>(V(),A(),x),goForward:()=>(m(),A(),x),goTo:e=>{const t=P(C,e)?V:P(w,e)?m:null;for(;!H(t)&&e!=s;)t();return A(),x},addCheckpointIdsListener:e=>u(e,c),addCheckpointListener:(e,t)=>u(t,d,[e]),delListener:e=>(h(e),x),clear:()=>(T(C),T(w),H(s)||v(s),s=void 0,n=0,E(),x),clearForward:()=>(K(w)||(T(w),g(c)),x),destroy:()=>{e.delListener(S),e.delListener(R)},getListenerStats:()=>({}),_registerListeners:()=>{S=e.addCellListener(null,null,null,((e,t,s,n,a,o)=>{if(i){p();const e=me(r,t,Ie),l=me(e,s,Ie),i=me(l,n,(()=>[o,void 0]));i[1]=a,i[0]===a&&Le(Ve(l,n))&&Le(Ve(e,s))&&Le(Ve(r,t))&&I(),A()}})),R=e.addValueListener(null,((e,t,s,n)=>{if(i){p();const e=me(l,t,(()=>[n,void 0]));e[1]=s,e[0]===s&&Le(Ve(l,t))&&I(),A()}}))}};return re(x.clear())}),(e=>e._registerListeners())),Ue=(e,t)=>(e??0)<(t??0)?-1:1,Xe=_e((e=>{const s=Ie(),n=Ie(),[a,o,r]=Ge((()=>v)),[l,i,c,d,u,g,h,,f,b,C,w]=$e(e,Ie,(e=>H(e)?t:Q(e)?q(e,R):R(e)),a,o),L=(t,s,n)=>{const a=u(t);ye(n,((t,n)=>s(n,(s=>ye(t,(t=>s(t,(s=>e.forEachCell(a,t,s)))))))))},v={setIndexDefinition:(e,t,a,r,l,i=Ue)=>{const c=H(l)?void 0:([e],[t])=>l(e,t);return f(e,t,((t,a,l,d,u,f)=>{let b=0;const C=Pe(),w=Pe(),L=g(e);if(ye(a,(([e,t],s)=>{const n=Pe(e),a=Pe(t);ye(n,(e=>pe(a,e)?pe(n,e):0)),ye(n,(e=>{We(C,e),k(Re(L,e),(t=>{pe(t,s),Le(t)&&(Ve(L,e),b=1)}))})),ye(a,(e=>{We(C,e),we(L,e)||(Ve(L,e,Pe()),b=1),We(Re(L,e),s),H(r)||We(w,e)}))})),t(),Le(u)||(f?Me(L,(e=>We(w,e))):Me(l,(e=>k(Re(d,e),(e=>We(w,e))))),ye(w,(e=>{const t=(t,s)=>i(Re(u,t),Re(u,s),e),s=[...Re(L,e)];j(s,t)||(Ve(L,e,Pe(_(s,t))),We(C,e))}))),(b||f)&&!H(c)){const t=[...L];j(t,c)||(h(e,Ie(_(t,c))),b=1)}b&&o(s,[e]),ye(C,(t=>o(n,[e,t])))}),je(a),k(r,je)),v},delIndexDefinition:e=>(b(e),v),getStore:l,getIndexIds:i,forEachIndex:e=>c(((t,s)=>e(t,(e=>L(t,e,s))))),forEachSlice:(e,t)=>L(e,t,g(e)),hasIndex:d,hasSlice:(e,t)=>we(g(e),t),getTableId:u,getSliceIds:e=>Se(g(e)),getSliceRowIds:(e,t)=>ve(Re(g(e),t)),addIndexIdsListener:C,addSliceIdsListener:(e,t)=>a(t,s,[e]),addSliceRowIdsListener:(e,t,s)=>a(s,n,[e,t]),delListener:e=>(r(e),v),destroy:w,getListenerStats:()=>({})};return re(v)})),Ye=Ie([["avg",[(e,t)=>G(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>A(...e),(e,t)=>A(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:A(t,e)]],["min",[e=>E(...e),(e,t)=>E(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:E(t,e)]],["sum",[e=>G(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Ze=(e,t,s,n,a,o=!1)=>{if(Le(s))return;const[r,l,i,c]=a;return o||=H(e),ye(n,(([s,n])=>{o||(e=H(s)?l?.(e,n,t++):H(n)?i?.(e,s,t--):c?.(e,n,s,t),o||=H(e))})),o?r(ve(s),Ce(s)):e},et=_e((e=>{const s=Ie(),[n,a,o]=Ge((()=>w)),[r,l,i,c,d,u,g,,h,f,b,C]=$e(e,O,(e=>isNaN(e)||H(e)||!0===e||!1===e||e===t?void 0:1*e),n,a),w={setMetricDefinition:(e,t,n,o,r,l,i)=>{const c=F(n)?[n,r,l,i]:Re(Ye,n)??Re(Ye,"sum");return h(e,t,((t,n,o,r,l,i)=>{const d=u(e),h=Ce(r);i||=H(d),t();let f=Ze(d,h,r,n,c,i);D(f)||(f=void 0),f!=d&&(g(e,f),a(s,[e],f,d))}),je(o,1)),w},delMetricDefinition:e=>(f(e),w),getStore:r,getMetricIds:l,forEachMetric:i,hasMetric:c,getTableId:d,getMetric:u,addMetricIdsListener:b,addMetricListener:(e,t)=>n(t,s,[e]),delListener:e=>(o(e),w),destroy:C,getListenerStats:()=>({})};return re(w)})),tt=Ie(),st=Ie(),nt=(e,t,s,n,a,o,r,l={},i=[])=>{let c,d,u,g=0;me(tt,i,(()=>0)),me(st,i,(()=>[]));const[h,f,b,C,w]=((e,t)=>!e||H(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!he(e)||!he(t),t.setContent]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!he(e)||!he(t),t.setDefaultContent])(r,e),L=async e=>(2!=g&&(g=1,await T.schedule((async()=>{await e(),g=0}))),T),v=t=>{(h&&x(t?.[0])?1===t?.[1][2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},T={load:async e=>await L((async()=>{try{v(await t())}catch(t){o?.(t),e&&w(e)}})),startAutoLoad:async e=>(await T.stopAutoLoad().load(e),d=n((async(e,s)=>{const n=s?.();await L((async()=>{try{v(n??e?.()??await t())}catch(e){o?.(e)}}))})),T),stopAutoLoad:()=>(d&&(a(d),d=void 0),T),isAutoLoading:()=>!H(d),save:async e=>(1!=g&&(g=2,await T.schedule((async()=>{try{await s(f,e)}catch(e){o?.(e)}g=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),u=e.addDidFinishTransactionListener((()=>{const e=b();C(e)&&T.save((()=>e))})),T),stopAutoSave:()=>(k(u,e.delListener),u=void 0,T),isAutoSaving:()=>!H(u),schedule:async(...e)=>(X(Re(st,i),...e),await(async()=>{if(!Re(tt,i)){for(Ve(tt,i,1);!H(c=Z(Re(st,i)));)try{await c()}catch(e){o?.(e)}Ve(tt,i,0)}})(),T),getStore:()=>e,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...l};return re(T)},at=new globalThis.TextEncoder,ot=e=>{let t=2166136261;return B(at.encode(e),(e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0},rt=2**36,lt=2**30,it=2**24,ct=2**18,dt=4096,ut=64,gt=e=>String.fromCharCode(48+(63&e)),ht=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,ft=e=>{let t=0,s=-1;const n=ot(e),a=e=>{const n=t,[a,o]=H(e)||""==e?[0,0]:[ht(r=e,0)*rt+ht(r,1)*lt+ht(r,2)*it+ht(r,3)*ct+ht(r,4)*dt+ht(r,5)*ut+ht(r,6),ht(r,7)*ct+ht(r,8)*dt+ht(r,9)*ut+ht(r,10),ht(r,11)*it+ht(r,12)*ct+ht(r,13)*dt+ht(r,14)*ut+ht(r,15)];var r;t=A(n,a,Date.now()),s=t==n?t==a?A(s,o):s:t==a?o:-1};return[()=>{return a(),o=++s,r=n,gt((e=t)/rt)+gt(e/lt)+gt(e/it)+gt(e/ct)+gt(e/dt)+gt(e/ut)+gt(e)+gt(o/ct)+gt(o/dt)+gt(o/ut)+gt(o)+gt(r/it)+gt(r/ct)+gt(r/dt)+gt(r/ut)+gt(r);var e,o,r},a]},bt=(e,s,n,a,o,r,l={})=>{let i;const[c]=ft(e.getId()),d=Ie();n(((t,n,a,o)=>{0==a?k(Re(d,n),(([e,s])=>H(e)||e==t?s(o,t):0)):1==a&&h.isAutoLoading()?g(t,o).then((e=>i?.(void 0,(()=>e)))):k(2==a&&h.isAutoSaving()?e.getMergeableContentHashes():3==a?e.getMergeableTableIdsDiff(o):4==a?e.getMergeableRowIdsDiff(o):5==a?e.getMergeableTablesChanges(o):6==a?e.getMergeableValuesChanges(o):void 0,(e=>{s(t,n,0,e)}))}));const u=async(e,t,n="")=>new m(((a,r)=>{const l=c(),i=setTimeout((()=>{pe(d,l),r(`No response from ${e??"anyone"} to '${t}'`)}),1e3*o);Ve(d,l,[e,(e,t)=>{clearTimeout(i),pe(d,l),a([e,t])}]),s(e,l,t,n)})),g=async(s=null,n)=>{H(n)&&([n,s]=await u(s,2));const[a,[o,r]]=n,[,[l,i]]=e.getMergeableContentHashes(),c=[t,[[t,{}],[t,{}],1]];return l!=o&&(c[0]=a,c[1][0]=(await u(s,5,e.getMergeableCellHashes((await u(s,4,e.getMergeableRowHashes((await u(s,3,e.getMergeableTableHashes()))[0])))[0])))[0]),i!=r&&(c[0]=a,c[1][1]=(await u(s,6,e.getMergeableValuesHashes()))[0]),c},h=nt(e,(async()=>{const e=await g();return e[0]!=t?e:void 0}),(async()=>{s(null,null,1,e.getMergeableContentHashes())}),(e=>i=e),(()=>i=void 0),r,!0,{startSync:async e=>await(await h.startAutoLoad(e)).startAutoSave(),stopSync:()=>h.stopAutoLoad().stopAutoSave(),destroy:()=>(a(),h.stopSync()),getSynchronizerStats:()=>({}),...l});return h},Ct=_e((e=>{const s=e.createStore,n=s(),a=s(),o=Ie(),{addListener:r,callListeners:l,delListener:u}=a,[g,f,b,p,I,,,S,,R,M,V,m,A]=$e(e,(()=>!0),O,r,l),E=(e,t,...s)=>B(s,(s=>We(me(me(o,t,Ie),e,Pe),s))),D=e=>{k(Re(o,e),(e=>{Me(e,((e,t)=>ye(t,(t=>e.delListener(t))))),Te(e)})),B([a,n],(t=>t.delTable(e)))},J=(e,t,s)=>E(t,e,t.addStartTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),x={setQueryDefinition:(s,o,r)=>{S(s,o),D(s);const l=[],i=[[null,[o,null,null,[],Ie()]]],c=[],d=[],u=[];r({select:(e,s)=>{const n=F(e)?[N(l)+t,e]:[H(s)?e:s,t=>t(e,s)];return X(l,n),{as:e=>n[0]=e}},join:(e,t,s)=>{const n=H(s)||F(t)?null:t,a=H(n)?t:s,o=[e,[e,n,F(a)?a:e=>e(a),[],Ie()]];return X(i,o),{as:e=>o[0]=e}},where:(e,t,s)=>X(c,F(e)?e:H(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,a)=>{const o=[e,[e,F(t)?[t,s,n,a]:Re(Ye,t)??[(e,t)=>t]]];return X(d,o),{as:e=>o[0]=e}},having:(e,t)=>X(u,F(e)?e:s=>s(e)===t)});const g=Ie(l);if(Le(g))return x;const h=Ie(i);Me(h,((e,[,t])=>k(Re(h,t),(({3:t})=>H(e)?0:X(t,e)))));const f=Ie(d);let b=n;if(Le(f)&&K(u))b=a;else{J(s,b,a);const e=Ie();Me(f,((t,[s,n])=>We(me(e,s,Pe),[t,n])));const t=Pe();Me(g,(s=>we(e,s)?0:We(t,s)));const n=Ie(),o=(t,n,o,r)=>k(t,(([l,i,c,d])=>{Me(n,((t,[s])=>{const n=me(l,t,Ie),a=Re(n,o),i=r?void 0:s;if(a!==i){const s=Pe([[a,i]]),r=Ce(n);Ve(n,o,i),ye(Re(e,t),(([e,t])=>{const a=Ze(d[e],r,n,s,t);d[e]=H(Qe(a))?null:a}))}})),Le(i)||!W(u,(e=>e((e=>d[e]))))?a.delRow(s,c):H(c)?t[2]=a.addRow(s,d):a.setRow(s,c,d)}));E(b,s,b.addRowListener(s,null,((a,r,l,i)=>{const c=[],d=[],u=Ie(),g=b.hasRow(s,l);let h=!g;ye(t,(e=>{const[t,n,a]=i(s,l,e);X(c,n),X(d,a),h||=t})),Me(e,(e=>{const[t,,n]=i(s,l,e);(h||t)&&Ve(u,e,[n])})),h&&o(Fe(n,c,void 0,(([,e])=>(pe(e,l),Le(e)))),u,l,1),g&&o(Fe(n,d,(()=>{const e={};return ye(t,(t=>e[t]=b.getCell(s,l,t))),[Ie(),Pe(),void 0,e]}),(([,e])=>{We(e,l)})),u,l)})))}J(s,e,b);const C=(t,n,a,r)=>{const l=t=>e.getCell(n,a,t);B(r,(n=>{const[a,,o,r,i]=Re(h,n),c=o?.(l,t),[d,u]=Re(i,t)??[];c!=d&&(H(u)||A(s,u),Ve(i,t,H(c)?null:[c,...m(s,1,e.addRowListener(a,c,(()=>C(t,a,c,r))))]))})),(t=>{const n=(s,n)=>e.getCell(...H(n)?[o,t,s]:s===o?[o,t,n]:[Re(h,s)?.[0],Re(Re(h,s)?.[4],t)?.[0],n]);b.transaction((()=>W(c,(e=>e(n)))?Me(g,((e,a)=>Ne(b,s,t,e,a(n,t)))):b.delRow(s,t)))})(t)},{3:w}=Re(h,null);return b.transaction((()=>m(s,1,e.addRowListener(o,null,((t,n,a)=>{e.hasRow(o,a)?C(a,o,a,w):(b.delRow(s,a),ye(h,(({4:e})=>k(Re(e,a),(([,t])=>{A(s,t),Ve(e,a)})))))}))))),x},delQueryDefinition:e=>(D(e),R(e),x),getStore:g,getQueryIds:f,forEachQuery:b,hasQuery:p,getTableId:I,addQueryIdsListener:e=>M((()=>e(x))),delListener:e=>(u(e),x),destroy:V,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=a.getListenerStats();return n}};return ue({[h]:[1,1],[h+y]:[0,1],[w]:[0,1],[L]:[0,1],[v]:[0,5],[C]:[1,2],[y]:[0,2],[T]:[1,3]},(([e,t],s)=>{B(e?["get","has","forEach"]:["get"],(e=>x[e+c+s]=(...t)=>a[e+s](...t))),x[d+c+s+i]=(...e)=>a[d+s+i](...z(e,0,t),((s,...n)=>e[t](x,...n)),!0)})),re(x)})),wt=_e((e=>{const s=Ie(),n=Ie(),a=Ie(),o=Ie(),[r,l,i]=Ge((()=>p)),[c,d,u,g,h,f,,,b,C,w,L]=$e(e,(()=>[Ie(),Ie(),Ie(),Ie()]),(e=>H(e)?void 0:e+t),r,l),v=(e,t,s)=>k(f(e),(([n,,a])=>{if(!we(a,t)){const o=Pe();if(h(e)!=y(e))We(o,t);else{let e=t;for(;!H(e)&&!we(o,e);)We(o,e),e=Re(n,e)}if(s)return o;Ve(a,t,o)}return Re(a,t)})),T=(e,t)=>k(f(e),(([,,e])=>Ve(e,t))),y=e=>Re(s,e),p={setRelationshipDefinition:(e,t,r,i)=>(Ve(s,e,r),b(e,t,((t,s)=>{const r=Pe(),i=Pe(),c=Pe(),[d,u]=f(e);ye(s,(([t,s],n)=>{H(t)||(We(i,t),k(Re(u,t),(e=>{pe(e,n),Le(e)&&Ve(u,t)}))),H(s)||(We(i,s),we(u,s)||Ve(u,s,Pe()),We(Re(u,s),n)),We(r,n),Ve(d,n,s),Me(Re(o,e),(t=>{we(v(e,t),n)&&We(c,t)}))})),t(),ye(r,(t=>l(n,[e,t]))),ye(i,(t=>l(a,[e,t]))),ye(c,(t=>{T(e,t),l(o,[e,t])}))}),je(i)),p),delRelationshipDefinition:e=>(Ve(s,e),C(e),p),getStore:c,getRelationshipIds:d,forEachRelationship:t=>u((s=>t(s,(t=>e.forEachRow(h(s),t))))),hasRelationship:g,getLocalTableId:h,getRemoteTableId:y,getRemoteRowId:(e,t)=>Re(f(e)?.[0],t),getLocalRowIds:(e,t)=>ve(Re(f(e)?.[1],t)),getLinkedRowIds:(e,t)=>H(f(e))?[t]:ve(v(e,t,!0)),addRelationshipIdsListener:w,addRemoteRowIdListener:(e,t,s)=>r(s,n,[e,t]),addLocalRowIdsListener:(e,t,s)=>r(s,a,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(v(e,t),r(s,o,[e,t])),delListener:e=>(T(...i(e)??[]),p),destroy:L,getListenerStats:()=>({})};return re(p)})),Lt=([e,t,s])=>[e,t,s],vt=([e,t])=>[e,t],Tt=e=>e[2],yt=(e,t)=>ot(e+":"+t),pt=(e,t,s)=>{e[2]=t>>>0,s>e[0]&&(e[0]=s)},It=e=>[e,le()],St=(e="")=>[e,Ie(),0],Rt=([e,t,s],n=Lt)=>[e,Ee(t,n),s],Mt=(t,s)=>Q(t)&&3==N(t)&&x(t[0])&&s(t[1])&&e(t[2])==a&&D(t[2]),Vt=e=>[e,e],mt=()=>[Ie(),Ie()],At=e=>[...e],Et=([e,t])=>e===t,Dt=e=>JSON.stringify(e,((e,t)=>t instanceof Map?ee.fromEntries([...t]):t)),Ht=JSON.parse,kt=(e,t,s)=>Ve(e,t,Re(e,t)==-s?void 0:s),Jt=()=>{let e,t,s=!1,n=!1,o=0,c=[];const g=Ie(),v=Ie(),M=Ie(),V=Ie(),m=Ie(),A=Ie(),E=Ie(),D=Ie(),x=Ie(),Q=Ie(),N=Ie(),O=Ie(),W=Ie(),j=Ie(),G=Pe(),K=Ie(),U=Ie(),Y=Ie(),Z=Ie(),ee=mt(),te=mt(),se=mt(),ne=mt(),ae=mt(),oe=mt(),le=mt(),de=mt(),ge=mt(),fe=mt(),ve=mt(),Fe=mt(),ze=mt(),$e=mt(),je=mt(),_e=mt(),Be=mt(),Ke=mt(),Xe=mt(),Ye=mt(),Ze=mt(),et=mt(),tt=Ie(),st=mt(),[nt,at,ot,rt]=Ge((()=>Js)),lt=e=>{if(!be(e,((e,t)=>P([r,l],t))))return!1;const t=e[r];return!(!J(t)&&t!=a||(Qe(e[l])!=t&&ce(e,l),0))},it=(t,s)=>(!e||we(N,s)||Bt(s))&&be(t,((e,t)=>ct(s,t,e)),(()=>Bt(s))),ct=(e,t,s,n)=>be(n?s:ht(s,e,t),((n,a)=>k(dt(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>Bt(e,t))),dt=(t,s,n,a)=>e?k(Re(Re(N,t),n),(e=>Qe(a)!=e[r]?Bt(t,s,n,a,e[l]):a),(()=>Bt(t,s,n,a))):H(Qe(a))?Bt(t,s,n,a):a,ut=(e,t)=>be(t?e:ft(e),((t,s)=>k(gt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),gt=(e,s)=>t?k(Re(W,e),(t=>Qe(s)!=t[r]?qt(e,s,t[l]):s),(()=>qt(e,s))):H(Qe(s))?qt(e,s):s,ht=(e,t,s)=>(k(Re(O,t),(([n,a])=>{ye(n,((t,s)=>{ie(e,s)||(e[s]=t)})),ye(a,(n=>{ie(e,n)||Bt(t,s,n)}))})),e),ft=e=>(t&&(ye(j,((t,s)=>{ie(e,s)||(e[s]=t)})),ye(G,(t=>{ie(e,t)||qt(t)}))),e),bt=e=>Ae(N,e,((e,t,s)=>{const n=Ie(),a=Pe();Ae(me(N,t,Ie),s,((e,t,s)=>{Ve(e,t,s),k(s[l],(e=>Ve(n,t,e)),(()=>We(a,t)))})),Ve(O,t,[n,a])}),((e,t)=>{Ve(N,t),Ve(O,t)})),Ct=e=>Ae(W,e,((e,t,s)=>{Ve(W,t,s),k(s[l],(e=>Ve(j,t,e)),(()=>We(G,t)))}),((e,t)=>{Ve(W,t),Ve(j,t),pe(G,t)})),wt=e=>he(e)?Rs():Ts(e),Lt=e=>Ae(Y,e,((e,t,s)=>vt(t,s)),((e,t)=>Ft(t))),vt=(e,t)=>Ae(me(Y,e,(()=>(Ot(e,1),Ve(K,e,qe()),Ve(U,e,Ie()),Ie()))),t,((t,s,n)=>Tt(e,t,s,n)),((t,s)=>Qt(e,t,s))),Tt=(e,t,s,n,a)=>Ae(me(t,s,(()=>(Pt(e,s,1),Ie()))),n,((t,n,a)=>yt(e,s,t,n,a)),((n,o)=>zt(e,t,s,n,o,a))),yt=(e,t,s,n,a)=>{we(s,n)||Wt(e,t,n,1);const o=Re(s,n);a!==o&&($t(e,t,n,o,a),Ve(s,n,a))},pt=(e,t,s,n,a)=>k(Re(t,s),(t=>yt(e,s,t,n,a)),(()=>Tt(e,t,s,ht({[n]:a},e,s)))),It=e=>he(e)?ms():ys(e),St=e=>Ae(Z,e,((e,t,s)=>Rt(t,s)),((e,t)=>Nt(t))),Rt=(e,t)=>{we(Z,e)||jt(e,1);const s=Re(Z,e);t!==s&&(_t(e,s,t),Ve(Z,e,t))},Mt=(e,t)=>{const[s]=Re(K,e),n=s(t);return we(Re(Y,e),n)?Mt(e,t):n},xt=e=>Re(Y,e)??vt(e,{}),Ft=e=>vt(e,{}),Qt=(e,t,s)=>{const[,n]=Re(K,e);n(s),Tt(e,t,s,{},!0)},zt=(e,t,s,n,a,o)=>{const r=Re(Re(O,e)?.[0],a);if(!H(r)&&!o)return yt(e,s,n,a,r);const l=t=>{$t(e,s,t,Re(n,t)),Wt(e,s,t,-1),Ve(n,t)};H(r)?l(a):Me(n,l),Le(n)&&(Pt(e,s,-1),Le(Ve(t,s))&&(Ot(e,-1),Ve(Y,e),Ve(K,e),Ve(U,e)))},Nt=e=>{const t=Re(j,e);if(!H(t))return Rt(e,t);_t(e,Re(Z,e)),jt(e,-1),Ve(Z,e)},Ot=(e,t)=>kt(g,e,t),Pt=(e,t,s)=>kt(me(V,e,Ie),t,s)&&Ve(M,e,me(M,e,(()=>0))+s),Wt=(e,t,s,n)=>{const a=Re(U,e),o=Re(a,s)??0;(0==o&&1==n||1==o&&-1==n)&&kt(me(v,e,Ie),s,n),Ve(a,s,o!=-n?o+n:null),kt(me(me(m,e,Ie),t,Ie),s,n)},$t=(e,t,s,n,a)=>me(me(me(A,e,Ie),t,Ie),s,(()=>[n,0]))[1]=a,jt=(e,t)=>kt(E,e,t),_t=(e,t,s)=>me(D,e,(()=>[t,0]))[1]=s,Bt=(e,t,s,n,a)=>(X(me(me(me(x,e,Ie),t,Ie),s,(()=>[])),n),a),qt=(e,t,s)=>(X(me(Q,e,(()=>[])),t),s),Gt=(e,t,s)=>k(Re(Re(Re(A,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Vt(cs(e,t,s))])),Kt=e=>k(Re(D,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Vt(gs(e))])),Ut=e=>Le(x)||Le(_e[e])?0:ye(e?xe(x):x,((t,s)=>ye(t,((t,n)=>ye(t,((t,a)=>at(_e[e],[s,n,a],t))))))),Xt=e=>Le(Q)||Le(Be[e])?0:ye(e?ke(Q):Q,((t,s)=>at(Be[e],[s],t))),Yt=(e,t,s,n)=>{if(!Le(e))return at(t,n,(()=>Ee(e))),Me(e,((e,t)=>at(s,[...n??[],e],1==t))),1},Zt=e=>{const t=hs();t!=s&&at(ee[e],void 0,t);const n=Le(fe[e]),a=Le(ze[e])&&Le($e[e])&&Le(ge[e])&&Le(ve[e])&&Le(oe[e])&&Le(le[e])&&Le(de[e])&&n&&Le(se[e])&&Le(ne[e]),o=Le(je[e])&&Le(Fe[e])&&Le(ae[e])&&Le(te[e]);if(!a||!o){const t=e?[ke(g),Je(v),ke(M),Je(V),xe(m),xe(A)]:[g,v,M,V,m,A];if(!a){Yt(t[0],se[e],ne[e]),ye(t[1],((t,s)=>Yt(t,oe[e],le[e],[s]))),ye(t[2],((t,s)=>{0!=t&&at(de[e],[s],os(s))}));const s=Pe();ye(t[3],((t,a)=>{Yt(t,ge[e],ve[e],[a])&&!n&&(at(fe[e],[a,null]),We(s,a))})),n||ye(t[5],((t,n)=>{if(!we(s,n)){const s=Pe();ye(t,(e=>ye(e,(([t,n],a)=>n!==t?We(s,a):pe(e,a))))),ye(s,(t=>at(fe[e],[n,t])))}})),ye(t[4],((t,s)=>ye(t,((t,n)=>Yt(t,ze[e],$e[e],[s,n])))))}if(!o){let s;ye(t[5],((t,n)=>{let a;ye(t,((t,o)=>{let r;ye(t,(([t,l],i)=>{l!==t&&(at(je[e],[n,o,i],l,t,Gt),s=a=r=1)})),r&&at(Fe[e],[n,o],Gt)})),a&&at(ae[e],[n],Gt)})),s&&at(te[e],void 0,Gt)}}},es=e=>{const t=Ls();t!=n&&at(Ke[e],void 0,t);const s=Le(Ye[e])&&Le(Ze[e]),a=Le(et[e])&&Le(Xe[e]);if(!s||!a){const t=e?[ke(E),ke(D)]:[E,D];if(s||Yt(t[0],Ye[e],Ze[e]),!a){let s;ye(t[1],(([t,n],a)=>{n!==t&&(at(et[e],[a],n,t,Kt),s=1)})),s&&at(Xe[e],void 0,Kt)}}},ts=(e,...t)=>(Ds((()=>e(...q(t,R)))),Js),ss=()=>He(Y),ns=()=>Se(Y),as=e=>Se(Re(U,R(e))),os=e=>Ce(Re(Y,R(e))),rs=e=>Se(Re(Y,R(e))),ls=(e,t,s,n=0,a)=>{return q(z(_((o=Re(Y,R(e)),r=(e,s)=>[H(t)?s:Re(e,R(t)),s],q([...o?.entries()??[]],(([e,t])=>r(t,e)))),(([e],[t])=>Ue(e,t)*(s?-1:1))),n,H(a)?a:n+a),(([,e])=>e));var o,r},is=(e,t)=>Se(Re(Re(Y,R(e)),R(t))),cs=(e,t,s)=>Re(Re(Re(Y,R(e)),R(t)),R(s)),ds=()=>Ee(Z),us=()=>Se(Z),gs=e=>Re(Z,R(e)),hs=()=>!Le(Y),fs=e=>we(Y,R(e)),bs=(e,t)=>we(Re(U,R(e)),R(t)),Cs=(e,t)=>we(Re(Y,R(e)),R(t)),ws=(e,t,s)=>we(Re(Re(Y,R(e)),R(t)),R(s)),Ls=()=>!Le(Z),vs=e=>we(Z,R(e)),Ts=e=>ts((()=>(e=>be(e,it,Bt))(e)?Lt(e):0)),ys=e=>ts((()=>ut(e)?St(e):0)),ps=e=>{try{wt(Ht(e))}catch{}return Js},Is=t=>ts((()=>{if((e=be(t,(e=>be(e,lt))))&&(bt(t),!Le(Y))){const e=ss();Rs(),Ts(e)}})),Ss=e=>ts((()=>{if(t=(e=>be(e,lt))(e)){const s=ds();Es(),ms(),t=!0,Ct(e),ys(s)}})),Rs=()=>ts((()=>Lt({}))),Ms=e=>ts((e=>we(Y,e)?Ft(e):0),e),Vs=(e,t)=>ts(((e,t)=>k(Re(Y,e),(s=>we(s,t)?Qt(e,s,t):0))),e,t),ms=()=>ts((()=>St({}))),As=()=>ts((()=>{bt({}),e=!1})),Es=()=>ts((()=>{Ct({}),t=!1})),Ds=(e,t)=>{if(-1!=o){Hs();const s=e();return ks(t),s}},Hs=()=>(-1!=o&&o++,1==o&&at(tt,void 0),Js),ks=e=>(o>0&&(o--,0==o&&(o=1,Ut(1),Le(A)||Zt(1),Xt(1),Le(D)||es(1),e?.(Js)&&(ye(A,((e,t)=>ye(e,((e,s)=>ye(e,(([e],n)=>Ne(Js,t,s,n,e))))))),Te(A),ye(D,(([e],t)=>Oe(Js,t,e))),Te(D)),at(st[0],void 0),o=-1,Ut(0),Le(A)||Zt(0),Xt(0),Le(D)||es(0),c[0]?.(Js),at(st[1],void 0),c[1]?.(Js),o=0,s=hs(),n=Ls(),B([g,v,M,V,m,A,x,E,D,Q],Te))),Js),Js={getContent:()=>[ss(),ds()],getTables:ss,getTableIds:ns,getTable:e=>De(Re(Y,R(e))),getTableCellIds:as,getRowCount:os,getRowIds:rs,getSortedRowIds:ls,getRow:(e,t)=>Ee(Re(Re(Y,R(e)),R(t))),getCellIds:is,getCell:cs,getValues:ds,getValueIds:us,getValue:gs,hasTables:hs,hasTable:fs,hasTableCell:bs,hasRow:Cs,hasCell:ws,hasValues:Ls,hasValue:vs,getTablesJson:()=>Dt(Y),getValuesJson:()=>Dt(Z),getJson:()=>Dt([Y,Z]),getTablesSchemaJson:()=>Dt(N),getValuesSchemaJson:()=>Dt(W),getSchemaJson:()=>Dt([N,W]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>ts((()=>{(he(e)?Rs:Ts)(e),(he(t)?ms:ys)(t)})),setTables:Ts,setTable:(e,t)=>ts((e=>it(t,e)?vt(e,t):0),e),setRow:(e,t,s)=>ts(((e,t)=>ct(e,t,s)?Tt(e,xt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Ds((()=>{let n;return ct(e,n,t)&&(e=R(e),Tt(e,xt(e),n=Mt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>ts(((e,t)=>{if(ct(e,t,s,1)){const n=xt(e);ue(s,((s,a)=>pt(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>ts(((e,t,s)=>k(dt(e,t,s,F(n)?n(cs(e,t,s)):n),(n=>pt(e,xt(e),t,s,n)))),e,t,s),setValues:ys,setPartialValues:e=>ts((()=>ut(e,1)?ue(e,((e,t)=>Rt(t,e))):0)),setValue:(e,t)=>ts((e=>k(gt(e,F(t)?t(gs(e)):t),(t=>Rt(e,t)))),e),applyChanges:e=>ts((()=>{ue(e[0],((e,t)=>H(e)?Ms(t):ue(e,((e,s)=>H(e)?Vs(t,s):ue(e,((e,n)=>Ne(Js,t,s,n,e))))))),ue(e[1],((e,t)=>Oe(Js,t,e)))})),setTablesJson:ps,setValuesJson:e=>{try{It(Ht(e))}catch{}return Js},setJson:e=>ts((()=>{try{const[t,s]=Ht(e);wt(t),It(s)}catch{ps(e)}})),setTablesSchema:Is,setValuesSchema:Ss,setSchema:(e,t)=>ts((()=>{Is(e),Ss(t)})),delTables:Rs,delTable:Ms,delRow:Vs,delCell:(e,t,s,n)=>ts(((e,t,s)=>k(Re(Y,e),(a=>k(Re(a,t),(o=>we(o,s)?zt(e,a,t,o,s,n):0))))),e,t,s),delValues:ms,delValue:e=>ts((e=>we(Z,e)?Nt(e):0),e),delTablesSchema:As,delValuesSchema:Es,delSchema:()=>ts((()=>{As(),Es()})),transaction:Ds,startTransaction:Hs,getTransactionChanges:()=>[Ee(A,((e,t)=>-1===Re(g,t)?void 0:Ee(e,((e,s)=>-1===Re(Re(V,t),s)?void 0:Ee(e,(([,e])=>e),(e=>Et(e)))),Le,he)),Le,he),Ee(D,(([,e])=>e),(e=>Et(e))),1],getTransactionLog:()=>[!Le(A),!Le(D),He(A,At,Et),He(x),Ee(D,At,Et),Ee(Q),Ee(g),De(V),He(m),Ee(E)],finishTransaction:ks,forEachTable:e=>ye(Y,((t,s)=>e(s,(e=>ye(t,((t,s)=>e(s,(e=>Me(t,e))))))))),forEachTableCell:(e,t)=>Me(Re(U,R(e)),t),forEachRow:(e,t)=>ye(Re(Y,R(e)),((e,s)=>t(s,(t=>Me(e,t))))),forEachCell:(e,t,s)=>Me(Re(Re(Y,R(e)),R(t)),s),forEachValue:e=>Me(Z,e),addSortedRowIdsListener:(e,t,s,n,a,o,r)=>{let l=ls(e,t,s,n,a);return nt((()=>{const r=ls(e,t,s,n,a);$(r,l)||(l=r,o(Js,e,t,s,n,a,l))}),fe[r?1:0],[e,t],[ns])},addStartTransactionListener:e=>nt(e,tt),addWillFinishTransactionListener:e=>nt(e,st[0]),addDidFinishTransactionListener:e=>nt(e,st[1]),callListener:e=>(rt(e),Js),delListener:e=>(ot(e),Js),getListenerStats:()=>({}),createStore:Jt,addListener:nt,callListeners:at,setInternalListeners:(e,t)=>c=[e,t]};return ue({[u+f]:[0,ee,[],()=>[hs()]],[f]:[0,te],[b]:[0,se],[u+h]:[1,ne,[ns],e=>[fs(...e)]],[h]:[1,ae,[ns]],[h+y]:[1,oe,[ns]],[u+h+T]:[2,le,[ns,as],e=>[bs(...e)]],[w]:[1,de,[ns]],[L]:[1,ge,[ns]],[u+C]:[2,ve,[ns,rs],e=>[Cs(...e)]],[C]:[2,Fe,[ns,rs]],[y]:[2,ze,[ns,rs]],[u+T]:[3,$e,[ns,rs,is],e=>[ws(...e)]],[T]:[3,je,[ns,rs,is],e=>Vt(cs(...e))],InvalidCell:[3,_e],[u+I]:[0,Ke,[],()=>[Ls()]],[I]:[0,Xe],[S]:[0,Ye],[u+p]:[1,Ze,[us],e=>[vs(...e)]],[p]:[1,et,[us],e=>Vt(gs(e[0]))],InvalidValue:[1,Be]},(([e,t,s,n],a)=>{Js[d+a+i]=(...a)=>nt(a[e],t[a[e+1]?1:0],e>0?z(a,0,e):void 0,s,n)})),re(Js)},xt={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1},Ft=(e="")=>[e,[St(e),St(e)],0],Qt=e=>{let s,n,a=1,o=Ft();const[r,l]=ft(e),i=Jt(),c=e=>{const t=a;return a=0,e(),a=t,b},d=(e,t=0)=>{const s={},n={},[a,[[r,l,i],c],d]=e,[,[g,h]]=o,[f,b,C]=g;if(r){let e=t?i:C^(r>f?(f?ot(f):0)^ot(r):0);de(l,(([n,a,o],r)=>{const l=me(b,r,St),[i,c,d]=l;let g=t?o:d^(n>i?(i?ot(i):0)^ot(n):0);de(a,((e,n)=>{const[a,o]=u(e,me(c,n,St),fe(fe(s,r,le),n,le),t);g^=t?0:(a?yt(n,a):0)^yt(n,o)})),pt(l,g,n),e^=t?0:(d?yt(r,d):0)^yt(r,l[2])})),pt(g,e,r)}return u(c,h,n,t),pt(o,t?d:g[2]^h[2],a),[s,n,1]},u=(e,s,n,a)=>{const[o,r,l]=e,[i,c,d]=s;if(o){let e=a?l:d^(o>i?(i?ot(i):0)^ot(o):0);de(r,(([s,o,r],l)=>{const i=me(c,l,(()=>[t,void 0,0])),[d,,u]=i;s>d&&(pt(i,a?r:ot(Dt(o??null)+":"+s),s),i[1]=o,n[l]=o,e^=a?0:yt(l,u)^yt(l,i[2]))})),pt(s,e,o)}return[d,s[2]]},g=()=>[o[0],[Rt(o[1][0],(e=>Rt(e,(e=>Rt(e))))),Rt(o[1][1])],o[2]],h=()=>{if(H(n)){const[,,e,,n]=i.getTransactionLog(),a=he(e)&&he(n)?t:s??(s=r()),o=[a,[It(he(e)?t:a),It(he(n)?t:a),1]],[[,l],[,c]]=o[1];return ue(e,((e,t)=>{const[,s]=l[t]=It(a);ue(e,((e,t)=>{const[,n]=s[t]=It(a);ue(e,(([,e],t)=>n[t]=[a,e]))}))})),ue(n,(([,e],t)=>c[t]=[a,e])),o}return n},f=e=>c((()=>{l(e[0]),i.applyChanges(d(e))})),b={getId:()=>e,getMergeableContent:g,getMergeableContentHashes:()=>[o[0],[o[1][0][2],o[1][1][2]]],getMergeableTableHashes:()=>Ee(o[1][0][1],Tt),getMergeableTableIdsDiff:e=>{const t=[];return Me(o[1][0][1],((s,[,,n])=>{n!==e?.[s]&&X(t,s)})),t},getMergeableRowHashes:e=>le(q(e,(e=>[e,Ee(Re(o[1][0][1],e)?.[1],Tt)]))),getMergeableRowIdsDiff:e=>ge(e,((e,t)=>{const s=[];return Me(Re(o[1][0][1],t)?.[1],((t,[,,n])=>{n!==e?.[t]&&X(s,t)})),s})),getMergeableCellHashes:e=>ge(e,((e,t)=>le(q(e,(e=>[e,Ee(Re(Re(o[1][0][1],t)?.[1],e)?.[1],Tt)]))))),getMergeableTablesChanges:e=>{const[,[[t,s]]]=o,n={};return de(e,((e,t)=>k(Re(s,t),(([s,a])=>{const o={};de(e,((e,t)=>k(Re(a,t),(([s,n])=>{const a=Ee(n,vt,(([,,t],s)=>t==e?.[s]));he(a)||(o[t]=[s,a])})))),he(o)||(n[t]=[s,o])})))),[t,n]},getMergeableValuesHashes:()=>Ee(o[1][1][1],Tt),getMergeableValuesChanges:e=>[o[1][1][0],Ee(o[1][1][1],vt,(([,,t],s)=>t==e?.[s]))],setMergeableContent:e=>c((()=>(e=>Mt(e,(e=>Q(e)&&2==N(e)&&Mt(e[0],(e=>be(e,(e=>Mt(e,(e=>be(e,(e=>Mt(e,(e=>be(e,(e=>Mt(e,ze)),void 0,1)))),void 0,1)))),void 0,1)))&&Mt(e[1],(e=>be(e,(e=>Mt(e,ze)),void 0,1))))))(e)?i.transaction((()=>{i.delTables().delValues(),o=Ft(),l(e[0]),i.applyChanges(d(e,1))})):0)),setDefaultContent:e=>(s="0",i.setContent(e),b),getTransactionMergeableChanges:h,applyMergeableChanges:f,merge:e=>{const t=g(),s=e.getMergeableContent();return e.applyMergeableChanges(t),f(s)}};return i.setInternalListeners((()=>{a&&(n=h(),d(n))}),(()=>s=n=void 0)),ue(i,((e,t)=>b[t]=M(t,"set")||M(t,"del")||M(t,"apply")||V(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),b):M(t,"add")&&V(t,"Listener")?(...s)=>{const n=xt[z(t,3,-8)]??0,a=s[n];return s[n]=(e,...t)=>a(b,...t),e(...s)}:e)),re(b)};export{Ke as createCheckpoints,nt as createCustomPersister,bt as createCustomSynchronizer,Xe as createIndexes,Qt as createMergeableStore,et as createMetrics,Ct as createQueries,wt as createRelationships,Jt as createStore,Ue as defaultSorter};
Binary file
@@ -5,7 +5,7 @@
5
5
  * @since v5.0.0
6
6
  */
7
7
 
8
- import {CellOrUndefined, Store, ValueOrUndefined} from './store.d.ts';
8
+ import {CellOrUndefined, Content, Store, ValueOrUndefined} from './store.d.ts';
9
9
  import {Id, Ids} from './common';
10
10
 
11
11
  /**
@@ -180,6 +180,12 @@ export interface MergeableStore extends Store {
180
180
  */
181
181
  setMergeableContent(mergeableContent: MergeableContent): MergeableStore;
182
182
 
183
+ /**
184
+ * The setDefaultContent method
185
+ * @category Setter
186
+ */
187
+ setDefaultContent(content: Content): MergeableStore;
188
+
183
189
  /**
184
190
  * The getTransactionMergeableChanges method
185
191
  * @category Getter
@@ -40,7 +40,7 @@
40
40
  * @module persisters
41
41
  */
42
42
 
43
- import {Changes, Content, Store, Tables, Values} from './store.d.ts';
43
+ import {Changes, Content, Store} from './store.d.ts';
44
44
  import {
45
45
  MergeableChanges,
46
46
  MergeableContent,
@@ -630,7 +630,7 @@ export type DpcTabularValues = {
630
630
  * const store = createStore();
631
631
  * const persister = createSessionPersister(store, 'pets');
632
632
  *
633
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
633
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
634
634
  * await persister.startAutoSave();
635
635
  *
636
636
  * store.setTables({pets: {felix: {species: 'cat'}}});
@@ -657,7 +657,7 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
657
657
  * The load method gets persisted data from storage, and loads it into the
658
658
  * Store with which the Persister is associated, once.
659
659
  *
660
- * The optional parameters allow you to specify what the initial content for
660
+ * The optional parameter allows you to specify what the initial content for
661
661
  * the Store will be if there is nothing currently persisted or if the load
662
662
  * fails (for example when the Persister is remote and the environment is
663
663
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -667,10 +667,8 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
667
667
  * machine or a filesystem. Even for those storage types that are synchronous
668
668
  * (like browser storage) it is still recommended that you `await` calls to
669
669
  * this method or handle the return type natively as a Promise.
670
- * @param initialTables An optional Tables object used when the underlying
670
+ * @param initialContent An optional Content object used when the underlying
671
671
  * storage has not previously been populated.
672
- * @param initialValues An optional Values object used when the underlying
673
- * storage has not previously been populated, since v3.0.
674
672
  * @returns A Promise containing a reference to the Persister object.
675
673
  * @example
676
674
  * This example creates an empty Store, and loads data into it from the
@@ -699,7 +697,7 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
699
697
  * const store = createStore();
700
698
  * const persister = createSessionPersister(store, 'pets');
701
699
  *
702
- * await persister.load({pets: {fido: {species: 'dog'}}});
700
+ * await persister.load([{pets: {fido: {species: 'dog'}}}, {}]);
703
701
  * console.log(store.getTables());
704
702
  * // -> {pets: {fido: {species: 'dog'}}}
705
703
  *
@@ -712,14 +710,14 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
712
710
  * ```
713
711
  * @category Load
714
712
  */
715
- load(initialTables?: Tables, initialValues?: Values): Promise<this>;
713
+ load(initialContent?: Content): Promise<this>;
716
714
 
717
715
  /**
718
716
  * The startAutoLoad method gets persisted data from storage, and loads it
719
717
  * into the Store with which the Persister is associated, once, and then
720
718
  * continuously.
721
719
  *
722
- * The optional parameters allow you to specify what the initial content for
720
+ * The optional parameter allows you to specify what the initial content for
723
721
  * the Store will be if there is nothing currently persisted or if the load
724
722
  * fails (for example when the Persister is remote and the environment is
725
723
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -734,10 +732,8 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
734
732
  * the asynchronous load method. Even for those storage types that are
735
733
  * synchronous (like browser storage) it is still recommended that you `await`
736
734
  * calls to this method or handle the return type natively as a Promise.
737
- * @param initialTables An optional Tables object used when the underlying
735
+ * @param initialContent An optional Content object used when the underlying
738
736
  * storage has not previously been populated.
739
- * @param initialValues An optional Values object used when the underlying
740
- * storage has not previously been populated, since v3.0.
741
737
  * @returns A Promise containing a reference to the Persister object.
742
738
  * @example
743
739
  * This example creates an empty Store, and loads data into it from the
@@ -750,7 +746,7 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
750
746
  * const store = createStore();
751
747
  * const persister = createSessionPersister(store, 'pets');
752
748
  *
753
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
749
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
754
750
  * console.log(store.getTables());
755
751
  * // -> {pets: {fido: {species: 'dog'}}}
756
752
  *
@@ -767,7 +763,7 @@ export interface Persister<SupportsMergeableStore extends boolean = false> {
767
763
  * ```
768
764
  * @category Load
769
765
  */
770
- startAutoLoad(initialTables?: Tables, initialValues?: Values): Promise<this>;
766
+ startAutoLoad(initialContent?: Content): Promise<this>;
771
767
 
772
768
  /**
773
769
  * The stopAutoLoad method stops the automatic loading of data from storage
@@ -12,19 +12,24 @@ import {MergeableStore} from '../mergeable-store';
12
12
  import {Synchronizer} from '../synchronizers';
13
13
  import {WebSocket as WsWebSocket} from 'ws';
14
14
 
15
+ export type WebSocketTypes = WebSocket | WsWebSocket;
16
+
15
17
  /**
16
18
  * The WsSynchronizer interface
17
19
  * @category Synchronizer
18
20
  */
19
- export interface WsSynchronizer extends Synchronizer {}
21
+ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
22
+ extends Synchronizer {
23
+ getWebSocket(): WebSocketType;
24
+ }
20
25
 
21
26
  /**
22
27
  * The createWsSynchronizer function
23
28
  * @category Creation
24
29
  */
25
- export function createWsSynchronizer(
30
+ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
26
31
  store: MergeableStore,
27
- webSocket: WebSocket | WsWebSocket,
32
+ webSocket: WebSocketType,
28
33
  requestTimeoutSeconds?: number,
29
34
  onIgnoredError?: (error: any) => void,
30
- ): Promise<WsSynchronizer>;
35
+ ): Promise<WsSynchronizer<WebSocketType>>;
@@ -7,13 +7,25 @@
7
7
  * @since v5.0.0
8
8
  */
9
9
 
10
+ import {Ids} from '../common';
10
11
  import {WebSocketServer} from 'ws';
11
12
 
13
+ /**
14
+ * The WsServerStats type
15
+ */
16
+ export type WsServerStats = {
17
+ paths?: number;
18
+ clients?: number;
19
+ };
20
+
12
21
  /**
13
22
  * The WsServer interface
14
23
  */
15
24
  export interface WsServer {
16
25
  getWebSocketServer: () => WebSocketServer;
26
+ getPaths: () => string[];
27
+ getClientIds: (path: string) => Ids;
28
+ getStats: () => WsServerStats;
17
29
  destroy: () => void;
18
30
  }
19
31
 
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import {Id, IdOrNull} from './common';
11
- import {Tables, Values} from './store';
11
+ import {Content} from './store';
12
12
  import {MergeableStore} from './mergeable-store';
13
13
  import {Persister} from './persisters';
14
14
 
@@ -65,7 +65,7 @@ export interface Synchronizer extends Persister<true> {
65
65
  * The startSync method
66
66
  * @category Synchronization
67
67
  */
68
- startSync(initialTables?: Tables, initialValues?: Values): Promise<this>;
68
+ startSync(initialContent?: Content): Promise<this>;
69
69
  /**
70
70
  * The stopSync method
71
71
  * @category Synchronization
@@ -127,6 +127,6 @@ export function createCustomSynchronizer(
127
127
  send: Send,
128
128
  onReceive: (receive: Receive) => void,
129
129
  destroy: () => void,
130
- requestTimeoutSeconds?: number,
130
+ requestTimeoutSeconds: number,
131
131
  onIgnoredError?: (error: any) => void,
132
132
  ): Synchronizer;
@@ -83,7 +83,9 @@ import {
83
83
  ResultTableCellIdsListener,
84
84
  ResultTableListener,
85
85
  } from './queries.d.ts';
86
+ import {MergeableStore} from './mergeable-store';
86
87
  import {Persister} from './persisters.d.ts';
88
+ import {Synchronizer} from './synchronizers';
87
89
 
88
90
  /**
89
91
  * The StoreOrStoreId type is used when you need to refer to a Store in a React
@@ -301,6 +303,14 @@ export function useCreateStore(
301
303
  createDeps?: React.DependencyList,
302
304
  ): Store;
303
305
 
306
+ /**
307
+ * The useCreateMergeableStore hook
308
+ */
309
+ export function useCreateMergeableStore(
310
+ create: () => MergeableStore,
311
+ createDeps?: React.DependencyList,
312
+ ): MergeableStore;
313
+
304
314
  /**
305
315
  * The useStoreIds hook is used to retrieve the Ids of all the named Store
306
316
  * objects present in the current Provider component context.
@@ -10197,8 +10207,8 @@ export function useCheckpointListener(
10197
10207
  * // -> '<span>{\"pets\":{\"fido\":{\"species\":\"dog\"}}}</span>'
10198
10208
  *
10199
10209
  * root.render(<App sessionKey="cujoStore" />); // !act
10200
- * // -> 'Persister destroyed for session key fidoStore'
10201
10210
  * // -> 'Persister created for session key cujoStore'
10211
+ * // -> 'Persister destroyed for session key fidoStore'
10202
10212
  *
10203
10213
  * // ... // !act
10204
10214
  * console.log(app.innerHTML);
@@ -10221,6 +10231,146 @@ export function useCreatePersister<
10221
10231
  destroyDeps?: React.DependencyList,
10222
10232
  ): PersisterOrUndefined;
10223
10233
 
10234
+ /**
10235
+ * The useCreateSynchronizer hook is used to create a Synchronizer within a
10236
+ * React application along with convenient memoization and callbacks.
10237
+ *
10238
+ * It is possible to create a Synchronizer outside of the React app with the
10239
+ * regular createSynchronizer function and pass it in, but you may prefer to
10240
+ * create it within the app, perhaps inside the top-level component. To prevent
10241
+ * a new Synchronizer being created every time the app renders or re-renders,
10242
+ * the useCreateMetrics hook performs the creation in an effect.
10243
+ *
10244
+ * If your asynchronous `create` function (the second parameter to the hook)
10245
+ * contains dependencies, the changing of which should cause the Synchronizer to
10246
+ * be recreated, you can provide them in an array in the third parameter, just
10247
+ * as you would for any React hook with dependencies. The MergeableStore passed
10248
+ * in as the first parameter of this hook is used as a dependency by default.
10249
+ *
10250
+ * A second callback, called `then`, can be provided as the fourth parameter.
10251
+ * This is called after the creation, and can also be asynchronous, so that you
10252
+ * can configure the Synchronizer with the startSync method, for example. If
10253
+ * this callback contains dependencies, the changing of which should cause the
10254
+ * Synchronizer to be reconfigured, you can provide them in an array in the
10255
+ * fifth parameter. The Synchronizer itself is used as a dependency by default.
10256
+ *
10257
+ * The `create` function can return undefined, meaning that you can enable or
10258
+ * disable synchronization conditionally within this hook. This is useful for
10259
+ * applications which might turn on or off their cloud synchronization or
10260
+ * collaboration features.
10261
+ *
10262
+ * This hook ensures the Synchronizer object is destroyed whenever a new one is
10263
+ * created or the component is unmounted.
10264
+ * @param store A reference to the MergeableStore for which to create a new
10265
+ * Synchronizer object.
10266
+ * @param create An asynchronous function for performing the creation steps of
10267
+ * the Synchronizer object for the Store.
10268
+ * @param createDeps An optional array of dependencies for the `create`
10269
+ * function, which, if any change, result in its rerun. This parameter defaults
10270
+ * to an empty array.
10271
+ * @param then An optional callback for performing asynchronous post-creation
10272
+ * steps on the Synchronizer, such as starting automatic synchronization.
10273
+ * @param thenDeps An optional array of dependencies for the `then` callback,
10274
+ * which, if any change, result in its rerun. This parameter defaults to an
10275
+ * empty array.
10276
+ * @param destroy An optional callback whenever the Synchronizer is destroyed
10277
+ * due to a change in the `createDeps` dependencies.
10278
+ * @param destroyDeps An optional array of dependencies for the `destroy`
10279
+ * callback, which, if any change, result in `destroy` and `then` being rerun.
10280
+ * This parameter defaults to an empty array.
10281
+ * @returns A reference to the Synchronizer.
10282
+ * @example
10283
+ * This example creates a Synchronizer at the top level of a React application.
10284
+ * Even though the App component is rendered twice, the Synchronizer creation
10285
+ * only occurs once by default.
10286
+ *
10287
+ * ```jsx
10288
+ * const App = () => {
10289
+ * const store = useCreateMergeableStore(() => createMergeableStore('s1'));
10290
+ * const synchronizer = useCreateSynchronizer(store, async (store) => {
10291
+ * console.log('Synchronizer created');
10292
+ * return await createLocalSynchronizer(store, 'pets');
10293
+ * });
10294
+ * return <span>{JSON.stringify(useTables(store))}</span>;
10295
+ * };
10296
+ *
10297
+ * const app = document.createElement('div');
10298
+ * const root = ReactDOMClient.createRoot(app);
10299
+ * root.render(<App />); // !act
10300
+ * // -> 'Synchronizer created'
10301
+ *
10302
+ * // ... // !act
10303
+ * root.render(<App />); // !act
10304
+ * // No second Synchronizer creation
10305
+ *
10306
+ * root.unmount(); // !act
10307
+ * ```
10308
+ * @example
10309
+ * This example creates a Synchronizer at the top level of a React application.
10310
+ * The App component is rendered twice, each with a different top-level prop.
10311
+ * The useCreateSynchronizer hook takes the `url` prop as a dependency, and so
10312
+ * the Synchronizer object is created again on the second render. The first is
10313
+ * destroyed and the `destroy` parameter is called for it. A `then` parameter
10314
+ * is provided to start both Synchronizers' synchronization.
10315
+ *
10316
+ * ```jsx
10317
+ * const server1 = createWsServer(new ws.WebSocketServer({port: 8044}));
10318
+ * const server2 = createWsServer(new ws.WebSocketServer({port: 8045}));
10319
+ *
10320
+ * const App = ({url}) => {
10321
+ * const store = useCreateMergeableStore(() => createMergeableStore('s1'));
10322
+ * const synchronizer = useCreateSynchronizer(
10323
+ * store,
10324
+ * async (store) => {
10325
+ * const webSocket = new WebSocket(url);
10326
+ * console.log(`Synchronizer created for ${webSocket.url}`);
10327
+ * return await createWsSynchronizer(store, webSocket);
10328
+ * },
10329
+ * [url],
10330
+ * async (synchronizer) => {
10331
+ * await synchronizer.startSync();
10332
+ * },
10333
+ * [],
10334
+ * (synchronizer) => {
10335
+ * const webSocket = synchronizer.getWebSocket();
10336
+ * console.log(`Synchronizer destroyed for ${webSocket.url}`);
10337
+ * },
10338
+ * );
10339
+ * return <span>{JSON.stringify(useTables(store))}</span>;
10340
+ * };
10341
+ *
10342
+ * const app = document.createElement('div');
10343
+ * const root = ReactDOMClient.createRoot(app);
10344
+ * root.render(<App url="ws://localhost:8044/" />); // !act
10345
+ * // ... // !act
10346
+ * // -> 'Synchronizer created for ws://localhost:8044/'
10347
+ *
10348
+ * root.render(<App url="ws://localhost:8045/" />); // !act
10349
+ * // ... // !act
10350
+ * // -> 'Synchronizer created for ws://localhost:8045/'
10351
+ * // -> 'Synchronizer destroyed for ws://localhost:8044/'
10352
+ *
10353
+ * root.unmount(); // !act
10354
+ * // -> 'Synchronizer destroyed for ws://localhost:8045/'
10355
+ *
10356
+ * server1.destroy();
10357
+ * server2.destroy();
10358
+ * ```
10359
+ * @category Synchronizer hooks
10360
+ * @since v5.0.0
10361
+ */
10362
+ export function useCreateSynchronizer<
10363
+ SynchronizerOrUndefined extends Synchronizer | undefined,
10364
+ >(
10365
+ store: MergeableStore,
10366
+ create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>,
10367
+ createDeps?: React.DependencyList,
10368
+ then?: (synchronizer: Synchronizer) => Promise<void>,
10369
+ thenDeps?: React.DependencyList,
10370
+ destroy?: (synchronizer: Synchronizer) => void,
10371
+ destroyDeps?: React.DependencyList,
10372
+ ): SynchronizerOrUndefined;
10373
+
10224
10374
  /**
10225
10375
  * The ExtraProps type represents a set of arbitrary additional props.
10226
10376
  * @category Props
@@ -12,6 +12,7 @@ import {
12
12
  } from './internal/store';
13
13
  import {
14
14
  CellOrUndefined,
15
+ Content,
15
16
  NoSchemas,
16
17
  NoTablesSchema,
17
18
  NoValuesSchema,
@@ -265,6 +266,12 @@ export interface MergeableStore<Schemas extends OptionalSchemas>
265
266
  mergeableContent: MergeableContent<Schemas>,
266
267
  ): MergeableStore<Schemas>;
267
268
 
269
+ /**
270
+ * The setDefaultContent method
271
+ * @category Setter
272
+ */
273
+ setDefaultContent(content: Content<Schemas>): MergeableStore<Schemas>;
274
+
268
275
  /**
269
276
  * The getTransactionMergeableChanges method
270
277
  * @category Getter