tinybase 9.4.0-beta.1 → 9.4.0

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 (239) hide show
  1. package/@types/persisters/index.d.ts +4 -0
  2. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +9 -2
  3. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +9 -2
  4. package/@types/persisters/with-schemas/index.d.ts +4 -0
  5. package/@types/queries/index.d.ts +4 -0
  6. package/@types/queries/with-schemas/index.d.ts +4 -0
  7. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +7 -3
  8. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +7 -3
  9. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +9 -3
  10. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +9 -3
  11. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +6 -3
  12. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +6 -3
  13. package/@types/ui-react-dom/index.d.ts +10 -10
  14. package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
  15. package/@types/ui-react-dom-charts/index.d.ts +7 -7
  16. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
  17. package/@types/ui-react-inspector/index.d.ts +1 -1
  18. package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
  19. package/@types/ui-solid-dom/index.d.ts +10 -10
  20. package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
  21. package/@types/ui-solid-inspector/index.d.ts +1 -1
  22. package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
  23. package/@types/ui-svelte-dom/index.d.ts +10 -10
  24. package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
  25. package/@types/ui-svelte-inspector/index.d.ts +1 -1
  26. package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
  27. package/index.js +191 -74
  28. package/min/index.js +1 -1
  29. package/min/index.js.gz +0 -0
  30. package/min/omni/index.js +1 -1
  31. package/min/omni/index.js.gz +0 -0
  32. package/min/omni/with-schemas/index.js +1 -1
  33. package/min/omni/with-schemas/index.js.gz +0 -0
  34. package/min/persisters/index.js +1 -1
  35. package/min/persisters/index.js.gz +0 -0
  36. package/min/persisters/persister-automerge/index.js +1 -1
  37. package/min/persisters/persister-automerge/index.js.gz +0 -0
  38. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  39. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  40. package/min/persisters/persister-browser/index.js +1 -1
  41. package/min/persisters/persister-browser/index.js.gz +0 -0
  42. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  43. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  44. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  45. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  46. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  47. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  48. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  49. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  50. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  51. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  52. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  53. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  54. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  55. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  56. package/min/persisters/persister-electric-sql/index.js +1 -1
  57. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  58. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  59. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  61. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  62. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  63. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  64. package/min/persisters/persister-file/index.js +1 -1
  65. package/min/persisters/persister-file/index.js.gz +0 -0
  66. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  67. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  68. package/min/persisters/persister-indexed-db/index.js +1 -1
  69. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  70. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  71. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  72. package/min/persisters/persister-libsql/index.js +1 -1
  73. package/min/persisters/persister-libsql/index.js.gz +0 -0
  74. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  75. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  76. package/min/persisters/persister-partykit-client/index.js +1 -1
  77. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  78. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  79. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  80. package/min/persisters/persister-pglite/index.js +1 -1
  81. package/min/persisters/persister-pglite/index.js.gz +0 -0
  82. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  83. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  84. package/min/persisters/persister-postgres/index.js +1 -1
  85. package/min/persisters/persister-postgres/index.js.gz +0 -0
  86. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  87. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  88. package/min/persisters/persister-powersync/index.js +1 -1
  89. package/min/persisters/persister-powersync/index.js.gz +0 -0
  90. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  91. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  92. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  93. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  94. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  95. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  96. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  97. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  98. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  99. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  100. package/min/persisters/persister-remote/index.js +1 -1
  101. package/min/persisters/persister-remote/index.js.gz +0 -0
  102. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  103. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  104. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  105. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  106. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  107. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  108. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  109. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  110. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  111. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  112. package/min/persisters/persister-sqlite3/index.js +1 -1
  113. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  114. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  115. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  116. package/min/persisters/persister-yjs/index.js +1 -1
  117. package/min/persisters/persister-yjs/index.js.gz +0 -0
  118. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  119. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  120. package/min/persisters/with-schemas/index.js +1 -1
  121. package/min/persisters/with-schemas/index.js.gz +0 -0
  122. package/min/queries/index.js +1 -1
  123. package/min/queries/index.js.gz +0 -0
  124. package/min/queries/with-schemas/index.js +1 -1
  125. package/min/queries/with-schemas/index.js.gz +0 -0
  126. package/min/synchronizers/index.js +1 -1
  127. package/min/synchronizers/index.js.gz +0 -0
  128. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  129. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  130. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  131. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  132. package/min/synchronizers/synchronizer-local/index.js +1 -1
  133. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  134. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  135. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  136. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  137. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  138. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  139. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  141. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  143. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  145. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  147. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  149. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  152. package/min/synchronizers/with-schemas/index.js +1 -1
  153. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  154. package/min/ui-react-inspector/index.js +1 -1
  155. package/min/ui-react-inspector/index.js.gz +0 -0
  156. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  157. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  158. package/min/ui-solid-inspector/index.js +1 -1
  159. package/min/ui-solid-inspector/index.js.gz +0 -0
  160. package/min/ui-solid-inspector/with-schemas/index.js +1 -1
  161. package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
  162. package/min/ui-svelte-inspector/index.js +1 -1
  163. package/min/ui-svelte-inspector/index.js.gz +0 -0
  164. package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
  165. package/min/ui-svelte-inspector/with-schemas/index.js.gz +0 -0
  166. package/min/with-schemas/index.js +1 -1
  167. package/min/with-schemas/index.js.gz +0 -0
  168. package/omni/index.js +606 -179
  169. package/omni/with-schemas/index.js +606 -179
  170. package/package.json +12 -8
  171. package/persisters/index.js +49 -10
  172. package/persisters/persister-automerge/index.js +29 -5
  173. package/persisters/persister-automerge/with-schemas/index.js +29 -5
  174. package/persisters/persister-browser/index.js +29 -5
  175. package/persisters/persister-browser/with-schemas/index.js +29 -5
  176. package/persisters/persister-cr-sqlite-wasm/index.js +29 -5
  177. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -5
  178. package/persisters/persister-durable-object-sql-storage/index.js +44 -8
  179. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +44 -8
  180. package/persisters/persister-durable-object-storage/index.js +31 -5
  181. package/persisters/persister-durable-object-storage/with-schemas/index.js +31 -5
  182. package/persisters/persister-electric-sql/index.js +29 -5
  183. package/persisters/persister-electric-sql/with-schemas/index.js +29 -5
  184. package/persisters/persister-expo-sqlite/index.js +29 -5
  185. package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -5
  186. package/persisters/persister-file/index.js +31 -5
  187. package/persisters/persister-file/with-schemas/index.js +31 -5
  188. package/persisters/persister-indexed-db/index.js +29 -5
  189. package/persisters/persister-indexed-db/with-schemas/index.js +29 -5
  190. package/persisters/persister-libsql/index.js +29 -5
  191. package/persisters/persister-libsql/with-schemas/index.js +29 -5
  192. package/persisters/persister-partykit-client/index.js +31 -5
  193. package/persisters/persister-partykit-client/with-schemas/index.js +31 -5
  194. package/persisters/persister-pglite/index.js +49 -10
  195. package/persisters/persister-pglite/with-schemas/index.js +49 -10
  196. package/persisters/persister-postgres/index.js +49 -10
  197. package/persisters/persister-postgres/with-schemas/index.js +49 -10
  198. package/persisters/persister-powersync/index.js +29 -5
  199. package/persisters/persister-powersync/with-schemas/index.js +29 -5
  200. package/persisters/persister-react-native-mmkv/index.js +31 -5
  201. package/persisters/persister-react-native-mmkv/with-schemas/index.js +31 -5
  202. package/persisters/persister-react-native-sqlite/index.js +29 -5
  203. package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -5
  204. package/persisters/persister-remote/index.js +31 -5
  205. package/persisters/persister-remote/with-schemas/index.js +31 -5
  206. package/persisters/persister-sqlite-bun/index.js +29 -5
  207. package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -5
  208. package/persisters/persister-sqlite-wasm/index.js +29 -5
  209. package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -5
  210. package/persisters/persister-sqlite3/index.js +29 -5
  211. package/persisters/persister-sqlite3/with-schemas/index.js +29 -5
  212. package/persisters/persister-yjs/index.js +29 -5
  213. package/persisters/persister-yjs/with-schemas/index.js +29 -5
  214. package/persisters/with-schemas/index.js +49 -10
  215. package/queries/index.js +205 -74
  216. package/queries/with-schemas/index.js +205 -74
  217. package/readme.md +14 -14
  218. package/releases.md +84 -67
  219. package/synchronizers/index.js +31 -5
  220. package/synchronizers/synchronizer-broadcast-channel/index.js +39 -13
  221. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +39 -13
  222. package/synchronizers/synchronizer-local/index.js +31 -5
  223. package/synchronizers/synchronizer-local/with-schemas/index.js +31 -5
  224. package/synchronizers/synchronizer-ws-client/index.js +220 -61
  225. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +220 -61
  226. package/synchronizers/synchronizer-ws-server/index.js +253 -73
  227. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +253 -73
  228. package/synchronizers/synchronizer-ws-server-durable-object/index.js +88 -40
  229. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +88 -40
  230. package/synchronizers/synchronizer-ws-server-simple/index.js +184 -60
  231. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +184 -60
  232. package/synchronizers/with-schemas/index.js +31 -5
  233. package/ui-react-inspector/index.js +29 -5
  234. package/ui-react-inspector/with-schemas/index.js +29 -5
  235. package/ui-solid-inspector/index.js +29 -5
  236. package/ui-solid-inspector/with-schemas/index.js +29 -5
  237. package/ui-svelte-inspector/index.js +29 -5
  238. package/ui-svelte-inspector/with-schemas/index.js +29 -5
  239. package/with-schemas/index.js +191 -74
