tinybase 5.0.0-beta.5 → 5.0.0-beta.7

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 (398) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  20. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  24. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  26. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  30. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  32. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  33. package/lib/cjs/persisters.cjs +1 -1
  34. package/lib/cjs/persisters.cjs.gz +0 -0
  35. package/lib/cjs/store.cjs +1 -1
  36. package/lib/cjs/store.cjs.gz +0 -0
  37. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  38. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  39. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  40. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  41. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  42. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  43. package/lib/cjs/synchronizers.cjs +1 -0
  44. package/lib/cjs/synchronizers.cjs.gz +0 -0
  45. package/lib/cjs/tinybase.cjs +1 -1
  46. package/lib/cjs/tinybase.cjs.gz +0 -0
  47. package/lib/cjs/tools.cjs +1 -1
  48. package/lib/cjs/tools.cjs.gz +0 -0
  49. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  50. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  51. package/lib/cjs/ui-react.cjs +1 -1
  52. package/lib/cjs/ui-react.cjs.gz +0 -0
  53. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  54. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  76. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  84. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters.cjs +1 -1
  86. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  87. package/lib/cjs-es6/store.cjs +1 -1
  88. package/lib/cjs-es6/store.cjs.gz +0 -0
  89. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  90. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  91. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  92. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  93. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  94. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  95. package/lib/cjs-es6/synchronizers.cjs +1 -0
  96. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  97. package/lib/cjs-es6/tinybase.cjs +1 -1
  98. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  99. package/lib/cjs-es6/tools.cjs +1 -1
  100. package/lib/cjs-es6/tools.cjs.gz +0 -0
  101. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  102. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  103. package/lib/cjs-es6/ui-react.cjs +1 -1
  104. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  105. package/lib/debug/mergeable-store.js +287 -130
  106. package/lib/debug/persisters/persister-automerge.js +39 -46
  107. package/lib/debug/persisters/persister-browser.js +39 -46
  108. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +64 -60
  109. package/lib/debug/persisters/persister-electric-sql.js +64 -60
  110. package/lib/debug/persisters/persister-expo-sqlite-next.js +64 -60
  111. package/lib/debug/persisters/persister-expo-sqlite.js +64 -60
  112. package/lib/debug/persisters/persister-file.js +39 -46
  113. package/lib/debug/persisters/persister-indexed-db.js +39 -46
  114. package/lib/debug/persisters/persister-libsql.js +64 -60
  115. package/lib/debug/persisters/persister-partykit-client.js +39 -46
  116. package/lib/debug/persisters/persister-powersync.js +917 -0
  117. package/lib/debug/persisters/persister-remote.js +39 -46
  118. package/lib/debug/persisters/persister-sqlite-wasm.js +64 -60
  119. package/lib/debug/persisters/persister-sqlite3.js +64 -60
  120. package/lib/debug/persisters/persister-yjs.js +41 -48
  121. package/lib/debug/persisters.js +38 -45
  122. package/lib/debug/store.js +44 -32
  123. package/lib/debug/synchronizers/synchronizer-local.js +502 -0
  124. package/lib/debug/synchronizers/synchronizer-ws-client.js +525 -0
  125. package/lib/debug/synchronizers/synchronizer-ws-server.js +57 -0
  126. package/lib/debug/synchronizers.js +466 -0
  127. package/lib/debug/tinybase.js +569 -250
  128. package/lib/debug/tools.js +2 -2
  129. package/lib/debug/ui-react-dom.js +81 -76
  130. package/lib/debug/ui-react.js +1 -1
  131. package/lib/es6/mergeable-store.js +1 -1
  132. package/lib/es6/mergeable-store.js.gz +0 -0
  133. package/lib/es6/persisters/persister-automerge.js +1 -1
  134. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  135. package/lib/es6/persisters/persister-browser.js +1 -1
  136. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  137. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  138. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  139. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  140. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  141. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  142. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  143. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  144. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  145. package/lib/es6/persisters/persister-file.js +1 -1
  146. package/lib/es6/persisters/persister-file.js.gz +0 -0
  147. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  148. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  149. package/lib/es6/persisters/persister-libsql.js +1 -1
  150. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  151. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  152. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  153. package/lib/es6/persisters/persister-powersync.js +1 -0
  154. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  155. package/lib/es6/persisters/persister-remote.js +1 -1
  156. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  157. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  158. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  159. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  160. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  161. package/lib/es6/persisters/persister-yjs.js +1 -1
  162. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  163. package/lib/es6/persisters.js +1 -1
  164. package/lib/es6/persisters.js.gz +0 -0
  165. package/lib/es6/store.js +1 -1
  166. package/lib/es6/store.js.gz +0 -0
  167. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  168. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  169. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  170. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  171. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  172. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  173. package/lib/es6/synchronizers.js +1 -0
  174. package/lib/es6/synchronizers.js.gz +0 -0
  175. package/lib/es6/tinybase.js +1 -1
  176. package/lib/es6/tinybase.js.gz +0 -0
  177. package/lib/es6/tools.js +1 -1
  178. package/lib/es6/tools.js.gz +0 -0
  179. package/lib/es6/ui-react-dom-debug.js +1 -1
  180. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  181. package/lib/es6/ui-react.js +1 -1
  182. package/lib/es6/ui-react.js.gz +0 -0
  183. package/lib/mergeable-store.js +1 -1
  184. package/lib/mergeable-store.js.gz +0 -0
  185. package/lib/persisters/persister-automerge.js +1 -1
  186. package/lib/persisters/persister-automerge.js.gz +0 -0
  187. package/lib/persisters/persister-browser.js +1 -1
  188. package/lib/persisters/persister-browser.js.gz +0 -0
  189. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  190. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  191. package/lib/persisters/persister-electric-sql.js +1 -1
  192. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  193. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  194. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  195. package/lib/persisters/persister-expo-sqlite.js +1 -1
  196. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  197. package/lib/persisters/persister-file.js +1 -1
  198. package/lib/persisters/persister-file.js.gz +0 -0
  199. package/lib/persisters/persister-indexed-db.js +1 -1
  200. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  201. package/lib/persisters/persister-libsql.js +1 -1
  202. package/lib/persisters/persister-libsql.js.gz +0 -0
  203. package/lib/persisters/persister-partykit-client.js +1 -1
  204. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  205. package/lib/persisters/persister-powersync.js +1 -0
  206. package/lib/persisters/persister-powersync.js.gz +0 -0
  207. package/lib/persisters/persister-remote.js +1 -1
  208. package/lib/persisters/persister-remote.js.gz +0 -0
  209. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  210. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  211. package/lib/persisters/persister-sqlite3.js +1 -1
  212. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  213. package/lib/persisters/persister-yjs.js +1 -1
  214. package/lib/persisters/persister-yjs.js.gz +0 -0
  215. package/lib/persisters.js +1 -1
  216. package/lib/persisters.js.gz +0 -0
  217. package/lib/store.js +1 -1
  218. package/lib/store.js.gz +0 -0
  219. package/lib/synchronizers/synchronizer-local.js +1 -0
  220. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  221. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  222. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  223. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  224. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  225. package/lib/synchronizers.js +1 -0
  226. package/lib/synchronizers.js.gz +0 -0
  227. package/lib/tinybase.js +1 -1
  228. package/lib/tinybase.js.gz +0 -0
  229. package/lib/tools.js +1 -1
  230. package/lib/tools.js.gz +0 -0
  231. package/lib/types/checkpoints.d.ts +2 -2
  232. package/lib/types/indexes.d.ts +2 -2
  233. package/lib/types/mergeable-store.d.ts +121 -59
  234. package/lib/types/metrics.d.ts +2 -2
  235. package/lib/types/persisters/persister-automerge.d.ts +3 -0
  236. package/lib/types/persisters/persister-browser.d.ts +9 -2
  237. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +3 -0
  238. package/lib/types/persisters/persister-electric-sql.d.ts +3 -0
  239. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +3 -0
  240. package/lib/types/persisters/persister-expo-sqlite.d.ts +3 -0
  241. package/lib/types/persisters/persister-file.d.ts +5 -1
  242. package/lib/types/persisters/persister-indexed-db.d.ts +3 -0
  243. package/lib/types/persisters/persister-libsql.d.ts +3 -0
  244. package/lib/types/persisters/persister-partykit-client.d.ts +3 -0
  245. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  246. package/lib/types/persisters/persister-remote.d.ts +3 -0
  247. package/lib/types/persisters/persister-sqlite-wasm.d.ts +3 -0
  248. package/lib/types/persisters/persister-sqlite3.d.ts +3 -0
  249. package/lib/types/persisters/persister-yjs.d.ts +5 -2
  250. package/lib/types/persisters.d.ts +68 -19
  251. package/lib/types/queries.d.ts +2 -2
  252. package/lib/types/relationships.d.ts +2 -2
  253. package/lib/types/store.d.ts +36 -3
  254. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  255. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +30 -0
  256. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +24 -0
  257. package/lib/types/synchronizers.d.ts +131 -0
  258. package/lib/types/tinybase.d.ts +10 -9
  259. package/lib/types/tools.d.ts +2 -2
  260. package/lib/types/ui-react.d.ts +8 -8
  261. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  262. package/lib/types/with-schemas/indexes.d.ts +2 -2
  263. package/lib/types/with-schemas/mergeable-store.d.ts +185 -87
  264. package/lib/types/with-schemas/metrics.d.ts +2 -2
  265. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +4 -1
  266. package/lib/types/with-schemas/persisters/persister-browser.d.ts +13 -6
  267. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +4 -1
  268. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +4 -1
  269. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +4 -1
  270. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +4 -1
  271. package/lib/types/with-schemas/persisters/persister-file.d.ts +7 -3
  272. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +4 -1
  273. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +4 -1
  274. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +4 -1
  275. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  276. package/lib/types/with-schemas/persisters/persister-remote.d.ts +4 -1
  277. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +4 -1
  278. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +4 -1
  279. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +6 -3
  280. package/lib/types/with-schemas/persisters.d.ts +90 -62
  281. package/lib/types/with-schemas/queries.d.ts +3 -3
  282. package/lib/types/with-schemas/relationships.d.ts +2 -2
  283. package/lib/types/with-schemas/store.d.ts +100 -3
  284. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  285. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +32 -0
  286. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +24 -0
  287. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  288. package/lib/types/with-schemas/tinybase.d.ts +9 -9
  289. package/lib/types/with-schemas/tools.d.ts +2 -2
  290. package/lib/types/with-schemas/ui-react.d.ts +8 -8
  291. package/lib/ui-react.js +1 -1
  292. package/lib/ui-react.js.gz +0 -0
  293. package/lib/umd/mergeable-store.js +1 -1
  294. package/lib/umd/mergeable-store.js.gz +0 -0
  295. package/lib/umd/persisters/persister-automerge.js +1 -1
  296. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  297. package/lib/umd/persisters/persister-browser.js +1 -1
  298. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  299. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  300. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  301. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  302. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  303. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  304. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  305. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  306. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  307. package/lib/umd/persisters/persister-file.js +1 -1
  308. package/lib/umd/persisters/persister-file.js.gz +0 -0
  309. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  310. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  311. package/lib/umd/persisters/persister-libsql.js +1 -1
  312. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  313. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  314. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  315. package/lib/umd/persisters/persister-powersync.js +1 -0
  316. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  317. package/lib/umd/persisters/persister-remote.js +1 -1
  318. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  319. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  320. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  321. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  322. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  323. package/lib/umd/persisters/persister-yjs.js +1 -1
  324. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  325. package/lib/umd/persisters.js +1 -1
  326. package/lib/umd/persisters.js.gz +0 -0
  327. package/lib/umd/store.js +1 -1
  328. package/lib/umd/store.js.gz +0 -0
  329. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  330. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  331. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  332. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  333. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  334. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  335. package/lib/umd/synchronizers.js +1 -0
  336. package/lib/umd/synchronizers.js.gz +0 -0
  337. package/lib/umd/tinybase.js +1 -1
  338. package/lib/umd/tinybase.js.gz +0 -0
  339. package/lib/umd/tools.js +1 -1
  340. package/lib/umd/tools.js.gz +0 -0
  341. package/lib/umd/ui-react-dom-debug.js +1 -1
  342. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  343. package/lib/umd/ui-react.js +1 -1
  344. package/lib/umd/ui-react.js.gz +0 -0
  345. package/lib/umd-es6/mergeable-store.js +1 -1
  346. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  347. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  348. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  349. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  350. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  351. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  352. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  353. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  354. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  355. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  356. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  357. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  358. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  359. package/lib/umd-es6/persisters/persister-file.js +1 -1
  360. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  361. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  362. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  363. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  364. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  365. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  366. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  367. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  368. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  369. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  370. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  371. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  372. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  373. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  374. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  375. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  376. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  377. package/lib/umd-es6/persisters.js +1 -1
  378. package/lib/umd-es6/persisters.js.gz +0 -0
  379. package/lib/umd-es6/store.js +1 -1
  380. package/lib/umd-es6/store.js.gz +0 -0
  381. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  382. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  383. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  384. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  385. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  386. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  387. package/lib/umd-es6/synchronizers.js +1 -0
  388. package/lib/umd-es6/synchronizers.js.gz +0 -0
  389. package/lib/umd-es6/tinybase.js +1 -1
  390. package/lib/umd-es6/tinybase.js.gz +0 -0
  391. package/lib/umd-es6/tools.js +1 -1
  392. package/lib/umd-es6/tools.js.gz +0 -0
  393. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  394. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  395. package/lib/umd-es6/ui-react.js +1 -1
  396. package/lib/umd-es6/ui-react.js.gz +0 -0
  397. package/package.json +37 -26
  398. package/readme.md +2 -2
