tinybase 5.0.4 → 5.1.0-beta.1

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 (843) hide show
  1. package/@types/persisters/index.d.cts +3 -1
  2. package/@types/persisters/index.d.ts +3 -1
  3. package/@types/persisters/with-schemas/index.d.cts +3 -1
  4. package/@types/persisters/with-schemas/index.d.ts +3 -1
  5. package/@types/synchronizers/index.d.cts +39 -23
  6. package/@types/synchronizers/index.d.ts +39 -23
  7. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +12 -1
  8. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +12 -1
  9. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +14 -1
  10. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +14 -1
  11. package/@types/synchronizers/synchronizer-local/index.d.cts +12 -3
  12. package/@types/synchronizers/synchronizer-local/index.d.ts +12 -3
  13. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +14 -3
  14. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +14 -3
  15. package/@types/synchronizers/synchronizer-ws-client/index.d.cts +13 -1
  16. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +13 -1
  17. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +15 -1
  18. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +15 -1
  19. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +125 -2
  20. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +125 -2
  21. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +147 -3
  22. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +147 -3
  23. package/@types/synchronizers/with-schemas/index.d.cts +41 -23
  24. package/@types/synchronizers/with-schemas/index.d.ts +41 -23
  25. package/cjs/es6/index.cjs +101 -86
  26. package/cjs/es6/min/index.cjs +1 -1
  27. package/cjs/es6/min/index.cjs.gz +0 -0
  28. package/cjs/es6/min/persisters/index.cjs +1 -1
  29. package/cjs/es6/min/persisters/index.cjs.gz +0 -0
  30. package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
  31. package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
  32. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  33. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  34. package/cjs/es6/min/persisters/persister-browser/index.cjs +1 -1
  35. package/cjs/es6/min/persisters/persister-browser/index.cjs.gz +0 -0
  36. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
  37. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  38. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  39. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  40. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  41. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  42. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  43. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  44. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  45. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  46. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  47. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  48. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  49. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  50. package/cjs/es6/min/persisters/persister-file/index.cjs +1 -1
  51. package/cjs/es6/min/persisters/persister-file/index.cjs.gz +0 -0
  52. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs +1 -1
  53. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  54. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs +1 -1
  55. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  56. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
  57. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  58. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  59. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  60. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  61. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  62. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs +1 -1
  63. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  64. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
  65. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  66. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  67. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  68. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  69. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  70. package/cjs/es6/min/persisters/persister-remote/index.cjs +1 -1
  71. package/cjs/es6/min/persisters/persister-remote/index.cjs.gz +0 -0
  72. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
  73. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  74. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  75. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  76. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  77. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  78. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  79. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  80. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  81. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  82. package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -1
  83. package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
  84. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  85. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  86. package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
  87. package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
  88. package/cjs/es6/min/synchronizers/index.cjs +1 -1
  89. package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
  90. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
  91. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  92. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
  93. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  94. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -1
  95. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  96. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  97. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  98. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  99. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  100. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  101. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  102. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  103. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  104. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  105. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  106. package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
  107. package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  108. package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
  109. package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
  110. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  111. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  112. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  113. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  114. package/cjs/es6/persisters/index.cjs +30 -21
  115. package/cjs/es6/persisters/persister-automerge/index.cjs +29 -24
  116. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +29 -24
  117. package/cjs/es6/persisters/persister-browser/index.cjs +35 -30
  118. package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +35 -30
  119. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +29 -24
  120. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +29 -24
  121. package/cjs/es6/persisters/persister-electric-sql/index.cjs +29 -24
  122. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +29 -24
  123. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +29 -24
  124. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +29 -24
  125. package/cjs/es6/persisters/persister-file/index.cjs +41 -31
  126. package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +41 -31
  127. package/cjs/es6/persisters/persister-indexed-db/index.cjs +29 -24
  128. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +29 -24
  129. package/cjs/es6/persisters/persister-libsql/index.cjs +286 -281
  130. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +286 -281
  131. package/cjs/es6/persisters/persister-partykit-client/index.cjs +29 -24
  132. package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +29 -24
  133. package/cjs/es6/persisters/persister-powersync/index.cjs +29 -24
  134. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +29 -24
  135. package/cjs/es6/persisters/persister-remote/index.cjs +35 -30
  136. package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +35 -30
  137. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +29 -24
  138. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +29 -24
  139. package/cjs/es6/persisters/persister-sqlite3/index.cjs +29 -24
  140. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +29 -24
  141. package/cjs/es6/persisters/persister-yjs/index.cjs +29 -24
  142. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +29 -24
  143. package/cjs/es6/persisters/with-schemas/index.cjs +30 -21
  144. package/cjs/es6/synchronizers/index.cjs +113 -102
  145. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +109 -104
  146. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +109 -104
  147. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +108 -105
  148. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +108 -105
  149. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +130 -119
  150. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +130 -119
  151. package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +691 -35
  152. package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +691 -35
  153. package/cjs/es6/synchronizers/with-schemas/index.cjs +113 -102
  154. package/cjs/es6/ui-react-inspector/index.cjs +26 -24
  155. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +26 -24
  156. package/cjs/es6/with-schemas/index.cjs +101 -86
  157. package/cjs/index.cjs +105 -91
  158. package/cjs/indexes/index.cjs +1 -1
  159. package/cjs/indexes/with-schemas/index.cjs +1 -1
  160. package/cjs/metrics/index.cjs +3 -3
  161. package/cjs/metrics/with-schemas/index.cjs +3 -3
  162. package/cjs/min/index.cjs +1 -1
  163. package/cjs/min/index.cjs.gz +0 -0
  164. package/cjs/min/persisters/index.cjs +1 -1
  165. package/cjs/min/persisters/index.cjs.gz +0 -0
  166. package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
  167. package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
  168. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  169. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  170. package/cjs/min/persisters/persister-browser/index.cjs +1 -1
  171. package/cjs/min/persisters/persister-browser/index.cjs.gz +0 -0
  172. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
  173. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  174. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  175. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  176. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  177. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  178. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  179. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  180. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  181. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  182. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  183. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  184. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  185. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  186. package/cjs/min/persisters/persister-file/index.cjs +1 -1
  187. package/cjs/min/persisters/persister-file/index.cjs.gz +0 -0
  188. package/cjs/min/persisters/persister-file/with-schemas/index.cjs +1 -1
  189. package/cjs/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  190. package/cjs/min/persisters/persister-indexed-db/index.cjs +1 -1
  191. package/cjs/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  192. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
  193. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  194. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  195. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  196. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  197. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  198. package/cjs/min/persisters/persister-partykit-client/index.cjs +1 -1
  199. package/cjs/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  200. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
  201. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  202. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  203. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  204. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  205. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  206. package/cjs/min/persisters/persister-remote/index.cjs +1 -1
  207. package/cjs/min/persisters/persister-remote/index.cjs.gz +0 -0
  208. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
  209. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  210. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  211. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  212. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  213. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  214. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  215. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  216. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  217. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  218. package/cjs/min/persisters/persister-yjs/index.cjs +1 -1
  219. package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
  220. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  221. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  222. package/cjs/min/persisters/with-schemas/index.cjs +1 -1
  223. package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
  224. package/cjs/min/synchronizers/index.cjs +1 -1
  225. package/cjs/min/synchronizers/index.cjs.gz +0 -0
  226. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
  227. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  228. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
  229. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  230. package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -1
  231. package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  232. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  233. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  234. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  235. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  236. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  237. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  238. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  239. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  240. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  241. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  242. package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
  243. package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  244. package/cjs/min/ui-react-inspector/index.cjs +1 -1
  245. package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
  246. package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  247. package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  248. package/cjs/min/with-schemas/index.cjs +1 -1
  249. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  250. package/cjs/persisters/index.cjs +28 -19
  251. package/cjs/persisters/persister-automerge/index.cjs +27 -22
  252. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +27 -22
  253. package/cjs/persisters/persister-browser/index.cjs +33 -28
  254. package/cjs/persisters/persister-browser/with-schemas/index.cjs +33 -28
  255. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +28 -23
  256. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +28 -23
  257. package/cjs/persisters/persister-electric-sql/index.cjs +28 -23
  258. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +28 -23
  259. package/cjs/persisters/persister-expo-sqlite/index.cjs +28 -23
  260. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +28 -23
  261. package/cjs/persisters/persister-file/index.cjs +39 -29
  262. package/cjs/persisters/persister-file/with-schemas/index.cjs +39 -29
  263. package/cjs/persisters/persister-indexed-db/index.cjs +27 -22
  264. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +27 -22
  265. package/cjs/persisters/persister-libsql/index.cjs +194 -189
  266. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +194 -189
  267. package/cjs/persisters/persister-partykit-client/index.cjs +27 -22
  268. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +27 -22
  269. package/cjs/persisters/persister-powersync/index.cjs +28 -23
  270. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +28 -23
  271. package/cjs/persisters/persister-remote/index.cjs +33 -28
  272. package/cjs/persisters/persister-remote/with-schemas/index.cjs +33 -28
  273. package/cjs/persisters/persister-sqlite-wasm/index.cjs +28 -23
  274. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +28 -23
  275. package/cjs/persisters/persister-sqlite3/index.cjs +28 -23
  276. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +28 -23
  277. package/cjs/persisters/persister-yjs/index.cjs +29 -24
  278. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +29 -24
  279. package/cjs/persisters/with-schemas/index.cjs +28 -19
  280. package/cjs/queries/index.cjs +2 -2
  281. package/cjs/queries/with-schemas/index.cjs +2 -2
  282. package/cjs/relationships/index.cjs +1 -1
  283. package/cjs/relationships/with-schemas/index.cjs +1 -1
  284. package/cjs/synchronizers/index.cjs +105 -95
  285. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +101 -97
  286. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +101 -97
  287. package/cjs/synchronizers/synchronizer-local/index.cjs +100 -98
  288. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +100 -98
  289. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +119 -112
  290. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +119 -112
  291. package/cjs/synchronizers/synchronizer-ws-server/index.cjs +520 -20
  292. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +520 -20
  293. package/cjs/synchronizers/with-schemas/index.cjs +105 -95
  294. package/cjs/ui-react-inspector/index.cjs +24 -22
  295. package/cjs/ui-react-inspector/with-schemas/index.cjs +24 -22
  296. package/cjs/with-schemas/index.cjs +105 -91
  297. package/es6/index.js +101 -86
  298. package/es6/min/index.js +1 -1
  299. package/es6/min/index.js.gz +0 -0
  300. package/es6/min/persisters/index.js +1 -1
  301. package/es6/min/persisters/index.js.gz +0 -0
  302. package/es6/min/persisters/persister-automerge/index.js +1 -1
  303. package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  304. package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  305. package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  306. package/es6/min/persisters/persister-browser/index.js +1 -1
  307. package/es6/min/persisters/persister-browser/index.js.gz +0 -0
  308. package/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
  309. package/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  310. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  311. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  312. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  313. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  314. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  315. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  316. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  317. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  318. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  319. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  320. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  321. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  322. package/es6/min/persisters/persister-file/index.js +1 -1
  323. package/es6/min/persisters/persister-file/index.js.gz +0 -0
  324. package/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
  325. package/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  326. package/es6/min/persisters/persister-indexed-db/index.js +1 -1
  327. package/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  328. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  329. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  330. package/es6/min/persisters/persister-libsql/index.js +1 -1
  331. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  332. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  333. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  334. package/es6/min/persisters/persister-partykit-client/index.js +1 -1
  335. package/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  336. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  337. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  338. package/es6/min/persisters/persister-powersync/index.js +1 -1
  339. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  340. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  341. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  342. package/es6/min/persisters/persister-remote/index.js +1 -1
  343. package/es6/min/persisters/persister-remote/index.js.gz +0 -0
  344. package/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
  345. package/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  346. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  347. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  348. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  349. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  350. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  351. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  352. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  353. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  354. package/es6/min/persisters/persister-yjs/index.js +1 -1
  355. package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  356. package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  357. package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  358. package/es6/min/persisters/with-schemas/index.js +1 -1
  359. package/es6/min/persisters/with-schemas/index.js.gz +0 -0
  360. package/es6/min/synchronizers/index.js +1 -1
  361. package/es6/min/synchronizers/index.js.gz +0 -0
  362. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  363. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  364. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  365. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  366. package/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  367. package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  368. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  369. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  370. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  371. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  372. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  373. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  374. package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  375. package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  376. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  377. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  378. package/es6/min/synchronizers/with-schemas/index.js +1 -1
  379. package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  380. package/es6/min/ui-react-inspector/index.js +1 -1
  381. package/es6/min/ui-react-inspector/index.js.gz +0 -0
  382. package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  383. package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  384. package/es6/min/with-schemas/index.js +1 -1
  385. package/es6/min/with-schemas/index.js.gz +0 -0
  386. package/es6/persisters/index.js +30 -21
  387. package/es6/persisters/persister-automerge/index.js +29 -24
  388. package/es6/persisters/persister-automerge/with-schemas/index.js +29 -24
  389. package/es6/persisters/persister-browser/index.js +35 -30
  390. package/es6/persisters/persister-browser/with-schemas/index.js +35 -30
  391. package/es6/persisters/persister-cr-sqlite-wasm/index.js +29 -24
  392. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -24
  393. package/es6/persisters/persister-electric-sql/index.js +29 -24
  394. package/es6/persisters/persister-electric-sql/with-schemas/index.js +29 -24
  395. package/es6/persisters/persister-expo-sqlite/index.js +29 -24
  396. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +29 -24
  397. package/es6/persisters/persister-file/index.js +42 -31
  398. package/es6/persisters/persister-file/with-schemas/index.js +42 -31
  399. package/es6/persisters/persister-indexed-db/index.js +29 -24
  400. package/es6/persisters/persister-indexed-db/with-schemas/index.js +29 -24
  401. package/es6/persisters/persister-libsql/index.js +286 -281
  402. package/es6/persisters/persister-libsql/with-schemas/index.js +286 -281
  403. package/es6/persisters/persister-partykit-client/index.js +29 -24
  404. package/es6/persisters/persister-partykit-client/with-schemas/index.js +29 -24
  405. package/es6/persisters/persister-powersync/index.js +29 -24
  406. package/es6/persisters/persister-powersync/with-schemas/index.js +29 -24
  407. package/es6/persisters/persister-remote/index.js +35 -30
  408. package/es6/persisters/persister-remote/with-schemas/index.js +35 -30
  409. package/es6/persisters/persister-sqlite-wasm/index.js +29 -24
  410. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -24
  411. package/es6/persisters/persister-sqlite3/index.js +29 -24
  412. package/es6/persisters/persister-sqlite3/with-schemas/index.js +29 -24
  413. package/es6/persisters/persister-yjs/index.js +29 -24
  414. package/es6/persisters/persister-yjs/with-schemas/index.js +29 -24
  415. package/es6/persisters/with-schemas/index.js +30 -21
  416. package/es6/synchronizers/index.js +113 -102
  417. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +109 -104
  418. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +109 -104
  419. package/es6/synchronizers/synchronizer-local/index.js +108 -105
  420. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +108 -105
  421. package/es6/synchronizers/synchronizer-ws-client/index.js +130 -119
  422. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +130 -119
  423. package/es6/synchronizers/synchronizer-ws-server/index.js +691 -35
  424. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +691 -35
  425. package/es6/synchronizers/with-schemas/index.js +113 -102
  426. package/es6/ui-react-inspector/index.js +26 -24
  427. package/es6/ui-react-inspector/with-schemas/index.js +26 -24
  428. package/es6/with-schemas/index.js +101 -86
  429. package/index.js +105 -91
  430. package/indexes/index.js +1 -1
  431. package/indexes/with-schemas/index.js +1 -1
  432. package/metrics/index.js +3 -3
  433. package/metrics/with-schemas/index.js +3 -3
  434. package/min/index.js +1 -1
  435. package/min/index.js.gz +0 -0
  436. package/min/persisters/index.js +1 -1
  437. package/min/persisters/index.js.gz +0 -0
  438. package/min/persisters/persister-automerge/index.js +1 -1
  439. package/min/persisters/persister-automerge/index.js.gz +0 -0
  440. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  441. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  442. package/min/persisters/persister-browser/index.js +1 -1
  443. package/min/persisters/persister-browser/index.js.gz +0 -0
  444. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  445. package/min/persisters/persister-browser/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-file/index.js +1 -1
  459. package/min/persisters/persister-file/index.js.gz +0 -0
  460. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  461. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  462. package/min/persisters/persister-indexed-db/index.js +1 -1
  463. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  464. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  465. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  466. package/min/persisters/persister-libsql/index.js +1 -1
  467. package/min/persisters/persister-libsql/index.js.gz +0 -0
  468. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  469. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  470. package/min/persisters/persister-partykit-client/index.js +1 -1
  471. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  472. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  473. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  474. package/min/persisters/persister-powersync/index.js +1 -1
  475. package/min/persisters/persister-powersync/index.js.gz +0 -0
  476. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  477. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  478. package/min/persisters/persister-remote/index.js +1 -1
  479. package/min/persisters/persister-remote/index.js.gz +0 -0
  480. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  481. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  482. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  483. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  484. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  485. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  486. package/min/persisters/persister-sqlite3/index.js +1 -1
  487. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  488. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  489. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  490. package/min/persisters/persister-yjs/index.js +1 -1
  491. package/min/persisters/persister-yjs/index.js.gz +0 -0
  492. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  493. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  494. package/min/persisters/with-schemas/index.js +1 -1
  495. package/min/persisters/with-schemas/index.js.gz +0 -0
  496. package/min/synchronizers/index.js +1 -1
  497. package/min/synchronizers/index.js.gz +0 -0
  498. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  499. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  500. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  501. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  502. package/min/synchronizers/synchronizer-local/index.js +1 -1
  503. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  504. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  505. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  506. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  507. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  508. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  509. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  510. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  511. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  512. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  513. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  514. package/min/synchronizers/with-schemas/index.js +1 -1
  515. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  516. package/min/ui-react-inspector/index.js +1 -1
  517. package/min/ui-react-inspector/index.js.gz +0 -0
  518. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  519. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  520. package/min/with-schemas/index.js +1 -1
  521. package/min/with-schemas/index.js.gz +0 -0
  522. package/package.json +1 -1
  523. package/persisters/index.js +28 -19
  524. package/persisters/persister-automerge/index.js +27 -22
  525. package/persisters/persister-automerge/with-schemas/index.js +27 -22
  526. package/persisters/persister-browser/index.js +33 -28
  527. package/persisters/persister-browser/with-schemas/index.js +33 -28
  528. package/persisters/persister-cr-sqlite-wasm/index.js +28 -23
  529. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +28 -23
  530. package/persisters/persister-electric-sql/index.js +28 -23
  531. package/persisters/persister-electric-sql/with-schemas/index.js +28 -23
  532. package/persisters/persister-expo-sqlite/index.js +28 -23
  533. package/persisters/persister-expo-sqlite/with-schemas/index.js +28 -23
  534. package/persisters/persister-file/index.js +40 -29
  535. package/persisters/persister-file/with-schemas/index.js +40 -29
  536. package/persisters/persister-indexed-db/index.js +27 -22
  537. package/persisters/persister-indexed-db/with-schemas/index.js +27 -22
  538. package/persisters/persister-libsql/index.js +194 -189
  539. package/persisters/persister-libsql/with-schemas/index.js +194 -189
  540. package/persisters/persister-partykit-client/index.js +27 -22
  541. package/persisters/persister-partykit-client/with-schemas/index.js +27 -22
  542. package/persisters/persister-powersync/index.js +28 -23
  543. package/persisters/persister-powersync/with-schemas/index.js +28 -23
  544. package/persisters/persister-remote/index.js +33 -28
  545. package/persisters/persister-remote/with-schemas/index.js +33 -28
  546. package/persisters/persister-sqlite-wasm/index.js +28 -23
  547. package/persisters/persister-sqlite-wasm/with-schemas/index.js +28 -23
  548. package/persisters/persister-sqlite3/index.js +28 -23
  549. package/persisters/persister-sqlite3/with-schemas/index.js +28 -23
  550. package/persisters/persister-yjs/index.js +29 -23
  551. package/persisters/persister-yjs/with-schemas/index.js +29 -23
  552. package/persisters/with-schemas/index.js +28 -19
  553. package/queries/index.js +2 -2
  554. package/queries/with-schemas/index.js +2 -2
  555. package/readme.md +14 -14
  556. package/relationships/index.js +1 -1
  557. package/relationships/with-schemas/index.js +1 -1
  558. package/releases.md +21 -21
  559. package/synchronizers/index.js +105 -95
  560. package/synchronizers/synchronizer-broadcast-channel/index.js +101 -97
  561. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +101 -97
  562. package/synchronizers/synchronizer-local/index.js +100 -98
  563. package/synchronizers/synchronizer-local/with-schemas/index.js +100 -98
  564. package/synchronizers/synchronizer-ws-client/index.js +119 -112
  565. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +119 -112
  566. package/synchronizers/synchronizer-ws-server/index.js +520 -20
  567. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +520 -20
  568. package/synchronizers/with-schemas/index.js +105 -95
  569. package/ui-react-inspector/index.js +24 -22
  570. package/ui-react-inspector/with-schemas/index.js +24 -22
  571. package/umd/es6/index.js +106 -91
  572. package/umd/es6/min/index.js +1 -1
  573. package/umd/es6/min/index.js.gz +0 -0
  574. package/umd/es6/min/persisters/index.js +1 -1
  575. package/umd/es6/min/persisters/index.js.gz +0 -0
  576. package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
  577. package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  578. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  579. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  580. package/umd/es6/min/persisters/persister-browser/index.js +1 -1
  581. package/umd/es6/min/persisters/persister-browser/index.js.gz +0 -0
  582. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
  583. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  584. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  585. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  586. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  587. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  588. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  589. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  590. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  591. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  592. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  593. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  594. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  595. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  596. package/umd/es6/min/persisters/persister-file/index.js +1 -1
  597. package/umd/es6/min/persisters/persister-file/index.js.gz +0 -0
  598. package/umd/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
  599. package/umd/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  600. package/umd/es6/min/persisters/persister-indexed-db/index.js +1 -1
  601. package/umd/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  602. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  603. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  604. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  605. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  606. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  607. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  608. package/umd/es6/min/persisters/persister-partykit-client/index.js +1 -1
  609. package/umd/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  610. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  611. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  612. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  613. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  614. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  615. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  616. package/umd/es6/min/persisters/persister-remote/index.js +1 -1
  617. package/umd/es6/min/persisters/persister-remote/index.js.gz +0 -0
  618. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
  619. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  620. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  621. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  622. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  623. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  624. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  625. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  626. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  627. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  628. package/umd/es6/min/persisters/persister-yjs/index.js +1 -1
  629. package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  630. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  631. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  632. package/umd/es6/min/persisters/with-schemas/index.js +1 -1
  633. package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
  634. package/umd/es6/min/synchronizers/index.js +1 -1
  635. package/umd/es6/min/synchronizers/index.js.gz +0 -0
  636. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  637. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  638. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  639. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  640. package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  641. package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  642. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  643. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  644. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  645. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  646. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  647. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  648. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  649. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  650. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  651. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  652. package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
  653. package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  654. package/umd/es6/min/ui-react-inspector/index.js +1 -1
  655. package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
  656. package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  657. package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  658. package/umd/es6/min/with-schemas/index.js +1 -1
  659. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  660. package/umd/es6/persisters/index.js +30 -21
  661. package/umd/es6/persisters/persister-automerge/index.js +29 -24
  662. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +29 -24
  663. package/umd/es6/persisters/persister-browser/index.js +37 -32
  664. package/umd/es6/persisters/persister-browser/with-schemas/index.js +37 -32
  665. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +29 -24
  666. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -24
  667. package/umd/es6/persisters/persister-electric-sql/index.js +29 -24
  668. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +29 -24
  669. package/umd/es6/persisters/persister-expo-sqlite/index.js +29 -24
  670. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +29 -24
  671. package/umd/es6/persisters/persister-file/index.js +43 -33
  672. package/umd/es6/persisters/persister-file/with-schemas/index.js +43 -33
  673. package/umd/es6/persisters/persister-indexed-db/index.js +29 -24
  674. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +29 -24
  675. package/umd/es6/persisters/persister-libsql/index.js +291 -286
  676. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +291 -286
  677. package/umd/es6/persisters/persister-partykit-client/index.js +29 -24
  678. package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +29 -24
  679. package/umd/es6/persisters/persister-powersync/index.js +29 -24
  680. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +29 -24
  681. package/umd/es6/persisters/persister-remote/index.js +35 -30
  682. package/umd/es6/persisters/persister-remote/with-schemas/index.js +35 -30
  683. package/umd/es6/persisters/persister-sqlite-wasm/index.js +29 -24
  684. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -24
  685. package/umd/es6/persisters/persister-sqlite3/index.js +29 -24
  686. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +29 -24
  687. package/umd/es6/persisters/persister-yjs/index.js +29 -24
  688. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +29 -24
  689. package/umd/es6/persisters/with-schemas/index.js +30 -21
  690. package/umd/es6/synchronizers/index.js +118 -107
  691. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +114 -109
  692. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +114 -109
  693. package/umd/es6/synchronizers/synchronizer-local/index.js +118 -110
  694. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +118 -110
  695. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +135 -124
  696. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +135 -124
  697. package/umd/es6/synchronizers/synchronizer-ws-server/index.js +710 -35
  698. package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +710 -35
  699. package/umd/es6/synchronizers/with-schemas/index.js +118 -107
  700. package/umd/es6/ui-react-inspector/index.js +26 -24
  701. package/umd/es6/ui-react-inspector/with-schemas/index.js +26 -24
  702. package/umd/es6/with-schemas/index.js +106 -91
  703. package/umd/index.js +108 -94
  704. package/umd/indexes/index.js +1 -1
  705. package/umd/indexes/with-schemas/index.js +1 -1
  706. package/umd/metrics/index.js +3 -3
  707. package/umd/metrics/with-schemas/index.js +3 -3
  708. package/umd/min/index.js +1 -1
  709. package/umd/min/index.js.gz +0 -0
  710. package/umd/min/persisters/index.js +1 -1
  711. package/umd/min/persisters/index.js.gz +0 -0
  712. package/umd/min/persisters/persister-automerge/index.js +1 -1
  713. package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
  714. package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  715. package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  716. package/umd/min/persisters/persister-browser/index.js +1 -1
  717. package/umd/min/persisters/persister-browser/index.js.gz +0 -0
  718. package/umd/min/persisters/persister-browser/with-schemas/index.js +1 -1
  719. package/umd/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  720. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  721. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  722. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  723. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  724. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  725. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  726. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  727. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  728. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  729. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  730. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  731. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  732. package/umd/min/persisters/persister-file/index.js +1 -1
  733. package/umd/min/persisters/persister-file/index.js.gz +0 -0
  734. package/umd/min/persisters/persister-file/with-schemas/index.js +1 -1
  735. package/umd/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  736. package/umd/min/persisters/persister-indexed-db/index.js +1 -1
  737. package/umd/min/persisters/persister-indexed-db/index.js.gz +0 -0
  738. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  739. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  740. package/umd/min/persisters/persister-libsql/index.js +1 -1
  741. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  742. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  743. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  744. package/umd/min/persisters/persister-partykit-client/index.js +1 -1
  745. package/umd/min/persisters/persister-partykit-client/index.js.gz +0 -0
  746. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  747. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  748. package/umd/min/persisters/persister-powersync/index.js +1 -1
  749. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  750. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  751. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  752. package/umd/min/persisters/persister-remote/index.js +1 -1
  753. package/umd/min/persisters/persister-remote/index.js.gz +0 -0
  754. package/umd/min/persisters/persister-remote/with-schemas/index.js +1 -1
  755. package/umd/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  756. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  757. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  758. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  759. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  760. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  761. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  762. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  763. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  764. package/umd/min/persisters/persister-yjs/index.js +1 -1
  765. package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
  766. package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  767. package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  768. package/umd/min/persisters/with-schemas/index.js +1 -1
  769. package/umd/min/persisters/with-schemas/index.js.gz +0 -0
  770. package/umd/min/synchronizers/index.js +1 -1
  771. package/umd/min/synchronizers/index.js.gz +0 -0
  772. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  773. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  774. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  775. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  776. package/umd/min/synchronizers/synchronizer-local/index.js +1 -1
  777. package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  778. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  779. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  780. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  781. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  782. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  783. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  784. package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  785. package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  786. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  787. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  788. package/umd/min/synchronizers/with-schemas/index.js +1 -1
  789. package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
  790. package/umd/min/ui-react-inspector/index.js +1 -1
  791. package/umd/min/ui-react-inspector/index.js.gz +0 -0
  792. package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
  793. package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  794. package/umd/min/with-schemas/index.js +1 -1
  795. package/umd/min/with-schemas/index.js.gz +0 -0
  796. package/umd/persisters/index.js +28 -19
  797. package/umd/persisters/persister-automerge/index.js +27 -22
  798. package/umd/persisters/persister-automerge/with-schemas/index.js +27 -22
  799. package/umd/persisters/persister-browser/index.js +35 -30
  800. package/umd/persisters/persister-browser/with-schemas/index.js +35 -30
  801. package/umd/persisters/persister-cr-sqlite-wasm/index.js +28 -23
  802. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +28 -23
  803. package/umd/persisters/persister-electric-sql/index.js +28 -23
  804. package/umd/persisters/persister-electric-sql/with-schemas/index.js +28 -23
  805. package/umd/persisters/persister-expo-sqlite/index.js +28 -23
  806. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +28 -23
  807. package/umd/persisters/persister-file/index.js +41 -31
  808. package/umd/persisters/persister-file/with-schemas/index.js +41 -31
  809. package/umd/persisters/persister-indexed-db/index.js +27 -22
  810. package/umd/persisters/persister-indexed-db/with-schemas/index.js +27 -22
  811. package/umd/persisters/persister-libsql/index.js +196 -191
  812. package/umd/persisters/persister-libsql/with-schemas/index.js +196 -191
  813. package/umd/persisters/persister-partykit-client/index.js +27 -22
  814. package/umd/persisters/persister-partykit-client/with-schemas/index.js +27 -22
  815. package/umd/persisters/persister-powersync/index.js +28 -23
  816. package/umd/persisters/persister-powersync/with-schemas/index.js +28 -23
  817. package/umd/persisters/persister-remote/index.js +33 -28
  818. package/umd/persisters/persister-remote/with-schemas/index.js +33 -28
  819. package/umd/persisters/persister-sqlite-wasm/index.js +28 -23
  820. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +28 -23
  821. package/umd/persisters/persister-sqlite3/index.js +28 -23
  822. package/umd/persisters/persister-sqlite3/with-schemas/index.js +28 -23
  823. package/umd/persisters/persister-yjs/index.js +29 -24
  824. package/umd/persisters/persister-yjs/with-schemas/index.js +29 -24
  825. package/umd/persisters/with-schemas/index.js +28 -19
  826. package/umd/queries/index.js +2 -2
  827. package/umd/queries/with-schemas/index.js +2 -2
  828. package/umd/relationships/index.js +1 -1
  829. package/umd/relationships/with-schemas/index.js +1 -1
  830. package/umd/synchronizers/index.js +108 -98
  831. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +104 -100
  832. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +104 -100
  833. package/umd/synchronizers/synchronizer-local/index.js +108 -101
  834. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +108 -101
  835. package/umd/synchronizers/synchronizer-ws-client/index.js +122 -115
  836. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +122 -115
  837. package/umd/synchronizers/synchronizer-ws-server/index.js +544 -34
  838. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +544 -34
  839. package/umd/synchronizers/with-schemas/index.js +108 -98
  840. package/umd/ui-react-inspector/index.js +24 -22
  841. package/umd/ui-react-inspector/with-schemas/index.js +24 -22
  842. package/umd/with-schemas/index.js +108 -94
  843. package/with-schemas/index.js +105 -91
