tinybase 5.0.0-beta.26 → 5.0.0-beta.28

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 (741) hide show
  1. package/@types/_internal/ui-react/with-schemas/index.d.cts +274 -0
  2. package/@types/_internal/ui-react/with-schemas/index.d.ts +274 -0
  3. package/@types/checkpoints/index.d.cts +30 -1
  4. package/@types/checkpoints/index.d.ts +30 -1
  5. package/@types/checkpoints/with-schemas/index.d.cts +30 -1
  6. package/@types/checkpoints/with-schemas/index.d.ts +30 -1
  7. package/@types/common/index.d.cts +9 -0
  8. package/@types/common/index.d.ts +9 -0
  9. package/@types/common/with-schemas/index.d.cts +9 -0
  10. package/@types/common/with-schemas/index.d.ts +9 -0
  11. package/@types/index.d.cts +1 -0
  12. package/@types/index.d.ts +1 -0
  13. package/@types/indexes/index.d.cts +32 -1
  14. package/@types/indexes/index.d.ts +32 -1
  15. package/@types/indexes/with-schemas/index.d.cts +32 -1
  16. package/@types/indexes/with-schemas/index.d.ts +32 -1
  17. package/@types/mergeable-store/index.d.cts +0 -2
  18. package/@types/mergeable-store/index.d.ts +0 -2
  19. package/@types/mergeable-store/with-schemas/index.d.cts +2 -2
  20. package/@types/mergeable-store/with-schemas/index.d.ts +2 -2
  21. package/@types/metrics/index.d.cts +30 -4
  22. package/@types/metrics/index.d.ts +30 -4
  23. package/@types/metrics/with-schemas/index.d.cts +30 -4
  24. package/@types/metrics/with-schemas/index.d.ts +30 -4
  25. package/@types/persisters/index.d.cts +246 -62
  26. package/@types/persisters/index.d.ts +246 -62
  27. package/@types/persisters/persister-automerge/index.d.cts +13 -9
  28. package/@types/persisters/persister-automerge/index.d.ts +13 -9
  29. package/@types/persisters/persister-automerge/with-schemas/index.d.cts +13 -9
  30. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +13 -9
  31. package/@types/persisters/persister-browser/index.d.cts +25 -15
  32. package/@types/persisters/persister-browser/index.d.ts +25 -15
  33. package/@types/persisters/persister-browser/with-schemas/index.d.cts +25 -15
  34. package/@types/persisters/persister-browser/with-schemas/index.d.ts +25 -15
  35. package/@types/persisters/persister-cr-sqlite-wasm/index.d.cts +12 -9
  36. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +12 -9
  37. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.cts +12 -9
  38. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +12 -9
  39. package/@types/persisters/persister-electric-sql/index.d.cts +12 -9
  40. package/@types/persisters/persister-electric-sql/index.d.ts +12 -9
  41. package/@types/persisters/persister-electric-sql/with-schemas/index.d.cts +12 -9
  42. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +12 -9
  43. package/@types/persisters/persister-expo-sqlite/index.d.cts +14 -10
  44. package/@types/persisters/persister-expo-sqlite/index.d.ts +14 -10
  45. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +14 -10
  46. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +14 -10
  47. package/@types/persisters/persister-file/index.d.cts +14 -8
  48. package/@types/persisters/persister-file/index.d.ts +14 -8
  49. package/@types/persisters/persister-file/with-schemas/index.d.cts +14 -8
  50. package/@types/persisters/persister-file/with-schemas/index.d.ts +14 -8
  51. package/@types/persisters/persister-indexed-db/index.d.cts +13 -8
  52. package/@types/persisters/persister-indexed-db/index.d.ts +13 -8
  53. package/@types/persisters/persister-indexed-db/with-schemas/index.d.cts +13 -8
  54. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +13 -8
  55. package/@types/persisters/persister-libsql/index.d.cts +13 -8
  56. package/@types/persisters/persister-libsql/index.d.ts +13 -8
  57. package/@types/persisters/persister-libsql/with-schemas/index.d.cts +13 -8
  58. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +13 -8
  59. package/@types/persisters/persister-partykit-client/index.d.cts +24 -13
  60. package/@types/persisters/persister-partykit-client/index.d.ts +24 -13
  61. package/@types/persisters/persister-partykit-client/with-schemas/index.d.cts +24 -13
  62. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +24 -13
  63. package/@types/persisters/persister-partykit-server/index.d.cts +11 -3
  64. package/@types/persisters/persister-partykit-server/index.d.ts +11 -3
  65. package/@types/persisters/persister-partykit-server/with-schemas/index.d.cts +11 -3
  66. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +11 -3
  67. package/@types/persisters/persister-powersync/index.d.cts +15 -9
  68. package/@types/persisters/persister-powersync/index.d.ts +15 -9
  69. package/@types/persisters/persister-powersync/with-schemas/index.d.cts +15 -9
  70. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +15 -9
  71. package/@types/persisters/persister-remote/index.d.cts +15 -10
  72. package/@types/persisters/persister-remote/index.d.ts +15 -10
  73. package/@types/persisters/persister-remote/with-schemas/index.d.cts +15 -10
  74. package/@types/persisters/persister-remote/with-schemas/index.d.ts +15 -10
  75. package/@types/persisters/persister-sqlite-wasm/index.d.cts +14 -9
  76. package/@types/persisters/persister-sqlite-wasm/index.d.ts +14 -9
  77. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.cts +14 -9
  78. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +14 -9
  79. package/@types/persisters/persister-sqlite3/index.d.cts +14 -9
  80. package/@types/persisters/persister-sqlite3/index.d.ts +14 -9
  81. package/@types/persisters/persister-sqlite3/with-schemas/index.d.cts +14 -9
  82. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +14 -9
  83. package/@types/persisters/persister-yjs/index.d.cts +13 -8
  84. package/@types/persisters/persister-yjs/index.d.ts +13 -8
  85. package/@types/persisters/persister-yjs/with-schemas/index.d.cts +13 -8
  86. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +13 -8
  87. package/@types/persisters/with-schemas/index.d.cts +280 -63
  88. package/@types/persisters/with-schemas/index.d.ts +280 -63
  89. package/@types/queries/index.d.cts +64 -5
  90. package/@types/queries/index.d.ts +64 -5
  91. package/@types/queries/with-schemas/index.d.cts +64 -5
  92. package/@types/queries/with-schemas/index.d.ts +64 -5
  93. package/@types/relationships/index.d.cts +34 -1
  94. package/@types/relationships/index.d.ts +34 -1
  95. package/@types/relationships/with-schemas/index.d.cts +34 -1
  96. package/@types/relationships/with-schemas/index.d.ts +34 -1
  97. package/@types/store/index.d.cts +125 -0
  98. package/@types/store/index.d.ts +125 -0
  99. package/@types/store/with-schemas/index.d.cts +125 -0
  100. package/@types/store/with-schemas/index.d.ts +125 -0
  101. package/@types/synchronizers/index.d.cts +375 -41
  102. package/@types/synchronizers/index.d.ts +375 -41
  103. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +114 -0
  104. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +114 -0
  105. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +128 -0
  106. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +128 -0
  107. package/@types/synchronizers/synchronizer-local/index.d.cts +62 -3
  108. package/@types/synchronizers/synchronizer-local/index.d.ts +62 -3
  109. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +77 -3
  110. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +77 -3
  111. package/@types/synchronizers/synchronizer-ws-client/index.d.cts +110 -3
  112. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +110 -3
  113. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +121 -3
  114. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +121 -3
  115. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +486 -7
  116. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +486 -7
  117. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +486 -7
  118. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +486 -7
  119. package/@types/synchronizers/with-schemas/index.d.cts +372 -42
  120. package/@types/synchronizers/with-schemas/index.d.ts +372 -42
  121. package/@types/tools/index.d.cts +22 -0
  122. package/@types/tools/index.d.ts +22 -0
  123. package/@types/tools/with-schemas/index.d.cts +22 -0
  124. package/@types/tools/with-schemas/index.d.ts +22 -0
  125. package/@types/ui-react/index.d.cts +375 -1
  126. package/@types/ui-react/index.d.ts +375 -1
  127. package/@types/ui-react/with-schemas/index.d.cts +100 -1
  128. package/@types/ui-react/with-schemas/index.d.ts +100 -1
  129. package/@types/ui-react-dom/index.d.cts +112 -0
  130. package/@types/ui-react-dom/index.d.ts +112 -0
  131. package/@types/ui-react-dom/with-schemas/index.d.cts +112 -0
  132. package/@types/ui-react-dom/with-schemas/index.d.ts +112 -0
  133. package/@types/ui-react-inspector/index.d.cts +6 -2
  134. package/@types/ui-react-inspector/index.d.ts +6 -2
  135. package/@types/ui-react-inspector/with-schemas/index.d.cts +118 -2
  136. package/@types/ui-react-inspector/with-schemas/index.d.ts +118 -2
  137. package/@types/with-schemas/index.d.cts +1 -0
  138. package/@types/with-schemas/index.d.ts +1 -0
  139. package/cjs/es6/index.cjs +49 -43
  140. package/cjs/es6/min/index.cjs +1 -1
  141. package/cjs/es6/min/index.cjs.gz +0 -0
  142. package/cjs/es6/min/metrics/index.cjs +1 -1
  143. package/cjs/es6/min/metrics/index.cjs.gz +0 -0
  144. package/cjs/es6/min/metrics/with-schemas/index.cjs +1 -1
  145. package/cjs/es6/min/metrics/with-schemas/index.cjs.gz +0 -0
  146. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  147. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  148. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  149. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  150. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  151. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  152. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  153. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  154. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  155. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  156. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  157. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  158. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  159. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  160. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  161. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  162. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  163. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  164. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  165. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  167. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  168. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  169. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  170. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  171. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  172. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  173. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  174. package/cjs/es6/min/queries/index.cjs +1 -1
  175. package/cjs/es6/min/queries/index.cjs.gz +0 -0
  176. package/cjs/es6/min/queries/with-schemas/index.cjs +1 -1
  177. package/cjs/es6/min/queries/with-schemas/index.cjs.gz +0 -0
  178. package/cjs/es6/min/synchronizers/index.cjs +1 -1
  179. package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
  180. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  181. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  182. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  183. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  184. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  185. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  186. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  187. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  188. package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
  189. package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  190. package/cjs/es6/min/ui-react/index.cjs +1 -1
  191. package/cjs/es6/min/ui-react/index.cjs.gz +0 -0
  192. package/cjs/es6/min/ui-react/with-schemas/index.cjs +1 -1
  193. package/cjs/es6/min/ui-react/with-schemas/index.cjs.gz +0 -0
  194. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  195. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  196. package/cjs/es6/persisters/index.cjs +5 -5
  197. package/cjs/es6/persisters/persister-automerge/index.cjs +5 -5
  198. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +5 -5
  199. package/cjs/es6/persisters/persister-browser/index.cjs +5 -5
  200. package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +5 -5
  201. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +11 -11
  202. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +11 -11
  203. package/cjs/es6/persisters/persister-electric-sql/index.cjs +11 -11
  204. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +11 -11
  205. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +11 -11
  206. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +11 -11
  207. package/cjs/es6/persisters/persister-file/index.cjs +5 -5
  208. package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +5 -5
  209. package/cjs/es6/persisters/persister-indexed-db/index.cjs +5 -5
  210. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +5 -5
  211. package/cjs/es6/persisters/persister-libsql/index.cjs +11 -11
  212. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +11 -11
  213. package/cjs/es6/persisters/persister-partykit-client/index.cjs +5 -5
  214. package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +5 -5
  215. package/cjs/es6/persisters/persister-powersync/index.cjs +11 -11
  216. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +11 -11
  217. package/cjs/es6/persisters/persister-remote/index.cjs +5 -5
  218. package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +5 -5
  219. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +11 -11
  220. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +11 -11
  221. package/cjs/es6/persisters/persister-sqlite3/index.cjs +11 -11
  222. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +11 -11
  223. package/cjs/es6/persisters/persister-yjs/index.cjs +5 -5
  224. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +5 -5
  225. package/cjs/es6/persisters/with-schemas/index.cjs +5 -5
  226. package/cjs/es6/synchronizers/index.cjs +49 -43
  227. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +628 -0
  228. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +628 -0
  229. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +53 -48
  230. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +53 -48
  231. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +61 -62
  232. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +61 -62
  233. package/cjs/es6/synchronizers/with-schemas/index.cjs +49 -43
  234. package/cjs/es6/ui-react/index.cjs +137 -75
  235. package/cjs/es6/ui-react/with-schemas/index.cjs +137 -75
  236. package/cjs/es6/ui-react-inspector/index.cjs +5 -5
  237. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +5 -5
  238. package/cjs/es6/with-schemas/index.cjs +49 -43
  239. package/cjs/index.cjs +49 -43
  240. package/cjs/min/index.cjs +1 -1
  241. package/cjs/min/index.cjs.gz +0 -0
  242. package/cjs/min/metrics/index.cjs +1 -1
  243. package/cjs/min/metrics/index.cjs.gz +0 -0
  244. package/cjs/min/metrics/with-schemas/index.cjs +1 -1
  245. package/cjs/min/metrics/with-schemas/index.cjs.gz +0 -0
  246. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  247. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  248. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  249. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  250. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  251. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  252. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  253. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  254. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  255. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  256. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  257. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  258. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  259. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  260. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  261. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  262. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  263. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  264. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  265. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  266. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  267. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  268. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  269. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  270. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  271. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  272. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  273. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  274. package/cjs/min/queries/index.cjs +1 -1
  275. package/cjs/min/queries/index.cjs.gz +0 -0
  276. package/cjs/min/queries/with-schemas/index.cjs +1 -1
  277. package/cjs/min/queries/with-schemas/index.cjs.gz +0 -0
  278. package/cjs/min/synchronizers/index.cjs +1 -1
  279. package/cjs/min/synchronizers/index.cjs.gz +0 -0
  280. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  281. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  282. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  283. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  284. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  285. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  286. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  287. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  288. package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
  289. package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  290. package/cjs/min/ui-react/index.cjs +1 -1
  291. package/cjs/min/ui-react/index.cjs.gz +0 -0
  292. package/cjs/min/ui-react/with-schemas/index.cjs +1 -1
  293. package/cjs/min/ui-react/with-schemas/index.cjs.gz +0 -0
  294. package/cjs/min/with-schemas/index.cjs +1 -1
  295. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  296. package/cjs/persisters/index.cjs +5 -5
  297. package/cjs/persisters/persister-automerge/index.cjs +5 -5
  298. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +5 -5
  299. package/cjs/persisters/persister-browser/index.cjs +5 -5
  300. package/cjs/persisters/persister-browser/with-schemas/index.cjs +5 -5
  301. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +11 -11
  302. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +11 -11
  303. package/cjs/persisters/persister-electric-sql/index.cjs +11 -11
  304. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +11 -11
  305. package/cjs/persisters/persister-expo-sqlite/index.cjs +11 -11
  306. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +11 -11
  307. package/cjs/persisters/persister-file/index.cjs +5 -5
  308. package/cjs/persisters/persister-file/with-schemas/index.cjs +5 -5
  309. package/cjs/persisters/persister-indexed-db/index.cjs +5 -5
  310. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +5 -5
  311. package/cjs/persisters/persister-libsql/index.cjs +11 -11
  312. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +11 -11
  313. package/cjs/persisters/persister-partykit-client/index.cjs +5 -5
  314. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +5 -5
  315. package/cjs/persisters/persister-powersync/index.cjs +11 -11
  316. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +11 -11
  317. package/cjs/persisters/persister-remote/index.cjs +5 -5
  318. package/cjs/persisters/persister-remote/with-schemas/index.cjs +5 -5
  319. package/cjs/persisters/persister-sqlite-wasm/index.cjs +11 -11
  320. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +11 -11
  321. package/cjs/persisters/persister-sqlite3/index.cjs +11 -11
  322. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +11 -11
  323. package/cjs/persisters/persister-yjs/index.cjs +5 -5
  324. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +5 -5
  325. package/cjs/persisters/with-schemas/index.cjs +5 -5
  326. package/cjs/synchronizers/index.cjs +49 -43
  327. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +500 -0
  328. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +500 -0
  329. package/cjs/synchronizers/synchronizer-local/index.cjs +53 -53
  330. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +53 -53
  331. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +61 -62
  332. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +61 -62
  333. package/cjs/synchronizers/with-schemas/index.cjs +49 -43
  334. package/cjs/ui-react/index.cjs +139 -74
  335. package/cjs/ui-react/with-schemas/index.cjs +139 -74
  336. package/cjs/ui-react-inspector/index.cjs +5 -5
  337. package/cjs/ui-react-inspector/with-schemas/index.cjs +5 -5
  338. package/cjs/with-schemas/index.cjs +49 -43
  339. package/es6/index.js +49 -43
  340. package/es6/min/index.js +1 -1
  341. package/es6/min/index.js.gz +0 -0
  342. package/es6/min/metrics/index.js +1 -1
  343. package/es6/min/metrics/index.js.gz +0 -0
  344. package/es6/min/metrics/with-schemas/index.js +1 -1
  345. package/es6/min/metrics/with-schemas/index.js.gz +0 -0
  346. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  347. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  348. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  349. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  350. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  351. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  352. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  353. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  354. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  355. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  356. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  357. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  358. package/es6/min/persisters/persister-libsql/index.js +1 -1
  359. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  360. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  361. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  362. package/es6/min/persisters/persister-powersync/index.js +1 -1
  363. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  364. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  365. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  366. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  367. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  368. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  369. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  370. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  371. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  372. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  373. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  374. package/es6/min/queries/index.js +1 -1
  375. package/es6/min/queries/index.js.gz +0 -0
  376. package/es6/min/queries/with-schemas/index.js +1 -1
  377. package/es6/min/queries/with-schemas/index.js.gz +0 -0
  378. package/es6/min/synchronizers/index.js +1 -1
  379. package/es6/min/synchronizers/index.js.gz +0 -0
  380. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  381. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  382. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  383. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  384. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  385. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  386. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  387. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  388. package/es6/min/synchronizers/with-schemas/index.js +1 -1
  389. package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  390. package/es6/min/ui-react/index.js +1 -1
  391. package/es6/min/ui-react/index.js.gz +0 -0
  392. package/es6/min/ui-react/with-schemas/index.js +1 -1
  393. package/es6/min/ui-react/with-schemas/index.js.gz +0 -0
  394. package/es6/min/with-schemas/index.js +1 -1
  395. package/es6/min/with-schemas/index.js.gz +0 -0
  396. package/es6/persisters/index.js +5 -5
  397. package/es6/persisters/persister-automerge/index.js +5 -5
  398. package/es6/persisters/persister-automerge/with-schemas/index.js +5 -5
  399. package/es6/persisters/persister-browser/index.js +5 -5
  400. package/es6/persisters/persister-browser/with-schemas/index.js +5 -5
  401. package/es6/persisters/persister-cr-sqlite-wasm/index.js +11 -11
  402. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +11 -11
  403. package/es6/persisters/persister-electric-sql/index.js +11 -11
  404. package/es6/persisters/persister-electric-sql/with-schemas/index.js +11 -11
  405. package/es6/persisters/persister-expo-sqlite/index.js +11 -11
  406. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +11 -11
  407. package/es6/persisters/persister-file/index.js +5 -5
  408. package/es6/persisters/persister-file/with-schemas/index.js +5 -5
  409. package/es6/persisters/persister-indexed-db/index.js +5 -5
  410. package/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -5
  411. package/es6/persisters/persister-libsql/index.js +11 -11
  412. package/es6/persisters/persister-libsql/with-schemas/index.js +11 -11
  413. package/es6/persisters/persister-partykit-client/index.js +5 -5
  414. package/es6/persisters/persister-partykit-client/with-schemas/index.js +5 -5
  415. package/es6/persisters/persister-powersync/index.js +11 -11
  416. package/es6/persisters/persister-powersync/with-schemas/index.js +11 -11
  417. package/es6/persisters/persister-remote/index.js +5 -5
  418. package/es6/persisters/persister-remote/with-schemas/index.js +5 -5
  419. package/es6/persisters/persister-sqlite-wasm/index.js +11 -11
  420. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +11 -11
  421. package/es6/persisters/persister-sqlite3/index.js +11 -11
  422. package/es6/persisters/persister-sqlite3/with-schemas/index.js +11 -11
  423. package/es6/persisters/persister-yjs/index.js +5 -5
  424. package/es6/persisters/persister-yjs/with-schemas/index.js +5 -5
  425. package/es6/persisters/with-schemas/index.js +5 -5
  426. package/es6/synchronizers/index.js +49 -44
  427. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +626 -0
  428. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +626 -0
  429. package/es6/synchronizers/synchronizer-local/index.js +53 -48
  430. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +53 -48
  431. package/es6/synchronizers/synchronizer-ws-client/index.js +61 -62
  432. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +61 -62
  433. package/es6/synchronizers/with-schemas/index.js +49 -44
  434. package/es6/ui-react/index.js +137 -75
  435. package/es6/ui-react/with-schemas/index.js +137 -75
  436. package/es6/ui-react-inspector/index.js +5 -5
  437. package/es6/ui-react-inspector/with-schemas/index.js +5 -5
  438. package/es6/with-schemas/index.js +49 -43
  439. package/index.js +49 -43
  440. package/min/index.js +1 -1
  441. package/min/index.js.gz +0 -0
  442. package/min/metrics/index.js +1 -1
  443. package/min/metrics/index.js.gz +0 -0
  444. package/min/metrics/with-schemas/index.js +1 -1
  445. package/min/metrics/with-schemas/index.js.gz +0 -0
  446. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  447. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  448. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  449. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  450. package/min/persisters/persister-electric-sql/index.js +1 -1
  451. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  452. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  453. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  454. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  455. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  456. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  457. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  458. package/min/persisters/persister-libsql/index.js +1 -1
  459. package/min/persisters/persister-libsql/index.js.gz +0 -0
  460. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  461. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  462. package/min/persisters/persister-powersync/index.js +1 -1
  463. package/min/persisters/persister-powersync/index.js.gz +0 -0
  464. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  465. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  466. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  467. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  468. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  469. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  470. package/min/persisters/persister-sqlite3/index.js +1 -1
  471. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  472. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  473. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  474. package/min/queries/index.js +1 -1
  475. package/min/queries/index.js.gz +0 -0
  476. package/min/queries/with-schemas/index.js +1 -1
  477. package/min/queries/with-schemas/index.js.gz +0 -0
  478. package/min/synchronizers/index.js +1 -1
  479. package/min/synchronizers/index.js.gz +0 -0
  480. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  481. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  482. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  483. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  484. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  485. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  486. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  487. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  488. package/min/synchronizers/with-schemas/index.js +1 -1
  489. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  490. package/min/ui-react/index.js +1 -1
  491. package/min/ui-react/index.js.gz +0 -0
  492. package/min/ui-react/with-schemas/index.js +1 -1
  493. package/min/ui-react/with-schemas/index.js.gz +0 -0
  494. package/min/with-schemas/index.js +1 -1
  495. package/min/with-schemas/index.js.gz +0 -0
  496. package/package.json +109 -5
  497. package/persisters/index.js +5 -5
  498. package/persisters/persister-automerge/index.js +5 -5
  499. package/persisters/persister-automerge/with-schemas/index.js +5 -5
  500. package/persisters/persister-browser/index.js +5 -5
  501. package/persisters/persister-browser/with-schemas/index.js +5 -5
  502. package/persisters/persister-cr-sqlite-wasm/index.js +11 -11
  503. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +11 -11
  504. package/persisters/persister-electric-sql/index.js +11 -11
  505. package/persisters/persister-electric-sql/with-schemas/index.js +11 -11
  506. package/persisters/persister-expo-sqlite/index.js +11 -11
  507. package/persisters/persister-expo-sqlite/with-schemas/index.js +11 -11
  508. package/persisters/persister-file/index.js +5 -5
  509. package/persisters/persister-file/with-schemas/index.js +5 -5
  510. package/persisters/persister-indexed-db/index.js +5 -5
  511. package/persisters/persister-indexed-db/with-schemas/index.js +5 -5
  512. package/persisters/persister-libsql/index.js +11 -11
  513. package/persisters/persister-libsql/with-schemas/index.js +11 -11
  514. package/persisters/persister-partykit-client/index.js +5 -5
  515. package/persisters/persister-partykit-client/with-schemas/index.js +5 -5
  516. package/persisters/persister-powersync/index.js +11 -11
  517. package/persisters/persister-powersync/with-schemas/index.js +11 -11
  518. package/persisters/persister-remote/index.js +5 -5
  519. package/persisters/persister-remote/with-schemas/index.js +5 -5
  520. package/persisters/persister-sqlite-wasm/index.js +11 -11
  521. package/persisters/persister-sqlite-wasm/with-schemas/index.js +11 -11
  522. package/persisters/persister-sqlite3/index.js +11 -11
  523. package/persisters/persister-sqlite3/with-schemas/index.js +11 -11
  524. package/persisters/persister-yjs/index.js +5 -5
  525. package/persisters/persister-yjs/with-schemas/index.js +5 -5
  526. package/persisters/with-schemas/index.js +5 -5
  527. package/readme.md +10 -10
  528. package/releases.md +8 -8
  529. package/synchronizers/index.js +49 -44
  530. package/synchronizers/synchronizer-broadcast-channel/index.js +498 -0
  531. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +498 -0
  532. package/synchronizers/synchronizer-local/index.js +53 -53
  533. package/synchronizers/synchronizer-local/with-schemas/index.js +53 -53
  534. package/synchronizers/synchronizer-ws-client/index.js +61 -62
  535. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +61 -62
  536. package/synchronizers/with-schemas/index.js +49 -44
  537. package/ui-react/index.js +139 -74
  538. package/ui-react/with-schemas/index.js +139 -74
  539. package/ui-react-inspector/index.js +5 -5
  540. package/ui-react-inspector/with-schemas/index.js +5 -5
  541. package/umd/es6/index.js +52 -43
  542. package/umd/es6/min/index.js +1 -1
  543. package/umd/es6/min/index.js.gz +0 -0
  544. package/umd/es6/min/metrics/index.js +1 -1
  545. package/umd/es6/min/metrics/index.js.gz +0 -0
  546. package/umd/es6/min/metrics/with-schemas/index.js +1 -1
  547. package/umd/es6/min/metrics/with-schemas/index.js.gz +0 -0
  548. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  549. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  550. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  551. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  552. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  553. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  554. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  555. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  556. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  557. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  558. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  559. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  560. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  561. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  562. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  563. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  564. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  565. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  566. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  567. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  568. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  569. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  570. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  571. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  572. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  573. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  574. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  575. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  576. package/umd/es6/min/queries/index.js +1 -1
  577. package/umd/es6/min/queries/index.js.gz +0 -0
  578. package/umd/es6/min/queries/with-schemas/index.js +1 -1
  579. package/umd/es6/min/queries/with-schemas/index.js.gz +0 -0
  580. package/umd/es6/min/synchronizers/index.js +1 -1
  581. package/umd/es6/min/synchronizers/index.js.gz +0 -0
  582. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  583. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  584. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  585. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  586. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  587. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  588. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  589. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  590. package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
  591. package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  592. package/umd/es6/min/ui-react/index.js +1 -1
  593. package/umd/es6/min/ui-react/index.js.gz +0 -0
  594. package/umd/es6/min/ui-react/with-schemas/index.js +1 -1
  595. package/umd/es6/min/ui-react/with-schemas/index.js.gz +0 -0
  596. package/umd/es6/min/with-schemas/index.js +1 -1
  597. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  598. package/umd/es6/persisters/index.js +5 -5
  599. package/umd/es6/persisters/persister-automerge/index.js +5 -5
  600. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +5 -5
  601. package/umd/es6/persisters/persister-browser/index.js +5 -5
  602. package/umd/es6/persisters/persister-browser/with-schemas/index.js +5 -5
  603. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +11 -11
  604. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +11 -11
  605. package/umd/es6/persisters/persister-electric-sql/index.js +11 -11
  606. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +11 -11
  607. package/umd/es6/persisters/persister-expo-sqlite/index.js +11 -11
  608. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +11 -11
  609. package/umd/es6/persisters/persister-file/index.js +5 -5
  610. package/umd/es6/persisters/persister-file/with-schemas/index.js +5 -5
  611. package/umd/es6/persisters/persister-indexed-db/index.js +5 -5
  612. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -5
  613. package/umd/es6/persisters/persister-libsql/index.js +11 -11
  614. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +11 -11
  615. package/umd/es6/persisters/persister-partykit-client/index.js +5 -5
  616. package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +5 -5
  617. package/umd/es6/persisters/persister-powersync/index.js +11 -11
  618. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +11 -11
  619. package/umd/es6/persisters/persister-remote/index.js +5 -5
  620. package/umd/es6/persisters/persister-remote/with-schemas/index.js +5 -5
  621. package/umd/es6/persisters/persister-sqlite-wasm/index.js +11 -11
  622. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +11 -11
  623. package/umd/es6/persisters/persister-sqlite3/index.js +11 -11
  624. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +11 -11
  625. package/umd/es6/persisters/persister-yjs/index.js +5 -5
  626. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +5 -5
  627. package/umd/es6/persisters/with-schemas/index.js +5 -5
  628. package/umd/es6/synchronizers/index.js +52 -43
  629. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +654 -0
  630. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +654 -0
  631. package/umd/es6/synchronizers/synchronizer-local/index.js +56 -48
  632. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +56 -48
  633. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +64 -62
  634. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +64 -62
  635. package/umd/es6/synchronizers/with-schemas/index.js +52 -43
  636. package/umd/es6/ui-react/index.js +135 -72
  637. package/umd/es6/ui-react/with-schemas/index.js +135 -72
  638. package/umd/es6/ui-react-inspector/index.js +5 -5
  639. package/umd/es6/ui-react-inspector/with-schemas/index.js +5 -5
  640. package/umd/es6/with-schemas/index.js +52 -43
  641. package/umd/index.js +52 -47
  642. package/umd/min/index.js +1 -1
  643. package/umd/min/index.js.gz +0 -0
  644. package/umd/min/metrics/index.js +1 -1
  645. package/umd/min/metrics/index.js.gz +0 -0
  646. package/umd/min/metrics/with-schemas/index.js +1 -1
  647. package/umd/min/metrics/with-schemas/index.js.gz +0 -0
  648. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  649. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  650. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  651. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  652. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  653. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  654. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  655. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  656. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  657. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  658. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  659. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  660. package/umd/min/persisters/persister-libsql/index.js +1 -1
  661. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  662. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  663. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  664. package/umd/min/persisters/persister-powersync/index.js +1 -1
  665. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  666. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  667. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  668. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  669. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  670. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  671. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  672. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  673. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  674. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  675. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  676. package/umd/min/queries/index.js +1 -1
  677. package/umd/min/queries/index.js.gz +0 -0
  678. package/umd/min/queries/with-schemas/index.js +1 -1
  679. package/umd/min/queries/with-schemas/index.js.gz +0 -0
  680. package/umd/min/synchronizers/index.js +1 -1
  681. package/umd/min/synchronizers/index.js.gz +0 -0
  682. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  683. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  684. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  685. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  686. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  687. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  688. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  689. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  690. package/umd/min/synchronizers/with-schemas/index.js +1 -1
  691. package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
  692. package/umd/min/ui-react/index.js +1 -1
  693. package/umd/min/ui-react/index.js.gz +0 -0
  694. package/umd/min/ui-react/with-schemas/index.js +1 -1
  695. package/umd/min/ui-react/with-schemas/index.js.gz +0 -0
  696. package/umd/min/with-schemas/index.js +1 -1
  697. package/umd/min/with-schemas/index.js.gz +0 -0
  698. package/umd/persisters/index.js +5 -5
  699. package/umd/persisters/persister-automerge/index.js +5 -5
  700. package/umd/persisters/persister-automerge/with-schemas/index.js +5 -5
  701. package/umd/persisters/persister-browser/index.js +5 -5
  702. package/umd/persisters/persister-browser/with-schemas/index.js +5 -5
  703. package/umd/persisters/persister-cr-sqlite-wasm/index.js +11 -11
  704. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +11 -11
  705. package/umd/persisters/persister-electric-sql/index.js +11 -11
  706. package/umd/persisters/persister-electric-sql/with-schemas/index.js +11 -11
  707. package/umd/persisters/persister-expo-sqlite/index.js +11 -11
  708. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +11 -11
  709. package/umd/persisters/persister-file/index.js +5 -5
  710. package/umd/persisters/persister-file/with-schemas/index.js +5 -5
  711. package/umd/persisters/persister-indexed-db/index.js +5 -5
  712. package/umd/persisters/persister-indexed-db/with-schemas/index.js +5 -5
  713. package/umd/persisters/persister-libsql/index.js +11 -11
  714. package/umd/persisters/persister-libsql/with-schemas/index.js +11 -11
  715. package/umd/persisters/persister-partykit-client/index.js +5 -5
  716. package/umd/persisters/persister-partykit-client/with-schemas/index.js +5 -5
  717. package/umd/persisters/persister-powersync/index.js +11 -11
  718. package/umd/persisters/persister-powersync/with-schemas/index.js +11 -11
  719. package/umd/persisters/persister-remote/index.js +5 -5
  720. package/umd/persisters/persister-remote/with-schemas/index.js +5 -5
  721. package/umd/persisters/persister-sqlite-wasm/index.js +11 -11
  722. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +11 -11
  723. package/umd/persisters/persister-sqlite3/index.js +11 -11
  724. package/umd/persisters/persister-sqlite3/with-schemas/index.js +11 -11
  725. package/umd/persisters/persister-yjs/index.js +5 -5
  726. package/umd/persisters/persister-yjs/with-schemas/index.js +5 -5
  727. package/umd/persisters/with-schemas/index.js +5 -5
  728. package/umd/synchronizers/index.js +52 -47
  729. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +516 -0
  730. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +516 -0
  731. package/umd/synchronizers/synchronizer-local/index.js +56 -57
  732. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +56 -57
  733. package/umd/synchronizers/synchronizer-ws-client/index.js +64 -66
  734. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +64 -66
  735. package/umd/synchronizers/with-schemas/index.js +52 -47
  736. package/umd/ui-react/index.js +140 -71
  737. package/umd/ui-react/with-schemas/index.js +140 -71
  738. package/umd/ui-react-inspector/index.js +5 -5
  739. package/umd/ui-react-inspector/with-schemas/index.js +5 -5
  740. package/umd/with-schemas/index.js +52 -47
  741. package/with-schemas/index.js +49 -43
