tinybase 5.2.0-beta.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/@types/mergeable-store/index.d.cts +114 -11
  2. package/@types/mergeable-store/index.d.ts +114 -11
  3. package/@types/mergeable-store/with-schemas/index.d.cts +192 -11
  4. package/@types/mergeable-store/with-schemas/index.d.ts +192 -11
  5. package/@types/persisters/index.d.cts +177 -16
  6. package/@types/persisters/index.d.ts +177 -16
  7. package/@types/persisters/persister-cr-sqlite-wasm/index.d.cts +1 -1
  8. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +1 -1
  9. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.cts +2 -2
  10. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +2 -2
  11. package/@types/persisters/persister-electric-sql/index.d.cts +1 -1
  12. package/@types/persisters/persister-electric-sql/index.d.ts +1 -1
  13. package/@types/persisters/persister-electric-sql/with-schemas/index.d.cts +2 -2
  14. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +2 -2
  15. package/@types/persisters/persister-expo-sqlite/index.d.cts +1 -1
  16. package/@types/persisters/persister-expo-sqlite/index.d.ts +1 -1
  17. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +2 -2
  18. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +2 -2
  19. package/@types/persisters/persister-libsql/index.d.cts +1 -1
  20. package/@types/persisters/persister-libsql/index.d.ts +1 -1
  21. package/@types/persisters/persister-libsql/with-schemas/index.d.cts +2 -2
  22. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +2 -2
  23. package/@types/persisters/persister-pglite/index.d.cts +1 -1
  24. package/@types/persisters/persister-pglite/index.d.ts +1 -1
  25. package/@types/persisters/persister-pglite/with-schemas/index.d.cts +2 -2
  26. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +2 -2
  27. package/@types/persisters/persister-postgres/index.d.cts +1 -1
  28. package/@types/persisters/persister-postgres/index.d.ts +1 -1
  29. package/@types/persisters/persister-postgres/with-schemas/index.d.cts +2 -2
  30. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +2 -2
  31. package/@types/persisters/persister-powersync/index.d.cts +1 -1
  32. package/@types/persisters/persister-powersync/index.d.ts +1 -1
  33. package/@types/persisters/persister-powersync/with-schemas/index.d.cts +2 -2
  34. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +2 -2
  35. package/@types/persisters/persister-sqlite-wasm/index.d.cts +1 -1
  36. package/@types/persisters/persister-sqlite-wasm/index.d.ts +1 -1
  37. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.cts +2 -2
  38. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +2 -2
  39. package/@types/persisters/persister-sqlite3/index.d.cts +1 -1
  40. package/@types/persisters/persister-sqlite3/index.d.ts +1 -1
  41. package/@types/persisters/persister-sqlite3/with-schemas/index.d.cts +2 -2
  42. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +2 -2
  43. package/@types/persisters/with-schemas/index.d.cts +227 -19
  44. package/@types/persisters/with-schemas/index.d.ts +227 -19
  45. package/@types/synchronizers/index.d.cts +2 -5
  46. package/@types/synchronizers/index.d.ts +2 -5
  47. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +7 -7
  48. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +7 -7
  49. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +7 -7
  50. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +7 -7
  51. package/@types/synchronizers/with-schemas/index.d.cts +2 -5
  52. package/@types/synchronizers/with-schemas/index.d.ts +2 -5
  53. package/cjs/es6/index.cjs +54 -566
  54. package/cjs/es6/mergeable-store/index.cjs +9 -6
  55. package/cjs/es6/mergeable-store/with-schemas/index.cjs +9 -6
  56. package/cjs/es6/min/index.cjs +1 -1
  57. package/cjs/es6/min/index.cjs.gz +0 -0
  58. package/cjs/es6/min/persisters/index.cjs +1 -1
  59. package/cjs/es6/min/persisters/index.cjs.gz +0 -0
  60. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  61. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  62. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  63. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  64. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  65. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  66. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  67. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  68. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  69. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  70. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  71. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  72. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  73. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  74. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  75. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  76. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  77. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  78. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  79. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  80. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  81. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  82. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  83. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  84. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  85. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  86. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  87. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  88. package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
  89. package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
  90. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  91. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  92. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  93. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  94. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  95. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  96. package/cjs/es6/persisters/index.cjs +1095 -10
  97. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +58 -49
  98. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +58 -49
  99. package/cjs/es6/persisters/persister-electric-sql/index.cjs +56 -47
  100. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +56 -47
  101. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +58 -49
  102. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +58 -49
  103. package/cjs/es6/persisters/persister-indexed-db/index.cjs +2 -2
  104. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +2 -2
  105. package/cjs/es6/persisters/persister-libsql/index.cjs +56 -47
  106. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +56 -47
  107. package/cjs/es6/persisters/persister-pglite/index.cjs +61 -54
  108. package/cjs/es6/persisters/persister-pglite/with-schemas/index.cjs +61 -54
  109. package/cjs/es6/persisters/persister-postgres/index.cjs +63 -56
  110. package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +63 -56
  111. package/cjs/es6/persisters/persister-powersync/index.cjs +58 -49
  112. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +58 -49
  113. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +62 -49
  114. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +62 -49
  115. package/cjs/es6/persisters/persister-sqlite3/index.cjs +58 -49
  116. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +58 -49
  117. package/cjs/es6/persisters/with-schemas/index.cjs +1095 -10
  118. package/cjs/es6/synchronizers/index.cjs +9 -6
  119. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +9 -6
  120. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +9 -6
  121. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +9 -6
  122. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +9 -6
  123. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +9 -6
  124. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +9 -6
  125. package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +17 -14
  126. package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +17 -14
  127. package/cjs/es6/synchronizers/with-schemas/index.cjs +9 -6
  128. package/cjs/es6/with-schemas/index.cjs +54 -566
  129. package/cjs/index.cjs +45 -447
  130. package/cjs/mergeable-store/index.cjs +1 -0
  131. package/cjs/mergeable-store/with-schemas/index.cjs +1 -0
  132. package/cjs/min/index.cjs +1 -1
  133. package/cjs/min/index.cjs.gz +0 -0
  134. package/cjs/min/persisters/index.cjs +1 -1
  135. package/cjs/min/persisters/index.cjs.gz +0 -0
  136. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  137. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  138. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  139. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  140. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  141. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  142. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  143. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  144. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  145. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  146. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  147. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  148. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  149. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  150. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  151. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  152. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  153. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  154. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  155. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  156. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  157. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  158. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  159. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  160. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  161. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  162. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  163. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  164. package/cjs/min/persisters/with-schemas/index.cjs +1 -1
  165. package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  167. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  168. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  169. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  170. package/cjs/min/with-schemas/index.cjs +1 -1
  171. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  172. package/cjs/persisters/index.cjs +833 -0
  173. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +57 -48
  174. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +57 -48
  175. package/cjs/persisters/persister-electric-sql/index.cjs +56 -47
  176. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +56 -47
  177. package/cjs/persisters/persister-expo-sqlite/index.cjs +57 -48
  178. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +57 -48
  179. package/cjs/persisters/persister-indexed-db/index.cjs +2 -2
  180. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +2 -2
  181. package/cjs/persisters/persister-libsql/index.cjs +56 -47
  182. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +56 -47
  183. package/cjs/persisters/persister-pglite/index.cjs +59 -52
  184. package/cjs/persisters/persister-pglite/with-schemas/index.cjs +59 -52
  185. package/cjs/persisters/persister-postgres/index.cjs +61 -54
  186. package/cjs/persisters/persister-postgres/with-schemas/index.cjs +61 -54
  187. package/cjs/persisters/persister-powersync/index.cjs +60 -49
  188. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +60 -49
  189. package/cjs/persisters/persister-sqlite-wasm/index.cjs +58 -49
  190. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +58 -49
  191. package/cjs/persisters/persister-sqlite3/index.cjs +58 -49
  192. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +58 -49
  193. package/cjs/persisters/with-schemas/index.cjs +833 -0
  194. package/cjs/synchronizers/index.cjs +1 -0
  195. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  196. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  197. package/cjs/synchronizers/synchronizer-local/index.cjs +1 -0
  198. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -0
  199. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +1 -0
  200. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -0
  201. package/cjs/synchronizers/synchronizer-ws-server/index.cjs +9 -8
  202. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +9 -8
  203. package/cjs/synchronizers/with-schemas/index.cjs +1 -0
  204. package/cjs/with-schemas/index.cjs +45 -447
  205. package/es6/index.js +54 -566
  206. package/es6/mergeable-store/index.js +9 -6
  207. package/es6/mergeable-store/with-schemas/index.js +9 -6
  208. package/es6/min/index.js +1 -1
  209. package/es6/min/index.js.gz +0 -0
  210. package/es6/min/persisters/index.js +1 -1
  211. package/es6/min/persisters/index.js.gz +0 -0
  212. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  213. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  214. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  215. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  216. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  217. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  218. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  219. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  220. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  221. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  222. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  223. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  224. package/es6/min/persisters/persister-libsql/index.js +1 -1
  225. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  226. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  227. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  228. package/es6/min/persisters/persister-powersync/index.js +1 -1
  229. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  230. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  231. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  232. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  233. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  234. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  235. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  236. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  237. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  238. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  239. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  240. package/es6/min/persisters/with-schemas/index.js +1 -1
  241. package/es6/min/persisters/with-schemas/index.js.gz +0 -0
  242. package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  243. package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  244. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  245. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  246. package/es6/min/with-schemas/index.js +1 -1
  247. package/es6/min/with-schemas/index.js.gz +0 -0
  248. package/es6/persisters/index.js +1099 -11
  249. package/es6/persisters/persister-cr-sqlite-wasm/index.js +58 -49
  250. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +58 -49
  251. package/es6/persisters/persister-electric-sql/index.js +56 -47
  252. package/es6/persisters/persister-electric-sql/with-schemas/index.js +56 -47
  253. package/es6/persisters/persister-expo-sqlite/index.js +58 -49
  254. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +58 -49
  255. package/es6/persisters/persister-indexed-db/index.js +2 -2
  256. package/es6/persisters/persister-indexed-db/with-schemas/index.js +2 -2
  257. package/es6/persisters/persister-libsql/index.js +56 -47
  258. package/es6/persisters/persister-libsql/with-schemas/index.js +56 -47
  259. package/es6/persisters/persister-pglite/index.js +61 -54
  260. package/es6/persisters/persister-pglite/with-schemas/index.js +61 -54
  261. package/es6/persisters/persister-postgres/index.js +63 -56
  262. package/es6/persisters/persister-postgres/with-schemas/index.js +63 -56
  263. package/es6/persisters/persister-powersync/index.js +58 -49
  264. package/es6/persisters/persister-powersync/with-schemas/index.js +58 -49
  265. package/es6/persisters/persister-sqlite-wasm/index.js +62 -49
  266. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +62 -49
  267. package/es6/persisters/persister-sqlite3/index.js +58 -49
  268. package/es6/persisters/persister-sqlite3/with-schemas/index.js +58 -49
  269. package/es6/persisters/with-schemas/index.js +1099 -11
  270. package/es6/synchronizers/index.js +9 -6
  271. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +9 -6
  272. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +9 -6
  273. package/es6/synchronizers/synchronizer-local/index.js +9 -6
  274. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +9 -6
  275. package/es6/synchronizers/synchronizer-ws-client/index.js +9 -6
  276. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +9 -6
  277. package/es6/synchronizers/synchronizer-ws-server/index.js +17 -14
  278. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +17 -14
  279. package/es6/synchronizers/with-schemas/index.js +9 -6
  280. package/es6/with-schemas/index.js +54 -566
  281. package/index.js +45 -447
  282. package/mergeable-store/index.js +1 -0
  283. package/mergeable-store/with-schemas/index.js +1 -0
  284. package/min/index.js +1 -1
  285. package/min/index.js.gz +0 -0
  286. package/min/persisters/index.js +1 -1
  287. package/min/persisters/index.js.gz +0 -0
  288. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  289. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  290. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  291. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  292. package/min/persisters/persister-electric-sql/index.js +1 -1
  293. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  294. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  295. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  296. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  297. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  298. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  299. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  300. package/min/persisters/persister-libsql/index.js +1 -1
  301. package/min/persisters/persister-libsql/index.js.gz +0 -0
  302. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  303. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  304. package/min/persisters/persister-powersync/index.js +1 -1
  305. package/min/persisters/persister-powersync/index.js.gz +0 -0
  306. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  307. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  308. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  309. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  310. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  311. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  312. package/min/persisters/persister-sqlite3/index.js +1 -1
  313. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  314. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  315. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  316. package/min/persisters/with-schemas/index.js +1 -1
  317. package/min/persisters/with-schemas/index.js.gz +0 -0
  318. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  319. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  320. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  321. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  322. package/min/with-schemas/index.js +1 -1
  323. package/min/with-schemas/index.js.gz +0 -0
  324. package/package.json +212 -212
  325. package/persisters/index.js +837 -1
  326. package/persisters/persister-cr-sqlite-wasm/index.js +57 -48
  327. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +57 -48
  328. package/persisters/persister-electric-sql/index.js +56 -47
  329. package/persisters/persister-electric-sql/with-schemas/index.js +56 -47
  330. package/persisters/persister-expo-sqlite/index.js +57 -48
  331. package/persisters/persister-expo-sqlite/with-schemas/index.js +57 -48
  332. package/persisters/persister-indexed-db/index.js +2 -2
  333. package/persisters/persister-indexed-db/with-schemas/index.js +2 -2
  334. package/persisters/persister-libsql/index.js +56 -47
  335. package/persisters/persister-libsql/with-schemas/index.js +56 -47
  336. package/persisters/persister-pglite/index.js +59 -52
  337. package/persisters/persister-pglite/with-schemas/index.js +59 -52
  338. package/persisters/persister-postgres/index.js +61 -54
  339. package/persisters/persister-postgres/with-schemas/index.js +61 -54
  340. package/persisters/persister-powersync/index.js +60 -49
  341. package/persisters/persister-powersync/with-schemas/index.js +60 -49
  342. package/persisters/persister-sqlite-wasm/index.js +58 -49
  343. package/persisters/persister-sqlite-wasm/with-schemas/index.js +58 -49
  344. package/persisters/persister-sqlite3/index.js +58 -49
  345. package/persisters/persister-sqlite3/with-schemas/index.js +58 -49
  346. package/persisters/with-schemas/index.js +837 -1
  347. package/readme.md +14 -14
  348. package/releases.md +27 -23
  349. package/synchronizers/index.js +1 -0
  350. package/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  351. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  352. package/synchronizers/synchronizer-local/index.js +1 -0
  353. package/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  354. package/synchronizers/synchronizer-ws-client/index.js +1 -0
  355. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  356. package/synchronizers/synchronizer-ws-server/index.js +9 -8
  357. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +9 -8
  358. package/synchronizers/with-schemas/index.js +1 -0
  359. package/umd/es6/index.js +54 -577
  360. package/umd/es6/mergeable-store/index.js +9 -6
  361. package/umd/es6/mergeable-store/with-schemas/index.js +9 -6
  362. package/umd/es6/min/index.js +1 -1
  363. package/umd/es6/min/index.js.gz +0 -0
  364. package/umd/es6/min/persisters/index.js +1 -1
  365. package/umd/es6/min/persisters/index.js.gz +0 -0
  366. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  367. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  368. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  369. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  370. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  371. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  372. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  373. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  374. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  375. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  376. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  377. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  378. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  379. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  380. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  381. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  382. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  383. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  384. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  385. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  386. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  387. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  388. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  389. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  390. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  391. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  392. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  393. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  394. package/umd/es6/min/persisters/with-schemas/index.js +1 -1
  395. package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
  396. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  397. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  398. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  399. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  400. package/umd/es6/min/with-schemas/index.js +1 -1
  401. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  402. package/umd/es6/persisters/index.js +1106 -10
  403. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +58 -49
  404. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +58 -49
  405. package/umd/es6/persisters/persister-electric-sql/index.js +56 -47
  406. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +56 -47
  407. package/umd/es6/persisters/persister-expo-sqlite/index.js +58 -49
  408. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +58 -49
  409. package/umd/es6/persisters/persister-indexed-db/index.js +2 -2
  410. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +2 -2
  411. package/umd/es6/persisters/persister-libsql/index.js +56 -47
  412. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +56 -47
  413. package/umd/es6/persisters/persister-pglite/index.js +61 -54
  414. package/umd/es6/persisters/persister-pglite/with-schemas/index.js +61 -54
  415. package/umd/es6/persisters/persister-postgres/index.js +66 -56
  416. package/umd/es6/persisters/persister-postgres/with-schemas/index.js +66 -56
  417. package/umd/es6/persisters/persister-powersync/index.js +58 -49
  418. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +58 -49
  419. package/umd/es6/persisters/persister-sqlite-wasm/index.js +58 -49
  420. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +58 -49
  421. package/umd/es6/persisters/persister-sqlite3/index.js +58 -49
  422. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +58 -49
  423. package/umd/es6/persisters/with-schemas/index.js +1106 -10
  424. package/umd/es6/synchronizers/index.js +9 -6
  425. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +9 -6
  426. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +9 -6
  427. package/umd/es6/synchronizers/synchronizer-local/index.js +9 -6
  428. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +9 -6
  429. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +9 -6
  430. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +9 -6
  431. package/umd/es6/synchronizers/synchronizer-ws-server/index.js +17 -14
  432. package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +17 -14
  433. package/umd/es6/synchronizers/with-schemas/index.js +9 -6
  434. package/umd/es6/with-schemas/index.js +54 -577
  435. package/umd/index.js +45 -454
  436. package/umd/mergeable-store/index.js +1 -0
  437. package/umd/mergeable-store/with-schemas/index.js +1 -0
  438. package/umd/min/index.js +1 -1
  439. package/umd/min/index.js.gz +0 -0
  440. package/umd/min/persisters/index.js +1 -1
  441. package/umd/min/persisters/index.js.gz +0 -0
  442. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  443. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  444. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  445. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  446. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  447. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  448. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  449. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  450. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  451. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  452. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  453. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  454. package/umd/min/persisters/persister-libsql/index.js +1 -1
  455. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  456. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  457. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  458. package/umd/min/persisters/persister-powersync/index.js +1 -1
  459. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  460. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  461. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  462. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  463. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  464. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  465. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  466. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  467. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  468. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  469. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  470. package/umd/min/persisters/with-schemas/index.js +1 -1
  471. package/umd/min/persisters/with-schemas/index.js.gz +0 -0
  472. package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  473. package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  474. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  475. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  476. package/umd/min/with-schemas/index.js +1 -1
  477. package/umd/min/with-schemas/index.js.gz +0 -0
  478. package/umd/persisters/index.js +835 -0
  479. package/umd/persisters/persister-cr-sqlite-wasm/index.js +57 -48
  480. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +57 -48
  481. package/umd/persisters/persister-electric-sql/index.js +56 -47
  482. package/umd/persisters/persister-electric-sql/with-schemas/index.js +56 -47
  483. package/umd/persisters/persister-expo-sqlite/index.js +57 -48
  484. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +57 -48
  485. package/umd/persisters/persister-indexed-db/index.js +2 -2
  486. package/umd/persisters/persister-indexed-db/with-schemas/index.js +2 -2
  487. package/umd/persisters/persister-libsql/index.js +56 -47
  488. package/umd/persisters/persister-libsql/with-schemas/index.js +56 -47
  489. package/umd/persisters/persister-pglite/index.js +59 -52
  490. package/umd/persisters/persister-pglite/with-schemas/index.js +59 -52
  491. package/umd/persisters/persister-postgres/index.js +61 -54
  492. package/umd/persisters/persister-postgres/with-schemas/index.js +61 -54
  493. package/umd/persisters/persister-powersync/index.js +58 -49
  494. package/umd/persisters/persister-powersync/with-schemas/index.js +58 -49
  495. package/umd/persisters/persister-sqlite-wasm/index.js +62 -49
  496. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +62 -49
  497. package/umd/persisters/persister-sqlite3/index.js +58 -49
  498. package/umd/persisters/persister-sqlite3/with-schemas/index.js +58 -49
  499. package/umd/persisters/with-schemas/index.js +835 -0
  500. package/umd/synchronizers/index.js +1 -0
  501. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  502. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  503. package/umd/synchronizers/synchronizer-local/index.js +1 -0
  504. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  505. package/umd/synchronizers/synchronizer-ws-client/index.js +1 -0
  506. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  507. package/umd/synchronizers/synchronizer-ws-server/index.js +9 -8
  508. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +9 -8
  509. package/umd/synchronizers/with-schemas/index.js +1 -0
  510. package/umd/with-schemas/index.js +45 -454
  511. package/with-schemas/index.js +45 -447