@@ -9,8 +9,8 @@
9
9
  * @since v5.0.0
10
10
  */
11
11
 
12
+ import type {Receive, Send, Synchronizer} from '../index.d.cts';
12
13
  import type {MergeableStore} from '../../mergeable-store/index.d.cts';
13
- import type {Synchronizer} from '../index.d.cts';
14
14
  import type {WebSocket as WsWebSocket} from 'ws';
15
15
 
16
16
  /**
@@ -81,6 +81,10 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
81
81
  * As well as providing a reference to the MergeableStore to persist, you must
82
82
  * provide a configured WebSocket to send synchronization messages over.
83
83
  *
84
+ * You can indicate how long the Synchronizer will wait for responses to message
85
+ * requests before timing out. A final set of optional handlers can be provided
86
+ * to help debug sends, receives, and errors respectively.
87
+ *
84
88
  * This method is asynchronous because it will await the websocket's connection
85
89
  * to the server. You will need to `await` a call to this function or handle the
86
90
  * return type natively as a Promise.
@@ -88,6 +92,12 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
88
92
  * @param webSocket The WebSocket to send synchronization messages over.
89
93
  * @param requestTimeoutSeconds An optional time in seconds that the
90
94
  * Synchronizer will wait for responses to request messages, defaulting to 1.
95
+ * @param onSend An optional handler for the messages that this Synchronizer
96
+ * sends. This is suitable for debugging synchronization issues in a development
97
+ * environment, since v5.1.
98
+ * @param onReceive An optional handler for the messages that this Synchronizer
99
+ * receives. This is suitable for debugging synchronization issues in a
100
+ * development environment, since v5.1.
91
101
  * @param onIgnoredError An optional handler for the errors that the
92
102
  * Synchronizer would otherwise ignore when trying to synchronize data. This is
93
103
  * suitable for debugging synchronization issues in a development environment.
@@ -139,5 +149,7 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
139
149
  store: MergeableStore,
140
150
  webSocket: WebSocketType,
141
151
  requestTimeoutSeconds?: number,
152
+ onSend?: Send,
153
+ onReceive?: Receive,
142
154
  onIgnoredError?: (error: any) => void,
143
155
  ): Promise<WsSynchronizer<WebSocketType>>;
@@ -9,8 +9,8 @@
9
9
  * @since v5.0.0
10
10
  */
