tinybase 5.0.0-beta.7 → 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 +27 -18
  115. package/lib/debug/synchronizers/synchronizer-ws-client.js +45 -33
  116. package/lib/debug/synchronizers/synchronizer-ws-server.js +65 -26
  117. package/lib/debug/synchronizers.js +27 -18
  118. package/lib/debug/tinybase.js +33 -18
  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 +10 -5
  216. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +12 -0
  217. package/lib/types/synchronizers.d.ts +3 -2
  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 +15 -6
  222. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +12 -0
  223. package/lib/types/with-schemas/synchronizers.d.ts +4 -4
  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="",a=e(t),s=Promise,n=Math.max,o=e=>null==e,r=(e,t,a)=>o(e)?a?.():t(e),i=(e,t,a)=>e.slice(t,a),c=e=>new s(e),g=Object,l=e=>g.getPrototypeOf(e),u=g.keys,y=g.freeze,d=e=>(e=>!o(e)&&r(l(e),(e=>e==g.prototype||o(l(e))),(()=>!0)))(e)&&0==(e=>u(e).length)(e),h=JSON.parse,w=(e,t)=>e?.delete(t),p=e=>new Map(e),v=(e,t)=>e?.get(t),b=(e,t,a)=>o(a)?(w(e,t),e):e?.set(t,a),S=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)?s?.(v(e,t)):b(e,t,a()),v(e,t)},f=p(),C=p(),M=new globalThis.TextEncoder,A=2**36,L=2**30,T=2**24,m=2**18,H=4096,O=64,x=e=>String.fromCharCode(48+(63&e)),D=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,E=async(s,l,u,E)=>{let N;l.on("message",(e=>{if(!o(N)){const t=e.toString("utf8"),a=t.indexOf("\n");-1!==a&&N(i(t,0,a),...h(i(t,a+1)))}}));const I=((s,i,g,l,u=1,h)=>{let E;const[N]=(e=>{let t=0,a=-1;const s=(e=>{let t=2166136261;var a;return a=e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)},M.encode(e).forEach(a),t>>>0})(e),r=e=>{const s=t,[r,i]=o(e)||""==e?[0,0]:[D(c=e,0)*A+D(c,1)*L+D(c,2)*T+D(c,3)*m+D(c,4)*H+D(c,5)*O+D(c,6),D(c,7)*m+D(c,8)*H+D(c,9)*O+D(c,10),D(c,11)*T+D(c,12)*m+D(c,13)*H+D(c,14)*O+D(c,15)];var c;t=n(s,r,Date.now()),a=t==s?t==r?n(a,i):a:t==r?i:-1};return[()=>{return r(),n=++a,o=s,x((e=t)/A)+x(e/L)+x(e/T)+x(e/m)+x(e/H)+x(e/O)+x(e)+x(n/m)+x(n/H)+x(n/O)+x(n)+x(o/T)+x(o/m)+x(o/H)+x(o/O)+x(o);var e,n,o},r]})(s.getId()),I=p();g(((e,t,a,n)=>{0==a?r(v(I,t),(([t,a])=>o(t)||t==e?a(n,e):0)):1==a&&J.isAutoLoading()?z(e,n).then((e=>E?.(void 0,(()=>e)))):r(2==a&&J.isAutoSaving()?s.getMergeableContentHashes():3==a?s.getMergeableTableIdsDiff(n):4==a?s.getMergeableRowIdsDiff(n):5==a?s.getMergeableTablesChanges(n):6==a?s.getMergeableValuesChanges(n):void 0,(a=>{i(e,t,0,a)}))}));const P=async(e,t,a="")=>c(((s,n)=>{const o=N(),r=setTimeout((()=>{w(I,o),n(`No response from ${e??"anyone"} to '${t}'`)}),1e3*u);b(I,o,[e,(e,t)=>{clearTimeout(r),w(I,o),s([e,t])}]),i(e,o,t,a)})),z=async(e=null,a)=>{o(a)&&([a,e]=await P(e,2));const[n,[r,i]]=a,[,[c,g]]=s.getMergeableContentHashes(),l=[t,[[t,{}],[t,{}],1]];return c!=r&&(l[0]=n,l[1][0]=(await P(e,5,s.getMergeableCellHashes((await P(e,4,s.getMergeableRowHashes((await P(e,3,s.getMergeableTableHashes()))[0])))[0])))[0]),g!=i&&(l[0]=n,l[1][1]=(await P(e,6,s.getMergeableValuesHashes()))[0]),l},J=((t,s,n,i,c,g,l,u={},h=[])=>{let w,p,M,A=0;S(f,h,(()=>0)),S(C,h,(()=>[]));const[L,T,m,H]=((e,t)=>!e||o(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!d(e)||!d(t)]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!d(e)||!d(t)])(l,t),O=async e=>(2!=A&&(A=1,await D.schedule((async()=>{await e(),A=0}))),D),x=s=>{var n;(L&&(n=s?.[0],e(n)==a)?1===s?.[1][2]?t.applyMergeableChanges:t.setMergeableContent:1===s?.[2]?t.applyChanges:t.setContent)(s)},D={load:async(e,a)=>await O((async()=>{try{x(await s())}catch(s){g?.(s),t.setContent([e,a])}})),startAutoLoad:async(e={},t={})=>(await D.stopAutoLoad().load(e,t),p=i((async(e,t)=>{const a=t?.();await O((async()=>{try{x(a??e?.()??await s())}catch(e){g?.(e)}}))})),D),stopAutoLoad:()=>(p&&(c(p),p=void 0),D),isAutoLoading:()=>!o(p),save:async e=>(1!=A&&(A=2,await D.schedule((async()=>{try{await n(T,e)}catch(e){g?.(e)}A=0}))),D),startAutoSave:async()=>(await D.stopAutoSave().save(),M=t.addDidFinishTransactionListener((()=>{const e=m();H(e)&&D.save((()=>e))})),D),stopAutoSave:()=>(r(M,t.delListener),M=void 0,D),isAutoSaving:()=>!o(M),schedule:async(...e)=>(((e,...t)=>{e.push(...t)})(v(C,h),...e),await(async()=>{if(!v(f,h)){for(b(f,h,1);!o((e=v(C,h),w=e.shift()));)try{await w()}catch(e){g?.(e)}b(f,h,0)}var e})(),D),getStore:()=>t,destroy:()=>D.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...u};return y(D)})(s,(async()=>{const e=await z();return e[0]!=t?e:void 0}),(async()=>{i(null,null,1,s.getMergeableContentHashes())}),(e=>E=e),(()=>E=void 0),h,!0,{startSync:async()=>await(await J.startAutoLoad()).startAutoSave(),stopSync:()=>J.stopAutoLoad().stopAutoSave(),destroy:()=>(l(),J.stopSync()),getSynchronizerStats:()=>({})});return J})(s,((e,...a)=>{l.send((e??t)+"\n"+JSON.stringify(a,((e,t)=>t instanceof Map?g.fromEntries([...t]):t)))}),(e=>{N=e}),(()=>{l.close()}),u,E);return c(((e,t)=>{l.readyState!=l.OPEN?(l.on("error",t),l.on("open",(()=>e(I)))):e(I)}))};export{E as createWsSynchronizer};