@@ -86,10 +86,38 @@ export type Stamp<Thing, Hashed extends boolean = false> = Hashed extends true
86
86
  ? [thing: Thing, time: Time, hash: Hash]
87
87
  : [thing: Thing, time?: Time];
88
88
 
89
- // ContentHashes
89
+ /**
90
+ * The ContentHashes type is used to quickly compare the content of two
91
+ * MergeableStore objects.
92
+ *
93
+ * It is simply an array of two Hash types, one for the MergeableStore's Tables
94
+ * and one for its Values.
95
+ *
96
+ * This type is mostly utilized internally within TinyBase itself and is
97
+ * generally assumed to be opaque to applications that use it.
98
+ * @category Syncing
99
+ * @since v5.0.0
100
+ */
90
101
  export type ContentHashes = [tablesHash: Hash, valuesHash: Hash];
91
102
 
92
- // TablesStamp
103
+ /**
104
+ * The TablesStamp type is used as metadata to decide how to merge two different
105
+ * sets of Tables together.
106
+ *
107
+ * This has schema-based typing. The following is a simplified representation:
108
+ *
109
+ * ```ts override
110
+ * export type TablesStamp<Hashed extends boolean = false> = Stamp<
111
+ * {[tableId: Id]: TableStamp<Hashed>},
112
+ * Hashed
113
+ * >;
114
+ * ```
115
+ *
116
+ * This type is mostly utilized internally within TinyBase itself and is
117
+ * generally assumed to be opaque to applications that use it.
118
+ * @category Stamps
119
+ * @since v5.0.0
120
+ */
93
121
  export type TablesStamp<