@@ -1,7 +1,7 @@
1
1
  /**
2
- * The persister-sync module of the TinyBase project lets you synchronize
2
+ * The synchronizers module of the TinyBase project lets you synchronize
3
3
  * MergeableStore data to and from other MergeableStore instances.
4
- * @see Synchronizing Data guide
4
+ * @see Synchronization guide
5
5
  * @packageDocumentation
6
6
  * @module synchronizers
7
7
  * @since v5.0.0
@@ -13,67 +13,368 @@ import type {Content} from '../store/index.d.cts';
13
13
  import type {MergeableStore} from '../mergeable-store/index.d.cts';
14
14
 
15
15
  /**
16
- * The MessageType type.
16
+ * The Message enum is used to indicate the type of the message being passed
17
+ * between Synchronizer instances.
18
+ *
19
+ * These message comprise the basic synchronization protocol for merging
20
+ * MergeableStore instances across multiple systems.
21
+ *
22
+ * The enum is generally intended to be used internally within TinyBase itself
23
+ * and opaque to applications that use synchronization.
17
24
  * @category Synchronization
25
+ * @since v5.0.0
18
26
  */
19
- export type MessageType = number;
27
+ export const enum Message {
28
+ /**
29
+ * A message that is a response to a previous request.
30
+ * @category Enum
31
+ * @since v5.0.0
32
+ */
33
+ Response = 0,
34
+ /**
35
+ * A message that is a request to get ContentHashes from another
36
+ * MergeableStore.
37
+ * @category Enum
38
+ * @since v5.0.0
39
+ */
40
+ GetContentHashes = 1,
41
+ /**
42
+ * A message that contains ContentHashes.
43
+ * @category Enum
44
+ * @since v5.0.0
45
+ */
46
+ ContentHashes = 2,
47
+ /**
48
+ * A message that contains a ContentDiff.
49
+ * @category Enum
50
+ * @since v5.0.0
51
+ */
52
+ ContentDiff = 3,
53
+ /**
54
+ * A message that is a request to get a TableDiff from another MergeableStore.
55
+ * @category Enum
56
+ * @since v5.0.0
57
+ */
58
+ GetTableDiff = 4,
59
+ /**
60
+ * A message that is a request to get a RowDiff from another MergeableStore.
61
+ * @category Enum
62
+ * @since v5.0.0
63
+ */
64
+ GetRowDiff = 5,
65
+ /**
66
+ * A message that is a request to get a CellDiff from another MergeableStore.
67
+ * @category Enum
68
+ * @since v5.0.0
69
+ */
70
+ GetCellDiff = 6,
71
+ /**
72
+ * A message that is a request to get a ValueDiff from another MergeableStore.
73
+ * @category Enum
74
+ * @since v5.0.0
75
+ */
76
+ GetValueDiff = 7,
77
+ }
20
78
 
