tinybase 5.0.0-beta.1 → 5.0.0-beta.11

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 (491) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/mergeable-store.cjs +1 -0
  8. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  9. package/lib/cjs/metrics.cjs +1 -1
  10. package/lib/cjs/metrics.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  12. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  14. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  18. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-file.cjs +1 -1
  24. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  26. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  30. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  32. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  33. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  34. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  35. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  36. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  39. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  40. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  41. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  42. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  43. package/lib/cjs/persisters.cjs +1 -1
  44. package/lib/cjs/persisters.cjs.gz +0 -0
  45. package/lib/cjs/queries.cjs +1 -1
  46. package/lib/cjs/queries.cjs.gz +0 -0
  47. package/lib/cjs/relationships.cjs +1 -1
  48. package/lib/cjs/relationships.cjs.gz +0 -0
  49. package/lib/cjs/store.cjs +1 -1
  50. package/lib/cjs/store.cjs.gz +0 -0
  51. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  52. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  53. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  54. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  55. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  56. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  57. package/lib/cjs/synchronizers.cjs +1 -0
  58. package/lib/cjs/synchronizers.cjs.gz +0 -0
  59. package/lib/cjs/tinybase.cjs +1 -1
  60. package/lib/cjs/tinybase.cjs.gz +0 -0
  61. package/lib/cjs/tools.cjs +1 -1
  62. package/lib/cjs/tools.cjs.gz +0 -0
  63. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  64. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  65. package/lib/cjs/ui-react-dom.cjs +1 -1
  66. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  67. package/lib/cjs/ui-react.cjs +1 -1
  68. package/lib/cjs/ui-react.cjs.gz +0 -0
  69. package/lib/cjs-es6/checkpoints.cjs +1 -1
  70. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  71. package/lib/cjs-es6/indexes.cjs +1 -1
  72. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  73. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  74. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  75. package/lib/cjs-es6/metrics.cjs +1 -1
  76. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  84. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  86. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  88. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  90. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  92. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  94. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  96. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  98. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  100. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  101. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  102. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  103. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  104. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  105. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  106. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  107. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  108. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  109. package/lib/cjs-es6/persisters.cjs +1 -1
  110. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  111. package/lib/cjs-es6/queries.cjs +1 -1
  112. package/lib/cjs-es6/queries.cjs.gz +0 -0
  113. package/lib/cjs-es6/relationships.cjs +1 -1
  114. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  115. package/lib/cjs-es6/store.cjs +1 -1
  116. package/lib/cjs-es6/store.cjs.gz +0 -0
  117. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  118. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  119. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  120. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  121. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  122. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  123. package/lib/cjs-es6/synchronizers.cjs +1 -0
  124. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  125. package/lib/cjs-es6/tinybase.cjs +1 -1
  126. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  127. package/lib/cjs-es6/tools.cjs +1 -1
  128. package/lib/cjs-es6/tools.cjs.gz +0 -0
  129. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  130. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  131. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  132. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  133. package/lib/cjs-es6/ui-react.cjs +1 -1
  134. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  135. package/lib/debug/checkpoints.js +3 -1
  136. package/lib/debug/indexes.js +3 -1
  137. package/lib/debug/mergeable-store.js +2230 -0
  138. package/lib/debug/metrics.js +3 -1
  139. package/lib/debug/persisters/persister-automerge.js +167 -131
  140. package/lib/debug/persisters/persister-browser.js +155 -102
  141. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
  142. package/lib/debug/persisters/persister-electric-sql.js +225 -152
  143. package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
  144. package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
  145. package/lib/debug/persisters/persister-file.js +149 -101
  146. package/lib/debug/persisters/persister-indexed-db.js +146 -100
  147. package/lib/debug/persisters/persister-libsql.js +924 -0
  148. package/lib/debug/persisters/persister-partykit-client.js +146 -104
  149. package/lib/debug/persisters/persister-partykit-server.js +17 -25
  150. package/lib/debug/persisters/persister-powersync.js +939 -0
  151. package/lib/debug/persisters/persister-remote.js +141 -97
  152. package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
  153. package/lib/debug/persisters/persister-sqlite3.js +225 -152
  154. package/lib/debug/persisters/persister-yjs.js +164 -127
  155. package/lib/debug/persisters.js +137 -94
  156. package/lib/debug/queries.js +9 -6
  157. package/lib/debug/relationships.js +3 -1
  158. package/lib/debug/store.js +147 -126
  159. package/lib/debug/synchronizers/synchronizer-local.js +571 -0
  160. package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
  162. package/lib/debug/synchronizers.js +531 -0
  163. package/lib/debug/tinybase.js +1080 -215
  164. package/lib/debug/tools.js +22 -21
  165. package/lib/debug/ui-react-dom.js +336 -258
  166. package/lib/debug/ui-react.js +55 -6
  167. package/lib/es6/checkpoints.js +1 -1
  168. package/lib/es6/checkpoints.js.gz +0 -0
  169. package/lib/es6/indexes.js +1 -1
  170. package/lib/es6/indexes.js.gz +0 -0
  171. package/lib/es6/mergeable-store.js +1 -0
  172. package/lib/es6/mergeable-store.js.gz +0 -0
  173. package/lib/es6/metrics.js +1 -1
  174. package/lib/es6/metrics.js.gz +0 -0
  175. package/lib/es6/persisters/persister-automerge.js +1 -1
  176. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  177. package/lib/es6/persisters/persister-browser.js +1 -1
  178. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  179. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  180. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  181. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  182. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  183. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  184. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  185. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  186. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  187. package/lib/es6/persisters/persister-file.js +1 -1
  188. package/lib/es6/persisters/persister-file.js.gz +0 -0
  189. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  190. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  191. package/lib/es6/persisters/persister-libsql.js +1 -0
  192. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  193. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  194. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  195. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  196. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  197. package/lib/es6/persisters/persister-powersync.js +1 -0
  198. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  199. package/lib/es6/persisters/persister-remote.js +1 -1
  200. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  201. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  202. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  203. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  204. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  205. package/lib/es6/persisters/persister-yjs.js +1 -1
  206. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  207. package/lib/es6/persisters.js +1 -1
  208. package/lib/es6/persisters.js.gz +0 -0
  209. package/lib/es6/queries.js +1 -1
  210. package/lib/es6/queries.js.gz +0 -0
  211. package/lib/es6/relationships.js +1 -1
  212. package/lib/es6/relationships.js.gz +0 -0
  213. package/lib/es6/store.js +1 -1
  214. package/lib/es6/store.js.gz +0 -0
  215. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  216. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  217. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  218. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  219. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  220. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  221. package/lib/es6/synchronizers.js +1 -0
  222. package/lib/es6/synchronizers.js.gz +0 -0
  223. package/lib/es6/tinybase.js +1 -1
  224. package/lib/es6/tinybase.js.gz +0 -0
  225. package/lib/es6/tools.js +1 -1
  226. package/lib/es6/tools.js.gz +0 -0
  227. package/lib/es6/ui-react-dom-debug.js +1 -1
  228. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  229. package/lib/es6/ui-react-dom.js +1 -1
  230. package/lib/es6/ui-react-dom.js.gz +0 -0
  231. package/lib/es6/ui-react.js +1 -1
  232. package/lib/es6/ui-react.js.gz +0 -0
  233. package/lib/indexes.js +1 -1
  234. package/lib/indexes.js.gz +0 -0
  235. package/lib/mergeable-store.js +1 -0
  236. package/lib/mergeable-store.js.gz +0 -0
  237. package/lib/metrics.js +1 -1
  238. package/lib/metrics.js.gz +0 -0
  239. package/lib/persisters/persister-automerge.js +1 -1
  240. package/lib/persisters/persister-automerge.js.gz +0 -0
  241. package/lib/persisters/persister-browser.js +1 -1
  242. package/lib/persisters/persister-browser.js.gz +0 -0
  243. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  244. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  245. package/lib/persisters/persister-electric-sql.js +1 -1
  246. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  247. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  248. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  249. package/lib/persisters/persister-expo-sqlite.js +1 -1
  250. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  251. package/lib/persisters/persister-file.js +1 -1
  252. package/lib/persisters/persister-file.js.gz +0 -0
  253. package/lib/persisters/persister-indexed-db.js +1 -1
  254. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  255. package/lib/persisters/persister-libsql.js +1 -0
  256. package/lib/persisters/persister-libsql.js.gz +0 -0
  257. package/lib/persisters/persister-partykit-client.js +1 -1
  258. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  259. package/lib/persisters/persister-partykit-server.js +1 -1
  260. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  261. package/lib/persisters/persister-powersync.js +1 -0
  262. package/lib/persisters/persister-powersync.js.gz +0 -0
  263. package/lib/persisters/persister-remote.js +1 -1
  264. package/lib/persisters/persister-remote.js.gz +0 -0
  265. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  266. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  267. package/lib/persisters/persister-sqlite3.js +1 -1
  268. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  269. package/lib/persisters/persister-yjs.js +1 -1
  270. package/lib/persisters/persister-yjs.js.gz +0 -0
  271. package/lib/persisters.js +1 -1
  272. package/lib/persisters.js.gz +0 -0
  273. package/lib/queries.js +1 -1
  274. package/lib/queries.js.gz +0 -0
  275. package/lib/relationships.js +1 -1
  276. package/lib/relationships.js.gz +0 -0
  277. package/lib/store.js +1 -1
  278. package/lib/store.js.gz +0 -0
  279. package/lib/synchronizers/synchronizer-local.js +1 -0
  280. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  281. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  282. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  283. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  284. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  285. package/lib/synchronizers.js +1 -0
  286. package/lib/synchronizers.js.gz +0 -0
  287. package/lib/tinybase.js +1 -1
  288. package/lib/tinybase.js.gz +0 -0
  289. package/lib/tools.js +1 -1
  290. package/lib/tools.js.gz +0 -0
  291. package/lib/types/checkpoints.d.ts +2 -2
  292. package/lib/types/indexes.d.ts +2 -2
  293. package/lib/types/mergeable-store.d.ts +214 -0
  294. package/lib/types/metrics.d.ts +2 -2
  295. package/lib/types/persisters/persister-automerge.d.ts +11 -7
  296. package/lib/types/persisters/persister-browser.d.ts +13 -4
  297. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
  298. package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
  299. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +4 -0
  300. package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
  301. package/lib/types/persisters/persister-file.d.ts +7 -2
  302. package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
  303. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  304. package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
  305. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  306. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  307. package/lib/types/persisters/persister-remote.d.ts +4 -0
  308. package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
  309. package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
  310. package/lib/types/persisters/persister-yjs.d.ts +6 -2
  311. package/lib/types/persisters.d.ts +162 -59
  312. package/lib/types/queries.d.ts +2 -2
  313. package/lib/types/relationships.d.ts +2 -2
  314. package/lib/types/store.d.ts +275 -187
  315. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  316. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
  317. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +57 -0
  318. package/lib/types/synchronizers.d.ts +132 -0
  319. package/lib/types/tinybase.d.ts +10 -8
  320. package/lib/types/tools.d.ts +4 -4
  321. package/lib/types/ui-react.d.ts +160 -9
  322. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  323. package/lib/types/with-schemas/indexes.d.ts +2 -2
  324. package/lib/types/with-schemas/internal/store.d.ts +4 -0
  325. package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
  326. package/lib/types/with-schemas/metrics.d.ts +2 -2
  327. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
  328. package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
  329. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
  330. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
  331. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +5 -1
  332. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
  333. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
  334. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
  335. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  336. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
  337. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  338. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  339. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
  340. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
  341. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
  342. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
  343. package/lib/types/with-schemas/persisters.d.ts +193 -121
  344. package/lib/types/with-schemas/queries.d.ts +3 -3
  345. package/lib/types/with-schemas/relationships.d.ts +2 -2
  346. package/lib/types/with-schemas/store.d.ts +483 -345
  347. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  348. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
  349. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +57 -0
  350. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  351. package/lib/types/with-schemas/tinybase.d.ts +9 -8
  352. package/lib/types/with-schemas/tools.d.ts +4 -4
  353. package/lib/types/with-schemas/ui-react.d.ts +177 -9
  354. package/lib/ui-react-dom.js +1 -1
  355. package/lib/ui-react-dom.js.gz +0 -0
  356. package/lib/ui-react.js +1 -1
  357. package/lib/ui-react.js.gz +0 -0
  358. package/lib/umd/checkpoints.js +1 -1
  359. package/lib/umd/checkpoints.js.gz +0 -0
  360. package/lib/umd/indexes.js +1 -1
  361. package/lib/umd/indexes.js.gz +0 -0
  362. package/lib/umd/mergeable-store.js +1 -0
  363. package/lib/umd/mergeable-store.js.gz +0 -0
  364. package/lib/umd/metrics.js +1 -1
  365. package/lib/umd/metrics.js.gz +0 -0
  366. package/lib/umd/persisters/persister-automerge.js +1 -1
  367. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  368. package/lib/umd/persisters/persister-browser.js +1 -1
  369. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  370. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  371. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  372. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  373. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  374. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  375. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  376. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  377. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  378. package/lib/umd/persisters/persister-file.js +1 -1
  379. package/lib/umd/persisters/persister-file.js.gz +0 -0
  380. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  381. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  382. package/lib/umd/persisters/persister-libsql.js +1 -0
  383. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  384. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  385. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  386. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  387. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  388. package/lib/umd/persisters/persister-powersync.js +1 -0
  389. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  390. package/lib/umd/persisters/persister-remote.js +1 -1
  391. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  392. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  393. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  394. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  395. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  396. package/lib/umd/persisters/persister-yjs.js +1 -1
  397. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  398. package/lib/umd/persisters.js +1 -1
  399. package/lib/umd/persisters.js.gz +0 -0
  400. package/lib/umd/queries.js +1 -1
  401. package/lib/umd/queries.js.gz +0 -0
  402. package/lib/umd/relationships.js +1 -1
  403. package/lib/umd/relationships.js.gz +0 -0
  404. package/lib/umd/store.js +1 -1
  405. package/lib/umd/store.js.gz +0 -0
  406. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  407. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  408. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  409. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  410. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  411. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  412. package/lib/umd/synchronizers.js +1 -0
  413. package/lib/umd/synchronizers.js.gz +0 -0
  414. package/lib/umd/tinybase.js +1 -1
  415. package/lib/umd/tinybase.js.gz +0 -0
  416. package/lib/umd/tools.js +1 -1
  417. package/lib/umd/tools.js.gz +0 -0
  418. package/lib/umd/ui-react-dom-debug.js +1 -1
  419. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  420. package/lib/umd/ui-react-dom.js +1 -1
  421. package/lib/umd/ui-react-dom.js.gz +0 -0
  422. package/lib/umd/ui-react.js +1 -1
  423. package/lib/umd/ui-react.js.gz +0 -0
  424. package/lib/umd-es6/checkpoints.js +1 -1
  425. package/lib/umd-es6/checkpoints.js.gz +0 -0
  426. package/lib/umd-es6/indexes.js +1 -1
  427. package/lib/umd-es6/indexes.js.gz +0 -0
  428. package/lib/umd-es6/mergeable-store.js +1 -0
  429. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  430. package/lib/umd-es6/metrics.js +1 -1
  431. package/lib/umd-es6/metrics.js.gz +0 -0
  432. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  433. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  434. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  435. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  436. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  437. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  438. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  439. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  440. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  441. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  442. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  443. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  444. package/lib/umd-es6/persisters/persister-file.js +1 -1
  445. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  446. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  447. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  448. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  449. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  450. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  451. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  452. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  453. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  454. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  455. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  456. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  457. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  458. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  459. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  460. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  461. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  462. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  463. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  464. package/lib/umd-es6/persisters.js +1 -1
  465. package/lib/umd-es6/persisters.js.gz +0 -0
  466. package/lib/umd-es6/queries.js +1 -1
  467. package/lib/umd-es6/queries.js.gz +0 -0
  468. package/lib/umd-es6/relationships.js +1 -1
  469. package/lib/umd-es6/relationships.js.gz +0 -0
  470. package/lib/umd-es6/store.js +1 -1
  471. package/lib/umd-es6/store.js.gz +0 -0
  472. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  473. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  474. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  475. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  476. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  477. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  478. package/lib/umd-es6/synchronizers.js +1 -0
  479. package/lib/umd-es6/synchronizers.js.gz +0 -0
  480. package/lib/umd-es6/tinybase.js +1 -1
  481. package/lib/umd-es6/tinybase.js.gz +0 -0
  482. package/lib/umd-es6/tools.js +1 -1
  483. package/lib/umd-es6/tools.js.gz +0 -0
  484. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  485. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  486. package/lib/umd-es6/ui-react-dom.js +1 -1
  487. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  488. package/lib/umd-es6/ui-react.js +1 -1
  489. package/lib/umd-es6/ui-react.js.gz +0 -0
  490. package/package.json +65 -45
  491. package/readme.md +2 -2
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The synchronizer-local module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances on the same
4
+ * local machine.
5
+ * @see Synchronizing Data guide
6
+ * @packageDocumentation
7
+ * @module synchronizer-local
8
+ * @since v5.0.0
9
+ */
10
+
11
+ import {MergeableStore} from '../mergeable-store';
12
+ import {Synchronizer} from '../synchronizers';
13
+
14
+ /**
15
+ * The LocalSynchronizer interface
16
+ * @category Synchronizer
17
+ */
18
+ export interface LocalSynchronizer extends Synchronizer {}
19
+
20
+ /**
21
+ * The createLocalSynchronizer function
22
+ * @category Creation
23
+ */
24
+ export function createLocalSynchronizer(
25
+ store: MergeableStore,
26
+ onIgnoredError?: (error: any) => void,
27
+ ): LocalSynchronizer;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The synchronizer-ws module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances via WebSockets
4
+ * facilitated by a server.
5
+ * @see Synchronizing Data guide
6
+ * @packageDocumentation
7
+ * @module synchronizer-ws-client
8
+ * @since v5.0.0
9
+ */
10
+
11
+ import {MergeableStore} from '../mergeable-store';
12
+ import {Synchronizer} from '../synchronizers';
13
+ import {WebSocket as WsWebSocket} from 'ws';
14
+
15
+ export type WebSocketTypes = WebSocket | WsWebSocket;
16
+
17
+ /**
18
+ * The WsSynchronizer interface
19
+ * @category Synchronizer
20
+ */
21
+ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
22
+ extends Synchronizer {
23
+ getWebSocket(): WebSocketType;
24
+ }
25
+
26
+ /**
27
+ * The createWsSynchronizer function
28
+ * @category Creation
29
+ */
30
+ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
31
+ store: MergeableStore,
32
+ webSocket: WebSocketType,
33
+ requestTimeoutSeconds?: number,
34
+ onIgnoredError?: (error: any) => void,
35
+ ): Promise<WsSynchronizer<WebSocketType>>;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The synchronizer-ws-server module of the TinyBase project lets you create
3
+ * a server that facilitates synchronization between clients.
4
+ * @see Synchronizing Data guide
5
+ * @packageDocumentation
6
+ * @module synchronizer-ws-server
7
+ * @since v5.0.0
8
+ */
9
+
10
+ import {Id, IdOrNull, Ids} from '../common';
11
+ import {GetIdChanges} from '../store';
12
+ import {WebSocketServer} from 'ws';
13
+
14
+ /**
15
+ * The PathIdsListener type
16
+ */
17
+ export type PathIdsListener<> = (
18
+ wsServer: WsServer,
19
+ getIdChanges: GetIdChanges,
20
+ ) => void;
21
+
22
+ /**
23
+ * The ClientIdsListener type
24
+ */
25
+ export type ClientIdsListener<> = (
26
+ wsServer: WsServer,
27
+ pathId: Id,
28
+ getIdChanges: GetIdChanges,
29
+ ) => void;
30
+
31
+ /**
32
+ * The WsServerStats type
33
+ */
34
+ export type WsServerStats = {
35
+ paths?: number;
36
+ clients?: number;
37
+ };
38
+
39
+ /**
40
+ * The WsServer interface
41
+ */
42
+ export interface WsServer {
43
+ getWebSocketServer: () => WebSocketServer;
44
+ getPathIds: () => Ids;
45
+ getClientIds: (pathId: Id) => Ids;
46
+ addPathIdsListener: (listener: PathIdsListener) => Id;
47
+ addClientIdsListener: (pathId: IdOrNull, listener: ClientIdsListener) => Id;
48
+ delListener(listenerId: Id): WsServer;
49
+ getStats: () => WsServerStats;
50
+ destroy: () => void;
51
+ }
52
+
53
+ /**
54
+ * The createWsServer function
55
+ * @category Creation
56
+ */
57
+ export function createWsServer(WebSocketServer: WebSocketServer): WsServer;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * The persister-sync module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances.
4
+ * @see Synchronizing Data guide
5
+ * @packageDocumentation
6
+ * @module synchronizers
7
+ * @since v5.0.0
8
+ */
9
+
10
+ import {Id, IdOrNull} from './common';
11
+ import {Content} from './store';
12
+ import {MergeableStore} from './mergeable-store';
13
+ import {Persister} from './persisters';
14
+
15
+ /**
16
+ * The MessageType type
17
+ * @category Synchronization
18
+ */
19
+ export type MessageType = number;
20
+
21
+ /**
22
+ * The Receive type
23
+ * @category Synchronization
24
+ */
25
+ export type Receive = (
26
+ fromClientId: Id,
27
+ requestId: IdOrNull,
28
+ messageType: MessageType,
29
+ messageBody: any,
30
+ ) => void;
31
+
32
+ /**
33
+ * The Send type
34
+ * @category Synchronization
35
+ */
36
+ export type Send = (
37
+ toClientId: IdOrNull,
38
+ requestId: IdOrNull,
39
+ messageType: MessageType,
40
+ messageBody: any,
41
+ ) => void;
42
+
43
+ /**
44
+ * The SynchronizerStats type
45
+ * @category Development
46
+ */
47
+ export type SynchronizerStats = {
48
+ sends?: number;
49
+ receives?: number;
50
+ };
51
+
52
+ /**
53
+ * The Synchronizer interface is a minor extension to the Persister interface.
54
+ *
55
+ * It provides extra convenience methods for starting and stopping the
56
+ * synchronization.
57
+ *
58
+ * You should use the createCustomSynchronizer function to create a Synchronizer
59
+ * object.
60
+ * @category Synchronizer
61
+ * @since v5.0.0
62
+ */
63
+ export interface Synchronizer extends Persister<2> {
64
+ /**
65
+ * The startSync method
66
+ * @category Synchronization
67
+ */
68
+ startSync(initialContent?: Content): Promise<this>;
69
+ /**
70
+ * The stopSync method
71
+ * @category Synchronization
72
+ */
73
+ stopSync(): this;
74
+ /**
75
+ * The getSynchronizerStats method
76
+ * @category Synchronization
77
+ */
78
+ getSynchronizerStats(): SynchronizerStats;
79
+ }
80
+
81
+ /**
82
+ * The createCustomSynchronizer function creates a Synchronizer object that can
83
+ * persist one MergeableStore to another.
84
+ *
85
+ * As well as providing a reference to the MergeableStore to synchronize, you
86
+ * must provide a `client` parameter which identifies the Client that is used to
87
+ * transmit changes to and from this MergeableStore and its peers.
88
+ * @param store The MergeableStore to synchronize.
89
+ * @param client The reference of the Client.
90
+ * @param requestTimeoutSeconds An optional number of seconds before a request
91
+ * to the Client times out, defaulting to 5.
92
+ * @param onIgnoredError An optional handler for the errors that the
93
+ * Synchronizer would otherwise ignore when trying to save or load data. This is
94
+ * suitable for debugging synchronization issues in a development environment.
95
+ * @returns A reference to the new Synchronizer object.
96
+ * @example
97
+ * This example creates a Synchronizer object and synchronizes one
98
+ * MergeableStore to another.
99
+ *
100
+ * ```js
101
+ * const store1 = createMergeableStore('store1').setTables({
102
+ * pets: {fido: {species: 'dog'}},
103
+ * });
104
+ * const synchronizer1 = createLocalSynchronizer(store1);
105
+ *
106
+ * const store2 = createMergeableStore('store2');
107
+ * const synchronizer2 = createLocalSynchronizer(store2);
108
+ * await synchronizer2.startSync();
109
+ *
110
+ * await synchronizer1.save();
111
+ * // ...
112
+ * // Store2 will be synced with Store1.
113
+ *
114
+ * console.log(store2.getTables());
115
+ * // -> {pets: {fido: {species: 'dog'}}}
116
+ *
117
+ * await synchronizer1.load();
118
+ * // Store1 will be synced with Store2.
119
+ *
120
+ * synchronizer1.destroy();
121
+ * synchronizer2.destroy();
122
+ * ```
123
+ * @category Creation
124
+ */
125
+ export function createCustomSynchronizer(
126
+ store: MergeableStore,
127
+ send: Send,
128
+ onReceive: (receive: Receive) => void,
129
+ destroy: () => void,
130
+ requestTimeoutSeconds: number,
131
+ onIgnoredError?: (error: any) => void,
132
+ ): Synchronizer;
@@ -3,11 +3,13 @@
3
3
  * @packageDocumentation