94
122
  Schema extends OptionalTablesSchema,
95
123
  Hashed extends boolean = false,
@@ -104,24 +132,92 @@ export type TablesStamp<
104
132
  Hashed
105
133
  >;
106
134
 
107
- // TableHashes
135
+ /**
136
+ * The TableHashes type is used to quickly compare the content of two sets of
137
+ * Table objects.
138
+ *
139
+ * This has schema-based typing. The following is a simplified representation:
140
+ *
141
+ * ```ts override
142
+ * {[tableId: Id]: Hash};
143
+ * ```
144
+ *
145
+ * It is simply an object of Hash types, one for each Table Id in the
146
+ * MergeableStore.
147
+ *
148
+ * This type is mostly utilized internally within TinyBase itself and is
149
+ * generally assumed to be opaque to applications that use it.
150
+ * @category Syncing
151
+ * @since v5.0.0
152
+ */
108
153
  export type TableHashes<Schema extends OptionalTablesSchema> = {
109
154
  [TableId in TableIdFromSchema<Schema>]?: Hash;
110
155
  };
111
156
 
112
- // TableStamp
157
+ /**
158
+ * The TableStamp type is used as metadata to decide how to merge two different
159
+ * Table objects together.
160
+ *
161
+ * This has schema-based typing. The following is a simplified representation:
162
+ *
163
+ * ```ts override
164
+ * export type TableStamp<Hashed extends boolean = false> = Stamp<
165
+ * {[rowId: Id]: RowStamp<Hashed>},
166
+ * Hashed
167
+ * >;
168
+ * ```
169
+ *
170
+ * This type is mostly utilized internally within TinyBase itself and is
171
+ * generally assumed to be opaque to applications that use it.
172
+ * @category Stamps
173
+ * @since v5.0.0
174
+ */
113
175
  export type TableStamp<
