tinybase 5.2.0-beta.2 → 5.2.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. package/@types/common/index.d.cts +34 -2
  2. package/@types/common/index.d.ts +34 -2
  3. package/@types/common/with-schemas/index.d.cts +34 -2
  4. package/@types/common/with-schemas/index.d.ts +34 -2
  5. package/@types/synchronizers/synchronizer-local/index.d.cts +1 -0
  6. package/@types/synchronizers/synchronizer-local/index.d.ts +1 -0
  7. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +1 -0
  8. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +1 -0
  9. package/checkpoints/index.js +9 -7
  10. package/checkpoints/with-schemas/index.js +9 -7
  11. package/cjs/checkpoints/index.cjs +9 -7
  12. package/cjs/checkpoints/with-schemas/index.cjs +9 -7
  13. package/cjs/es6/checkpoints/index.cjs +15 -13
  14. package/cjs/es6/checkpoints/with-schemas/index.cjs +15 -13
  15. package/cjs/es6/index.cjs +28 -20
  16. package/cjs/es6/indexes/index.cjs +15 -13
  17. package/cjs/es6/indexes/with-schemas/index.cjs +15 -13
  18. package/cjs/es6/mergeable-store/index.cjs +23 -17
  19. package/cjs/es6/mergeable-store/with-schemas/index.cjs +23 -17
  20. package/cjs/es6/metrics/index.cjs +15 -13
  21. package/cjs/es6/metrics/with-schemas/index.cjs +15 -13
  22. package/cjs/es6/min/index.cjs +1 -1
  23. package/cjs/es6/min/index.cjs.gz +0 -0
  24. package/cjs/es6/min/mergeable-store/index.cjs +1 -1
  25. package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
  26. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
  27. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  28. package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
  29. package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
  30. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  31. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  32. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  33. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  34. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  35. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  36. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  37. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  38. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  39. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  40. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  41. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  42. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  43. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  44. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  45. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  46. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  47. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  48. package/cjs/es6/min/persisters/persister-postgres/index.cjs +1 -1
  49. package/cjs/es6/min/persisters/persister-postgres/index.cjs.gz +0 -0
  50. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  51. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  52. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  53. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  54. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  55. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  56. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  57. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  58. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  59. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  60. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  61. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  62. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  63. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  64. package/cjs/es6/min/store/index.cjs +1 -1
  65. package/cjs/es6/min/store/index.cjs.gz +0 -0
  66. package/cjs/es6/min/store/with-schemas/index.cjs +1 -1
  67. package/cjs/es6/min/store/with-schemas/index.cjs.gz +0 -0
  68. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  69. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  70. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  71. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  72. package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
  73. package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
  74. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  75. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  76. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  77. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  78. package/cjs/es6/persisters/index.cjs +5 -3
  79. package/cjs/es6/persisters/persister-automerge/index.cjs +7 -4
  80. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +7 -4
  81. package/cjs/es6/persisters/persister-browser/index.cjs +5 -3
  82. package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +5 -3
  83. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +82 -45
  84. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +82 -45
  85. package/cjs/es6/persisters/persister-electric-sql/index.cjs +82 -45
  86. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +82 -45
  87. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +82 -45
  88. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +82 -45
  89. package/cjs/es6/persisters/persister-file/index.cjs +5 -3
  90. package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +5 -3
  91. package/cjs/es6/persisters/persister-indexed-db/index.cjs +5 -3
  92. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +5 -3
  93. package/cjs/es6/persisters/persister-libsql/index.cjs +82 -45
  94. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +82 -45
  95. package/cjs/es6/persisters/persister-partykit-client/index.cjs +5 -3
  96. package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +5 -3
  97. package/cjs/es6/persisters/persister-partykit-server/index.cjs +36 -22
  98. package/cjs/es6/persisters/persister-partykit-server/with-schemas/index.cjs +36 -22
  99. package/cjs/es6/persisters/persister-postgres/index.cjs +108 -37
  100. package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +108 -37
  101. package/cjs/es6/persisters/persister-powersync/index.cjs +82 -45
  102. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +82 -45
  103. package/cjs/es6/persisters/persister-remote/index.cjs +5 -3
  104. package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +5 -3
  105. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +82 -45
  106. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +82 -45
  107. package/cjs/es6/persisters/persister-sqlite3/index.cjs +82 -45
  108. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +82 -45
  109. package/cjs/es6/persisters/persister-yjs/index.cjs +5 -3
  110. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +5 -3
  111. package/cjs/es6/persisters/with-schemas/index.cjs +5 -3
  112. package/cjs/es6/relationships/index.cjs +15 -13
  113. package/cjs/es6/relationships/with-schemas/index.cjs +15 -13
  114. package/cjs/es6/store/index.cjs +23 -17
  115. package/cjs/es6/store/with-schemas/index.cjs +23 -17
  116. package/cjs/es6/synchronizers/index.cjs +5 -3
  117. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +5 -3
  118. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +5 -3
  119. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +5 -3
  120. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +5 -3
  121. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +8 -6
  122. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +8 -6
  123. package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +79 -75
  124. package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +79 -75
  125. package/cjs/es6/synchronizers/with-schemas/index.cjs +5 -3
  126. package/cjs/es6/ui-react-inspector/index.cjs +30 -21
  127. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +30 -21
  128. package/cjs/es6/with-schemas/index.cjs +28 -20
  129. package/cjs/index.cjs +22 -12
  130. package/cjs/indexes/index.cjs +9 -7
  131. package/cjs/indexes/with-schemas/index.cjs +9 -7
  132. package/cjs/mergeable-store/index.cjs +17 -9
  133. package/cjs/mergeable-store/with-schemas/index.cjs +17 -9
  134. package/cjs/metrics/index.cjs +9 -7
  135. package/cjs/metrics/with-schemas/index.cjs +9 -7
  136. package/cjs/min/index.cjs +1 -1
  137. package/cjs/min/index.cjs.gz +0 -0
  138. package/cjs/min/mergeable-store/index.cjs +1 -1
  139. package/cjs/min/mergeable-store/index.cjs.gz +0 -0
  140. package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
  141. package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  142. package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
  143. package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
  144. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  145. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  146. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  147. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  148. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  149. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  150. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  151. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  152. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  153. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  154. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  155. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  156. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  157. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  158. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  159. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  160. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  161. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  162. package/cjs/min/persisters/persister-postgres/index.cjs +1 -1
  163. package/cjs/min/persisters/persister-postgres/index.cjs.gz +0 -0
  164. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  165. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  167. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  168. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  169. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  170. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  171. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  172. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  173. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  174. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  175. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  176. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  177. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  178. package/cjs/min/store/index.cjs +1 -1
  179. package/cjs/min/store/index.cjs.gz +0 -0
  180. package/cjs/min/store/with-schemas/index.cjs +1 -1
  181. package/cjs/min/store/with-schemas/index.cjs.gz +0 -0
  182. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -1
  183. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  184. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -1
  185. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  186. package/cjs/min/tools/index.cjs +1 -1
  187. package/cjs/min/tools/index.cjs.gz +0 -0
  188. package/cjs/min/tools/with-schemas/index.cjs +1 -1
  189. package/cjs/min/tools/with-schemas/index.cjs.gz +0 -0
  190. package/cjs/min/ui-react-inspector/index.cjs +1 -1
  191. package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
  192. package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  193. package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  194. package/cjs/min/with-schemas/index.cjs +1 -1
  195. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  196. package/cjs/persisters/index.cjs +5 -3
  197. package/cjs/persisters/persister-automerge/index.cjs +7 -4
  198. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +7 -4
  199. package/cjs/persisters/persister-browser/index.cjs +5 -3
  200. package/cjs/persisters/persister-browser/with-schemas/index.cjs +5 -3
  201. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +52 -37
  202. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +52 -37
  203. package/cjs/persisters/persister-electric-sql/index.cjs +52 -37
  204. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +52 -37
  205. package/cjs/persisters/persister-expo-sqlite/index.cjs +52 -37
  206. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +52 -37
  207. package/cjs/persisters/persister-file/index.cjs +5 -3
  208. package/cjs/persisters/persister-file/with-schemas/index.cjs +5 -3
  209. package/cjs/persisters/persister-indexed-db/index.cjs +5 -3
  210. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +5 -3
  211. package/cjs/persisters/persister-libsql/index.cjs +52 -37
  212. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +52 -37
  213. package/cjs/persisters/persister-partykit-client/index.cjs +5 -3
  214. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +5 -3
  215. package/cjs/persisters/persister-partykit-server/index.cjs +36 -25
  216. package/cjs/persisters/persister-partykit-server/with-schemas/index.cjs +36 -25
  217. package/cjs/persisters/persister-postgres/index.cjs +77 -31
  218. package/cjs/persisters/persister-postgres/with-schemas/index.cjs +77 -31
  219. package/cjs/persisters/persister-powersync/index.cjs +52 -37
  220. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +52 -37
  221. package/cjs/persisters/persister-remote/index.cjs +5 -3
  222. package/cjs/persisters/persister-remote/with-schemas/index.cjs +5 -3
  223. package/cjs/persisters/persister-sqlite-wasm/index.cjs +52 -37
  224. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +52 -37
  225. package/cjs/persisters/persister-sqlite3/index.cjs +52 -37
  226. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +52 -37
  227. package/cjs/persisters/persister-yjs/index.cjs +5 -3
  228. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +5 -3
  229. package/cjs/persisters/with-schemas/index.cjs +5 -3
  230. package/cjs/relationships/index.cjs +9 -7
  231. package/cjs/relationships/with-schemas/index.cjs +9 -7
  232. package/cjs/store/index.cjs +17 -9
  233. package/cjs/store/with-schemas/index.cjs +17 -9
  234. package/cjs/synchronizers/index.cjs +5 -3
  235. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +5 -3
  236. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +5 -3
  237. package/cjs/synchronizers/synchronizer-local/index.cjs +5 -3
  238. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +5 -3
  239. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +8 -6
  240. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +8 -6
  241. package/cjs/synchronizers/synchronizer-ws-server/index.cjs +30 -23
  242. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +30 -23
  243. package/cjs/synchronizers/with-schemas/index.cjs +5 -3
  244. package/cjs/tools/index.cjs +1 -1
  245. package/cjs/tools/with-schemas/index.cjs +1 -1
  246. package/cjs/ui-react-inspector/index.cjs +24 -13
  247. package/cjs/ui-react-inspector/with-schemas/index.cjs +24 -13
  248. package/cjs/with-schemas/index.cjs +22 -12
  249. package/es6/checkpoints/index.js +15 -13
  250. package/es6/checkpoints/with-schemas/index.js +15 -13
  251. package/es6/index.js +28 -20
  252. package/es6/indexes/index.js +15 -13
  253. package/es6/indexes/with-schemas/index.js +15 -13
  254. package/es6/mergeable-store/index.js +23 -17
  255. package/es6/mergeable-store/with-schemas/index.js +23 -17
  256. package/es6/metrics/index.js +15 -13
  257. package/es6/metrics/with-schemas/index.js +15 -13
  258. package/es6/min/index.js +1 -1
  259. package/es6/min/index.js.gz +0 -0
  260. package/es6/min/mergeable-store/index.js +1 -1
  261. package/es6/min/mergeable-store/index.js.gz +0 -0
  262. package/es6/min/mergeable-store/with-schemas/index.js +1 -1
  263. package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  264. package/es6/min/persisters/persister-automerge/index.js +1 -1
  265. package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  266. package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  267. package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  268. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  269. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  270. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  271. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  272. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  273. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  274. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  275. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  276. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  277. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  278. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  279. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  280. package/es6/min/persisters/persister-libsql/index.js +1 -1
  281. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  282. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  283. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  284. package/es6/min/persisters/persister-postgres/index.js +1 -1
  285. package/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  286. package/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  287. package/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  288. package/es6/min/persisters/persister-powersync/index.js +1 -1
  289. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  290. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  291. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  292. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  293. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  294. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  295. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  296. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  297. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  298. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  299. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  300. package/es6/min/store/index.js +1 -1
  301. package/es6/min/store/index.js.gz +0 -0
  302. package/es6/min/store/with-schemas/index.js +1 -1
  303. package/es6/min/store/with-schemas/index.js.gz +0 -0
  304. package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  305. package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  306. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  307. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  308. package/es6/min/ui-react-inspector/index.js +1 -1
  309. package/es6/min/ui-react-inspector/index.js.gz +0 -0
  310. package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  311. package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  312. package/es6/min/with-schemas/index.js +1 -1
  313. package/es6/min/with-schemas/index.js.gz +0 -0
  314. package/es6/persisters/index.js +5 -3
  315. package/es6/persisters/persister-automerge/index.js +7 -4
  316. package/es6/persisters/persister-automerge/with-schemas/index.js +7 -4
  317. package/es6/persisters/persister-browser/index.js +5 -3
  318. package/es6/persisters/persister-browser/with-schemas/index.js +5 -3
  319. package/es6/persisters/persister-cr-sqlite-wasm/index.js +82 -45
  320. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +82 -45
  321. package/es6/persisters/persister-electric-sql/index.js +82 -45
  322. package/es6/persisters/persister-electric-sql/with-schemas/index.js +82 -45
  323. package/es6/persisters/persister-expo-sqlite/index.js +82 -45
  324. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +82 -45
  325. package/es6/persisters/persister-file/index.js +5 -3
  326. package/es6/persisters/persister-file/with-schemas/index.js +5 -3
  327. package/es6/persisters/persister-indexed-db/index.js +5 -3
  328. package/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -3
  329. package/es6/persisters/persister-libsql/index.js +82 -45
  330. package/es6/persisters/persister-libsql/with-schemas/index.js +82 -45
  331. package/es6/persisters/persister-partykit-client/index.js +5 -3
  332. package/es6/persisters/persister-partykit-client/with-schemas/index.js +5 -3
  333. package/es6/persisters/persister-partykit-server/index.js +36 -22
  334. package/es6/persisters/persister-partykit-server/with-schemas/index.js +36 -22
  335. package/es6/persisters/persister-postgres/index.js +108 -37
  336. package/es6/persisters/persister-postgres/with-schemas/index.js +108 -37
  337. package/es6/persisters/persister-powersync/index.js +82 -45
  338. package/es6/persisters/persister-powersync/with-schemas/index.js +82 -45
  339. package/es6/persisters/persister-remote/index.js +5 -3
  340. package/es6/persisters/persister-remote/with-schemas/index.js +5 -3
  341. package/es6/persisters/persister-sqlite-wasm/index.js +82 -45
  342. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +82 -45
  343. package/es6/persisters/persister-sqlite3/index.js +82 -45
  344. package/es6/persisters/persister-sqlite3/with-schemas/index.js +82 -45
  345. package/es6/persisters/persister-yjs/index.js +5 -3
  346. package/es6/persisters/persister-yjs/with-schemas/index.js +5 -3
  347. package/es6/persisters/with-schemas/index.js +5 -3
  348. package/es6/relationships/index.js +15 -13
  349. package/es6/relationships/with-schemas/index.js +15 -13
  350. package/es6/store/index.js +23 -17
  351. package/es6/store/with-schemas/index.js +23 -17
  352. package/es6/synchronizers/index.js +5 -3
  353. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
  354. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
  355. package/es6/synchronizers/synchronizer-local/index.js +5 -3
  356. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
  357. package/es6/synchronizers/synchronizer-ws-client/index.js +8 -6
  358. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +8 -6
  359. package/es6/synchronizers/synchronizer-ws-server/index.js +79 -75
  360. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -75
  361. package/es6/synchronizers/with-schemas/index.js +5 -3
  362. package/es6/ui-react-inspector/index.js +30 -21
  363. package/es6/ui-react-inspector/with-schemas/index.js +30 -21
  364. package/es6/with-schemas/index.js +28 -20
  365. package/index.js +22 -12
  366. package/indexes/index.js +9 -7
  367. package/indexes/with-schemas/index.js +9 -7
  368. package/mergeable-store/index.js +17 -9
  369. package/mergeable-store/with-schemas/index.js +17 -9
  370. package/metrics/index.js +9 -7
  371. package/metrics/with-schemas/index.js +9 -7
  372. package/min/index.js +1 -1
  373. package/min/index.js.gz +0 -0
  374. package/min/mergeable-store/index.js +1 -1
  375. package/min/mergeable-store/index.js.gz +0 -0
  376. package/min/mergeable-store/with-schemas/index.js +1 -1
  377. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  378. package/min/persisters/persister-automerge/index.js +1 -1
  379. package/min/persisters/persister-automerge/index.js.gz +0 -0
  380. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  381. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  382. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  383. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  384. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  385. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  386. package/min/persisters/persister-electric-sql/index.js +1 -1
  387. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  388. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  389. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  390. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  391. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  392. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  393. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  394. package/min/persisters/persister-libsql/index.js +1 -1
  395. package/min/persisters/persister-libsql/index.js.gz +0 -0
  396. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  397. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  398. package/min/persisters/persister-postgres/index.js +1 -1
  399. package/min/persisters/persister-postgres/index.js.gz +0 -0
  400. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  401. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  402. package/min/persisters/persister-powersync/index.js +1 -1
  403. package/min/persisters/persister-powersync/index.js.gz +0 -0
  404. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  405. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  406. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  407. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  408. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  409. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  410. package/min/persisters/persister-sqlite3/index.js +1 -1
  411. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  412. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  413. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  414. package/min/store/index.js +1 -1
  415. package/min/store/index.js.gz +0 -0
  416. package/min/store/with-schemas/index.js +1 -1
  417. package/min/store/with-schemas/index.js.gz +0 -0
  418. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  419. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  420. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  421. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  422. package/min/tools/index.js +1 -1
  423. package/min/tools/index.js.gz +0 -0
  424. package/min/tools/with-schemas/index.js +1 -1
  425. package/min/tools/with-schemas/index.js.gz +0 -0
  426. package/min/ui-react-inspector/index.js +1 -1
  427. package/min/ui-react-inspector/index.js.gz +0 -0
  428. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  429. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  430. package/min/with-schemas/index.js +1 -1
  431. package/min/with-schemas/index.js.gz +0 -0
  432. package/package.json +3 -3
  433. package/persisters/index.js +5 -3
  434. package/persisters/persister-automerge/index.js +7 -4
  435. package/persisters/persister-automerge/with-schemas/index.js +7 -4
  436. package/persisters/persister-browser/index.js +5 -3
  437. package/persisters/persister-browser/with-schemas/index.js +5 -3
  438. package/persisters/persister-cr-sqlite-wasm/index.js +52 -37
  439. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +52 -37
  440. package/persisters/persister-electric-sql/index.js +52 -37
  441. package/persisters/persister-electric-sql/with-schemas/index.js +52 -37
  442. package/persisters/persister-expo-sqlite/index.js +52 -37
  443. package/persisters/persister-expo-sqlite/with-schemas/index.js +52 -37
  444. package/persisters/persister-file/index.js +5 -3
  445. package/persisters/persister-file/with-schemas/index.js +5 -3
  446. package/persisters/persister-indexed-db/index.js +5 -3
  447. package/persisters/persister-indexed-db/with-schemas/index.js +5 -3
  448. package/persisters/persister-libsql/index.js +52 -37
  449. package/persisters/persister-libsql/with-schemas/index.js +52 -37
  450. package/persisters/persister-partykit-client/index.js +5 -3
  451. package/persisters/persister-partykit-client/with-schemas/index.js +5 -3
  452. package/persisters/persister-partykit-server/index.js +36 -25
  453. package/persisters/persister-partykit-server/with-schemas/index.js +36 -25
  454. package/persisters/persister-postgres/index.js +77 -31
  455. package/persisters/persister-postgres/with-schemas/index.js +77 -31
  456. package/persisters/persister-powersync/index.js +52 -37
  457. package/persisters/persister-powersync/with-schemas/index.js +52 -37
  458. package/persisters/persister-remote/index.js +5 -3
  459. package/persisters/persister-remote/with-schemas/index.js +5 -3
  460. package/persisters/persister-sqlite-wasm/index.js +52 -37
  461. package/persisters/persister-sqlite-wasm/with-schemas/index.js +52 -37
  462. package/persisters/persister-sqlite3/index.js +52 -37
  463. package/persisters/persister-sqlite3/with-schemas/index.js +52 -37
  464. package/persisters/persister-yjs/index.js +5 -3
  465. package/persisters/persister-yjs/with-schemas/index.js +5 -3
  466. package/persisters/with-schemas/index.js +5 -3
  467. package/readme.md +2 -2
  468. package/relationships/index.js +9 -7
  469. package/relationships/with-schemas/index.js +9 -7
  470. package/store/index.js +17 -9
  471. package/store/with-schemas/index.js +17 -9
  472. package/synchronizers/index.js +5 -3
  473. package/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
  474. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
  475. package/synchronizers/synchronizer-local/index.js +5 -3
  476. package/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
  477. package/synchronizers/synchronizer-ws-client/index.js +8 -6
  478. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +8 -6
  479. package/synchronizers/synchronizer-ws-server/index.js +30 -23
  480. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +30 -23
  481. package/synchronizers/with-schemas/index.js +5 -3
  482. package/tools/index.js +1 -1
  483. package/tools/with-schemas/index.js +1 -1
  484. package/ui-react-inspector/index.js +24 -13
  485. package/ui-react-inspector/with-schemas/index.js +24 -13
  486. package/umd/checkpoints/index.js +9 -7
  487. package/umd/checkpoints/with-schemas/index.js +9 -7
  488. package/umd/es6/checkpoints/index.js +15 -13
  489. package/umd/es6/checkpoints/with-schemas/index.js +15 -13
  490. package/umd/es6/index.js +28 -20
  491. package/umd/es6/indexes/index.js +15 -13
  492. package/umd/es6/indexes/with-schemas/index.js +15 -13
  493. package/umd/es6/mergeable-store/index.js +23 -17
  494. package/umd/es6/mergeable-store/with-schemas/index.js +23 -17
  495. package/umd/es6/metrics/index.js +15 -13
  496. package/umd/es6/metrics/with-schemas/index.js +15 -13
  497. package/umd/es6/min/index.js +1 -1
  498. package/umd/es6/min/index.js.gz +0 -0
  499. package/umd/es6/min/mergeable-store/index.js +1 -1
  500. package/umd/es6/min/mergeable-store/index.js.gz +0 -0
  501. package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
  502. package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  503. package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
  504. package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  505. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  506. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  507. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  508. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  509. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  510. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  511. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  512. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  513. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  514. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  515. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  516. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  517. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  518. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  519. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  520. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  521. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  522. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  523. package/umd/es6/min/persisters/persister-postgres/index.js +1 -1
  524. package/umd/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  525. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  526. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  527. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  528. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  529. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  530. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  531. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  532. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  533. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  534. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  535. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  536. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  537. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  538. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  539. package/umd/es6/min/store/index.js +1 -1
  540. package/umd/es6/min/store/index.js.gz +0 -0
  541. package/umd/es6/min/store/with-schemas/index.js +1 -1
  542. package/umd/es6/min/store/with-schemas/index.js.gz +0 -0
  543. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  544. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  545. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  546. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  547. package/umd/es6/min/ui-react-inspector/index.js +1 -1
  548. package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
  549. package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  550. package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  551. package/umd/es6/min/with-schemas/index.js +1 -1
  552. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  553. package/umd/es6/persisters/index.js +5 -3
  554. package/umd/es6/persisters/persister-automerge/index.js +7 -4
  555. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +7 -4
  556. package/umd/es6/persisters/persister-browser/index.js +5 -3
  557. package/umd/es6/persisters/persister-browser/with-schemas/index.js +5 -3
  558. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +86 -47
  559. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +86 -47
  560. package/umd/es6/persisters/persister-electric-sql/index.js +86 -47
  561. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +86 -47
  562. package/umd/es6/persisters/persister-expo-sqlite/index.js +86 -47
  563. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +86 -47
  564. package/umd/es6/persisters/persister-file/index.js +5 -3
  565. package/umd/es6/persisters/persister-file/with-schemas/index.js +5 -3
  566. package/umd/es6/persisters/persister-indexed-db/index.js +5 -3
  567. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +5 -3
  568. package/umd/es6/persisters/persister-libsql/index.js +86 -47
  569. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +86 -47
  570. package/umd/es6/persisters/persister-partykit-client/index.js +5 -3
  571. package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +5 -3
  572. package/umd/es6/persisters/persister-partykit-server/index.js +36 -22
  573. package/umd/es6/persisters/persister-partykit-server/with-schemas/index.js +36 -22
  574. package/umd/es6/persisters/persister-postgres/index.js +108 -37
  575. package/umd/es6/persisters/persister-postgres/with-schemas/index.js +108 -37
  576. package/umd/es6/persisters/persister-powersync/index.js +86 -47
  577. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +86 -47
  578. package/umd/es6/persisters/persister-remote/index.js +5 -3
  579. package/umd/es6/persisters/persister-remote/with-schemas/index.js +5 -3
  580. package/umd/es6/persisters/persister-sqlite-wasm/index.js +86 -47
  581. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +86 -47
  582. package/umd/es6/persisters/persister-sqlite3/index.js +86 -47
  583. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +86 -47
  584. package/umd/es6/persisters/persister-yjs/index.js +5 -3
  585. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +5 -3
  586. package/umd/es6/persisters/with-schemas/index.js +5 -3
  587. package/umd/es6/relationships/index.js +15 -13
  588. package/umd/es6/relationships/with-schemas/index.js +15 -13
  589. package/umd/es6/store/index.js +23 -17
  590. package/umd/es6/store/with-schemas/index.js +23 -17
  591. package/umd/es6/synchronizers/index.js +5 -3
  592. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
  593. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
  594. package/umd/es6/synchronizers/synchronizer-local/index.js +5 -3
  595. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
  596. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +8 -6
  597. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +8 -6
  598. package/umd/es6/synchronizers/synchronizer-ws-server/index.js +79 -77
  599. package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -77
  600. package/umd/es6/synchronizers/with-schemas/index.js +5 -3
  601. package/umd/es6/ui-react-inspector/index.js +30 -21
  602. package/umd/es6/ui-react-inspector/with-schemas/index.js +30 -21
  603. package/umd/es6/with-schemas/index.js +28 -20
  604. package/umd/index.js +22 -12
  605. package/umd/indexes/index.js +9 -7
  606. package/umd/indexes/with-schemas/index.js +9 -7
  607. package/umd/mergeable-store/index.js +17 -9
  608. package/umd/mergeable-store/with-schemas/index.js +17 -9
  609. package/umd/metrics/index.js +9 -7
  610. package/umd/metrics/with-schemas/index.js +9 -7
  611. package/umd/min/index.js +1 -1
  612. package/umd/min/index.js.gz +0 -0
  613. package/umd/min/mergeable-store/index.js +1 -1
  614. package/umd/min/mergeable-store/index.js.gz +0 -0
  615. package/umd/min/mergeable-store/with-schemas/index.js +1 -1
  616. package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
  617. package/umd/min/persisters/persister-automerge/index.js +1 -1
  618. package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
  619. package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  620. package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  621. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  622. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  623. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  624. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  625. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  626. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  627. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  628. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  629. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  630. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  631. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  632. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  633. package/umd/min/persisters/persister-libsql/index.js +1 -1
  634. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  635. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  636. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  637. package/umd/min/persisters/persister-postgres/index.js +1 -1
  638. package/umd/min/persisters/persister-postgres/index.js.gz +0 -0
  639. package/umd/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  640. package/umd/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  641. package/umd/min/persisters/persister-powersync/index.js +1 -1
  642. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  643. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  644. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  645. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  646. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  647. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  648. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  649. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  650. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  651. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  652. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  653. package/umd/min/store/index.js +1 -1
  654. package/umd/min/store/index.js.gz +0 -0
  655. package/umd/min/store/with-schemas/index.js +1 -1
  656. package/umd/min/store/with-schemas/index.js.gz +0 -0
  657. package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  658. package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  659. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  660. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  661. package/umd/min/tools/index.js +1 -1
  662. package/umd/min/tools/index.js.gz +0 -0
  663. package/umd/min/tools/with-schemas/index.js +1 -1
  664. package/umd/min/tools/with-schemas/index.js.gz +0 -0
  665. package/umd/min/ui-react-inspector/index.js +1 -1
  666. package/umd/min/ui-react-inspector/index.js.gz +0 -0
  667. package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
  668. package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  669. package/umd/min/with-schemas/index.js +1 -1
  670. package/umd/min/with-schemas/index.js.gz +0 -0
  671. package/umd/persisters/index.js +5 -3
  672. package/umd/persisters/persister-automerge/index.js +7 -4
  673. package/umd/persisters/persister-automerge/with-schemas/index.js +7 -4
  674. package/umd/persisters/persister-browser/index.js +5 -3
  675. package/umd/persisters/persister-browser/with-schemas/index.js +5 -3
  676. package/umd/persisters/persister-cr-sqlite-wasm/index.js +52 -37
  677. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +52 -37
  678. package/umd/persisters/persister-electric-sql/index.js +52 -37
  679. package/umd/persisters/persister-electric-sql/with-schemas/index.js +52 -37
  680. package/umd/persisters/persister-expo-sqlite/index.js +52 -37
  681. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +52 -37
  682. package/umd/persisters/persister-file/index.js +5 -3
  683. package/umd/persisters/persister-file/with-schemas/index.js +5 -3
  684. package/umd/persisters/persister-indexed-db/index.js +5 -3
  685. package/umd/persisters/persister-indexed-db/with-schemas/index.js +5 -3
  686. package/umd/persisters/persister-libsql/index.js +52 -37
  687. package/umd/persisters/persister-libsql/with-schemas/index.js +52 -37
  688. package/umd/persisters/persister-partykit-client/index.js +5 -3
  689. package/umd/persisters/persister-partykit-client/with-schemas/index.js +5 -3
  690. package/umd/persisters/persister-partykit-server/index.js +36 -25
  691. package/umd/persisters/persister-partykit-server/with-schemas/index.js +36 -25
  692. package/umd/persisters/persister-postgres/index.js +77 -31
  693. package/umd/persisters/persister-postgres/with-schemas/index.js +77 -31
  694. package/umd/persisters/persister-powersync/index.js +52 -37
  695. package/umd/persisters/persister-powersync/with-schemas/index.js +52 -37
  696. package/umd/persisters/persister-remote/index.js +5 -3
  697. package/umd/persisters/persister-remote/with-schemas/index.js +5 -3
  698. package/umd/persisters/persister-sqlite-wasm/index.js +52 -37
  699. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +52 -37
  700. package/umd/persisters/persister-sqlite3/index.js +52 -37
  701. package/umd/persisters/persister-sqlite3/with-schemas/index.js +52 -37
  702. package/umd/persisters/persister-yjs/index.js +5 -3
  703. package/umd/persisters/persister-yjs/with-schemas/index.js +5 -3
  704. package/umd/persisters/with-schemas/index.js +5 -3
  705. package/umd/relationships/index.js +9 -7
  706. package/umd/relationships/with-schemas/index.js +9 -7
  707. package/umd/store/index.js +17 -9
  708. package/umd/store/with-schemas/index.js +17 -9
  709. package/umd/synchronizers/index.js +5 -3
  710. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +5 -3
  711. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -3
  712. package/umd/synchronizers/synchronizer-local/index.js +5 -3
  713. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +5 -3
  714. package/umd/synchronizers/synchronizer-ws-client/index.js +8 -6
  715. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +8 -6
  716. package/umd/synchronizers/synchronizer-ws-server/index.js +30 -23
  717. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +30 -23
  718. package/umd/synchronizers/with-schemas/index.js +5 -3
  719. package/umd/tools/index.js +1 -1
  720. package/umd/tools/with-schemas/index.js +1 -1
  721. package/umd/ui-react-inspector/index.js +24 -13
  722. package/umd/ui-react-inspector/with-schemas/index.js +24 -13
  723. package/umd/with-schemas/index.js +22 -12
  724. package/with-schemas/index.js +22 -12