21
79
  /**
22
- * The Receive type.
80
+ * The Receive type describes a function that knows how to handle the arrival of
81
+ * a message as part of the synchronization protocol.
82
+ *
83
+ * When a message arrives (most likely from another system), the function will
84
+ * be called with parameters that indicate where the message came from, and its
85
+ * meaning and content.
86
+ * @param fromClientId The Id of the other client (in other words, the other
87
+ * system) that sent the message.
88
+ * @param requestId The optional Id of the message, which should be returned in
89
+ * the response (if requested) to constitute a matched request/response
90
+ * transaction.
91
+ * @param message A number that indicates the type of the message, according to
92
+ * the Message enum.
93
+ * @param body A message-specific payload.
23
94
  * @category Synchronization
95
+ * @since v5.0.0
24
96
  */
25
97
  export type Receive = (
26
98
  fromClientId: Id,
27
99
  requestId: IdOrNull,
28
- messageType: MessageType,
29
- messageBody: any,
100
+ message: Message,
101
+ body: any,
30
102
  ) => void;
31
103
 
32
104
  /**
33
- * The Send type.
105
+ * The Send type describes a function that knows how to dispatch a message as
106
+ * part of the synchronization protocol.
107
+ * @param toClientId The optional Id of the other client (in other words, the
108
+ * other system) to which the message should be sent. If omitted, this is to be
109
+ * a broadcast.
110
+ * @param requestId The optional Id of the message, which should be awaited in
111
+ * the response (if requested) to constitute a matched request/response
112
+ * transaction.
113
+ * @param message A number that indicates the type of the message, according to
114
+ * the Message enum.
115
+ * @param body A message-specific payload.
34
116
  * @category Synchronization
117
+ * @since v5.0.0
35
118
  */