@@ -1340,6 +1340,10 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1340
1340
  * This simply runs the startAutoLoad and startAutoSave methods in sequence,
1341
1341
  * and returns a Promise that resolves when both have completed.
1342
1342
  *
1343
+ * If the second method fails after either half has partially started, both
1344
+ * halves are stopped again before this method rejects. The original startup
1345
+ * error is preserved if that cleanup also fails.
1346
+ *
1343
1347
  * This method can take `initialContent` to pass to the startAutoLoad method.
1344
1348
  * See its documentation for more details.
1345
1349
  *
@@ -78,8 +78,15 @@ export type DpcFragmented = {
78
78
  * This is useful when you have multiple stores or applications sharing the
79
79
  * same Durable Object SQL storage and want to avoid table name conflicts.
80
80
  *
81
- * The prefix will be sanitized to only include alphanumeric characters and
82
- * underscores. For example, a prefix of 'my-app!' becomes 'my_app_'.
81
+ * Empty prefixes and those containing only lower-case ASCII letters, digits,
82
+ * and underscores are used as-is. Other prefixes are encoded so that distinct
83
+ * prefixes cannot resolve to the same tables, including under SQLite's
84
+ * case-insensitive identifier rules.
85
+ *
86
+ * Tables created for prefixes that are now encoded, including uppercase
87
+ * prefixes and those previously changed by lossy sanitization, are not copied
88
+ * automatically because their names may legitimately belong to another
89
+ * prefix. Migrate those tables explicitly before using the new prefix.
83
90
  * @example
84
91
  * This example shows a configuration using the storagePrefix setting. With a
85
92
  * `storagePrefix` of 'user_data_', it creates `user_data_tinybase_tables` and
@@ -86,8 +86,15 @@ export type DpcFragmented = {
86
86
  * This is useful when you have multiple stores or applications sharing the
87
87
  * same Durable Object SQL storage and want to avoid table name conflicts.
88
88
  *
89
- * The prefix will be sanitized to only include alphanumeric characters and
90
- * underscores. For example, a prefix of 'my-app!' becomes 'my_app_'.
89
+ * Empty prefixes and those containing only lower-case ASCII letters, digits,
90
+ * and underscores are used as-is. Other prefixes are encoded so that distinct
91
+ * prefixes cannot resolve to the same tables, including under SQLite's
92
+ * case-insensitive identifier rules.
93
+ *
94
+ * Tables created for prefixes that are now encoded, including uppercase
95
+ * prefixes and those previously changed by lossy sanitization, are not copied
96
+ * automatically because their names may legitimately belong to another
97
+ * prefix. Migrate those tables explicitly before using the new prefix.
91
98
  * @example
92
99
  * This example shows a configuration using the storagePrefix setting. With a
93
100
  * `storagePrefix` of 'user_data_', it creates `user_data_tinybase_tables` and
@@ -1461,6 +1461,10 @@ export interface Persister<
1461
1461
  * This simply runs the startAutoLoad and startAutoSave methods in sequence,
1462
1462
  * and returns a Promise that resolves when both have completed.
1463
1463
  *
1464
+ * If the second method fails after either half has partially started, both
1465
+ * halves are stopped again before this method rejects. The original startup
1466
+ * error is preserved if that cleanup also fails.
1467
+ *
1464
1468
  * This method can take `initialContent` to pass to the startAutoLoad method.
1465
1469
  * See its documentation for more details.
1466
1470
  *
@@ -1039,6 +1039,10 @@ export type CellIdMapper = (cellId: Id) => Id;
1039
1039
  * is expanded into individual selections. The query is rebuilt if this union
1040
1040
  * changes, and any selected Cell that is not grouped becomes a grouping
1041
1041
  * dimension as usual.
1042
+ *
1043
+ * A cycle between query results is allowed when every SelectAll clause retains
1044
+ * its source Cell Ids. A prefix or CellIdMapper callback in such a cycle is
1045
+ * rejected because it could expand Cell Ids indefinitely.
1042
1046
  * @category Definition
1043
1047
  * @since v9.4.0
1044
1048
  */
@@ -1186,6 +1186,10 @@ export type CellIdMapper<CellId extends Id = Id> = (cellId: CellId) => Id;
1186
1186
  * is expanded into individual selections. The query is rebuilt if this union
1187
1187
  * changes, and any selected Cell that is not grouped becomes a grouping
1188
1188
  * dimension as usual.
1189
+ *
1190
+ * A cycle between query results is allowed when every SelectAll clause retains
1191
+ * its source Cell Ids. A prefix or CellIdMapper callback in such a cycle is
1192
+ * rejected because it could expand Cell Ids indefinitely.
1189
1193
  * @category Definition
1190
1194
  * @since v9.4.0
1191
1195
  */
@@ -177,7 +177,9 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
177
177
  * Construct the WebSocket with the `tinybase` subprotocol and provide a
178
178
  * channel Id as the third argument. The channel Id is appended to the
179
179
  * WebSocket URL path to form the server path; it is not taken from the
180
- * MergeableStore Id.
180
+ * MergeableStore Id. It can contain at most 1,024 UTF-8 bytes, and one shared
181
+ * WebSocket can have at most 100 channels. Creating a 101st channel is
182
+ * rejected without closing the existing shared WebSocket.
181
183
  *
182
184
  * Destroying the WsSynchronizer unsubscribes its channel. The shared
183
185
  * WebSocket is closed only when the last WsSynchronizer using it is
@@ -188,8 +190,10 @@ export function createWsSynchronizer<WebSocketType extends WebSocketTypes>(
188
190
  * later. It is not supported by WsServerDurableObject.
189
191
  * @param store The MergeableStore to synchronize.
190
192
  * @param webSocket The shared WebSocket to send synchronization messages
191
- * over, constructed with the `tinybase` subprotocol.
192
- * @param channelId The channel Id to append to the WebSocket URL path.
193
+ * over, constructed with the `tinybase` subprotocol and shared by at most 100
194
+ * channels.
195
+ * @param channelId The channel Id to append to the WebSocket URL path, with
196
+ * at most 1,024 UTF-8 bytes.
193
197
  * @param requestTimeoutSeconds An optional time in seconds that the
194
198
  * Synchronizer will wait for responses to request messages, defaulting to 1.
195
199
  * @param onSend An optional handler for the messages that this Synchronizer
@@ -211,7 +211,9 @@ export function createWsSynchronizer<
211
211
  * Construct the WebSocket with the `tinybase` subprotocol and provide a
212
212
  * channel Id as the third argument. The channel Id is appended to the
213
213
  * WebSocket URL path to form the server path; it is not taken from the
214
- * MergeableStore Id.
214
+ * MergeableStore Id. It can contain at most 1,024 UTF-8 bytes, and one shared
215
+ * WebSocket can have at most 100 channels. Creating a 101st channel is
216
+ * rejected without closing the existing shared WebSocket.
215
217
  *
216
218
  * Destroying the WsSynchronizer unsubscribes its channel. The shared
217
219
  * WebSocket is closed only when the last WsSynchronizer using it is
@@ -222,8 +224,10 @@ export function createWsSynchronizer<
222
224
  * later. It is not supported by WsServerDurableObject.
223
225
  * @param store The MergeableStore to synchronize.
224
226
  * @param webSocket The shared WebSocket to send synchronization messages
225
- * over, constructed with the `tinybase` subprotocol.
226
- * @param channelId The channel Id to append to the WebSocket URL path.
227
+ * over, constructed with the `tinybase` subprotocol and shared by at most 100
228
+ * channels.
229
+ * @param channelId The channel Id to append to the WebSocket URL path, with
230
+ * at most 1,024 UTF-8 bytes.
227
231
  * @param requestTimeoutSeconds An optional time in seconds that the
228
232
  * Synchronizer will wait for responses to request messages, defaulting to 1.
229
233
  * @param onSend An optional handler for the messages that this Synchronizer
@@ -519,7 +519,11 @@ export interface WsServer {
519
519
  * Since v9.3, multiple WsSynchronizer instances can share one WebSocket by
520
520
  * using channel Ids. Each channel Id is appended to the WebSocket URL path and
521
521
  * treated as an ordinary server path. This means a multiplexed channel can
522
- * interoperate with legacy clients connected directly to that full path.
522
+ * interoperate with legacy clients connected directly to that full path. A
523
+ * channel Id can contain at most 1,024 UTF-8 bytes, and each multiplexed
524
+ * WebSocket can have at most 100 subscribed channels. Pending setup and
525
+ * teardown resources are also bounded. Fragment reassembly and traffic
526
+ * buffered while paths start share limits across the physical WebSocket.
523
527
  *
524
528
  * The WsServer does not authenticate or authorize URL paths or channel Ids.
525
529
  * Once a client WebSocket is accepted on a base path, it can subscribe to any
@@ -608,7 +612,7 @@ export interface WsServer {
608
612
  * client connects, it picks up the data the previous two were using.
609
613
  *
610
614
  * ```js
611
- * import {rmSync} from 'fs';
615
+ * import {mkdirSync, rmSync} from 'fs';
612
616
  * import {createMergeableStore} from 'tinybase';
613
617
  * import {createFilePersister} from 'tinybase/persisters/persister-file';
614
618
  * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
@@ -616,6 +620,7 @@ export interface WsServer {
616
620
  * import {WebSocket, WebSocketServer} from 'ws';
617
621
  *
618
622
  * // Server
623
+ * mkdirSync('./tmp', {recursive: true});
619
624
  * const server = createWsServer(
620
625
  * new WebSocketServer({port: 8047}),
621
626
  * (pathId) =>
@@ -679,7 +684,7 @@ export interface WsServer {
679
684
  * data once synchronization has started.
680
685
  *
681
686
  * ```js
682
- * import {rmSync} from 'fs';
687
+ * import {mkdirSync, rmSync} from 'fs';
683
688
  * import {createMergeableStore} from 'tinybase';
684
689
  * import {createFilePersister} from 'tinybase/persisters/persister-file';
685
690
  * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
@@ -687,6 +692,7 @@ export interface WsServer {
687
692
  * import {WebSocket, WebSocketServer} from 'ws';
688
693
  *
689
694
  * // Server
695
+ * mkdirSync('./tmp', {recursive: true});
690
696
  * const server = createWsServer(
691
697
  * new WebSocketServer({port: 8047}),
692
698
  * (pathId) => [
@@ -548,7 +548,11 @@ export interface WsServer {
548
548
  * Since v9.3, multiple WsSynchronizer instances can share one WebSocket by
549
549
  * using channel Ids. Each channel Id is appended to the WebSocket URL path and
550
550
  * treated as an ordinary server path. This means a multiplexed channel can
551
- * interoperate with legacy clients connected directly to that full path.
551
+ * interoperate with legacy clients connected directly to that full path. A
552
+ * channel Id can contain at most 1,024 UTF-8 bytes, and each multiplexed
553
+ * WebSocket can have at most 100 subscribed channels. Pending setup and
554
+ * teardown resources are also bounded. Fragment reassembly and traffic
555
+ * buffered while paths start share limits across the physical WebSocket.
552
556
  *
553
557
  * The WsServer does not authenticate or authorize URL paths or channel Ids.
554
558
  * Once a client WebSocket is accepted on a base path, it can subscribe to any
@@ -637,7 +641,7 @@ export interface WsServer {
637
641
  * client connects, it picks up the data the previous two were using.
638
642
  *
639
643
  * ```js
640
- * import {rmSync} from 'fs';
644
+ * import {mkdirSync, rmSync} from 'fs';
641
645
  * import {createMergeableStore} from 'tinybase';
642
646
  * import {createFilePersister} from 'tinybase/persisters/persister-file';
643
647
  * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
@@ -645,6 +649,7 @@ export interface WsServer {
645
649
  * import {WebSocket, WebSocketServer} from 'ws';
646
650
  *
647
651
  * // Server
652
+ * mkdirSync('./tmp', {recursive: true});
648
653
  * const server = createWsServer(
649
654
  * new WebSocketServer({port: 8047}),
650
655
  * (pathId) =>
@@ -708,7 +713,7 @@ export interface WsServer {
708
713
  * data once synchronization has started.
709
714
  *
710
715
  * ```js
711
- * import {rmSync} from 'fs';
716
+ * import {mkdirSync, rmSync} from 'fs';
712
717
  * import {createMergeableStore} from 'tinybase';
713
718
  * import {createFilePersister} from 'tinybase/persisters/persister-file';
714
719
  * import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';
@@ -716,6 +721,7 @@ export interface WsServer {
716
721
  * import {WebSocket, WebSocketServer} from 'ws';
717
722
  *
718
723
  * // Server
724
+ * mkdirSync('./tmp', {recursive: true});
719
725
  * const server = createWsServer(
720
726
  * new WebSocketServer({port: 8047}),
721
727
  * (pathId) => [
@@ -96,9 +96,12 @@ export interface WsServerSimple {
96
96
  * Since v9.3, it also supports multiple channel-based WsSynchronizer instances
97
97
  * sharing one WebSocket. Once a client WebSocket is accepted on a base path,
98
98
  * it can subscribe to any valid channel beneath that path: WsServerSimple does
99
- * not authenticate or authorize channel Ids. For untrusted clients, use a
100
- * separate authenticated WebSocket for each authorized path unless access to
101
- * all descendants is acceptable.
99
+ * not authenticate or authorize channel Ids. A channel Id can contain at most
100
+ * 1,024 UTF-8 bytes, and each multiplexed WebSocket can have at most 100
101
+ * subscribed channels. Pending channel cleanup is also bounded, and fragment
102
+ * reassembly limits are shared across the physical WebSocket. For untrusted
103
+ * clients, use a separate authenticated WebSocket for each authorized path
104
+ * unless access to all descendants is acceptable.
102
105
  * @param webSocketServer A WebSocketServer object from your server environment.
103
106
  * @returns A reference to the new WsServerSimple object.
104
107
  * @example
@@ -96,9 +96,12 @@ export interface WsServerSimple {
96
96
  * Since v9.3, it also supports multiple channel-based WsSynchronizer instances
97
97
  * sharing one WebSocket. Once a client WebSocket is accepted on a base path,
98
98
  * it can subscribe to any valid channel beneath that path: WsServerSimple does
99
- * not authenticate or authorize channel Ids. For untrusted clients, use a
100
- * separate authenticated WebSocket for each authorized path unless access to
101
- * all descendants is acceptable.
99
+ * not authenticate or authorize channel Ids. A channel Id can contain at most
100
+ * 1,024 UTF-8 bytes, and each multiplexed WebSocket can have at most 100
101
+ * subscribed channels. Pending channel cleanup is also bounded, and fragment
102
+ * reassembly limits are shared across the physical WebSocket. For untrusted
103
+ * clients, use a separate authenticated WebSocket for each authorized path
104
+ * unless access to all descendants is acceptable.
102
105
  * @param webSocketServer A WebSocketServer object from your server environment.
103
106
  * @returns A reference to the new WsServerSimple object.
104
107
  * @example
@@ -692,7 +692,7 @@ export type SortedTablePaginatorProps = {
692
692
  *
693
693
  * See the <TableInHtmlTable /> (React) demo for this component in action:
694
694
  *
695
- * ![TableInHtmlTable example](https://beta.tinybase.org/shots/tableinhtmltable-react-demo.png
695
+ * ![TableInHtmlTable example](https://tinybase.org/shots/tableinhtmltable-react-demo.png
696
696
  * "TableInHtmlTable example")
697
697
  *
698
698
  * The component's props identify which Table to render based on Table Id, and
@@ -838,7 +838,7 @@ export function TableInHtmlTable(
838
838
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
839
839
  * action:
840
840
  *
841
- * ![SortedTableInHtmlTable example](https://beta.tinybase.org/shots/sortedtableinhtmltable-react-demo.png
841
+ * ![SortedTableInHtmlTable example](https://tinybase.org/shots/sortedtableinhtmltable-react-demo.png
842
842
  * "SortedTableInHtmlTable example")
843
843
  *
844
844
  * The component's props identify which Table to render based on Table Id, and
@@ -1011,7 +1011,7 @@ export function SortedTableInHtmlTable(
1011
1011
  *
1012
1012
  * See the <ValuesInHtmlTable /> (React) demo for this component in action:
1013
1013
  *
1014
- * ![ValuesInHtmlTable example](https://beta.tinybase.org/shots/valuesinhtmltable-react-demo.png
1014
+ * ![ValuesInHtmlTable example](https://tinybase.org/shots/valuesinhtmltable-react-demo.png
1015
1015
  * "ValuesInHtmlTable example")
1016
1016
  *
1017
1017
  * The component's props identify which Row to render based on Table Id, Row Id,
@@ -1142,7 +1142,7 @@ export function ValuesInHtmlTable(
1142
1142
  *
1143
1143
  * See the <SliceInHtmlTable /> (React) demo for this component in action:
1144
1144
  *
1145
- * ![SliceInHtmlTable example](https://beta.tinybase.org/shots/sliceinhtmltable-react-demo.png
1145
+ * ![SliceInHtmlTable example](https://tinybase.org/shots/sliceinhtmltable-react-demo.png
1146
1146
  * "SliceInHtmlTable example")
1147
1147
  *
1148
1148
  * The component's props identify which Slice to render based on Index Id, Slice
@@ -1300,7 +1300,7 @@ export function SliceInHtmlTable(
1300
1300
  * See the <RelationshipInHtmlTable /> (React) demo for this component in
1301
1301
  * action:
1302
1302
  *
1303
- * ![RelationshipInHtmlTable example](https://beta.tinybase.org/shots/relationshipinhtmltable-react-demo.png
1303
+ * ![RelationshipInHtmlTable example](https://tinybase.org/shots/relationshipinhtmltable-react-demo.png
1304
1304
  * "RelationshipInHtmlTable example")
1305
1305
  *
1306
1306
  * The component's props identify which Relationship to render based on
@@ -1478,7 +1478,7 @@ export function RelationshipInHtmlTable(
1478
1478
  * See the <ResultTableInHtmlTable /> (React) demo for this component in
1479
1479
  * action:
1480
1480
  *
1481
- * ![ResultTableInHtmlTable example](https://beta.tinybase.org/shots/resulttableinhtmltable-react-demo.png
1481
+ * ![ResultTableInHtmlTable example](https://tinybase.org/shots/resulttableinhtmltable-react-demo.png
1482
1482
  * "ResultTableInHtmlTable example")
1483
1483
  *
1484
1484
  * The component's props identify which ResultTable to render based on query Id,
@@ -1631,7 +1631,7 @@ export function ResultTableInHtmlTable(
1631
1631
  * See the <ResultSortedTableInHtmlTable /> (React) demo for this component in
1632
1632
  * action:
1633
1633
  *
1634
- * ![ResultSortedTableInHtmlTable example](https://beta.tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1634
+ * ![ResultSortedTableInHtmlTable example](https://tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1635
1635
  * "ResultSortedTableInHtmlTable example")
1636
1636
  *
1637
1637
  * The component's props identify which ResultTable to render based on query Id,
@@ -1805,7 +1805,7 @@ export function ResultSortedTableInHtmlTable(
1805
1805
  *
1806
1806
  * See the <EditableCellView /> (React) demo for this component in action:
1807
1807
  *
1808
- * ![EditableCellView example](https://beta.tinybase.org/shots/editablecellview-react-demo.png
1808
+ * ![EditableCellView example](https://tinybase.org/shots/editablecellview-react-demo.png
1809
1809
  * "EditableCellView example")
1810
1810
  *
1811
1811
  * The component's props identify which Cell to render based on Table Id, Row
@@ -1876,7 +1876,7 @@ export function EditableCellView(
1876
1876
  *
1877
1877
  * See the <EditableValueView /> (React) demo for this component in action:
1878
1878
  *
1879
- * ![EditableValueView example](https://beta.tinybase.org/shots/editablevalueview-react-demo.png
1879
+ * ![EditableValueView example](https://tinybase.org/shots/editablevalueview-react-demo.png
1880
1880
  * "EditableValueView example")
1881
1881
  *
1882
1882
  * The component's props identify which Value to render based on Table Id, Row
@@ -1947,7 +1947,7 @@ export function EditableValueView(
1947
1947
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
1948
1948
  * action:
1949
1949
  *
1950
- * ![SortedTablePaginator example](https://beta.tinybase.org/shots/sortedtablepaginator-react-demo.png
1950
+ * ![SortedTablePaginator example](https://tinybase.org/shots/sortedtablepaginator-react-demo.png
1951
1951
  * "SortedTablePaginator example")
1952
1952
  *
1953
1953
  * The component displays 'previous' and 'next' buttons for paging through the
@@ -668,7 +668,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
668
668
  *
669
669
  * See the <TableInHtmlTable /> (React) demo for this component in action:
670
670
  *
671
- * ![TableInHtmlTable example](https://beta.tinybase.org/shots/tableinhtmltable-react-demo.png
671
+ * ![TableInHtmlTable example](https://tinybase.org/shots/tableinhtmltable-react-demo.png
672
672
  * "TableInHtmlTable example")
673
673
  *
674
674
  * The component's props identify which Table to render based on Table Id, and
@@ -822,7 +822,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
822
822
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
823
823
  * action:
824
824
  *
825
- * ![SortedTableInHtmlTable example](https://beta.tinybase.org/shots/sortedtableinhtmltable-react-demo.png
825
+ * ![SortedTableInHtmlTable example](https://tinybase.org/shots/sortedtableinhtmltable-react-demo.png
826
826
  * "SortedTableInHtmlTable example")
827
827
  *
828
828
  * The component's props identify which Table to render based on Table Id, and
@@ -1003,7 +1003,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1003
1003
  *
1004
1004
  * See the <ValuesInHtmlTable /> (React) demo for this component in action:
1005
1005
  *
1006
- * ![ValuesInHtmlTable example](https://beta.tinybase.org/shots/valuesinhtmltable-react-demo.png
1006
+ * ![ValuesInHtmlTable example](https://tinybase.org/shots/valuesinhtmltable-react-demo.png
1007
1007
  * "ValuesInHtmlTable example")
1008
1008
  *
1009
1009
  * The component's props identify which Row to render based on Table Id, Row Id,
@@ -1142,7 +1142,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1142
1142
  *
1143
1143
  * See the <SliceInHtmlTable /> (React) demo for this component in action:
1144
1144
  *
1145
- * ![SliceInHtmlTable example](https://beta.tinybase.org/shots/sliceinhtmltable-react-demo.png
1145
+ * ![SliceInHtmlTable example](https://tinybase.org/shots/sliceinhtmltable-react-demo.png
1146
1146
  * "SliceInHtmlTable example")
1147
1147
  *
1148
1148
  * The component's props identify which Slice to render based on Index Id, Slice
@@ -1308,7 +1308,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1308
1308
  * See the <RelationshipInHtmlTable /> (React) demo for this component in
1309
1309
  * action:
1310
1310
  *
1311
- * ![RelationshipInHtmlTable example](https://beta.tinybase.org/shots/relationshipinhtmltable-react-demo.png
1311
+ * ![RelationshipInHtmlTable example](https://tinybase.org/shots/relationshipinhtmltable-react-demo.png
1312
1312
  * "RelationshipInHtmlTable example")
1313
1313
  *
1314
1314
  * The component's props identify which Relationship to render based on
@@ -1494,7 +1494,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1494
1494
  * See the <ResultTableInHtmlTable /> (React) demo for this component in
1495
1495
  * action:
1496
1496
  *
1497
- * ![ResultTableInHtmlTable example](https://beta.tinybase.org/shots/resulttableinhtmltable-react-demo.png
1497
+ * ![ResultTableInHtmlTable example](https://tinybase.org/shots/resulttableinhtmltable-react-demo.png
1498
1498
  * "ResultTableInHtmlTable example")
1499
1499
  *
1500
1500
  * The component's props identify which ResultTable to render based on query Id,
@@ -1655,7 +1655,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1655
1655
  * See the <ResultSortedTableInHtmlTable /> (React) demo for this component in
1656
1656
  * action:
1657
1657
  *
1658
- * ![ResultSortedTableInHtmlTable example](https://beta.tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1658
+ * ![ResultSortedTableInHtmlTable example](https://tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1659
1659
  * "ResultSortedTableInHtmlTable example")
1660
1660
  *
1661
1661
  * The component's props identify which ResultTable to render based on query Id,
@@ -1837,7 +1837,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1837
1837
  *
1838
1838
  * See the <EditableCellView /> (React) demo for this component in action:
1839
1839
  *
1840
- * ![EditableCellView example](https://beta.tinybase.org/shots/editablecellview-react-demo.png
1840
+ * ![EditableCellView example](https://tinybase.org/shots/editablecellview-react-demo.png
1841
1841
  * "EditableCellView example")
1842
1842
  *
1843
1843
  * The component's props identify which Cell to render based on Table Id, Row
@@ -1922,7 +1922,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1922
1922
  *
1923
1923
  * See the <EditableValueView /> (React) demo for this component in action:
1924
1924
  *
1925
- * ![EditableValueView example](https://beta.tinybase.org/shots/editablevalueview-react-demo.png
1925
+ * ![EditableValueView example](https://tinybase.org/shots/editablevalueview-react-demo.png
1926
1926
  * "EditableValueView example")
1927
1927
  *
1928
1928
  * The component's props identify which Value to render based on Table Id, Row
@@ -1993,7 +1993,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1993
1993
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
1994
1994
  * action:
1995
1995
  *
1996
- * ![SortedTablePaginator example](https://beta.tinybase.org/shots/sortedtablepaginator-react-demo.png
1996
+ * ![SortedTablePaginator example](https://tinybase.org/shots/sortedtablepaginator-react-demo.png
1997
1997
  * "SortedTablePaginator example")
1998
1998
  *
1999
1999
  * The component displays 'previous' and 'next' buttons for paging through the
@@ -483,7 +483,7 @@ export type YAxisProps = {
483
483
  *
484
484
  * See the Composing Charts (React) demo for this component in action:
485
485
  *
486
- * ![CartesianChart component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
486
+ * ![CartesianChart component example](https://tinybase.org/shots/composing-charts-react-demo.png
487
487
  * "CartesianChart component example")
488
488
  *
489
489
  * The series children declare their own xCellId and yCellId bindings. The
@@ -542,7 +542,7 @@ export function CartesianChart(
542
542
  *
543
543
  * See the Axis Overrides (React) demo for this component in action:
544
544
  *
545
- * ![XAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
545
+ * ![XAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
546
546
  * "XAxis component example")
547
547
  * @category Store components
548
548
  * @since v8.5.0
@@ -558,7 +558,7 @@ export function XAxis(props: XAxisProps): ComponentReturnType;
558
558
  *
559
559
  * See the Axis Overrides (React) demo for this component in action:
560
560
  *
561
- * ![YAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
561
+ * ![YAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
562
562
  * "YAxis component example")
563
563
  * @category Store components
564
564
  * @since v8.5.0
@@ -574,7 +574,7 @@ export function YAxis(props: YAxisProps): ComponentReturnType;
574
574
  *
575
575
  * See the Composing Charts (React) demo for this component in action:
576
576
  *
577
- * ![LineSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
577
+ * ![LineSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
578
578
  * "LineSeries component example")
579
579
  * @category Store components
580
580
  * @since v8.5.0
@@ -590,7 +590,7 @@ export function LineSeries(props: SeriesProps): ComponentReturnType;
590
590
  *
591
591
  * See the Composing Charts (React) demo for this component in action:
592
592
  *
593
- * ![BarSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
593
+ * ![BarSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
594
594
  * "BarSeries component example")
595
595
  * @category Store components
596
596
  * @since v8.5.0
@@ -607,7 +607,7 @@ export function BarSeries(props: SeriesProps): ComponentReturnType;
607
607
  *
608
608
  * See the <LineChart /> (React) demo for this component in action:
609
609
  *
610
- * ![LineChart component example](https://beta.tinybase.org/shots/basic-chart-react-demo.png "LineChart
610
+ * ![LineChart component example](https://tinybase.org/shots/basic-chart-react-demo.png "LineChart
611
611
  * component example")
612
612
  * @category Store components
613
613
  * @since v8.5.0
@@ -660,7 +660,7 @@ export function LineChart(
660
660
  *
661
661
  * See the Sorting And Types (React) demo for this component in action:
662
662
  *
663
- * ![BarChart component example](https://beta.tinybase.org/shots/sorting-and-types-react-demo.png
663
+ * ![BarChart component example](https://tinybase.org/shots/sorting-and-types-react-demo.png
664
664
  * "BarChart component example")
665
665
  * @category Store components
666
666
  * @since v8.5.0
@@ -544,7 +544,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
544
544
  *
545
545
  * See the Composing Charts (React) demo for this component in action:
546
546
  *
547
- * ![CartesianChart component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
547
+ * ![CartesianChart component example](https://tinybase.org/shots/composing-charts-react-demo.png
548
548
  * "CartesianChart component example")
549
549
  *
550
550
  * The series children declare their own xCellId and yCellId bindings. The
@@ -609,7 +609,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
609
609
  *
610
610
  * See the Axis Overrides (React) demo for this component in action:
611
611
  *
612
- * ![XAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
612
+ * ![XAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
613
613
  * "XAxis component example")
614
614
  * @category Store components
615
615
  * @since v8.5.0
@@ -625,7 +625,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
625
625
  *
626
626
  * See the Axis Overrides (React) demo for this component in action:
627
627
  *
628
- * ![YAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
628
+ * ![YAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
629
629
  * "YAxis component example")
630
630
  * @category Store components
631
631
  * @since v8.5.0
@@ -641,7 +641,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
641
641
  *
642
642
  * See the Composing Charts (React) demo for this component in action:
643
643
  *
644
- * ![LineSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
644
+ * ![LineSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
645
645
  * "LineSeries component example")
646
646
  * @category Store components
647
647
  * @since v8.5.0
@@ -657,7 +657,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
657
657
  *
658
658
  * See the Composing Charts (React) demo for this component in action:
659
659
  *
660
- * ![BarSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
660
+ * ![BarSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
661
661
  * "BarSeries component example")
662
662
  * @category Store components
663
663
  * @since v8.5.0
@@ -684,7 +684,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
684
684
  *
685
685
  * See the <LineChart /> (React) demo for this component in action:
686
686
  *
687
- * ![LineChart component example](https://beta.tinybase.org/shots/basic-chart-react-demo.png "LineChart
687
+ * ![LineChart component example](https://tinybase.org/shots/basic-chart-react-demo.png "LineChart
688
688
  * component example")
689
689
  * @category Store components
690
690
  * @since v8.5.0
@@ -750,7 +750,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
750
750
  *
751
751
  * See the Sorting And Types (React) demo for this component in action:
752
752
  *
753
- * ![BarChart component example](https://beta.tinybase.org/shots/sorting-and-types-react-demo.png
753
+ * ![BarChart component example](https://tinybase.org/shots/sorting-and-types-react-demo.png
754
754
  * "BarChart component example")
755
755
  * @category Store components
756
756
  * @since v8.5.0
@@ -46,7 +46,7 @@ export type InspectorProps = {
46
46
  *
47
47
  * See the <Inspector /> (React) demo for this component in action:
48
48
  *
49
- * ![Inspector example](https://beta.tinybase.org/shots/inspector-react-demo.png
49
+ * ![Inspector example](https://tinybase.org/shots/inspector-react-demo.png
50
50
  * "Inspector example")
51
51
  *
52
52
  * The component displays a nub in the corner of the screen which you may then
@@ -46,7 +46,7 @@ export type InspectorProps = {
46
46
  *
47
47
  * See the <Inspector /> (React) demo for this component in action:
48
48
  *
49
- * ![Inspector example](https://beta.tinybase.org/shots/inspector-react-demo.png
49
+ * ![Inspector example](https://tinybase.org/shots/inspector-react-demo.png
50
50
  * "Inspector example")
51
51
  *
52
52
  * The component displays a nub in the corner of the screen which you may then