11
11
 
12
+ import type {Receive, Send, Synchronizer} from '../index.d.ts';
12
13
  import type {MergeableStore} from '../../mergeable-store/index.d.ts';
13
- import type {Synchronizer} from '../index.d.ts';
14
14
  import type {WebSocket as WsWebSocket} from 'ws';
15
15
 
16
16
  /**
@@ -81,6 +81,10 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
81
81
  * As well as providing a reference to the MergeableStore to persist, you must
82
82
  * provide a configured WebSocket to send synchronization messages over.
83
83
  *
84
+ * You can indicate how long the Synchronizer will wait for responses to message
85
+ * requests before timing out. A final set of optional handlers can be provided
86
+ * to help debug sends, receives, and errors respectively.
87
+ *
84
88
  * This method is asynchronous because it will await the websocket's connection
85
89
  * to the server. You will need to `await` a call to this function or handle the
86
90
  * return type natively as a Promise.
@@ -88,6 +92,12 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
88
92
  * @param webSocket The WebSocket to send synchronization messages over.
89
93
  * @param requestTimeoutSeconds An optional time in seconds that the
90
94
  * Synchronizer will wait for responses to request messages, defaulting to 1.
95
+ * @param onSend An optional handler for the messages that this Synchronizer
96
+ * sends. This is suitable for debugging synchronization issues in a development
97
+ * environment, since v5.1.
98
+ * @param onReceive An optional handler for the messages that this Synchronizer
99
+ * receives. This is suitable for debugging synchronization issues in a
100
+ * development environment, since v5.1.
91
101
  * @param onIgnoredError An optional handler for the errors that the
92
102
  * Synchronizer would otherwise ignore when trying to synchronize data. This is
93
103
  * suitable for debugging synchronization issues in a development environment.
@@ -139,5 +149,7 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
139
149
  store: MergeableStore,
140
150
  webSocket: WebSocketType,
141
151
  requestTimeoutSeconds?: number,
152
+ onSend?: Send,
153
+ onReceive?: Receive,
142
154
  onIgnoredError?: (error: any) => void,
143
155
  ): Promise<WsSynchronizer<WebSocketType>>;
@@ -9,9 +9,9 @@
9
9
  * @since v5.0.0
10
10
  */
