tinybase 5.0.0-beta.1 → 5.0.0-beta.11

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 +167 -131
  140. package/lib/debug/persisters/persister-browser.js +155 -102
  141. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
  142. package/lib/debug/persisters/persister-electric-sql.js +225 -152
  143. package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
  144. package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
  145. package/lib/debug/persisters/persister-file.js +149 -101
  146. package/lib/debug/persisters/persister-indexed-db.js +146 -100
  147. package/lib/debug/persisters/persister-libsql.js +924 -0
  148. package/lib/debug/persisters/persister-partykit-client.js +146 -104
  149. package/lib/debug/persisters/persister-partykit-server.js +17 -25
  150. package/lib/debug/persisters/persister-powersync.js +939 -0
  151. package/lib/debug/persisters/persister-remote.js +141 -97
  152. package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
  153. package/lib/debug/persisters/persister-sqlite3.js +225 -152
  154. package/lib/debug/persisters/persister-yjs.js +164 -127
  155. package/lib/debug/persisters.js +137 -94
  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 +571 -0
  160. package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
  162. package/lib/debug/synchronizers.js +531 -0
  163. package/lib/debug/tinybase.js +1080 -215
  164. package/lib/debug/tools.js +22 -21
  165. package/lib/debug/ui-react-dom.js +336 -258
  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 +162 -59
  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 +57 -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 +193 -121
  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 +57 -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,15 +41,97 @@
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
 