@@ -127,20 +127,24 @@ const saveStore = async (that, changes, initialSave, requestOrConnection) => {
127
127
  objToArray(row, async (cell, cellId) => {
128
128
  const ids = [tableId, rowId, cellId];
129
129
  const key = constructStorageKey(storagePrefix, T, ...ids);
130
- isUndefined(cell)
131
- ? !initialSave &&
132
- (await that.canDelCell(
133
- ...ids,
134
- requestOrConnection,
135
- )) &&
136
- arrayPush(keysToDel, key)
137
- : (await that.canSetCell(
138
- ...ids,
139
- cell,
140
- initialSave,
141
- requestOrConnection,
142
- await storage.get(key),
143
- )) && (keysToSet[key] = cell);
130
+ if (isUndefined(cell)) {
131
+ if (
132
+ !initialSave &&
133
+ (await that.canDelCell(...ids, requestOrConnection))
134
+ ) {
135
+ arrayPush(keysToDel, key);
136
+ }
137
+ } else if (
138
+ await that.canSetCell(
139
+ ...ids,
140
+ cell,
141
+ initialSave,
142
+ requestOrConnection,
143
+ await storage.get(key),
144
+ )
145
+ ) {
146
+ keysToSet[key] = cell;
147
+ }
144
148
  }),
145
149
  )),