36
119
  export type Send = (
37
120
  toClientId: IdOrNull,
38
121
  requestId: IdOrNull,
39
- messageType: MessageType,
40
- messageBody: any,
122
+ message: Message,
123
+ body: any,
41
124
  ) => void;
42
125
 
43
126
  /**
44
- * The SynchronizerStats type.
127
+ * The SynchronizerStats type describes the number of times a Synchronizer
128
+ * object has sent or received data.
129
+ *
130
+ * A SynchronizerStats object is returned from the getSynchronizerStats method.
45
131
  * @category Development
132
+ * @since v5.0.0
46
133
  */
47
134
  export type SynchronizerStats = {
135
+ /**
136
+ * The number of times messages have been sent.
137
+ * @category Stat
138
+ * @since v5.0.0
139
+ */
48
140
  sends: number;
141
+ /**
142
+ * The number of times messages has been received.
143
+ * @category Stat
144
+ * @since v5.0.0
145
+ */
49
146
  receives: number;
50
147
  };
51
148
 
52
149
  /**
53
- * The Synchronizer interface is a minor extension to the Persister interface.
150
+ * A Synchronizer object lets you synchronize MergeableStore data with another
151
+ * TinyBase client or system.
152
+ *
153
+ * This is useful for sharing data between users, or between devices of a single
154
+ * user. This is especially valuable when there is the possibility that there
155
+ * has been a lack of immediate connectivity between clients and the
156
+ * synchronization requires some negotiation to orchestrate merging the
157
+ * MergeableStore objects together.
54
158
  *
55
- * It provides extra convenience methods for starting and stopping the
56
- * synchronization.
159
+ * Creating a Synchronizer depends on the choice of underlying medium over which
160
+ * the synchronization will take place. Options include the createWsSynchronizer
161
+ * function (for a Synchronizer that will sync over web-sockets), and the
162
+ * createLocalSynchronizer function (for a Synchronizer that will sync two
163
+ * MergeableStore objects in memory on one system). The createCustomSynchronizer
164
+ * function can also be used to easily create a fully customized way to send and
165
+ * receive the messages of the synchronization protocol.
166
+ *
167
+ * Note that, as an interface, it is an extension to the Persister interface,
168
+ * since they share underlying implementations. Think of a Synchronizer as
169
+ * 'persisting' your MergeableStore to another client (and vice-versa).
170
+ * @example
171
+ * This example creates two empty MergeableStore objects, creates a
172
+ * LocalSynchronizer for each, and starts synchronizing them. A change in one
173
+ * becomes evident in the other.
57
174
  *
58
- * You should use the createCustomSynchronizer function to create a Synchronizer
59
- * object.
175
+ * ```js
176
+ * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
177
+ * import {createMergeableStore} from 'tinybase';
178
+ *
179
+ * const store1 = createMergeableStore();
180
+ * const store2 = createMergeableStore();
181
+ *
182
+ * const synchronizer1 = createLocalSynchronizer(store1);
183
+ * const synchronizer2 = createLocalSynchronizer(store2);
184
+ *
185
+ * await synchronizer1.startSync();
186
+ * await synchronizer2.startSync();
187
+ *
188
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
189
+ * // ...
190
+ * console.log(store2.getTables());
191
+ * // -> {pets: {fido: {species: 'dog'}}}
192
+ *
193
+ * store2.setRow('pets', 'felix', {species: 'cat'});
194
+ * // ...
195
+ * console.log(store1.getTables());
196
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
197
+ *
198
+ * synchronizer1.destroy();
199
+ * synchronizer2.destroy();
200
+ * ```
60
201
  * @category Synchronizer
61
202
  * @since v5.0.0
62
203
  */
