tinybase 5.4.0-beta.2 → 5.4.0-beta.3

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 (1091) hide show
  1. package/@types/mergeable-store/index.d.cts +7 -5
  2. package/@types/mergeable-store/index.d.ts +7 -5
  3. package/@types/mergeable-store/with-schemas/index.d.cts +16 -9
  4. package/@types/mergeable-store/with-schemas/index.d.ts +16 -9
  5. package/@types/persisters/index.d.cts +14 -10
  6. package/@types/persisters/index.d.ts +14 -10
  7. package/@types/persisters/persister-durable-object-storage/index.d.cts +108 -0
  8. package/@types/persisters/persister-durable-object-storage/index.d.ts +108 -0
  9. package/@types/persisters/persister-durable-object-storage/with-schemas/index.d.cts +122 -0
  10. package/@types/persisters/persister-durable-object-storage/with-schemas/index.d.ts +122 -0
  11. package/@types/persisters/with-schemas/index.d.cts +14 -10
  12. package/@types/persisters/with-schemas/index.d.ts +14 -10
  13. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +4 -0
  14. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +4 -0
  15. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +5 -0
  16. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +5 -0
  17. package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.cts +60 -3
  18. package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +60 -3
  19. package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.cts +89 -7
  20. package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +89 -7
  21. package/cjs/es6/index.cjs +32 -27
  22. package/cjs/es6/indexes/index.cjs +1 -1
  23. package/cjs/es6/indexes/with-schemas/index.cjs +1 -1
  24. package/cjs/es6/mergeable-store/index.cjs +31 -27
  25. package/cjs/es6/mergeable-store/with-schemas/index.cjs +31 -27
  26. package/cjs/es6/metrics/index.cjs +1 -1
  27. package/cjs/es6/metrics/with-schemas/index.cjs +1 -1
  28. package/cjs/es6/min/index.cjs +1 -1
  29. package/cjs/es6/min/index.cjs.gz +0 -0
  30. package/cjs/es6/min/indexes/index.cjs +1 -1
  31. package/cjs/es6/min/indexes/index.cjs.gz +0 -0
  32. package/cjs/es6/min/indexes/with-schemas/index.cjs +1 -1
  33. package/cjs/es6/min/indexes/with-schemas/index.cjs.gz +0 -0
  34. package/cjs/es6/min/mergeable-store/index.cjs +1 -1
  35. package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
  36. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
  37. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  38. package/cjs/es6/min/metrics/index.cjs +1 -1
  39. package/cjs/es6/min/metrics/index.cjs.gz +0 -0
  40. package/cjs/es6/min/metrics/with-schemas/index.cjs +1 -1
  41. package/cjs/es6/min/metrics/with-schemas/index.cjs.gz +0 -0
  42. package/cjs/es6/min/persisters/index.cjs +1 -1
  43. package/cjs/es6/min/persisters/index.cjs.gz +0 -0
  44. package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
  45. package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
  46. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  47. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  48. package/cjs/es6/min/persisters/persister-browser/index.cjs +1 -1
  49. package/cjs/es6/min/persisters/persister-browser/index.cjs.gz +0 -0
  50. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
  51. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  52. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  53. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  54. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  55. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  56. package/cjs/es6/min/persisters/persister-durable-object-storage/index.cjs +1 -0
  57. package/cjs/es6/min/persisters/persister-durable-object-storage/index.cjs.gz +0 -0
  58. package/cjs/es6/min/persisters/persister-durable-object-storage/with-schemas/index.cjs +1 -0
  59. package/cjs/es6/min/persisters/persister-durable-object-storage/with-schemas/index.cjs.gz +0 -0
  60. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  61. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  62. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  63. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  64. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  65. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  66. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  67. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  68. package/cjs/es6/min/persisters/persister-file/index.cjs +1 -1
  69. package/cjs/es6/min/persisters/persister-file/index.cjs.gz +0 -0
  70. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs +1 -1
  71. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  72. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs +1 -1
  73. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  74. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
  75. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  76. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  77. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  78. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  79. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  80. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs +1 -1
  81. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  82. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
  83. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  84. package/cjs/es6/min/persisters/persister-pglite/index.cjs +1 -1
  85. package/cjs/es6/min/persisters/persister-pglite/index.cjs.gz +0 -0
  86. package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
  87. package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
  88. package/cjs/es6/min/persisters/persister-postgres/index.cjs +1 -1
  89. package/cjs/es6/min/persisters/persister-postgres/index.cjs.gz +0 -0
  90. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  91. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  92. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  93. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  94. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  95. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  96. package/cjs/es6/min/persisters/persister-remote/index.cjs +1 -1
  97. package/cjs/es6/min/persisters/persister-remote/index.cjs.gz +0 -0
  98. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
  99. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  100. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  101. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  102. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  103. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  104. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  105. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  106. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  107. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  108. package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -1
  109. package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
  110. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  111. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  112. package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
  113. package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
  114. package/cjs/es6/min/queries/index.cjs +1 -1
  115. package/cjs/es6/min/queries/index.cjs.gz +0 -0
  116. package/cjs/es6/min/queries/with-schemas/index.cjs +1 -1
  117. package/cjs/es6/min/queries/with-schemas/index.cjs.gz +0 -0
  118. package/cjs/es6/min/relationships/index.cjs +1 -1
  119. package/cjs/es6/min/relationships/index.cjs.gz +0 -0
  120. package/cjs/es6/min/relationships/with-schemas/index.cjs +1 -1
  121. package/cjs/es6/min/relationships/with-schemas/index.cjs.gz +0 -0
  122. package/cjs/es6/min/synchronizers/index.cjs +1 -1
  123. package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
  124. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
  125. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  126. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
  127. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  128. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -1
  129. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  130. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  131. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  132. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  133. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  134. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  135. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  136. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  137. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  138. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  139. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  140. package/cjs/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.cjs +1 -1
  141. package/cjs/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.cjs.gz +0 -0
  142. package/cjs/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs +1 -1
  143. package/cjs/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs.gz +0 -0
  144. package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
  145. package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  146. package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
  147. package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
  148. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  149. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  150. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  151. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  152. package/cjs/es6/persisters/index.cjs +21 -9
  153. package/cjs/es6/persisters/persister-automerge/index.cjs +17 -8
  154. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +17 -8
  155. package/cjs/es6/persisters/persister-browser/index.cjs +17 -8
  156. package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +17 -8
  157. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +21 -9
  158. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +21 -9
  159. package/cjs/es6/persisters/persister-durable-object-storage/index.cjs +687 -0
  160. package/cjs/es6/persisters/persister-durable-object-storage/with-schemas/index.cjs +687 -0
  161. package/cjs/es6/persisters/persister-electric-sql/index.cjs +21 -9
  162. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +21 -9
  163. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +21 -9
  164. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +21 -9
  165. package/cjs/es6/persisters/persister-file/index.cjs +17 -8
  166. package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +17 -8
  167. package/cjs/es6/persisters/persister-indexed-db/index.cjs +19 -9
  168. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +19 -9
  169. package/cjs/es6/persisters/persister-libsql/index.cjs +21 -9
  170. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +21 -9
  171. package/cjs/es6/persisters/persister-partykit-client/index.cjs +23 -11
  172. package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +23 -11
  173. package/cjs/es6/persisters/persister-pglite/index.cjs +19 -8
  174. package/cjs/es6/persisters/persister-pglite/with-schemas/index.cjs +19 -8
  175. package/cjs/es6/persisters/persister-postgres/index.cjs +19 -8
  176. package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +19 -8
  177. package/cjs/es6/persisters/persister-powersync/index.cjs +21 -9
  178. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +21 -9
  179. package/cjs/es6/persisters/persister-remote/index.cjs +19 -9
  180. package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +19 -9
  181. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +21 -9
  182. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +21 -9
  183. package/cjs/es6/persisters/persister-sqlite3/index.cjs +21 -9
  184. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +21 -9
  185. package/cjs/es6/persisters/persister-yjs/index.cjs +17 -8
  186. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +17 -8
  187. package/cjs/es6/persisters/with-schemas/index.cjs +21 -9
  188. package/cjs/es6/queries/index.cjs +1 -0
  189. package/cjs/es6/queries/with-schemas/index.cjs +1 -0
  190. package/cjs/es6/relationships/index.cjs +1 -1
  191. package/cjs/es6/relationships/with-schemas/index.cjs +1 -1
  192. package/cjs/es6/synchronizers/index.cjs +142 -93
  193. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +142 -93
  194. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +142 -93
  195. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +145 -97
  196. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +145 -97
  197. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +160 -98
  198. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +160 -98
  199. package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +171 -97
  200. package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +171 -97
  201. package/cjs/es6/synchronizers/synchronizer-ws-server-durable-object/index.cjs +980 -20
  202. package/cjs/es6/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs +980 -20
  203. package/cjs/es6/synchronizers/synchronizer-ws-server-simple/index.cjs +2 -1
  204. package/cjs/es6/synchronizers/synchronizer-ws-server-simple/with-schemas/index.cjs +2 -1
  205. package/cjs/es6/synchronizers/with-schemas/index.cjs +142 -93
  206. package/cjs/es6/ui-react-inspector/index.cjs +17 -8
  207. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +17 -8
  208. package/cjs/es6/with-schemas/index.cjs +32 -27
  209. package/cjs/index.cjs +31 -27
  210. package/cjs/mergeable-store/index.cjs +31 -27
  211. package/cjs/mergeable-store/with-schemas/index.cjs +31 -27
  212. package/cjs/min/index.cjs +1 -1
  213. package/cjs/min/index.cjs.gz +0 -0
  214. package/cjs/min/mergeable-store/index.cjs +1 -1
  215. package/cjs/min/mergeable-store/index.cjs.gz +0 -0
  216. package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
  217. package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  218. package/cjs/min/persisters/index.cjs +1 -1
  219. package/cjs/min/persisters/index.cjs.gz +0 -0
  220. package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
  221. package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
  222. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  223. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  224. package/cjs/min/persisters/persister-browser/index.cjs +1 -1
  225. package/cjs/min/persisters/persister-browser/index.cjs.gz +0 -0
  226. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs +1 -1
  227. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  228. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  229. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  230. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  231. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  232. package/cjs/min/persisters/persister-durable-object-storage/index.cjs +1 -0
  233. package/cjs/min/persisters/persister-durable-object-storage/index.cjs.gz +0 -0
  234. package/cjs/min/persisters/persister-durable-object-storage/with-schemas/index.cjs +1 -0
  235. package/cjs/min/persisters/persister-durable-object-storage/with-schemas/index.cjs.gz +0 -0
  236. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  237. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  238. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  239. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  240. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  241. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  242. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  243. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  244. package/cjs/min/persisters/persister-file/index.cjs +1 -1
  245. package/cjs/min/persisters/persister-file/index.cjs.gz +0 -0
  246. package/cjs/min/persisters/persister-file/with-schemas/index.cjs +1 -1
  247. package/cjs/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  248. package/cjs/min/persisters/persister-indexed-db/index.cjs +1 -1
  249. package/cjs/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  250. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -1
  251. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  252. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  253. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  254. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  255. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  256. package/cjs/min/persisters/persister-partykit-client/index.cjs +1 -1
  257. package/cjs/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  258. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -1
  259. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  260. package/cjs/min/persisters/persister-pglite/index.cjs +1 -1
  261. package/cjs/min/persisters/persister-pglite/index.cjs.gz +0 -0
  262. package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
  263. package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
  264. package/cjs/min/persisters/persister-postgres/index.cjs +1 -1
  265. package/cjs/min/persisters/persister-postgres/index.cjs.gz +0 -0
  266. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  267. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  268. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  269. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  270. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  271. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  272. package/cjs/min/persisters/persister-remote/index.cjs +1 -1
  273. package/cjs/min/persisters/persister-remote/index.cjs.gz +0 -0
  274. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs +1 -1
  275. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  276. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  277. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  278. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  279. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  280. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  281. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  282. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  283. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  284. package/cjs/min/persisters/persister-yjs/index.cjs +1 -1
  285. package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
  286. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  287. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  288. package/cjs/min/persisters/with-schemas/index.cjs +1 -1
  289. package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
  290. package/cjs/min/synchronizers/index.cjs +1 -1
  291. package/cjs/min/synchronizers/index.cjs.gz +0 -0
  292. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -1
  293. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  294. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -1
  295. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  296. package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -1
  297. package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  298. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  299. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  300. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  301. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  302. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  303. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  304. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  305. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  306. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  307. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  308. package/cjs/min/synchronizers/synchronizer-ws-server-durable-object/index.cjs +1 -1
  309. package/cjs/min/synchronizers/synchronizer-ws-server-durable-object/index.cjs.gz +0 -0
  310. package/cjs/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs +1 -1
  311. package/cjs/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs.gz +0 -0
  312. package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
  313. package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  314. package/cjs/min/ui-react-inspector/index.cjs +1 -1
  315. package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
  316. package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  317. package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  318. package/cjs/min/with-schemas/index.cjs +1 -1
  319. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  320. package/cjs/persisters/index.cjs +21 -9
  321. package/cjs/persisters/persister-automerge/index.cjs +17 -8
  322. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +17 -8
  323. package/cjs/persisters/persister-browser/index.cjs +17 -8
  324. package/cjs/persisters/persister-browser/with-schemas/index.cjs +17 -8
  325. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +21 -9
  326. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +21 -9
  327. package/cjs/persisters/persister-durable-object-storage/index.cjs +542 -0
  328. package/cjs/persisters/persister-durable-object-storage/with-schemas/index.cjs +542 -0
  329. package/cjs/persisters/persister-electric-sql/index.cjs +21 -9
  330. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +21 -9
  331. package/cjs/persisters/persister-expo-sqlite/index.cjs +21 -9
  332. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +21 -9
  333. package/cjs/persisters/persister-file/index.cjs +17 -8
  334. package/cjs/persisters/persister-file/with-schemas/index.cjs +17 -8
  335. package/cjs/persisters/persister-indexed-db/index.cjs +19 -9
  336. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +19 -9
  337. package/cjs/persisters/persister-libsql/index.cjs +21 -9
  338. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +21 -9
  339. package/cjs/persisters/persister-partykit-client/index.cjs +18 -9
  340. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +18 -9
  341. package/cjs/persisters/persister-pglite/index.cjs +19 -8
  342. package/cjs/persisters/persister-pglite/with-schemas/index.cjs +19 -8
  343. package/cjs/persisters/persister-postgres/index.cjs +19 -8
  344. package/cjs/persisters/persister-postgres/with-schemas/index.cjs +19 -8
  345. package/cjs/persisters/persister-powersync/index.cjs +21 -9
  346. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +21 -9
  347. package/cjs/persisters/persister-remote/index.cjs +19 -9
  348. package/cjs/persisters/persister-remote/with-schemas/index.cjs +19 -9
  349. package/cjs/persisters/persister-sqlite-wasm/index.cjs +21 -9
  350. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +21 -9
  351. package/cjs/persisters/persister-sqlite3/index.cjs +21 -9
  352. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +21 -9
  353. package/cjs/persisters/persister-yjs/index.cjs +17 -8
  354. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +17 -8
  355. package/cjs/persisters/with-schemas/index.cjs +21 -9
  356. package/cjs/synchronizers/index.cjs +119 -73
  357. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +119 -73
  358. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +119 -73
  359. package/cjs/synchronizers/synchronizer-local/index.cjs +128 -85
  360. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +128 -85
  361. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +137 -78
  362. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +137 -78
  363. package/cjs/synchronizers/synchronizer-ws-server/index.cjs +148 -77
  364. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +148 -77
  365. package/cjs/synchronizers/synchronizer-ws-server-durable-object/index.cjs +712 -17
  366. package/cjs/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.cjs +712 -17
  367. package/cjs/synchronizers/synchronizer-ws-server-simple/index.cjs +2 -1
  368. package/cjs/synchronizers/synchronizer-ws-server-simple/with-schemas/index.cjs +2 -1
  369. package/cjs/synchronizers/with-schemas/index.cjs +119 -73
  370. package/cjs/ui-react-inspector/index.cjs +17 -8
  371. package/cjs/ui-react-inspector/with-schemas/index.cjs +17 -8
  372. package/cjs/with-schemas/index.cjs +31 -27
  373. package/es6/index.js +32 -27
  374. package/es6/indexes/index.js +1 -1
  375. package/es6/indexes/with-schemas/index.js +1 -1
  376. package/es6/mergeable-store/index.js +31 -27
  377. package/es6/mergeable-store/with-schemas/index.js +31 -27
  378. package/es6/metrics/index.js +1 -1
  379. package/es6/metrics/with-schemas/index.js +1 -1
  380. package/es6/min/index.js +1 -1
  381. package/es6/min/index.js.gz +0 -0
  382. package/es6/min/indexes/index.js +1 -1
  383. package/es6/min/indexes/index.js.gz +0 -0
  384. package/es6/min/indexes/with-schemas/index.js +1 -1
  385. package/es6/min/indexes/with-schemas/index.js.gz +0 -0
  386. package/es6/min/mergeable-store/index.js +1 -1
  387. package/es6/min/mergeable-store/index.js.gz +0 -0
  388. package/es6/min/mergeable-store/with-schemas/index.js +1 -1
  389. package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  390. package/es6/min/metrics/index.js +1 -1
  391. package/es6/min/metrics/index.js.gz +0 -0
  392. package/es6/min/metrics/with-schemas/index.js +1 -1
  393. package/es6/min/metrics/with-schemas/index.js.gz +0 -0
  394. package/es6/min/persisters/index.js +1 -1
  395. package/es6/min/persisters/index.js.gz +0 -0
  396. package/es6/min/persisters/persister-automerge/index.js +1 -1
  397. package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  398. package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  399. package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  400. package/es6/min/persisters/persister-browser/index.js +1 -1
  401. package/es6/min/persisters/persister-browser/index.js.gz +0 -0
  402. package/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
  403. package/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  404. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  405. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  406. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  407. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  408. package/es6/min/persisters/persister-durable-object-storage/index.js +1 -0
  409. package/es6/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  410. package/es6/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -0
  411. package/es6/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  412. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  413. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  414. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  415. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  416. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  417. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  418. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  419. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  420. package/es6/min/persisters/persister-file/index.js +1 -1
  421. package/es6/min/persisters/persister-file/index.js.gz +0 -0
  422. package/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
  423. package/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  424. package/es6/min/persisters/persister-indexed-db/index.js +1 -1
  425. package/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  426. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  427. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  428. package/es6/min/persisters/persister-libsql/index.js +1 -1
  429. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  430. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  431. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  432. package/es6/min/persisters/persister-partykit-client/index.js +1 -1
  433. package/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  434. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  435. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  436. package/es6/min/persisters/persister-pglite/index.js +1 -1
  437. package/es6/min/persisters/persister-pglite/index.js.gz +0 -0
  438. package/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  439. package/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  440. package/es6/min/persisters/persister-postgres/index.js +1 -1
  441. package/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  442. package/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  443. package/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  444. package/es6/min/persisters/persister-powersync/index.js +1 -1
  445. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  446. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  447. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  448. package/es6/min/persisters/persister-remote/index.js +1 -1
  449. package/es6/min/persisters/persister-remote/index.js.gz +0 -0
  450. package/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
  451. package/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  452. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  453. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  454. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  455. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  456. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  457. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  458. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  459. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  460. package/es6/min/persisters/persister-yjs/index.js +1 -1
  461. package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  462. package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  463. package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  464. package/es6/min/persisters/with-schemas/index.js +1 -1
  465. package/es6/min/persisters/with-schemas/index.js.gz +0 -0
  466. package/es6/min/queries/index.js +1 -1
  467. package/es6/min/queries/index.js.gz +0 -0
  468. package/es6/min/queries/with-schemas/index.js +1 -1
  469. package/es6/min/queries/with-schemas/index.js.gz +0 -0
  470. package/es6/min/relationships/index.js +1 -1
  471. package/es6/min/relationships/index.js.gz +0 -0
  472. package/es6/min/relationships/with-schemas/index.js +1 -1
  473. package/es6/min/relationships/with-schemas/index.js.gz +0 -0
  474. package/es6/min/synchronizers/index.js +1 -1
  475. package/es6/min/synchronizers/index.js.gz +0 -0
  476. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  477. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  478. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  479. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  480. package/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  481. package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  482. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  483. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  484. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  485. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  486. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  487. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  488. package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  489. package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  490. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  491. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  492. package/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  493. package/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  494. package/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  495. package/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  496. package/es6/min/synchronizers/with-schemas/index.js +1 -1
  497. package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  498. package/es6/min/ui-react-dom/index.js +1 -1
  499. package/es6/min/ui-react-dom/index.js.gz +0 -0
  500. package/es6/min/ui-react-dom/with-schemas/index.js +1 -1
  501. package/es6/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  502. package/es6/min/ui-react-inspector/index.js +1 -1
  503. package/es6/min/ui-react-inspector/index.js.gz +0 -0
  504. package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  505. package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  506. package/es6/min/with-schemas/index.js +1 -1
  507. package/es6/min/with-schemas/index.js.gz +0 -0
  508. package/es6/persisters/index.js +21 -9
  509. package/es6/persisters/persister-automerge/index.js +17 -8
  510. package/es6/persisters/persister-automerge/with-schemas/index.js +17 -8
  511. package/es6/persisters/persister-browser/index.js +17 -8
  512. package/es6/persisters/persister-browser/with-schemas/index.js +17 -8
  513. package/es6/persisters/persister-cr-sqlite-wasm/index.js +21 -9
  514. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +21 -9
  515. package/es6/persisters/persister-durable-object-storage/index.js +684 -0
  516. package/es6/persisters/persister-durable-object-storage/with-schemas/index.js +684 -0
  517. package/es6/persisters/persister-electric-sql/index.js +21 -9
  518. package/es6/persisters/persister-electric-sql/with-schemas/index.js +21 -9
  519. package/es6/persisters/persister-expo-sqlite/index.js +21 -9
  520. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +21 -9
  521. package/es6/persisters/persister-file/index.js +18 -9
  522. package/es6/persisters/persister-file/with-schemas/index.js +18 -9
  523. package/es6/persisters/persister-indexed-db/index.js +19 -9
  524. package/es6/persisters/persister-indexed-db/with-schemas/index.js +19 -9
  525. package/es6/persisters/persister-libsql/index.js +21 -9
  526. package/es6/persisters/persister-libsql/with-schemas/index.js +21 -9
  527. package/es6/persisters/persister-partykit-client/index.js +23 -11
  528. package/es6/persisters/persister-partykit-client/with-schemas/index.js +23 -11
  529. package/es6/persisters/persister-pglite/index.js +19 -8
  530. package/es6/persisters/persister-pglite/with-schemas/index.js +19 -8
  531. package/es6/persisters/persister-postgres/index.js +19 -8
  532. package/es6/persisters/persister-postgres/with-schemas/index.js +19 -8
  533. package/es6/persisters/persister-powersync/index.js +21 -9
  534. package/es6/persisters/persister-powersync/with-schemas/index.js +21 -9
  535. package/es6/persisters/persister-remote/index.js +19 -9
  536. package/es6/persisters/persister-remote/with-schemas/index.js +19 -9
  537. package/es6/persisters/persister-sqlite-wasm/index.js +21 -9
  538. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +21 -9
  539. package/es6/persisters/persister-sqlite3/index.js +21 -9
  540. package/es6/persisters/persister-sqlite3/with-schemas/index.js +21 -9
  541. package/es6/persisters/persister-yjs/index.js +17 -8
  542. package/es6/persisters/persister-yjs/with-schemas/index.js +17 -8
  543. package/es6/persisters/with-schemas/index.js +21 -9
  544. package/es6/queries/index.js +1 -0
  545. package/es6/queries/with-schemas/index.js +1 -0
  546. package/es6/relationships/index.js +1 -1
  547. package/es6/relationships/with-schemas/index.js +1 -1
  548. package/es6/synchronizers/index.js +142 -93
  549. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +142 -93
  550. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +142 -93
  551. package/es6/synchronizers/synchronizer-local/index.js +145 -97
  552. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +145 -97
  553. package/es6/synchronizers/synchronizer-ws-client/index.js +160 -98
  554. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +160 -98
  555. package/es6/synchronizers/synchronizer-ws-server/index.js +171 -97
  556. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +171 -97
  557. package/es6/synchronizers/synchronizer-ws-server-durable-object/index.js +980 -20
  558. package/es6/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +980 -20
  559. package/es6/synchronizers/synchronizer-ws-server-simple/index.js +2 -1
  560. package/es6/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +2 -1
  561. package/es6/synchronizers/with-schemas/index.js +142 -93
  562. package/es6/ui-react-dom/index.js +8 -8
  563. package/es6/ui-react-dom/with-schemas/index.js +8 -8
  564. package/es6/ui-react-inspector/index.js +21 -12
  565. package/es6/ui-react-inspector/with-schemas/index.js +21 -12
  566. package/es6/with-schemas/index.js +32 -27
  567. package/index.js +31 -27
  568. package/mergeable-store/index.js +31 -27
  569. package/mergeable-store/with-schemas/index.js +31 -27
  570. package/min/index.js +1 -1
  571. package/min/index.js.gz +0 -0
  572. package/min/mergeable-store/index.js +1 -1
  573. package/min/mergeable-store/index.js.gz +0 -0
  574. package/min/mergeable-store/with-schemas/index.js +1 -1
  575. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  576. package/min/persisters/index.js +1 -1
  577. package/min/persisters/index.js.gz +0 -0
  578. package/min/persisters/persister-automerge/index.js +1 -1
  579. package/min/persisters/persister-automerge/index.js.gz +0 -0
  580. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  581. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  582. package/min/persisters/persister-browser/index.js +1 -1
  583. package/min/persisters/persister-browser/index.js.gz +0 -0
  584. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  585. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  586. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  587. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  588. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  589. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  590. package/min/persisters/persister-durable-object-storage/index.js +1 -0
  591. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  592. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -0
  593. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  594. package/min/persisters/persister-electric-sql/index.js +1 -1
  595. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  596. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  597. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  598. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  599. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  600. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  601. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  602. package/min/persisters/persister-file/index.js +1 -1
  603. package/min/persisters/persister-file/index.js.gz +0 -0
  604. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  605. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  606. package/min/persisters/persister-indexed-db/index.js +1 -1
  607. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  608. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  609. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  610. package/min/persisters/persister-libsql/index.js +1 -1
  611. package/min/persisters/persister-libsql/index.js.gz +0 -0
  612. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  613. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  614. package/min/persisters/persister-partykit-client/index.js +1 -1
  615. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  616. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  617. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  618. package/min/persisters/persister-pglite/index.js +1 -1
  619. package/min/persisters/persister-pglite/index.js.gz +0 -0
  620. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  621. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  622. package/min/persisters/persister-postgres/index.js +1 -1
  623. package/min/persisters/persister-postgres/index.js.gz +0 -0
  624. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  625. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  626. package/min/persisters/persister-powersync/index.js +1 -1
  627. package/min/persisters/persister-powersync/index.js.gz +0 -0
  628. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  629. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  630. package/min/persisters/persister-remote/index.js +1 -1
  631. package/min/persisters/persister-remote/index.js.gz +0 -0
  632. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  633. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  634. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  635. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  636. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  637. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  638. package/min/persisters/persister-sqlite3/index.js +1 -1
  639. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  640. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  641. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  642. package/min/persisters/persister-yjs/index.js +1 -1
  643. package/min/persisters/persister-yjs/index.js.gz +0 -0
  644. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  645. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  646. package/min/persisters/with-schemas/index.js +1 -1
  647. package/min/persisters/with-schemas/index.js.gz +0 -0
  648. package/min/synchronizers/index.js +1 -1
  649. package/min/synchronizers/index.js.gz +0 -0
  650. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  651. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  652. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  653. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  654. package/min/synchronizers/synchronizer-local/index.js +1 -1
  655. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  656. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  657. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  658. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  659. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  660. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  661. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  662. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  663. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  664. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  665. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  666. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  667. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  668. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  669. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  670. package/min/synchronizers/with-schemas/index.js +1 -1
  671. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  672. package/min/ui-react-dom/index.js +1 -1
  673. package/min/ui-react-dom/index.js.gz +0 -0
  674. package/min/ui-react-dom/with-schemas/index.js +1 -1
  675. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  676. package/min/ui-react-inspector/index.js +1 -1
  677. package/min/ui-react-inspector/index.js.gz +0 -0
  678. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  679. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  680. package/min/with-schemas/index.js +1 -1
  681. package/min/with-schemas/index.js.gz +0 -0
  682. package/package.json +112 -8
  683. package/persisters/index.js +21 -9
  684. package/persisters/persister-automerge/index.js +17 -8
  685. package/persisters/persister-automerge/with-schemas/index.js +17 -8
  686. package/persisters/persister-browser/index.js +17 -8
  687. package/persisters/persister-browser/with-schemas/index.js +17 -8
  688. package/persisters/persister-cr-sqlite-wasm/index.js +21 -9
  689. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +21 -9
  690. package/persisters/persister-durable-object-storage/index.js +539 -0
  691. package/persisters/persister-durable-object-storage/with-schemas/index.js +539 -0
  692. package/persisters/persister-electric-sql/index.js +21 -9
  693. package/persisters/persister-electric-sql/with-schemas/index.js +21 -9
  694. package/persisters/persister-expo-sqlite/index.js +21 -9
  695. package/persisters/persister-expo-sqlite/with-schemas/index.js +21 -9
  696. package/persisters/persister-file/index.js +18 -9
  697. package/persisters/persister-file/with-schemas/index.js +18 -9
  698. package/persisters/persister-indexed-db/index.js +19 -9
  699. package/persisters/persister-indexed-db/with-schemas/index.js +19 -9
  700. package/persisters/persister-libsql/index.js +21 -9
  701. package/persisters/persister-libsql/with-schemas/index.js +21 -9
  702. package/persisters/persister-partykit-client/index.js +18 -9
  703. package/persisters/persister-partykit-client/with-schemas/index.js +18 -9
  704. package/persisters/persister-pglite/index.js +19 -8
  705. package/persisters/persister-pglite/with-schemas/index.js +19 -8
  706. package/persisters/persister-postgres/index.js +19 -8
  707. package/persisters/persister-postgres/with-schemas/index.js +19 -8
  708. package/persisters/persister-powersync/index.js +21 -9
  709. package/persisters/persister-powersync/with-schemas/index.js +21 -9
  710. package/persisters/persister-remote/index.js +19 -9
  711. package/persisters/persister-remote/with-schemas/index.js +19 -9
  712. package/persisters/persister-sqlite-wasm/index.js +21 -9
  713. package/persisters/persister-sqlite-wasm/with-schemas/index.js +21 -9
  714. package/persisters/persister-sqlite3/index.js +21 -9
  715. package/persisters/persister-sqlite3/with-schemas/index.js +21 -9
  716. package/persisters/persister-yjs/index.js +17 -8
  717. package/persisters/persister-yjs/with-schemas/index.js +17 -8
  718. package/persisters/with-schemas/index.js +21 -9
  719. package/readme.md +2 -2
  720. package/releases.md +23 -1
  721. package/synchronizers/index.js +119 -73
  722. package/synchronizers/synchronizer-broadcast-channel/index.js +119 -73
  723. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +119 -73
  724. package/synchronizers/synchronizer-local/index.js +128 -85
  725. package/synchronizers/synchronizer-local/with-schemas/index.js +128 -85
  726. package/synchronizers/synchronizer-ws-client/index.js +137 -78
  727. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +137 -78
  728. package/synchronizers/synchronizer-ws-server/index.js +148 -77
  729. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +148 -77
  730. package/synchronizers/synchronizer-ws-server-durable-object/index.js +712 -17
  731. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +712 -17
  732. package/synchronizers/synchronizer-ws-server-simple/index.js +2 -1
  733. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +2 -1
  734. package/synchronizers/with-schemas/index.js +119 -73
  735. package/ui-react-dom/index.js +8 -8
  736. package/ui-react-dom/with-schemas/index.js +8 -8
  737. package/ui-react-inspector/index.js +21 -12
  738. package/ui-react-inspector/with-schemas/index.js +21 -12
  739. package/umd/es6/index.js +32 -27
  740. package/umd/es6/indexes/index.js +5 -1
  741. package/umd/es6/indexes/with-schemas/index.js +5 -1
  742. package/umd/es6/mergeable-store/index.js +31 -27
  743. package/umd/es6/mergeable-store/with-schemas/index.js +31 -27
  744. package/umd/es6/metrics/index.js +5 -1
  745. package/umd/es6/metrics/with-schemas/index.js +5 -1
  746. package/umd/es6/min/index.js +1 -1
  747. package/umd/es6/min/index.js.gz +0 -0
  748. package/umd/es6/min/indexes/index.js +1 -1
  749. package/umd/es6/min/indexes/index.js.gz +0 -0
  750. package/umd/es6/min/indexes/with-schemas/index.js +1 -1
  751. package/umd/es6/min/indexes/with-schemas/index.js.gz +0 -0
  752. package/umd/es6/min/mergeable-store/index.js +1 -1
  753. package/umd/es6/min/mergeable-store/index.js.gz +0 -0
  754. package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
  755. package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  756. package/umd/es6/min/metrics/index.js +1 -1
  757. package/umd/es6/min/metrics/index.js.gz +0 -0
  758. package/umd/es6/min/metrics/with-schemas/index.js +1 -1
  759. package/umd/es6/min/metrics/with-schemas/index.js.gz +0 -0
  760. package/umd/es6/min/persisters/index.js +1 -1
  761. package/umd/es6/min/persisters/index.js.gz +0 -0
  762. package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
  763. package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  764. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  765. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  766. package/umd/es6/min/persisters/persister-browser/index.js +1 -1
  767. package/umd/es6/min/persisters/persister-browser/index.js.gz +0 -0
  768. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js +1 -1
  769. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  770. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  771. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  772. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  773. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  774. package/umd/es6/min/persisters/persister-durable-object-storage/index.js +1 -0
  775. package/umd/es6/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  776. package/umd/es6/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -0
  777. package/umd/es6/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  778. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  779. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  780. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  781. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  782. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  783. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  784. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  785. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  786. package/umd/es6/min/persisters/persister-file/index.js +1 -1
  787. package/umd/es6/min/persisters/persister-file/index.js.gz +0 -0
  788. package/umd/es6/min/persisters/persister-file/with-schemas/index.js +1 -1
  789. package/umd/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  790. package/umd/es6/min/persisters/persister-indexed-db/index.js +1 -1
  791. package/umd/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  792. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  793. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  794. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  795. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  796. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  797. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  798. package/umd/es6/min/persisters/persister-partykit-client/index.js +1 -1
  799. package/umd/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  800. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  801. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  802. package/umd/es6/min/persisters/persister-pglite/index.js +1 -1
  803. package/umd/es6/min/persisters/persister-pglite/index.js.gz +0 -0
  804. package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  805. package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  806. package/umd/es6/min/persisters/persister-postgres/index.js +1 -1
  807. package/umd/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  808. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  809. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  810. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  811. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  812. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  813. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  814. package/umd/es6/min/persisters/persister-remote/index.js +1 -1
  815. package/umd/es6/min/persisters/persister-remote/index.js.gz +0 -0
  816. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js +1 -1
  817. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  818. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  819. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  820. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  821. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  822. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  823. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  824. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  825. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  826. package/umd/es6/min/persisters/persister-yjs/index.js +1 -1
  827. package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  828. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  829. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  830. package/umd/es6/min/persisters/with-schemas/index.js +1 -1
  831. package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
  832. package/umd/es6/min/queries/index.js +1 -1
  833. package/umd/es6/min/queries/index.js.gz +0 -0
  834. package/umd/es6/min/queries/with-schemas/index.js +1 -1
  835. package/umd/es6/min/queries/with-schemas/index.js.gz +0 -0
  836. package/umd/es6/min/relationships/index.js +1 -1
  837. package/umd/es6/min/relationships/index.js.gz +0 -0
  838. package/umd/es6/min/relationships/with-schemas/index.js +1 -1
  839. package/umd/es6/min/relationships/with-schemas/index.js.gz +0 -0
  840. package/umd/es6/min/synchronizers/index.js +1 -1
  841. package/umd/es6/min/synchronizers/index.js.gz +0 -0
  842. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  843. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  844. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  845. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  846. package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  847. package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  848. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  849. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  850. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  851. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  852. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  853. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  854. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  855. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  856. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  857. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  858. package/umd/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  859. package/umd/es6/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  860. package/umd/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  861. package/umd/es6/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  862. package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
  863. package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  864. package/umd/es6/min/ui-react-inspector/index.js +1 -1
  865. package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
  866. package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  867. package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  868. package/umd/es6/min/with-schemas/index.js +1 -1
  869. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  870. package/umd/es6/persisters/index.js +21 -9
  871. package/umd/es6/persisters/persister-automerge/index.js +17 -8
  872. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +17 -8
  873. package/umd/es6/persisters/persister-browser/index.js +17 -8
  874. package/umd/es6/persisters/persister-browser/with-schemas/index.js +17 -8
  875. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +21 -9
  876. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +21 -9
  877. package/umd/es6/persisters/persister-durable-object-storage/index.js +707 -0
  878. package/umd/es6/persisters/persister-durable-object-storage/with-schemas/index.js +707 -0
  879. package/umd/es6/persisters/persister-electric-sql/index.js +21 -9
  880. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +21 -9
  881. package/umd/es6/persisters/persister-expo-sqlite/index.js +21 -9
  882. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +21 -9
  883. package/umd/es6/persisters/persister-file/index.js +17 -8
  884. package/umd/es6/persisters/persister-file/with-schemas/index.js +17 -8
  885. package/umd/es6/persisters/persister-indexed-db/index.js +19 -9
  886. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +19 -9
  887. package/umd/es6/persisters/persister-libsql/index.js +21 -9
  888. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +21 -9
  889. package/umd/es6/persisters/persister-partykit-client/index.js +23 -11
  890. package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +23 -11
  891. package/umd/es6/persisters/persister-pglite/index.js +19 -8
  892. package/umd/es6/persisters/persister-pglite/with-schemas/index.js +19 -8
  893. package/umd/es6/persisters/persister-postgres/index.js +19 -8
  894. package/umd/es6/persisters/persister-postgres/with-schemas/index.js +19 -8
  895. package/umd/es6/persisters/persister-powersync/index.js +21 -9
  896. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +21 -9
  897. package/umd/es6/persisters/persister-remote/index.js +19 -9
  898. package/umd/es6/persisters/persister-remote/with-schemas/index.js +19 -9
  899. package/umd/es6/persisters/persister-sqlite-wasm/index.js +21 -9
  900. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +21 -9
  901. package/umd/es6/persisters/persister-sqlite3/index.js +21 -9
  902. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +21 -9
  903. package/umd/es6/persisters/persister-yjs/index.js +17 -8
  904. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +17 -8
  905. package/umd/es6/persisters/with-schemas/index.js +21 -9
  906. package/umd/es6/queries/index.js +1 -0
  907. package/umd/es6/queries/with-schemas/index.js +1 -0
  908. package/umd/es6/relationships/index.js +5 -1
  909. package/umd/es6/relationships/with-schemas/index.js +5 -1
  910. package/umd/es6/synchronizers/index.js +143 -101
  911. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +143 -101
  912. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +143 -101
  913. package/umd/es6/synchronizers/synchronizer-local/index.js +146 -105
  914. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +146 -105
  915. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +161 -106
  916. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +161 -106
  917. package/umd/es6/synchronizers/synchronizer-ws-server/index.js +172 -105
  918. package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +172 -105
  919. package/umd/es6/synchronizers/synchronizer-ws-server-durable-object/index.js +989 -21
  920. package/umd/es6/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +989 -21
  921. package/umd/es6/synchronizers/synchronizer-ws-server-simple/index.js +2 -1
  922. package/umd/es6/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +2 -1
  923. package/umd/es6/synchronizers/with-schemas/index.js +143 -101
  924. package/umd/es6/ui-react-inspector/index.js +17 -8
  925. package/umd/es6/ui-react-inspector/with-schemas/index.js +17 -8
  926. package/umd/es6/with-schemas/index.js +32 -27
  927. package/umd/index.js +31 -27
  928. package/umd/mergeable-store/index.js +31 -27
  929. package/umd/mergeable-store/with-schemas/index.js +31 -27
  930. package/umd/min/index.js +1 -1
  931. package/umd/min/index.js.gz +0 -0
  932. package/umd/min/mergeable-store/index.js +1 -1
  933. package/umd/min/mergeable-store/index.js.gz +0 -0
  934. package/umd/min/mergeable-store/with-schemas/index.js +1 -1
  935. package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
  936. package/umd/min/persisters/index.js +1 -1
  937. package/umd/min/persisters/index.js.gz +0 -0
  938. package/umd/min/persisters/persister-automerge/index.js +1 -1
  939. package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
  940. package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  941. package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  942. package/umd/min/persisters/persister-browser/index.js +1 -1
  943. package/umd/min/persisters/persister-browser/index.js.gz +0 -0
  944. package/umd/min/persisters/persister-browser/with-schemas/index.js +1 -1
  945. package/umd/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  946. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  947. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  948. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  949. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  950. package/umd/min/persisters/persister-durable-object-storage/index.js +1 -0
  951. package/umd/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  952. package/umd/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -0
  953. package/umd/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  954. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  955. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  956. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  957. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  958. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  959. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  960. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  961. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  962. package/umd/min/persisters/persister-file/index.js +1 -1
  963. package/umd/min/persisters/persister-file/index.js.gz +0 -0
  964. package/umd/min/persisters/persister-file/with-schemas/index.js +1 -1
  965. package/umd/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  966. package/umd/min/persisters/persister-indexed-db/index.js +1 -1
  967. package/umd/min/persisters/persister-indexed-db/index.js.gz +0 -0
  968. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  969. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  970. package/umd/min/persisters/persister-libsql/index.js +1 -1
  971. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  972. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  973. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  974. package/umd/min/persisters/persister-partykit-client/index.js +1 -1
  975. package/umd/min/persisters/persister-partykit-client/index.js.gz +0 -0
  976. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  977. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  978. package/umd/min/persisters/persister-pglite/index.js +1 -1
  979. package/umd/min/persisters/persister-pglite/index.js.gz +0 -0
  980. package/umd/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  981. package/umd/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  982. package/umd/min/persisters/persister-postgres/index.js +1 -1
  983. package/umd/min/persisters/persister-postgres/index.js.gz +0 -0
  984. package/umd/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  985. package/umd/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  986. package/umd/min/persisters/persister-powersync/index.js +1 -1
  987. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  988. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  989. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  990. package/umd/min/persisters/persister-remote/index.js +1 -1
  991. package/umd/min/persisters/persister-remote/index.js.gz +0 -0
  992. package/umd/min/persisters/persister-remote/with-schemas/index.js +1 -1
  993. package/umd/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  994. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  995. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  996. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  997. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  998. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  999. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  1000. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  1001. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  1002. package/umd/min/persisters/persister-yjs/index.js +1 -1
  1003. package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
  1004. package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  1005. package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  1006. package/umd/min/persisters/with-schemas/index.js +1 -1
  1007. package/umd/min/persisters/with-schemas/index.js.gz +0 -0
  1008. package/umd/min/synchronizers/index.js +1 -1
  1009. package/umd/min/synchronizers/index.js.gz +0 -0
  1010. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  1011. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  1012. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  1013. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  1014. package/umd/min/synchronizers/synchronizer-local/index.js +1 -1
  1015. package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  1016. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  1017. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  1018. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  1019. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  1020. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  1021. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  1022. package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  1023. package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  1024. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  1025. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  1026. package/umd/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  1027. package/umd/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  1028. package/umd/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  1029. package/umd/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  1030. package/umd/min/synchronizers/with-schemas/index.js +1 -1
  1031. package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
  1032. package/umd/min/ui-react-inspector/index.js +1 -1
  1033. package/umd/min/ui-react-inspector/index.js.gz +0 -0
  1034. package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
  1035. package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  1036. package/umd/min/with-schemas/index.js +1 -1
  1037. package/umd/min/with-schemas/index.js.gz +0 -0
  1038. package/umd/persisters/index.js +21 -9
  1039. package/umd/persisters/persister-automerge/index.js +17 -8
  1040. package/umd/persisters/persister-automerge/with-schemas/index.js +17 -8
  1041. package/umd/persisters/persister-browser/index.js +17 -8
  1042. package/umd/persisters/persister-browser/with-schemas/index.js +17 -8
  1043. package/umd/persisters/persister-cr-sqlite-wasm/index.js +21 -9
  1044. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +21 -9
  1045. package/umd/persisters/persister-durable-object-storage/index.js +562 -0
  1046. package/umd/persisters/persister-durable-object-storage/with-schemas/index.js +562 -0
  1047. package/umd/persisters/persister-electric-sql/index.js +21 -9
  1048. package/umd/persisters/persister-electric-sql/with-schemas/index.js +21 -9
  1049. package/umd/persisters/persister-expo-sqlite/index.js +21 -9
  1050. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +21 -9
  1051. package/umd/persisters/persister-file/index.js +17 -8
  1052. package/umd/persisters/persister-file/with-schemas/index.js +17 -8
  1053. package/umd/persisters/persister-indexed-db/index.js +19 -9
  1054. package/umd/persisters/persister-indexed-db/with-schemas/index.js +19 -9
  1055. package/umd/persisters/persister-libsql/index.js +21 -9
  1056. package/umd/persisters/persister-libsql/with-schemas/index.js +21 -9
  1057. package/umd/persisters/persister-partykit-client/index.js +18 -9
  1058. package/umd/persisters/persister-partykit-client/with-schemas/index.js +18 -9
  1059. package/umd/persisters/persister-pglite/index.js +19 -8
  1060. package/umd/persisters/persister-pglite/with-schemas/index.js +19 -8
  1061. package/umd/persisters/persister-postgres/index.js +19 -8
  1062. package/umd/persisters/persister-postgres/with-schemas/index.js +19 -8
  1063. package/umd/persisters/persister-powersync/index.js +21 -9
  1064. package/umd/persisters/persister-powersync/with-schemas/index.js +21 -9
  1065. package/umd/persisters/persister-remote/index.js +19 -9
  1066. package/umd/persisters/persister-remote/with-schemas/index.js +19 -9
  1067. package/umd/persisters/persister-sqlite-wasm/index.js +21 -9
  1068. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +21 -9
  1069. package/umd/persisters/persister-sqlite3/index.js +21 -9
  1070. package/umd/persisters/persister-sqlite3/with-schemas/index.js +21 -9
  1071. package/umd/persisters/persister-yjs/index.js +17 -8
  1072. package/umd/persisters/persister-yjs/with-schemas/index.js +17 -8
  1073. package/umd/persisters/with-schemas/index.js +21 -9
  1074. package/umd/synchronizers/index.js +120 -76
  1075. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +120 -76
  1076. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +120 -76
  1077. package/umd/synchronizers/synchronizer-local/index.js +129 -88
  1078. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +129 -88
  1079. package/umd/synchronizers/synchronizer-ws-client/index.js +138 -81
  1080. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +138 -81
  1081. package/umd/synchronizers/synchronizer-ws-server/index.js +149 -80
  1082. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +149 -80
  1083. package/umd/synchronizers/synchronizer-ws-server-durable-object/index.js +720 -18
  1084. package/umd/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +720 -18
  1085. package/umd/synchronizers/synchronizer-ws-server-simple/index.js +2 -1
  1086. package/umd/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +2 -1
  1087. package/umd/synchronizers/with-schemas/index.js +120 -76
  1088. package/umd/ui-react-inspector/index.js +17 -8
  1089. package/umd/ui-react-inspector/with-schemas/index.js +17 -8
  1090. package/umd/with-schemas/index.js +31 -27
  1091. package/with-schemas/index.js +31 -27