146
150
  ),
@@ -150,17 +154,24 @@ const saveStore = async (that, changes, initialSave, requestOrConnection) => {
150
154
  await promiseAll(
151
155
  objToArray(changes[1], async (value, valueId) => {
152
156
  const key = storagePrefix + V + valueId;
153
- isUndefined(value)
154
- ? !initialSave &&
155
- (await that.canDelValue(valueId, requestOrConnection)) &&
156
- arrayPush(keysToDel, key)
157
- : (await that.canSetValue(
158
- valueId,
159
- value,
160
- initialSave,
161
- requestOrConnection,
162
- await storage.get(key),
163
- )) && (keysToSet[key] = value);
157
+ if (isUndefined(value)) {
158
+ if (
159
+ !initialSave &&
160
+ (await that.canDelValue(valueId, requestOrConnection))
161
+ ) {
162
+ arrayPush(keysToDel, key);
163
+ }
164
+ } else if (
165
+ await that.canSetValue(
166
+ valueId,
167
+ value,
168
+ initialSave,
169
+ requestOrConnection,
170
+ await storage.get(key),
171
+ )
172
+ ) {
173
+ keysToSet[key] = value;
174
+ }
164
175
  }),
165
176
  );
166
177
  if (!arrayIsEmpty(keyPrefixesToDel)) {
@@ -127,20 +127,24 @@ const saveStore = async (that, changes, initialSave, requestOrConnection) => {
127
127
  objToArray(row, async (cell, cellId) => {
128
128
  const ids = [tableId, rowId, cellId];
129
129
  const key = constructStorageKey(storagePrefix, T, ...ids);
130
- isUndefined(cell)
131
- ? !initialSave &&
132
- (await that.canDelCell(
133
- ...ids,
134
- requestOrConnection,
135
- )) &&
136
- arrayPush(keysToDel, key)
137
- : (await that.canSetCell(
138
- ...ids,
139
- cell,
140
- initialSave,
141
- requestOrConnection,
142
- await storage.get(key),
143
- )) && (keysToSet[key] = cell);
130
+ if (isUndefined(cell)) {
131
+ if (
132
+ !initialSave &&
133
+ (await that.canDelCell(...ids, requestOrConnection))
134
+ ) {
135
+ arrayPush(keysToDel, key);
136
+ }
137
+ } else if (
138
+ await that.canSetCell(
139
+ ...ids,
140
+ cell,
141
+ initialSave,
142
+ requestOrConnection,
143
+ await storage.get(key),
144
+ )
145
+ ) {
146
+ keysToSet[key] = cell;
147
+ }
144
148
  }),
145
149
  )),
146
150
  ),
