tinybase 5.0.0-beta.27 → 5.0.0-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/@types/_internal/ui-react/with-schemas/index.d.cts +274 -0
  2. package/@types/_internal/ui-react/with-schemas/index.d.ts +274 -0
  3. package/@types/checkpoints/index.d.cts +30 -1
  4. package/@types/checkpoints/index.d.ts +30 -1
  5. package/@types/checkpoints/with-schemas/index.d.cts +30 -1
  6. package/@types/checkpoints/with-schemas/index.d.ts +30 -1
  7. package/@types/common/index.d.cts +9 -0
  8. package/@types/common/index.d.ts +9 -0
  9. package/@types/common/with-schemas/index.d.cts +9 -0
  10. package/@types/common/with-schemas/index.d.ts +9 -0
  11. package/@types/index.d.cts +1 -0
  12. package/@types/index.d.ts +1 -0
  13. package/@types/indexes/index.d.cts +32 -1
  14. package/@types/indexes/index.d.ts +32 -1
  15. package/@types/indexes/with-schemas/index.d.cts +32 -1
  16. package/@types/indexes/with-schemas/index.d.ts +32 -1
  17. package/@types/mergeable-store/index.d.cts +0 -2
  18. package/@types/mergeable-store/index.d.ts +0 -2
  19. package/@types/mergeable-store/with-schemas/index.d.cts +2 -2
  20. package/@types/mergeable-store/with-schemas/index.d.ts +2 -2
  21. package/@types/metrics/index.d.cts +30 -4
  22. package/@types/metrics/index.d.ts +30 -4
  23. package/@types/metrics/with-schemas/index.d.cts +30 -4
  24. package/@types/metrics/with-schemas/index.d.ts +30 -4
  25. package/@types/persisters/index.d.cts +87 -25
  26. package/@types/persisters/index.d.ts +87 -25
  27. package/@types/persisters/persister-automerge/index.d.cts +4 -4
  28. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  29. package/@types/persisters/persister-automerge/with-schemas/index.d.cts +4 -4
  30. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  31. package/@types/persisters/persister-browser/index.d.cts +7 -4
  32. package/@types/persisters/persister-browser/index.d.ts +7 -4
  33. package/@types/persisters/persister-browser/with-schemas/index.d.cts +7 -4
  34. package/@types/persisters/persister-browser/with-schemas/index.d.ts +7 -4
  35. package/@types/persisters/persister-cr-sqlite-wasm/index.d.cts +4 -4
  36. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -4
  37. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.cts +4 -4
  38. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +4 -4
  39. package/@types/persisters/persister-electric-sql/index.d.cts +4 -4
  40. package/@types/persisters/persister-electric-sql/index.d.ts +4 -4
  41. package/@types/persisters/persister-electric-sql/with-schemas/index.d.cts +4 -4
  42. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +4 -4
  43. package/@types/persisters/persister-expo-sqlite/index.d.cts +4 -4
  44. package/@types/persisters/persister-expo-sqlite/index.d.ts +4 -4
  45. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +4 -4
  46. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +4 -4
  47. package/@types/persisters/persister-file/index.d.cts +6 -4
  48. package/@types/persisters/persister-file/index.d.ts +6 -4
  49. package/@types/persisters/persister-file/with-schemas/index.d.cts +6 -4
  50. package/@types/persisters/persister-file/with-schemas/index.d.ts +6 -4
  51. package/@types/persisters/persister-indexed-db/index.d.cts +5 -4
  52. package/@types/persisters/persister-indexed-db/index.d.ts +5 -4
  53. package/@types/persisters/persister-indexed-db/with-schemas/index.d.cts +5 -4
  54. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +5 -4
  55. package/@types/persisters/persister-libsql/index.d.cts +5 -4
  56. package/@types/persisters/persister-libsql/index.d.ts +5 -4
  57. package/@types/persisters/persister-libsql/with-schemas/index.d.cts +5 -4
  58. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +5 -4
  59. package/@types/persisters/persister-partykit-client/index.d.cts +12 -6
  60. package/@types/persisters/persister-partykit-client/index.d.ts +12 -6
  61. package/@types/persisters/persister-partykit-client/with-schemas/index.d.cts +12 -6
  62. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +12 -6
  63. package/@types/persisters/persister-partykit-server/index.d.cts +11 -3
  64. package/@types/persisters/persister-partykit-server/index.d.ts +11 -3
  65. package/@types/persisters/persister-partykit-server/with-schemas/index.d.cts +11 -3
  66. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +11 -3
  67. package/@types/persisters/persister-powersync/index.d.cts +5 -4
  68. package/@types/persisters/persister-powersync/index.d.ts +5 -4
  69. package/@types/persisters/persister-powersync/with-schemas/index.d.cts +5 -4
  70. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +5 -4
  71. package/@types/persisters/persister-remote/index.d.cts +6 -4
  72. package/@types/persisters/persister-remote/index.d.ts +6 -4
  73. package/@types/persisters/persister-remote/with-schemas/index.d.cts +6 -4
  74. package/@types/persisters/persister-remote/with-schemas/index.d.ts +6 -4
  75. package/@types/persisters/persister-sqlite-wasm/index.d.cts +4 -4
  76. package/@types/persisters/persister-sqlite-wasm/index.d.ts +4 -4
  77. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.cts +4 -4
  78. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -4
  79. package/@types/persisters/persister-sqlite3/index.d.cts +4 -4
  80. package/@types/persisters/persister-sqlite3/index.d.ts +4 -4
  81. package/@types/persisters/persister-sqlite3/with-schemas/index.d.cts +4 -4
  82. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +4 -4
  83. package/@types/persisters/persister-yjs/index.d.cts +4 -4
  84. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  85. package/@types/persisters/persister-yjs/with-schemas/index.d.cts +4 -4
  86. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  87. package/@types/persisters/with-schemas/index.d.cts +87 -25
  88. package/@types/persisters/with-schemas/index.d.ts +87 -25
  89. package/@types/queries/index.d.cts +64 -4
  90. package/@types/queries/index.d.ts +64 -4
  91. package/@types/queries/with-schemas/index.d.cts +64 -4
  92. package/@types/queries/with-schemas/index.d.ts +64 -4
  93. package/@types/relationships/index.d.cts +34 -1
  94. package/@types/relationships/index.d.ts +34 -1
  95. package/@types/relationships/with-schemas/index.d.cts +34 -1
  96. package/@types/relationships/with-schemas/index.d.ts +34 -1
  97. package/@types/store/index.d.cts +125 -0
  98. package/@types/store/index.d.ts +125 -0
  99. package/@types/store/with-schemas/index.d.cts +125 -0
  100. package/@types/store/with-schemas/index.d.ts +125 -0
  101. package/@types/synchronizers/index.d.cts +32 -10
  102. package/@types/synchronizers/index.d.ts +32 -10
  103. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +114 -0
  104. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +114 -0
  105. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +128 -0
  106. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +128 -0
  107. package/@types/synchronizers/synchronizer-local/index.d.cts +16 -17
  108. package/@types/synchronizers/synchronizer-local/index.d.ts +16 -17
  109. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +16 -17
  110. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +16 -17
  111. package/@types/synchronizers/synchronizer-ws-client/index.d.cts +66 -6
  112. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +66 -6
  113. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +77 -6
  114. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +77 -6
  115. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +486 -7
  116. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +486 -7
  117. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +486 -7
  118. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +486 -7
  119. package/@types/synchronizers/with-schemas/index.d.cts +29 -11
  120. package/@types/synchronizers/with-schemas/index.d.ts +29 -11
  121. package/@types/tools/index.d.cts +22 -0
  122. package/@types/tools/index.d.ts +22 -0
  123. package/@types/tools/with-schemas/index.d.cts +22 -0
  124. package/@types/tools/with-schemas/index.d.ts +22 -0
  125. package/@types/ui-react/index.d.cts +375 -1
  126. package/@types/ui-react/index.d.ts +375 -1
  127. package/@types/ui-react/with-schemas/index.d.cts +100 -1
  128. package/@types/ui-react/with-schemas/index.d.ts +100 -1
  129. package/@types/ui-react-dom/index.d.cts +112 -0
  130. package/@types/ui-react-dom/index.d.ts +112 -0
  131. package/@types/ui-react-dom/with-schemas/index.d.cts +112 -0
  132. package/@types/ui-react-dom/with-schemas/index.d.ts +112 -0
  133. package/@types/ui-react-inspector/index.d.cts +6 -2
  134. package/@types/ui-react-inspector/index.d.ts +6 -2
  135. package/@types/ui-react-inspector/with-schemas/index.d.cts +118 -2
  136. package/@types/ui-react-inspector/with-schemas/index.d.ts +118 -2
  137. package/@types/with-schemas/index.d.cts +1 -0
  138. package/@types/with-schemas/index.d.ts +1 -0
  139. package/cjs/es6/index.cjs +2 -2
  140. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  141. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  142. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  143. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  144. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  145. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  146. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  147. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  148. package/cjs/es6/synchronizers/index.cjs +2 -2
  149. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +628 -0
  150. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +628 -0
  151. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +4 -4
  152. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +4 -4
  153. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +15 -21
  154. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +15 -21
  155. package/cjs/es6/synchronizers/with-schemas/index.cjs +2 -2
  156. package/cjs/es6/with-schemas/index.cjs +2 -2
  157. package/cjs/index.cjs +2 -2
  158. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  159. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  160. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  161. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  162. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  163. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  164. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  165. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/synchronizers/index.cjs +2 -2
  167. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +500 -0
  168. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +500 -0
  169. package/cjs/synchronizers/synchronizer-local/index.cjs +4 -4
  170. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +4 -4
  171. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +15 -21
  172. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +15 -21
  173. package/cjs/synchronizers/with-schemas/index.cjs +2 -2
  174. package/cjs/with-schemas/index.cjs +2 -2
  175. package/es6/index.js +2 -2
  176. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  177. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  178. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  179. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  180. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  181. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  182. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  183. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  184. package/es6/synchronizers/index.js +2 -2
  185. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +626 -0
  186. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +626 -0
  187. package/es6/synchronizers/synchronizer-local/index.js +4 -4
  188. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  189. package/es6/synchronizers/synchronizer-ws-client/index.js +15 -21
  190. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  191. package/es6/synchronizers/with-schemas/index.js +2 -2
  192. package/es6/with-schemas/index.js +2 -2
  193. package/index.js +2 -2
  194. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  195. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  196. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  197. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  198. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  199. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  200. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  201. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  202. package/package.json +105 -1
  203. package/readme.md +9 -9
  204. package/releases.md +4 -4
  205. package/synchronizers/index.js +2 -2
  206. package/synchronizers/synchronizer-broadcast-channel/index.js +498 -0
  207. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +498 -0
  208. package/synchronizers/synchronizer-local/index.js +4 -4
  209. package/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  210. package/synchronizers/synchronizer-ws-client/index.js +15 -21
  211. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  212. package/synchronizers/with-schemas/index.js +2 -2
  213. package/umd/es6/index.js +2 -2
  214. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  215. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  216. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  217. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  218. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  219. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  220. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  221. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  222. package/umd/es6/synchronizers/index.js +2 -2
  223. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +654 -0
  224. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +654 -0
  225. package/umd/es6/synchronizers/synchronizer-local/index.js +4 -4
  226. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  227. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +15 -21
  228. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  229. package/umd/es6/synchronizers/with-schemas/index.js +2 -2
  230. package/umd/es6/with-schemas/index.js +2 -2
  231. package/umd/index.js +2 -2
  232. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  233. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  234. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  235. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  236. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  237. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  238. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  239. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  240. package/umd/synchronizers/index.js +2 -2
  241. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +516 -0
  242. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +516 -0
  243. package/umd/synchronizers/synchronizer-local/index.js +4 -4
  244. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  245. package/umd/synchronizers/synchronizer-ws-client/index.js +15 -21
  246. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  247. package/umd/synchronizers/with-schemas/index.js +2 -2
  248. package/umd/with-schemas/index.js +2 -2
  249. package/with-schemas/index.js +2 -2