114
176
  Schema extends OptionalTablesSchema,
115
177
  TableId extends TableIdFromSchema<Schema>,
116
178
  Hashed extends boolean = false,
117
179
  > = Stamp<{[rowId: Id]: RowStamp<Schema, TableId, Hashed>}, Hashed>;
118
180
 
119
- // RowHashes
181
+ /**
182
+ * The RowHashes type is used to quickly compare the content of two sets of Row
183
+ * objects.
184
+ *
185
+ * This has schema-based typing. The following is a simplified representation:
186
+ *
187
+ * ```ts override
188
+ * {[tableId: Id]: {[rowId: Id]: Hash}};
189
+ * ```
190
+ *
191
+ * It is simply a nested object of Hash types, one for each Row Id, for each
192
+ * TableId, in the MergeableStore.
193
+ *
194
+ * This type is mostly utilized internally within TinyBase itself and is
195
+ * generally assumed to be opaque to applications that use it.
196
+ * @category Syncing
197
+ * @since v5.0.0
198
+ */
120
199
  export type RowHashes<Schema extends OptionalTablesSchema> = {
121
200
  [TableId in TableIdFromSchema<Schema>]?: {[rowId: Id]: Hash};
122
201
  };
123
202
 
124
- // RowStamp
203
+ /**
204
+ * The RowStamp type is used as metadata to decide how to merge two different
205
+ * Row objects together.
206
+ *
207
+ * This has schema-based typing. The following is a simplified representation:
208
+ *
209
+ * ```ts override
210
+ * export type RowStamp<Hashed extends boolean = false> = Stamp<
211
+ * {[cellId: Id]: CellStamp<Hashed>},
212
+ * Hashed
213
+ * >;
214
+ * ```
215
+ *
216
+ * This type is mostly utilized internally within TinyBase itself and is
217
+ * generally assumed to be opaque to applications that use it.
218
+ * @category Stamps
219
+ * @since v5.0.0
220
+ */
125
221
  export type RowStamp<