4
4
  */
5
5
 
6
- export * from './checkpoints.d';
7
- export * from './common.d';
8
- export * from './indexes.d';
9
- export * from './metrics.d';
10
- export * from './persisters.d';
11
- export * from './queries.d';
12
- export * from './relationships.d';
13
- export * from './store.d';
6
+ export * from './checkpoints.d.ts';
7
+ export * from './common.d.ts';
8
+ export * from './indexes.d.ts';
9
+ export * from './metrics.d.ts';
10
+ export * from './persisters.d.ts';
11
+ export * from './synchronizers.d.ts';
12
+ export * from './queries.d.ts';
13
+ export * from './relationships.d.ts';
14
+ export * from './mergeable-store.d.ts';
15
+ export * from './store.d.ts';
@@ -9,8 +9,8 @@
9
9
  * @since v2.2.0
10
10
  */
11
11
 
12
- import {Store, TablesSchema, ValuesSchema} from './store.d';
13
- import {Id} from './common.d';
12
+ import {Store, TablesSchema, ValuesSchema} from './store.d.ts';
13
+ import {Id} from './common.d.ts';
14
14
 
15
15
  /**
16
16
  * The StoreStats type describes a set of statistics about the Store, and
@@ -417,7 +417,7 @@ export interface Tools {
417
417
  * await createTools(store).getPrettyStoreApi('shop');
418
418
  *
419
419
  * const dTsLines = dTs.split('\n');
420
- * console.log(dTsLines[17]);
420
+ * console.log(dTsLines[15]);
421
421
  * // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
422
422
  *
423
423
  * const tsLines = ts.split('\n');
@@ -437,7 +437,7 @@ export interface Tools {
437
437
  * await createTools(store).getPrettyStoreApi('shop');
438
438
  *
439
439
  * const dTsLines = dTs.split('\n');
440
- * console.log(dTsLines[17]);
440
+ * console.log(dTsLines[15]);
441
441
  * // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
442
442
  *
443
443
  * const tsLines = ts.split('\n');
@@ -22,7 +22,7 @@
22
22
  * @module ui-react
23
23
  */