@@ -2,7 +2,7 @@
2
2
  * The synchronizer-ws module of the TinyBase project lets you synchronize
3
3
  * MergeableStore data to and from other MergeableStore instances via WebSockets
4
4
  * facilitated by a server.
5
- * @see Synchronizing Data guide
5
+ * @see Synchronization guide
6
6
  * @see Todo App v6 (collaboration) demo
7
7
  * @packageDocumentation
8
8
  * @module synchronizer-ws-client
@@ -21,6 +21,8 @@ import type {WebSocket as WsWebSocket} from 'ws';
21
21
  * This includes the browser-native WebSocket type, as well as the WebSocket
22
22
  * type from the well-known `ws` package (such that the Synchronizer can be used
23
23
  * in a server environment).
24
+ * @category Creation
25
+ * @since v5.0.0
24
26
  */
25
27
  export type WebSocketTypes = WebSocket | WsWebSocket;
26
28
 
@@ -29,12 +31,12 @@ export type WebSocketTypes = WebSocket | WsWebSocket;
29
31
  * synchronize MergeableStore data to and from other MergeableStore instances
30
32
  * via WebSockets facilitated by a server.
31
33
  *
34
+ * You should use the createWsSynchronizer function to create a WsSynchronizer
35
+ * object.
36
+ *
32
37
  * It is a minor extension to the Synchronizer interface and simply provides an
