tinybase 5.0.0-beta.1 → 5.0.0-beta.10

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 (491) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/mergeable-store.cjs +1 -0
  8. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  9. package/lib/cjs/metrics.cjs +1 -1
  10. package/lib/cjs/metrics.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  12. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  14. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  18. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-file.cjs +1 -1
  24. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  26. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  30. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  32. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  33. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  34. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  35. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  36. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  39. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  40. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  41. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  42. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  43. package/lib/cjs/persisters.cjs +1 -1
  44. package/lib/cjs/persisters.cjs.gz +0 -0
  45. package/lib/cjs/queries.cjs +1 -1
  46. package/lib/cjs/queries.cjs.gz +0 -0
  47. package/lib/cjs/relationships.cjs +1 -1
  48. package/lib/cjs/relationships.cjs.gz +0 -0
  49. package/lib/cjs/store.cjs +1 -1
  50. package/lib/cjs/store.cjs.gz +0 -0
  51. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  52. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  53. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  54. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  55. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  56. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  57. package/lib/cjs/synchronizers.cjs +1 -0
  58. package/lib/cjs/synchronizers.cjs.gz +0 -0
  59. package/lib/cjs/tinybase.cjs +1 -1
  60. package/lib/cjs/tinybase.cjs.gz +0 -0
  61. package/lib/cjs/tools.cjs +1 -1
  62. package/lib/cjs/tools.cjs.gz +0 -0
  63. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  64. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  65. package/lib/cjs/ui-react-dom.cjs +1 -1
  66. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  67. package/lib/cjs/ui-react.cjs +1 -1
  68. package/lib/cjs/ui-react.cjs.gz +0 -0
  69. package/lib/cjs-es6/checkpoints.cjs +1 -1
  70. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  71. package/lib/cjs-es6/indexes.cjs +1 -1
  72. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  73. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  74. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  75. package/lib/cjs-es6/metrics.cjs +1 -1
  76. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  84. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  86. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  88. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  90. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  92. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  94. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  96. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  98. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  100. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  101. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  102. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  103. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  104. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  105. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  106. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  107. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  108. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  109. package/lib/cjs-es6/persisters.cjs +1 -1
  110. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  111. package/lib/cjs-es6/queries.cjs +1 -1
  112. package/lib/cjs-es6/queries.cjs.gz +0 -0
  113. package/lib/cjs-es6/relationships.cjs +1 -1
  114. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  115. package/lib/cjs-es6/store.cjs +1 -1
  116. package/lib/cjs-es6/store.cjs.gz +0 -0
  117. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  118. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  119. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  120. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  121. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  122. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  123. package/lib/cjs-es6/synchronizers.cjs +1 -0
  124. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  125. package/lib/cjs-es6/tinybase.cjs +1 -1
  126. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  127. package/lib/cjs-es6/tools.cjs +1 -1
  128. package/lib/cjs-es6/tools.cjs.gz +0 -0
  129. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  130. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  131. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  132. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  133. package/lib/cjs-es6/ui-react.cjs +1 -1
  134. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  135. package/lib/debug/checkpoints.js +3 -1
  136. package/lib/debug/indexes.js +3 -1
  137. package/lib/debug/mergeable-store.js +2230 -0
  138. package/lib/debug/metrics.js +3 -1
  139. package/lib/debug/persisters/persister-automerge.js +110 -86
  140. package/lib/debug/persisters/persister-browser.js +94 -57
  141. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +168 -106
  142. package/lib/debug/persisters/persister-electric-sql.js +168 -106
  143. package/lib/debug/persisters/persister-expo-sqlite-next.js +168 -106
  144. package/lib/debug/persisters/persister-expo-sqlite.js +168 -106
  145. package/lib/debug/persisters/persister-file.js +93 -57
  146. package/lib/debug/persisters/persister-indexed-db.js +90 -56
  147. package/lib/debug/persisters/persister-libsql.js +913 -0
  148. package/lib/debug/persisters/persister-partykit-client.js +89 -59
  149. package/lib/debug/persisters/persister-partykit-server.js +17 -25
  150. package/lib/debug/persisters/persister-powersync.js +928 -0
  151. package/lib/debug/persisters/persister-remote.js +85 -53
  152. package/lib/debug/persisters/persister-sqlite-wasm.js +168 -106
  153. package/lib/debug/persisters/persister-sqlite3.js +168 -106
  154. package/lib/debug/persisters/persister-yjs.js +108 -83
  155. package/lib/debug/persisters.js +81 -50
  156. package/lib/debug/queries.js +9 -6
  157. package/lib/debug/relationships.js +3 -1
  158. package/lib/debug/store.js +147 -126
  159. package/lib/debug/synchronizers/synchronizer-local.js +559 -0
  160. package/lib/debug/synchronizers/synchronizer-ws-client.js +586 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-server.js +96 -0
  162. package/lib/debug/synchronizers.js +519 -0
  163. package/lib/debug/tinybase.js +1027 -174
  164. package/lib/debug/tools.js +22 -21
  165. package/lib/debug/ui-react-dom.js +275 -213
  166. package/lib/debug/ui-react.js +55 -6
  167. package/lib/es6/checkpoints.js +1 -1
  168. package/lib/es6/checkpoints.js.gz +0 -0
  169. package/lib/es6/indexes.js +1 -1
  170. package/lib/es6/indexes.js.gz +0 -0
  171. package/lib/es6/mergeable-store.js +1 -0
  172. package/lib/es6/mergeable-store.js.gz +0 -0
  173. package/lib/es6/metrics.js +1 -1
  174. package/lib/es6/metrics.js.gz +0 -0
  175. package/lib/es6/persisters/persister-automerge.js +1 -1
  176. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  177. package/lib/es6/persisters/persister-browser.js +1 -1
  178. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  179. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  180. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  181. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  182. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  183. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  184. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  185. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  186. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  187. package/lib/es6/persisters/persister-file.js +1 -1
  188. package/lib/es6/persisters/persister-file.js.gz +0 -0
  189. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  190. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  191. package/lib/es6/persisters/persister-libsql.js +1 -0
  192. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  193. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  194. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  195. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  196. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  197. package/lib/es6/persisters/persister-powersync.js +1 -0
  198. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  199. package/lib/es6/persisters/persister-remote.js +1 -1
  200. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  201. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  202. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  203. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  204. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  205. package/lib/es6/persisters/persister-yjs.js +1 -1
  206. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  207. package/lib/es6/persisters.js +1 -1
  208. package/lib/es6/persisters.js.gz +0 -0
  209. package/lib/es6/queries.js +1 -1
  210. package/lib/es6/queries.js.gz +0 -0
  211. package/lib/es6/relationships.js +1 -1
  212. package/lib/es6/relationships.js.gz +0 -0
  213. package/lib/es6/store.js +1 -1
  214. package/lib/es6/store.js.gz +0 -0
  215. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  216. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  217. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  218. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  219. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  220. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  221. package/lib/es6/synchronizers.js +1 -0
  222. package/lib/es6/synchronizers.js.gz +0 -0
  223. package/lib/es6/tinybase.js +1 -1
  224. package/lib/es6/tinybase.js.gz +0 -0
  225. package/lib/es6/tools.js +1 -1
  226. package/lib/es6/tools.js.gz +0 -0
  227. package/lib/es6/ui-react-dom-debug.js +1 -1
  228. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  229. package/lib/es6/ui-react-dom.js +1 -1
  230. package/lib/es6/ui-react-dom.js.gz +0 -0
  231. package/lib/es6/ui-react.js +1 -1
  232. package/lib/es6/ui-react.js.gz +0 -0
  233. package/lib/indexes.js +1 -1
  234. package/lib/indexes.js.gz +0 -0
  235. package/lib/mergeable-store.js +1 -0
  236. package/lib/mergeable-store.js.gz +0 -0
  237. package/lib/metrics.js +1 -1
  238. package/lib/metrics.js.gz +0 -0
  239. package/lib/persisters/persister-automerge.js +1 -1
  240. package/lib/persisters/persister-automerge.js.gz +0 -0
  241. package/lib/persisters/persister-browser.js +1 -1
  242. package/lib/persisters/persister-browser.js.gz +0 -0
  243. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  244. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  245. package/lib/persisters/persister-electric-sql.js +1 -1
  246. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  247. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  248. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  249. package/lib/persisters/persister-expo-sqlite.js +1 -1
  250. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  251. package/lib/persisters/persister-file.js +1 -1
  252. package/lib/persisters/persister-file.js.gz +0 -0
  253. package/lib/persisters/persister-indexed-db.js +1 -1
  254. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  255. package/lib/persisters/persister-libsql.js +1 -0
  256. package/lib/persisters/persister-libsql.js.gz +0 -0
  257. package/lib/persisters/persister-partykit-client.js +1 -1
  258. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  259. package/lib/persisters/persister-partykit-server.js +1 -1
  260. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  261. package/lib/persisters/persister-powersync.js +1 -0
  262. package/lib/persisters/persister-powersync.js.gz +0 -0
  263. package/lib/persisters/persister-remote.js +1 -1
  264. package/lib/persisters/persister-remote.js.gz +0 -0
  265. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  266. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  267. package/lib/persisters/persister-sqlite3.js +1 -1
  268. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  269. package/lib/persisters/persister-yjs.js +1 -1
  270. package/lib/persisters/persister-yjs.js.gz +0 -0
  271. package/lib/persisters.js +1 -1
  272. package/lib/persisters.js.gz +0 -0
  273. package/lib/queries.js +1 -1
  274. package/lib/queries.js.gz +0 -0
  275. package/lib/relationships.js +1 -1
  276. package/lib/relationships.js.gz +0 -0
  277. package/lib/store.js +1 -1
  278. package/lib/store.js.gz +0 -0
  279. package/lib/synchronizers/synchronizer-local.js +1 -0
  280. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  281. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  282. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  283. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  284. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  285. package/lib/synchronizers.js +1 -0
  286. package/lib/synchronizers.js.gz +0 -0
  287. package/lib/tinybase.js +1 -1
  288. package/lib/tinybase.js.gz +0 -0
  289. package/lib/tools.js +1 -1
  290. package/lib/tools.js.gz +0 -0
  291. package/lib/types/checkpoints.d.ts +2 -2
  292. package/lib/types/indexes.d.ts +2 -2
  293. package/lib/types/mergeable-store.d.ts +214 -0
  294. package/lib/types/metrics.d.ts +2 -2
  295. package/lib/types/persisters/persister-automerge.d.ts +11 -7
  296. package/lib/types/persisters/persister-browser.d.ts +13 -4
  297. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
  298. package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
  299. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +4 -0
  300. package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
  301. package/lib/types/persisters/persister-file.d.ts +7 -2
  302. package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
  303. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  304. package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
  305. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  306. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  307. package/lib/types/persisters/persister-remote.d.ts +4 -0
  308. package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
  309. package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
  310. package/lib/types/persisters/persister-yjs.d.ts +6 -2
  311. package/lib/types/persisters.d.ts +125 -48
  312. package/lib/types/queries.d.ts +2 -2
  313. package/lib/types/relationships.d.ts +2 -2
  314. package/lib/types/store.d.ts +275 -187
  315. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  316. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
  317. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +36 -0
  318. package/lib/types/synchronizers.d.ts +132 -0
  319. package/lib/types/tinybase.d.ts +10 -8
  320. package/lib/types/tools.d.ts +4 -4
  321. package/lib/types/ui-react.d.ts +160 -9
  322. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  323. package/lib/types/with-schemas/indexes.d.ts +2 -2
  324. package/lib/types/with-schemas/internal/store.d.ts +4 -0
  325. package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
  326. package/lib/types/with-schemas/metrics.d.ts +2 -2
  327. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
  328. package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
  329. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
  330. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
  331. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +5 -1
  332. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
  333. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
  334. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
  335. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  336. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
  337. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  338. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  339. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
  340. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
  341. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
  342. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
  343. package/lib/types/with-schemas/persisters.d.ts +161 -101
  344. package/lib/types/with-schemas/queries.d.ts +3 -3
  345. package/lib/types/with-schemas/relationships.d.ts +2 -2
  346. package/lib/types/with-schemas/store.d.ts +483 -345
  347. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  348. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
  349. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +36 -0
  350. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  351. package/lib/types/with-schemas/tinybase.d.ts +9 -8
  352. package/lib/types/with-schemas/tools.d.ts +4 -4
  353. package/lib/types/with-schemas/ui-react.d.ts +177 -9
  354. package/lib/ui-react-dom.js +1 -1
  355. package/lib/ui-react-dom.js.gz +0 -0
  356. package/lib/ui-react.js +1 -1
  357. package/lib/ui-react.js.gz +0 -0
  358. package/lib/umd/checkpoints.js +1 -1
  359. package/lib/umd/checkpoints.js.gz +0 -0
  360. package/lib/umd/indexes.js +1 -1
  361. package/lib/umd/indexes.js.gz +0 -0
  362. package/lib/umd/mergeable-store.js +1 -0
  363. package/lib/umd/mergeable-store.js.gz +0 -0
  364. package/lib/umd/metrics.js +1 -1
  365. package/lib/umd/metrics.js.gz +0 -0
  366. package/lib/umd/persisters/persister-automerge.js +1 -1
  367. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  368. package/lib/umd/persisters/persister-browser.js +1 -1
  369. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  370. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  371. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  372. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  373. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  374. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  375. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  376. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  377. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  378. package/lib/umd/persisters/persister-file.js +1 -1
  379. package/lib/umd/persisters/persister-file.js.gz +0 -0
  380. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  381. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  382. package/lib/umd/persisters/persister-libsql.js +1 -0
  383. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  384. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  385. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  386. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  387. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  388. package/lib/umd/persisters/persister-powersync.js +1 -0
  389. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  390. package/lib/umd/persisters/persister-remote.js +1 -1
  391. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  392. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  393. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  394. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  395. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  396. package/lib/umd/persisters/persister-yjs.js +1 -1
  397. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  398. package/lib/umd/persisters.js +1 -1
  399. package/lib/umd/persisters.js.gz +0 -0
  400. package/lib/umd/queries.js +1 -1
  401. package/lib/umd/queries.js.gz +0 -0
  402. package/lib/umd/relationships.js +1 -1
  403. package/lib/umd/relationships.js.gz +0 -0
  404. package/lib/umd/store.js +1 -1
  405. package/lib/umd/store.js.gz +0 -0
  406. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  407. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  408. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  409. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  410. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  411. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  412. package/lib/umd/synchronizers.js +1 -0
  413. package/lib/umd/synchronizers.js.gz +0 -0
  414. package/lib/umd/tinybase.js +1 -1
  415. package/lib/umd/tinybase.js.gz +0 -0
  416. package/lib/umd/tools.js +1 -1
  417. package/lib/umd/tools.js.gz +0 -0
  418. package/lib/umd/ui-react-dom-debug.js +1 -1
  419. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  420. package/lib/umd/ui-react-dom.js +1 -1
  421. package/lib/umd/ui-react-dom.js.gz +0 -0
  422. package/lib/umd/ui-react.js +1 -1
  423. package/lib/umd/ui-react.js.gz +0 -0
  424. package/lib/umd-es6/checkpoints.js +1 -1
  425. package/lib/umd-es6/checkpoints.js.gz +0 -0
  426. package/lib/umd-es6/indexes.js +1 -1
  427. package/lib/umd-es6/indexes.js.gz +0 -0
  428. package/lib/umd-es6/mergeable-store.js +1 -0
  429. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  430. package/lib/umd-es6/metrics.js +1 -1
  431. package/lib/umd-es6/metrics.js.gz +0 -0
  432. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  433. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  434. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  435. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  436. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  437. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  438. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  439. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  440. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  441. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  442. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  443. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  444. package/lib/umd-es6/persisters/persister-file.js +1 -1
  445. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  446. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  447. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  448. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  449. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  450. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  451. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  452. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  453. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  454. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  455. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  456. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  457. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  458. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  459. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  460. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  461. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  462. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  463. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  464. package/lib/umd-es6/persisters.js +1 -1
  465. package/lib/umd-es6/persisters.js.gz +0 -0
  466. package/lib/umd-es6/queries.js +1 -1
  467. package/lib/umd-es6/queries.js.gz +0 -0
  468. package/lib/umd-es6/relationships.js +1 -1
  469. package/lib/umd-es6/relationships.js.gz +0 -0
  470. package/lib/umd-es6/store.js +1 -1
  471. package/lib/umd-es6/store.js.gz +0 -0
  472. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  473. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  474. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  475. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  476. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  477. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  478. package/lib/umd-es6/synchronizers.js +1 -0
  479. package/lib/umd-es6/synchronizers.js.gz +0 -0
  480. package/lib/umd-es6/tinybase.js +1 -1
  481. package/lib/umd-es6/tinybase.js.gz +0 -0
  482. package/lib/umd-es6/tools.js +1 -1
  483. package/lib/umd-es6/tools.js.gz +0 -0
  484. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  485. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  486. package/lib/umd-es6/ui-react-dom.js +1 -1
  487. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  488. package/lib/umd-es6/ui-react.js +1 -1
  489. package/lib/umd-es6/ui-react.js.gz +0 -0
  490. package/package.json +65 -45
  491. package/readme.md +2 -2