24
24
 
25
- import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d';
25
+ import {Callback, Id, IdOrNull, Ids, ParameterizedCallback} from './common.d.ts';
26
26
  import {
27
27
  Cell,
28
28
  CellIdsListener,
@@ -56,22 +56,22 @@ import {
56
56
  ValueOrUndefined,
57
57
  Values,
58
58
  ValuesListener,
59
- } from './store.d';
59
+ } from './store.d.ts';
60
60
  import {
61
61
  CheckpointIds,
62
62
  CheckpointIdsListener,
63
63
  CheckpointListener,
64
64
  Checkpoints,
65
- } from './checkpoints.d';
65
+ } from './checkpoints.d.ts';
66
66
  import {ComponentType, ReactElement} from 'react';
67
- import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d';
67
+ import {Indexes, SliceIdsListener, SliceRowIdsListener} from './indexes.d.ts';
68
68
  import {
69
69
  LinkedRowIdsListener,
70
70
  LocalRowIdsListener,
71
71
  Relationships,
72
72
  RemoteRowIdListener,
73
- } from './relationships.d';
74
- import {MetricListener, Metrics} from './metrics.d';
73
+ } from './relationships.d.ts';
74
+ import {MetricListener, Metrics} from './metrics.d.ts';
75
75
  import {
76
76
  Queries,
77
77
  ResultCellIdsListener,
@@ -82,8 +82,10 @@ import {
82
82
  ResultSortedRowIdsListener,
83
83
  ResultTableCellIdsListener,
84
84
  ResultTableListener,
85
- } from './queries.d';
86
- import {Persister} from './persisters.d';
85
+ } from './queries.d.ts';
86
+ import {MergeableStore} from './mergeable-store';
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
@@ -212,6 +214,7 @@ export type UndoOrRedoInformation = [boolean, Callback, Id | undefined, string];
212
214
  * useSetTableCallback hook or useSetRowCallback hook - so that the Id arguments
