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
@@ -9,21 +9,44 @@
9
9
  })(this, function (exports) {
10
10
  'use strict';
11
11
 
12
+ const getTypeOf = (thing) => typeof thing;
13
+ const TINYBASE = 'tinybase';
14
+ const EMPTY_STRING = '';
15
+ const COMMA = ',';
16
+ const STRING = getTypeOf(EMPTY_STRING);
17
+ const UNDEFINED = '\uFFFC';
18
+ const strMatch = (str, regex) => str?.match(regex);
19
+
20
+ const promise = Promise;
21
+ const startInterval = (callback, sec, immediate) => {
22
+ return setInterval(callback, sec * 1e3);
23
+ };
24
+ const stopInterval = clearInterval;
12
25
  const isUndefined = (thing) => thing == void 0;
13
26
  const ifNotUndefined = (value, then, otherwise) =>
14
27
  isUndefined(value) ? otherwise?.() : then(value);
28
+ const isString = (thing) => getTypeOf(thing) == STRING;
15
29
  const isArray = (thing) => Array.isArray(thing);
30
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
16
31
  const size = (arrayOrString) => arrayOrString.length;
32
+ const promiseAll = async (promises) => promise.all(promises);
17
33
  const errorNew = (message) => {
18
34
  throw new Error(message);
19
35
  };
20
36
 
37
+ const arrayNew = (size2, cb) =>
38
+ arrayMap(new Array(size2).fill(0), (_, index) => cb(index));
39
+ const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
40
+ const arrayMap = (array, cb) => array.map(cb);
41
+ const arrayIsEmpty = (array) => size(array) == 0;
42
+ const arrayFilter = (array, cb) => array.filter(cb);
21
43
  const arrayClear = (array, to) => array.splice(0, to);
22
44
  const arrayPush = (array, ...values) => array.push(...values);
23
45
  const arrayShift = (array) => array.shift();
24
46
 
25
47
  const object = Object;
26
48
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
49
+ const objEntries = object.entries;
27
50
  const isObject = (obj) =>
28
51
  !isUndefined(obj) &&
29
52
  ifNotUndefined(
@@ -37,14 +60,30 @@
37
60
  );
38
61
  const objIds = object.keys;
39
62
  const objFreeze = object.freeze;
63
+ const objNew = (entries = []) => object.fromEntries(entries);
64
+ const objMerge = (...objs) => object.assign({}, ...objs);
65
+ const objHas = (obj, id) => id in obj;
66
+ const objDel = (obj, id) => {
67
+ delete obj[id];
68
+ return obj;
69
+ };
70
+ const objToArray = (obj, cb) =>
71
+ arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
72
+ const objMap = (obj, cb) =>
73
+ objNew(objToArray(obj, (value, id) => [id, cb(value, id)]));
74
+ const objValues = (obj) => object.values(obj);
40
75
  const objSize = (obj) => size(objIds(obj));
41
76
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
42
77
 
43
78
  const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
79
+ const collValues = (coll) => [...(coll?.values() ?? [])];
80
+ const collClear = (coll) => coll.clear();
44
81
  const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
45
82
 
46
83
  const mapNew = (entries) => new Map(entries);
47
84
  const mapGet = (map, key) => map?.get(key);
85
+ const mapMap = (coll, cb) =>
86
+ arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
48
87
  const mapSet = (map, key, value) =>
49
88
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
50
89
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
@@ -253,6 +292,802 @@
253
292
  return objFreeze(persister);
254
293
  };
255
294
 
295
+ const SINGLE_ROW_ID = '_';
296
+ const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
297
+ const SELECT = 'SELECT';
298
+ const WHERE = 'WHERE';
299
+ const TABLE = 'TABLE';
300
+ const ALTER_TABLE = 'ALTER ' + TABLE;
301
+ const DELETE_FROM = 'DELETE FROM';
302
+ const SELECT_STAR_FROM = SELECT + '*FROM';
303
+ const PRAGMA = 'pragma_';
304
+ const DATA_VERSION = 'data_version';
305
+ const SCHEMA_VERSION = 'schema_version';
306
+ const FROM = 'FROM ';
307
+ const PRAGMA_TABLE = 'pragma_table_';
308
+ const getWrappedCommand = (executeCommand, onSqlCommand) =>
309
+ onSqlCommand
310
+ ? async (sql, params) => {
311
+ onSqlCommand(sql, params);
312
+ return await executeCommand(sql, params);
313
+ }
314
+ : executeCommand;
315
+ const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
316
+ const getPlaceholders = (array) =>
317
+ arrayJoin(
318
+ arrayMap(array, (_, index) => '$' + (index + 1)),
319
+ COMMA,
320
+ );
321
+
322
+ const jsonString = JSON.stringify;
323
+ const jsonParse = JSON.parse;
324
+ const jsonStringWithUndefined = (obj) =>
325
+ jsonString(obj, (_key, value) => (value === void 0 ? UNDEFINED : value));
326
+ const jsonParseWithUndefined = (str) =>
327
+ jsonParse(str, (_key, value) => (value === UNDEFINED ? void 0 : value));
328
+
329
+ const setNew = (entryOrEntries) =>
330
+ new Set(
331
+ isArray(entryOrEntries) || isUndefined(entryOrEntries)
332
+ ? entryOrEntries
333
+ : [entryOrEntries],
334
+ );
335
+ const setAdd = (set, value) => set?.add(value);
336
+
337
+ const getCommandFunctions = (
338
+ databaseExecuteCommand,
339
+ managedTableNames,
340
+ querySchema,
341
+ onIgnoredError,
342
+ columnType,
343
+ orReplace,
344
+ encode,
345
+ decode,
346
+ ) => {
347
+ const schemaMap = mapNew();
348
+ const canSelect = (tableName, rowIdColumnName) =>
349
+ collHas(mapGet(schemaMap, tableName), rowIdColumnName);
350
+ const refreshSchema = async () => {
351
+ collClear(schemaMap);
352
+ arrayMap(
353
+ await querySchema(databaseExecuteCommand, managedTableNames),
354
+ ({tn, cn}) => setAdd(mapEnsure(schemaMap, tn, setNew), cn),
355
+ );
356
+ };
357
+ const loadTable = async (tableName, rowIdColumnName) =>
358
+ canSelect(tableName, rowIdColumnName)
359
+ ? objNew(
360
+ arrayFilter(
361
+ arrayMap(
362
+ await databaseExecuteCommand(
363
+ SELECT_STAR_FROM + escapeId(tableName),
364
+ ),
365
+ (row) => [
366
+ row[rowIdColumnName],
367
+ decode
368
+ ? objMap(objDel(row, rowIdColumnName), decode)
369
+ : objDel(row, rowIdColumnName),
370
+ ],
371
+ ),
372
+ ([rowId, row]) => !isUndefined(rowId) && !objIsEmpty(row),
373
+ ),
374
+ )
375
+ : {};
376
+ const saveTable = async (
377
+ tableName,
378
+ rowIdColumnName,
379
+ content,
380
+ deleteEmptyColumns,
381
+ deleteEmptyTable,
382
+ partial = false,
383
+ ) => {
384
+ const tableCellOrValueIds = setNew();
385
+ objToArray(content ?? {}, (contentRow) =>
386
+ arrayMap(objIds(contentRow ?? {}), (cellOrValueId) =>
387
+ setAdd(tableCellOrValueIds, cellOrValueId),
388
+ ),
389
+ );
390
+ const tableColumnNames = collValues(tableCellOrValueIds);
391
+ if (
392
+ !partial &&
393
+ deleteEmptyTable &&
394
+ arrayIsEmpty(tableColumnNames) &&
395
+ collHas(schemaMap, tableName)
396
+ ) {
397
+ await databaseExecuteCommand('DROP ' + TABLE + escapeId(tableName));
398
+ mapSet(schemaMap, tableName);
399
+ return;
400
+ }
401
+ const tableSchemaColumns = mapGet(schemaMap, tableName);
402
+ const currentColumnNames = setNew(collValues(tableSchemaColumns));
403
+ if (!arrayIsEmpty(tableColumnNames)) {
404
+ if (!collHas(schemaMap, tableName)) {
405
+ await databaseExecuteCommand(
406
+ 'CREATE ' +
407
+ TABLE +
408
+ escapeId(tableName) +
409
+ `(${escapeId(rowIdColumnName)}${columnType} PRIMARY KEY${arrayJoin(
410
+ arrayMap(
411
+ tableColumnNames,
412
+ (columnName) => COMMA + escapeId(columnName) + columnType,
413
+ ),
414
+ )});`,
415
+ );
416
+ mapSet(
417
+ schemaMap,
418
+ tableName,
419
+ setNew([rowIdColumnName, ...tableColumnNames]),
420
+ );
421
+ } else {
422
+ await promiseAll(
423
+ arrayMap(
424
+ [rowIdColumnName, ...tableColumnNames],
425
+ async (columnName, index) => {
426
+ if (!collDel(currentColumnNames, columnName)) {
427
+ await databaseExecuteCommand(
428
+ ALTER_TABLE +
429
+ escapeId(tableName) +
430
+ 'ADD' +
431
+ escapeId(columnName) +
432
+ columnType,
433
+ );
434
+ if (index == 0) {
435
+ await databaseExecuteCommand(
436
+ 'CREATE UNIQUE INDEX pk ON ' +
437
+ escapeId(tableName) +
438
+ `(${escapeId(rowIdColumnName)})`,
439
+ );
440
+ }
441
+ setAdd(tableSchemaColumns, columnName);
442
+ }
443
+ },
444
+ ),
445
+ );
446
+ }
447
+ }
448
+ await promiseAll([
449
+ ...(!partial && deleteEmptyColumns
450
+ ? arrayMap(collValues(currentColumnNames), async (columnName) => {
451
+ if (columnName != rowIdColumnName) {
452
+ await databaseExecuteCommand(
453
+ ALTER_TABLE +
454
+ escapeId(tableName) +
455
+ 'DROP' +
456
+ escapeId(columnName),
457
+ );
458
+ collDel(tableSchemaColumns, columnName);
459
+ }
460
+ })
461
+ : []),
462
+ ]);
463
+ if (partial) {
464
+ if (isUndefined(content)) {
465
+ await databaseExecuteCommand(
466
+ DELETE_FROM + escapeId(tableName) + WHERE + ' true',
467
+ );
468
+ } else {
469
+ await promiseAll(
470
+ objToArray(content, async (row, rowId) => {
471
+ if (isUndefined(row)) {
472
+ await databaseExecuteCommand(
473
+ DELETE_FROM +
474
+ escapeId(tableName) +
475
+ WHERE +
476
+ escapeId(rowIdColumnName) +
477
+ '=$1',
478
+ [rowId],
479
+ );
480
+ } else if (!arrayIsEmpty(tableColumnNames)) {
481
+ await upsert(
482
+ databaseExecuteCommand,
483
+ tableName,
484
+ rowIdColumnName,
485
+ objIds(row),
486
+ [
487
+ rowId,
488
+ ...(encode
489
+ ? arrayMap(objValues(row), encode)
490
+ : objValues(row)),
491
+ ],
492
+ orReplace,
493
+ );
494
+ }
495
+ }),
496
+ );
497
+ }
498
+ } else {
499
+ if (!arrayIsEmpty(tableColumnNames)) {
500
+ const changingColumnNames = arrayFilter(
501
+ collValues(mapGet(schemaMap, tableName)),
502
+ (columnName) => columnName != rowIdColumnName,
503
+ );
504
+ const params = [];
505
+ const deleteRowIds = [];
506
+ objToArray(content ?? {}, (row, rowId) => {
507
+ arrayPush(
508
+ params,
509
+ rowId,
510
+ ...arrayMap(changingColumnNames, (cellId) =>
511
+ encode ? encode(row?.[cellId]) : row?.[cellId],
512
+ ),
513
+ );
514
+ arrayPush(deleteRowIds, rowId);
515
+ });
516
+ await upsert(
517
+ databaseExecuteCommand,
518
+ tableName,
519
+ rowIdColumnName,
520
+ changingColumnNames,
521
+ params,
522
+ orReplace,
523
+ );
524
+ await databaseExecuteCommand(
525
+ DELETE_FROM +
526
+ escapeId(tableName) +
527
+ WHERE +
528
+ escapeId(rowIdColumnName) +
529
+ `NOT IN(${getPlaceholders(deleteRowIds)})`,
530
+ deleteRowIds,
531
+ );
532
+ } else if (collHas(schemaMap, tableName)) {
533
+ await databaseExecuteCommand(
534
+ DELETE_FROM + escapeId(tableName) + WHERE + ' true',
535
+ );
536
+ }
537
+ }
538
+ };
539
+ const transaction = async (actions) => {
540
+ let result;
541
+ await databaseExecuteCommand('BEGIN');
542
+ try {
543
+ result = await actions();
544
+ } catch (error) {
545
+ onIgnoredError?.(error);
546
+ }
547
+ await databaseExecuteCommand('END');
548
+ return result;
549
+ };
550
+ return [refreshSchema, loadTable, saveTable, transaction];
551
+ };
552
+ const upsert = async (
553
+ executeCommand,
554
+ tableName,
555
+ rowIdColumnName,
556
+ changingColumnNames,
557
+ params,
558
+ orReplace = 0,
559
+ ) =>
560
+ await executeCommand(
561
+ 'INSERT ' +
562
+ (orReplace ? 'OR REPLACE ' : EMPTY_STRING) +
563
+ 'INTO' +
564
+ escapeId(tableName) +
565
+ '(' +
566
+ escapeId(rowIdColumnName) +
567
+ arrayJoin(
568
+ arrayMap(
569
+ changingColumnNames,
570
+ (columnName) => COMMA + escapeId(columnName),
571
+ ),
572
+ ) +
573
+ ')VALUES' +
574
+ getUpsertPlaceholders(params, size(changingColumnNames) + 1) +
575
+ (orReplace
576
+ ? EMPTY_STRING
577
+ : 'ON CONFLICT(' +
578
+ escapeId(rowIdColumnName) +
579
+ ')DO UPDATE SET' +
580
+ arrayJoin(
581
+ arrayMap(
582
+ changingColumnNames,
583
+ (columnName) =>
584
+ escapeId(columnName) + '=excluded.' + escapeId(columnName),
585
+ ),
586
+ COMMA,
587
+ )),
588
+ arrayMap(params, (param) => param ?? null),
589
+ );
590
+ const getUpsertPlaceholders = (array, columnCount) =>
591
+ arrayJoin(
592
+ arrayNew(
593
+ size(array) / columnCount,
594
+ (row) =>
595
+ '(' +
596
+ arrayJoin(
597
+ arrayNew(
598
+ columnCount,
599
+ (column) => '$' + (row * columnCount + column + 1),
600
+ ),
601
+ COMMA,
602
+ ) +
603
+ ')',
604
+ ),
605
+ COMMA,
606
+ );
607
+
608
+ const createJsonPersister = (
609
+ store,
610
+ executeCommand,
611
+ addPersisterListener,
612
+ delPersisterListener,
613
+ onIgnoredError,
614
+ destroyImpl,
615
+ persist,
616
+ [storeTableName, storeIdColumnName, storeColumnName],
617
+ managedTableNames,
618
+ querySchema,
619
+ thing,
620
+ getThing,
621
+ columnType,
622
+ orReplace,
623
+ ) => {
624
+ const [refreshSchema, loadTable, saveTable, transaction] =
625
+ getCommandFunctions(
626
+ executeCommand,
627
+ managedTableNames,
628
+ querySchema,
629
+ onIgnoredError,
630
+ columnType,
631
+ orReplace,
632
+ );
633
+ const getPersisted = async () =>
634
+ await transaction(async () => {
635
+ await refreshSchema();
636
+ return jsonParseWithUndefined(
637
+ (await loadTable(storeTableName, storeIdColumnName))[SINGLE_ROW_ID]?.[
638
+ storeColumnName
639
+ ] ?? 'null',
640
+ );
641
+ });
642
+ const setPersisted = async (getContent) =>
643
+ await transaction(async () => {
644
+ await refreshSchema();
645
+ await saveTable(
646
+ storeTableName,
647
+ storeIdColumnName,
648
+ {
649
+ [SINGLE_ROW_ID]: {
650
+ [storeColumnName]: jsonStringWithUndefined(getContent() ?? null),
651
+ },
652
+ },
653
+ true,
654
+ true,
655
+ );
656
+ });
657
+ const destroy = () => {
658
+ persister.stopAutoLoad().stopAutoSave();
659
+ destroyImpl();
660
+ return persister;
661
+ };
662
+ const persister = createCustomPersister(
663
+ store,
664
+ getPersisted,
665
+ setPersisted,
666
+ addPersisterListener,
667
+ delPersisterListener,
668
+ onIgnoredError,
669
+ persist,
670
+ {[getThing]: () => thing, destroy},
671
+ thing,
672
+ );
673
+ return persister;
674
+ };
675
+
676
+ const createTabularPersister = (
677
+ store,
678
+ executeCommand,
679
+ addPersisterListener,
680
+ delPersisterListener,
681
+ onIgnoredError,
682
+ destroyImpl,
683
+ persist,
684
+ [
685
+ tablesLoadConfig,
686
+ tablesSaveConfig,
687
+ [valuesLoad, valuesSave, valuesTableName],
688
+ ],
689
+ managedTableNames,
690
+ querySchema,
691
+ thing,
692
+ getThing,
693
+ columnType,
694
+ orReplace,
695
+ encode,
696
+ decode,
697
+ ) => {
698
+ const [refreshSchema, loadTable, saveTable, transaction] =
699
+ getCommandFunctions(
700
+ executeCommand,
701
+ managedTableNames,
702
+ querySchema,
703
+ onIgnoredError,
704
+ columnType,
705
+ orReplace,
706
+ encode,
707
+ decode,
708
+ );
709
+ const saveTables = async (tables, partial) =>
710
+ await promiseAll(
711
+ mapMap(
712
+ tablesSaveConfig,
713
+ async (
714
+ [tableName, rowIdColumnName, deleteEmptyColumns, deleteEmptyTable],
715
+ tableId,
716
+ ) => {
717
+ if (!partial || objHas(tables, tableId)) {
718
+ await saveTable(
719
+ tableName,
720
+ rowIdColumnName,
721
+ tables[tableId],
722
+ deleteEmptyColumns,
723
+ deleteEmptyTable,
724
+ partial,
725
+ );
726
+ }
727
+ },
728
+ ),
729
+ );
730
+ const saveValues = async (values, partial) =>
731
+ valuesSave
732
+ ? await saveTable(
733
+ valuesTableName,
734
+ DEFAULT_ROW_ID_COLUMN_NAME,
735
+ {[SINGLE_ROW_ID]: values},
736
+ true,
737
+ true,
738
+ partial,
739
+ )
740
+ : null;
741
+ const loadTables = async () =>
742
+ objNew(
743
+ arrayFilter(
744
+ await promiseAll(
745
+ mapMap(
746
+ tablesLoadConfig,
747
+ async ([tableId, rowIdColumnName], tableName) => [
748
+ tableId,
749
+ await loadTable(tableName, rowIdColumnName),
750
+ ],
751
+ ),
752
+ ),
753
+ (pair) => !objIsEmpty(pair[1]),
754
+ ),
755
+ );
756
+ const loadValues = async () =>
757
+ valuesLoad
758
+ ? (await loadTable(valuesTableName, DEFAULT_ROW_ID_COLUMN_NAME))[
759
+ SINGLE_ROW_ID
760
+ ]
761
+ : {};
762
+ const getPersisted = async () =>
763
+ await transaction(async () => {
764
+ await refreshSchema();
765
+ const tables = await loadTables();
766
+ const values = await loadValues();
767
+ return !objIsEmpty(tables) || !isUndefined(values)
768
+ ? [tables, values]
769
+ : void 0;
770
+ });
771
+ const setPersisted = async (getContent, changes) =>
772
+ await transaction(async () => {
773
+ await refreshSchema();
774
+ if (!isUndefined(changes)) {
775
+ await saveTables(changes[0], true);
776
+ await saveValues(changes[1], true);
777
+ } else {
778
+ const [tables, values] = getContent();
779
+ await saveTables(tables);
780
+ await saveValues(values);
781
+ }
782
+ });
783
+ const destroy = () => {
784
+ persister.stopAutoLoad().stopAutoSave();
785
+ destroyImpl();
786
+ return persister;
787
+ };
788
+ const persister = createCustomPersister(
789
+ store,
790
+ getPersisted,
791
+ setPersisted,
792
+ addPersisterListener,
793
+ delPersisterListener,
794
+ onIgnoredError,
795
+ persist,
796
+ {[getThing]: () => thing, destroy},
797
+ thing,
798
+ );
799
+ return persister;
800
+ };
801
+
802
+ const COLUMN_NAME = 'ColumnName';
803
+ const STORE = 'store';
804
+ const JSON$1 = 'json';
805
+ const STORE_TABLE_NAME = STORE + 'TableName';
806
+ const STORE_ID_COLUMN_NAME = STORE + 'Id' + COLUMN_NAME;
807
+ const STORE_COLUMN_NAME = STORE + COLUMN_NAME;
808
+ const AUTO_LOAD_INTERVAL_SECONDS = 'autoLoadIntervalSeconds';
809
+ const ROW_ID_COLUMN_NAME = 'rowId' + COLUMN_NAME;
810
+ const TABLE_ID = 'tableId';
811
+ const TABLE_NAME = 'tableName';
812
+ const DELETE_EMPTY_COLUMNS = 'deleteEmptyColumns';
813
+ const DELETE_EMPTY_TABLE = 'deleteEmptyTable';
814
+ const DEFAULT_CONFIG = {
815
+ mode: JSON$1,
816
+ [AUTO_LOAD_INTERVAL_SECONDS]: 1,
817
+ };
818
+ const DEFAULT_TABULAR_VALUES_CONFIG = {
819
+ load: 0,
820
+ save: 0,
821
+ [TABLE_NAME]: TINYBASE + '_values',
822
+ };
823
+ const getDefaultedConfig = (configOrStoreTableName) =>
824
+ objMerge(
825
+ DEFAULT_CONFIG,
826
+ isString(configOrStoreTableName)
827
+ ? {[STORE_TABLE_NAME]: configOrStoreTableName}
828
+ : (configOrStoreTableName ?? {}),
829
+ );
830
+ const getDefaultedTabularConfigMap = (
831
+ configsObj,
832
+ defaultObj,
833
+ tableField,
834
+ exclude,
835
+ then,
836
+ ) => {
837
+ const configMap = mapNew();
838
+ objToArray(configsObj, (configObj, id) => {
839
+ const defaultedConfig = slice(
840
+ objValues(
841
+ objMerge(
842
+ defaultObj,
843
+ isString(configObj) ? {[tableField]: configObj} : configObj,
844
+ ),
845
+ ),
846
+ 0,
847
+ objSize(defaultObj),
848
+ );
849
+ if (
850
+ !isUndefined(defaultedConfig[0]) &&
851
+ !exclude(id, defaultedConfig[0])
852
+ ) {
853
+ then(id, defaultedConfig[0]);
854
+ mapSet(configMap, id, defaultedConfig);
855
+ }
856
+ });
857
+ return configMap;
858
+ };
859
+ const getConfigStructures = (configOrStoreTableName) => {
860
+ const config = getDefaultedConfig(configOrStoreTableName);
861
+ const autoLoadIntervalSeconds = config[AUTO_LOAD_INTERVAL_SECONDS];
862
+ if (config.mode == JSON$1) {
863
+ const storeTableName = config[STORE_TABLE_NAME] ?? TINYBASE;
864
+ return [
865
+ 1,
866
+ autoLoadIntervalSeconds,
867
+ [
868
+ storeTableName,
869
+ config[STORE_ID_COLUMN_NAME] ?? DEFAULT_ROW_ID_COLUMN_NAME,
870
+ config[STORE_COLUMN_NAME] ?? STORE,
871
+ ],
872
+ setNew(storeTableName),
873
+ ];
874
+ }
875
+ const {tables: {load = {}, save = {}} = {}, values = {}} = config;
876
+ const valuesConfig = slice(
877
+ objValues(objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values)),
878
+ 0,
879
+ objSize(DEFAULT_TABULAR_VALUES_CONFIG),
880
+ );
881
+ const valuesTable = valuesConfig[2];
882
+ const managedTableNames = setNew(valuesTable);
883
+ const excludedTableNames = setNew(valuesTable);
884
+ const tabularConfig = [
885
+ getDefaultedTabularConfigMap(
886
+ load,
887
+ {[TABLE_ID]: null, [ROW_ID_COLUMN_NAME]: DEFAULT_ROW_ID_COLUMN_NAME},
888
+ TABLE_ID,
889
+ (tableName) => collHas(excludedTableNames, tableName),
890
+ (tableName) => setAdd(managedTableNames, tableName),
891
+ ),
892
+ getDefaultedTabularConfigMap(
893
+ save,
894
+ {
895
+ [TABLE_NAME]: null,
896
+ [ROW_ID_COLUMN_NAME]: DEFAULT_ROW_ID_COLUMN_NAME,
897
+ [DELETE_EMPTY_COLUMNS]: 0,
898
+ [DELETE_EMPTY_TABLE]: 0,
899
+ },
900
+ TABLE_NAME,
901
+ (_, tableName) => collHas(excludedTableNames, tableName),
902
+ (_, tableName) => setAdd(managedTableNames, tableName),
903
+ ),
904
+ valuesConfig,
905
+ ];
906
+ return [0, autoLoadIntervalSeconds, tabularConfig, managedTableNames];
907
+ };
908
+
909
+ const createCustomSqlitePersister = (
910
+ store,
911
+ configOrStoreTableName,
912
+ rawExecuteCommand,
913
+ addChangeListener,
914
+ delChangeListener,
915
+ onSqlCommand,
916
+ onIgnoredError,
917
+ destroy,
918
+ persist,
919
+ thing,
920
+ getThing = 'getDb',
921
+ orReplace,
922
+ ) => {
923
+ let dataVersion;
924
+ let schemaVersion;
925
+ let totalChanges;
926
+ const executeCommand = getWrappedCommand(rawExecuteCommand, onSqlCommand);
927
+ const [
928
+ isJson,
929
+ autoLoadIntervalSeconds,
930
+ defaultedConfig,
931
+ managedTableNamesSet,
932
+ ] = getConfigStructures(configOrStoreTableName);
933
+ const addPersisterListener = (listener) => {
934
+ let interval;
935
+ const startPolling = () =>
936
+ (interval = startInterval(async () => {
937
+ try {
938
+ const [{d, s, c}] = await executeCommand(
939
+ // eslint-disable-next-line max-len
940
+ `${SELECT} ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
941
+ );
942
+ if (d != dataVersion || s != schemaVersion || c != totalChanges) {
943
+ if (dataVersion != null) {
944
+ listener();
945
+ }
946
+ dataVersion = d;
947
+ schemaVersion = s;
948
+ totalChanges = c;
949
+ }
950
+ } catch {}
951
+ }, autoLoadIntervalSeconds));
952
+ const stopPolling = () => {
953
+ dataVersion = schemaVersion = totalChanges = null;
954
+ stopInterval(interval);
955
+ };
956
+ const listeningHandle = addChangeListener((tableName) => {
957
+ if (managedTableNamesSet.has(tableName)) {
958
+ stopPolling();
959
+ listener();
960
+ startPolling();
961
+ }
962
+ });
963
+ startPolling();
964
+ return () => {
965
+ stopPolling();
966
+ delChangeListener(listeningHandle);
967
+ };
968
+ };
969
+ const delPersisterListener = (stopPollingAndDelUpdateListener) =>
970
+ stopPollingAndDelUpdateListener();
971
+ return (isJson ? createJsonPersister : createTabularPersister)(
972
+ store,
973
+ executeCommand,
974
+ addPersisterListener,
975
+ delPersisterListener,
976
+ onIgnoredError,
977
+ destroy,
978
+ persist,
979
+ defaultedConfig,
980
+ collValues(managedTableNamesSet),
981
+ async (executeCommand2, managedTableNames) =>
982
+ await executeCommand2(
983
+ // eslint-disable-next-line max-len
984
+ `${SELECT} t.name tn,c.name cn ${FROM}${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
985
+ managedTableNames,
986
+ ),
987
+ thing,
988
+ getThing,
989
+ EMPTY_STRING,
990
+ orReplace,
991
+ (cellOrValue) =>
992
+ cellOrValue === true ? 1 : cellOrValue === false ? 0 : cellOrValue,
993
+ void 0,
994
+ );
995
+ };
996
+
997
+ const EVENT_CHANNEL = TINYBASE;
998
+ const EVENT_REGEX = /^([cd]:)(.+)/;
999
+ const CHANGE_DATA_TRIGGER = TINYBASE + '_data';
1000
+ const CREATE_TABLE_TRIGGER = TINYBASE + '_table';
1001
+ const createCustomPostgreSqlPersister = (
1002
+ store,
1003
+ configOrStoreTableName,
1004
+ rawExecuteCommand,
1005
+ addChangeListener,
1006
+ delChangeListener,
1007
+ onSqlCommand,
1008
+ onIgnoredError,
1009
+ destroy,
1010
+ persist,
1011
+ thing,
1012
+ getThing = 'getDb',
1013
+ ) => {
1014
+ const executeCommand = getWrappedCommand(rawExecuteCommand, onSqlCommand);
1015
+ const [isJson, , defaultedConfig, managedTableNamesSet] =
1016
+ getConfigStructures(configOrStoreTableName);
1017
+ const addDataTrigger = async (tableName) => {
1018
+ await executeCommand(
1019
+ // eslint-disable-next-line max-len
1020
+ `CREATE OR REPLACE TRIGGER ${escapeId(CHANGE_DATA_TRIGGER + '_' + tableName)} AFTER INSERT OR UPDATE OR DELETE ON ${escapeId(tableName)} EXECUTE FUNCTION ${CHANGE_DATA_TRIGGER}()`,
1021
+ );
1022
+ };
1023
+ const addPersisterListener = async (listener) => {
1024
+ await executeCommand(
1025
+ // eslint-disable-next-line max-len
1026
+ `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;`,
1027
+ );
1028
+ try {
1029
+ await executeCommand(
1030
+ // eslint-disable-next-line max-len
1031
+ `CREATE EVENT TRIGGER ${CREATE_TABLE_TRIGGER} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${CREATE_TABLE_TRIGGER}();`,
1032
+ );
1033
+ } catch {}
1034
+ await executeCommand(
1035
+ // eslint-disable-next-line max-len
1036
+ `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;`,
1037
+ );
1038
+ await promiseAll(
1039
+ arrayMap(collValues(managedTableNamesSet), async (tableName) => {
1040
+ await executeCommand(
1041
+ // eslint-disable-next-line max-len
1042
+ `CREATE TABLE IF NOT EXISTS ${escapeId(tableName)}("_id"text PRIMARY KEY)`,
1043
+ );
1044
+ await addDataTrigger(tableName);
1045
+ }),
1046
+ );
1047
+ return await addChangeListener(
1048
+ EVENT_CHANNEL,
1049
+ async (prefixAndTableName) =>
1050
+ await ifNotUndefined(
1051
+ strMatch(prefixAndTableName, EVENT_REGEX),
1052
+ async ([, eventType, tableName]) => {
1053
+ if (collHas(managedTableNamesSet, tableName)) {
1054
+ if (eventType == 'c:') {
1055
+ await addDataTrigger(tableName);
1056
+ }
1057
+ listener();
1058
+ }
1059
+ },
1060
+ ),
1061
+ );
1062
+ };
1063
+ const delPersisterListener = delChangeListener;
1064
+ return (isJson ? createJsonPersister : createTabularPersister)(
1065
+ store,
1066
+ executeCommand,
1067
+ addPersisterListener,
1068
+ delPersisterListener,
1069
+ onIgnoredError,
1070
+ destroy,
1071
+ persist,
1072
+ defaultedConfig,
1073
+ collValues(managedTableNamesSet),
1074
+ async (executeCommand2, managedTableNames) =>
1075
+ await executeCommand2(
1076
+ // eslint-disable-next-line max-len
1077
+ `${SELECT} table_name tn,column_name cn FROM information_schema.columns ${WHERE} table_schema='public'AND table_name IN(${getPlaceholders(managedTableNames)})`,
1078
+ managedTableNames,
1079
+ ),
1080
+ thing,
1081
+ getThing,
1082
+ 'text',
1083
+ 0,
1084
+ (cellOrValue) => jsonString(cellOrValue),
1085
+ (field) => jsonParse(field),
1086
+ );
1087
+ };
1088
+
256
1089
  exports.Persists = Persists;
257
1090
  exports.createCustomPersister = createCustomPersister;
1091
+ exports.createCustomPostgreSqlPersister = createCustomPostgreSqlPersister;
1092
+ exports.createCustomSqlitePersister = createCustomSqlitePersister;
258
1093
  });