@@ -23,6 +23,7 @@
23
23
  * |persister-expo-sqlite-next|createExpoSqliteNextPersister|SQLite in React Native, via [expo-sqlite/next](https://github.com/expo/expo/tree/main/packages/expo-sqlite/next)|
24
24
  * |persister-electric-sql|createElectricSqlPersister|Electric SQL, via [electric-sql](https://github.com/electric-sql/electric)|
25
25
  * |persister-libsql|createLibSqlPersister|LibSQL for Turso, via [libsql-client](https://github.com/tursodatabase/libsql-client-ts)|
26
+ * |persister-powersync|createPowerSyncPersister|PowerSync, via [powersync-sdk](https://github.com/powersync-ja/powersync-js)|
26
27
  * |persister-yjs|createYjsPersister|Yjs CRDTs, via [yjs](https://github.com/yjs/yjs)|
27
28
  * |persister-automerge|createSqliteWasmPersister|Automerge CRDTs, via [automerge-repo](https://github.com/automerge/automerge-repo)|
28
29
  *
@@ -47,8 +48,12 @@ import {
47
48
  Store,
48
49
  Tables,
49
50
  Values,
50
- } from './store.d';
51
- import {MergeableContent, MergeableStore} from './mergeable-store';
51
+ } from './store.d.ts';
52
+ import {
53
+ MergeableChanges,
54
+ MergeableContent,
55
+ MergeableStore,
56
+ } from './mergeable-store';
52
57
  import {TableIdFromSchema} from './internal/store';
53
58
 
54
59
  /**
@@ -100,9 +105,16 @@ export type PersisterStats = {
100
105
  * @category Creation
101
106
  * @since v4.0.0
102
107
  */
103
- export type PersisterListener<Schemas extends OptionalSchemas> = (
104
- getContent?: () => Content<Schemas, true>,
105
- getChanges?: () => Changes<Schemas>,
108
+ export type PersisterListener<
109
+ Schemas extends OptionalSchemas,
110
+ SupportsMergeableStore extends boolean = false,
111
+ > = (
112
+ getContent?: () =>
113
+ | Content<Schemas, true>
114
+ | (SupportsMergeableStore extends true ? MergeableContent<Schemas> : never),
115
+ getChanges?: () =>
116
+ | Changes<Schemas>
117
+ | (SupportsMergeableStore extends true ? MergeableChanges<Schemas> : never),
106
118
  ) => void;
107
119
 
108
120
  /**
@@ -682,10 +694,7 @@ export interface Persister<
682
694
  * This has schema-based typing. The following is a simplified representation:
683
695
  *
684
696
  * ```ts override
685
- * load(
686
- * initialTables?: Tables,
687
- * initialValues?: Values,
688
- * ): Promise<Persister<SupportsMergeableStore>>;
697
+ * load(initialTables?: Tables, initialValues?: Values): Promise<this>;
689
698
  * ```
690
699
  *
691
700
  * The optional parameters allow you to specify what the initial content for
@@ -746,7 +755,7 @@ export interface Persister<
746
755
  load(
747
756
  initialTables?: Tables<Schemas[0], true>,
748
757
  initialValues?: Values<Schemas[1], true>,
749
- ): Promise<Persister<Schemas, SupportsMergeableStore>>;
758
+ ): Promise<this>;
750
759
 
751
760
  /**
752
761
  * The startAutoLoad method gets persisted data from storage, and loads it
@@ -756,10 +765,7 @@ export interface Persister<
756
765
  * This has schema-based typing. The following is a simplified representation:
757
766
  *
758
767
  * ```ts override
759
- * startAutoLoad(
760
- * initialTables?: Tables,
761
- * initialValues?: Values,
762
- * ): Promise<Persister<SupportsMergeableStore>>;
768
+ * startAutoLoad(initialTables?: Tables, initialValues?: Values): Promise<this>;
763
769
  * ```
764
770
  *
765
771
  * The optional parameters allow you to specify what the initial content for
@@ -813,18 +819,12 @@ export interface Persister<
813
819
  startAutoLoad(
814
820
  initialTables?: Tables<Schemas[0], true>,
815
821
  initialValues?: Values<Schemas[1], true>,
816
- ): Promise<Persister<Schemas, SupportsMergeableStore>>;
822
+ ): Promise<this>;
817
823
 
818
824
  /**
819
825
  * The stopAutoLoad method stops the automatic loading of data from storage
820
826
  * previously started with the startAutoLoad method.
821
827
  *
822
- * This has schema-based typing. The following is a simplified representation:
823
- *
824
- * ```ts override
825
- * stopAutoLoad(): Persister<SupportsMergeableStore>;
826
- * ```
827
- *
828
828
  * If the Persister is not currently set to automatically load, this method
829
829
  * has no effect.
830
830
  * @returns A reference to the Persister object.
@@ -863,17 +863,38 @@ export interface Persister<
863
863
  * ```
864
864
  * @category Load
865
865
  */
866
- stopAutoLoad(): Persister<Schemas, SupportsMergeableStore>;
866
+ stopAutoLoad(): this;
867
867
 
868
868
  /**
869
- * The save method takes data from the Store with which the Persister is
870
- * associated and persists it into storage, once.
869
+ * The isAutoLoading method lets you find out if the Persister is currently
870
+ * automatically loading its content.
871
+ * @returns A boolean indicating whether the Persister is currently
872
+ * autoLoading.
873
+ * @example
874
+ * This example creates a Persister and queries whether it is autoLoading.
871
875
  *
872
- * This has schema-based typing. The following is a simplified representation:
876
+ * ```js
877
+ * const persister = createSessionPersister(createStore(), 'pets');
873
878
  *
874
- * ```ts override
875
- * save(): Promise<Persister<SupportsMergeableStore>>;
879
+ * console.log(persister.isAutoLoading());
880
+ * // -> false
881
+ *
882
+ * await persister.startAutoLoad();
883
+ * console.log(persister.isAutoLoading());
884
+ * // -> true
885
+ *
886
+ * await persister.stopAutoLoad();
887
+ * console.log(persister.isAutoLoading());
888
+ * // -> false
876
889
  * ```
890
+ * @category Load
891
+ * @since v5.0.0
892
+ */
893
+ isAutoLoading(): boolean;
894
+
895
+ /**
896
+ * The save method takes data from the Store with which the Persister is
897
+ * associated and persists it into storage, once.
877
898
  *
878
899
  * This method is asynchronous because the persisted data may be on a remote
879
900
  * machine or a filesystem. Even for those storage types that are synchronous
@@ -897,18 +918,12 @@ export interface Persister<
897
918
  * ```
898
919
  * @category Save
899
920
  */
900
- save(): Promise<Persister<Schemas, SupportsMergeableStore>>;
921
+ save(): Promise<this>;
901
922
 
902
923
  /**
903
924
  * The save method takes data from the Store with which the Persister is
904
925
  * associated and persists it into storage, once, and then continuously.
905
926
  *
906
- * This has schema-based typing. The following is a simplified representation:
907
- *
908
- * ```ts override
909
- * startAutoSave(): Promise<Persister<SupportsMergeableStore>>;
910
- * ```
911
- *
912
927
  * This method first runs a single call to the save method to ensure the data
913
928
  * is in sync with the persisted storage. It then continues to watch for
914
929
  * changes to the Store, automatically saving the data to storage.
@@ -940,18 +955,12 @@ export interface Persister<
940
955
  * ```
941
956
  * @category Save
942
957
  */
943
- startAutoSave(): Promise<Persister<Schemas, SupportsMergeableStore>>;
958
+ startAutoSave(): Promise<this>;
944
959
 
945
960
  /**
946
961
  * The stopAutoSave method stops the automatic save of data to storage
947
962
  * previously started with the startAutoSave method.
948
963
  *
949
- * This has schema-based typing. The following is a simplified representation:
950
- *
951
- * ```ts override
952
- * stopAutoSave(): Persister<SupportsMergeableStore>;
953
- * ```
954
- *
955
964
  * If the Persister is not currently set to automatically save, this method
956
965
  * has no effect.
957
966
  * @returns A reference to the Persister object.
@@ -983,19 +992,38 @@ export interface Persister<
983
992
  * ```
984
993
  * @category Save
985
994
  */
986
- stopAutoSave(): Persister<Schemas, SupportsMergeableStore>;
995
+ stopAutoSave(): this;
987
996
 
988
997
  /**
989
- * The schedule method allows you to queue up a series of asynchronous actions
990
- * that must run in sequence during persistence.
998
+ * The isAutoSaving method lets you find out if the Persister is currently
999
+ * automatically saving its content.
1000
+ * @returns A boolean indicating whether the Persister is currently
1001
+ * autoSaving.
1002
+ * @example
1003
+ * This example creates a Persister and queries whether it is autoSaving.
991
1004
  *
992
- * This has schema-based typing. The following is a simplified representation:
1005
+ * ```js
1006
+ * const persister = createSessionPersister(createStore(), 'pets');
993
1007
  *
994
- * ```ts override
995
- * schedule(
996
- * ...actions: Promise<any>[]
997
- * ): Promise<Persister<SupportsMergeableStore>>;
1008
+ * console.log(persister.isAutoSaving());
1009
+ * // -> false
1010
+ *
1011
+ * await persister.startAutoSave();
1012
+ * console.log(persister.isAutoSaving());
1013
+ * // -> true
1014
+ *
1015
+ * await persister.stopAutoSave();
1016
+ * console.log(persister.isAutoSaving());
1017
+ * // -> false
998
1018
  * ```
1019
+ * @category Save
1020
+ * @since v5.0.0
1021
+ */
1022
+ isAutoSaving(): boolean;
1023
+
1024
+ /**
1025
+ * The schedule method allows you to queue up a series of asynchronous actions
1026
+ * that must run in sequence during persistence.
999
1027
  *
1000
1028
  * For example, a database Persister may need to ensure that multiple
1001
1029
  * asynchronous tasks to check and update the database schema are completed
@@ -1034,9 +1062,7 @@ export interface Persister<
1034
1062
  * @category Lifecycle
1035
1063
  * @since v4.0.0
1036
1064
  */
1037
- schedule(
1038
- ...actions: Promise<any>[]
1039
- ): Promise<Persister<Schemas, SupportsMergeableStore>>;
1065
+ schedule(...actions: Promise<any>[]): Promise<this>;
1040
1066
 
1041
1067
  /**
1042
1068
  * The getStore method returns a reference to the underlying Store that is
@@ -1067,18 +1093,14 @@ export interface Persister<
1067
1093
  * ```
1068
1094
  * @category Getter
1069
1095
  */
1070
- getStore(): Store<Schemas>;
1096
+ getStore(): SupportsMergeableStore extends true
1097
+ ? Store<Schemas> | MergeableStore<Schemas>
1098
+ : Store<Schemas>;
1071
1099
 
1072
1100
  /**
1073
1101
  * The destroy method should be called when this Persister object is no longer
1074
1102
  * used.
1075
1103
  *
1076
- * This has schema-based typing. The following is a simplified representation:
1077
- *
1078
- * ```ts override
1079
- * destroy(): Persister<SupportsMergeableStore>;
1080
- * ```
1081
- *
1082
1104
  * This guarantees that all of the listeners that the object registered with
1083
1105
  * the underlying Store and storage are removed and it can be correctly
1084
1106
  * garbage collected. It is equivalent to running the stopAutoLoad method and
@@ -1103,7 +1125,7 @@ export interface Persister<
1103
1125
  * ```
1104
1126
  * @category Lifecycle
1105
1127
  */
1106
- destroy(): Persister<Schemas, SupportsMergeableStore>;
1128
+ destroy(): this;
1107
1129
 
1108
1130
  /**
1109
1131
  * The getStats method provides a set of statistics about the Persister, and
@@ -1171,7 +1193,9 @@ export interface Persister<
1171
1193
  * getContent: () =>
1172
1194
  * | Content
1173
1195
  * | (SupportsMergeableStore extends true ? MergeableContent : never),
1174
- * getChanges?: () => Changes,
1196
+ * getChanges?: () =>
1197
+ * | Changes
1198
+ * | (SupportsMergeableStore extends true ? MergeableChanges : never),
1175
1199
  * ) => Promise<void>,
1176
1200
  * addPersisterListener: (
1177
1201
  * listener: PersisterListener<SupportsMergeableStore>,
@@ -1275,7 +1299,11 @@ export function createCustomPersister<
1275
1299
  | (SupportsMergeableStore extends true
1276
1300
  ? MergeableContent<Schemas>
1277
1301
  : never),
1278
- getChanges?: () => Changes<Schemas>,
1302
+ getChanges?: () =>
1303
+ | Changes<Schemas>
1304
+ | (SupportsMergeableStore extends true
1305
+ ? MergeableChanges<Schemas>
1306
+ : never),
1279
1307
  ) => Promise<void>,
1280
1308
  addPersisterListener: (
1281
1309
  listener: PersisterListener<Schemas>,
@@ -19,11 +19,11 @@ import {
19
19
  OptionalSchemas,
20
20
  OptionalTablesSchema,
21
21
  Store,
22
- } from './store.d';
22
+ } from './store.d.ts';
23
23
  import {CellIdFromSchema, TableIdFromSchema} from './internal/store';
24
24
  import {GetResultCell, JoinedCellIdOrId} from './internal/queries';
25
- import {Id, IdOrNull, Ids} from './common.d';
26
- import {GetIdChanges} from '../store.d';
25
+ import {Id, IdOrNull, Ids} from './common.d.ts';
26
+ import {GetIdChanges} from '../store.d.ts';
27
27
 
28
28
  /**
29
29
  * The ResultTable type is the data structure representing the results of a
@@ -17,8 +17,8 @@ import {
17
17
  OptionalTablesSchema,
18
18
  RowCallback,
19
19
  Store,
20
- } from './store.d';
21
- import {Id, IdOrNull, Ids} from './common.d';
20
+ } from './store.d.ts';
21
+ import {Id, IdOrNull, Ids} from './common.d.ts';
22
22
 
23
23
  /**
24
24
  * The Relationship type represents the concept of a map that connects one Row
@@ -22,7 +22,7 @@ import {
22
22
  Truncate,
23
23
  ValueIdFromSchema,
24
24
  } from './internal/store';
25
- import {Id, IdOrNull, Ids, Json} from './common.d';
25
+ import {Id, IdOrNull, Ids, Json} from './common.d.ts';
26
26
 
27
27
  /**
28
28
  * The TablesSchema type describes the tabular structure of a Store in terms of
@@ -167,7 +167,41 @@ export type OptionalSchemas = [OptionalTablesSchema, OptionalValuesSchema];
167
167
  */
168
168
  export type NoSchemas = [NoTablesSchema, NoValuesSchema];
169
169
 
170
- // Content
170
+ /**
171
+ * The Content type describes both the Tables and Values in a Store.
172
+ *
173
+ * This has schema-based typing. The following is a simplified representation:
174
+ *
175
+ * ```ts override
176
+ * [Tables, Values];
177
+ * ```
178
+ *
179
+ * It is an array of two objects, representing tabular and keyed value content.
180
+ * @example
181
+ * The following is a valid Content array:
182
+ * ```json
183
+ * [
184
+ * {
185
+ * "pets": {
186
+ * "fido": {
187
+ * "sold": false,
188
+ * "price": 4,
189
+ * },
190
+ * "felix": {
191
+ * "sold": true,
192
+ * "price": 5,
193
+ * },
194
+ * },
195
+ * },
196
+ * {
197
+ * open: true,
198
+ * employees: 3,
199
+ * },
200
+ * ]
201
+ * ```
202
+ * @category Store
203
+ * @since v5.0.0
204
+ */
171
205
  export type Content<
172
206
  Schemas extends OptionalSchemas,
173
207
  WhenSet extends boolean = false,
@@ -2207,7 +2241,69 @@ export type ChangedValue<
2207
2241
  */
2208
2242
  export type InvalidValues = {[valueId: Id]: any[]};
2209
2243
 
2210
- //
2244
+ /**
2245
+ * The Changes type describes the net meaningful changes that were made to a
2246
+ * Store during a transaction.
2247
+ *
2248
+ * This has schema-based typing. The following is a simplified representation:
2249
+ *
2250
+ * ```ts override
2251
+ * [
2252
+ * changedTables: {
2253
+ * [tableId: Id]:
2254
+ * | {[rowId: Id]: {[cellId: Id]: CellOrUndefined} | undefined}
2255
+ * | undefined;
2256
+ * },
2257
+ * changedValues: {[valueId: Id]: ValueOrUndefined},
2258
+ * isChanges: 1,
2259
+ * ];
2260
+ * ```
2261
+ *
2262
+ * This contains mostly equivalent information to a TransactionLog, but in a
2263
+ * form that can be more efficiently parsed and serialized (for example in the
2264
+ * case of synchronization between systems).
2265
+ *
2266
+ * It is an array of two objects, representing tabular and keyed value changes.
2267
+ * If the first item is an empty object, it means no tabular changes were made.
2268
+ * If the second item is an empty object, it means no keyed value changes were
2269
+ * made.
2270
+ *
2271
+ * If not empty, the first object has an entry for each Table in a Store that
2272
+ * has had a change within it. If the entry is null, it means that whole Table
2273
+ * was deleted. Otherwise, the entry will be an object with an entry for each
2274
+ * Row in that Table that had a change within it. In turn, if that entry is
2275
+ * null, it means the Row was deleted. Otherwise, the entry will be an object
2276
+ * with an entry for each Cell in that Row that had a change within it. If the
2277
+ * entry is null, the Cell was deleted, otherwise it will contain the new value
2278
+ * the Cell was changed to during the transaction.
2279
+ *
2280
+ * If not empty, the second object has an entry for each Value in a Store that
2281
+ * has had a change. If the entry is null, the Value was deleted, otherwise it
2282
+ * will contain the new Value it was changed to during the transaction.
2283
+ *
2284
+ * A third, required, item in the array is the digit `1`, so that instances of
2285
+ * Content and Changes types can be disambiguated.
2286
+ * @example
2287
+ * The following is a valid Changes array that conveys the following:
2288
+ * ```json
2289
+ * [
2290
+ * { // changes to tabular data in the Store
2291
+ * "pets": { // this Table was changed
2292
+ * "fido": null, // this Row was deleted
2293
+ * "felix": { // this Row was changed
2294
+ * "sold": true, // this Cell was changed
2295
+ * "price": null, // this Cell was deleted
2296
+ * },
2297
+ * },
2298
+ * "pendingSales": null, // this Table was deleted
2299
+ * },
2300
+ * {}, // no changes to keyed value data in the Store
2301
+ * 1, // indicates that this is a Changes array
2302
+ * ]
2303
+ * ```
2304
+ * @category Transaction
2305
+ * @since v4.0.0
2306
+ */
2211
2307
  export type Changes<Schemas extends OptionalSchemas> = [
2212
2308
  {
2213
2309
  [TableId in TableIdFromSchema<Schemas[0]>]?:
@@ -2226,6 +2322,7 @@ export type Changes<Schemas extends OptionalSchemas> = [
2226
2322
  {
2227
2323
  [ValueId in ValueIdFromSchema<Schemas[1]>]?: Value<Schemas[1], ValueId>;
2228
2324
  },
2325
+ isChanges: 1,
2229
2326
  ];
2230
2327
 
2231
2328
  /**
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The synchronizer-local module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances on the same
4
+ * local machine.
5
+ * @see Synchronizing Data guide
6
+ * @packageDocumentation
7
+ * @module synchronizer-local
8
+ * @since v5.0.0
9
+ */
10
+
11
+ import {MergeableStore} from '../mergeable-store';
12
+ import {OptionalSchemas} from '../store';
13
+ import {Synchronizer} from '../synchronizers';
14
+
15
+ /**
16
+ * The LocalSynchronizer interface
17
+ * @category Synchronizer
18
+ */
19
+ export interface LocalSynchronizer<Schemas extends OptionalSchemas>
20
+ extends Synchronizer<Schemas> {}
21
+
22
+ /**
23
+ * The createLocalSynchronizer function
24
+ * @category Creation
25
+ */
26
+ export function createLocalSynchronizer<Schemas extends OptionalSchemas>(
27
+ store: MergeableStore<Schemas>,
28
+ onIgnoredError?: (error: any) => void,
29
+ ): LocalSynchronizer<Schemas>;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The synchronizer-ws module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances via WebSockets
4
+ * facilitated by a server.
5
+ * @see Synchronizing Data guide
6
+ * @packageDocumentation
7
+ * @module synchronizer-ws-client
8
+ * @since v5.0.0
9
+ */
10
+
11
+ import {MergeableStore} from '../mergeable-store';
12
+ import {OptionalSchemas} from '../store';
13
+ import {Synchronizer} from '../synchronizers';
14
+ import {WebSocket} from 'ws';
15
+
16
+ /**
17
+ * The WsSynchronizer interface
18
+ * @category Synchronizer
19
+ */
20
+ export interface WsSynchronizer<Schemas extends OptionalSchemas>
21
+ extends Synchronizer<Schemas> {}
22
+
23
+ /**
24
+ * The createWsSynchronizer function
25
+ * @category Creation
26
+ */
27
+ export function createWsSynchronizer<Schemas extends OptionalSchemas>(
28
+ store: MergeableStore<Schemas>,
29
+ webSocket: WebSocket,
30
+ requestTimeoutSeconds?: number,
31
+ onIgnoredError?: (error: any) => void,
32
+ ): Promise<WsSynchronizer<Schemas>>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The synchronizer-ws-server module of the TinyBase project lets you create
3
+ * a server that facilitates synchronization between clients.
4
+ * @see Synchronizing Data guide
5
+ * @packageDocumentation
6
+ * @module synchronizer-ws-server
7
+ * @since v5.0.0
8
+ */
9
+
10
+ import {WebSocketServer} from 'ws';
11
+
12
+ /**
13
+ * The WsServer interface
14
+ */
15
+ export interface WsServer {
16
+ getWebSocketServer: () => WebSocketServer;
17
+ destroy: () => void;
18
+ }
19
+
20
+ /**
21
+ * The createWsServer function
22
+ * @category Creation
23
+ */
24
+ export function createWsServer(WebSocketServer: WebSocketServer): WsServer;
@@ -0,0 +1,146 @@
1
+ /**
2
+ * The persister-sync module of the TinyBase project lets you synchronize
3
+ * MergeableStore data to and from other MergeableStore instances.
4
+ * @see Synchronizing Data guide
5
+ * @packageDocumentation
6
+ * @module synchronizers
7
+ * @since v5.0.0
8
+ */
9
+
10
+ import {Id, IdOrNull} from './common';
11
+ import {MergeableStore} from './mergeable-store';
12
+ import {OptionalSchemas} from './store';
13
+ import {Persister} from './persisters';
14
+
15
+ /**
16
+ * The MessageType type
17
+ * @category Synchronization
18
+ */
19
+ export type MessageType = number;
20
+
21
+ /**
22
+ * The Receive type
23
+ * @category Synchronization
24
+ */
25
+ export type Receive = (
26
+ fromClientId: Id,
27
+ requestId: Id,
28
+ messageType: MessageType,
29
+ messageBody: any,
30
+ ) => void;
31
+
32
+ /**
33
+ * The Send type
34
+ * @category Synchronization
35
+ */
36
+ export type Send = (
37
+ toClientId: IdOrNull,
38
+ requestId: Id,
39
+ messageType: MessageType,
40
+ messageBody: any,
41
+ ) => void;
42
+
43
+ /**
44
+ * The SynchronizerStats type
45
+ * @category Development
46
+ */
47
+ export type SynchronizerStats = {
48
+ sends?: number;
49
+ receives?: number;
50
+ };
51
+
52
+ /**
53
+ * The Synchronizer interface is a minor extension to the Persister interface.
54
+ *
55
+ * It provides extra convenience methods for starting and stopping the
56
+ * synchronization.
57
+ *
58
+ * You should use the createCustomSynchronizer function to create a Synchronizer
59
+ * object.
60
+ * @category Synchronizer
61
+ * @since v5.0.0
62
+ */
63
+ export interface Synchronizer<Schemas extends OptionalSchemas>
64
+ extends Persister<Schemas, true> {
65
+ /**
66
+ * The startSync method
67
+ * @category Synchronization
68
+ */
69
+ startSync(): Promise<this>;
70
+ /**
71
+ * The stopSync method
72
+ * @category Synchronization
73
+ */
74
+ stopSync(): this;
75
+ /**
76
+ * The getSynchronizerStats method
77
+ * @category Synchronization
78
+ */
79
+ getSynchronizerStats(): SynchronizerStats;
80
+ }
81
+
82
+ /**
83
+ * The createCustomSynchronizer function creates a Synchronizer object that can
84
+ * persist one MergeableStore to another.
85
+ *
86
+ * This has schema-based typing. The following is a simplified representation:
87
+ *
88
+ * ```ts override
89
+ * createCustomSynchronizer(
90
+ * store: MergeableStore,
91
+ * send: Send,
92
+ * onReceive: (receive: Receive) => void,
93
+ * destroy: () => void,
94
+ * requestTimeoutSeconds?: number,
95
+ * onIgnoredError?: (error: any) => void,
96
+ * ): Synchronizer;
97
+ * ```
98
+ *
99
+ * As well as providing a reference to the MergeableStore to synchronize, you
100
+ * must provide a `client` parameter which identifies the Client that is used to
101
+ * transmit changes to and from this MergeableStore and its peers.
102
+ * @param store The MergeableStore to synchronize.
103
+ * @param client The reference of the Client.
104
+ * @param requestTimeoutSeconds An optional number of seconds before a request
105
+ * to the Client times out, defaulting to 5.
106
+ * @param onIgnoredError An optional handler for the errors that the
107
+ * Synchronizer would otherwise ignore when trying to save or load data. This is
108
+ * suitable for debugging synchronization issues in a development environment.
109
+ * @returns A reference to the new Synchronizer object.
110
+ * @example
111
+ * This example creates a Synchronizer object and synchronizes one
112
+ * MergeableStore to another.
113
+ *
114
+ * ```js
115
+ * const store1 = createMergeableStore('store1').setTables({
116
+ * pets: {fido: {species: 'dog'}},
117
+ * });
118
+ * const synchronizer1 = createLocalSynchronizer(store1);
119
+ *
120
+ * const store2 = createMergeableStore('store2');
121
+ * const synchronizer2 = createLocalSynchronizer(store2);
122
+ * await synchronizer2.startSync();
123
+ *
124
+ * await synchronizer1.save();
125
+ * // ...
126
+ * // Store2 will be synced with Store1.
127
+ *
128
+ * console.log(store2.getTables());
129
+ * // -> {pets: {fido: {species: 'dog'}}}
130
+ *
131
+ * await synchronizer1.load();
132
+ * // Store1 will be synced with Store2.
133
+ *
134
+ * synchronizer1.destroy();
135
+ * synchronizer2.destroy();
136
+ * ```
137
+ * @category Creation
138
+ */
139
+ export function createCustomSynchronizer<Schemas extends OptionalSchemas>(
140
+ store: MergeableStore<Schemas>,
141
+ send: Send,
142
+ onReceive: (receive: Receive) => void,
143
+ destroy: () => void,
144
+ requestTimeoutSeconds?: number,
145
+ onIgnoredError?: (error: any) => void,
146
+ ): Synchronizer<Schemas>;