213
215
  * of the object to set can also be dependent on the event or parameter
214
216
  * provided (as well as the object itself being set).
217
+ * @category Identity
215
218
  */
216
219
  export type GetId<Parameter> = (parameter: Parameter, store: Store) => Id;
217
220
 
@@ -300,6 +303,14 @@ export function useCreateStore(
300
303
  createDeps?: React.DependencyList,
301
304
  ): Store;
302
305
 
306
+ /**
307
+ * The useCreateMergeableStore hook
308
+ */
309
+ export function useCreateMergeableStore(
310
+ create: () => MergeableStore,
311
+ createDeps?: React.DependencyList,
312
+ ): MergeableStore;
313
+
303
314
  /**
304
315
  * The useStoreIds hook is used to retrieve the Ids of all the named Store
305
316
  * objects present in the current Provider component context.
@@ -10196,8 +10207,8 @@ export function useCheckpointListener(
10196
10207
  * // -> '<span>{\"pets\":{\"fido\":{\"species\":\"dog\"}}}</span>'
10197
10208
  *
10198
10209
  * root.render(<App sessionKey="cujoStore" />); // !act
10199
- * // -> 'Persister destroyed for session key fidoStore'
10200
10210
  * // -> 'Persister created for session key cujoStore'
10211
+ * // -> 'Persister destroyed for session key fidoStore'
10201
10212
  *
10202
10213
  * // ... // !act
10203
10214
  * console.log(app.innerHTML);
@@ -10220,6 +10231,146 @@ export function useCreatePersister<
10220
10231
  destroyDeps?: React.DependencyList,
10221
10232
  ): PersisterOrUndefined;
10222
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
+
10223
10374
  /**
10224
10375
  * The ExtraProps type represents a set of arbitrary additional props.
10225
10376
  * @category Props
@@ -10,8 +10,8 @@
10
10
  * @module checkpoints
11
11
  */