63
204
  export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
64
205
  /**
65
- * The startSync method.
206
+ * The startSync method is used to start the process of synchronization
207
+ * between this instance and another matching Synchronizer.
208
+ *
209
+ * The underlying implementation of a Synchronizer is shared with the
210
+ * Persister framework, and so this startSync method is equivalent to starting
211
+ * both auto-loading (listening to sync messages from other active
212
+ * Synchronizer instances) and auto-saving (sending sync messages to it).
213
+ *
214
+ * This method is asynchronous so you should you `await` calls to this method
215
+ * or handle the return type natively as a Promise.
216
+ * @param initialContent An optional Content object used when no content is
217
+ * available from another other peer Synchronizer instances.
218
+ * @returns A Promise containing a reference to the Synchronizer object.
219
+ * @example
220
+ * This example creates two empty MergeableStore objects, creates a
221
+ * LocalSynchronizer for each, and starts synchronizing them. A change in one
222
+ * becomes evident in the other.
223
+ *
224
+ * ```js
225
+ * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
226
+ * import {createMergeableStore} from 'tinybase';
227
+ *
228
+ * const store1 = createMergeableStore();
229
+ * const store2 = createMergeableStore();
230
+ *
231
+ * const synchronizer1 = createLocalSynchronizer(store1);
232
+ * const synchronizer2 = createLocalSynchronizer(store2);
233
+ *
234
+ * await synchronizer1.startSync();
235
+ * await synchronizer2.startSync();
236
+ *
237
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
238
+ * // ...
239
+ * console.log(store2.getTables());
240
+ * // -> {pets: {fido: {species: 'dog'}}}
241
+ *
242
+ * store2.setRow('pets', 'felix', {species: 'cat'});
243
+ * // ...
244
+ * console.log(store1.getTables());
245
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
246
+ *
247
+ * synchronizer1.destroy();
248
+ * synchronizer2.destroy();
249
+ * ```
250
+ * @example
251
+ * This example creates two empty MergeableStore objects, creates a
252
+ * LocalSynchronizer for each, and starts synchronizing them with default
253
+ * content. The default content from the first Synchronizer's startSync method
254
+ * ends up populated in both MergeableStore instances: by the time the second
255
+ * started, the first was available to synchronize with and its default was
256
+ * not needed.
257
+ *
258
+ * ```js
259
+ * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
260
+ * import {createMergeableStore} from 'tinybase';
261
+ *
262
+ * const store1 = createMergeableStore();
263
+ * const store2 = createMergeableStore();
264
+ *
265
+ * const synchronizer1 = createLocalSynchronizer(store1);
266
+ * const synchronizer2 = createLocalSynchronizer(store2);
267
+ *
268
+ * await synchronizer1.startSync([{pets: {fido: {species: 'dog'}}}, {}]);
269
+ * await synchronizer2.startSync([{pets: {felix: {species: 'cat'}}}, {}]);
270
+ *
271
+ * // ...
272
+ *
273
+ * console.log(store1.getTables());
274
+ * // -> {pets: {fido: {species: 'dog'}}}
275
+ * console.log(store2.getTables());
276
+ * // -> {pets: {fido: {species: 'dog'}}}
277
+ *
278
+ * synchronizer1.destroy();
279
+ * synchronizer2.destroy();
280
+ * ```
66
281
  * @category Synchronization
282
+ * @since v5.0.0
67
283
  */