11
11
 
12
+ import type {Receive, Send, Synchronizer} from '../../with-schemas/index.d.cts';
12
13
  import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.cts';
13
14
  import type {OptionalSchemas} from '../../../store/with-schemas/index.d.cts';
14
- import type {Synchronizer} from '../../with-schemas/index.d.cts';
15
15
  import type {WebSocket as WsWebSocket} from 'ws';
16
16
 
17
17
  /**
@@ -88,6 +88,8 @@ export interface WsSynchronizer<
88
88
  * store: MergeableStore,
89
89
  * webSocket: WebSocketType,
90
90
  * requestTimeoutSeconds?: number,
91
+ * onSend?: Send,
92
+ * onReceive?: Receive,
91
93
  * onIgnoredError?: (error: any) => void,
92
94
  * ): Promise<WsSynchronizer<WebSocketType>>;
93
95
  * ```
@@ -95,6 +97,10 @@ export interface WsSynchronizer<
95
97
  * As well as providing a reference to the MergeableStore to persist, you must
96
98
  * provide a configured WebSocket to send synchronization messages over.
97
99
  *
100
+ * You can indicate how long the Synchronizer will wait for responses to message
101
+ * requests before timing out. A final set of optional handlers can be provided
102
+ * to help debug sends, receives, and errors respectively.
103
+ *
98
104
  * This method is asynchronous because it will await the websocket's connection
99
105
  * to the server. You will need to `await` a call to this function or handle the
100
106
  * return type natively as a Promise.
@@ -102,6 +108,12 @@ export interface WsSynchronizer<
102
108
  * @param webSocket The WebSocket to send synchronization messages over.
103
109
  * @param requestTimeoutSeconds An optional time in seconds that the
104
110
  * Synchronizer will wait for responses to request messages, defaulting to 1.
111
+ * @param onSend An optional handler for the messages that this Synchronizer
112
+ * sends. This is suitable for debugging synchronization issues in a development
113
+ * environment, since v5.1.
114
+ * @param onReceive An optional handler for the messages that this Synchronizer
115
+ * receives. This is suitable for debugging synchronization issues in a
116
+ * development environment, since v5.1.
105
117
  * @param onIgnoredError An optional handler for the errors that the
106
118
  * Synchronizer would otherwise ignore when trying to synchronize data. This is
107
119
  * suitable for debugging synchronization issues in a development environment.
@@ -156,5 +168,7 @@ export function createWsSynchronizer<
156
168
  store: MergeableStore<Schemas>,
157
169
  webSocket: WebSocketType,
158
170
  requestTimeoutSeconds?: number,
171
+ onSend?: Send,
172
+ onReceive?: Receive,
159
173
  onIgnoredError?: (error: any) => void,
160
174
  ): Promise<WsSynchronizer<Schemas, WebSocketType>>;
@@ -9,9 +9,9 @@
9
9
  * @since v5.0.0
10
10
  */