33
38
  * extra getWebSocket method for accessing a reference to the WebSocket being
34
39
  * used.
35
- *
36
- * You should use the createWsSynchronizer function to create a WsSynchronizer
37
- * object.
38
40
  * @category Synchronizer
39
41
  * @since v5.0.0
40
42
  */
@@ -43,7 +45,7 @@ export interface WsSynchronizer<
43
45
  WebSocketType extends WebSocketTypes,
44
46
  > extends Synchronizer<Schemas> {
45
47
  /**
46
- * The getWebSocket method returns reference to the WebSocket being used for
48
+ * The getWebSocket method returns a reference to the WebSocket being used for
47
49
  * synchronization.
48
50
  * @returns The WebSocket reference.
49
51
  * @example
@@ -75,8 +77,77 @@ export interface WsSynchronizer<
75
77
  }
76
78
 
77
79
  /**
78
- * The createWsSynchronizer function.
80
+ * The createWsSynchronizer function creates a WsSynchronizer object that can
81
+ * synchronize MergeableStore data to and from other MergeableStore instances
82
+ * via WebSockets facilitated by a WsServer.
83
+ *
84
+ * This has schema-based typing. The following is a simplified representation:
85
+ *
86
+ * ```ts override
87
+ * createWsSynchronizer<WebSocketType extends WebSocketTypes>(
88
+ * store: MergeableStore,
89
+ * webSocket: WebSocketType,
90
+ * requestTimeoutSeconds?: number,
91
+ * onIgnoredError?: (error: any) => void,
92
+ * ): Promise<WsSynchronizer<WebSocketType>>;
93
+ * ```
94
+ *
95
+ * As well as providing a reference to the MergeableStore to persist, you must
96
+ * provide a configured WebSocket to send synchronization messages over.
97
+ *
98
+ * This method is asynchronous because it will await the websocket's connection
99
+ * to the server. You will need to `await` a call to this function or handle the
100
+ * return type natively as a Promise.
101
+ * @param store The MergeableStore to synchronize.
102
+ * @param webSocket The WebSocket to send synchronization messages over.
103
+ * @param requestTimeoutSeconds An optional time in seconds that the
104
+ * Synchronizer will wait for responses to request messages, defaulting to 1.
105
+ * @param onIgnoredError An optional handler for the errors that the
106
+ * Synchronizer would otherwise ignore when trying to synchronize data. This is
107
+ * suitable for debugging synchronization issues in a development environment.
108
+ * @returns A reference to the new WsSynchronizer object.
109
+ * @example
110
+ * This example creates two WsSynchronizer objects to synchronize one
111
+ * MergeableStore to another via a server.
112
+ *
113
+ * ```js
114
+ * import {WebSocket, WebSocketServer} from 'ws';
115
+ * import {createMergeableStore} from 'tinybase';
116
+ * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
117
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
118
+ *
119
+ * const server = createWsServer(new WebSocketServer({port: 8047}));
120
+ *
121
+ * const store1 = createMergeableStore();
122
+ * const store2 = createMergeableStore();
123
+ *
124
+ * const synchronizer1 = await createWsSynchronizer(
125
+ * store1,
126
+ * new WebSocket('ws://localhost:8047'),
127
+ * );
128
+ * const synchronizer2 = await createWsSynchronizer(
129
+ * store2,
130
+ * new WebSocket('ws://localhost:8047'),
131
+ * );
132
+ *
133
+ * await synchronizer1.startSync();
134
+ * await synchronizer2.startSync();
135
+ *
136
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
137
+ * store2.setTables({pets: {felix: {species: 'cat'}}});
138
+ *
139
+ * // ...
140
+ * console.log(store1.getTables());
141
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
142
+ * console.log(store2.getTables());
143
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
144
+ *
145
+ * synchronizer1.destroy();
146
+ * synchronizer2.destroy();
147
+ * server.destroy();
148
+ * ```
79
149
  * @category Creation
150
+ * @since v5.0.0
80
151
  */
81
152
  export function createWsSynchronizer<
82
153
  Schemas extends OptionalSchemas,
@@ -2,7 +2,7 @@
2
2
  * The synchronizer-ws module of the TinyBase project lets you synchronize
3
3
  * MergeableStore data to and from other MergeableStore instances via WebSockets
4
4
  * facilitated by a server.
5
- * @see Synchronizing Data guide
5
+ * @see Synchronization guide
6
6
  * @see Todo App v6 (collaboration) demo
7
7
  * @packageDocumentation
8
8
  * @module synchronizer-ws-client
@@ -21,6 +21,8 @@ import type {WebSocket as WsWebSocket} from 'ws';
21
21
  * This includes the browser-native WebSocket type, as well as the WebSocket
22
22
  * type from the well-known `ws` package (such that the Synchronizer can be used
23
23
  * in a server environment).
24
+ * @category Creation
25
+ * @since v5.0.0
24
26
  */
25
27
  export type WebSocketTypes = WebSocket | WsWebSocket;
26
28
 
@@ -29,12 +31,12 @@ export type WebSocketTypes = WebSocket | WsWebSocket;
29
31
  * synchronize MergeableStore data to and from other MergeableStore instances
30
32
  * via WebSockets facilitated by a server.
31
33
  *
34
+ * You should use the createWsSynchronizer function to create a WsSynchronizer
35
+ * object.
36
+ *
32
37
  * It is a minor extension to the Synchronizer interface and simply provides an
33
38
  * extra getWebSocket method for accessing a reference to the WebSocket being
34
39
  * used.
35
- *
36
- * You should use the createWsSynchronizer function to create a WsSynchronizer
37
- * object.
38
40
  * @category Synchronizer
39
41
  * @since v5.0.0
40
42
  */
@@ -43,7 +45,7 @@ export interface WsSynchronizer<
43
45
  WebSocketType extends WebSocketTypes,
44
46
  > extends Synchronizer<Schemas> {
45
47
  /**
46
- * The getWebSocket method returns reference to the WebSocket being used for
48
+ * The getWebSocket method returns a reference to the WebSocket being used for
47
49
  * synchronization.
48
50
  * @returns The WebSocket reference.
49
51
  * @example
@@ -75,8 +77,77 @@ export interface WsSynchronizer<
75
77
  }
76
78
 
77
79
  /**
78
- * The createWsSynchronizer function.
80
+ * The createWsSynchronizer function creates a WsSynchronizer object that can
81
+ * synchronize MergeableStore data to and from other MergeableStore instances
82
+ * via WebSockets facilitated by a WsServer.
83
+ *
84
+ * This has schema-based typing. The following is a simplified representation:
85
+ *
86
+ * ```ts override
87
+ * createWsSynchronizer<WebSocketType extends WebSocketTypes>(
88
+ * store: MergeableStore,
89
+ * webSocket: WebSocketType,
90
+ * requestTimeoutSeconds?: number,
91
+ * onIgnoredError?: (error: any) => void,
92
+ * ): Promise<WsSynchronizer<WebSocketType>>;
93
+ * ```
94
+ *
95
+ * As well as providing a reference to the MergeableStore to persist, you must
96
+ * provide a configured WebSocket to send synchronization messages over.
97
+ *
98
+ * This method is asynchronous because it will await the websocket's connection
99
+ * to the server. You will need to `await` a call to this function or handle the
100
+ * return type natively as a Promise.
101
+ * @param store The MergeableStore to synchronize.
102
+ * @param webSocket The WebSocket to send synchronization messages over.
103
+ * @param requestTimeoutSeconds An optional time in seconds that the
104
+ * Synchronizer will wait for responses to request messages, defaulting to 1.
105
+ * @param onIgnoredError An optional handler for the errors that the
106
+ * Synchronizer would otherwise ignore when trying to synchronize data. This is
107
+ * suitable for debugging synchronization issues in a development environment.
108
+ * @returns A reference to the new WsSynchronizer object.
109
+ * @example
110
+ * This example creates two WsSynchronizer objects to synchronize one
111
+ * MergeableStore to another via a server.
112
+ *
113
+ * ```js
114
+ * import {WebSocket, WebSocketServer} from 'ws';
115
+ * import {createMergeableStore} from 'tinybase';
116
+ * import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
117
+ * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
118
+ *
119
+ * const server = createWsServer(new WebSocketServer({port: 8047}));
120
+ *
121
+ * const store1 = createMergeableStore();
122
+ * const store2 = createMergeableStore();
123
+ *
124
+ * const synchronizer1 = await createWsSynchronizer(
125
+ * store1,
126
+ * new WebSocket('ws://localhost:8047'),
127
+ * );
128
+ * const synchronizer2 = await createWsSynchronizer(
129
+ * store2,
130
+ * new WebSocket('ws://localhost:8047'),
131
+ * );
132
+ *
133
+ * await synchronizer1.startSync();
134
+ * await synchronizer2.startSync();
135
+ *
136
+ * store1.setTables({pets: {fido: {species: 'dog'}}});
137
+ * store2.setTables({pets: {felix: {species: 'cat'}}});
138
+ *
139
+ * // ...
140
+ * console.log(store1.getTables());
141
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
142
+ * console.log(store2.getTables());
143
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
144
+ *
145
+ * synchronizer1.destroy();
146
+ * synchronizer2.destroy();
147
+ * server.destroy();
148
+ * ```
79
149
  * @category Creation
150
+ * @since v5.0.0
80
151
  */
81
152
  export function createWsSynchronizer<
82
153
  Schemas extends OptionalSchemas,