68
284
  startSync(initialContent?: Content): Promise<this>;
69
285
  /**
70
- * The stopSync method.
286
+ * The stopSync method is used to stop the process of synchronization between
287
+ * this instance and another matching Synchronizer.
288
+ *
289
+ * The underlying implementation of a Synchronizer is shared with the
290
+ * Persister framework, and so this startSync method is equivalent to stopping
291
+ * both auto-loading (listening to sync messages from other active
292
+ * Synchronizer instances) and auto-saving (sending sync messages to them).
293
+ * @returns A reference to the Synchronizer object.
294
+ * @example
295
+ * This example creates two empty MergeableStore objects, creates a
296
+ * LocalSynchronizer for each, and starts - then stops - synchronizing them.
297
+ * Subsequent changes are not merged.
298
+ *
299
+ * ```js
300
+ * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
301
+ * import {createMergeableStore} from 'tinybase';
302
+ *
303
+ * const store1 = createMergeableStore();
304
+ * const synchronizer1 = createLocalSynchronizer(store1);
305
+ * await synchronizer1.startSync();
306
+ *
307
+ * const store2 = createMergeableStore();
308
+ * const synchronizer2 = createLocalSynchronizer(store2);
309
+ * await synchronizer2.startSync();
310
+ *
311
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
312
+ * // ...
313
+ * console.log(store1.getTables());
314
+ * // -> {pets: {fido: {species: 'dog'}}}
315
+ * console.log(store2.getTables());
316
+ * // -> {pets: {fido: {species: 'dog'}}}
317
+ *
318
+ * synchronizer1.stopSync();
319
+ * synchronizer2.stopSync();
320
+ *
321
+ * store1.setCell('pets', 'fido', 'color', 'brown');
322
+ * // ...
323
+ * console.log(store1.getTables());
324
+ * // -> {pets: {fido: {species: 'dog', color: 'brown'}}}
325
+ * console.log(store2.getTables());
326
+ * // -> {pets: {fido: {species: 'dog'}}}
327
+ *
328
+ * synchronizer1.destroy();
329
+ * synchronizer2.destroy();
330
+ * ```
71
331
  * @category Synchronization
332
+ * @since v5.0.0
72
333
  */