11
11
 
12
+ import type {Receive, Send, Synchronizer} from '../../with-schemas/index.d.ts';
12
13
  import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.ts';
13
14
  import type {OptionalSchemas} from '../../../store/with-schemas/index.d.ts';
14
- import type {Synchronizer} from '../../with-schemas/index.d.ts';
15
15
  import type {WebSocket as WsWebSocket} from 'ws';
16
16
 
17
17
  /**
@@ -88,6 +88,8 @@ export interface WsSynchronizer<
88
88
  * store: MergeableStore,
89
89
  * webSocket: WebSocketType,
90
90
  * requestTimeoutSeconds?: number,
91
+ * onSend?: Send,
92
+ * onReceive?: Receive,
91
93
  * onIgnoredError?: (error: any) => void,
92
94
  * ): Promise<WsSynchronizer<WebSocketType>>;
93
95
  * ```
@@ -95,6 +97,10 @@ export interface WsSynchronizer<
95
97
  * As well as providing a reference to the MergeableStore to persist, you must
96
98
  * provide a configured WebSocket to send synchronization messages over.
97
99
  *
100
+ * You can indicate how long the Synchronizer will wait for responses to message
101
+ * requests before timing out. A final set of optional handlers can be provided
102
+ * to help debug sends, receives, and errors respectively.
103
+ *
98
104
  * This method is asynchronous because it will await the websocket's connection
99
105
  * to the server. You will need to `await` a call to this function or handle the
100
106
  * return type natively as a Promise.
@@ -102,6 +108,12 @@ export interface WsSynchronizer<
102
108
  * @param webSocket The WebSocket to send synchronization messages over.
103
109
  * @param requestTimeoutSeconds An optional time in seconds that the
104
110
  * Synchronizer will wait for responses to request messages, defaulting to 1.
111
+ * @param onSend An optional handler for the messages that this Synchronizer
112
+ * sends. This is suitable for debugging synchronization issues in a development
113
+ * environment, since v5.1.
114
+ * @param onReceive An optional handler for the messages that this Synchronizer
115
+ * receives. This is suitable for debugging synchronization issues in a
116
+ * development environment, since v5.1.
105
117
  * @param onIgnoredError An optional handler for the errors that the
106
118
  * Synchronizer would otherwise ignore when trying to synchronize data. This is
107
119
  * suitable for debugging synchronization issues in a development environment.
@@ -156,5 +168,7 @@ export function createWsSynchronizer<
156
168
  store: MergeableStore<Schemas>,
157
169
  webSocket: WebSocketType,
158
170
  requestTimeoutSeconds?: number,
171
+ onSend?: Send,
172
+ onReceive?: Receive,
159
173
  onIgnoredError?: (error: any) => void,
160
174
  ): Promise<WsSynchronizer<Schemas, WebSocketType>>;
@@ -9,6 +9,7 @@
9
9
  */