126
222
  Schema extends OptionalTablesSchema,
127
223
  TableId extends TableIdFromSchema<Schema>,
@@ -138,14 +234,48 @@ export type RowStamp<
138
234
  Hashed
139
235
  >;
140
236
 
141
- // CellHashes
237
+ /**
238
+ * The CellHashes type is used to quickly compare the content of two sets of
239
+ * Cell objects.
240
+ *
241
+ * This has schema-based typing. The following is a simplified representation:
242
+ *
243
+ * ```ts override
244
+ * {[tableId: Id]: {[rowId: Id]: {[cellId: Id]: Hash}}};
245
+ * ```
246
+ *
247
+ * It is simply a nested object of Hash types, one for each Cell Id, for each
248
+ * Row Id, for each TableId, in the MergeableStore.
249
+ *
250
+ * This type is mostly utilized internally within TinyBase itself and is
251
+ * generally assumed to be opaque to applications that use it.
252
+ * @category Syncing
253
+ * @since v5.0.0
254
+ */
142
255
  export type CellHashes<Schema extends OptionalTablesSchema> = {
143
256
  [TableId in TableIdFromSchema<Schema>]?: {
144
257
  [rowId: Id]: {[CellId in CellIdFromSchema<Schema, TableId>]?: Hash};
145
258
  };
146
259
  };
147
260
 
148
- // CellStamp
261
+ /**
262
+ * The CellStamp type is used as metadata to decide how to merge two different
263
+ * Cell objects together.
264
+ *
265
+ * This has schema-based typing. The following is a simplified representation:
266
+ *
267
+ * ```ts override
268
+ * export type CellStamp<Hashed extends boolean = false> = Stamp<
269
+ * CellOrUndefined,
270
+ * Hashed
271
+ * >;
272
+ * ```
273
+ *
274
+ * This type is mostly utilized internally within TinyBase itself and is
275
+ * generally assumed to be opaque to applications that use it.
276
+ * @category Stamps
277
+ * @since v5.0.0
278
+ */
149
279
  export type CellStamp<
150
280
  Schema extends OptionalTablesSchema,