73
334
  stopSync(): this;
74
335
  /**
75
- * The getSynchronizerStats method.
336
+ * The getSynchronizerStats method provides a set of statistics about the
337
+ * Synchronizer, and is used for debugging purposes.
338
+ *
339
+ * The SynchronizerStats object contains a count of the number of times the
340
+ * Persister has sent and received messages.
341
+ *
342
+ * The method is intended to be used during development to ensure your
343
+ * synchronization layer is acting as expected, for example.
344
+ * @returns A SynchronizerStats object containing Synchronizer send and
345
+ * receive statistics.
346
+ * @example
347
+ * This example gets the send and receive statistics of two active
348
+ * Synchronizer instances.
349
+ *
350
+ * ```js
351
+ * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
352
+ * import {createMergeableStore} from 'tinybase';
353
+ *
354
+ * const store1 = createMergeableStore();
355
+ * const store2 = createMergeableStore();
356
+ *
357
+ * const synchronizer1 = createLocalSynchronizer(store1);
358
+ * const synchronizer2 = createLocalSynchronizer(store2);
359
+ *
360
+ * await synchronizer1.startSync();
361
+ * await synchronizer2.startSync();
362
+ *
363
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
364
+ * // ...
365
+ * store2.setRow('pets', 'felix', {species: 'cat'});
366
+ * // ...
367
+ *
368
+ * console.log(synchronizer1.getSynchronizerStats());
369
+ * // -> {receives: 4, sends: 5}
370
+ * console.log(synchronizer2.getSynchronizerStats());
371
+ * // -> {receives: 5, sends: 4}
372
+ *
373
+ * synchronizer1.destroy();
374
+ * synchronizer2.destroy();
375
+ * ```
76
376
  * @category Synchronization
377
+ * @since v5.0.0
77
378
  */