@@ -22,6 +22,8 @@
22
22
  * |persister-expo-sqlite|createExpoSqlitePersister|SQLite in React Native, via [expo-sqlite](https://github.com/expo/expo/tree/main/packages/expo-sqlite)|
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
+ * |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)|
25
27
  * |persister-yjs|createYjsPersister|Yjs CRDTs, via [yjs](https://github.com/yjs/yjs)|
26
28
  * |persister-automerge|createSqliteWasmPersister|Automerge CRDTs, via [automerge-repo](https://github.com/automerge/automerge-repo)|
27
29
  *
@@ -39,13 +41,17 @@
39
41
  */
40
42
 
41
43
  import {
42
- GetTransactionChanges,
44
+ Changes,
45
+ Content,
43
46
  OptionalSchemas,
44
47
  OptionalTablesSchema,
45
48
  Store,
46
- Tables,
47
- Values,
48
- } from './store.d';
49
+ } from './store.d.ts';
50
+ import {
51
+ MergeableChanges,
52
+ MergeableContent,
53
+ MergeableStore,
54
+ } from './mergeable-store';
49
55
  import {TableIdFromSchema} from './internal/store';
50
56
 
51
57
  /**
@@ -74,28 +80,39 @@ export type PersisterStats = {
74
80
  * This has schema-based typing. The following is a simplified representation:
75
81
  *
76
82
  * ```ts override
77
- * (
78
- * getContent?: () => [Tables, Values],
79
- * getTransactionChanges?: GetTransactionChanges,
80
- * ) => void;
83
+ * export type PersisterListener<SupportsMergeableStore extends boolean = false> =
84
+ * (
85
+ * getContent?: () =>
86
+ * | Content
87
+ * | (SupportsMergeableStore extends true ? MergeableContent : never),
88
+ * getChanges?: () =>
89
+ * | Changes
90
+ * | (SupportsMergeableStore extends true ? MergeableChanges : never),
91
+ * ) => void;
81
92
  * ```
82
93
  *
83
- * If the listener has the `getTransactionChanges` parameter, it will be used to
84
- * make an incremental change to the Store. If not, but the `getContent`
85
- * function _is_ available, that will be used to make a wholesale change to the
86
- * Store. If neither are present, the content will be loaded from the
87
- * Persister's load method.
94
+ * If the listener has the `getChanges` parameter, it will be used to make an
95
+ * incremental change to the Store. If not, but the `getContent` function _is_
96
+ * available, that will be used to make a wholesale change to the Store. If
97
+ * neither are present, the content will be loaded from the Persister's load
98
+ * method.
88
99
  * @param getContent An optional function that, if provided, returns an array of
89
100
  * Store content and can be used to immediately wholesale update the Store.
90
- * @param getTransactionChanges An optional function that, if provided, returns
91
- * a TransactionChanges object and can be used to immediately incrementally
92
- * update the Store.
101
+ * @param getChanges An optional function that, if provided, returns a Changes
102
+ * object and can be used to immediately incrementally update the Store.
93
103
  * @category Creation
94
104
  * @since v4.0.0
95
105
  */
96
- export type PersisterListener<Schemas extends OptionalSchemas> = (
97
- getContent?: () => [Tables<Schemas[0], true>, Values<Schemas[1], true>],
98
- getTransactionChanges?: GetTransactionChanges<Schemas>,
106
+ export type PersisterListener<
107
+ Schemas extends OptionalSchemas,
108
+ SupportsMergeableStore extends boolean = false,
109
+ > = (
110
+ getContent?: () =>
111
+ | Content<Schemas, true>
112
+ | (SupportsMergeableStore extends true ? MergeableContent<Schemas> : never),
113
+ getChanges?: () =>
114
+ | Changes<Schemas>
115
+ | (SupportsMergeableStore extends true ? MergeableChanges<Schemas> : never),
99
116
  ) => void;
100
117
 
101
118
  /**
@@ -572,9 +589,9 @@ export type DpcTabularValues = {
572
589
  *
573
590
  * Creating a Persister depends on the choice of underlying storage where the
574
591
  * data is to be stored. Options include the createSessionPersister function,
575
- * the createLocalPersister, the createRemotePersister function, and the
576
- * createFilePersister function. The createCustomPersister function can also be
577
- * used to easily create a fully customized way to save and load Store data.
592
+ * the createLocalPersister function, the createRemotePersister function, and
593
+ * the createFilePersister function. The createCustomPersister function can also
594
+ * be used to easily create a fully customized way to save and load Store data.
578
595
  *
579
596
  * A Persister lets you explicit save or load data, with the save method and the
580
597
  * load method respectively. These methods are both asynchronous (since the
@@ -643,7 +660,7 @@ export type DpcTabularValues = {
643
660
  * const store = createStore();
644
661
  * const persister = createSessionPersister(store, 'pets');
645
662
  *
646
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
663
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
647
664
  * await persister.startAutoSave();
648
665
  *
649
666
  * store.setTables({pets: {felix: {species: 'cat'}}});
@@ -664,7 +681,10 @@ export type DpcTabularValues = {
664
681
  * ```
665
682
  * @category Persister
666
683
  */
667
- export interface Persister<in out Schemas extends OptionalSchemas> {
684
+ export interface Persister<
685
+ in out Schemas extends OptionalSchemas,
686
+ SupportsMergeableStore extends boolean = false,
687
+ > {
668
688
  /**
669
689
  * The load method gets persisted data from storage, and loads it into the
670
690
  * Store with which the Persister is associated, once.
@@ -672,10 +692,10 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
672
692
  * This has schema-based typing. The following is a simplified representation:
673
693
  *
674
694
  * ```ts override
675
- * load(initialTables?: Tables, initialValues?: Values): Promise<Persister>;
695
+ * load(initialContent?: Content): Promise<this>;
676
696
  * ```
677
697
  *
678
- * The optional parameters allow you to specify what the initial content for
698
+ * The optional parameter allows you to specify what the initial content for
679
699
  * the Store will be if there is nothing currently persisted or if the load
680
700
  * fails (for example when the Persister is remote and the environment is
681
701
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -685,10 +705,8 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
685
705
  * machine or a filesystem. Even for those storage types that are synchronous
686
706
  * (like browser storage) it is still recommended that you `await` calls to
687
707
  * this method or handle the return type natively as a Promise.
688
- * @param initialTables An optional Tables object used when the underlying
708
+ * @param initialContent An optional Content object used when the underlying
689
709
  * storage has not previously been populated.
690
- * @param initialValues An optional Values object used when the underlying
691
- * storage has not previously been populated, since v3.0.
692
710
  * @returns A Promise containing a reference to the Persister object.
693
711
  * @example
694
712
  * This example creates an empty Store, and loads data into it from the
@@ -717,7 +735,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
717
735
  * const store = createStore();
718
736
  * const persister = createSessionPersister(store, 'pets');
719
737
  *
720
- * await persister.load({pets: {fido: {species: 'dog'}}});
738
+ * await persister.load([{pets: {fido: {species: 'dog'}}}, {}]);
721
739
  * console.log(store.getTables());
722
740
  * // -> {pets: {fido: {species: 'dog'}}}
723
741
  *
@@ -730,10 +748,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
730
748
  * ```
731
749
  * @category Load
732
750
  */
733
- load(
734
- initialTables?: Tables<Schemas[0], true>,
735
- initialValues?: Values<Schemas[1], true>,
736
- ): Promise<Persister<Schemas>>;
751
+ load(initialContent?: Content<Schemas, true>): Promise<this>;
737
752
 
738
753
  /**
739
754
  * The startAutoLoad method gets persisted data from storage, and loads it
@@ -743,13 +758,10 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
743
758
  * This has schema-based typing. The following is a simplified representation:
744
759
  *
745
760
  * ```ts override
746
- * startAutoLoad(
747
- * initialTables?: Tables,
748
- * initialValues?: Values,
749
- * ): Promise<Persister>;
761
+ * startAutoLoad(initialContent?: Content): Promise<this>;
750
762
  * ```
751
763
  *
752
- * The optional parameters allow you to specify what the initial content for
764
+ * The optional parameter allows you to specify what the initial content for
753
765
  * the Store will be if there is nothing currently persisted or if the load
754
766
  * fails (for example when the Persister is remote and the environment is
755
767
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -764,10 +776,8 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
764
776
  * the asynchronous load method. Even for those storage types that are
765
777
  * synchronous (like browser storage) it is still recommended that you `await`
766
778
  * calls to this method or handle the return type natively as a Promise.
767
- * @param initialTables An optional Tables object used when the underlying
779
+ * @param initialContent An optional Content object used when the underlying
768
780
  * storage has not previously been populated.
769
- * @param initialValues An optional Values object used when the underlying
770
- * storage has not previously been populated, since v3.0.
771
781
  * @returns A Promise containing a reference to the Persister object.
772
782
  * @example
773
783
  * This example creates an empty Store, and loads data into it from the
@@ -780,7 +790,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
780
790
  * const store = createStore();
781
791
  * const persister = createSessionPersister(store, 'pets');
782
792
  *
783
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
793
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
784
794
  * console.log(store.getTables());
785
795
  * // -> {pets: {fido: {species: 'dog'}}}
786
796
  *
@@ -797,21 +807,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
797
807
  * ```
798
808
  * @category Load
799
809
  */
800
- startAutoLoad(
801
- initialTables?: Tables<Schemas[0], true>,
802
- initialValues?: Values<Schemas[1], true>,
803
- ): Promise<Persister<Schemas>>;
810
+ startAutoLoad(initialContent?: Content<Schemas, true>): Promise<this>;
804
811
 
805
812
  /**
806
813
  * The stopAutoLoad method stops the automatic loading of data from storage
807
814
  * previously started with the startAutoLoad method.
808
815
  *
809
- * This has schema-based typing. The following is a simplified representation:
810
- *
811
- * ```ts override
812
- * stopAutoLoad(): Persister;
813
- * ```
814
- *
815
816
  * If the Persister is not currently set to automatically load, this method
816
817
  * has no effect.
817
818
  * @returns A reference to the Persister object.
@@ -850,17 +851,38 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
850
851
  * ```
851
852
  * @category Load
852
853
  */
853
- stopAutoLoad(): Persister<Schemas>;
854
+ stopAutoLoad(): this;
854
855
 
855
856
  /**
856
- * The save method takes data from the Store with which the Persister is
857
- * associated and persists it into storage, once.
857
+ * The isAutoLoading method lets you find out if the Persister is currently
858
+ * automatically loading its content.
859
+ * @returns A boolean indicating whether the Persister is currently
860
+ * autoLoading.
861
+ * @example
862
+ * This example creates a Persister and queries whether it is autoLoading.
858
863
  *
859
- * This has schema-based typing. The following is a simplified representation:
864
+ * ```js
865
+ * const persister = createSessionPersister(createStore(), 'pets');
860
866
  *
861
- * ```ts override
862
- * save(): Promise<Persister>;
867
+ * console.log(persister.isAutoLoading());
868
+ * // -> false
869
+ *
870
+ * await persister.startAutoLoad();
871
+ * console.log(persister.isAutoLoading());
872
+ * // -> true
873
+ *
874
+ * await persister.stopAutoLoad();
875
+ * console.log(persister.isAutoLoading());
876
+ * // -> false
863
877
  * ```
878
+ * @category Load
879
+ * @since v5.0.0
880
+ */
881
+ isAutoLoading(): boolean;
882
+
883
+ /**
884
+ * The save method takes data from the Store with which the Persister is
885
+ * associated and persists it into storage, once.
864
886
  *
865
887
  * This method is asynchronous because the persisted data may be on a remote
866
888
  * machine or a filesystem. Even for those storage types that are synchronous
@@ -884,18 +906,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
884
906
  * ```
885
907
  * @category Save
886
908
  */
887
- save(): Promise<Persister<Schemas>>;
909
+ save(): Promise<this>;
888
910
 
889
911
  /**
890
912
  * The save method takes data from the Store with which the Persister is
891
913
  * associated and persists it into storage, once, and then continuously.
892
914
  *
893
- * This has schema-based typing. The following is a simplified representation:
894
- *
895
- * ```ts override
896
- * startAutoSave(): Promise<Persister>;
897
- * ```
898
- *
899
915
  * This method first runs a single call to the save method to ensure the data
900
916
  * is in sync with the persisted storage. It then continues to watch for
901
917
  * changes to the Store, automatically saving the data to storage.
@@ -927,18 +943,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
927
943
  * ```
928
944
  * @category Save
929
945
  */
930
- startAutoSave(): Promise<Persister<Schemas>>;
946
+ startAutoSave(): Promise<this>;
931
947
 
932
948
  /**
933
949
  * The stopAutoSave method stops the automatic save of data to storage
934
950
  * previously started with the startAutoSave method.
935
951
  *
936
- * This has schema-based typing. The following is a simplified representation:
937
- *
938
- * ```ts override
939
- * stopAutoSave(): Persister;
940
- * ```
941
- *
942
952
  * If the Persister is not currently set to automatically save, this method
943
953
  * has no effect.
944
954
  * @returns A reference to the Persister object.
@@ -970,17 +980,38 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
970
980
  * ```
971
981
  * @category Save
972
982
  */
973
- stopAutoSave(): Persister<Schemas>;
983
+ stopAutoSave(): this;
974
984
 
975
985
  /**
976
- * The schedule method allows you to queue up a series of asynchronous actions
977
- * that must run in sequence during persistence.
986
+ * The isAutoSaving method lets you find out if the Persister is currently
987
+ * automatically saving its content.
988
+ * @returns A boolean indicating whether the Persister is currently
989
+ * autoSaving.
990
+ * @example
991
+ * This example creates a Persister and queries whether it is autoSaving.
978
992
  *
979
- * This has schema-based typing. The following is a simplified representation:
993
+ * ```js
994
+ * const persister = createSessionPersister(createStore(), 'pets');
980
995
  *
981
- * ```ts override
982
- * schedule(...actions: Promise<any>[]): Promise<Persister>;
996
+ * console.log(persister.isAutoSaving());
997
+ * // -> false
998
+ *
999
+ * await persister.startAutoSave();
1000
+ * console.log(persister.isAutoSaving());
1001
+ * // -> true
1002
+ *
1003
+ * await persister.stopAutoSave();
1004
+ * console.log(persister.isAutoSaving());
1005
+ * // -> false
983
1006
  * ```
1007
+ * @category Save
1008
+ * @since v5.0.0
1009
+ */
1010
+ isAutoSaving(): boolean;
1011
+
1012
+ /**
1013
+ * The schedule method allows you to queue up a series of asynchronous actions
1014
+ * that must run in sequence during persistence.
984
1015
  *
985
1016
  * For example, a database Persister may need to ensure that multiple
986
1017
  * asynchronous tasks to check and update the database schema are completed
@@ -1019,7 +1050,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1019
1050
  * @category Lifecycle
1020
1051
  * @since v4.0.0
1021
1052
  */
1022
- schedule(...actions: Promise<any>[]): Promise<Persister<Schemas>>;
1053
+ schedule(...actions: Promise<any>[]): Promise<this>;
1023
1054
 
1024
1055
  /**
1025
1056
  * The getStore method returns a reference to the underlying Store that is
@@ -1032,7 +1063,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1032
1063
  * This has schema-based typing. The following is a simplified representation:
1033
1064
  *
1034
1065
  * ```ts override
1035
- * getStore(): Store;
1066
+ * getStore(): SupportsMergeableStore extends true
1067
+ * ? Store | MergeableStore
1068
+ * : Store;
1036
1069
  * ```
1037
1070
  *
1038
1071
  * ```js
@@ -1048,18 +1081,14 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1048
1081
  * ```
1049
1082
  * @category Getter
1050
1083
  */
1051
- getStore(): Store<Schemas>;
1084
+ getStore(): SupportsMergeableStore extends true
1085
+ ? Store<Schemas> | MergeableStore<Schemas>
1086
+ : Store<Schemas>;
1052
1087
 
1053
1088
  /**
1054
1089
  * The destroy method should be called when this Persister object is no longer
1055
1090
  * used.
1056
1091
  *
1057
- * This has schema-based typing. The following is a simplified representation:
1058
- *
1059
- * ```ts override
1060
- * destroy(): Persister;
1061
- * ```
1062
- *
1063
1092
  * This guarantees that all of the listeners that the object registered with
1064
1093
  * the underlying Store and storage are removed and it can be correctly
1065
1094
  * garbage collected. It is equivalent to running the stopAutoLoad method and
@@ -1084,7 +1113,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1084
1113
  * ```
1085
1114
  * @category Lifecycle
1086
1115
  */
1087
- destroy(): Persister<Schemas>;
1116
+ destroy(): this;
1088
1117
 
1089
1118
  /**
1090
1119
  * The getStats method provides a set of statistics about the Persister, and
@@ -1138,17 +1167,31 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1138
1167
  * This has schema-based typing. The following is a simplified representation:
1139
1168
  *
1140
1169
  * ```ts override
1141
- * createCustomPersister<ListeningHandle>(
1142
- * store: Store,
1143
- * getPersisted: () => Promise<[Tables, Values] | undefined>,
1170
+ * createCustomPersister<
1171
+ * ListeningHandle,
1172
+ * SupportsMergeableStore extends boolean = false,
1173
+ * >(
1174
+ * store: Store | (SupportsMergeableStore extends true ? MergeableStore : never),
1175
+ * getPersisted: () => Promise<
1176
+ * | Content
1177
+ * | (SupportsMergeableStore extends true ? MergeableContent : never)
1178
+ * | undefined
1179
+ * >,
1144
1180
  * setPersisted: (
1145
- * getContent: () => [Tables, Values],
1146
- * getTransactionChanges?: GetTransactionChanges,
1181
+ * getContent: () =>
1182
+ * | Content
1183
+ * | (SupportsMergeableStore extends true ? MergeableContent : never),
1184
+ * getChanges?: () =>
1185
+ * | Changes
1186
+ * | (SupportsMergeableStore extends true ? MergeableChanges : never),
1147
1187
  * ) => Promise<void>,
1148
- * addPersisterListener: (listener: PersisterListener) => ListeningHandle,
1188
+ * addPersisterListener: (
1189
+ * listener: PersisterListener<SupportsMergeableStore>,
1190
+ * ) => ListeningHandle,
1149
1191
  * delPersisterListener: (listeningHandle: ListeningHandle) => void,
1150
1192
  * onIgnoredError?: (error: any) => void,
1151
- * ): Persister;
1193
+ * supportsMergeableStore?: SupportsMergeableStore,
1194
+ * ): Persister<SupportsMergeableStore>;
1152
1195
  * ```
1153
1196
  *
1154
1197
  * As well as providing a reference to the Store to persist, you must provide
@@ -1184,6 +1227,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1184
1227
  * @param onIgnoredError An optional handler for the errors that the Persister
1185
1228
  * would otherwise ignore when trying to save or load data. This is suitable for
1186
1229
  * debugging persistence issues in a development environment, since v4.0.4.
1230
+ * @param supportsMergeableStore An optional boolean to indicate that this
1231
+ * Persister will be able to handle MergeableStore persistence as well as
1232
+ * regular Store persistence, since v5.0.
1187
1233
  * @returns A reference to the new Persister object.
1188
1234
  * @example
1189
1235
  * This example creates a custom Persister object and persists the Store to a
@@ -1225,18 +1271,32 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1225
1271
  export function createCustomPersister<
1226
1272
  Schemas extends OptionalSchemas,
1227
1273
  ListeningHandle,
1274
+ SupportsMergeableStore extends boolean,
1228
1275
  >(
1229
- store: Store<Schemas>,
1276
+ store:
1277
+ | Store<Schemas>
1278
+ | (SupportsMergeableStore extends true ? MergeableStore<Schemas> : never),
1230
1279
  getPersisted: () => Promise<
1231
- [Tables<Schemas[0]>, Values<Schemas[1]>] | undefined
1280
+ | Content<Schemas>
1281
+ | (SupportsMergeableStore extends true ? MergeableContent<Schemas> : never)
1282
+ | undefined
1232
1283
  >,
1233
1284
  setPersisted: (
1234
- getContent: () => [Tables<Schemas[0]>, Values<Schemas[1]>],
1235
- getTransactionChanges?: GetTransactionChanges<Schemas>,
1285
+ getContent: () =>
1286
+ | Content<Schemas>
1287
+ | (SupportsMergeableStore extends true
1288
+ ? MergeableContent<Schemas>
1289
+ : never),
1290
+ getChanges?: () =>
1291
+ | Changes<Schemas>
1292
+ | (SupportsMergeableStore extends true
1293
+ ? MergeableChanges<Schemas>
1294
+ : never),
1236
1295
  ) => Promise<void>,
1237
1296
  addPersisterListener: (
1238
1297
  listener: PersisterListener<Schemas>,
1239
1298
  ) => ListeningHandle,
1240
1299
  delPersisterListener: (listeningHandle: ListeningHandle) => void,
1241
1300
  onIgnoredError?: (error: any) => void,
1242
- ): Persister<Schemas>;
1301
+ supportsMergeableStore?: SupportsMergeableStore,
1302
+ ): Persister<Schemas, SupportsMergeableStore>;
@@ -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