1
+ const e=e=>typeof e,t="",a=e(t),s=Promise,n=Math.max,o=e=>null==e,r=(e,t,a)=>o(e)?a?.():t(e),i=(e,t,a)=>e.slice(t,a),c=e=>new s(e),g=Object,l=e=>g.getPrototypeOf(e),d=g.keys,u=g.freeze,y=e=>(e=>!o(e)&&r(l(e),(e=>e==g.prototype||o(l(e))),(()=>!0)))(e)&&0==(e=>d(e).length)(e),h=JSON.parse,w=(e,t)=>e?.delete(t),p=e=>new Map(e),v=(e,t)=>e?.get(t),b=(e,t,a)=>o(a)?(w(e,t),e):e?.set(t,a),S=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)?s?.(v(e,t)):b(e,t,a()),v(e,t)},f=p(),C=p(),M=new globalThis.TextEncoder,A=2**36,L=2**30,T=2**24,m=2**18,H=4096,O=64,D=e=>String.fromCharCode(48+(63&e)),E=(e,t)=>((e,t)=>e.charCodeAt(t))(e,t)-48,x=async(s,l,d=1,x)=>{let N;const I=(e,t)=>l.addEventListener(e,t),P=((s,i,g,l,d,h,x={})=>{let N;const[I]=(e=>{let t=0,a=-1;const s=(e=>{let t=2166136261;var a;return a=e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)},M.encode(e).forEach(a),t>>>0})(e),r=e=>{const s=t,[r,i]=o(e)||""==e?[0,0]:[E(c=e,0)*A+E(c,1)*L+E(c,2)*T+E(c,3)*m+E(c,4)*H+E(c,5)*O+E(c,6),E(c,7)*m+E(c,8)*H+E(c,9)*O+E(c,10),E(c,11)*T+E(c,12)*m+E(c,13)*H+E(c,14)*O+E(c,15)];var c;t=n(s,r,Date.now()),a=t==s?t==r?n(a,i):a:t==r?i:-1};return[()=>{return r(),n=++a,o=s,D((e=t)/A)+D(e/L)+D(e/T)+D(e/m)+D(e/H)+D(e/O)+D(e)+D(n/m)+D(n/H)+D(n/O)+D(n)+D(o/T)+D(o/m)+D(o/H)+D(o/O)+D(o);var e,n,o},r]})(s.getId()),P=p();g(((e,t,a,n)=>{0==a?r(v(P,t),(([t,a])=>o(t)||t==e?a(n,e):0)):1==a&&J.isAutoLoading()?z(e,n).then((e=>N?.(void 0,(()=>e)))):r(2==a&&J.isAutoSaving()?s.getMergeableContentHashes():3==a?s.getMergeableTableIdsDiff(n):4==a?s.getMergeableRowIdsDiff(n):5==a?s.getMergeableTablesChanges(n):6==a?s.getMergeableValuesChanges(n):void 0,(a=>{i(e,t,0,a)}))}));const k=async(e,t,a="")=>c(((s,n)=>{const o=I(),r=setTimeout((()=>{w(P,o),n(`No response from ${e??"anyone"} to '${t}'`)}),1e3*d);b(P,o,[e,(e,t)=>{clearTimeout(r),w(P,o),s([e,t])}]),i(e,o,t,a)})),z=async(e=null,a)=>{o(a)&&([a,e]=await k(e,2));const[n,[r,i]]=a,[,[c,g]]=s.getMergeableContentHashes(),l=[t,[[t,{}],[t,{}],1]];return c!=r&&(l[0]=n,l[1][0]=(await k(e,5,s.getMergeableCellHashes((await k(e,4,s.getMergeableRowHashes((await k(e,3,s.getMergeableTableHashes()))[0])))[0])))[0]),g!=i&&(l[0]=n,l[1][1]=(await k(e,6,s.getMergeableValuesHashes()))[0]),l},J=((t,s,n,i,c,g,l,d={},h=[])=>{let w,p,M,A=0;S(f,h,(()=>0)),S(C,h,(()=>[]));const[L,T,m,H,O]=((e,t)=>!e||o(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!y(e)||!y(t),t.setContent]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!y(e)||!y(t),t.setDefaultContent])(l,t),D=async e=>(2!=A&&(A=1,await x.schedule((async()=>{await e(),A=0}))),x),E=s=>{var n;(L&&(n=s?.[0],e(n)==a)?1===s?.[1][2]?t.applyMergeableChanges:t.setMergeableContent:1===s?.[2]?t.applyChanges:t.setContent)(s)},x={load:async e=>await D((async()=>{try{E(await s())}catch(t){g?.(t),e&&O(e)}})),startAutoLoad:async e=>(await x.stopAutoLoad().load(e),p=i((async(e,t)=>{const a=t?.();await D((async()=>{try{E(a??e?.()??await s())}catch(e){g?.(e)}}))})),x),stopAutoLoad:()=>(p&&(c(p),p=void 0),x),isAutoLoading:()=>!o(p),save:async e=>(1!=A&&(A=2,await x.schedule((async()=>{try{await n(T,e)}catch(e){g?.(e)}A=0}))),x),startAutoSave:async()=>(await x.stopAutoSave().save(),M=t.addDidFinishTransactionListener((()=>{const e=m();H(e)&&x.save((()=>e))})),x),stopAutoSave:()=>(r(M,t.delListener),M=void 0,x),isAutoSaving:()=>!o(M),schedule:async(...e)=>(((e,...t)=>{e.push(...t)})(v(C,h),...e),await(async()=>{if(!v(f,h)){for(b(f,h,1);!o((e=v(C,h),w=e.shift()));)try{await w()}catch(e){g?.(e)}b(f,h,0)}var e})(),x),getStore:()=>t,destroy:()=>x.stopAutoLoad().stopAutoSave(),getStats:()=>({}),...d};return u(x)})(s,(async()=>{const e=await z();return e[0]!=t?e:void 0}),(async()=>{i(null,null,1,s.getMergeableContentHashes())}),(e=>N=e),(()=>N=void 0),h,!0,{startSync:async e=>await(await J.startAutoLoad(e)).startAutoSave(),stopSync:()=>J.stopAutoLoad().stopAutoSave(),destroy:()=>(l(),J.stopSync()),getSynchronizerStats:()=>({}),...x});return J})(s,((e,...a)=>{l.send((e??t)+"\n"+JSON.stringify(a,((e,t)=>t instanceof Map?g.fromEntries([...t]):t)))}),(e=>{N=e}),(()=>{l.close()}),d,x,{getWebSocket:()=>l});return I("message",(({data:e})=>{if(!o(N)){const t=e.toString("utf8").indexOf("\n");-1!==t&&N(i(e,0,t),...h(i(e,t+1)))}})),c(((e,t)=>{l.readyState!=l.OPEN?(I("error",t),I("open",(()=>e(P)))):e(P)}))};export{x as createWsSynchronizer};
@@ -1 +1 @@
1
- const e=(e,n,o)=>e.slice(n,o),n=(e,n)=>e?.delete(n),o=o=>{const t=new Map(void 0);return o.on("connection",((o,s)=>{const c=s.headers["sec-websocket-key"];var r,a,d;r=t,a=c,null==(d=o)?n(r,a):r?.set(a,d),o.on("message",(n=>{const o=n.toString("utf8"),s=o.indexOf("\n");if(-1!==s){const n=e(o,0,s),r=e(o,s+1);""===n?((e,n)=>{var o;o=e,o?.forEach(((e,n)=>{return o=e,n!=c?o.send(c+"\n"+r):0;var o}))})(t):((e,n)=>e?.get(n))(t,n)?.send(c+"\n"+r)}})),o.on("close",(()=>{n(t,c)}))})),{getWebSocketServer:()=>o,destroy:()=>{o.close(),t.clear()}}};export{o as createWsServer};
1
+ const e=e=>null==e,t=(t,s,n)=>e(t)?n?.():s(t),s=(e,t,s)=>e.slice(t,s),n=e=>e?.size??0,r=(c=n,e=>{return t=(e,t)=>e+c(t),o(e).reduce(t,0);var t});var c;const o=e=>[...e?.values()??[]],a=(e,t)=>e?.delete(t),l=e=>new Map(e),d=e=>[...e?.keys()??[]],i=(e,t)=>e?.get(t),u=(t,s,n)=>e(n)?(a(t,s),t):t?.set(s,n),g=/\/([^?]*)/,h=c=>{const o=l();return c.on("connection",((r,c)=>t(c.url?.match(g),(([d])=>t(c.headers["sec-websocket-key"],(t=>{const c=(v=l,f=g=o,k=h=d,f?.has(k)||u(g,h,v()),i(g,h));var g,h,v,f,k;u(c,t,r),r.on("message",(e=>{const n=e.toString("utf8"),r=n.indexOf("\n");if(-1!==r){const e=s(n,0,r),o=s(n,r+1);""===e?((e,s)=>{((e,s)=>{e?.forEach(((e,s)=>{return n=e,s!=t?n.send(t+"\n"+o):0;var n}))})(e)})(c):i(c,e)?.send(t+"\n"+o)}})),r.on("close",(()=>{a(c,t),(t=>e(t)||0==n(t))(c)&&a(o,d)}))})))))),{getWebSocketServer:()=>c,getPaths:()=>d(o),getClientIds:e=>d(i(o,e)),getStats:()=>({paths:n(o),clients:r(o)}),destroy:()=>{c.close(),o.clear()}}};export{h as createWsServer};
@@ -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()=>await(await R.startAutoLoad()).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()=>await(await u.startAutoLoad()).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
@@ -10,21 +10,26 @@
10
10
 