@@ -6,8 +6,9 @@ const STRING = getTypeOf(EMPTY_STRING);
6
6
  const UNDEFINED = '\uFFFC';
7
7
 
8
8
  const promise = Promise;
9
+ const THOUSAND = 1e3;
9
10
  const startInterval = (callback, sec, immediate) => {
10
- return setInterval(callback, sec * 1e3);
11
+ return setInterval(callback, sec * THOUSAND);
11
12
  };
12
13
  const stopInterval = clearInterval;
13
14
  const isUndefined = (thing) => thing == void 0;
@@ -240,12 +241,16 @@ const getListenerFunctions = (getThing) => {
240
241
 
241
242
  const scheduleRunning = mapNew();
242
243
  const scheduleActions = mapNew();
243
- const getStoreFunctions = (persist = 1 /* StoreOnly */, store) =>
244
+ const getStoreFunctions = (
245
+ persist = 1 /* StoreOnly */,
246
+ store,
247
+ isSynchronizer,
248
+ ) =>
244
249
  persist != 1 /* StoreOnly */ && store.isMergeable()
245
250
  ? [
246
251
  1,
247
252
  store.getMergeableContent,
248
- store.getTransactionMergeableChanges,
253
+ () => store.getTransactionMergeableChanges(!isSynchronizer),
249
254
  ([[changedTables], [changedValues]]) =>
250
255
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
251
256
  store.setDefaultContent,
@@ -269,6 +274,7 @@ const createCustomPersister = (
269
274
  onIgnoredError,
270
275
  persist,
271
276
  extra = {},
277
+ isSynchronizer = 0,
272
278
  scheduleId = [],
273
279
  ) => {
274
280
  let status = 0; /* Idle */
@@ -286,7 +292,7 @@ const createCustomPersister = (
286
292
  getChanges,
287
293
  hasChanges,
288
294
  setDefaultContent,
289
- ] = getStoreFunctions(persist, store);
295
+ ] = getStoreFunctions(persist, store, isSynchronizer);
290
296
  const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
291
297
  () => persister,
292
298
  );
@@ -335,7 +341,7 @@ const createCustomPersister = (
335
341
  } else if (initialContent) {
336
342
  setDefaultContent(initialContent);
337
343
  } else {
338
- errorNew(`Content is not an array ${content}`);
344
+ errorNew(`Content is not an array: ${content}`);
339
345
  }
340
346
  } catch (error) {
341
347
  onIgnoredError?.(error);
@@ -349,7 +355,8 @@ const createCustomPersister = (
349
355
  return persister;
350
356
  };
351
357
  const startAutoLoad = async (initialContent) => {
352
- await stopAutoLoad().load(initialContent);
358
+ stopAutoLoad();
359
+ await load(initialContent);
353
360
  try {
354
361
  autoLoadHandle = await addPersisterListener(async (content, changes) => {
355
362
  if (changes || content) {
@@ -396,7 +403,8 @@ const createCustomPersister = (
396
403
  return persister;
397
404
  };
398
405
  const startAutoSave = async () => {
399
- await stopAutoSave().save();
406
+ stopAutoSave();
407
+ await save();
400
408
  autoSaveListenerId = store.addDidFinishTransactionListener(() => {
401
409
  const changes = getChanges();
402
410
  if (hasChanges(changes)) {
@@ -406,8 +414,10 @@ const createCustomPersister = (
406
414
  return persister;
407
415
  };
408
416
  const stopAutoSave = () => {
409
- ifNotUndefined(autoSaveListenerId, store.delListener);
410
- autoSaveListenerId = void 0;
417
+ if (autoSaveListenerId) {
418
+ store.delListener(autoSaveListenerId);
419
+ autoSaveListenerId = void 0;
420
+ }
411
421
  return persister;
412
422
  };
413
423
  const isAutoSaving = () => !isUndefined(autoSaveListenerId);
@@ -766,6 +776,7 @@ const createJsonPersister = (
766
776
  onIgnoredError,
767
777
  persist,
768
778
  {[getThing]: () => thing, destroy},
779
+ 0,
769
780
  thing,
770
781
  );
771
782
  return persister;
@@ -892,6 +903,7 @@ const createTabularPersister = (
892
903
  onIgnoredError,
893
904
  persist,
894
905
  {[getThing]: () => thing, destroy},
906
+ 0,
895
907
  thing,
896
908
  );
897
909
  return persister;
@@ -6,8 +6,9 @@ const STRING = getTypeOf(EMPTY_STRING);
6
6
  const UNDEFINED = '\uFFFC';
7
7
 
8
8
  const promise = Promise;
9
+ const THOUSAND = 1e3;
9
10
  const startInterval = (callback, sec, immediate) => {
10
- return setInterval(callback, sec * 1e3);
11
+ return setInterval(callback, sec * THOUSAND);
11
12
  };
12
13
  const stopInterval = clearInterval;
13
14
  const isUndefined = (thing) => thing == void 0;
@@ -240,12 +241,16 @@ const getListenerFunctions = (getThing) => {
240
241
 
241
242
  const scheduleRunning = mapNew();
242
243
  const scheduleActions = mapNew();
243
- const getStoreFunctions = (persist = 1 /* StoreOnly */, store) =>
244
+ const getStoreFunctions = (
245
+ persist = 1 /* StoreOnly */,
246
+ store,
247
+ isSynchronizer,
248
+ ) =>
244
249
  persist != 1 /* StoreOnly */ && store.isMergeable()
245
250
  ? [
246
251
  1,
247
252
  store.getMergeableContent,
248
- store.getTransactionMergeableChanges,
253
+ () => store.getTransactionMergeableChanges(!isSynchronizer),
249
254
  ([[changedTables], [changedValues]]) =>
250
255
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
251
256
  store.setDefaultContent,
@@ -269,6 +274,7 @@ const createCustomPersister = (
269
274
  onIgnoredError,
270
275
  persist,
271
276
  extra = {},
277
+ isSynchronizer = 0,
272
278
  scheduleId = [],
273
279
  ) => {
274
280
  let status = 0; /* Idle */
@@ -286,7 +292,7 @@ const createCustomPersister = (
286
292
  getChanges,
287
293
  hasChanges,
288
294
  setDefaultContent,
289
- ] = getStoreFunctions(persist, store);
295
+ ] = getStoreFunctions(persist, store, isSynchronizer);
290
296
  const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
291
297
  () => persister,
292
298
  );
@@ -335,7 +341,7 @@ const createCustomPersister = (
335
341
  } else if (initialContent) {
336
342
  setDefaultContent(initialContent);
337
343
  } else {
338
- errorNew(`Content is not an array ${content}`);
344
+ errorNew(`Content is not an array: ${content}`);
339
345
  }
340
346
  } catch (error) {
341
347
  onIgnoredError?.(error);
@@ -349,7 +355,8 @@ const createCustomPersister = (
349
355
  return persister;
350
356
  };
351
357
  const startAutoLoad = async (initialContent) => {
352
- await stopAutoLoad().load(initialContent);
358
+ stopAutoLoad();
359
+ await load(initialContent);
353
360
  try {
354
361
  autoLoadHandle = await addPersisterListener(async (content, changes) => {
355
362
  if (changes || content) {
@@ -396,7 +403,8 @@ const createCustomPersister = (
396
403
  return persister;
397
404
  };
398
405
  const startAutoSave = async () => {
399
- await stopAutoSave().save();
406
+ stopAutoSave();
407
+ await save();
400
408
  autoSaveListenerId = store.addDidFinishTransactionListener(() => {
401
409
  const changes = getChanges();
402
410
  if (hasChanges(changes)) {
@@ -406,8 +414,10 @@ const createCustomPersister = (
406
414
  return persister;
407
415
  };
408
416
  const stopAutoSave = () => {
409
- ifNotUndefined(autoSaveListenerId, store.delListener);
410
- autoSaveListenerId = void 0;
417
+ if (autoSaveListenerId) {
418
+ store.delListener(autoSaveListenerId);
419
+ autoSaveListenerId = void 0;
420
+ }
411
421
  return persister;
412
422
  };
413
423
  const isAutoSaving = () => !isUndefined(autoSaveListenerId);
@@ -766,6 +776,7 @@ const createJsonPersister = (
766
776
  onIgnoredError,
767
777
  persist,
768
778
  {[getThing]: () => thing, destroy},
779
+ 0,
769
780
  thing,
770
781
  );
771
782
  return persister;
@@ -892,6 +903,7 @@ const createTabularPersister = (
892
903
  onIgnoredError,
893
904
  persist,
894
905
  {[getThing]: () => thing, destroy},
906
+ 0,
895
907
  thing,
896
908
  );
897
909
  return persister;
@@ -189,12 +189,16 @@ const getListenerFunctions = (getThing) => {
189
189
 
190
190
  const scheduleRunning = mapNew();
191
191
  const scheduleActions = mapNew();
192
- const getStoreFunctions = (persist = 1 /* StoreOnly */, store) =>
192
+ const getStoreFunctions = (
193
+ persist = 1 /* StoreOnly */,
194
+ store,
195
+ isSynchronizer,
196
+ ) =>
193
197
  persist != 1 /* StoreOnly */ && store.isMergeable()
194
198
  ? [
195
199
  1,
196
200
  store.getMergeableContent,
197
- store.getTransactionMergeableChanges,
201
+ () => store.getTransactionMergeableChanges(!isSynchronizer),
198
202
  ([[changedTables], [changedValues]]) =>
199
203
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
200
204
  store.setDefaultContent,
@@ -218,6 +222,7 @@ const createCustomPersister = (
218
222
  onIgnoredError,
219
223
  persist,
220
224
  extra = {},
225
+ isSynchronizer = 0,
221
226
  scheduleId = [],
222
227
  ) => {
223
228
  let status = 0; /* Idle */
@@ -235,7 +240,7 @@ const createCustomPersister = (
235
240
  getChanges,
236
241
  hasChanges,
237
242
  setDefaultContent,
238
- ] = getStoreFunctions(persist, store);
243
+ ] = getStoreFunctions(persist, store, isSynchronizer);
239
244
  const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
240
245
  () => persister,
241
246
  );
@@ -284,7 +289,7 @@ const createCustomPersister = (
284
289
  } else if (initialContent) {
285
290
  setDefaultContent(initialContent);
286
291
  } else {
287
- errorNew(`Content is not an array ${content}`);
292
+ errorNew(`Content is not an array: ${content}`);
288
293
  }
289
294
  } catch (error) {
290
295
  onIgnoredError?.(error);
@@ -298,7 +303,8 @@ const createCustomPersister = (
298
303
  return persister;
299
304
  };
300
305
  const startAutoLoad = async (initialContent) => {
301
- await stopAutoLoad().load(initialContent);
306
+ stopAutoLoad();
307
+ await load(initialContent);
302
308
  try {
303
309
  autoLoadHandle = await addPersisterListener(async (content, changes) => {
304
310
  if (changes || content) {
@@ -345,7 +351,8 @@ const createCustomPersister = (
345
351
  return persister;
346
352
  };
347
353
  const startAutoSave = async () => {
348
- await stopAutoSave().save();
354
+ stopAutoSave();
355
+ await save();
349
356
  autoSaveListenerId = store.addDidFinishTransactionListener(() => {
350
357
  const changes = getChanges();
351
358
  if (hasChanges(changes)) {
@@ -355,8 +362,10 @@ const createCustomPersister = (
355
362
  return persister;
356
363
  };
357
364
  const stopAutoSave = () => {
358
- ifNotUndefined(autoSaveListenerId, store.delListener);
359
- autoSaveListenerId = void 0;
365
+ if (autoSaveListenerId) {
366
+ store.delListener(autoSaveListenerId);
367
+ autoSaveListenerId = void 0;
368
+ }
360
369
  return persister;
361
370
  };
362
371
  const isAutoSaving = () => !isUndefined(autoSaveListenerId);
@@ -189,12 +189,16 @@ const getListenerFunctions = (getThing) => {
189
189
 
190
190
  const scheduleRunning = mapNew();
191
191
  const scheduleActions = mapNew();
192
- const getStoreFunctions = (persist = 1 /* StoreOnly */, store) =>
192
+ const getStoreFunctions = (
193
+ persist = 1 /* StoreOnly */,
194
+ store,
195
+ isSynchronizer,
196
+ ) =>
193
197
  persist != 1 /* StoreOnly */ && store.isMergeable()
194
198
  ? [
195
199
  1,
196
200
  store.getMergeableContent,
197
- store.getTransactionMergeableChanges,
201
+ () => store.getTransactionMergeableChanges(!isSynchronizer),
198
202
  ([[changedTables], [changedValues]]) =>
199
203
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
200
204
  store.setDefaultContent,
@@ -218,6 +222,7 @@ const createCustomPersister = (
218
222
  onIgnoredError,
219
223
  persist,
220
224
  extra = {},
225
+ isSynchronizer = 0,
221
226
  scheduleId = [],
222
227
  ) => {
223
228
  let status = 0; /* Idle */
@@ -235,7 +240,7 @@ const createCustomPersister = (
235
240
  getChanges,
236
241
  hasChanges,
237
242
  setDefaultContent,
238
- ] = getStoreFunctions(persist, store);
243
+ ] = getStoreFunctions(persist, store, isSynchronizer);
239
244
  const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
240
245
  () => persister,
241
246
  );
@@ -284,7 +289,7 @@ const createCustomPersister = (
284
289
  } else if (initialContent) {
285
290
  setDefaultContent(initialContent);
286
291
  } else {
287
- errorNew(`Content is not an array ${content}`);
292
+ errorNew(`Content is not an array: ${content}`);
288
293
  }
289
294
  } catch (error) {
290
295
  onIgnoredError?.(error);
@@ -298,7 +303,8 @@ const createCustomPersister = (
298
303
  return persister;
299
304
  };
300
305
  const startAutoLoad = async (initialContent) => {
301
- await stopAutoLoad().load(initialContent);
306
+ stopAutoLoad();
307
+ await load(initialContent);
302
308
  try {
303
309
  autoLoadHandle = await addPersisterListener(async (content, changes) => {
304
310
  if (changes || content) {
@@ -345,7 +351,8 @@ const createCustomPersister = (
345
351
  return persister;
346
352
  };
347
353
  const startAutoSave = async () => {
348
- await stopAutoSave().save();
354
+ stopAutoSave();
355
+ await save();
349
356
  autoSaveListenerId = store.addDidFinishTransactionListener(() => {
350
357
  const changes = getChanges();
351
358
  if (hasChanges(changes)) {
@@ -355,8 +362,10 @@ const createCustomPersister = (
355
362
  return persister;
356
363
  };
357
364
  const stopAutoSave = () => {
358
- ifNotUndefined(autoSaveListenerId, store.delListener);
359
- autoSaveListenerId = void 0;
365
+ if (autoSaveListenerId) {
366
+ store.delListener(autoSaveListenerId);
367
+ autoSaveListenerId = void 0;
368
+ }
360
369
  return persister;
361
370
  };
362
371
  const isAutoSaving = () => !isUndefined(autoSaveListenerId);
@@ -7,8 +7,9 @@ const UNDEFINED = '\uFFFC';
7
7
  const strMatch = (str, regex) => str?.match(regex);
8
8
 
9
9
  const promise = Promise;
10
+ const THOUSAND = 1e3;
10
11
  const startInterval = (callback, sec, immediate) => {
11
- return setInterval(callback, sec * 1e3);
12
+ return setInterval(callback, sec * THOUSAND);
12
13
  };
13
14
  const stopInterval = clearInterval;
14
15
  const isUndefined = (thing) => thing == void 0;
@@ -214,12 +215,16 @@ const Persists = {
214
215
  };
215
216
  const scheduleRunning = mapNew();
216
217
  const scheduleActions = mapNew();
217
- const getStoreFunctions = (persist = 1 /* StoreOnly */, store) =>
218
+ const getStoreFunctions = (
219
+ persist = 1 /* StoreOnly */,
220
+ store,
221
+ isSynchronizer,
222
+ ) =>
218
223
  persist != 1 /* StoreOnly */ && store.isMergeable()
219
224
  ? [
220
225
  1,
221
226
  store.getMergeableContent,
222
- store.getTransactionMergeableChanges,
227
+ () => store.getTransactionMergeableChanges(!isSynchronizer),
223
228
  ([[changedTables], [changedValues]]) =>
224
229
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
225
230
  store.setDefaultContent,
@@ -243,6 +248,7 @@ const createCustomPersister = (
243
248
  onIgnoredError,
244
249
  persist,
245
250
  extra = {},
251
+ isSynchronizer = 0,
246
252
  scheduleId = [],
247
253
  ) => {
248
254
  let status = 0; /* Idle */
@@ -260,7 +266,7 @@ const createCustomPersister = (
260
266
  getChanges,
261
267
  hasChanges,
262
268
  setDefaultContent,
263
- ] = getStoreFunctions(persist, store);
269
+ ] = getStoreFunctions(persist, store, isSynchronizer);
264
270
  const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
265
271
  () => persister,
266
272
  );
@@ -309,7 +315,7 @@ const createCustomPersister = (
309
315
  } else if (initialContent) {
310
316
  setDefaultContent(initialContent);
311
317
  } else {
312
- errorNew(`Content is not an array ${content}`);
318
+ errorNew(`Content is not an array: ${content}`);
313
319
  }
314
320
  } catch (error) {
315
321
  onIgnoredError?.(error);
@@ -323,7 +329,8 @@ const createCustomPersister = (
323
329
  return persister;
324
330
  };
325
331
  const startAutoLoad = async (initialContent) => {
326
- await stopAutoLoad().load(initialContent);
332
+ stopAutoLoad();
333
+ await load(initialContent);
327
334
  try {
328
335
  autoLoadHandle = await addPersisterListener(async (content, changes) => {
329
336
  if (changes || content) {
@@ -370,7 +377,8 @@ const createCustomPersister = (
370
377
  return persister;
371
378
  };
372
379
  const startAutoSave = async () => {
373
- await stopAutoSave().save();
380
+ stopAutoSave();
381
+ await save();
374
382
  autoSaveListenerId = store.addDidFinishTransactionListener(() => {
375
383
  const changes = getChanges();
376
384
  if (hasChanges(changes)) {
@@ -380,8 +388,10 @@ const createCustomPersister = (
380
388
  return persister;
381
389
  };
382
390
  const stopAutoSave = () => {
383
- ifNotUndefined(autoSaveListenerId, store.delListener);
384
- autoSaveListenerId = void 0;
391
+ if (autoSaveListenerId) {
392
+ store.delListener(autoSaveListenerId);
393
+ autoSaveListenerId = void 0;
394
+ }
385
395
  return persister;
386
396
  };
387
397
  const isAutoSaving = () => !isUndefined(autoSaveListenerId);
@@ -776,6 +786,7 @@ const createJsonPersister = (
776
786
  onIgnoredError,
777
787
  persist,
778
788
  {[getThing]: () => thing, destroy},
789
+ 0,
779
790
  thing,
780
791
  );
781
792
  return persister;
@@ -902,6 +913,7 @@ const createTabularPersister = (
902
913
  onIgnoredError,
903
914
  persist,
904
915
  {[getThing]: () => thing, destroy},
916
+ 0,
905
917
  thing,
906
918
  );
907
919
  return persister;
package/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://beta.tinybase.org/guides/releases/#v5-4"><em>NEW!</em> v5.4 release</a></p><p><span id="one-with">&quot;More APIs!&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It&#x27;s <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It&#x27;s <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://beta.tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://beta.tinybase.org/api/persister-browser">browser storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://beta.tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It&#x27;s Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it&#x27;s especially great for local-first apps: where data is stored locally on the user&#x27;s device and that can be run offline. It&#x27;s tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 11.4kB</a> and with no dependencies - yet <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</p></section><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/postgresql.svg"> PostgreSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/pglite.svg"> PGlite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/expo.svg"> Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg"> ElectricSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg"> Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg"> PowerSync</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=GitHub&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&amp;logo=discord&amp;logoColor=%23fff&amp;label=Discord&amp;labelColor=%233131e8&amp;color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&amp;logo=x&amp;logoColor=%23fff&amp;label=Twitter&amp;labelColor=%23333&amp;color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Ideas&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Issues&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&amp;logo=jest&amp;logoColor=%23fff&amp;color=%23333&amp;labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.4.0-beta.1" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&amp;logo=npm&amp;logoColor=%23fff&amp;labelColor=%23bd0005&amp;color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
1
+ <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2></section><p><a href="https://beta.tinybase.org/guides/releases/#v5-4"><em>NEW!</em> v5.4 release</a></p><p><span id="one-with">&quot;The One With Durable Objects!&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="it-s-reactive">It&#x27;s <em>Reactive</em></h2><p>TinyBase lets you <a href="#register-granular-listeners">listen to changes</a> made to any part of your data. This means your app will be fast, since you only spend rendering cycles on things that change. The optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and <a href="#pre-built-reactive-components">pre-built components</a> let you easily build fully reactive UIs on top of TinyBase. You even get a built-in <a href="#set-checkpoints-for-an-undo-stack">undo stack</a>, and <a href="#an-inspector-for-your-data">developer tools</a>!</p></section><section><h2 id="it-s-database-like">It&#x27;s <em>Database-Like</em></h2><p>Consumer app? Enterprise app? Or even a game? Model <a href="#start-with-a-simple-key-value-store">key-value data</a> and <a href="#level-up-to-use-tabular-data">tabular data</a> with optional typed <a href="#apply-schemas-to-tables-values">schematization</a>, whatever its data structures. There are built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, and tabular <a href="#model-table-relationships">relationships</a> APIs - and a powerful <a href="#build-complex-queries-with-tinyql">query engine</a> to select, join, filter, and group data (reactively!) without SQL.</p></section><section><h2 id="it-synchronizes">It <em>Synchronizes</em></h2><p>TinyBase has <a href="#synchronize-between-devices">native CRDT</a> support, meaning that you can deterministically <a href="https://beta.tinybase.org/guides/synchronization/">synchronize</a> and merge data across multiple sources, clients, and servers. And although TinyBase is an in-memory data store, you can easily <a href="#persist-to-storage-databases-more">persist</a> your data to file, <a href="https://beta.tinybase.org/api/persister-browser">browser storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/persistence/database-persistence/">SQLite or PostgreSQL databases</a>, and <a href="https://beta.tinybase.org/guides/persistence/third-party-crdt-persistence/">more</a>.</p></section><section><h2 id="it-s-built-for-a-local-first-world">It&#x27;s Built For A <em>Local-First</em> World</h2><p>TinyBase works anywhere that JavaScript does, but it&#x27;s especially great for local-first apps: where data is stored locally on the user&#x27;s device and that can be run offline. It&#x27;s tiny by name, tiny by nature: just <a href="#did-we-say-tiny">5.3kB - 11.4kB</a> and with no dependencies - yet <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</p></section><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/postgresql.svg"> PostgreSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/pglite.svg"> PGlite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/expo.svg"> Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/synchronization/using-a-synchronizer/#synchronizing-with-websockets"><img width="48" src="https://beta.tinybase.org/cloudflare.svg"> Cloudflare</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg"> ElectricSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg"> Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg"> PowerSync</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=GitHub&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&amp;logo=discord&amp;logoColor=%23fff&amp;label=Discord&amp;labelColor=%233131e8&amp;color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&amp;logo=x&amp;logoColor=%23fff&amp;label=Twitter&amp;labelColor=%23333&amp;color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Ideas&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Issues&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&amp;logo=jest&amp;logoColor=%23fff&amp;color=%23333&amp;labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.4.0-beta.2" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&amp;logo=npm&amp;logoColor=%23fff&amp;labelColor=%23bd0005&amp;color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
2
2
 
3
3
  ```js
4
4
  import {createStore} from 'tinybase';
@@ -294,4 +294,4 @@ export const createShop: typeof createShopDecl = () => {
294
294
  };
295
295
  ```
296
296
 
297
- <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>11.4kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.9kB</em>, the ui-react-dom components are another <em>2.6kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.4kB</td></tr><tr><th class="right">tinybase (complete)</th><td>11.4kB</td><td>119.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react/">ui-react</a></th><td>4.9kB</td><td>53.5kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.6kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,285</td><td>2,285</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,466</td><td>2,466</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>985</td><td>985</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>853</td><td>853</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,461</td></tr><tr><th class="right">Assertions</th><td colspan="3">33,187</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img title="byCedric" src="https://github.com/byCedric.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img title="mouktardev" src="https://github.com/mouktardev.png?size=48" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img title="nickmessing" src="https://github.com/nickmessing.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img title="nkzw-tech" src="https://github.com/nkzw-tech.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img title="primodiumxyz" src="https://github.com/primodiumxyz.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img title="ViktorZhurbin" src="https://github.com/ViktorZhurbin.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>
297
+ <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>5.3kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>11.4kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just <em>4.9kB</em>, the ui-react-dom components are another <em>2.6kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th> </th><th>Minified .js.gz</th><th>Source .js</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">tinybase/store</a> (minimal)</th><td>5.3kB</td><td>52.4kB</td></tr><tr><th class="right">tinybase (complete)</th><td>11.4kB</td><td>119.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react/">ui-react</a></th><td>4.9kB</td><td>53.5kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/ui-react-dom/">ui-react-dom</a></th><td>2.6kB</td><td>20.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,284</td><td>2,284</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,465</td><td>2,465</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>985</td><td>985</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>851</td><td>851</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">7,461</td></tr><tr><th class="right">Assertions</th><td colspan="3">33,187</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/byCedric" target="_blank"><img title="byCedric" src="https://github.com/byCedric.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cpojer" target="_blank"><img title="cpojer" src="https://github.com/cpojer.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/mouktardev" target="_blank"><img title="mouktardev" src="https://github.com/mouktardev.png?size=48" width="48" height="48"></a><a href="https://github.com/nickmessing" target="_blank"><img title="nickmessing" src="https://github.com/nickmessing.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/nkzw-tech" target="_blank"><img title="nkzw-tech" src="https://github.com/nkzw-tech.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/primodiumxyz" target="_blank"><img title="primodiumxyz" src="https://github.com/primodiumxyz.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/ViktorZhurbin" target="_blank"><img title="ViktorZhurbin" src="https://github.com/ViktorZhurbin.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>