151
281
  TableId extends TableIdFromSchema<Schema>,
@@ -153,7 +283,24 @@ export type CellStamp<
153
283
  Hashed extends boolean = false,
154
284
  > = Stamp<CellOrUndefined<Schema, TableId, CellId>, Hashed>;
155
285
 
156
- // ValuesStamp
286
+ /**
287
+ * The ValuesStamp type is used as metadata to decide how to merge two different
288
+ * sets of Values together.
289
+ *
290
+ * This has schema-based typing. The following is a simplified representation:
291
+ *
292
+ * ```ts override
293
+ * export type ValuesStamp<Hashed extends boolean = false> = Stamp<
294
+ * {[valueId: Id]: ValueStamp<Hashed>},
295
+ * Hashed
296
+ * >;
297
+ * ```
298
+ *
299
+ * This type is mostly utilized internally within TinyBase itself and is
300
+ * generally assumed to be opaque to applications that use it.
301
+ * @category Stamps
302
+ * @since v5.0.0
303
+ */
157
304
  export type ValuesStamp<
158
305
  Schema extends OptionalValuesSchema,
159
306
  Hashed extends boolean = false,
@@ -168,12 +315,46 @@ export type ValuesStamp<
168
315
  Hashed
169
316
  >;
170
317
 
171
- // ValueHashes
318
+ /**
319
+ * The ValueHashes type is used to quickly compare the content of two sets of
320
+ * Value objects.
321
+ *
322
+ * This has schema-based typing. The following is a simplified representation:
323
+ *
324
+ * ```ts override
325
+ * {[valueId: Id]: Hash};
326
+ * ```
327
+ *
328
+ * It is simply an object of Hash types, one for each Value Id in the
329
+ * MergeableStore.
330
+ *
331
+ * This type is mostly utilized internally within TinyBase itself and is
332
+ * generally assumed to be opaque to applications that use it.
333
+ * @category Syncing
334
+ * @since v5.0.0
335
+ */
172
336
  export type ValueHashes<Schema extends OptionalValuesSchema> = {
173
337
  [ValueId in ValueIdFromSchema<Schema>]?: Hash;
174
338
  };
175
339
 
176
- // ValueStamp
340
+ /**
341
+ * The ValueStamp type is used as metadata to decide how to merge two different
342
+ * Value objects together.
343
+ *
344
+ * This has schema-based typing. The following is a simplified representation:
345
+ *
346
+ * ```ts override
347
+ * export type ValueStamp<Hashed extends boolean = false> = Stamp<
348
+ * ValueOrUndefined,
349
+ * Hashed
350
+ * >;
351
+ * ```
352
+ *
353
+ * This type is mostly utilized internally within TinyBase itself and is
354
+ * generally assumed to be opaque to applications that use it.
355
+ * @category Stamps
356
+ * @since v5.0.0
357
+ */
177
358
  export type ValueStamp<
178
359
  Schema extends OptionalValuesSchema,
179
360
  ValueId extends ValueIdFromSchema<Schema>,