@@ -150,17 +154,24 @@ const saveStore = async (that, changes, initialSave, requestOrConnection) => {
150
154
  await promiseAll(
151
155
  objToArray(changes[1], async (value, valueId) => {
152
156
  const key = storagePrefix + V + valueId;
153
- isUndefined(value)
154
- ? !initialSave &&
155
- (await that.canDelValue(valueId, requestOrConnection)) &&
156
- arrayPush(keysToDel, key)
157
- : (await that.canSetValue(
158
- valueId,
159
- value,
160
- initialSave,
161
- requestOrConnection,
162
- await storage.get(key),
163
- )) && (keysToSet[key] = value);
157
+ if (isUndefined(value)) {
158
+ if (
159
+ !initialSave &&
160
+ (await that.canDelValue(valueId, requestOrConnection))
161
+ ) {
162
+ arrayPush(keysToDel, key);
163
+ }
164
+ } else if (
165
+ await that.canSetValue(
166
+ valueId,
167
+ value,
168
+ initialSave,
169
+ requestOrConnection,
170
+ await storage.get(key),
171
+ )
172
+ ) {
173
+ keysToSet[key] = value;
174
+ }
164
175
  }),
165
176
  );
166
177
  if (!arrayIsEmpty(keyPrefixesToDel)) {
@@ -4,6 +4,7 @@ const EMPTY_STRING = '';
4
4
  const COMMA = ',';
5
5
  const STRING = getTypeOf(EMPTY_STRING);
6
6
  const UNDEFINED = '\uFFFC';
7
+ const strMatch = (str, regex) => str?.match(regex);
7
8
 
8
9
  const promise = Promise;
9
10
  const isUndefined = (thing) => thing == void 0;
@@ -36,6 +37,13 @@ const TABLE = 'TABLE';
36
37
  const ALTER_TABLE = 'ALTER ' + TABLE;
37
38
  const DELETE_FROM = 'DELETE FROM';
38
39
  const SELECT_STAR_FROM = SELECT + '*FROM';
40
+ const getWrappedCommand = (rawCmd, onSqlCommand) =>
41
+ onSqlCommand
42
+ ? async (sql, args) => {
43
+ onSqlCommand(sql, args);
44
+ return await rawCmd(sql, args);
45
+ }
46
+ : rawCmd;
39
47
  const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
40
48
  const getPlaceholders = (array) =>
41
49
  arrayJoin(
@@ -177,9 +185,11 @@ const createCustomPersister = (
177
185
  await schedule(async () => {
178
186
  try {
179
187
  const content = await getPersisted();
180
- isArray(content)
181
- ? setContentOrChanges(content)
182
- : errorNew(`Content is not an array ${content}`);
188
+ if (isArray(content)) {
189
+ setContentOrChanges(content);
190
+ } else {
191
+ errorNew(`Content is not an array ${content}`);
192
+ }
183
193
  } catch (error) {
184
194
  onIgnoredError?.(error);
185
195
  if (initialContent) {
@@ -833,12 +843,16 @@ const getConfigStructures = (configOrStoreTableName) => {
833
843
  return [0, autoLoadIntervalSeconds, tabularConfig, managedTableNames];
834
844
  };
835
845
 
836
- const createPostgresqlPersister = (
846
+ const EVENT_CHANNEL = TINYBASE;
847
+ const EVENT_REGEX = /^([cd]:)(.+)/;
848
+ const CHANGE_DATA_TRIGGER = TINYBASE + '_data';
849
+ const CREATE_TABLE_TRIGGER = TINYBASE + '_table';
850
+ const createPostgreSqlPersister = (
837
851
  store,
838
852
  configOrStoreTableName,
839
- cmd,
840
- addUpdateListener,
841
- delUpdateListener,
853
+ rawCmd,
854
+ addNotifyListener,
855
+ delNotifyListener,
842
856
  onSqlCommand,
843
857
  onIgnoredError,
844
858
  destroy,
@@ -846,23 +860,60 @@ const createPostgresqlPersister = (
846
860
  thing,
847
861
  getThing = 'getDb',
848
862
  ) => {
863
+ const cmd = getWrappedCommand(rawCmd, onSqlCommand);
849
864
  const [isJson, , defaultedConfig, managedTableNamesSet] = getConfigStructures(
850
865
  configOrStoreTableName,
851
866
  );
852
- const addPersisterListener = async (listener) =>
853
- await addUpdateListener(
854
- (tableName) => (managedTableNamesSet.has(tableName) ? listener() : 0),
855
- managedTableNamesSet,
867
+ const addDataTrigger = async (tableName) => {
868
+ await cmd(
869
+ // eslint-disable-next-line max-len
870
+ `CREATE OR REPLACE TRIGGER ${escapeId(CHANGE_DATA_TRIGGER + '_' + tableName)} AFTER INSERT OR UPDATE OR DELETE ON ${escapeId(tableName)} EXECUTE FUNCTION ${CHANGE_DATA_TRIGGER}()`,
871
+ );
872
+ };
873
+ const addPersisterListener = async (listener) => {
874
+ await cmd(
875
+ // eslint-disable-next-line max-len
876
+ `CREATE OR REPLACE FUNCTION ${CREATE_TABLE_TRIGGER}()RETURNS event_trigger AS $t2$ DECLARE row record; BEGIN FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()WHERE command_tag='CREATE TABLE' LOOP PERFORM pg_notify('${EVENT_CHANNEL}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`,
877
+ );
878
+ try {
879
+ await cmd(
880
+ // eslint-disable-next-line max-len
881
+ `CREATE EVENT TRIGGER ${CREATE_TABLE_TRIGGER} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${CREATE_TABLE_TRIGGER}();`,
882
+ );
883
+ } catch {}
884
+ await cmd(
885
+ // eslint-disable-next-line max-len
886
+ `CREATE OR REPLACE FUNCTION ${CHANGE_DATA_TRIGGER}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${EVENT_CHANNEL}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`,
887
+ );
888
+ await promiseAll(
889
+ arrayMap(collValues(managedTableNamesSet), async (tableName) => {
890
+ await cmd(
891
+ // eslint-disable-next-line max-len
892
+ `CREATE TABLE IF NOT EXISTS ${escapeId(tableName)}("_id"text PRIMARY KEY)`,
893
+ );
894
+ await addDataTrigger(tableName);
895
+ }),
856
896
  );
857
- const delPersisterListener = delUpdateListener;
897
+ return await addNotifyListener(
898
+ EVENT_CHANNEL,
899
+ async (prefixAndTableName) =>
900
+ await ifNotUndefined(
901
+ strMatch(prefixAndTableName, EVENT_REGEX),
902
+ async ([, eventType, tableName]) => {
903
+ if (collHas(managedTableNamesSet, tableName)) {
904
+ if (eventType == 'c:') {
905
+ await addDataTrigger(tableName);
906
+ }
907
+ listener();
908
+ }
909
+ },
910
+ ),
911
+ );
912
+ };
913
+ const delPersisterListener = delNotifyListener;
858
914
  return (isJson ? createJsonPersister : createTabularPersister)(
859
915
  store,
860
- onSqlCommand
861
- ? async (sql, args) => {
862
- onSqlCommand(sql, args);
863
- return await cmd(sql, args);
864
- }
865
- : cmd,
916
+ cmd,
866
917
  addPersisterListener,
867
918
  delPersisterListener,
868
919
  onIgnoredError,
@@ -881,7 +932,6 @@ const createPostgresqlPersister = (
881
932
  );
882
933
  };
883
934
 
884
- const TRIGGER = TINYBASE;
885
935
  const createPostgresPersister = async (
886
936
  store,
887
937
  sql,
@@ -890,22 +940,18 @@ const createPostgresPersister = async (
890
940
  onIgnoredError,
891
941
  ) => {
892
942
  const cmdSql = await sql.reserve?.();
893
- return createPostgresqlPersister(
943
+ return createPostgreSqlPersister(
894
944
  store,
895
945
  configOrStoreTableName,
896
946
  cmdSql?.unsafe,
897
- async (listener, managedTableNamesSet) => {
898
- const listen = await sql.listen(TRIGGER, (value) => listener?.(value));
899
- await sql`CREATE OR REPLACE FUNCTION ${sql(TRIGGER)}()RETURNS trigger AS $t$ BEGIN PERFORM pg_notify('${sql.unsafe(TRIGGER)}',TG_TABLE_NAME);RETURN NULL;END;$t$ LANGUAGE plpgsql;`;
900
- await promiseAll(
901
- arrayMap(collValues(managedTableNamesSet), async (tableName) => {
902
- await sql`CREATE TABLE IF NOT EXISTS ${sql(tableName)}("_id"text PRIMARY KEY)`;
903
- await sql`CREATE OR REPLACE TRIGGER ${sql(TRIGGER + tableName)} AFTER INSERT OR UPDATE OR DELETE ON ${sql(tableName)} EXECUTE FUNCTION ${sql(TRIGGER)}()`;
904
- }),
905
- );
906
- return listen;
947
+ async (channel, notifyListener) => sql.listen(channel, notifyListener),
948
+ async (notifyListener) => {
949
+ try {
950
+ await notifyListener.unlisten();
951
+ } catch (e) {
952
+ onIgnoredError?.(e);
953
+ }
907
954
  },
908
- (listen) => listen.unlisten().catch(() => 0),
909
955
  onSqlCommand,
910
956
  onIgnoredError,
911
957
  () => cmdSql?.release?.(),
@@ -4,6 +4,7 @@ const EMPTY_STRING = '';
4
4
  const COMMA = ',';
5
5
  const STRING = getTypeOf(EMPTY_STRING);
6
6
  const UNDEFINED = '\uFFFC';
7
+ const strMatch = (str, regex) => str?.match(regex);
7
8
 
8
9
  const promise = Promise;
9
10
  const isUndefined = (thing) => thing == void 0;
@@ -36,6 +37,13 @@ const TABLE = 'TABLE';
36
37
  const ALTER_TABLE = 'ALTER ' + TABLE;
37
38
  const DELETE_FROM = 'DELETE FROM';
38
39
  const SELECT_STAR_FROM = SELECT + '*FROM';
40
+ const getWrappedCommand = (rawCmd, onSqlCommand) =>
41
+ onSqlCommand
42
+ ? async (sql, args) => {
43
+ onSqlCommand(sql, args);
44
+ return await rawCmd(sql, args);
45
+ }
46
+ : rawCmd;
39
47
  const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
40
48
  const getPlaceholders = (array) =>
41
49
  arrayJoin(
@@ -177,9 +185,11 @@ const createCustomPersister = (
177
185
  await schedule(async () => {
178
186
  try {
179
187
  const content = await getPersisted();
180
- isArray(content)
181
- ? setContentOrChanges(content)
182
- : errorNew(`Content is not an array ${content}`);
188
+ if (isArray(content)) {
189
+ setContentOrChanges(content);
190
+ } else {
191
+ errorNew(`Content is not an array ${content}`);
192
+ }
183
193
  } catch (error) {
184
194
  onIgnoredError?.(error);
185
195
  if (initialContent) {
@@ -833,12 +843,16 @@ const getConfigStructures = (configOrStoreTableName) => {
833
843
  return [0, autoLoadIntervalSeconds, tabularConfig, managedTableNames];
834
844
  };
835
845
 
836
- const createPostgresqlPersister = (
846
+ const EVENT_CHANNEL = TINYBASE;
847
+ const EVENT_REGEX = /^([cd]:)(.+)/;
848
+ const CHANGE_DATA_TRIGGER = TINYBASE + '_data';
849
+ const CREATE_TABLE_TRIGGER = TINYBASE + '_table';
850
+ const createPostgreSqlPersister = (
837
851
  store,
838
852
  configOrStoreTableName,
839
- cmd,
840
- addUpdateListener,
841
- delUpdateListener,
853
+ rawCmd,
854
+ addNotifyListener,
855
+ delNotifyListener,
842
856
  onSqlCommand,
843
857
  onIgnoredError,
844
858
  destroy,
@@ -846,23 +860,60 @@ const createPostgresqlPersister = (
846
860
  thing,
847
861
  getThing = 'getDb',
848
862
  ) => {
863
+ const cmd = getWrappedCommand(rawCmd, onSqlCommand);
849
864
  const [isJson, , defaultedConfig, managedTableNamesSet] = getConfigStructures(
850
865
  configOrStoreTableName,
851
866
  );
852
- const addPersisterListener = async (listener) =>
853
- await addUpdateListener(
854
- (tableName) => (managedTableNamesSet.has(tableName) ? listener() : 0),
855
- managedTableNamesSet,
867
+ const addDataTrigger = async (tableName) => {
868
+ await cmd(
869
+ // eslint-disable-next-line max-len
870
+ `CREATE OR REPLACE TRIGGER ${escapeId(CHANGE_DATA_TRIGGER + '_' + tableName)} AFTER INSERT OR UPDATE OR DELETE ON ${escapeId(tableName)} EXECUTE FUNCTION ${CHANGE_DATA_TRIGGER}()`,
871
+ );
872
+ };
873
+ const addPersisterListener = async (listener) => {
874
+ await cmd(
875
+ // eslint-disable-next-line max-len
876
+ `CREATE OR REPLACE FUNCTION ${CREATE_TABLE_TRIGGER}()RETURNS event_trigger AS $t2$ DECLARE row record; BEGIN FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()WHERE command_tag='CREATE TABLE' LOOP PERFORM pg_notify('${EVENT_CHANNEL}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`,
877
+ );
878
+ try {
879
+ await cmd(
880
+ // eslint-disable-next-line max-len
881
+ `CREATE EVENT TRIGGER ${CREATE_TABLE_TRIGGER} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${CREATE_TABLE_TRIGGER}();`,
882
+ );
883
+ } catch {}
884
+ await cmd(
885
+ // eslint-disable-next-line max-len
886
+ `CREATE OR REPLACE FUNCTION ${CHANGE_DATA_TRIGGER}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${EVENT_CHANNEL}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`,
887
+ );
888
+ await promiseAll(
889
+ arrayMap(collValues(managedTableNamesSet), async (tableName) => {
890
+ await cmd(
891
+ // eslint-disable-next-line max-len
892
+ `CREATE TABLE IF NOT EXISTS ${escapeId(tableName)}("_id"text PRIMARY KEY)`,
893
+ );
894
+ await addDataTrigger(tableName);
895
+ }),
856
896
  );
857
- const delPersisterListener = delUpdateListener;
897
+ return await addNotifyListener(
898
+ EVENT_CHANNEL,
899
+ async (prefixAndTableName) =>
900
+ await ifNotUndefined(
901
+ strMatch(prefixAndTableName, EVENT_REGEX),
902
+ async ([, eventType, tableName]) => {
903
+ if (collHas(managedTableNamesSet, tableName)) {
904
+ if (eventType == 'c:') {
905
+ await addDataTrigger(tableName);
906
+ }
907
+ listener();
908
+ }
909
+ },
910
+ ),
911
+ );
912
+ };
913
+ const delPersisterListener = delNotifyListener;
858
914
  return (isJson ? createJsonPersister : createTabularPersister)(
859
915
  store,
860
- onSqlCommand
861
- ? async (sql, args) => {
862
- onSqlCommand(sql, args);
863
- return await cmd(sql, args);
864
- }
865
- : cmd,
916
+ cmd,
866
917
  addPersisterListener,
867
918
  delPersisterListener,
868
919
  onIgnoredError,
@@ -881,7 +932,6 @@ const createPostgresqlPersister = (
881
932
  );
882
933
  };
883
934
 
884
- const TRIGGER = TINYBASE;
885
935
  const createPostgresPersister = async (
886
936
  store,
887
937
  sql,
@@ -890,22 +940,18 @@ const createPostgresPersister = async (
890
940
  onIgnoredError,
891
941
  ) => {
892
942
  const cmdSql = await sql.reserve?.();
893
- return createPostgresqlPersister(
943
+ return createPostgreSqlPersister(
894
944
  store,
895
945
  configOrStoreTableName,
896
946
  cmdSql?.unsafe,
897
- async (listener, managedTableNamesSet) => {
898
- const listen = await sql.listen(TRIGGER, (value) => listener?.(value));
899
- await sql`CREATE OR REPLACE FUNCTION ${sql(TRIGGER)}()RETURNS trigger AS $t$ BEGIN PERFORM pg_notify('${sql.unsafe(TRIGGER)}',TG_TABLE_NAME);RETURN NULL;END;$t$ LANGUAGE plpgsql;`;
900
- await promiseAll(
901
- arrayMap(collValues(managedTableNamesSet), async (tableName) => {
902
- await sql`CREATE TABLE IF NOT EXISTS ${sql(tableName)}("_id"text PRIMARY KEY)`;
903
- await sql`CREATE OR REPLACE TRIGGER ${sql(TRIGGER + tableName)} AFTER INSERT OR UPDATE OR DELETE ON ${sql(tableName)} EXECUTE FUNCTION ${sql(TRIGGER)}()`;
904
- }),
905
- );
906
- return listen;
947
+ async (channel, notifyListener) => sql.listen(channel, notifyListener),
948
+ async (notifyListener) => {
949
+ try {
950
+ await notifyListener.unlisten();
951
+ } catch (e) {
952
+ onIgnoredError?.(e);
953
+ }
907
954
  },
908
- (listen) => listen.unlisten().catch(() => 0),
909
955
  onSqlCommand,
910
956
  onIgnoredError,
911
957
  () => cmdSql?.release?.(),
@@ -7,7 +7,6 @@ const UNDEFINED = '\uFFFC';
7
7
 
8
8
  const promise = Promise;
9
9
  const startInterval = (callback, sec, immediate) => {
10
- callback();
11
10
  return setInterval(callback, sec * 1e3);
12
11
  };
13
12
  const stopInterval = clearInterval;
@@ -46,6 +45,13 @@ const DATA_VERSION = 'data_version';
46
45
  const SCHEMA_VERSION = 'schema_version';
47
46
  const FROM = 'FROM ';
48
47
  const PRAGMA_TABLE = 'pragma_table_';
48
+ const getWrappedCommand = (rawCmd, onSqlCommand) =>
49
+ onSqlCommand
50
+ ? async (sql, args) => {
51
+ onSqlCommand(sql, args);
52
+ return await rawCmd(sql, args);
53
+ }
54
+ : rawCmd;
49
55
  const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
50
56
  const getPlaceholders = (array) =>
51
57
  arrayJoin(
@@ -187,9 +193,11 @@ const createCustomPersister = (
187
193
  await schedule(async () => {
188
194
  try {
189
195
  const content = await getPersisted();
190
- isArray(content)
191
- ? setContentOrChanges(content)
192
- : errorNew(`Content is not an array ${content}`);
196
+ if (isArray(content)) {
197
+ setContentOrChanges(content);
198
+ } else {
199
+ errorNew(`Content is not an array ${content}`);
200
+ }
193
201
  } catch (error) {
194
202
  onIgnoredError?.(error);
195
203
  if (initialContent) {
@@ -846,7 +854,7 @@ const getConfigStructures = (configOrStoreTableName) => {
846
854
  const createSqlitePersister = (
847
855
  store,
848
856
  configOrStoreTableName,
849
- cmd,
857
+ rawCmd,
850
858
  addUpdateListener,
851
859
  delUpdateListener,
852
860
  onSqlCommand,
@@ -859,47 +867,54 @@ const createSqlitePersister = (
859
867
  let dataVersion;
860
868
  let schemaVersion;
861
869
  let totalChanges;
870
+ const cmd = getWrappedCommand(rawCmd, onSqlCommand);
862
871
  const [
863
872
  isJson,
864
873
  autoLoadIntervalSeconds,
865
874
  defaultedConfig,
866
875
  managedTableNamesSet,
867
876
  ] = getConfigStructures(configOrStoreTableName);
868
- const addPersisterListener = (listener) => [
869
- startInterval(async () => {
870
- try {
871
- const [{d, s, c}] = await cmd(
872
- SELECT +
873
- ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
874
- );
875
- if (
876
- d != (dataVersion ??= d) ||
877
- s != (schemaVersion ??= s) ||
878
- c != (totalChanges ??= c)
879
- ) {
880
- listener();
881
- dataVersion = d;
882
- schemaVersion = s;
883
- }
884
- } catch {}
885
- }, autoLoadIntervalSeconds),
886
- addUpdateListener((tableName) =>
887
- managedTableNamesSet.has(tableName) ? listener() : 0,
888
- ),
889
- ];
890
- const delPersisterListener = ([interval, listeningHandle]) => {
891
- stopInterval(interval);
892
- dataVersion = schemaVersion = totalChanges = null;
893
- delUpdateListener(listeningHandle);
877
+ const addPersisterListener = (listener) => {
878
+ let interval;
879
+ const startPolling = () =>
880
+ (interval = startInterval(async () => {
881
+ try {
882
+ const [{d, s, c}] = await cmd(
883
+ // eslint-disable-next-line max-len
884
+ `${SELECT} ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
885
+ );
886
+ if (d != dataVersion || s != schemaVersion || c != totalChanges) {
887
+ if (dataVersion != null) {
888
+ listener();
889
+ }
890
+ dataVersion = d;
891
+ schemaVersion = s;
892
+ totalChanges = c;
893
+ }
894
+ } catch {}
895
+ }, autoLoadIntervalSeconds));
896
+ const stopPolling = () => {
897
+ dataVersion = schemaVersion = totalChanges = null;
898
+ stopInterval(interval);
899
+ };
900
+ const listeningHandle = addUpdateListener((tableName) => {
901
+ if (managedTableNamesSet.has(tableName)) {
902
+ stopPolling();
903
+ listener();
904
+ startPolling();
905
+ }
906
+ });
907
+ startPolling();
908
+ return () => {
909
+ stopPolling();
910
+ delUpdateListener(listeningHandle);
911
+ };
894
912
  };
913
+ const delPersisterListener = (stopPollingAndDelUpdateListener) =>
914
+ stopPollingAndDelUpdateListener();
895
915
  return (isJson ? createJsonPersister : createTabularPersister)(
896
916
  store,
897
- onSqlCommand
898
- ? async (sql, args) => {
899
- onSqlCommand(sql, args);
900
- return await cmd(sql, args);
901
- }
902
- : cmd,
917
+ cmd,
903
918
  addPersisterListener,
904
919
  delPersisterListener,
905
920
  onIgnoredError,