57
+ /**
58
+ * The StoreTypes type
59
+ */
60
+ export type StoreTypes =
61
+ | 1 // Store only
62
+ | 2 // MergeableStore only
63
+ | 3; // Store and MergeableStore
64
+
65
+ /**
66
+ * The PersistedStore type
67
+ */
68
+ export type PersistedStore<
69
+ Schemas extends OptionalSchemas,
70
+ StoreType extends StoreTypes = 1,
71
+ > = StoreType extends 3
72
+ ? Store<Schemas> | MergeableStore<Schemas>
73
+ : StoreType extends 2
74
+ ? MergeableStore<Schemas>
75
+ : Store<Schemas>;
76
+
77
+ /**
78
+ * The PersistedContent type
79
+ */
80
+ export type PersistedContent<
81
+ Schemas extends OptionalSchemas,
82
+ StoreType extends StoreTypes = 1,
83
+ > = StoreType extends 3
84
+ ? Content<Schemas> | MergeableContent<Schemas>
85
+ : StoreType extends 2
86
+ ? MergeableContent<Schemas>
87
+ : Content<Schemas>;
88
+
89
+ /**
90
+ * The PersistedChanges type
91
+ */
92
+ export type PersistedChanges<
93
+ Schemas extends OptionalSchemas,
94
+ StoreType extends StoreTypes = 1,
95
+ > = StoreType extends 3
96
+ ? Changes<Schemas> | MergeableChanges<Schemas>
97
+ : StoreType extends 2
98
+ ? MergeableChanges<Schemas>
99
+ : Changes<Schemas>;
100
+
101
+ /**
102
+ * A PersisterListener is a callback that lets a Persister inform the Store that
103
+ * a change has happened to the underlying data.
104
+ *
105
+ * This has schema-based typing. The following is a simplified representation:
106
+ *
107
+ * ```ts override
108
+ * export type PersisterListener<StoreType extends StoreTypes = 1> = (
109
+ * content?: PersistedContent<StoreType>,
110
+ * changes?: PersistedChanges<StoreType>,
111
+ * ) => void;
112
+ * ```
113
+ *
114
+ * If the listener is called with the `changes` parameter, it will be used to
115
+ * make an incremental change to the Store. If not, but the `content` parameter
116
+ * is available, that will be used to make a wholesale change to the Store. If
117
+ * neither are present, the content will be loaded using the Persister's load
118
+ * method. Prior to v5.0, these parameters were callbacks.
119
+ * @param content If provided, this is a Content object from the the Persister
120
+ * that will be used to immediately wholesale update the Store.
121
+ * @param changes If provided, this is a Changes object from the the Persister
122
+ * that will be used to immediately incrementally update the Store. This takes
123
+ * priority over the content argument above if present.
124
+ * @category Creation
125
+ * @since v4.0.0
126
+ */
127
+ export type PersisterListener<
128
+ Schemas extends OptionalSchemas,
129
+ StoreType extends StoreTypes = 1,
130
+ > = (
131
+ content?: PersistedContent<Schemas, StoreType>,
132
+ changes?: PersistedChanges<Schemas, StoreType>,
133
+ ) => void;
134
+
51
135
  /**
52
136
  * The PersisterStats type describes the number of times a Persister object has
53
137
  * loaded or saved data.
@@ -67,37 +151,6 @@ export type PersisterStats = {
67
151
  saves?: number;
68
152
  };
69
153
 
70
- /**
71
- * A PersisterListener is a callback that lets a Persister inform the Store that
72
- * a change has happened to the underlying data.
73
- *
74
- * This has schema-based typing. The following is a simplified representation:
75
- *
76
- * ```ts override
77
- * (
78
- * getContent?: () => [Tables, Values],
79
- * getTransactionChanges?: GetTransactionChanges,
80
- * ) => void;
81
- * ```
82
- *
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.
88
- * @param getContent An optional function that, if provided, returns an array of
89
- * 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.
93
- * @category Creation
94
- * @since v4.0.0
95
- */
96
- export type PersisterListener<Schemas extends OptionalSchemas> = (
97
- getContent?: () => [Tables<Schemas[0], true>, Values<Schemas[1], true>],
98
- getTransactionChanges?: GetTransactionChanges<Schemas>,
99
- ) => void;
100
-
101
154
  /**
102
155
  * The DatabasePersisterConfig type describes the configuration of a
103
156
  * database-oriented Persister, such as those for SQLite.
@@ -572,9 +625,9 @@ export type DpcTabularValues = {
572
625
  *
573
626
  * Creating a Persister depends on the choice of underlying storage where the
574
627
  * 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.
628
+ * the createLocalPersister function, the createRemotePersister function, and
629
+ * the createFilePersister function. The createCustomPersister function can also
630
+ * be used to easily create a fully customized way to save and load Store data.
578
631
  *
579
632
  * A Persister lets you explicit save or load data, with the save method and the
580
633
  * load method respectively. These methods are both asynchronous (since the
@@ -643,7 +696,7 @@ export type DpcTabularValues = {
643
696
  * const store = createStore();
644
697
  * const persister = createSessionPersister(store, 'pets');
645
698
  *
646
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
699
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
647
700
  * await persister.startAutoSave();
648
701
  *
649
702
  * store.setTables({pets: {felix: {species: 'cat'}}});
@@ -664,7 +717,10 @@ export type DpcTabularValues = {
664
717
  * ```
665
718
  * @category Persister
666
719
  */