10
10
 
11
11
  import type {Id, IdOrNull, Ids} from '../../common/index.d.cts';
12
+ import type {Persister, Persists} from '../../persisters/index.d.cts';
12
13
  import type {IdAddedOrRemoved} from '../../store/index.d.cts';
13
14
  import type {WebSocketServer} from 'ws';
14
15
 
@@ -497,17 +498,132 @@ export interface WsServer {
497
498
  *
498
499
  * This should be run in a server environment, and you must pass in a configured
499
500
  * WebSocketServer object in order to create it.
501
+ *
502
+ * If you want your server to persist data itself, you can use the optional
503
+ * second parameter of this function, which allows you to create a Persister for
504
+ * a new path - whenever a new path is accessed by a client. This Persister will
505
+ * only exist when there are active clients on that particular path.
506
+ *
507
+ * You are responsible for creating a MergeableStore to pass to this Persister,
508
+ * but starting and stopping its automatic saving and loading is taken care of
509
+ * by the WsServer. As a result, the server MergeableStore will be kept in sync
510
+ * with the clients on that path, and in turn with whatever persistence layer
511
+ * you have configured. See the example below.
500
512
  * @param webSocketServer A WebSocketServer object from your server environment.
513
+ * @param createPersisterForPath An optional function that will create a
514
+ * Persister (with a MergeableStore) to synchronize with the clients on a given
515
+ * path.
501
516
  * @returns A reference to the new WsServer object.
502
517
  * @example
503
- * This example creates a WsServer and then destroys it again.
518
+ * This example creates a WsServer that synchronizes two clients on a shared
519
+ * path.
504
520
  *
505
521
  * ```js
506
522
  * import {WebSocketServer} from 'ws';
523
+ * import {createMergeableStore} from 'tinybase';
507
524
  * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
525
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
508
526
  *
527
+ * // Server
509
528
  * const server = createWsServer(new WebSocketServer({port: 8047}));
529
+ *
530
+ * // Client 1
531
+ * const clientStore1 = createMergeableStore();
532
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
533
+ * const synchronizer1 = await createWsSynchronizer(
534
+ * clientStore1,
535
+ * new WebSocket('ws://localhost:8047/petShop'),
536
+ * );
537
+ * await synchronizer1.startSync();
538
+ * // ...
539
+ *
540
+ * // Client 2
541
+ * const clientStore2 = createMergeableStore();
542
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
543
+ * const synchronizer2 = await createWsSynchronizer(
544
+ * clientStore2,
545
+ * new WebSocket('ws://localhost:8047/petShop'),
546
+ * );
547
+ * await synchronizer2.startSync();
548
+ * // ...
549
+ *
550
+ * console.log(clientStore1.getTables());
551
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
552
+ *
553
+ * console.log(clientStore2.getTables());
554
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
555
+ *
556
+ * synchronizer1.destroy();
557
+ * synchronizer2.destroy();
558
+ * server.destroy();
559
+ * ```
560
+ * @example
561
+ * This longer example creates a WsServer that persists a MergeableStore to file
562
+ * that is synchronized with two clients on a shared path. Later, when a third
563
+ * client connects, it picks up the data the previous two were using.
564
+ *
565
+ * ```js
566
+ * import {WebSocketServer} from 'ws';
567
+ * import {createFilePersister} from 'tinybase/persisters/persister-file';
568
+ * import {createMergeableStore} from 'tinybase';
569
+ * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
570
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
571
+ * import {rmSync} from 'fs';
572
+ *
573
+ * // Server
574
+ * const server = createWsServer(
575
+ * new WebSocketServer({port: 8047}),
576
+ * (pathId) =>
577
+ * createFilePersister(createMergeableStore(), pathId + '.json'),
578
+ * );
579
+ *
580
+ * // Client 1
581
+ * const clientStore1 = createMergeableStore();
582
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
583
+ * const synchronizer1 = await createWsSynchronizer(
584
+ * clientStore1,
585
+ * new WebSocket('ws://localhost:8047/petShop'),
586
+ * );
587
+ * await synchronizer1.startSync();
588
+ * // ...
589
+ *
590
+ * // Client 2
591
+ * const clientStore2 = createMergeableStore();
592
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
593
+ * const synchronizer2 = await createWsSynchronizer(
594
+ * clientStore2,
595
+ * new WebSocket('ws://localhost:8047/petShop'),
596
+ * );
597
+ * await synchronizer2.startSync();
598
+ * // ...
599
+ *
600
+ * console.log(clientStore1.getTables());
601
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
602
+ *
603
+ * console.log(clientStore2.getTables());
604
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
605
+ *
606
+ * synchronizer1.destroy();
607
+ * synchronizer2.destroy();
608
+ *
609
+ * // ...
610
+ * // Client 3 connects later
611
+ * const clientStore3 = createMergeableStore();
612
+ * const synchronizer3 = await createWsSynchronizer(
613
+ * clientStore3,
614
+ * new WebSocket('ws://localhost:8047/petShop'),
615
+ * );
616
+ * await synchronizer3.startSync();
617
+ * // ...
618
+ *
619
+ * console.log(clientStore3.getTables());
620
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
621
+ *
622
+ * synchronizer3.destroy();
510
623
  * server.destroy();
624
+ *
625
+ * // Remove file for the purposes of this demo.
626
+ * rmSync('petShop.json');
511
627
  * ```
512
628
  * @example
513
629
  * This example creates a WsServer with a custom listener that displays
@@ -539,4 +655,11 @@ export interface WsServer {
539
655
  * @category Creation
540
656
  * @since v5.0.0
541
657
  */
542
- export function createWsServer(webSocketServer: WebSocketServer): WsServer;
658
+ export function createWsServer<
659
+ PathPersister extends Persister<
660
+ Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
661
+ >,
662
+ >(
663
+ webSocketServer: WebSocketServer,
664
+ createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
665
+ ): WsServer;
@@ -9,6 +9,7 @@
9
9
  */
10
10
 
11
11
  import type {Id, IdOrNull, Ids} from '../../common/index.d.ts';
12
+ import type {Persister, Persists} from '../../persisters/index.d.ts';
12
13
  import type {IdAddedOrRemoved} from '../../store/index.d.ts';
13
14
  import type {WebSocketServer} from 'ws';
14
15
 
@@ -497,17 +498,132 @@ export interface WsServer {
497
498
  *
498
499
  * This should be run in a server environment, and you must pass in a configured
499
500
  * WebSocketServer object in order to create it.
501
+ *
502
+ * If you want your server to persist data itself, you can use the optional
503
+ * second parameter of this function, which allows you to create a Persister for
504
+ * a new path - whenever a new path is accessed by a client. This Persister will
505
+ * only exist when there are active clients on that particular path.
506
+ *
507
+ * You are responsible for creating a MergeableStore to pass to this Persister,
508
+ * but starting and stopping its automatic saving and loading is taken care of
509
+ * by the WsServer. As a result, the server MergeableStore will be kept in sync
510
+ * with the clients on that path, and in turn with whatever persistence layer
511
+ * you have configured. See the example below.
500
512
  * @param webSocketServer A WebSocketServer object from your server environment.
513
+ * @param createPersisterForPath An optional function that will create a
514
+ * Persister (with a MergeableStore) to synchronize with the clients on a given
515
+ * path.
501
516
  * @returns A reference to the new WsServer object.
502
517
  * @example
503
- * This example creates a WsServer and then destroys it again.
518
+ * This example creates a WsServer that synchronizes two clients on a shared
519
+ * path.
504
520
  *
505
521
  * ```js
506
522
  * import {WebSocketServer} from 'ws';
523
+ * import {createMergeableStore} from 'tinybase';
507
524
  * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
525
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
508
526
  *
527
+ * // Server
509
528
  * const server = createWsServer(new WebSocketServer({port: 8047}));
529
+ *
530
+ * // Client 1
531
+ * const clientStore1 = createMergeableStore();
532
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
533
+ * const synchronizer1 = await createWsSynchronizer(
534
+ * clientStore1,
535
+ * new WebSocket('ws://localhost:8047/petShop'),
536
+ * );
537
+ * await synchronizer1.startSync();
538
+ * // ...
539
+ *
540
+ * // Client 2
541
+ * const clientStore2 = createMergeableStore();
542
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
543
+ * const synchronizer2 = await createWsSynchronizer(
544
+ * clientStore2,
545
+ * new WebSocket('ws://localhost:8047/petShop'),
546
+ * );
547
+ * await synchronizer2.startSync();
548
+ * // ...
549
+ *
550
+ * console.log(clientStore1.getTables());
551
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
552
+ *
553
+ * console.log(clientStore2.getTables());
554
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
555
+ *
556
+ * synchronizer1.destroy();
557
+ * synchronizer2.destroy();
558
+ * server.destroy();
559
+ * ```
560
+ * @example
561
+ * This longer example creates a WsServer that persists a MergeableStore to file
562
+ * that is synchronized with two clients on a shared path. Later, when a third
563
+ * client connects, it picks up the data the previous two were using.
564
+ *
565
+ * ```js
566
+ * import {WebSocketServer} from 'ws';
567
+ * import {createFilePersister} from 'tinybase/persisters/persister-file';
568
+ * import {createMergeableStore} from 'tinybase';
569
+ * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
570
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
571
+ * import {rmSync} from 'fs';
572
+ *
573
+ * // Server
574
+ * const server = createWsServer(
575
+ * new WebSocketServer({port: 8047}),
576
+ * (pathId) =>
577
+ * createFilePersister(createMergeableStore(), pathId + '.json'),
578
+ * );
579
+ *
580
+ * // Client 1
581
+ * const clientStore1 = createMergeableStore();
582
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
583
+ * const synchronizer1 = await createWsSynchronizer(
584
+ * clientStore1,
585
+ * new WebSocket('ws://localhost:8047/petShop'),
586
+ * );
587
+ * await synchronizer1.startSync();
588
+ * // ...
589
+ *
590
+ * // Client 2
591
+ * const clientStore2 = createMergeableStore();
592
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
593
+ * const synchronizer2 = await createWsSynchronizer(
594
+ * clientStore2,
595
+ * new WebSocket('ws://localhost:8047/petShop'),
596
+ * );
597
+ * await synchronizer2.startSync();
598
+ * // ...
599
+ *
600
+ * console.log(clientStore1.getTables());
601
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
602
+ *
603
+ * console.log(clientStore2.getTables());
604
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
605
+ *
606
+ * synchronizer1.destroy();
607
+ * synchronizer2.destroy();
608
+ *
609
+ * // ...
610
+ * // Client 3 connects later
611
+ * const clientStore3 = createMergeableStore();
612
+ * const synchronizer3 = await createWsSynchronizer(
613
+ * clientStore3,
614
+ * new WebSocket('ws://localhost:8047/petShop'),
615
+ * );
616
+ * await synchronizer3.startSync();
617
+ * // ...
618
+ *
619
+ * console.log(clientStore3.getTables());
620
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
621
+ *
622
+ * synchronizer3.destroy();
510
623
  * server.destroy();
624
+ *
625
+ * // Remove file for the purposes of this demo.
626
+ * rmSync('petShop.json');
511
627
  * ```
512
628
  * @example
513
629
  * This example creates a WsServer with a custom listener that displays
@@ -539,4 +655,11 @@ export interface WsServer {
539
655
  * @category Creation
540
656
  * @since v5.0.0
541
657
  */
542
- export function createWsServer(webSocketServer: WebSocketServer): WsServer;
658
+ export function createWsServer<
659
+ PathPersister extends Persister<
660
+ Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
661
+ >,
662
+ >(
663
+ webSocketServer: WebSocketServer,
664
+ createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
665
+ ): WsServer;
@@ -9,7 +9,14 @@
9
9
  */
10
10
 
11
11
  import type {Id, IdOrNull, Ids} from '../../../common/with-schemas/index.d.cts';
12
- import type {IdAddedOrRemoved} from '../../../store/with-schemas/index.d.cts';
12
+ import type {
13
+ IdAddedOrRemoved,
14
+ OptionalSchemas,
15
+ } from '../../../store/with-schemas/index.d.cts';
16
+ import type {
17
+ Persister,
18
+ Persists,
19
+ } from '../../../persisters/with-schemas/index.d.cts';
13
20
  import type {WebSocketServer} from 'ws';
14
21
 
15
22
  /**
@@ -495,21 +502,149 @@ export interface WsServer {
495
502
  * The createWsServer function creates a WsServer that facilitates
496
503
  * synchronization between clients that are using WsSynchronizer instances.
497
504
  *
505
+ * This has schema-based typing. The following is a simplified representation:
506
+ *
507
+ * ```ts override
508
+ * createWsServer<
509
+ * PathPersister extends Persister<
510
+ * Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
511
+ * >,
512
+ * >(
513
+ * webSocketServer: WebSocketServer,
514
+ * createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
515
+ * ): WsServer;
516
+ * ```
517
+ *
498
518
  * This should be run in a server environment, and you must pass in a configured
499
519
  * WebSocketServer object in order to create it.
520
+ *
521
+ * If you want your server to persist data itself, you can use the optional
522
+ * second parameter of this function, which allows you to create a Persister for
523
+ * a new path - whenever a new path is accessed by a client. This Persister will
524
+ * only exist when there are active clients on that particular path.
525
+ *
526
+ * You are responsible for creating a MergeableStore to pass to this Persister,
527
+ * but starting and stopping its automatic saving and loading is taken care of
528
+ * by the WsServer. As a result, the server MergeableStore will be kept in sync
529
+ * with the clients on that path, and in turn with whatever persistence layer
530
+ * you have configured. See the example below.
500
531
  * @param webSocketServer A WebSocketServer object from your server environment.
532
+ * @param createPersisterForPath An optional function that will create a
533
+ * Persister (with a MergeableStore) to synchronize with the clients on a given
534
+ * path.
501
535
  * @returns A reference to the new WsServer object.
502
536
  * @example
503
- * This example creates a WsServer and then destroys it again.
537
+ * This example creates a WsServer that synchronizes two clients on a shared
538
+ * path.
504
539
  *
505
540
  * ```js
506
541
  * import {WebSocketServer} from 'ws';
542
+ * import {createMergeableStore} from 'tinybase';
507
543
  * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
544
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
508
545
  *
546
+ * // Server
509
547
  * const server = createWsServer(new WebSocketServer({port: 8047}));
548
+ *
549
+ * // Client 1
550
+ * const clientStore1 = createMergeableStore();
551
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
552
+ * const synchronizer1 = await createWsSynchronizer(
553
+ * clientStore1,
554
+ * new WebSocket('ws://localhost:8047/petShop'),
555
+ * );
556
+ * await synchronizer1.startSync();
557
+ * // ...
558
+ *
559
+ * // Client 2
560
+ * const clientStore2 = createMergeableStore();
561
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
562
+ * const synchronizer2 = await createWsSynchronizer(
563
+ * clientStore2,
564
+ * new WebSocket('ws://localhost:8047/petShop'),
565
+ * );
566
+ * await synchronizer2.startSync();
567
+ * // ...
568
+ *
569
+ * console.log(clientStore1.getTables());
570
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
571
+ *
572
+ * console.log(clientStore2.getTables());
573
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
574
+ *
575
+ * synchronizer1.destroy();
576
+ * synchronizer2.destroy();
510
577
  * server.destroy();
511
578
  * ```
512
579
  * @example
580
+ * This longer example creates a WsServer that persists a MergeableStore to file
581
+ * that is synchronized with two clients on a shared path. Later, when a third
582
+ * client connects, it picks up the data the previous two were using.
583
+ *
584
+ * ```js
585
+ * import {WebSocketServer} from 'ws';
586
+ * import {createFilePersister} from 'tinybase/persisters/persister-file';
587
+ * import {createMergeableStore} from 'tinybase';
588
+ * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
589
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
590
+ * import {rmSync} from 'fs';
591
+ *
592
+ * // Server
593
+ * const server = createWsServer(
594
+ * new WebSocketServer({port: 8047}),
595
+ * (pathId) =>
596
+ * createFilePersister(createMergeableStore(), pathId + '.json'),
597
+ * );
598
+ *
599
+ * // Client 1
600
+ * const clientStore1 = createMergeableStore();
601
+ * clientStore1.setCell('pets', 'fido', 'species', 'dog');
602
+ * const synchronizer1 = await createWsSynchronizer(
603
+ * clientStore1,
604
+ * new WebSocket('ws://localhost:8047/petShop'),
605
+ * );
606
+ * await synchronizer1.startSync();
607
+ * // ...
608
+ *
609
+ * // Client 2
610
+ * const clientStore2 = createMergeableStore();
611
+ * clientStore2.setCell('pets', 'felix', 'species', 'cat');
612
+ * const synchronizer2 = await createWsSynchronizer(
613
+ * clientStore2,
614
+ * new WebSocket('ws://localhost:8047/petShop'),
615
+ * );
616
+ * await synchronizer2.startSync();
617
+ * // ...
618
+ *
619
+ * console.log(clientStore1.getTables());
620
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
621
+ *
622
+ * console.log(clientStore2.getTables());
623
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
624
+ *
625
+ * synchronizer1.destroy();
626
+ * synchronizer2.destroy();
627
+ *
628
+ * // ...
629
+ * // Client 3 connects later
630
+ * const clientStore3 = createMergeableStore();
631
+ * const synchronizer3 = await createWsSynchronizer(
632
+ * clientStore3,
633
+ * new WebSocket('ws://localhost:8047/petShop'),
634
+ * );
635
+ * await synchronizer3.startSync();
636
+ * // ...
637
+ *
638
+ * console.log(clientStore3.getTables());
639
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
640
+ *
641
+ * synchronizer3.destroy();
642
+ * server.destroy();
643
+ *
644
+ * // Remove file for the purposes of this demo.
645
+ * rmSync('petShop.json');
646
+ * ```
647
+ * @example
513
648
  * This example creates a WsServer with a custom listener that displays
514
649
  * information about the address of the client that connects to it.
515
650
  *
@@ -539,4 +674,13 @@ export interface WsServer {
539
674
  * @category Creation
540
675
  * @since v5.0.0
541
676
  */
542
- export function createWsServer(webSocketServer: WebSocketServer): WsServer;
677
+ export function createWsServer<
678
+ Schemas extends OptionalSchemas,
679
+ PathPersister extends Persister<
680
+ Schemas,
681
+ Persists.MergeableStoreOnly | Persists.StoreOrMergeableStore
682
+ >,
683
+ >(
684
+ webSocketServer: WebSocketServer,
685
+ createPersisterForPath?: (pathId: Id) => PathPersister | undefined,
686
+ ): WsServer;