12
12
 
13
- import {Id, IdOrNull, Ids} from './common.d';
14
- import {OptionalSchemas, Store} from './store.d';
13
+ import {Id, IdOrNull, Ids} from './common.d.ts';
14
+ import {OptionalSchemas, Store} from './store.d.ts';
15
15
 
16
16
  /**
17
17
  * The CheckpointIds type is a representation of the list of checkpoint Ids
@@ -17,8 +17,8 @@ import {
17
17
  OptionalTablesSchema,
18
18
  RowCallback,
19
19
  Store,
20
- } from './store.d';
21
- import {Id, IdOrNull, Ids, SortKey} from './common.d';
20
+ } from './store.d.ts';
21
+ import {Id, IdOrNull, Ids, SortKey} from './common.d.ts';
22
22
 
23
23
  /**
24
24
  * The Index type represents the concept of a map of Slice objects, keyed by Id.
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  Cell,
3
+ OptionalSchemas,
3
4
  OptionalTablesSchema,
4
5
  OptionalValuesSchema,
6
+ Store,
5
7
  Value,
6
8
  } from '../store';
7
9
  import {Id} from '../common';
@@ -100,3 +102,5 @@ export type Truncate<Params> = Params extends [...infer ShorterParams, any]
100
102
  : never;
101
103
 
102
104
  export type NoInfer<Type> = [Type][Type extends any ? 0 : never];
105
+
106
+ export type StoreAlias<Schemas extends OptionalSchemas> = Store<Schemas>;