11
11
  import {MergeableStore} from '../mergeable-store';
12
12
  import {Synchronizer} from '../synchronizers';
13
- import {WebSocket} from 'ws';
13
+ import {WebSocket as WsWebSocket} from 'ws';
14
+
15
+ export type WebSocketTypes = WebSocket | WsWebSocket;
14
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,
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,6 +8,7 @@
8
8
  */
9
9
 
10
10
  import {Id, IdOrNull} from './common';
11
+ import {Content} from './store';
11
12
  import {MergeableStore} from './mergeable-store';
12
13
  import {Persister} from './persisters';
13
14
 
@@ -64,7 +65,7 @@ export interface Synchronizer extends Persister<true> {
64
65
  * The startSync method
65
66
  * @category Synchronization
66
67
  */
67
- startSync(): Promise<this>;
68
+ startSync(initialContent?: Content): Promise<this>;
68
69
  /**
69
70
  * The stopSync method
70
71
  * @category Synchronization
@@ -126,6 +127,6 @@ export function createCustomSynchronizer(
126
127
  send: Send,
127
128
  onReceive: (receive: Receive) => void,
128
129
  destroy: () => void,
129
- requestTimeoutSeconds?: number,
130
+ requestTimeoutSeconds: number,
130
131
  onIgnoredError?: (error: any) => void,
131
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