667
- export interface Persister<in out Schemas extends OptionalSchemas> {
720
+ export interface Persister<
721
+ in out Schemas extends OptionalSchemas,
722
+ StoreType extends StoreTypes = 1,
723
+ > {
668
724
  /**
669
725
  * The load method gets persisted data from storage, and loads it into the
670
726
  * Store with which the Persister is associated, once.
@@ -672,10 +728,10 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
672
728
  * This has schema-based typing. The following is a simplified representation:
673
729
  *
674
730
  * ```ts override
675
- * load(initialTables?: Tables, initialValues?: Values): Promise<Persister>;
731
+ * load(initialContent?: Content): Promise<this>;
676
732
  * ```
677
733
  *
678
- * The optional parameters allow you to specify what the initial content for
734
+ * The optional parameter allows you to specify what the initial content for
679
735
  * the Store will be if there is nothing currently persisted or if the load
680
736
  * fails (for example when the Persister is remote and the environment is
681
737
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -685,10 +741,8 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
685
741
  * machine or a filesystem. Even for those storage types that are synchronous
686
742
  * (like browser storage) it is still recommended that you `await` calls to
687
743
  * this method or handle the return type natively as a Promise.
688
- * @param initialTables An optional Tables object used when the underlying
744
+ * @param initialContent An optional Content object used when the underlying
689
745
  * 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
746
  * @returns A Promise containing a reference to the Persister object.
693
747
  * @example
694
748
  * This example creates an empty Store, and loads data into it from the
@@ -717,7 +771,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
717
771
  * const store = createStore();
718
772
  * const persister = createSessionPersister(store, 'pets');
719
773
  *
720
- * await persister.load({pets: {fido: {species: 'dog'}}});
774
+ * await persister.load([{pets: {fido: {species: 'dog'}}}, {}]);
721
775
  * console.log(store.getTables());
722
776
  * // -> {pets: {fido: {species: 'dog'}}}
723
777
  *
@@ -730,10 +784,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
730
784
  * ```
731
785
  * @category Load
732
786
  */
733
- load(
734
- initialTables?: Tables<Schemas[0], true>,
735
- initialValues?: Values<Schemas[1], true>,
736
- ): Promise<Persister<Schemas>>;
787
+ load(initialContent?: Content<Schemas, true>): Promise<this>;
737
788
 
738
789
  /**
739
790
  * The startAutoLoad method gets persisted data from storage, and loads it
@@ -743,13 +794,10 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
743
794
  * This has schema-based typing. The following is a simplified representation:
744
795
  *
745
796
  * ```ts override
746
- * startAutoLoad(
747
- * initialTables?: Tables,
748
- * initialValues?: Values,
749
- * ): Promise<Persister>;
797
+ * startAutoLoad(initialContent?: Content): Promise<this>;
750
798
  * ```
751
799
  *
752
- * The optional parameters allow you to specify what the initial content for
800
+ * The optional parameter allows you to specify what the initial content for
753
801
  * the Store will be if there is nothing currently persisted or if the load
754
802
  * fails (for example when the Persister is remote and the environment is
755
803
  * offline). This allows you to fallback or instantiate a Store whether it's
@@ -764,10 +812,8 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
764
812
  * the asynchronous load method. Even for those storage types that are
765
813
  * synchronous (like browser storage) it is still recommended that you `await`
766
814
  * calls to this method or handle the return type natively as a Promise.
767
- * @param initialTables An optional Tables object used when the underlying
815
+ * @param initialContent An optional Content object used when the underlying
768
816
  * 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
817
  * @returns A Promise containing a reference to the Persister object.
772
818
  * @example
773
819
  * This example creates an empty Store, and loads data into it from the
@@ -780,7 +826,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
780
826
  * const store = createStore();
781
827
  * const persister = createSessionPersister(store, 'pets');
782
828
  *
783
- * await persister.startAutoLoad({pets: {fido: {species: 'dog'}}});
829
+ * await persister.startAutoLoad([{pets: {fido: {species: 'dog'}}}, {}]);
784
830
  * console.log(store.getTables());
785
831
  * // -> {pets: {fido: {species: 'dog'}}}
786
832
  *
@@ -797,21 +843,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
797
843
  * ```
798
844
  * @category Load
799
845
  */
800
- startAutoLoad(
801
- initialTables?: Tables<Schemas[0], true>,
802
- initialValues?: Values<Schemas[1], true>,
803
- ): Promise<Persister<Schemas>>;
846
+ startAutoLoad(initialContent?: Content<Schemas, true>): Promise<this>;
804
847
 
805
848
  /**
806
849
  * The stopAutoLoad method stops the automatic loading of data from storage
807
850
  * previously started with the startAutoLoad method.
808
851
  *
809
- * This has schema-based typing. The following is a simplified representation:
810
- *
811
- * ```ts override
812
- * stopAutoLoad(): Persister;
813
- * ```
814
- *
815
852
  * If the Persister is not currently set to automatically load, this method
816
853
  * has no effect.
817
854
  * @returns A reference to the Persister object.
@@ -850,17 +887,38 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
850
887
  * ```
851
888
  * @category Load
852
889
  */
853
- stopAutoLoad(): Persister<Schemas>;
890
+ stopAutoLoad(): this;
854
891
 
855
892
  /**
856
- * The save method takes data from the Store with which the Persister is
857
- * associated and persists it into storage, once.
893
+ * The isAutoLoading method lets you find out if the Persister is currently
894
+ * automatically loading its content.
895
+ * @returns A boolean indicating whether the Persister is currently
896
+ * autoLoading.
897
+ * @example
898
+ * This example creates a Persister and queries whether it is autoLoading.
858
899
  *
859
- * This has schema-based typing. The following is a simplified representation:
900
+ * ```js
901
+ * const persister = createSessionPersister(createStore(), 'pets');
860
902
  *
861
- * ```ts override
862
- * save(): Promise<Persister>;
903
+ * console.log(persister.isAutoLoading());
904
+ * // -> false
905
+ *
906
+ * await persister.startAutoLoad();
907
+ * console.log(persister.isAutoLoading());
908
+ * // -> true
909
+ *
910
+ * await persister.stopAutoLoad();
911
+ * console.log(persister.isAutoLoading());
912
+ * // -> false
863
913
  * ```
914
+ * @category Load
915
+ * @since v5.0.0
916
+ */
917
+ isAutoLoading(): boolean;
918
+
919
+ /**
920
+ * The save method takes data from the Store with which the Persister is
921
+ * associated and persists it into storage, once.
864
922
  *
865
923
  * This method is asynchronous because the persisted data may be on a remote
866
924
  * machine or a filesystem. Even for those storage types that are synchronous
@@ -884,18 +942,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
884
942
  * ```
885
943
  * @category Save
886
944
  */
887
- save(): Promise<Persister<Schemas>>;
945
+ save(): Promise<this>;
888
946
 
889
947
  /**
890
948
  * The save method takes data from the Store with which the Persister is
891
949
  * associated and persists it into storage, once, and then continuously.
892
950
  *
893
- * This has schema-based typing. The following is a simplified representation:
894
- *
895
- * ```ts override
896
- * startAutoSave(): Promise<Persister>;
897
- * ```
898
- *
899
951
  * This method first runs a single call to the save method to ensure the data
900
952
  * is in sync with the persisted storage. It then continues to watch for
901
953
  * changes to the Store, automatically saving the data to storage.
@@ -927,18 +979,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
927
979
  * ```
928
980
  * @category Save
929
981
  */
930
- startAutoSave(): Promise<Persister<Schemas>>;
982
+ startAutoSave(): Promise<this>;
931
983
 
932
984
  /**
933
985
  * The stopAutoSave method stops the automatic save of data to storage
934
986
  * previously started with the startAutoSave method.
935
987
  *
936
- * This has schema-based typing. The following is a simplified representation:
937
- *
938
- * ```ts override
939
- * stopAutoSave(): Persister;
940
- * ```
941
- *
942
988
  * If the Persister is not currently set to automatically save, this method
943
989
  * has no effect.
944
990
  * @returns A reference to the Persister object.
@@ -970,17 +1016,38 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
970
1016
  * ```
971
1017
  * @category Save
972
1018
  */
973
- stopAutoSave(): Persister<Schemas>;
1019
+ stopAutoSave(): this;
974
1020
 
975
1021
  /**
976
- * The schedule method allows you to queue up a series of asynchronous actions
977
- * that must run in sequence during persistence.
1022
+ * The isAutoSaving method lets you find out if the Persister is currently
1023
+ * automatically saving its content.
1024
+ * @returns A boolean indicating whether the Persister is currently
1025
+ * autoSaving.
1026
+ * @example
1027
+ * This example creates a Persister and queries whether it is autoSaving.
978
1028
  *
979
- * This has schema-based typing. The following is a simplified representation:
1029
+ * ```js
1030
+ * const persister = createSessionPersister(createStore(), 'pets');
980
1031
  *
981
- * ```ts override
982
- * schedule(...actions: Promise<any>[]): Promise<Persister>;
1032
+ * console.log(persister.isAutoSaving());
1033
+ * // -> false
1034
+ *
1035
+ * await persister.startAutoSave();
1036
+ * console.log(persister.isAutoSaving());
1037
+ * // -> true
1038
+ *
1039
+ * await persister.stopAutoSave();
1040
+ * console.log(persister.isAutoSaving());
1041
+ * // -> false
983
1042
  * ```
1043
+ * @category Save
1044
+ * @since v5.0.0
1045
+ */
1046
+ isAutoSaving(): boolean;
1047
+
1048
+ /**
1049
+ * The schedule method allows you to queue up a series of asynchronous actions
1050
+ * that must run in sequence during persistence.
984
1051
  *
985
1052
  * For example, a database Persister may need to ensure that multiple
986
1053
  * asynchronous tasks to check and update the database schema are completed
@@ -1019,7 +1086,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1019
1086
  * @category Lifecycle
1020
1087
  * @since v4.0.0
1021
1088
  */
1022
- schedule(...actions: Promise<any>[]): Promise<Persister<Schemas>>;
1089
+ schedule(...actions: Promise<any>[]): Promise<this>;
1023
1090
 
1024
1091
  /**
1025
1092
  * The getStore method returns a reference to the underlying Store that is
@@ -1032,7 +1099,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1032
1099
  * This has schema-based typing. The following is a simplified representation:
1033
1100
  *
1034
1101
  * ```ts override
1035
- * getStore(): Store;
1102
+ * getStore(): PersistedStore<StoreType>;
1036
1103
  * ```
1037
1104
  *
1038
1105
  * ```js
@@ -1048,18 +1115,12 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1048
1115
  * ```
1049
1116
  * @category Getter
1050
1117
  */
1051
- getStore(): Store<Schemas>;
1118
+ getStore(): PersistedStore<Schemas, StoreType>;
1052
1119
 
1053
1120
  /**
1054
1121
  * The destroy method should be called when this Persister object is no longer
1055
1122
  * used.
1056
1123
  *
1057
- * This has schema-based typing. The following is a simplified representation:
1058
- *
1059
- * ```ts override
1060
- * destroy(): Persister;
1061
- * ```
1062
- *
1063
1124
  * This guarantees that all of the listeners that the object registered with
1064
1125
  * the underlying Store and storage are removed and it can be correctly
1065
1126
  * garbage collected. It is equivalent to running the stopAutoLoad method and
@@ -1084,7 +1145,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1084
1145
  * ```
1085
1146
  * @category Lifecycle
1086
1147
  */
1087
- destroy(): Persister<Schemas>;
1148
+ destroy(): this;
1088
1149
 
1089
1150
  /**
1090
1151
  * The getStats method provides a set of statistics about the Persister, and
@@ -1138,17 +1199,23 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1138
1199
  * This has schema-based typing. The following is a simplified representation:
1139
1200
  *
1140
1201
  * ```ts override
1141
- * createCustomPersister<ListeningHandle>(
1142
- * store: Store,
1143
- * getPersisted: () => Promise<[Tables, Values] | undefined>,
1202
+ * createCustomPersister<
1203
+ * ListeningHandle,
1204
+ * StoreType extends StoreTypes = 1,
1205
+ * >(
1206
+ * store: PersistedStore<StoreType>,
1207
+ * getPersisted: () => Promise<PersistedContent<StoreType> | undefined>,
1144
1208
  * setPersisted: (
1145
- * getContent: () => [Tables, Values],
1146
- * getTransactionChanges?: GetTransactionChanges,
1209
+ * getContent: () => PersistedContent<StoreType>,
1210
+ * changes?: PersistedChanges<StoreType>,
1147
1211
  * ) => Promise<void>,
1148
- * addPersisterListener: (listener: PersisterListener) => ListeningHandle,
1212
+ * addPersisterListener: (
1213
+ * listener: PersisterListener<StoreType>,
1214
+ * ) => ListeningHandle,
1149
1215
  * delPersisterListener: (listeningHandle: ListeningHandle) => void,
1150
1216
  * onIgnoredError?: (error: any) => void,
1151
- * ): Persister;
1217
+ * supportedStoreType?: StoreType,
1218
+ * ): Persister<StoreType>;
1152
1219
  * ```
1153
1220
  *
1154
1221
  * As well as providing a reference to the Store to persist, you must provide
@@ -1173,7 +1240,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1173
1240
  * the persistence layer (or `undefined` if not present).
1174
1241
  * @param setPersisted An asynchronous function which will send content to the
1175
1242
  * persistence layer. Since v4.0, it receives functions for getting the Store
1176
- * content and information about the changes made during a transaction.
1243
+ * content and information about the changes made during a transaction. Since
1244
+ * v5.0, the changes are received directly by reference, rather than an
1245
+ * accessor.
1177
1246
  * @param addPersisterListener A function that will register a `listener`
1178
1247
  * listener on underlying changes to the persistence layer. You can return a
1179
1248
  * listening handle that will be provided again when `delPersisterListener` is
@@ -1184,6 +1253,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1184
1253
  * @param onIgnoredError An optional handler for the errors that the Persister
1185
1254
  * would otherwise ignore when trying to save or load data. This is suitable for
1186
1255
  * debugging persistence issues in a development environment, since v4.0.4.
1256
+ * @param supportsMergeableStore An optional boolean to indicate that this
1257
+ * Persister will be able to handle MergeableStore persistence as well as
1258
+ * regular Store persistence, since v5.0.
1187
1259
  * @returns A reference to the new Persister object.
1188
1260
  * @example
1189
1261
  * This example creates a custom Persister object and persists the Store to a
@@ -1225,18 +1297,18 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1225
1297
  export function createCustomPersister<
1226
1298
  Schemas extends OptionalSchemas,
1227
1299
  ListeningHandle,
1300
+ StoreType extends StoreTypes = 1,
1228
1301
  >(
1229
- store: Store<Schemas>,
1230
- getPersisted: () => Promise<
1231
- [Tables<Schemas[0]>, Values<Schemas[1]>] | undefined
1232
- >,
1302
+ store: PersistedStore<Schemas, StoreType>,
1303
+ getPersisted: () => Promise<PersistedContent<Schemas, StoreType> | undefined>,
1233
1304
  setPersisted: (
1234
- getContent: () => [Tables<Schemas[0]>, Values<Schemas[1]>],
1235
- getTransactionChanges?: GetTransactionChanges<Schemas>,
1305
+ getContent: () => PersistedContent<Schemas, StoreType>,
1306
+ changes?: PersistedChanges<Schemas, StoreType>,
1236
1307
  ) => Promise<void>,
1237
1308
  addPersisterListener: (
1238
- listener: PersisterListener<Schemas>,
1309
+ listener: PersisterListener<Schemas, StoreType>,
1239
1310
  ) => ListeningHandle,
1240
1311
  delPersisterListener: (listeningHandle: ListeningHandle) => void,
1241
1312
  onIgnoredError?: (error: any) => void,
1242
- ): Persister<Schemas>;
1313
+ supportedStoreType?: StoreType,
1314
+ ): Persister<Schemas, StoreType>;
@@ -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