@@ -19,23 +19,28 @@
19
19
  * |Sqlite3Persister|SQLite in Node, via [sqlite3](https://github.com/TryGhost/node-sqlite3)|Yes|Yes*
20
20
  * |SqliteWasmPersister|SQLite in a browser, via [sqlite-wasm](https://github.com/tomayac/sqlite-wasm)|Yes|Yes*
21
21
  * |ExpoSqlitePersister|SQLite in React Native, via [expo-sqlite](https://github.com/expo/expo/tree/main/packages/expo-sqlite)|Yes|Yes*
22
+ * |PostgresPersister|PostgreSQL, via [postgres](https://github.com/porsager/postgres)|Yes|Yes*
23
+ * |PglitePersister|PostgreSQL, via [PGlite](https://github.com/electric-sql/pglite)|Yes|Yes*
22
24
  * |CrSqliteWasmPersister|SQLite CRDTs, via [cr-sqlite-wasm](https://github.com/vlcn-io/cr-sqlite)|Yes|No
23
25
  * |ElectricSqlPersister|Electric SQL, via [electric-sql](https://github.com/electric-sql/electric)|Yes|No
24
26
  * |LibSqlPersister|LibSQL for Turso, via [libsql-client](https://github.com/tursodatabase/libsql-client-ts)|Yes|No
25
27
  * |PowerSyncPersister|PowerSync, via [powersync-sdk](https://github.com/powersync-ja/powersync-js)|Yes|No
26
- * |PostgresPersister|PostgreSQL, via [postgres](https://github.com/porsager/postgres)|Yes|No
27
- * |PglitePersister|PostgreSQL, via [PGlite](https://github.com/electric-sql/pglite)|Yes|No
28
28
  * |YjsPersister|Yjs CRDTs, via [yjs](https://github.com/yjs/yjs)|Yes|No
29
29
  * |AutomergePersister|Automerge CRDTs, via [automerge-repo](https://github.com/automerge/automerge-repo)|Yes|No
30
30
  * |PartyKitPersister|[PartyKit](https://www.partykit.io/), via the persister-partykit-server module|Yes|No|
31
31
  *
32
- * (*) Note that SQLite-based Persisters can currently only persist
33
- * MergeableStore data when using the JSON-based DpcJson mode, and not in a
34
- * tabular fashion.
32
+ * (*) Note that SQLite- and PostgreSQL-based Persisters can currently only
33
+ * persist MergeableStore data when used with the JSON-based DpcJson mode, and
34
+ * not when using the DpcTabular mode.
35
35
  *
36
36
  * Since persistence requirements can be different for every app, the
37
37
  * createCustomPersister function in this module can also be used to easily
38
38
  * create a fully customized way to save and load Store data.
39
+ *
40
+ * Similarly, the createCustomSqlitePersister function and
41
+ * createCustomPostgreSqlPersister function can be used to build Persister objects
42
+ * against SQLite and PostgreSQL SDKs (or forks) that are not already included
43
+ * with TinyBase.
39
44
  * @see Persistence guides
40
45
  * @see Countries demo
41
46
  * @see Todo App demos
@@ -1233,7 +1238,8 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1233
1238
  * getDataFromRemoteSystem,
1234
1239
  * sendDataToRemoteSystem,
1235
1240
  * } from 'custom-remote-handlers';
1236
- * import {createCustomPersister, createStore} from 'tinybase';
1241
+ * import {createCustomPersister} from 'tinybase/persisters';
1242
+ * import {createStore} from 'tinybase';
1237
1243
  *
1238
1244
  * const store = createStore();
1239
1245
  * const persister = createCustomPersister(
@@ -1367,10 +1373,53 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1367
1373
  //
1368
1374
  }
1369
1375
 
1376
+ /**
1377
+ * The DatabaseExecuteCommand type describes a function that is used to execute
1378
+ * commands against a database.
1379
+ *
1380
+ * This is only used when developing custom database-oriented Persisters, and
1381
+ * most TinyBase users will not need to be particularly aware of it.
1382
+ *
1383
+ * It is modelled around the common pattern of database SDKs being able to
1384
+ * execute commands with parameters, and have those (probably asynchronous)
1385
+ * command executions return an array of objects, where each object represents a
1386
+ * row.
1387
+ * @param sql The SQL string to execute, which may include positional parameter
1388
+ * placeholders.
1389
+ * @param params An array of parameters to pass to the SQL command.
1390
+ * @returns An promise of an array of objects, where each object represents a
1391
+ * database result row (if the command was a query).
1392
+ * @category Creation
1393
+ * @since v5.2.0
1394
+ */
1395
+ export type DatabaseExecuteCommand = (
1396
+ sql: string,
1397
+ params?: any[],
1398
+ ) => Promise<{[field: string]: any}[]>;
1399
+
1400
+ /**
1401
+ * The DatabaseChangeListener type describes a function that is used to listen
1402
+ * for changes to the data in a database.
1403
+ *
1404
+ * This is only used when developing custom database-oriented Persisters, and
1405
+ * most TinyBase users will not need to be particularly aware of it.
1406
+ *
1407
+ * This function should be called with the name of a relevant table that has
1408
+ * changed, possible through the use of events, triggers, or notifications,
1409
+ * dependent on the specific database implementation.
1410
+ * @param tableName The name of the table that has changed.
1411
+ * @category Creation
1412
+ * @since v5.2.0
1413
+ */
1414
+ export type DatabaseChangeListener = (tableName: string) => void;
1415
+
1370
1416
  /**
1371
1417
  * The createCustomPersister function creates a Persister object that you can
1372
1418
  * configure to persist the Store in any way you wish.
1373
1419
  *
1420
+ * This is only used when developing custom Persisters, and most TinyBase users
1421
+ * will not need to be particularly aware of it.
1422
+ *
1374
1423
  * As well as providing a reference to the Store to persist, you must provide
1375
1424
  * functions that handle how to fetch, write, and listen to, the persistence
1376
1425
  * layer.
@@ -1419,7 +1468,8 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1419
1468
  * Store.
1420
1469
  *
1421
1470
  * ```js
1422
- * import {createCustomPersister, createStore} from 'tinybase';
1471
+ * import {createCustomPersister} from 'tinybase/persisters';
1472
+ * import {createStore} from 'tinybase';
1423
1473
  *
1424
1474
  * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
1425
1475
  * let persistedJson;
@@ -1458,12 +1508,8 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1458
1508
  * MergeableStore.
1459
1509
  *
1460
1510
  * ```js
1461
- * import {
1462
- * Persists,
1463
- * createCustomPersister,
1464
- * createMergeableStore,
1465
- * createStore,
1466
- * } from 'tinybase';
1511
+ * import {Persists, createCustomPersister} from 'tinybase/persisters';
1512
+ * import {createMergeableStore, createStore} from 'tinybase';
1467
1513
  *
1468
1514
  * let persistedJson;
1469
1515
  * const createJsonPersister = (storeOrMergeableStore) =>
@@ -1523,7 +1569,7 @@ export interface Persister<Persist extends Persists = Persists.StoreOnly> {
1523
1569
  * @since v1.0.0
1524
1570
  */
1525
1571
  export function createCustomPersister<
1526
- ListeningHandle,
1572
+ ListenerHandle,
1527
1573
  Persist extends Persists = Persists.StoreOnly,
1528
1574
  >(
1529
1575
  store: PersistedStore<Persist>,
@@ -1534,8 +1580,123 @@ export function createCustomPersister<
1534
1580
  ) => Promise<void>,
1535
1581
  addPersisterListener: (
1536
1582
  listener: PersisterListener<Persist>,
1537
- ) => ListeningHandle | Promise<ListeningHandle>,
1538
- delPersisterListener: (listeningHandle: ListeningHandle) => void,
1583
+ ) => ListenerHandle | Promise<ListenerHandle>,
1584
+ delPersisterListener: (listenerHandle: ListenerHandle) => void,
1539
1585
  onIgnoredError?: (error: any) => void,
1540
1586
  persist?: Persist,
1541
1587
  ): Persister<Persist>;
1588
+
1589
+ /**
1590
+ * The createCustomSqlitePersister function creates a Persister object that you
1591
+ * can configure to persist the Store to a SQLite database.
1592
+ *
1593
+ * This is only used when developing custom database-oriented Persisters, and
1594
+ * most TinyBase users will not need to be particularly aware of it.
1595
+ *
1596
+ * All of the TinyBase SQLite-oriented Persister functions use this function
1597
+ * under the covers, and so you may wish to look at those implementations for
1598
+ * ideas on how to build your own Persister type, and as functional examples.
1599
+ * Examine the implementation of the createSqlite3Persister function as a good
1600
+ * starting point, for example.
1601
+ * @param store The Store to persist.
1602
+ * @param configOrStoreTableName A DatabasePersisterConfig object, or a string
1603
+ * that will be used as the name of the Store's table in the database.
1604
+ * @param executeCommand A function that will execute a command against the
1605
+ * database.
1606
+ * @param addChangeListener A function that will register a listener for changes
1607
+ * to the database.
1608
+ * @param delChangeListener A function that will unregister the listener for
1609
+ * changes to the database.
1610
+ * @param onSqlCommand A function that will be called for each SQL command
1611
+ * executed against the database.
1612
+ * @param onIgnoredError A function that will be called for errors that are
1613
+ * ignored by the Persister.
1614
+ * @param destroy A function that will be called to perform any extra clean up
1615
+ * on the Persister.
1616
+ * @param persist An integer from the Persists enum to indicate which types of
1617
+ * Store are supported by this Persister: `1` indicates only a regular Store is
1618
+ * supported, `2` indicates only a MergeableStore is supported, and `3`
1619
+ * indicates that both Store and MergeableStore are supported.
1620
+ * @param thing A reference to the database or connection that can be returned
1621
+ * with a method, by default called `getDb`.
1622
+ * @param getThing An optional string that will be used to get the reference to
1623
+ * the database or connection from the Persister, defaulting to `getDb`.
1624
+ * @returns A reference to the new SQLite-oriented Persister object.
1625
+ * @category Creation
1626
+ * @since v5.2.0
1627
+ */
1628
+ export function createCustomSqlitePersister<
1629
+ ListenerHandle,
1630
+ Persist extends Persists = Persists.StoreOnly,
1631
+ >(
1632
+ store: PersistedStore<Persist>,
1633
+ configOrStoreTableName: DatabasePersisterConfig | string | undefined,
1634
+ executeCommand: DatabaseExecuteCommand,
1635
+ addChangeListener: (listener: DatabaseChangeListener) => ListenerHandle,
1636
+ delChangeListener: (listenerHandle: ListenerHandle) => void,
1637
+ onSqlCommand: ((sql: string, params?: any[]) => void) | undefined,
1638
+ onIgnoredError: ((error: any) => void) | undefined,
1639
+ destroy: () => void,
1640
+ persist: Persist,
1641
+ thing: any,
1642
+ getThing?: string,
1643
+ ): Persister<Persist>;
1644
+
1645
+ /**
1646
+ * The createCustomSqlitePersister function creates a Persister object that you
1647
+ * can configure to persist the Store to a PostgreSQL database.
1648
+ *
1649
+ * This is only used when developing custom database-oriented Persisters, and
1650
+ * most TinyBase users will not need to be particularly aware of it.
1651
+ *
1652
+ * All of the TinyBase PostgreSQL-oriented Persister functions use this function
1653
+ * under the covers, and so you may wish to look at those implementations for
1654
+ * ideas on how to build your own Persister type, and as functional
1655
+ * examples. Examine the implementation of the createPostgresPersister function
1656
+ * as a good starting point, for example.
1657
+ * @param store The Store to persist.
1658
+ * @param configOrStoreTableName A DatabasePersisterConfig object, or a string
1659
+ * that will be used as the name of the Store's table in the database.
1660
+ * @param executeCommand A function that will execute a command against the
1661
+ * database.
1662
+ * @param addChangeListener A function that will register a listener for changes
1663
+ * to the database.
1664
+ * @param delChangeListener A function that will unregister the listener for
1665
+ * changes to the database.
1666
+ * @param onSqlCommand A function that will be called for each SQL command
1667
+ * executed against the database.
1668
+ * @param onIgnoredError A function that will be called for errors that are
1669
+ * ignored by the Persister.
1670
+ * @param destroy A function that will be called to perform any extra clean up
1671
+ * on the Persister.
1672
+ * @param persist An integer from the Persists enum to indicate which types of
1673
+ * Store are supported by this Persister: `1` indicates only a regular Store is
1674
+ * supported, `2` indicates only a MergeableStore is supported, and `3`
1675
+ * indicates that both Store and MergeableStore are supported.
1676
+ * @param thing A reference to the database or connection that can be returned
1677
+ * with a method, by default called `getDb`.
1678
+ * @param getThing An optional string that will be used to get the reference to
1679
+ * the database or connection from the Persister, defaulting to `getDb`.
1680
+ * @returns A reference to the new Persister object.
1681
+ * @category Creation
1682
+ * @since v5.2.0
1683
+ */
1684
+ export function createCustomPostgreSqlPersister<
1685
+ ListenerHandle,
1686
+ Persist extends Persists = Persists.StoreOnly,
1687
+ >(
1688
+ store: PersistedStore<Persist>,
1689
+ configOrStoreTableName: DatabasePersisterConfig | string | undefined,
1690
+ executeCommand: DatabaseExecuteCommand,
1691
+ addChangeListener: (
1692
+ channel: string,
1693
+ listener: DatabaseChangeListener,
1694
+ ) => Promise<ListenerHandle>,
1695
+ delChangeListener: (listenerHandle: ListenerHandle) => void,
1696
+ onSqlCommand: ((sql: string, params?: any[]) => void) | undefined,
1697
+ onIgnoredError: ((error: any) => void) | undefined,
1698
+ destroy: () => void,
1699
+ persist: Persist,
1700
+ thing: any,
1701
+ getThing?: string,
1702
+ ): Persister<Persist>;