78
379
  getSynchronizerStats(): SynchronizerStats;
79
380
  }
@@ -84,55 +385,88 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
84
385
  *
85
386
  * As well as providing a reference to the MergeableStore to synchronize, you
86
387
  * must provide parameters which identify how to send and receive changes to and
87
- * from this MergeableStore and its peers.
388
+ * from this MergeableStore and its peers. This is entirely dependent upon the
389
+ * medium of communication used.
88
390
  * @param store The MergeableStore to synchronize.
89
391
  * @param send A Send function for sending a message.
90
- * @param onReceive A callback to register a Receive function for receiving a
91
- * message.
392
+ * @param registerReceive A callback (called once when the Synchronizer is
393
+ * created) that is passed a Receive function that you need to ensure will
394
+ * receive messages addressed or broadcast to this client.
92
395
  * @param destroy A function called when destroying the Persister which can be
93
396
  * used to clean up underlying resources.
94
397
  * @param requestTimeoutSeconds An number of seconds before a request sent from
95
398
  * this Persister to another peer times out.
96
399
  * @param onIgnoredError An optional handler for the errors that the
97
- * Synchronizer would otherwise ignore when trying to save or load data. This is
400
+ * Synchronizer would otherwise ignore when trying to synchronize data. This is
98
401
  * suitable for debugging synchronization issues in a development environment.
99
402
  * @returns A reference to the new Synchronizer object.
100
403
  * @example
101
- * This example creates a Synchronizer object and synchronizes one
102
- * MergeableStore to another.
404
+ * This example creates a function for creating custom Synchronizer objects via
405
+ * a very naive pair of message buses (which are first-in, first-out). Each
406
+ * Synchronizer can write to the other's bus, and they each poll to read from
407
+ * their own. The example then uses these Synchronizer instances to sync two
408
+ * MergeableStore objects together
103
409
  *
104
410
  * ```js
105
- * import {createLocalSynchronizer} from 'tinybase/synchronizers/synchronizer-local';
106
- * import {createMergeableStore} from 'tinybase';
411
+ * import {
412
+ * createCustomSynchronizer,
413
+ * createMergeableStore,
414
+ * getUniqueId,
415
+ * } from 'tinybase';
107
416
  *
108
- * const store1 = createMergeableStore('store1').setTables({
109
- * pets: {fido: {species: 'dog'}},
110
- * });
111
- * const synchronizer1 = createLocalSynchronizer(store1);
417
+ * const bus1 = [];
418
+ * const bus2 = [];
112
419
  *
113
- * const store2 = createMergeableStore('store2');
114
- * const synchronizer2 = createLocalSynchronizer(store2);
420
+ * const createBusSynchronizer = (store, localBus, remoteBus) => {
421
+ * let timer;
422
+ * const clientId = getUniqueId();
423
+ * return createCustomSynchronizer(
424
+ * store,
425
+ * (toClientId, requestId, message, body) => {
426
+ * // send
427
+ * remoteBus.push([clientId, requestId, message, body]);
428
+ * },
429
+ * (receive) => {
430
+ * // registerReceive
431
+ * timer = setInterval(() => {
432
+ * if (localBus.length > 0) {
433
+ * receive(...localBus.shift());
434
+ * }
435
+ * }, 1);
436
+ * },
437
+ * () => clearInterval(timer), // destroy
438
+ * 1,
439
+ * );
440
+ * };
441
+ *
442
+ * const store1 = createMergeableStore();
443
+ * const store2 = createMergeableStore();
444
+ *
445
+ * const synchronizer1 = createBusSynchronizer(store1, bus1, bus2);
446
+ * const synchronizer2 = createBusSynchronizer(store2, bus2, bus1);
447
+ *
448
+ * await synchronizer1.startSync();
115
449
  * await synchronizer2.startSync();
116
450
  *
117
- * await synchronizer1.save();
118
- * // ...
119
- * // Store2 will be synced with Store1.
451
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
452
+ * store2.setTables({pets: {felix: {species: 'cat'}}});
120
453
  *
454
+ * // ...
455
+ * console.log(store1.getTables());
456
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
121
457
  * console.log(store2.getTables());
122
- * // -> {pets: {fido: {species: 'dog'}}}
123
- *
124
- * await synchronizer1.load();
125
- * // Store1 will be synced with Store2.
458
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
126
459
  *
127
460
  * synchronizer1.destroy();
128
461
  * synchronizer2.destroy();
129
462
  * ```
130
463
  * @category Creation
464
+ * @since v5.0.0
131
465
  */
132
466
  export function createCustomSynchronizer(
133
467
  store: MergeableStore,
134
468
  send: Send,
135
- onReceive: (receive: Receive) => void,
469
+ registerReceive: (receive: Receive) => void,
136
470
  destroy: () => void,
137
471
  requestTimeoutSeconds: number,
138
472
  onIgnoredError?: (error: any) => void,