tinybase 5.4.6 → 5.4.7

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 (627) hide show
  1. package/cjs/es6/index.cjs +13 -11
  2. package/cjs/es6/mergeable-store/index.cjs +12 -10
  3. package/cjs/es6/mergeable-store/with-schemas/index.cjs +12 -10
  4. package/cjs/es6/min/index.cjs +1 -1
  5. package/cjs/es6/min/index.cjs.gz +0 -0
  6. package/cjs/es6/min/mergeable-store/index.cjs +1 -1
  7. package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
  8. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
  9. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  10. package/cjs/es6/min/persisters/index.cjs +1 -1
  11. package/cjs/es6/min/persisters/index.cjs.gz +0 -0
  12. package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -1
  13. package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
  14. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  15. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  16. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  17. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  18. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  19. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  20. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -1
  21. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  22. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  23. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  24. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  25. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  26. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  27. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  28. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -1
  29. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  30. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  31. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  32. package/cjs/es6/min/persisters/persister-pglite/index.cjs +1 -1
  33. package/cjs/es6/min/persisters/persister-pglite/index.cjs.gz +0 -0
  34. package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
  35. package/cjs/es6/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
  36. package/cjs/es6/min/persisters/persister-postgres/index.cjs +1 -1
  37. package/cjs/es6/min/persisters/persister-postgres/index.cjs.gz +0 -0
  38. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  39. package/cjs/es6/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  40. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -1
  41. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  42. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  43. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  44. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  45. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  46. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  47. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  48. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -1
  49. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  50. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  51. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  52. package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -1
  53. package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
  54. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  55. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  56. package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -1
  57. package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
  58. package/cjs/es6/min/queries/index.cjs +1 -1
  59. package/cjs/es6/min/queries/index.cjs.gz +0 -0
  60. package/cjs/es6/min/queries/with-schemas/index.cjs +1 -1
  61. package/cjs/es6/min/queries/with-schemas/index.cjs.gz +0 -0
  62. package/cjs/es6/min/store/index.cjs +1 -1
  63. package/cjs/es6/min/store/index.cjs.gz +0 -0
  64. package/cjs/es6/min/store/with-schemas/index.cjs +1 -1
  65. package/cjs/es6/min/store/with-schemas/index.cjs.gz +0 -0
  66. package/cjs/es6/min/ui-react-inspector/index.cjs +1 -1
  67. package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
  68. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  69. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  70. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  71. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  72. package/cjs/es6/persisters/index.cjs +3 -3
  73. package/cjs/es6/persisters/persister-automerge/index.cjs +8 -6
  74. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +8 -6
  75. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +3 -3
  76. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +3 -3
  77. package/cjs/es6/persisters/persister-electric-sql/index.cjs +3 -3
  78. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +3 -3
  79. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +3 -3
  80. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +3 -3
  81. package/cjs/es6/persisters/persister-libsql/index.cjs +3 -3
  82. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +3 -3
  83. package/cjs/es6/persisters/persister-pglite/index.cjs +3 -3
  84. package/cjs/es6/persisters/persister-pglite/with-schemas/index.cjs +3 -3
  85. package/cjs/es6/persisters/persister-postgres/index.cjs +3 -3
  86. package/cjs/es6/persisters/persister-postgres/with-schemas/index.cjs +3 -3
  87. package/cjs/es6/persisters/persister-powersync/index.cjs +3 -3
  88. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +3 -3
  89. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +3 -3
  90. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +3 -3
  91. package/cjs/es6/persisters/persister-sqlite3/index.cjs +3 -3
  92. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +3 -3
  93. package/cjs/es6/persisters/persister-yjs/index.cjs +7 -5
  94. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +7 -5
  95. package/cjs/es6/persisters/with-schemas/index.cjs +3 -3
  96. package/cjs/es6/queries/index.cjs +4 -1
  97. package/cjs/es6/queries/with-schemas/index.cjs +4 -1
  98. package/cjs/es6/store/index.cjs +14 -9
  99. package/cjs/es6/store/with-schemas/index.cjs +14 -9
  100. package/cjs/es6/tools/index.cjs +4 -4
  101. package/cjs/es6/tools/with-schemas/index.cjs +4 -4
  102. package/cjs/es6/ui-react-inspector/index.cjs +11 -9
  103. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +11 -9
  104. package/cjs/es6/with-schemas/index.cjs +13 -11
  105. package/cjs/index.cjs +13 -11
  106. package/cjs/mergeable-store/index.cjs +12 -10
  107. package/cjs/mergeable-store/with-schemas/index.cjs +12 -10
  108. package/cjs/min/index.cjs +1 -1
  109. package/cjs/min/index.cjs.gz +0 -0
  110. package/cjs/min/mergeable-store/index.cjs +1 -1
  111. package/cjs/min/mergeable-store/index.cjs.gz +0 -0
  112. package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
  113. package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  114. package/cjs/min/persisters/index.cjs +1 -1
  115. package/cjs/min/persisters/index.cjs.gz +0 -0
  116. package/cjs/min/persisters/persister-automerge/index.cjs +1 -1
  117. package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
  118. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -1
  119. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  120. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -1
  121. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  122. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -1
  123. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  124. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -1
  125. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  126. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -1
  127. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  128. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  129. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  130. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  131. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  132. package/cjs/min/persisters/persister-libsql/index.cjs +1 -1
  133. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  134. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -1
  135. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  136. package/cjs/min/persisters/persister-pglite/index.cjs +1 -1
  137. package/cjs/min/persisters/persister-pglite/index.cjs.gz +0 -0
  138. package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs +1 -1
  139. package/cjs/min/persisters/persister-pglite/with-schemas/index.cjs.gz +0 -0
  140. package/cjs/min/persisters/persister-postgres/index.cjs +1 -1
  141. package/cjs/min/persisters/persister-postgres/index.cjs.gz +0 -0
  142. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs +1 -1
  143. package/cjs/min/persisters/persister-postgres/with-schemas/index.cjs.gz +0 -0
  144. package/cjs/min/persisters/persister-powersync/index.cjs +1 -1
  145. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  146. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -1
  147. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  148. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -1
  149. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  150. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -1
  151. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  152. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -1
  153. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  154. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -1
  155. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  156. package/cjs/min/persisters/persister-yjs/index.cjs +1 -1
  157. package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
  158. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -1
  159. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  160. package/cjs/min/persisters/with-schemas/index.cjs +1 -1
  161. package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
  162. package/cjs/min/queries/index.cjs +1 -1
  163. package/cjs/min/queries/index.cjs.gz +0 -0
  164. package/cjs/min/queries/with-schemas/index.cjs +1 -1
  165. package/cjs/min/queries/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/min/store/index.cjs +1 -1
  167. package/cjs/min/store/index.cjs.gz +0 -0
  168. package/cjs/min/store/with-schemas/index.cjs +1 -1
  169. package/cjs/min/store/with-schemas/index.cjs.gz +0 -0
  170. package/cjs/min/ui-react-inspector/index.cjs +1 -1
  171. package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
  172. package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -1
  173. package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  174. package/cjs/min/with-schemas/index.cjs +1 -1
  175. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  176. package/cjs/persisters/index.cjs +3 -3
  177. package/cjs/persisters/persister-automerge/index.cjs +8 -6
  178. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +8 -6
  179. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +3 -3
  180. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +3 -3
  181. package/cjs/persisters/persister-electric-sql/index.cjs +3 -3
  182. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +3 -3
  183. package/cjs/persisters/persister-expo-sqlite/index.cjs +3 -3
  184. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +3 -3
  185. package/cjs/persisters/persister-libsql/index.cjs +3 -3
  186. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +3 -3
  187. package/cjs/persisters/persister-pglite/index.cjs +3 -3
  188. package/cjs/persisters/persister-pglite/with-schemas/index.cjs +3 -3
  189. package/cjs/persisters/persister-postgres/index.cjs +3 -3
  190. package/cjs/persisters/persister-postgres/with-schemas/index.cjs +3 -3
  191. package/cjs/persisters/persister-powersync/index.cjs +3 -3
  192. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +3 -3
  193. package/cjs/persisters/persister-sqlite-wasm/index.cjs +3 -3
  194. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +3 -3
  195. package/cjs/persisters/persister-sqlite3/index.cjs +3 -3
  196. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +3 -3
  197. package/cjs/persisters/persister-yjs/index.cjs +7 -5
  198. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +7 -5
  199. package/cjs/persisters/with-schemas/index.cjs +3 -3
  200. package/cjs/queries/index.cjs +4 -1
  201. package/cjs/queries/with-schemas/index.cjs +4 -1
  202. package/cjs/store/index.cjs +14 -9
  203. package/cjs/store/with-schemas/index.cjs +14 -9
  204. package/cjs/tools/index.cjs +4 -4
  205. package/cjs/tools/with-schemas/index.cjs +4 -4
  206. package/cjs/ui-react-inspector/index.cjs +11 -9
  207. package/cjs/ui-react-inspector/with-schemas/index.cjs +11 -9
  208. package/cjs/with-schemas/index.cjs +13 -11
  209. package/cli/index.js +4 -1
  210. package/es6/index.js +13 -11
  211. package/es6/mergeable-store/index.js +12 -10
  212. package/es6/mergeable-store/with-schemas/index.js +12 -10
  213. package/es6/min/index.js +1 -1
  214. package/es6/min/index.js.gz +0 -0
  215. package/es6/min/mergeable-store/index.js +1 -1
  216. package/es6/min/mergeable-store/index.js.gz +0 -0
  217. package/es6/min/mergeable-store/with-schemas/index.js +1 -1
  218. package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  219. package/es6/min/persisters/index.js +1 -1
  220. package/es6/min/persisters/index.js.gz +0 -0
  221. package/es6/min/persisters/persister-automerge/index.js +1 -1
  222. package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  223. package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  224. package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  225. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  226. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  227. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  228. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  229. package/es6/min/persisters/persister-electric-sql/index.js +1 -1
  230. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  231. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  232. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  233. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  234. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  235. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  236. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  237. package/es6/min/persisters/persister-libsql/index.js +1 -1
  238. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  239. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  240. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  241. package/es6/min/persisters/persister-pglite/index.js +1 -1
  242. package/es6/min/persisters/persister-pglite/index.js.gz +0 -0
  243. package/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  244. package/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  245. package/es6/min/persisters/persister-postgres/index.js +1 -1
  246. package/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  247. package/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  248. package/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  249. package/es6/min/persisters/persister-powersync/index.js +1 -1
  250. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  251. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  252. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  253. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  254. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  255. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  256. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  257. package/es6/min/persisters/persister-sqlite3/index.js +1 -1
  258. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  259. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  260. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  261. package/es6/min/persisters/persister-yjs/index.js +1 -1
  262. package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  263. package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  264. package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  265. package/es6/min/persisters/with-schemas/index.js +1 -1
  266. package/es6/min/persisters/with-schemas/index.js.gz +0 -0
  267. package/es6/min/queries/index.js +1 -1
  268. package/es6/min/queries/index.js.gz +0 -0
  269. package/es6/min/queries/with-schemas/index.js +1 -1
  270. package/es6/min/queries/with-schemas/index.js.gz +0 -0
  271. package/es6/min/store/index.js +1 -1
  272. package/es6/min/store/index.js.gz +0 -0
  273. package/es6/min/store/with-schemas/index.js +1 -1
  274. package/es6/min/store/with-schemas/index.js.gz +0 -0
  275. package/es6/min/ui-react-inspector/index.js +1 -1
  276. package/es6/min/ui-react-inspector/index.js.gz +0 -0
  277. package/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  278. package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  279. package/es6/min/with-schemas/index.js +1 -1
  280. package/es6/min/with-schemas/index.js.gz +0 -0
  281. package/es6/persisters/index.js +3 -3
  282. package/es6/persisters/persister-automerge/index.js +8 -6
  283. package/es6/persisters/persister-automerge/with-schemas/index.js +8 -6
  284. package/es6/persisters/persister-cr-sqlite-wasm/index.js +3 -3
  285. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
  286. package/es6/persisters/persister-electric-sql/index.js +3 -3
  287. package/es6/persisters/persister-electric-sql/with-schemas/index.js +3 -3
  288. package/es6/persisters/persister-expo-sqlite/index.js +3 -3
  289. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
  290. package/es6/persisters/persister-libsql/index.js +3 -3
  291. package/es6/persisters/persister-libsql/with-schemas/index.js +3 -3
  292. package/es6/persisters/persister-pglite/index.js +3 -3
  293. package/es6/persisters/persister-pglite/with-schemas/index.js +3 -3
  294. package/es6/persisters/persister-postgres/index.js +3 -3
  295. package/es6/persisters/persister-postgres/with-schemas/index.js +3 -3
  296. package/es6/persisters/persister-powersync/index.js +3 -3
  297. package/es6/persisters/persister-powersync/with-schemas/index.js +3 -3
  298. package/es6/persisters/persister-sqlite-wasm/index.js +3 -3
  299. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
  300. package/es6/persisters/persister-sqlite3/index.js +3 -3
  301. package/es6/persisters/persister-sqlite3/with-schemas/index.js +3 -3
  302. package/es6/persisters/persister-yjs/index.js +7 -5
  303. package/es6/persisters/persister-yjs/with-schemas/index.js +7 -5
  304. package/es6/persisters/with-schemas/index.js +3 -3
  305. package/es6/queries/index.js +4 -1
  306. package/es6/queries/with-schemas/index.js +4 -1
  307. package/es6/store/index.js +14 -9
  308. package/es6/store/with-schemas/index.js +14 -9
  309. package/es6/tools/index.js +4 -4
  310. package/es6/tools/with-schemas/index.js +4 -4
  311. package/es6/ui-react-inspector/index.js +11 -9
  312. package/es6/ui-react-inspector/with-schemas/index.js +11 -9
  313. package/es6/with-schemas/index.js +13 -11
  314. package/index.js +13 -11
  315. package/mergeable-store/index.js +12 -10
  316. package/mergeable-store/with-schemas/index.js +12 -10
  317. package/min/index.js +1 -1
  318. package/min/index.js.gz +0 -0
  319. package/min/mergeable-store/index.js +1 -1
  320. package/min/mergeable-store/index.js.gz +0 -0
  321. package/min/mergeable-store/with-schemas/index.js +1 -1
  322. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  323. package/min/persisters/index.js +1 -1
  324. package/min/persisters/index.js.gz +0 -0
  325. package/min/persisters/persister-automerge/index.js +1 -1
  326. package/min/persisters/persister-automerge/index.js.gz +0 -0
  327. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  328. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  329. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  330. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  331. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  332. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  333. package/min/persisters/persister-electric-sql/index.js +1 -1
  334. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  335. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  336. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  337. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  338. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  339. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  340. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  341. package/min/persisters/persister-libsql/index.js +1 -1
  342. package/min/persisters/persister-libsql/index.js.gz +0 -0
  343. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  344. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  345. package/min/persisters/persister-pglite/index.js +1 -1
  346. package/min/persisters/persister-pglite/index.js.gz +0 -0
  347. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  348. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  349. package/min/persisters/persister-postgres/index.js +1 -1
  350. package/min/persisters/persister-postgres/index.js.gz +0 -0
  351. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  352. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  353. package/min/persisters/persister-powersync/index.js +1 -1
  354. package/min/persisters/persister-powersync/index.js.gz +0 -0
  355. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  356. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  357. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  358. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  359. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  360. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  361. package/min/persisters/persister-sqlite3/index.js +1 -1
  362. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  363. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  364. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  365. package/min/persisters/persister-yjs/index.js +1 -1
  366. package/min/persisters/persister-yjs/index.js.gz +0 -0
  367. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  368. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  369. package/min/persisters/with-schemas/index.js +1 -1
  370. package/min/persisters/with-schemas/index.js.gz +0 -0
  371. package/min/queries/index.js +1 -1
  372. package/min/queries/index.js.gz +0 -0
  373. package/min/queries/with-schemas/index.js +1 -1
  374. package/min/queries/with-schemas/index.js.gz +0 -0
  375. package/min/store/index.js +1 -1
  376. package/min/store/index.js.gz +0 -0
  377. package/min/store/with-schemas/index.js +1 -1
  378. package/min/store/with-schemas/index.js.gz +0 -0
  379. package/min/ui-react-inspector/index.js +1 -1
  380. package/min/ui-react-inspector/index.js.gz +0 -0
  381. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  382. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  383. package/min/with-schemas/index.js +1 -1
  384. package/min/with-schemas/index.js.gz +0 -0
  385. package/package.json +7 -7
  386. package/persisters/index.js +3 -3
  387. package/persisters/persister-automerge/index.js +8 -6
  388. package/persisters/persister-automerge/with-schemas/index.js +8 -6
  389. package/persisters/persister-cr-sqlite-wasm/index.js +3 -3
  390. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
  391. package/persisters/persister-electric-sql/index.js +3 -3
  392. package/persisters/persister-electric-sql/with-schemas/index.js +3 -3
  393. package/persisters/persister-expo-sqlite/index.js +3 -3
  394. package/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
  395. package/persisters/persister-libsql/index.js +3 -3
  396. package/persisters/persister-libsql/with-schemas/index.js +3 -3
  397. package/persisters/persister-pglite/index.js +3 -3
  398. package/persisters/persister-pglite/with-schemas/index.js +3 -3
  399. package/persisters/persister-postgres/index.js +3 -3
  400. package/persisters/persister-postgres/with-schemas/index.js +3 -3
  401. package/persisters/persister-powersync/index.js +3 -3
  402. package/persisters/persister-powersync/with-schemas/index.js +3 -3
  403. package/persisters/persister-sqlite-wasm/index.js +3 -3
  404. package/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
  405. package/persisters/persister-sqlite3/index.js +3 -3
  406. package/persisters/persister-sqlite3/with-schemas/index.js +3 -3
  407. package/persisters/persister-yjs/index.js +7 -5
  408. package/persisters/persister-yjs/with-schemas/index.js +7 -5
  409. package/persisters/with-schemas/index.js +3 -3
  410. package/queries/index.js +4 -1
  411. package/queries/with-schemas/index.js +4 -1
  412. package/readme.md +2 -2
  413. package/store/index.js +14 -9
  414. package/store/with-schemas/index.js +14 -9
  415. package/tools/index.js +4 -4
  416. package/tools/with-schemas/index.js +4 -4
  417. package/ui-react-inspector/index.js +11 -9
  418. package/ui-react-inspector/with-schemas/index.js +11 -9
  419. package/umd/es6/index.js +13 -11
  420. package/umd/es6/mergeable-store/index.js +12 -10
  421. package/umd/es6/mergeable-store/with-schemas/index.js +12 -10
  422. package/umd/es6/min/index.js +1 -1
  423. package/umd/es6/min/index.js.gz +0 -0
  424. package/umd/es6/min/mergeable-store/index.js +1 -1
  425. package/umd/es6/min/mergeable-store/index.js.gz +0 -0
  426. package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
  427. package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  428. package/umd/es6/min/persisters/index.js +1 -1
  429. package/umd/es6/min/persisters/index.js.gz +0 -0
  430. package/umd/es6/min/persisters/persister-automerge/index.js +1 -1
  431. package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  432. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  433. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  434. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  435. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  436. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  437. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  438. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -1
  439. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  440. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  441. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  442. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  443. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  444. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  445. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  446. package/umd/es6/min/persisters/persister-libsql/index.js +1 -1
  447. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  448. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  449. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  450. package/umd/es6/min/persisters/persister-pglite/index.js +1 -1
  451. package/umd/es6/min/persisters/persister-pglite/index.js.gz +0 -0
  452. package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  453. package/umd/es6/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  454. package/umd/es6/min/persisters/persister-postgres/index.js +1 -1
  455. package/umd/es6/min/persisters/persister-postgres/index.js.gz +0 -0
  456. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  457. package/umd/es6/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  458. package/umd/es6/min/persisters/persister-powersync/index.js +1 -1
  459. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  460. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  461. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  462. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -1
  463. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  464. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  465. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  466. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -1
  467. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  468. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  469. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  470. package/umd/es6/min/persisters/persister-yjs/index.js +1 -1
  471. package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  472. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  473. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  474. package/umd/es6/min/persisters/with-schemas/index.js +1 -1
  475. package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
  476. package/umd/es6/min/queries/index.js +1 -1
  477. package/umd/es6/min/queries/index.js.gz +0 -0
  478. package/umd/es6/min/queries/with-schemas/index.js +1 -1
  479. package/umd/es6/min/queries/with-schemas/index.js.gz +0 -0
  480. package/umd/es6/min/store/index.js +1 -1
  481. package/umd/es6/min/store/index.js.gz +0 -0
  482. package/umd/es6/min/store/with-schemas/index.js +1 -1
  483. package/umd/es6/min/store/with-schemas/index.js.gz +0 -0
  484. package/umd/es6/min/ui-react-inspector/index.js +1 -1
  485. package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
  486. package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -1
  487. package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  488. package/umd/es6/min/with-schemas/index.js +1 -1
  489. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  490. package/umd/es6/persisters/index.js +3 -3
  491. package/umd/es6/persisters/persister-automerge/index.js +8 -6
  492. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +8 -6
  493. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +3 -3
  494. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
  495. package/umd/es6/persisters/persister-electric-sql/index.js +3 -3
  496. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +3 -3
  497. package/umd/es6/persisters/persister-expo-sqlite/index.js +3 -3
  498. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
  499. package/umd/es6/persisters/persister-libsql/index.js +3 -3
  500. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +3 -3
  501. package/umd/es6/persisters/persister-pglite/index.js +3 -3
  502. package/umd/es6/persisters/persister-pglite/with-schemas/index.js +3 -3
  503. package/umd/es6/persisters/persister-postgres/index.js +3 -3
  504. package/umd/es6/persisters/persister-postgres/with-schemas/index.js +3 -3
  505. package/umd/es6/persisters/persister-powersync/index.js +3 -3
  506. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +3 -3
  507. package/umd/es6/persisters/persister-sqlite-wasm/index.js +3 -3
  508. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
  509. package/umd/es6/persisters/persister-sqlite3/index.js +3 -3
  510. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +3 -3
  511. package/umd/es6/persisters/persister-yjs/index.js +7 -5
  512. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +7 -5
  513. package/umd/es6/persisters/with-schemas/index.js +3 -3
  514. package/umd/es6/queries/index.js +4 -1
  515. package/umd/es6/queries/with-schemas/index.js +4 -1
  516. package/umd/es6/store/index.js +14 -9
  517. package/umd/es6/store/with-schemas/index.js +14 -9
  518. package/umd/es6/tools/index.js +4 -4
  519. package/umd/es6/tools/with-schemas/index.js +4 -4
  520. package/umd/es6/ui-react-inspector/index.js +11 -9
  521. package/umd/es6/ui-react-inspector/with-schemas/index.js +11 -9
  522. package/umd/es6/with-schemas/index.js +13 -11
  523. package/umd/index.js +13 -11
  524. package/umd/mergeable-store/index.js +12 -10
  525. package/umd/mergeable-store/with-schemas/index.js +12 -10
  526. package/umd/min/index.js +1 -1
  527. package/umd/min/index.js.gz +0 -0
  528. package/umd/min/mergeable-store/index.js +1 -1
  529. package/umd/min/mergeable-store/index.js.gz +0 -0
  530. package/umd/min/mergeable-store/with-schemas/index.js +1 -1
  531. package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
  532. package/umd/min/persisters/index.js +1 -1
  533. package/umd/min/persisters/index.js.gz +0 -0
  534. package/umd/min/persisters/persister-automerge/index.js +1 -1
  535. package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
  536. package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  537. package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  538. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  539. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  540. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  541. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  542. package/umd/min/persisters/persister-electric-sql/index.js +1 -1
  543. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  544. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  545. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  546. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  547. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  548. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  549. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  550. package/umd/min/persisters/persister-libsql/index.js +1 -1
  551. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  552. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  553. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  554. package/umd/min/persisters/persister-pglite/index.js +1 -1
  555. package/umd/min/persisters/persister-pglite/index.js.gz +0 -0
  556. package/umd/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  557. package/umd/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  558. package/umd/min/persisters/persister-postgres/index.js +1 -1
  559. package/umd/min/persisters/persister-postgres/index.js.gz +0 -0
  560. package/umd/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  561. package/umd/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  562. package/umd/min/persisters/persister-powersync/index.js +1 -1
  563. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  564. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  565. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  566. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -1
  567. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  568. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  569. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  570. package/umd/min/persisters/persister-sqlite3/index.js +1 -1
  571. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  572. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  573. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  574. package/umd/min/persisters/persister-yjs/index.js +1 -1
  575. package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
  576. package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  577. package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  578. package/umd/min/persisters/with-schemas/index.js +1 -1
  579. package/umd/min/persisters/with-schemas/index.js.gz +0 -0
  580. package/umd/min/queries/index.js +1 -1
  581. package/umd/min/queries/index.js.gz +0 -0
  582. package/umd/min/queries/with-schemas/index.js +1 -1
  583. package/umd/min/queries/with-schemas/index.js.gz +0 -0
  584. package/umd/min/store/index.js +1 -1
  585. package/umd/min/store/index.js.gz +0 -0
  586. package/umd/min/store/with-schemas/index.js +1 -1
  587. package/umd/min/store/with-schemas/index.js.gz +0 -0
  588. package/umd/min/ui-react-inspector/index.js +1 -1
  589. package/umd/min/ui-react-inspector/index.js.gz +0 -0
  590. package/umd/min/ui-react-inspector/with-schemas/index.js +1 -1
  591. package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  592. package/umd/min/with-schemas/index.js +1 -1
  593. package/umd/min/with-schemas/index.js.gz +0 -0
  594. package/umd/persisters/index.js +3 -3
  595. package/umd/persisters/persister-automerge/index.js +8 -6
  596. package/umd/persisters/persister-automerge/with-schemas/index.js +8 -6
  597. package/umd/persisters/persister-cr-sqlite-wasm/index.js +3 -3
  598. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +3 -3
  599. package/umd/persisters/persister-electric-sql/index.js +3 -3
  600. package/umd/persisters/persister-electric-sql/with-schemas/index.js +3 -3
  601. package/umd/persisters/persister-expo-sqlite/index.js +3 -3
  602. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +3 -3
  603. package/umd/persisters/persister-libsql/index.js +3 -3
  604. package/umd/persisters/persister-libsql/with-schemas/index.js +3 -3
  605. package/umd/persisters/persister-pglite/index.js +3 -3
  606. package/umd/persisters/persister-pglite/with-schemas/index.js +3 -3
  607. package/umd/persisters/persister-postgres/index.js +3 -3
  608. package/umd/persisters/persister-postgres/with-schemas/index.js +3 -3
  609. package/umd/persisters/persister-powersync/index.js +3 -3
  610. package/umd/persisters/persister-powersync/with-schemas/index.js +3 -3
  611. package/umd/persisters/persister-sqlite-wasm/index.js +3 -3
  612. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +3 -3
  613. package/umd/persisters/persister-sqlite3/index.js +3 -3
  614. package/umd/persisters/persister-sqlite3/with-schemas/index.js +3 -3
  615. package/umd/persisters/persister-yjs/index.js +7 -5
  616. package/umd/persisters/persister-yjs/with-schemas/index.js +7 -5
  617. package/umd/persisters/with-schemas/index.js +3 -3
  618. package/umd/queries/index.js +4 -1
  619. package/umd/queries/with-schemas/index.js +4 -1
  620. package/umd/store/index.js +14 -9
  621. package/umd/store/with-schemas/index.js +14 -9
  622. package/umd/tools/index.js +4 -4
  623. package/umd/tools/with-schemas/index.js +4 -4
  624. package/umd/ui-react-inspector/index.js +11 -9
  625. package/umd/ui-react-inspector/with-schemas/index.js +11 -9
  626. package/umd/with-schemas/index.js +13 -11
  627. package/with-schemas/index.js +13 -11
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",O="_id",f="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",I=f+"*FROM",S=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=t=>F.values(t),W=t=>y(B(t)),k=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==W(t),z=JSON.stringify,J=JSON.parse,K=t=>new Map(t),V=(t,a)=>t?.get(a),Q=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),Z=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),tt=(t,a,e,n)=>(_(t,a)?n?.(V(t,a)):Z(t,a,e()),V(t,a)),at=(t,a,e,n,s=0)=>r((e?tt:V)(t,a[s],s>y(a)-2?e:K),(i=>{if(s>y(a)-2)return n?.(i)&&Z(t,a[s]),i;const o=at(i,a,e,n,s+1);return b(i)&&Z(t,a[s]),o})),et=t=>new Set(l(t)||o(t)?t:[t]),nt=(t,a)=>t?.add(a),st=/^\d+$/,it=K(),ot=K(),rt=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,O=0,f=0;tt(it,T,(()=>0)),tt(ot,T,(()=>[]));const L=K(),[v,$,m,I,S]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!k(t)||!k(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!k(t)||!k(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{st.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=K();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return Z(n,c,[e,s,i,o,r]),nt(at(s,i??[""],et),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(V(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>V(n,a)[0](t,...e??[],...s))))),t=>r(V(n,t),(([,a,s])=>(at(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),Z(n,t),e(t),s))),a=>r(V(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),O++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?S(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&S(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),f++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(V(ot,T),...t),await(async()=>{if(!V(it,T)){for(Z(it,T,1);!o(R=p(V(ot,T)));)try{await R()}catch(t){i?.(t)}Z(it,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),O++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();I(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(V(ot,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:O,saves:f}),...E};return j(q)},ct=(t,a,e,s,i,r=lt,c,l)=>{const E=K();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>nt(tt(E,t,et),a)))},async(a,e)=>((t,a)=>_(V(E,t),a))(a,e)?x(N(R(await t(I+S(a)),(t=>{return[t[e],l?(a=Y(t,e),n=l,x(q(a,((t,a)=>[a,n(t,a)])))):Y(t,e)];var a,n})),(([t,a])=>!o(t)&&!k(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=et();q(s??{},(t=>R(B(t??{}),(t=>nt(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+S(a)),void Z(E,a);const C=V(E,a),O=et(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(O,n)||(await t($+S(a)+"ADD"+S(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+S(a)+`(${S(e)})`),nt(C,n))}))):(await t("CREATE "+v+S(a)+`(${S(e)}${i} PRIMARY KEY${T(R(p,(t=>n+S(t)+i)))});`),Z(E,a,et([e,...p])))),await w([...!d&&l?R(P(O),(async n=>{n!=e&&(await t($+S(a)+"DROP"+S(n)),U(C,n))})):[]]),d)o(s)?await t(m+S(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+S(a)+L+S(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(H(n),c):H(n)},C)})));else if(A(p))_(E,a)&&await t(m+S(a)+L+" true");else{const n=N(P(V(E,a)),(t=>t!=e)),i={},o=[];q(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+S(a)+L+S(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},lt=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+S(a)+"("+((...t)=>T(R(t,S),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+S(e)+")DO UPDATE SET"+T(R(s,(t=>S(t)+"=excluded."+S(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=ct(a,E,y,s,u,T),p=rt(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",J(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,z(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},yt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,f,L)=>{const[v,$,m,I]=ct(a,u,T,s,g,p,f,L),S=async(t,a)=>await w(Q(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,O,{[C]:t},!0,!0,a):null,_=rt(t,(async()=>await I((async()=>{await v();const t=await(async()=>x(N(await w(Q(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!k(t[1])))))(),a=await(async()=>E?(await $(d,O))[C]:{})();return k(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await I((async()=>{if(await v(),o(a)){const[a,e]=t();await S(a),await h(e)}else await S(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},wt="ColumnName",dt="store",ut="json",Tt=dt+"TableName",Rt=dt+"Id"+wt,At=dt+wt,Nt="autoLoadIntervalSeconds",gt="rowId"+wt,pt="tableId",Ct="tableName",Ot="deleteEmptyColumns",ft="deleteEmptyTable",Lt={mode:ut,[Nt]:1},vt={load:0,save:0,[Ct]:e+"_values"},$t=(t,a,e,n,s)=>{const i=K();return q(t,((t,r)=>{const l=E(H(X(a,c(t)?{[e]:t}:t)),0,W(a));o(l[0])||n(r,l[0])||(s(r,l[0]),Z(i,r,l))})),i},mt=e,It=/^([cd]:)(.+)/,St=e+"_data",ht=e+"_table";t.createPglitePersister=async(t,a,n,s,i)=>((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(Lt,c(t)?{[Tt]:t}:t??{}))(t),n=a[Nt];if(a.mode==ut){const t=a[Tt]??e;return[1,n,[t,a[Rt]??O,a[At]??dt],et(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(H(X(vt,o)),0,W(vt)),l=r[2],y=et(l),w=et(l);return[0,n,[$t(s,{[pt]:null,[gt]:O},pt,(t=>_(w,t)),(t=>nt(y,t))),$t(i,{[Ct]:null,[gt]:O,[Ot]:0,[ft]:0},Ct,((t,a)=>_(w,a)),((t,a)=>nt(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${S(St+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${S(t)} EXECUTE FUNCTION ${St}()`)};return(N?Et:yt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${ht}()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('${mt}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ht} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ht}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${St}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${mt}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${S(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(mt,(async a=>{return await r((e=a,n=It,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${f} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>z(t)),(t=>J(t)))})(t,n,(async(t,e=[])=>(await a.query(t,e)).rows),(async(t,e)=>await a.listen(t,e)),(async t=>{try{await t()}catch(t){i?.(t)}}),s,i,(()=>0),3,a,"getPglite")},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPglite={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",O="_id",f="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",I=f+"*FROM",S=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=(t,a)=>x(q(t,((t,e)=>[e,a(t,e)]))),W=t=>F.values(t),k=t=>y(B(t)),z=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==k(t),J=JSON.stringify,K=JSON.parse,V=t=>new Map(t),Q=(t,a)=>t?.get(a),Z=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),tt=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),at=(t,a,e,n)=>(_(t,a)?n?.(Q(t,a)):tt(t,a,e()),Q(t,a)),et=(t,a,e,n,s=0)=>r((e?at:Q)(t,a[s],s>y(a)-2?e:V),(i=>{if(s>y(a)-2)return n?.(i)&&tt(t,a[s]),i;const o=et(i,a,e,n,s+1);return b(i)&&tt(t,a[s]),o})),nt=t=>new Set(l(t)||o(t)?t:[t]),st=(t,a)=>t?.add(a),it=/^\d+$/,ot=V(),rt=V(),ct=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,O=0,f=0;at(ot,T,(()=>0)),at(rt,T,(()=>[]));const L=V(),[v,$,m,I,S]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!z(t)||!z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!z(t)||!z(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{it.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=V();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return tt(n,c,[e,s,i,o,r]),st(et(s,i??[""],nt),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(Q(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>Q(n,a)[0](t,...e??[],...s))))),t=>r(Q(n,t),(([,a,s])=>(et(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),tt(n,t),e(t),s))),a=>r(Q(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),O++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?S(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&S(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),f++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(Q(rt,T),...t),await(async()=>{if(!Q(ot,T)){for(tt(ot,T,1);!o(R=p(Q(rt,T)));)try{await R()}catch(t){i?.(t)}tt(ot,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),O++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();I(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(Q(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:O,saves:f}),...E};return j(q)},lt=(t,a,e,s,i,r=Et,c,l)=>{const E=V();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>st(at(E,t,nt),a)))},async(a,e)=>((t,a)=>_(Q(E,t),a))(a,e)?x(N(R(await t(I+S(a)),(t=>[t[e],l?H(Y(t,e),l):Y(t,e)])),(([t,a])=>!o(t)&&!z(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=nt();H(s??{},(t=>R(B(t??{}),(t=>st(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+S(a)),void tt(E,a);const C=Q(E,a),O=nt(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(O,n)||(await t($+S(a)+"ADD"+S(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+S(a)+`(${S(e)})`),st(C,n))}))):(await t("CREATE "+v+S(a)+`(${S(e)}${i} PRIMARY KEY${T(R(p,(t=>n+S(t)+i)))});`),tt(E,a,nt([e,...p])))),await w([...!d&&l?R(P(O),(async n=>{n!=e&&(await t($+S(a)+"DROP"+S(n)),U(C,n))})):[]]),d)o(s)?await t(m+S(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+S(a)+L+S(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(W(n),c):W(n)},C)})));else if(A(p))_(E,a)&&await t(m+S(a)+L+" true");else{const n=N(P(Q(E,a)),(t=>t!=e)),i={},o=[];H(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+S(a)+L+S(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},Et=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+S(a)+"("+((...t)=>T(R(t,S),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+S(e)+")DO UPDATE SET"+T(R(s,(t=>S(t)+"=excluded."+S(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},yt=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=lt(a,E,y,s,u,T),p=ct(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",K(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,J(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},wt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,f,L)=>{const[v,$,m,I]=lt(a,u,T,s,g,p,f,L),S=async(t,a)=>await w(Z(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,O,{[C]:t},!0,!0,a):null,_=ct(t,(async()=>await I((async()=>{await v();const t=await(async()=>x(N(await w(Z(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!z(t[1])))))(),a=await(async()=>E?(await $(d,O))[C]:{})();return z(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await I((async()=>{if(await v(),o(a)){const[a,e]=t();await S(a),await h(e)}else await S(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},dt="ColumnName",ut="store",Tt="json",Rt=ut+"TableName",At=ut+"Id"+dt,Nt=ut+dt,gt="autoLoadIntervalSeconds",pt="rowId"+dt,Ct="tableId",Ot="tableName",ft="deleteEmptyColumns",Lt="deleteEmptyTable",vt={mode:Tt,[gt]:1},$t={load:0,save:0,[Ot]:e+"_values"},mt=(t,a,e,n,s)=>{const i=V();return H(t,((t,r)=>{const l=E(W(X(a,c(t)?{[e]:t}:t)),0,k(a));o(l[0])||n(r,l[0])||(s(r,l[0]),tt(i,r,l))})),i},It=e,St=/^([cd]:)(.+)/,ht=e+"_data",_t=e+"_table";t.createPglitePersister=async(t,a,n,s,i)=>((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Rt]:t}:t??{}))(t),n=a[gt];if(a.mode==Tt){const t=a[Rt]??e;return[1,n,[t,a[At]??O,a[Nt]??ut],nt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(W(X($t,o)),0,k($t)),l=r[2],y=nt(l),w=nt(l);return[0,n,[mt(s,{[Ct]:null,[pt]:O},Ct,(t=>_(w,t)),(t=>st(y,t))),mt(i,{[Ot]:null,[pt]:O,[ft]:0,[Lt]:0},Ot,((t,a)=>_(w,a)),((t,a)=>st(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${S(ht+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${S(t)} EXECUTE FUNCTION ${ht}()`)};return(N?yt:wt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${_t}()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('${It}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${_t} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${_t}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${ht}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${It}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${S(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(It,(async a=>{return await r((e=a,n=St,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${f} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>J(t)),(t=>K(t)))})(t,n,(async(t,e=[])=>(await a.query(t,e)).rows),(async(t,e)=>await a.listen(t,e)),(async t=>{try{await t()}catch(t){i?.(t)}}),s,i,(()=>0),3,a,"getPglite")},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPglite={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",O="_id",f="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",I=f+"*FROM",S=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=t=>F.values(t),W=t=>y(B(t)),k=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==W(t),z=JSON.stringify,J=JSON.parse,K=t=>new Map(t),V=(t,a)=>t?.get(a),Q=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),Z=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),tt=(t,a,e,n)=>(_(t,a)?n?.(V(t,a)):Z(t,a,e()),V(t,a)),at=(t,a,e,n,s=0)=>r((e?tt:V)(t,a[s],s>y(a)-2?e:K),(i=>{if(s>y(a)-2)return n?.(i)&&Z(t,a[s]),i;const o=at(i,a,e,n,s+1);return b(i)&&Z(t,a[s]),o})),et=t=>new Set(l(t)||o(t)?t:[t]),nt=(t,a)=>t?.add(a),st=/^\d+$/,it=K(),ot=K(),rt=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,O=0,f=0;tt(it,T,(()=>0)),tt(ot,T,(()=>[]));const L=K(),[v,$,m,I,S]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!k(t)||!k(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!k(t)||!k(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{st.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=K();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return Z(n,c,[e,s,i,o,r]),nt(at(s,i??[""],et),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(V(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>V(n,a)[0](t,...e??[],...s))))),t=>r(V(n,t),(([,a,s])=>(at(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),Z(n,t),e(t),s))),a=>r(V(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),O++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?S(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&S(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),f++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(V(ot,T),...t),await(async()=>{if(!V(it,T)){for(Z(it,T,1);!o(R=p(V(ot,T)));)try{await R()}catch(t){i?.(t)}Z(it,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),O++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();I(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(V(ot,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:O,saves:f}),...E};return j(q)},ct=(t,a,e,s,i,r=lt,c,l)=>{const E=K();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>nt(tt(E,t,et),a)))},async(a,e)=>((t,a)=>_(V(E,t),a))(a,e)?x(N(R(await t(I+S(a)),(t=>{return[t[e],l?(a=Y(t,e),n=l,x(q(a,((t,a)=>[a,n(t,a)])))):Y(t,e)];var a,n})),(([t,a])=>!o(t)&&!k(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=et();q(s??{},(t=>R(B(t??{}),(t=>nt(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+S(a)),void Z(E,a);const C=V(E,a),O=et(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(O,n)||(await t($+S(a)+"ADD"+S(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+S(a)+`(${S(e)})`),nt(C,n))}))):(await t("CREATE "+v+S(a)+`(${S(e)}${i} PRIMARY KEY${T(R(p,(t=>n+S(t)+i)))});`),Z(E,a,et([e,...p])))),await w([...!d&&l?R(P(O),(async n=>{n!=e&&(await t($+S(a)+"DROP"+S(n)),U(C,n))})):[]]),d)o(s)?await t(m+S(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+S(a)+L+S(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(H(n),c):H(n)},C)})));else if(A(p))_(E,a)&&await t(m+S(a)+L+" true");else{const n=N(P(V(E,a)),(t=>t!=e)),i={},o=[];q(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+S(a)+L+S(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},lt=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+S(a)+"("+((...t)=>T(R(t,S),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+S(e)+")DO UPDATE SET"+T(R(s,(t=>S(t)+"=excluded."+S(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=ct(a,E,y,s,u,T),p=rt(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",J(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,z(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},yt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,f,L)=>{const[v,$,m,I]=ct(a,u,T,s,g,p,f,L),S=async(t,a)=>await w(Q(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,O,{[C]:t},!0,!0,a):null,_=rt(t,(async()=>await I((async()=>{await v();const t=await(async()=>x(N(await w(Q(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!k(t[1])))))(),a=await(async()=>E?(await $(d,O))[C]:{})();return k(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await I((async()=>{if(await v(),o(a)){const[a,e]=t();await S(a),await h(e)}else await S(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},wt="ColumnName",dt="store",ut="json",Tt=dt+"TableName",Rt=dt+"Id"+wt,At=dt+wt,Nt="autoLoadIntervalSeconds",gt="rowId"+wt,pt="tableId",Ct="tableName",Ot="deleteEmptyColumns",ft="deleteEmptyTable",Lt={mode:ut,[Nt]:1},vt={load:0,save:0,[Ct]:e+"_values"},$t=(t,a,e,n,s)=>{const i=K();return q(t,((t,r)=>{const l=E(H(X(a,c(t)?{[e]:t}:t)),0,W(a));o(l[0])||n(r,l[0])||(s(r,l[0]),Z(i,r,l))})),i},mt=e,It=/^([cd]:)(.+)/,St=e+"_data",ht=e+"_table";t.createPglitePersister=async(t,a,n,s,i)=>((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(Lt,c(t)?{[Tt]:t}:t??{}))(t),n=a[Nt];if(a.mode==ut){const t=a[Tt]??e;return[1,n,[t,a[Rt]??O,a[At]??dt],et(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(H(X(vt,o)),0,W(vt)),l=r[2],y=et(l),w=et(l);return[0,n,[$t(s,{[pt]:null,[gt]:O},pt,(t=>_(w,t)),(t=>nt(y,t))),$t(i,{[Ct]:null,[gt]:O,[Ot]:0,[ft]:0},Ct,((t,a)=>_(w,a)),((t,a)=>nt(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${S(St+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${S(t)} EXECUTE FUNCTION ${St}()`)};return(N?Et:yt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${ht}()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('${mt}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ht} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ht}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${St}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${mt}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${S(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(mt,(async a=>{return await r((e=a,n=It,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${f} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>z(t)),(t=>J(t)))})(t,n,(async(t,e=[])=>(await a.query(t,e)).rows),(async(t,e)=>await a.listen(t,e)),(async t=>{try{await t()}catch(t){i?.(t)}}),s,i,(()=>0),3,a,"getPglite")},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPglite={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",O="_id",f="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",I=f+"*FROM",S=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=(t,a)=>x(q(t,((t,e)=>[e,a(t,e)]))),W=t=>F.values(t),k=t=>y(B(t)),z=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==k(t),J=JSON.stringify,K=JSON.parse,V=t=>new Map(t),Q=(t,a)=>t?.get(a),Z=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),tt=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),at=(t,a,e,n)=>(_(t,a)?n?.(Q(t,a)):tt(t,a,e()),Q(t,a)),et=(t,a,e,n,s=0)=>r((e?at:Q)(t,a[s],s>y(a)-2?e:V),(i=>{if(s>y(a)-2)return n?.(i)&&tt(t,a[s]),i;const o=et(i,a,e,n,s+1);return b(i)&&tt(t,a[s]),o})),nt=t=>new Set(l(t)||o(t)?t:[t]),st=(t,a)=>t?.add(a),it=/^\d+$/,ot=V(),rt=V(),ct=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,O=0,f=0;at(ot,T,(()=>0)),at(rt,T,(()=>[]));const L=V(),[v,$,m,I,S]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!z(t)||!z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!z(t)||!z(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{it.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=V();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return tt(n,c,[e,s,i,o,r]),st(et(s,i??[""],nt),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(Q(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>Q(n,a)[0](t,...e??[],...s))))),t=>r(Q(n,t),(([,a,s])=>(et(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),tt(n,t),e(t),s))),a=>r(Q(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),O++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?S(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&S(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),f++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(Q(rt,T),...t),await(async()=>{if(!Q(ot,T)){for(tt(ot,T,1);!o(R=p(Q(rt,T)));)try{await R()}catch(t){i?.(t)}tt(ot,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),O++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();I(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(Q(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:O,saves:f}),...E};return j(q)},lt=(t,a,e,s,i,r=Et,c,l)=>{const E=V();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>st(at(E,t,nt),a)))},async(a,e)=>((t,a)=>_(Q(E,t),a))(a,e)?x(N(R(await t(I+S(a)),(t=>[t[e],l?H(Y(t,e),l):Y(t,e)])),(([t,a])=>!o(t)&&!z(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=nt();H(s??{},(t=>R(B(t??{}),(t=>st(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+S(a)),void tt(E,a);const C=Q(E,a),O=nt(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(O,n)||(await t($+S(a)+"ADD"+S(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+S(a)+`(${S(e)})`),st(C,n))}))):(await t("CREATE "+v+S(a)+`(${S(e)}${i} PRIMARY KEY${T(R(p,(t=>n+S(t)+i)))});`),tt(E,a,nt([e,...p])))),await w([...!d&&l?R(P(O),(async n=>{n!=e&&(await t($+S(a)+"DROP"+S(n)),U(C,n))})):[]]),d)o(s)?await t(m+S(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+S(a)+L+S(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(W(n),c):W(n)},C)})));else if(A(p))_(E,a)&&await t(m+S(a)+L+" true");else{const n=N(P(Q(E,a)),(t=>t!=e)),i={},o=[];H(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+S(a)+L+S(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},Et=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+S(a)+"("+((...t)=>T(R(t,S),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+S(e)+")DO UPDATE SET"+T(R(s,(t=>S(t)+"=excluded."+S(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},yt=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=lt(a,E,y,s,u,T),p=ct(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",K(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,J(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},wt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,f,L)=>{const[v,$,m,I]=lt(a,u,T,s,g,p,f,L),S=async(t,a)=>await w(Z(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,O,{[C]:t},!0,!0,a):null,_=ct(t,(async()=>await I((async()=>{await v();const t=await(async()=>x(N(await w(Z(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!z(t[1])))))(),a=await(async()=>E?(await $(d,O))[C]:{})();return z(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await I((async()=>{if(await v(),o(a)){const[a,e]=t();await S(a),await h(e)}else await S(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},dt="ColumnName",ut="store",Tt="json",Rt=ut+"TableName",At=ut+"Id"+dt,Nt=ut+dt,gt="autoLoadIntervalSeconds",pt="rowId"+dt,Ct="tableId",Ot="tableName",ft="deleteEmptyColumns",Lt="deleteEmptyTable",vt={mode:Tt,[gt]:1},$t={load:0,save:0,[Ot]:e+"_values"},mt=(t,a,e,n,s)=>{const i=V();return H(t,((t,r)=>{const l=E(W(X(a,c(t)?{[e]:t}:t)),0,k(a));o(l[0])||n(r,l[0])||(s(r,l[0]),tt(i,r,l))})),i},It=e,St=/^([cd]:)(.+)/,ht=e+"_data",_t=e+"_table";t.createPglitePersister=async(t,a,n,s,i)=>((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Rt]:t}:t??{}))(t),n=a[gt];if(a.mode==Tt){const t=a[Rt]??e;return[1,n,[t,a[At]??O,a[Nt]??ut],nt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(W(X($t,o)),0,k($t)),l=r[2],y=nt(l),w=nt(l);return[0,n,[mt(s,{[Ct]:null,[pt]:O},Ct,(t=>_(w,t)),(t=>st(y,t))),mt(i,{[Ot]:null,[pt]:O,[ft]:0,[Lt]:0},Ot,((t,a)=>_(w,a)),((t,a)=>st(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${S(ht+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${S(t)} EXECUTE FUNCTION ${ht}()`)};return(N?yt:wt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${_t}()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('${It}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${_t} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${_t}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${ht}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${It}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${S(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(It,(async a=>{return await r((e=a,n=St,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${f} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>J(t)),(t=>K(t)))})(t,n,(async(t,e=[])=>(await a.query(t,e)).rows),(async(t,e)=>await a.listen(t,e)),(async t=>{try{await t()}catch(t){i?.(t)}}),s,i,(()=>0),3,a,"getPglite")},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPglite={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,r=t=>null==t,o=(t,a,e)=>r(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",f="_id",O="SELECT",v="WHERE",L="TABLE",$="ALTER "+L,m="DELETE FROM",S=O+"*FROM",I=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>r(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=t=>F.values(t),W=t=>y(B(t)),k=t=>(t=>!r(t)&&o(M(t),(t=>t==F.prototype||r(M(t))),(()=>!0)))(t)&&0==W(t),z=JSON.stringify,J=JSON.parse,K=t=>new Map(t),V=(t,a)=>t?.get(a),Q=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),Z=(t,a,e)=>r(e)?(U(t,a),t):t?.set(a,e),tt=(t,a,e,n)=>(_(t,a)?n?.(V(t,a)):Z(t,a,e()),V(t,a)),at=(t,a,e,n,s=0)=>o((e?tt:V)(t,a[s],s>y(a)-2?e:K),(i=>{if(s>y(a)-2)return n?.(i)&&Z(t,a[s]),i;const r=at(i,a,e,n,s+1);return b(i)&&Z(t,a[s]),r})),et=t=>new Set(l(t)||r(t)?t:[t]),nt=(t,a)=>t?.add(a),st=/^\d+$/,it=K(),rt=K(),ot=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,f=0,O=0;tt(it,T,(()=>0)),tt(rt,T,(()=>[]));const v=K(),[L,$,m,S,I]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!k(t)||!k(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!k(t)||!k(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{st.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=K();return[(e,s,i,r=[],o=()=>[])=>{t??=q;const c=a(1);return Z(n,c,[e,s,i,r,o]),nt(at(s,i??[""],et),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(V(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>V(n,a)[0](t,...e??[],...s))))),t=>o(V(n,t),(([,a,s])=>(at(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),Z(n,t),e(t),s))),a=>o(V(n,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const c=y(o);c==y(e)?a(t,...o,...s(o)):r(e[c])?u(n[c]?.(...o)??[],(t=>i(...o,t))):i(...o,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(v,void 0,C))},M=a=>{(L&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),f++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?I(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&I(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),O++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(V(rt,T),...t),await(async()=>{if(!V(it,T)){for(Z(it,T,1);!r(R=p(V(rt,T)));)try{await R()}catch(t){i?.(t)}Z(it,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),f++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!r(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();S(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!r(N),getStatus:()=>C,addStatusListener:t=>h(t,v),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(V(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:f,saves:O}),...E};return j(q)},ct=(t,a,e,s,i,o=lt,c,l)=>{const E=K();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>nt(tt(E,t,et),a)))},async(a,e)=>((t,a)=>_(V(E,t),a))(a,e)?x(N(R(await t(S+I(a)),(t=>{return[t[e],l?(a=Y(t,e),n=l,x(q(a,((t,a)=>[a,n(t,a)])))):Y(t,e)];var a,n})),(([t,a])=>!r(t)&&!k(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=et();q(s??{},(t=>R(B(t??{}),(t=>nt(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+L+I(a)),void Z(E,a);const C=V(E,a),f=et(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(f,n)||(await t($+I(a)+"ADD"+I(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+I(a)+`(${I(e)})`),nt(C,n))}))):(await t("CREATE "+L+I(a)+`(${I(e)}${i} PRIMARY KEY${T(R(p,(t=>n+I(t)+i)))});`),Z(E,a,et([e,...p])))),await w([...!d&&l?R(P(f),(async n=>{n!=e&&(await t($+I(a)+"DROP"+I(n)),U(C,n))})):[]]),d)r(s)?await t(m+I(a)+v+" true"):await w(q(s,(async(n,s)=>{r(n)?await t(m+I(a)+v+I(e)+"=$1",[s]):A(p)||await o(t,a,e,B(n),{[s]:c?R(H(n),c):H(n)},C)})));else if(A(p))_(E,a)&&await t(m+I(a)+v+" true");else{const n=N(P(V(E,a)),(t=>t!=e)),i={},r=[];q(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(r,a)})),await o(t,a,e,n,i),await t(m+I(a)+v+I(e)+`NOT IN(${h(r)})`,r)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},lt=async(t,a,e,s,i)=>{const r=[1];await t("INSERT INTO"+I(a)+"("+((...t)=>T(R(t,I),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+r[0]+++","+h(t,r)+")")),n)+"ON CONFLICT("+I(e)+")DO UPDATE SET"+T(R(s,(t=>I(t)+"=excluded."+I(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,r,[o,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=ct(a,E,y,s,u,T),p=ot(t,(async()=>await g((async()=>{return await R(),t=(await A(o,c))[C]?.[l]??"null",J(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(o,c,{[C]:{[l]:(a=t()??null,z(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,r,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},yt=(t,a,e,n,s,i,o,[c,l,[E,y,d]],u,T,R,A,g,p,O,v)=>{const[L,$,m,S]=ct(a,u,T,s,g,p,O,v),I=async(t,a)=>await w(Q(l,(async([e,n,s,i],r)=>{a&&!(r in t)||await m(e,n,t[r],s,i,a)}))),h=async(t,a)=>y?await m(d,f,{[C]:t},!0,!0,a):null,_=ot(t,(async()=>await S((async()=>{await L();const t=await(async()=>x(N(await w(Q(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!k(t[1])))))(),a=await(async()=>E?(await $(d,f))[C]:{})();return k(t)&&r(a)?void 0:[t,a]}))),(async(t,a)=>await S((async()=>{if(await L(),r(a)){const[a,e]=t();await I(a),await h(e)}else await I(a[0],!0),await h(a[1],!0)}))),e,n,s,o,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},wt="ColumnName",dt="store",ut="json",Tt=dt+"TableName",Rt=dt+"Id"+wt,At=dt+wt,Nt="autoLoadIntervalSeconds",gt="rowId"+wt,pt="tableId",Ct="tableName",ft="deleteEmptyColumns",Ot="deleteEmptyTable",vt={mode:ut,[Nt]:1},Lt={load:0,save:0,[Ct]:e+"_values"},$t=(t,a,e,n,s)=>{const i=K();return q(t,((t,o)=>{const l=E(H(X(a,c(t)?{[e]:t}:t)),0,W(a));r(l[0])||n(o,l[0])||(s(o,l[0]),Z(i,o,l))})),i},mt=e,St=/^([cd]:)(.+)/,It=e+"_data",ht=e+"_table";t.createPostgresPersister=async(t,a,n,s,i)=>{const r=await(a.reserve?.());return((t,a,n,s,i,r,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,r),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Tt]:t}:t??{}))(t),n=a[Nt];if(a.mode==ut){const t=a[Tt]??e;return[1,n,[t,a[Rt]??f,a[At]??dt],et(t)]}const{tables:{load:s={},save:i={}}={},values:r={}}=a,o=E(H(X(Lt,r)),0,W(Lt)),l=o[2],y=et(l),w=et(l);return[0,n,[$t(s,{[pt]:null,[gt]:f},pt,(t=>_(w,t)),(t=>nt(y,t))),$t(i,{[Ct]:null,[gt]:f,[ft]:0,[Ot]:0},Ct,((t,a)=>_(w,a)),((t,a)=>nt(y,a))),o],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${I(It+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${I(t)} EXECUTE FUNCTION ${It}()`)};return(N?Et:yt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${ht}()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('${mt}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ht} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ht}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${It}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${mt}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${I(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(mt,(async a=>{return await o((e=a,n=St,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${O} table_name tn,column_name cn FROM information_schema.columns ${v} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>z(t)),(t=>J(t)))})(t,n,r?.unsafe,(async(t,e)=>a.listen(t,e)),(async t=>{try{await t.unlisten()}catch(t){i?.(t)}}),s,i,(()=>r?.release?.()),3,a,"getSql")}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPostgres={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",f="_id",O="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",S=O+"*FROM",I=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=(t,a)=>x(q(t,((t,e)=>[e,a(t,e)]))),W=t=>F.values(t),k=t=>y(B(t)),z=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==k(t),J=JSON.stringify,K=JSON.parse,V=t=>new Map(t),Q=(t,a)=>t?.get(a),Z=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),tt=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),at=(t,a,e,n)=>(_(t,a)?n?.(Q(t,a)):tt(t,a,e()),Q(t,a)),et=(t,a,e,n,s=0)=>r((e?at:Q)(t,a[s],s>y(a)-2?e:V),(i=>{if(s>y(a)-2)return n?.(i)&&tt(t,a[s]),i;const o=et(i,a,e,n,s+1);return b(i)&&tt(t,a[s]),o})),nt=t=>new Set(l(t)||o(t)?t:[t]),st=(t,a)=>t?.add(a),it=/^\d+$/,ot=V(),rt=V(),ct=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,f=0,O=0;at(ot,T,(()=>0)),at(rt,T,(()=>[]));const L=V(),[v,$,m,S,I]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!z(t)||!z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!z(t)||!z(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{it.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=V();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return tt(n,c,[e,s,i,o,r]),st(et(s,i??[""],nt),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(Q(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>Q(n,a)[0](t,...e??[],...s))))),t=>r(Q(n,t),(([,a,s])=>(et(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),tt(n,t),e(t),s))),a=>r(Q(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),f++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?I(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&I(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),O++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(Q(rt,T),...t),await(async()=>{if(!Q(ot,T)){for(tt(ot,T,1);!o(R=p(Q(rt,T)));)try{await R()}catch(t){i?.(t)}tt(ot,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),f++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();S(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(Q(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:f,saves:O}),...E};return j(q)},lt=(t,a,e,s,i,r=Et,c,l)=>{const E=V();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>st(at(E,t,nt),a)))},async(a,e)=>((t,a)=>_(Q(E,t),a))(a,e)?x(N(R(await t(S+I(a)),(t=>[t[e],l?H(Y(t,e),l):Y(t,e)])),(([t,a])=>!o(t)&&!z(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=nt();H(s??{},(t=>R(B(t??{}),(t=>st(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+I(a)),void tt(E,a);const C=Q(E,a),f=nt(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(f,n)||(await t($+I(a)+"ADD"+I(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+I(a)+`(${I(e)})`),st(C,n))}))):(await t("CREATE "+v+I(a)+`(${I(e)}${i} PRIMARY KEY${T(R(p,(t=>n+I(t)+i)))});`),tt(E,a,nt([e,...p])))),await w([...!d&&l?R(P(f),(async n=>{n!=e&&(await t($+I(a)+"DROP"+I(n)),U(C,n))})):[]]),d)o(s)?await t(m+I(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+I(a)+L+I(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(W(n),c):W(n)},C)})));else if(A(p))_(E,a)&&await t(m+I(a)+L+" true");else{const n=N(P(Q(E,a)),(t=>t!=e)),i={},o=[];H(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+I(a)+L+I(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},Et=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+I(a)+"("+((...t)=>T(R(t,I),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+I(e)+")DO UPDATE SET"+T(R(s,(t=>I(t)+"=excluded."+I(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},yt=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=lt(a,E,y,s,u,T),p=ct(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",K(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,J(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},wt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,O,L)=>{const[v,$,m,S]=lt(a,u,T,s,g,p,O,L),I=async(t,a)=>await w(Z(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,f,{[C]:t},!0,!0,a):null,_=ct(t,(async()=>await S((async()=>{await v();const t=await(async()=>x(N(await w(Z(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!z(t[1])))))(),a=await(async()=>E?(await $(d,f))[C]:{})();return z(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await S((async()=>{if(await v(),o(a)){const[a,e]=t();await I(a),await h(e)}else await I(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},dt="ColumnName",ut="store",Tt="json",Rt=ut+"TableName",At=ut+"Id"+dt,Nt=ut+dt,gt="autoLoadIntervalSeconds",pt="rowId"+dt,Ct="tableId",ft="tableName",Ot="deleteEmptyColumns",Lt="deleteEmptyTable",vt={mode:Tt,[gt]:1},$t={load:0,save:0,[ft]:e+"_values"},mt=(t,a,e,n,s)=>{const i=V();return H(t,((t,r)=>{const l=E(W(X(a,c(t)?{[e]:t}:t)),0,k(a));o(l[0])||n(r,l[0])||(s(r,l[0]),tt(i,r,l))})),i},St=e,It=/^([cd]:)(.+)/,ht=e+"_data",_t=e+"_table";t.createPostgresPersister=async(t,a,n,s,i)=>{const o=await(a.reserve?.());return((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Rt]:t}:t??{}))(t),n=a[gt];if(a.mode==Tt){const t=a[Rt]??e;return[1,n,[t,a[At]??f,a[Nt]??ut],nt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(W(X($t,o)),0,k($t)),l=r[2],y=nt(l),w=nt(l);return[0,n,[mt(s,{[Ct]:null,[pt]:f},Ct,(t=>_(w,t)),(t=>st(y,t))),mt(i,{[ft]:null,[pt]:f,[Ot]:0,[Lt]:0},ft,((t,a)=>_(w,a)),((t,a)=>st(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${I(ht+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${I(t)} EXECUTE FUNCTION ${ht}()`)};return(N?yt:wt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${_t}()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('${St}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${_t} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${_t}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${ht}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${St}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${I(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(St,(async a=>{return await r((e=a,n=It,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${O} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>J(t)),(t=>K(t)))})(t,n,o?.unsafe,(async(t,e)=>a.listen(t,e)),(async t=>{try{await t.unlisten()}catch(t){i?.(t)}}),s,i,(()=>o?.release?.()),3,a,"getSql")}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPostgres={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,r=t=>null==t,o=(t,a,e)=>r(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",f="_id",O="SELECT",v="WHERE",L="TABLE",$="ALTER "+L,m="DELETE FROM",S=O+"*FROM",I=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>r(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=t=>F.values(t),W=t=>y(B(t)),k=t=>(t=>!r(t)&&o(M(t),(t=>t==F.prototype||r(M(t))),(()=>!0)))(t)&&0==W(t),z=JSON.stringify,J=JSON.parse,K=t=>new Map(t),V=(t,a)=>t?.get(a),Q=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),Z=(t,a,e)=>r(e)?(U(t,a),t):t?.set(a,e),tt=(t,a,e,n)=>(_(t,a)?n?.(V(t,a)):Z(t,a,e()),V(t,a)),at=(t,a,e,n,s=0)=>o((e?tt:V)(t,a[s],s>y(a)-2?e:K),(i=>{if(s>y(a)-2)return n?.(i)&&Z(t,a[s]),i;const r=at(i,a,e,n,s+1);return b(i)&&Z(t,a[s]),r})),et=t=>new Set(l(t)||r(t)?t:[t]),nt=(t,a)=>t?.add(a),st=/^\d+$/,it=K(),rt=K(),ot=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,f=0,O=0;tt(it,T,(()=>0)),tt(rt,T,(()=>[]));const v=K(),[L,$,m,S,I]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!k(t)||!k(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!k(t)||!k(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{st.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=K();return[(e,s,i,r=[],o=()=>[])=>{t??=q;const c=a(1);return Z(n,c,[e,s,i,r,o]),nt(at(s,i??[""],et),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(V(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>V(n,a)[0](t,...e??[],...s))))),t=>o(V(n,t),(([,a,s])=>(at(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),Z(n,t),e(t),s))),a=>o(V(n,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const c=y(o);c==y(e)?a(t,...o,...s(o)):r(e[c])?u(n[c]?.(...o)??[],(t=>i(...o,t))):i(...o,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(v,void 0,C))},M=a=>{(L&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),f++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?I(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&I(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),O++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(V(rt,T),...t),await(async()=>{if(!V(it,T)){for(Z(it,T,1);!r(R=p(V(rt,T)));)try{await R()}catch(t){i?.(t)}Z(it,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),f++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!r(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();S(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!r(N),getStatus:()=>C,addStatusListener:t=>h(t,v),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(V(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:f,saves:O}),...E};return j(q)},ct=(t,a,e,s,i,o=lt,c,l)=>{const E=K();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>nt(tt(E,t,et),a)))},async(a,e)=>((t,a)=>_(V(E,t),a))(a,e)?x(N(R(await t(S+I(a)),(t=>{return[t[e],l?(a=Y(t,e),n=l,x(q(a,((t,a)=>[a,n(t,a)])))):Y(t,e)];var a,n})),(([t,a])=>!r(t)&&!k(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=et();q(s??{},(t=>R(B(t??{}),(t=>nt(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+L+I(a)),void Z(E,a);const C=V(E,a),f=et(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(f,n)||(await t($+I(a)+"ADD"+I(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+I(a)+`(${I(e)})`),nt(C,n))}))):(await t("CREATE "+L+I(a)+`(${I(e)}${i} PRIMARY KEY${T(R(p,(t=>n+I(t)+i)))});`),Z(E,a,et([e,...p])))),await w([...!d&&l?R(P(f),(async n=>{n!=e&&(await t($+I(a)+"DROP"+I(n)),U(C,n))})):[]]),d)r(s)?await t(m+I(a)+v+" true"):await w(q(s,(async(n,s)=>{r(n)?await t(m+I(a)+v+I(e)+"=$1",[s]):A(p)||await o(t,a,e,B(n),{[s]:c?R(H(n),c):H(n)},C)})));else if(A(p))_(E,a)&&await t(m+I(a)+v+" true");else{const n=N(P(V(E,a)),(t=>t!=e)),i={},r=[];q(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(r,a)})),await o(t,a,e,n,i),await t(m+I(a)+v+I(e)+`NOT IN(${h(r)})`,r)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},lt=async(t,a,e,s,i)=>{const r=[1];await t("INSERT INTO"+I(a)+"("+((...t)=>T(R(t,I),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+r[0]+++","+h(t,r)+")")),n)+"ON CONFLICT("+I(e)+")DO UPDATE SET"+T(R(s,(t=>I(t)+"=excluded."+I(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,r,[o,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=ct(a,E,y,s,u,T),p=ot(t,(async()=>await g((async()=>{return await R(),t=(await A(o,c))[C]?.[l]??"null",J(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(o,c,{[C]:{[l]:(a=t()??null,z(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,r,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},yt=(t,a,e,n,s,i,o,[c,l,[E,y,d]],u,T,R,A,g,p,O,v)=>{const[L,$,m,S]=ct(a,u,T,s,g,p,O,v),I=async(t,a)=>await w(Q(l,(async([e,n,s,i],r)=>{a&&!(r in t)||await m(e,n,t[r],s,i,a)}))),h=async(t,a)=>y?await m(d,f,{[C]:t},!0,!0,a):null,_=ot(t,(async()=>await S((async()=>{await L();const t=await(async()=>x(N(await w(Q(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!k(t[1])))))(),a=await(async()=>E?(await $(d,f))[C]:{})();return k(t)&&r(a)?void 0:[t,a]}))),(async(t,a)=>await S((async()=>{if(await L(),r(a)){const[a,e]=t();await I(a),await h(e)}else await I(a[0],!0),await h(a[1],!0)}))),e,n,s,o,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},wt="ColumnName",dt="store",ut="json",Tt=dt+"TableName",Rt=dt+"Id"+wt,At=dt+wt,Nt="autoLoadIntervalSeconds",gt="rowId"+wt,pt="tableId",Ct="tableName",ft="deleteEmptyColumns",Ot="deleteEmptyTable",vt={mode:ut,[Nt]:1},Lt={load:0,save:0,[Ct]:e+"_values"},$t=(t,a,e,n,s)=>{const i=K();return q(t,((t,o)=>{const l=E(H(X(a,c(t)?{[e]:t}:t)),0,W(a));r(l[0])||n(o,l[0])||(s(o,l[0]),Z(i,o,l))})),i},mt=e,St=/^([cd]:)(.+)/,It=e+"_data",ht=e+"_table";t.createPostgresPersister=async(t,a,n,s,i)=>{const r=await(a.reserve?.());return((t,a,n,s,i,r,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,r),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Tt]:t}:t??{}))(t),n=a[Nt];if(a.mode==ut){const t=a[Tt]??e;return[1,n,[t,a[Rt]??f,a[At]??dt],et(t)]}const{tables:{load:s={},save:i={}}={},values:r={}}=a,o=E(H(X(Lt,r)),0,W(Lt)),l=o[2],y=et(l),w=et(l);return[0,n,[$t(s,{[pt]:null,[gt]:f},pt,(t=>_(w,t)),(t=>nt(y,t))),$t(i,{[Ct]:null,[gt]:f,[ft]:0,[Ot]:0},Ct,((t,a)=>_(w,a)),((t,a)=>nt(y,a))),o],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${I(It+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${I(t)} EXECUTE FUNCTION ${It}()`)};return(N?Et:yt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${ht}()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('${mt}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ht} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ht}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${It}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${mt}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${I(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(mt,(async a=>{return await o((e=a,n=St,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${O} table_name tn,column_name cn FROM information_schema.columns ${v} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>z(t)),(t=>J(t)))})(t,n,r?.unsafe,(async(t,e)=>a.listen(t,e)),(async t=>{try{await t.unlisten()}catch(t){i?.(t)}}),s,i,(()=>r?.release?.()),3,a,"getSql")}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPostgres={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n=",",s=a(""),i=Promise,o=t=>null==t,r=(t,a,e)=>o(t)?e?.():a(t),c=t=>a(t)==s,l=t=>Array.isArray(t),E=(t,a,e)=>t.slice(a,e),y=t=>t.length,w=async t=>i.all(t),d=t=>{throw Error(t)},u=(t,a)=>t.forEach(a),T=(t,a="")=>t.join(a),R=(t,a)=>t.map(a),A=t=>0==y(t),N=(t,a)=>t.filter(a),g=(t,...a)=>t.push(...a),p=t=>t.shift(),C="_",f="_id",O="SELECT",L="WHERE",v="TABLE",$="ALTER "+v,m="DELETE FROM",S=O+"*FROM",I=t=>`"${t.replace(/"/g,'""')}"`,h=(t,a=[1])=>T(R(t,(()=>"$"+a[0]++)),n),_=(t,a)=>t?.has(a)??!1,b=t=>o(t)||0==(t=>t?.size??0)(t),P=t=>[...t?.values()??[]],D=(t,a)=>t?.forEach(a),U=(t,a)=>t?.delete(a),F=Object,M=t=>F.getPrototypeOf(t),G=F.entries,B=F.keys,j=F.freeze,x=(t=[])=>F.fromEntries(t),X=(...t)=>F.assign({},...t),Y=(t,a)=>(delete t[a],t),q=(t,a)=>R(G(t),(([t,e])=>a(e,t))),H=(t,a)=>x(q(t,((t,e)=>[e,a(t,e)]))),W=t=>F.values(t),k=t=>y(B(t)),z=t=>(t=>!o(t)&&r(M(t),(t=>t==F.prototype||o(M(t))),(()=>!0)))(t)&&0==k(t),J=JSON.stringify,K=JSON.parse,V=t=>new Map(t),Q=(t,a)=>t?.get(a),Z=(t,a)=>R([...t?.entries()??[]],(([t,e])=>a(e,t))),tt=(t,a,e)=>o(e)?(U(t,a),t):t?.set(a,e),at=(t,a,e,n)=>(_(t,a)?n?.(Q(t,a)):tt(t,a,e()),Q(t,a)),et=(t,a,e,n,s=0)=>r((e?at:Q)(t,a[s],s>y(a)-2?e:V),(i=>{if(s>y(a)-2)return n?.(i)&&tt(t,a[s]),i;const o=et(i,a,e,n,s+1);return b(i)&&tt(t,a[s]),o})),nt=t=>new Set(l(t)||o(t)?t:[t]),st=(t,a)=>t?.add(a),it=/^\d+$/,ot=V(),rt=V(),ct=(t,a,e,n,s,i,c,E={},w=0,T=[])=>{let R,A,N,C=0,f=0,O=0;at(ot,T,(()=>0)),at(rt,T,(()=>[]));const L=V(),[v,$,m,S,I]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!z(t)||!z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!z(t)||!z(a),a.setContent]:d("Store type not supported by this Persister"))(c,t,w),[h,_,P]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?p(t):null)??""+a++,a=>{it.test(a)&&y(t)<1e3&&g(t,a)}]})(),n=V();return[(e,s,i,o=[],r=()=>[])=>{t??=q;const c=a(1);return tt(n,c,[e,s,i,o,r]),st(et(s,i??[""],nt),c),c},(a,e,...s)=>u(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?g(e,t):null===a[s]?D(t,(t=>n(t,s+1))):u([a[s],null],(a=>n(Q(t,a),s+1)));return n(t,0),e})(a,e),(a=>D(a,(a=>Q(n,a)[0](t,...e??[],...s))))),t=>r(Q(n,t),(([,a,s])=>(et(a,s??[""],void 0,(a=>(U(a,t),b(a)?1:0))),tt(n,t),e(t),s))),a=>r(Q(n,a),(([a,,e=[],n,s])=>{const i=(...r)=>{const c=y(r);c==y(e)?a(t,...r,...s(r)):o(e[c])?u(n[c]?.(...r)??[],(t=>i(...r,t))):i(...r,e[c])};i()}))]})(),F=t=>{t!=C&&(C=t,_(L,void 0,C))},M=a=>{(v&&l(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},G=async t=>(2!=C&&(F(1),f++,await Y((async()=>{try{const e=await a();l(e)?M(e):t?I(t):d("Content is not an array: "+e)}catch(a){i?.(a),t&&I(t)}F(0)}))),q),B=()=>(A&&(s(A),A=void 0),q),x=async t=>(1!=C&&(F(2),O++,await Y((async()=>{try{await e($,t)}catch(t){i?.(t)}F(0)}))),q),X=()=>(N&&(t.delListener(N),N=void 0),q),Y=async(...t)=>(g(Q(rt,T),...t),await(async()=>{if(!Q(ot,T)){for(tt(ot,T,1);!o(R=p(Q(rt,T)));)try{await R()}catch(t){i?.(t)}tt(ot,T,0)}})(),q),q={load:G,startAutoLoad:async t=>{B(),await G(t);try{A=await n((async(t,a)=>{a||t?2!=C&&(F(1),f++,M(a??t),F(0)):await G()}))}catch(t){i?.(t)}return q},stopAutoLoad:B,isAutoLoading:()=>!o(A),save:x,startAutoSave:async()=>(X(),await x(),N=t.addDidFinishTransactionListener((()=>{const t=m();S(t)&&x(t)})),q),stopAutoSave:X,isAutoSaving:()=>!o(N),getStatus:()=>C,addStatusListener:t=>h(t,L),delListener:a=>(P(a),t),schedule:Y,getStore:()=>t,destroy:()=>(Q(rt,T).splice(0,void 0),B().stopAutoSave()),getStats:()=>({loads:f,saves:O}),...E};return j(q)},lt=(t,a,e,s,i,r=Et,c,l)=>{const E=V();return[async()=>{E.clear(),R(await e(t,a),(({tn:t,cn:a})=>st(at(E,t,nt),a)))},async(a,e)=>((t,a)=>_(Q(E,t),a))(a,e)?x(N(R(await t(S+I(a)),(t=>[t[e],l?H(Y(t,e),l):Y(t,e)])),(([t,a])=>!o(t)&&!z(a)))):{},async(a,e,s,l,y,d=!1)=>{const u=nt();H(s??{},(t=>R(B(t??{}),(t=>st(u,t)))));const p=P(u);if(!d&&y&&A(p)&&_(E,a))return await t("DROP "+v+I(a)),void tt(E,a);const C=Q(E,a),f=nt(P(C));if(A(p)||(_(E,a)?await w(R([e,...p],(async(n,s)=>{U(f,n)||(await t($+I(a)+"ADD"+I(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+I(a)+`(${I(e)})`),st(C,n))}))):(await t("CREATE "+v+I(a)+`(${I(e)}${i} PRIMARY KEY${T(R(p,(t=>n+I(t)+i)))});`),tt(E,a,nt([e,...p])))),await w([...!d&&l?R(P(f),(async n=>{n!=e&&(await t($+I(a)+"DROP"+I(n)),U(C,n))})):[]]),d)o(s)?await t(m+I(a)+L+" true"):await w(q(s,(async(n,s)=>{o(n)?await t(m+I(a)+L+I(e)+"=$1",[s]):A(p)||await r(t,a,e,B(n),{[s]:c?R(W(n),c):W(n)},C)})));else if(A(p))_(E,a)&&await t(m+I(a)+L+" true");else{const n=N(P(Q(E,a)),(t=>t!=e)),i={},o=[];H(s??{},((t,a)=>{i[a]=R(n,(a=>c?c(t?.[a]):t?.[a])),g(o,a)})),await r(t,a,e,n,i),await t(m+I(a)+L+I(e)+`NOT IN(${h(o)})`,o)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){s?.(t)}return await t("END"),e}]},Et=async(t,a,e,s,i)=>{const o=[1];await t("INSERT INTO"+I(a)+"("+((...t)=>T(R(t,I),n))(e,...s)+")VALUES"+T(q(i,(t=>"($"+o[0]+++","+h(t,o)+")")),n)+"ON CONFLICT("+I(e)+")DO UPDATE SET"+T(R(s,(t=>I(t)+"=excluded."+I(t))),n),q(i,((t,a)=>[a,...R(t,(t=>t??null))])).flat())},yt=(t,a,e,n,s,i,o,[r,c,l],E,y,w,d,u,T)=>{const[R,A,N,g]=lt(a,E,y,s,u,T),p=ct(t,(async()=>await g((async()=>{return await R(),t=(await A(r,c))[C]?.[l]??"null",K(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await g((async()=>{var a;await R(),await N(r,c,{[C]:{[l]:(a=t()??null,J(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,w);return p},wt=(t,a,e,n,s,i,r,[c,l,[E,y,d]],u,T,R,A,g,p,O,L)=>{const[v,$,m,S]=lt(a,u,T,s,g,p,O,L),I=async(t,a)=>await w(Z(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await m(e,n,t[o],s,i,a)}))),h=async(t,a)=>y?await m(d,f,{[C]:t},!0,!0,a):null,_=ct(t,(async()=>await S((async()=>{await v();const t=await(async()=>x(N(await w(Z(c,(async([t,a],e)=>[t,await $(e,a)]))),(t=>!z(t[1])))))(),a=await(async()=>E?(await $(d,f))[C]:{})();return z(t)&&o(a)?void 0:[t,a]}))),(async(t,a)=>await S((async()=>{if(await v(),o(a)){const[a,e]=t();await I(a),await h(e)}else await I(a[0],!0),await h(a[1],!0)}))),e,n,s,r,{[A]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),i(),_)},0,R);return _},dt="ColumnName",ut="store",Tt="json",Rt=ut+"TableName",At=ut+"Id"+dt,Nt=ut+dt,gt="autoLoadIntervalSeconds",pt="rowId"+dt,Ct="tableId",ft="tableName",Ot="deleteEmptyColumns",Lt="deleteEmptyTable",vt={mode:Tt,[gt]:1},$t={load:0,save:0,[ft]:e+"_values"},mt=(t,a,e,n,s)=>{const i=V();return H(t,((t,r)=>{const l=E(W(X(a,c(t)?{[e]:t}:t)),0,k(a));o(l[0])||n(r,l[0])||(s(r,l[0]),tt(i,r,l))})),i},St=e,It=/^([cd]:)(.+)/,ht=e+"_data",_t=e+"_table";t.createPostgresPersister=async(t,a,n,s,i)=>{const o=await(a.reserve?.());return((t,a,n,s,i,o,l,y,d,u,T="getDb")=>{const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(n,o),[N,,g,p]=(t=>{const a=(t=>X(vt,c(t)?{[Rt]:t}:t??{}))(t),n=a[gt];if(a.mode==Tt){const t=a[Rt]??e;return[1,n,[t,a[At]??f,a[Nt]??ut],nt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=E(W(X($t,o)),0,k($t)),l=r[2],y=nt(l),w=nt(l);return[0,n,[mt(s,{[Ct]:null,[pt]:f},Ct,(t=>_(w,t)),(t=>st(y,t))),mt(i,{[ft]:null,[pt]:f,[Ot]:0,[Lt]:0},ft,((t,a)=>_(w,a)),((t,a)=>st(y,a))),r],y]})(a),C=async t=>{await A(`CREATE OR REPLACE TRIGGER ${I(ht+"_"+t)} AFTER INSERT OR UPDATE OR DELETE ON ${I(t)} EXECUTE FUNCTION ${ht}()`)};return(N?yt:wt)(t,A,(async t=>{await A(`CREATE OR REPLACE FUNCTION ${_t}()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('${St}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${_t} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${_t}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${ht}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${St}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(R(P(p),(async t=>{await A(`CREATE TABLE IF NOT EXISTS ${I(t)}("_id"text PRIMARY KEY)`),await C(t)}))),await s(St,(async a=>{return await r((e=a,n=It,e?.match(n)),(async([,a,e])=>{_(p,e)&&("c:"==a&&await C(e),t())}));var e,n}))}),i,l,y,d,g,P(p),(async(t,a)=>await t(`${O} table_name tn,column_name cn FROM information_schema.columns ${L} table_schema='public'AND table_name IN(${h(a)})`,a)),u,T,"text",void 0,(t=>J(t)),(t=>K(t)))})(t,n,o?.unsafe,(async(t,e)=>a.listen(t,e)),(async t=>{try{await t.unlisten()}catch(t){i?.(t)}}),s,i,(()=>o?.release?.()),3,a,"getSql")}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPostgres={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",o=a(n),r=Promise,i=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),y=t=>a(t)==o,u=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,E=async t=>r.all(t),p=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),v=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==d(t),A=(t,a)=>t.filter(a),T=(t,...a)=>t.push(...a),m=t=>t.shift(),N=Object,S=t=>N.getPrototypeOf(t),b=N.entries,C=N.keys,$=N.freeze,O=(t=[])=>N.fromEntries(t),I=(...t)=>N.assign({},...t),L=(t,a)=>(delete t[a],t),R=(t,a)=>g(b(t),(([t,e])=>a(e,t))),D=t=>N.values(t),P=t=>d(C(t)),M=t=>(t=>!c(t)&&l(S(t),(t=>t==N.prototype||c(S(t))),(()=>!0)))(t)&&0==P(t),_=t=>new Set(u(t)||c(t)?t:[t]),F=(t,a)=>t?.add(a),x="_",U="_id",j="SELECT",B="WHERE",H="TABLE",J="ALTER "+H,Y="DELETE FROM",k=j+"*FROM",z="pragma_",G="data_version",V="schema_version",W="pragma_table_",K=t=>`"${t.replace(/"/g,'""')}"`,Q=(...t)=>v(g(t,K),s),X=(t,a=[1])=>v(g(t,(()=>"$"+a[0]++)),s),q=(t,a)=>t?.has(a)??!1,Z=t=>c(t)||0==(t=>t?.size??0)(t),tt=t=>[...t?.values()??[]],at=(t,a)=>t?.forEach(a),et=(t,a)=>t?.delete(a),nt=JSON.stringify,st=JSON.parse,ot=t=>new Map(t),rt=(t,a)=>t?.get(a),it=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),ct=(t,a,e)=>c(e)?(et(t,a),t):t?.set(a,e),lt=(t,a,e,n)=>(q(t,a)?n?.(rt(t,a)):ct(t,a,e()),rt(t,a)),yt=(t,a,e,n,s=0)=>l((e?lt:rt)(t,a[s],s>d(a)-2?e:ot),(o=>{if(s>d(a)-2)return n?.(o)&&ct(t,a[s]),o;const r=yt(o,a,e,n,s+1);return Z(o)&&ct(t,a[s]),r})),ut=/^\d+$/,wt=ot(),dt=ot(),Et=(t,a,e,s,o,r,i,y={},w=0,E=[])=>{let v,g,h,A=0,N=0,S=0;lt(wt,E,(()=>0)),lt(dt,E,(()=>[]));const b=ot(),[C,O,I,L,R]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!M(t)||!M(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!M(t)||!M(a),a.setContent]:p("Store type not supported by this Persister"))(i,t,w),[D,P,x]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?m(t):null)??n+a++,a=>{ut.test(a)&&d(t)<1e3&&T(t,a)}]})(),s=ot();return[(e,o,r,i=[],c=()=>[])=>{t??=z;const l=a(1);return ct(s,l,[e,o,r,i,c]),F(yt(o,r??[n],_),l),l},(a,e,...o)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?T(e,t):null===a[n]?at(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(rt(t,a),n+1)));return s(t,0),e})(a,e),(a=>at(a,(a=>rt(s,a)[0](t,...e??[],...o))))),t=>l(rt(s,t),(([,a,o])=>(yt(a,o??[n],void 0,(a=>(et(a,t),Z(a)?1:0))),ct(s,t),e(t),o))),a=>l(rt(s,a),(([a,,e=[],n,s])=>{const o=(...r)=>{const i=d(r);i==d(e)?a(t,...r,...s(r)):c(e[i])?f(n[i]?.(...r)??[],(t=>o(...r,t))):o(...r,e[i])};o()}))]})(),U=t=>{t!=A&&(A=t,P(b,void 0,A))},j=a=>{(C&&u(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},B=async t=>(2!=A&&(U(1),N++,await k((async()=>{try{const e=await a();u(e)?j(e):t?R(t):p("Content is not an array: "+e)}catch(a){r?.(a),t&&R(t)}U(0)}))),z),H=()=>(g&&(o(g),g=void 0),z),J=async t=>(1!=A&&(U(2),S++,await k((async()=>{try{await e(O,t)}catch(t){r?.(t)}U(0)}))),z),Y=()=>(h&&(t.delListener(h),h=void 0),z),k=async(...t)=>(T(rt(dt,E),...t),await(async()=>{if(!rt(wt,E)){for(ct(wt,E,1);!c(v=m(rt(dt,E)));)try{await v()}catch(t){r?.(t)}ct(wt,E,0)}})(),z),z={load:B,startAutoLoad:async t=>{H(),await B(t);try{g=await s((async(t,a)=>{a||t?2!=A&&(U(1),N++,j(a??t),U(0)):await B()}))}catch(t){r?.(t)}return z},stopAutoLoad:H,isAutoLoading:()=>!c(g),save:J,startAutoSave:async()=>(Y(),await J(),h=t.addDidFinishTransactionListener((()=>{const t=I();L(t)&&J(t)})),z),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>A,addStatusListener:t=>D(t,b),delListener:a=>(x(a),t),schedule:k,getStore:()=>t,destroy:()=>(rt(dt,E).splice(0,void 0),H().stopAutoSave()),getStats:()=>({loads:N,saves:S}),...y};return $(z)},pt=(t,a,e,n,o,r=ft,i,l)=>{const y=ot();return[async()=>{y.clear(),g(await e(t,a),(({tn:t,cn:a})=>F(lt(y,t,_),a)))},async(a,e)=>((t,a)=>q(rt(y,t),a))(a,e)?O(A(g(await t(k+K(a)),(t=>{return[t[e],l?(a=L(t,e),n=l,O(R(a,((t,a)=>[a,n(t,a)])))):L(t,e)];var a,n})),(([t,a])=>!c(t)&&!M(a)))):{},async(a,e,n,l,u,w=!1)=>{const d=_();R(n??{},(t=>g(C(t??{}),(t=>F(d,t)))));const p=tt(d);if(!w&&u&&h(p)&&q(y,a))return await t("DROP "+H+K(a)),void ct(y,a);const f=rt(y,a),m=_(tt(f));if(h(p)||(q(y,a)?await E(g([e,...p],(async(n,s)=>{et(m,n)||(await t(J+K(a)+"ADD"+K(n)+o),0==s&&await t("CREATE UNIQUE INDEX pk ON "+K(a)+`(${K(e)})`),F(f,n))}))):(await t("CREATE "+H+K(a)+`(${K(e)}${o} PRIMARY KEY${v(g(p,(t=>s+K(t)+o)))});`),ct(y,a,_([e,...p])))),await E([...!w&&l?g(tt(m),(async n=>{n!=e&&(await t(J+K(a)+"DROP"+K(n)),et(f,n))})):[]]),w)c(n)?await t(Y+K(a)+B+" true"):await E(R(n,(async(n,s)=>{c(n)?await t(Y+K(a)+B+K(e)+"=$1",[s]):h(p)||await r(t,a,e,C(n),{[s]:i?g(D(n),i):D(n)},f)})));else if(h(p))q(y,a)&&await t(Y+K(a)+B+" true");else{const s=A(tt(rt(y,a)),(t=>t!=e)),o={},c=[];R(n??{},((t,a)=>{o[a]=g(s,(a=>i?i(t?.[a]):t?.[a])),T(c,a)})),await r(t,a,e,s,o),await t(Y+K(a)+B+K(e)+`NOT IN(${X(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},ft=async(t,a,e,n,o)=>{const r=[1];await t("INSERT INTO"+K(a)+"("+Q(e,...n)+")VALUES"+v(R(o,(t=>"($"+r[0]+++","+X(t,r)+")")),s)+"ON CONFLICT("+K(e)+")DO UPDATE SET"+v(g(n,(t=>K(t)+"=excluded."+K(t))),s),R(o,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},vt=(t,a,e,n,s,o,r,[i,c,l],y,u,w,d,E,p)=>{const[f,v,g,h]=pt(a,y,u,s,E,p),A=Et(t,(async()=>await h((async()=>{return await f(),t=(await v(i,c))[x]?.[l]??"null",st(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(i,c,{[x]:{[l]:(a=t()??null,nt(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,r,{[d]:()=>w,destroy:()=>(A.stopAutoLoad().stopAutoSave(),o(),A)},0,w);return A},gt=(t,a,e,n,s,o,r,[i,l,[y,u,w]],d,p,f,v,g,h,T,m)=>{const[N,S,b,C]=pt(a,d,p,s,g,h,T,m),$=async(t,a)=>await E(it(l,(async([e,n,s,o],r)=>{a&&!(r in t)||await b(e,n,t[r],s,o,a)}))),I=async(t,a)=>u?await b(w,U,{[x]:t},!0,!0,a):null,L=Et(t,(async()=>await C((async()=>{await N();const t=await(async()=>O(A(await E(it(i,(async([t,a],e)=>[t,await S(e,a)]))),(t=>!M(t[1])))))(),a=await(async()=>y?(await S(w,U))[x]:{})();return M(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await C((async()=>{if(await N(),c(a)){const[a,e]=t();await $(a),await I(e)}else await $(a[0],!0),await I(a[1],!0)}))),e,n,s,r,{[v]:()=>f,destroy:()=>(L.stopAutoLoad().stopAutoSave(),o(),L)},0,f);return L},ht="ColumnName",At="store",Tt="json",mt=At+"TableName",Nt=At+"Id"+ht,St=At+ht,bt="autoLoadIntervalSeconds",Ct="rowId"+ht,$t="tableId",Ot="tableName",It="deleteEmptyColumns",Lt="deleteEmptyTable",Rt={mode:Tt,[bt]:1},Dt={load:0,save:0,[Ot]:e+"_values"},Pt=(t,a,e,n,s)=>{const o=ot();return R(t,((t,r)=>{const i=w(D(I(a,y(t)?{[e]:t}:t)),0,P(a));c(i[0])||n(r,i[0])||(s(r,i[0]),ct(o,r,i))})),o},Mt=(t,a,s,o,r,c,l,u,d,E,p="getDb",f)=>{let v,g,h;const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[T,m,N,S]=(t=>{const a=(t=>I(Rt,y(t)?{[mt]:t}:t??{}))(t),n=a[bt];if(a.mode==Tt){const t=a[mt]??e;return[1,n,[t,a[Nt]??U,a[St]??At],_(t)]}const{tables:{load:s={},save:o={}}={},values:r={}}=a,i=w(D(I(Dt,r)),0,P(Dt)),c=i[2],l=_(c),u=_(c);return[0,n,[Pt(s,{[$t]:null,[Ct]:U},$t,(t=>q(u,t)),(t=>F(l,t))),Pt(o,{[Ot]:null,[Ct]:U,[It]:0,[Lt]:0},Ot,((t,a)=>q(u,a)),((t,a)=>F(l,a))),i],l]})(a);return(T?vt:gt)(t,A,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await A(`${j} ${G} d,${V} s,TOTAL_CHANGES() c FROM ${z}${G} JOIN ${z}${V}`);a==v&&e==g&&n==h||(null!=v&&t(),v=a,g=e,h=n)}catch{}}),1e3*m),n=()=>{v=g=h=null,i(a)},s=o((a=>{S.has(a)&&(n(),t(),e())}));return e(),()=>{n(),r(s)}}),(t=>t()),l,u,d,N,tt(S),(async(t,a)=>await t(`${j} t.name tn,c.name cn FROM ${W}list()t,${W}info(t.name)c ${B} t.schema='main'AND t.type IN('table','view')AND t.name IN(${X(a)})ORDER BY t.name,c.name`,a)),E,p,n,f,(t=>!0===t?1:!1===t?0:t),void 0)},_t=async(t,a,e,n,o,r)=>{const i=[1],c=_(n),l=r?A([...r],(t=>t!=e&&!q(c,t))):[];if(!h(l)){const n=C(o),s=O(g(await t("SELECT"+Q(e,...l)+"FROM"+K(a)+"WHERE"+K(e)+"IN("+X(n)+")",n),(t=>[t[e],t])));f(n,(t=>T(o[t],...g(l,(a=>s?.[t]?.[a]??null)))))}await t("INSERT OR REPLACE INTO"+K(a)+"("+Q(e,...n,...l)+")VALUES"+v(R(o,(t=>"($"+i[0]+++","+X(t,i)+")")),s),R(o,((t,a)=>[a,...g(t,(t=>t??null))])).flat())};t.createPowerSyncPersister=(t,a,e,n,s)=>{let o;return Mt(t,e,(async(t,e=[])=>a.execute(t,e).then((t=>t.rows?._array??[]))),(t=>{const e=new AbortController,n=a.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const t of n)o&&g(t.changedTables,o)})(),o=t,e}),(t=>{o=void 0,t.abort()}),n,s,(()=>0),1,a,"getPowerSync",_t)}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPowersync={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",o=a(n),i=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),y=t=>a(t)==o,u=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,E=async t=>i.all(t),p=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),g=(t,a="")=>t.join(a),v=(t,a)=>t.map(a),h=t=>0==d(t),A=(t,a)=>t.filter(a),T=(t,...a)=>t.push(...a),m=t=>t.shift(),N=Object,S=t=>N.getPrototypeOf(t),b=N.entries,C=N.keys,$=N.freeze,O=(t=[])=>N.fromEntries(t),I=(...t)=>N.assign({},...t),L=(t,a)=>(delete t[a],t),R=(t,a)=>v(b(t),(([t,e])=>a(e,t))),D=(t,a)=>O(R(t,((t,e)=>[e,a(t,e)]))),P=t=>N.values(t),M=t=>d(C(t)),_=t=>(t=>!c(t)&&l(S(t),(t=>t==N.prototype||c(S(t))),(()=>!0)))(t)&&0==M(t),F=t=>new Set(u(t)||c(t)?t:[t]),x=(t,a)=>t?.add(a),U="_",j="_id",B="SELECT",H="WHERE",J="TABLE",Y="ALTER "+J,k="DELETE FROM",z=B+"*FROM",G="pragma_",V="data_version",W="schema_version",K="pragma_table_",Q=t=>`"${t.replace(/"/g,'""')}"`,X=(...t)=>g(v(t,Q),s),q=(t,a=[1])=>g(v(t,(()=>"$"+a[0]++)),s),Z=(t,a)=>t?.has(a)??!1,tt=t=>c(t)||0==(t=>t?.size??0)(t),at=t=>[...t?.values()??[]],et=(t,a)=>t?.forEach(a),nt=(t,a)=>t?.delete(a),st=JSON.stringify,ot=JSON.parse,it=t=>new Map(t),rt=(t,a)=>t?.get(a),ct=(t,a)=>v([...t?.entries()??[]],(([t,e])=>a(e,t))),lt=(t,a,e)=>c(e)?(nt(t,a),t):t?.set(a,e),yt=(t,a,e,n)=>(Z(t,a)?n?.(rt(t,a)):lt(t,a,e()),rt(t,a)),ut=(t,a,e,n,s=0)=>l((e?yt:rt)(t,a[s],s>d(a)-2?e:it),(o=>{if(s>d(a)-2)return n?.(o)&&lt(t,a[s]),o;const i=ut(o,a,e,n,s+1);return tt(o)&&lt(t,a[s]),i})),wt=/^\d+$/,dt=it(),Et=it(),pt=(t,a,e,s,o,i,r,y={},w=0,E=[])=>{let g,v,h,A=0,N=0,S=0;yt(dt,E,(()=>0)),yt(Et,E,(()=>[]));const b=it(),[C,O,I,L,R]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!_(t)||!_(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!_(t)||!_(a),a.setContent]:p("Store type not supported by this Persister"))(r,t,w),[D,P,M]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?m(t):null)??n+a++,a=>{wt.test(a)&&d(t)<1e3&&T(t,a)}]})(),s=it();return[(e,o,i,r=[],c=()=>[])=>{t??=z;const l=a(1);return lt(s,l,[e,o,i,r,c]),x(ut(o,i??[n],F),l),l},(a,e,...o)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?T(e,t):null===a[n]?et(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(rt(t,a),n+1)));return s(t,0),e})(a,e),(a=>et(a,(a=>rt(s,a)[0](t,...e??[],...o))))),t=>l(rt(s,t),(([,a,o])=>(ut(a,o??[n],void 0,(a=>(nt(a,t),tt(a)?1:0))),lt(s,t),e(t),o))),a=>l(rt(s,a),(([a,,e=[],n,s])=>{const o=(...i)=>{const r=d(i);r==d(e)?a(t,...i,...s(i)):c(e[r])?f(n[r]?.(...i)??[],(t=>o(...i,t))):o(...i,e[r])};o()}))]})(),U=t=>{t!=A&&(A=t,P(b,void 0,A))},j=a=>{(C&&u(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},B=async t=>(2!=A&&(U(1),N++,await k((async()=>{try{const e=await a();u(e)?j(e):t?R(t):p("Content is not an array: "+e)}catch(a){i?.(a),t&&R(t)}U(0)}))),z),H=()=>(v&&(o(v),v=void 0),z),J=async t=>(1!=A&&(U(2),S++,await k((async()=>{try{await e(O,t)}catch(t){i?.(t)}U(0)}))),z),Y=()=>(h&&(t.delListener(h),h=void 0),z),k=async(...t)=>(T(rt(Et,E),...t),await(async()=>{if(!rt(dt,E)){for(lt(dt,E,1);!c(g=m(rt(Et,E)));)try{await g()}catch(t){i?.(t)}lt(dt,E,0)}})(),z),z={load:B,startAutoLoad:async t=>{H(),await B(t);try{v=await s((async(t,a)=>{a||t?2!=A&&(U(1),N++,j(a??t),U(0)):await B()}))}catch(t){i?.(t)}return z},stopAutoLoad:H,isAutoLoading:()=>!c(v),save:J,startAutoSave:async()=>(Y(),await J(),h=t.addDidFinishTransactionListener((()=>{const t=I();L(t)&&J(t)})),z),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>A,addStatusListener:t=>D(t,b),delListener:a=>(M(a),t),schedule:k,getStore:()=>t,destroy:()=>(rt(Et,E).splice(0,void 0),H().stopAutoSave()),getStats:()=>({loads:N,saves:S}),...y};return $(z)},ft=(t,a,e,n,o,i=gt,r,l)=>{const y=it();return[async()=>{y.clear(),v(await e(t,a),(({tn:t,cn:a})=>x(yt(y,t,F),a)))},async(a,e)=>((t,a)=>Z(rt(y,t),a))(a,e)?O(A(v(await t(z+Q(a)),(t=>[t[e],l?D(L(t,e),l):L(t,e)])),(([t,a])=>!c(t)&&!_(a)))):{},async(a,e,n,l,u,w=!1)=>{const d=F();D(n??{},(t=>v(C(t??{}),(t=>x(d,t)))));const p=at(d);if(!w&&u&&h(p)&&Z(y,a))return await t("DROP "+J+Q(a)),void lt(y,a);const f=rt(y,a),m=F(at(f));if(h(p)||(Z(y,a)?await E(v([e,...p],(async(n,s)=>{nt(m,n)||(await t(Y+Q(a)+"ADD"+Q(n)+o),0==s&&await t("CREATE UNIQUE INDEX pk ON "+Q(a)+`(${Q(e)})`),x(f,n))}))):(await t("CREATE "+J+Q(a)+`(${Q(e)}${o} PRIMARY KEY${g(v(p,(t=>s+Q(t)+o)))});`),lt(y,a,F([e,...p])))),await E([...!w&&l?v(at(m),(async n=>{n!=e&&(await t(Y+Q(a)+"DROP"+Q(n)),nt(f,n))})):[]]),w)c(n)?await t(k+Q(a)+H+" true"):await E(R(n,(async(n,s)=>{c(n)?await t(k+Q(a)+H+Q(e)+"=$1",[s]):h(p)||await i(t,a,e,C(n),{[s]:r?v(P(n),r):P(n)},f)})));else if(h(p))Z(y,a)&&await t(k+Q(a)+H+" true");else{const s=A(at(rt(y,a)),(t=>t!=e)),o={},c=[];D(n??{},((t,a)=>{o[a]=v(s,(a=>r?r(t?.[a]):t?.[a])),T(c,a)})),await i(t,a,e,s,o),await t(k+Q(a)+H+Q(e)+`NOT IN(${q(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},gt=async(t,a,e,n,o)=>{const i=[1];await t("INSERT INTO"+Q(a)+"("+X(e,...n)+")VALUES"+g(R(o,(t=>"($"+i[0]+++","+q(t,i)+")")),s)+"ON CONFLICT("+Q(e)+")DO UPDATE SET"+g(v(n,(t=>Q(t)+"=excluded."+Q(t))),s),R(o,((t,a)=>[a,...v(t,(t=>t??null))])).flat())},vt=(t,a,e,n,s,o,i,[r,c,l],y,u,w,d,E,p)=>{const[f,g,v,h]=ft(a,y,u,s,E,p),A=pt(t,(async()=>await h((async()=>{return await f(),t=(await g(r,c))[U]?.[l]??"null",ot(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await v(r,c,{[U]:{[l]:(a=t()??null,st(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,i,{[d]:()=>w,destroy:()=>(A.stopAutoLoad().stopAutoSave(),o(),A)},0,w);return A},ht=(t,a,e,n,s,o,i,[r,l,[y,u,w]],d,p,f,g,v,h,T,m)=>{const[N,S,b,C]=ft(a,d,p,s,v,h,T,m),$=async(t,a)=>await E(ct(l,(async([e,n,s,o],i)=>{a&&!(i in t)||await b(e,n,t[i],s,o,a)}))),I=async(t,a)=>u?await b(w,j,{[U]:t},!0,!0,a):null,L=pt(t,(async()=>await C((async()=>{await N();const t=await(async()=>O(A(await E(ct(r,(async([t,a],e)=>[t,await S(e,a)]))),(t=>!_(t[1])))))(),a=await(async()=>y?(await S(w,j))[U]:{})();return _(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await C((async()=>{if(await N(),c(a)){const[a,e]=t();await $(a),await I(e)}else await $(a[0],!0),await I(a[1],!0)}))),e,n,s,i,{[g]:()=>f,destroy:()=>(L.stopAutoLoad().stopAutoSave(),o(),L)},0,f);return L},At="ColumnName",Tt="store",mt="json",Nt=Tt+"TableName",St=Tt+"Id"+At,bt=Tt+At,Ct="autoLoadIntervalSeconds",$t="rowId"+At,Ot="tableId",It="tableName",Lt="deleteEmptyColumns",Rt="deleteEmptyTable",Dt={mode:mt,[Ct]:1},Pt={load:0,save:0,[It]:e+"_values"},Mt=(t,a,e,n,s)=>{const o=it();return D(t,((t,i)=>{const r=w(P(I(a,y(t)?{[e]:t}:t)),0,M(a));c(r[0])||n(i,r[0])||(s(i,r[0]),lt(o,i,r))})),o},_t=(t,a,s,o,i,c,l,u,d,E,p="getDb",f)=>{let g,v,h;const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[T,m,N,S]=(t=>{const a=(t=>I(Dt,y(t)?{[Nt]:t}:t??{}))(t),n=a[Ct];if(a.mode==mt){const t=a[Nt]??e;return[1,n,[t,a[St]??j,a[bt]??Tt],F(t)]}const{tables:{load:s={},save:o={}}={},values:i={}}=a,r=w(P(I(Pt,i)),0,M(Pt)),c=r[2],l=F(c),u=F(c);return[0,n,[Mt(s,{[Ot]:null,[$t]:j},Ot,(t=>Z(u,t)),(t=>x(l,t))),Mt(o,{[It]:null,[$t]:j,[Lt]:0,[Rt]:0},It,((t,a)=>Z(u,a)),((t,a)=>x(l,a))),r],l]})(a);return(T?vt:ht)(t,A,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await A(`${B} ${V} d,${W} s,TOTAL_CHANGES() c FROM ${G}${V} JOIN ${G}${W}`);a==g&&e==v&&n==h||(null!=g&&t(),g=a,v=e,h=n)}catch{}}),1e3*m),n=()=>{g=v=h=null,r(a)},s=o((a=>{S.has(a)&&(n(),t(),e())}));return e(),()=>{n(),i(s)}}),(t=>t()),l,u,d,N,at(S),(async(t,a)=>await t(`${B} t.name tn,c.name cn FROM ${K}list()t,${K}info(t.name)c ${H} t.schema='main'AND t.type IN('table','view')AND t.name IN(${q(a)})ORDER BY t.name,c.name`,a)),E,p,n,f,(t=>!0===t?1:!1===t?0:t),void 0)},Ft=async(t,a,e,n,o,i)=>{const r=[1],c=F(n),l=i?A([...i],(t=>t!=e&&!Z(c,t))):[];if(!h(l)){const n=C(o),s=O(v(await t("SELECT"+X(e,...l)+"FROM"+Q(a)+"WHERE"+Q(e)+"IN("+q(n)+")",n),(t=>[t[e],t])));f(n,(t=>T(o[t],...v(l,(a=>s?.[t]?.[a]??null)))))}await t("INSERT OR REPLACE INTO"+Q(a)+"("+X(e,...n,...l)+")VALUES"+g(R(o,(t=>"($"+r[0]+++","+q(t,r)+")")),s),R(o,((t,a)=>[a,...v(t,(t=>t??null))])).flat())};t.createPowerSyncPersister=(t,a,e,n,s)=>{let o;return _t(t,e,(async(t,e=[])=>a.execute(t,e).then((t=>t.rows?._array??[]))),(t=>{const e=new AbortController,n=a.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const t of n)o&&v(t.changedTables,o)})(),o=t,e}),(t=>{o=void 0,t.abort()}),n,s,(()=>0),1,a,"getPowerSync",Ft)}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPowersync={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",o=a(n),r=Promise,i=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),y=t=>a(t)==o,u=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,E=async t=>r.all(t),p=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),v=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==d(t),A=(t,a)=>t.filter(a),T=(t,...a)=>t.push(...a),m=t=>t.shift(),N=Object,S=t=>N.getPrototypeOf(t),b=N.entries,C=N.keys,$=N.freeze,O=(t=[])=>N.fromEntries(t),I=(...t)=>N.assign({},...t),L=(t,a)=>(delete t[a],t),R=(t,a)=>g(b(t),(([t,e])=>a(e,t))),D=t=>N.values(t),P=t=>d(C(t)),M=t=>(t=>!c(t)&&l(S(t),(t=>t==N.prototype||c(S(t))),(()=>!0)))(t)&&0==P(t),_=t=>new Set(u(t)||c(t)?t:[t]),F=(t,a)=>t?.add(a),x="_",U="_id",j="SELECT",B="WHERE",H="TABLE",J="ALTER "+H,Y="DELETE FROM",k=j+"*FROM",z="pragma_",G="data_version",V="schema_version",W="pragma_table_",K=t=>`"${t.replace(/"/g,'""')}"`,Q=(...t)=>v(g(t,K),s),X=(t,a=[1])=>v(g(t,(()=>"$"+a[0]++)),s),q=(t,a)=>t?.has(a)??!1,Z=t=>c(t)||0==(t=>t?.size??0)(t),tt=t=>[...t?.values()??[]],at=(t,a)=>t?.forEach(a),et=(t,a)=>t?.delete(a),nt=JSON.stringify,st=JSON.parse,ot=t=>new Map(t),rt=(t,a)=>t?.get(a),it=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),ct=(t,a,e)=>c(e)?(et(t,a),t):t?.set(a,e),lt=(t,a,e,n)=>(q(t,a)?n?.(rt(t,a)):ct(t,a,e()),rt(t,a)),yt=(t,a,e,n,s=0)=>l((e?lt:rt)(t,a[s],s>d(a)-2?e:ot),(o=>{if(s>d(a)-2)return n?.(o)&&ct(t,a[s]),o;const r=yt(o,a,e,n,s+1);return Z(o)&&ct(t,a[s]),r})),ut=/^\d+$/,wt=ot(),dt=ot(),Et=(t,a,e,s,o,r,i,y={},w=0,E=[])=>{let v,g,h,A=0,N=0,S=0;lt(wt,E,(()=>0)),lt(dt,E,(()=>[]));const b=ot(),[C,O,I,L,R]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!M(t)||!M(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!M(t)||!M(a),a.setContent]:p("Store type not supported by this Persister"))(i,t,w),[D,P,x]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?m(t):null)??n+a++,a=>{ut.test(a)&&d(t)<1e3&&T(t,a)}]})(),s=ot();return[(e,o,r,i=[],c=()=>[])=>{t??=z;const l=a(1);return ct(s,l,[e,o,r,i,c]),F(yt(o,r??[n],_),l),l},(a,e,...o)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?T(e,t):null===a[n]?at(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(rt(t,a),n+1)));return s(t,0),e})(a,e),(a=>at(a,(a=>rt(s,a)[0](t,...e??[],...o))))),t=>l(rt(s,t),(([,a,o])=>(yt(a,o??[n],void 0,(a=>(et(a,t),Z(a)?1:0))),ct(s,t),e(t),o))),a=>l(rt(s,a),(([a,,e=[],n,s])=>{const o=(...r)=>{const i=d(r);i==d(e)?a(t,...r,...s(r)):c(e[i])?f(n[i]?.(...r)??[],(t=>o(...r,t))):o(...r,e[i])};o()}))]})(),U=t=>{t!=A&&(A=t,P(b,void 0,A))},j=a=>{(C&&u(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},B=async t=>(2!=A&&(U(1),N++,await k((async()=>{try{const e=await a();u(e)?j(e):t?R(t):p("Content is not an array: "+e)}catch(a){r?.(a),t&&R(t)}U(0)}))),z),H=()=>(g&&(o(g),g=void 0),z),J=async t=>(1!=A&&(U(2),S++,await k((async()=>{try{await e(O,t)}catch(t){r?.(t)}U(0)}))),z),Y=()=>(h&&(t.delListener(h),h=void 0),z),k=async(...t)=>(T(rt(dt,E),...t),await(async()=>{if(!rt(wt,E)){for(ct(wt,E,1);!c(v=m(rt(dt,E)));)try{await v()}catch(t){r?.(t)}ct(wt,E,0)}})(),z),z={load:B,startAutoLoad:async t=>{H(),await B(t);try{g=await s((async(t,a)=>{a||t?2!=A&&(U(1),N++,j(a??t),U(0)):await B()}))}catch(t){r?.(t)}return z},stopAutoLoad:H,isAutoLoading:()=>!c(g),save:J,startAutoSave:async()=>(Y(),await J(),h=t.addDidFinishTransactionListener((()=>{const t=I();L(t)&&J(t)})),z),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>A,addStatusListener:t=>D(t,b),delListener:a=>(x(a),t),schedule:k,getStore:()=>t,destroy:()=>(rt(dt,E).splice(0,void 0),H().stopAutoSave()),getStats:()=>({loads:N,saves:S}),...y};return $(z)},pt=(t,a,e,n,o,r=ft,i,l)=>{const y=ot();return[async()=>{y.clear(),g(await e(t,a),(({tn:t,cn:a})=>F(lt(y,t,_),a)))},async(a,e)=>((t,a)=>q(rt(y,t),a))(a,e)?O(A(g(await t(k+K(a)),(t=>{return[t[e],l?(a=L(t,e),n=l,O(R(a,((t,a)=>[a,n(t,a)])))):L(t,e)];var a,n})),(([t,a])=>!c(t)&&!M(a)))):{},async(a,e,n,l,u,w=!1)=>{const d=_();R(n??{},(t=>g(C(t??{}),(t=>F(d,t)))));const p=tt(d);if(!w&&u&&h(p)&&q(y,a))return await t("DROP "+H+K(a)),void ct(y,a);const f=rt(y,a),m=_(tt(f));if(h(p)||(q(y,a)?await E(g([e,...p],(async(n,s)=>{et(m,n)||(await t(J+K(a)+"ADD"+K(n)+o),0==s&&await t("CREATE UNIQUE INDEX pk ON "+K(a)+`(${K(e)})`),F(f,n))}))):(await t("CREATE "+H+K(a)+`(${K(e)}${o} PRIMARY KEY${v(g(p,(t=>s+K(t)+o)))});`),ct(y,a,_([e,...p])))),await E([...!w&&l?g(tt(m),(async n=>{n!=e&&(await t(J+K(a)+"DROP"+K(n)),et(f,n))})):[]]),w)c(n)?await t(Y+K(a)+B+" true"):await E(R(n,(async(n,s)=>{c(n)?await t(Y+K(a)+B+K(e)+"=$1",[s]):h(p)||await r(t,a,e,C(n),{[s]:i?g(D(n),i):D(n)},f)})));else if(h(p))q(y,a)&&await t(Y+K(a)+B+" true");else{const s=A(tt(rt(y,a)),(t=>t!=e)),o={},c=[];R(n??{},((t,a)=>{o[a]=g(s,(a=>i?i(t?.[a]):t?.[a])),T(c,a)})),await r(t,a,e,s,o),await t(Y+K(a)+B+K(e)+`NOT IN(${X(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},ft=async(t,a,e,n,o)=>{const r=[1];await t("INSERT INTO"+K(a)+"("+Q(e,...n)+")VALUES"+v(R(o,(t=>"($"+r[0]+++","+X(t,r)+")")),s)+"ON CONFLICT("+K(e)+")DO UPDATE SET"+v(g(n,(t=>K(t)+"=excluded."+K(t))),s),R(o,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},vt=(t,a,e,n,s,o,r,[i,c,l],y,u,w,d,E,p)=>{const[f,v,g,h]=pt(a,y,u,s,E,p),A=Et(t,(async()=>await h((async()=>{return await f(),t=(await v(i,c))[x]?.[l]??"null",st(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(i,c,{[x]:{[l]:(a=t()??null,nt(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,r,{[d]:()=>w,destroy:()=>(A.stopAutoLoad().stopAutoSave(),o(),A)},0,w);return A},gt=(t,a,e,n,s,o,r,[i,l,[y,u,w]],d,p,f,v,g,h,T,m)=>{const[N,S,b,C]=pt(a,d,p,s,g,h,T,m),$=async(t,a)=>await E(it(l,(async([e,n,s,o],r)=>{a&&!(r in t)||await b(e,n,t[r],s,o,a)}))),I=async(t,a)=>u?await b(w,U,{[x]:t},!0,!0,a):null,L=Et(t,(async()=>await C((async()=>{await N();const t=await(async()=>O(A(await E(it(i,(async([t,a],e)=>[t,await S(e,a)]))),(t=>!M(t[1])))))(),a=await(async()=>y?(await S(w,U))[x]:{})();return M(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await C((async()=>{if(await N(),c(a)){const[a,e]=t();await $(a),await I(e)}else await $(a[0],!0),await I(a[1],!0)}))),e,n,s,r,{[v]:()=>f,destroy:()=>(L.stopAutoLoad().stopAutoSave(),o(),L)},0,f);return L},ht="ColumnName",At="store",Tt="json",mt=At+"TableName",Nt=At+"Id"+ht,St=At+ht,bt="autoLoadIntervalSeconds",Ct="rowId"+ht,$t="tableId",Ot="tableName",It="deleteEmptyColumns",Lt="deleteEmptyTable",Rt={mode:Tt,[bt]:1},Dt={load:0,save:0,[Ot]:e+"_values"},Pt=(t,a,e,n,s)=>{const o=ot();return R(t,((t,r)=>{const i=w(D(I(a,y(t)?{[e]:t}:t)),0,P(a));c(i[0])||n(r,i[0])||(s(r,i[0]),ct(o,r,i))})),o},Mt=(t,a,s,o,r,c,l,u,d,E,p="getDb",f)=>{let v,g,h;const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[T,m,N,S]=(t=>{const a=(t=>I(Rt,y(t)?{[mt]:t}:t??{}))(t),n=a[bt];if(a.mode==Tt){const t=a[mt]??e;return[1,n,[t,a[Nt]??U,a[St]??At],_(t)]}const{tables:{load:s={},save:o={}}={},values:r={}}=a,i=w(D(I(Dt,r)),0,P(Dt)),c=i[2],l=_(c),u=_(c);return[0,n,[Pt(s,{[$t]:null,[Ct]:U},$t,(t=>q(u,t)),(t=>F(l,t))),Pt(o,{[Ot]:null,[Ct]:U,[It]:0,[Lt]:0},Ot,((t,a)=>q(u,a)),((t,a)=>F(l,a))),i],l]})(a);return(T?vt:gt)(t,A,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await A(`${j} ${G} d,${V} s,TOTAL_CHANGES() c FROM ${z}${G} JOIN ${z}${V}`);a==v&&e==g&&n==h||(null!=v&&t(),v=a,g=e,h=n)}catch{}}),1e3*m),n=()=>{v=g=h=null,i(a)},s=o((a=>{S.has(a)&&(n(),t(),e())}));return e(),()=>{n(),r(s)}}),(t=>t()),l,u,d,N,tt(S),(async(t,a)=>await t(`${j} t.name tn,c.name cn FROM ${W}list()t,${W}info(t.name)c ${B} t.schema='main'AND t.type IN('table','view')AND t.name IN(${X(a)})ORDER BY t.name,c.name`,a)),E,p,n,f,(t=>!0===t?1:!1===t?0:t),void 0)},_t=async(t,a,e,n,o,r)=>{const i=[1],c=_(n),l=r?A([...r],(t=>t!=e&&!q(c,t))):[];if(!h(l)){const n=C(o),s=O(g(await t("SELECT"+Q(e,...l)+"FROM"+K(a)+"WHERE"+K(e)+"IN("+X(n)+")",n),(t=>[t[e],t])));f(n,(t=>T(o[t],...g(l,(a=>s?.[t]?.[a]??null)))))}await t("INSERT OR REPLACE INTO"+K(a)+"("+Q(e,...n,...l)+")VALUES"+v(R(o,(t=>"($"+i[0]+++","+X(t,i)+")")),s),R(o,((t,a)=>[a,...g(t,(t=>t??null))])).flat())};t.createPowerSyncPersister=(t,a,e,n,s)=>{let o;return Mt(t,e,(async(t,e=[])=>a.execute(t,e).then((t=>t.rows?._array??[]))),(t=>{const e=new AbortController,n=a.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const t of n)o&&g(t.changedTables,o)})(),o=t,e}),(t=>{o=void 0,t.abort()}),n,s,(()=>0),1,a,"getPowerSync",_t)}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPowersync={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",o=a(n),i=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),y=t=>a(t)==o,u=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,E=async t=>i.all(t),p=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),g=(t,a="")=>t.join(a),v=(t,a)=>t.map(a),h=t=>0==d(t),A=(t,a)=>t.filter(a),T=(t,...a)=>t.push(...a),m=t=>t.shift(),N=Object,S=t=>N.getPrototypeOf(t),b=N.entries,C=N.keys,$=N.freeze,O=(t=[])=>N.fromEntries(t),I=(...t)=>N.assign({},...t),L=(t,a)=>(delete t[a],t),R=(t,a)=>v(b(t),(([t,e])=>a(e,t))),D=(t,a)=>O(R(t,((t,e)=>[e,a(t,e)]))),P=t=>N.values(t),M=t=>d(C(t)),_=t=>(t=>!c(t)&&l(S(t),(t=>t==N.prototype||c(S(t))),(()=>!0)))(t)&&0==M(t),F=t=>new Set(u(t)||c(t)?t:[t]),x=(t,a)=>t?.add(a),U="_",j="_id",B="SELECT",H="WHERE",J="TABLE",Y="ALTER "+J,k="DELETE FROM",z=B+"*FROM",G="pragma_",V="data_version",W="schema_version",K="pragma_table_",Q=t=>`"${t.replace(/"/g,'""')}"`,X=(...t)=>g(v(t,Q),s),q=(t,a=[1])=>g(v(t,(()=>"$"+a[0]++)),s),Z=(t,a)=>t?.has(a)??!1,tt=t=>c(t)||0==(t=>t?.size??0)(t),at=t=>[...t?.values()??[]],et=(t,a)=>t?.forEach(a),nt=(t,a)=>t?.delete(a),st=JSON.stringify,ot=JSON.parse,it=t=>new Map(t),rt=(t,a)=>t?.get(a),ct=(t,a)=>v([...t?.entries()??[]],(([t,e])=>a(e,t))),lt=(t,a,e)=>c(e)?(nt(t,a),t):t?.set(a,e),yt=(t,a,e,n)=>(Z(t,a)?n?.(rt(t,a)):lt(t,a,e()),rt(t,a)),ut=(t,a,e,n,s=0)=>l((e?yt:rt)(t,a[s],s>d(a)-2?e:it),(o=>{if(s>d(a)-2)return n?.(o)&&lt(t,a[s]),o;const i=ut(o,a,e,n,s+1);return tt(o)&&lt(t,a[s]),i})),wt=/^\d+$/,dt=it(),Et=it(),pt=(t,a,e,s,o,i,r,y={},w=0,E=[])=>{let g,v,h,A=0,N=0,S=0;yt(dt,E,(()=>0)),yt(Et,E,(()=>[]));const b=it(),[C,O,I,L,R]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!_(t)||!_(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!_(t)||!_(a),a.setContent]:p("Store type not supported by this Persister"))(r,t,w),[D,P,M]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?m(t):null)??n+a++,a=>{wt.test(a)&&d(t)<1e3&&T(t,a)}]})(),s=it();return[(e,o,i,r=[],c=()=>[])=>{t??=z;const l=a(1);return lt(s,l,[e,o,i,r,c]),x(ut(o,i??[n],F),l),l},(a,e,...o)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?T(e,t):null===a[n]?et(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(rt(t,a),n+1)));return s(t,0),e})(a,e),(a=>et(a,(a=>rt(s,a)[0](t,...e??[],...o))))),t=>l(rt(s,t),(([,a,o])=>(ut(a,o??[n],void 0,(a=>(nt(a,t),tt(a)?1:0))),lt(s,t),e(t),o))),a=>l(rt(s,a),(([a,,e=[],n,s])=>{const o=(...i)=>{const r=d(i);r==d(e)?a(t,...i,...s(i)):c(e[r])?f(n[r]?.(...i)??[],(t=>o(...i,t))):o(...i,e[r])};o()}))]})(),U=t=>{t!=A&&(A=t,P(b,void 0,A))},j=a=>{(C&&u(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},B=async t=>(2!=A&&(U(1),N++,await k((async()=>{try{const e=await a();u(e)?j(e):t?R(t):p("Content is not an array: "+e)}catch(a){i?.(a),t&&R(t)}U(0)}))),z),H=()=>(v&&(o(v),v=void 0),z),J=async t=>(1!=A&&(U(2),S++,await k((async()=>{try{await e(O,t)}catch(t){i?.(t)}U(0)}))),z),Y=()=>(h&&(t.delListener(h),h=void 0),z),k=async(...t)=>(T(rt(Et,E),...t),await(async()=>{if(!rt(dt,E)){for(lt(dt,E,1);!c(g=m(rt(Et,E)));)try{await g()}catch(t){i?.(t)}lt(dt,E,0)}})(),z),z={load:B,startAutoLoad:async t=>{H(),await B(t);try{v=await s((async(t,a)=>{a||t?2!=A&&(U(1),N++,j(a??t),U(0)):await B()}))}catch(t){i?.(t)}return z},stopAutoLoad:H,isAutoLoading:()=>!c(v),save:J,startAutoSave:async()=>(Y(),await J(),h=t.addDidFinishTransactionListener((()=>{const t=I();L(t)&&J(t)})),z),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>A,addStatusListener:t=>D(t,b),delListener:a=>(M(a),t),schedule:k,getStore:()=>t,destroy:()=>(rt(Et,E).splice(0,void 0),H().stopAutoSave()),getStats:()=>({loads:N,saves:S}),...y};return $(z)},ft=(t,a,e,n,o,i=gt,r,l)=>{const y=it();return[async()=>{y.clear(),v(await e(t,a),(({tn:t,cn:a})=>x(yt(y,t,F),a)))},async(a,e)=>((t,a)=>Z(rt(y,t),a))(a,e)?O(A(v(await t(z+Q(a)),(t=>[t[e],l?D(L(t,e),l):L(t,e)])),(([t,a])=>!c(t)&&!_(a)))):{},async(a,e,n,l,u,w=!1)=>{const d=F();D(n??{},(t=>v(C(t??{}),(t=>x(d,t)))));const p=at(d);if(!w&&u&&h(p)&&Z(y,a))return await t("DROP "+J+Q(a)),void lt(y,a);const f=rt(y,a),m=F(at(f));if(h(p)||(Z(y,a)?await E(v([e,...p],(async(n,s)=>{nt(m,n)||(await t(Y+Q(a)+"ADD"+Q(n)+o),0==s&&await t("CREATE UNIQUE INDEX pk ON "+Q(a)+`(${Q(e)})`),x(f,n))}))):(await t("CREATE "+J+Q(a)+`(${Q(e)}${o} PRIMARY KEY${g(v(p,(t=>s+Q(t)+o)))});`),lt(y,a,F([e,...p])))),await E([...!w&&l?v(at(m),(async n=>{n!=e&&(await t(Y+Q(a)+"DROP"+Q(n)),nt(f,n))})):[]]),w)c(n)?await t(k+Q(a)+H+" true"):await E(R(n,(async(n,s)=>{c(n)?await t(k+Q(a)+H+Q(e)+"=$1",[s]):h(p)||await i(t,a,e,C(n),{[s]:r?v(P(n),r):P(n)},f)})));else if(h(p))Z(y,a)&&await t(k+Q(a)+H+" true");else{const s=A(at(rt(y,a)),(t=>t!=e)),o={},c=[];D(n??{},((t,a)=>{o[a]=v(s,(a=>r?r(t?.[a]):t?.[a])),T(c,a)})),await i(t,a,e,s,o),await t(k+Q(a)+H+Q(e)+`NOT IN(${q(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},gt=async(t,a,e,n,o)=>{const i=[1];await t("INSERT INTO"+Q(a)+"("+X(e,...n)+")VALUES"+g(R(o,(t=>"($"+i[0]+++","+q(t,i)+")")),s)+"ON CONFLICT("+Q(e)+")DO UPDATE SET"+g(v(n,(t=>Q(t)+"=excluded."+Q(t))),s),R(o,((t,a)=>[a,...v(t,(t=>t??null))])).flat())},vt=(t,a,e,n,s,o,i,[r,c,l],y,u,w,d,E,p)=>{const[f,g,v,h]=ft(a,y,u,s,E,p),A=pt(t,(async()=>await h((async()=>{return await f(),t=(await g(r,c))[U]?.[l]??"null",ot(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await v(r,c,{[U]:{[l]:(a=t()??null,st(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,i,{[d]:()=>w,destroy:()=>(A.stopAutoLoad().stopAutoSave(),o(),A)},0,w);return A},ht=(t,a,e,n,s,o,i,[r,l,[y,u,w]],d,p,f,g,v,h,T,m)=>{const[N,S,b,C]=ft(a,d,p,s,v,h,T,m),$=async(t,a)=>await E(ct(l,(async([e,n,s,o],i)=>{a&&!(i in t)||await b(e,n,t[i],s,o,a)}))),I=async(t,a)=>u?await b(w,j,{[U]:t},!0,!0,a):null,L=pt(t,(async()=>await C((async()=>{await N();const t=await(async()=>O(A(await E(ct(r,(async([t,a],e)=>[t,await S(e,a)]))),(t=>!_(t[1])))))(),a=await(async()=>y?(await S(w,j))[U]:{})();return _(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await C((async()=>{if(await N(),c(a)){const[a,e]=t();await $(a),await I(e)}else await $(a[0],!0),await I(a[1],!0)}))),e,n,s,i,{[g]:()=>f,destroy:()=>(L.stopAutoLoad().stopAutoSave(),o(),L)},0,f);return L},At="ColumnName",Tt="store",mt="json",Nt=Tt+"TableName",St=Tt+"Id"+At,bt=Tt+At,Ct="autoLoadIntervalSeconds",$t="rowId"+At,Ot="tableId",It="tableName",Lt="deleteEmptyColumns",Rt="deleteEmptyTable",Dt={mode:mt,[Ct]:1},Pt={load:0,save:0,[It]:e+"_values"},Mt=(t,a,e,n,s)=>{const o=it();return D(t,((t,i)=>{const r=w(P(I(a,y(t)?{[e]:t}:t)),0,M(a));c(r[0])||n(i,r[0])||(s(i,r[0]),lt(o,i,r))})),o},_t=(t,a,s,o,i,c,l,u,d,E,p="getDb",f)=>{let g,v,h;const A=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[T,m,N,S]=(t=>{const a=(t=>I(Dt,y(t)?{[Nt]:t}:t??{}))(t),n=a[Ct];if(a.mode==mt){const t=a[Nt]??e;return[1,n,[t,a[St]??j,a[bt]??Tt],F(t)]}const{tables:{load:s={},save:o={}}={},values:i={}}=a,r=w(P(I(Pt,i)),0,M(Pt)),c=r[2],l=F(c),u=F(c);return[0,n,[Mt(s,{[Ot]:null,[$t]:j},Ot,(t=>Z(u,t)),(t=>x(l,t))),Mt(o,{[It]:null,[$t]:j,[Lt]:0,[Rt]:0},It,((t,a)=>Z(u,a)),((t,a)=>x(l,a))),r],l]})(a);return(T?vt:ht)(t,A,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await A(`${B} ${V} d,${W} s,TOTAL_CHANGES() c FROM ${G}${V} JOIN ${G}${W}`);a==g&&e==v&&n==h||(null!=g&&t(),g=a,v=e,h=n)}catch{}}),1e3*m),n=()=>{g=v=h=null,r(a)},s=o((a=>{S.has(a)&&(n(),t(),e())}));return e(),()=>{n(),i(s)}}),(t=>t()),l,u,d,N,at(S),(async(t,a)=>await t(`${B} t.name tn,c.name cn FROM ${K}list()t,${K}info(t.name)c ${H} t.schema='main'AND t.type IN('table','view')AND t.name IN(${q(a)})ORDER BY t.name,c.name`,a)),E,p,n,f,(t=>!0===t?1:!1===t?0:t),void 0)},Ft=async(t,a,e,n,o,i)=>{const r=[1],c=F(n),l=i?A([...i],(t=>t!=e&&!Z(c,t))):[];if(!h(l)){const n=C(o),s=O(v(await t("SELECT"+X(e,...l)+"FROM"+Q(a)+"WHERE"+Q(e)+"IN("+q(n)+")",n),(t=>[t[e],t])));f(n,(t=>T(o[t],...v(l,(a=>s?.[t]?.[a]??null)))))}await t("INSERT OR REPLACE INTO"+Q(a)+"("+X(e,...n,...l)+")VALUES"+g(R(o,(t=>"($"+r[0]+++","+q(t,r)+")")),s),R(o,((t,a)=>[a,...v(t,(t=>t??null))])).flat())};t.createPowerSyncPersister=(t,a,e,n,s)=>{let o;return _t(t,e,(async(t,e=[])=>a.execute(t,e).then((t=>t.rows?._array??[]))),(t=>{const e=new AbortController,n=a.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const t of n)o&&v(t.changedTables,o)})(),o=t,e}),(t=>{o=void 0,t.abort()}),n,s,(()=>0),1,a,"getPowerSync",Ft)}},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPowersync={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),d=(t,a,e)=>t.slice(a,e),w=t=>t.length,p=async t=>o.all(t),v=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),E=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==w(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",R="pragma_",D="data_version",_="schema_version",M="pragma_table_",P=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>E(g(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),k=t=>[...t?.values()??[]],q=(t,a)=>t?.forEach(a),B=(t,a)=>t?.delete(a),U=Object,J=t=>U.getPrototypeOf(t),W=U.entries,Y=U.keys,z=U.freeze,G=(t=[])=>U.fromEntries(t),H=(...t)=>U.assign({},...t),V=(t,a)=>(delete t[a],t),K=(t,a)=>g(W(t),(([t,e])=>a(e,t))),Q=t=>U.values(t),X=t=>w(Y(t)),Z=t=>(t=>!c(t)&&l(J(t),(t=>t==U.prototype||c(J(t))),(()=>!0)))(t)&&0==X(t),tt=JSON.stringify,at=JSON.parse,et=t=>new Map(t),nt=(t,a)=>t?.get(a),st=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),it=(t,a,e)=>c(e)?(B(t,a),t):t?.set(a,e),ot=(t,a,e,n)=>(j(t,a)?n?.(nt(t,a)):it(t,a,e()),nt(t,a)),rt=(t,a,e,n,s=0)=>l((e?ot:nt)(t,a[s],s>w(a)-2?e:et),(i=>{if(s>w(a)-2)return n?.(i)&&it(t,a[s]),i;const o=rt(i,a,e,n,s+1);return x(i)&&it(t,a[s]),o})),ct=t=>new Set(y(t)||c(t)?t:[t]),lt=(t,a)=>t?.add(a),ut=/^\d+$/,yt=et(),dt=et(),wt=(t,a,e,s,i,o,r,u={},d=0,p=[])=>{let E,g,h,m=0,S=0,T=0;ot(yt,p,(()=>0)),ot(dt,p,(()=>[]));const $=et(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!Z(t)||!Z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!Z(t)||!Z(a),a.setContent]:v("Store type not supported by this Persister"))(r,t,d),[R,D,_]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{ut.test(a)&&w(t)<1e3&&A(t,a)}]})(),s=et();return[(e,i,o,r=[],c=()=>[])=>{t??=W;const l=a(1);return it(s,l,[e,i,o,r,c]),lt(rt(i,o??[n],ct),l),l},(a,e,...i)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==w(a)?A(e,t):null===a[n]?q(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(nt(t,a),n+1)));return s(t,0),e})(a,e),(a=>q(a,(a=>nt(s,a)[0](t,...e??[],...i))))),t=>l(nt(s,t),(([,a,i])=>(rt(a,i??[n],void 0,(a=>(B(a,t),x(a)?1:0))),it(s,t),e(t),i))),a=>l(nt(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=w(o);r==w(e)?a(t,...o,...s(o)):c(e[r])?f(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),M=t=>{t!=m&&(m=t,D($,void 0,m))},P=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(M(1),S++,await J((async()=>{try{const e=await a();y(e)?P(e):t?L(t):v("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}M(0)}))),W),j=()=>(g&&(i(g),g=void 0),W),k=async t=>(1!=m&&(M(2),T++,await J((async()=>{try{await e(C,t)}catch(t){o?.(t)}M(0)}))),W),U=()=>(h&&(t.delListener(h),h=void 0),W),J=async(...t)=>(A(nt(dt,p),...t),await(async()=>{if(!nt(yt,p)){for(it(yt,p,1);!c(E=N(nt(dt,p)));)try{await E()}catch(t){o?.(t)}it(yt,p,0)}})(),W),W={load:F,startAutoLoad:async t=>{j(),await F(t);try{g=await s((async(t,a)=>{a||t?2!=m&&(M(1),S++,P(a??t),M(0)):await F()}))}catch(t){o?.(t)}return W},stopAutoLoad:j,isAutoLoading:()=>!c(g),save:k,startAutoSave:async()=>(U(),await k(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&k(t)})),W),stopAutoSave:U,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>R(t,$),delListener:a=>(_(a),t),schedule:J,getStore:()=>t,destroy:()=>(nt(dt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return z(W)},pt=(t,a,e,n,i,o=vt,r,l)=>{const u=et();return[async()=>{u.clear(),g(await e(t,a),(({tn:t,cn:a})=>lt(ot(u,t,ct),a)))},async(a,e)=>((t,a)=>j(nt(u,t),a))(a,e)?G(m(g(await t(L+P(a)),(t=>{return[t[e],l?(a=V(t,e),n=l,G(K(a,((t,a)=>[a,n(t,a)])))):V(t,e)];var a,n})),(([t,a])=>!c(t)&&!Z(a)))):{},async(a,e,n,l,y,d=!1)=>{const w=ct();K(n??{},(t=>g(Y(t??{}),(t=>lt(w,t)))));const v=k(w);if(!d&&y&&h(v)&&j(u,a))return await t("DROP "+C+P(a)),void it(u,a);const f=nt(u,a),N=ct(k(f));if(h(v)||(j(u,a)?await p(g([e,...v],(async(n,s)=>{B(N,n)||(await t(O+P(a)+"ADD"+P(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+P(a)+`(${P(e)})`),lt(f,n))}))):(await t("CREATE "+C+P(a)+`(${P(e)}${i} PRIMARY KEY${E(g(v,(t=>s+P(t)+i)))});`),it(u,a,ct([e,...v])))),await p([...!d&&l?g(k(N),(async n=>{n!=e&&(await t(O+P(a)+"DROP"+P(n)),B(f,n))})):[]]),d)c(n)?await t(I+P(a)+b+" true"):await p(K(n,(async(n,s)=>{c(n)?await t(I+P(a)+b+P(e)+"=$1",[s]):h(v)||await o(t,a,e,Y(n),{[s]:r?g(Q(n),r):Q(n)},f)})));else if(h(v))j(u,a)&&await t(I+P(a)+b+" true");else{const s=m(k(nt(u,a)),(t=>t!=e)),i={},c=[];K(n??{},((t,a)=>{i[a]=g(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+P(a)+b+P(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},vt=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+P(a)+"("+((...t)=>E(g(t,P),s))(e,...n)+")VALUES"+E(K(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+P(e)+")DO UPDATE SET"+E(g(n,(t=>P(t)+"=excluded."+P(t))),s),K(i,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},ft=(t,a,e,n,s,i,o,[r,c,l],u,y,d,w,p,v)=>{const[f,E,g,h]=pt(a,u,y,s,p,v),m=wt(t,(async()=>await h((async()=>{return await f(),t=(await E(r,c))[S]?.[l]??"null",at(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(r,c,{[S]:{[l]:(a=t()??null,tt(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[w]:()=>d,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,d);return m},Et=(t,a,e,n,s,i,o,[r,l,[u,y,d]],w,v,f,E,g,h,A,N)=>{const[$,b,C,O]=pt(a,w,v,s,g,h,A,N),I=async(t,a)=>await p(st(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(d,T,{[S]:t},!0,!0,a):null,R=wt(t,(async()=>await O((async()=>{await $();const t=await(async()=>G(m(await p(st(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!Z(t[1])))))(),a=await(async()=>u?(await b(d,T))[S]:{})();return Z(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[E]:()=>f,destroy:()=>(R.stopAutoLoad().stopAutoSave(),i(),R)},0,f);return R},gt="ColumnName",ht="store",mt="json",At=ht+"TableName",Nt=ht+"Id"+gt,St=ht+gt,Tt="autoLoadIntervalSeconds",$t="rowId"+gt,bt="tableId",Ct="tableName",Ot="deleteEmptyColumns",It="deleteEmptyTable",Lt={mode:mt,[Tt]:1},Rt={load:0,save:0,[Ct]:e+"_values"},Dt=(t,a,e,n,s)=>{const i=et();return K(t,((t,o)=>{const r=d(Q(H(a,u(t)?{[e]:t}:t)),0,X(a));c(r[0])||n(o,r[0])||(s(o,r[0]),it(i,o,r))})),i},_t=(t,a,s,i,o,c,l,y,w,p,v="getDb",f)=>{let E,g,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>H(Lt,u(t)?{[At]:t}:t??{}))(t),n=a[Tt];if(a.mode==mt){const t=a[At]??e;return[1,n,[t,a[Nt]??T,a[St]??ht],ct(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=d(Q(H(Rt,o)),0,X(Rt)),c=r[2],l=ct(c),y=ct(c);return[0,n,[Dt(s,{[bt]:null,[$t]:T},bt,(t=>j(y,t)),(t=>lt(l,t))),Dt(i,{[Ct]:null,[$t]:T,[Ot]:0,[It]:0},Ct,((t,a)=>j(y,a)),((t,a)=>lt(l,a))),r],l]})(a);return(A?ft:Et)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${D} d,${_} s,TOTAL_CHANGES() c FROM ${R}${D} JOIN ${R}${_}`);a==E&&e==g&&n==h||(null!=E&&t(),E=a,g=e,h=n)}catch{}}),1e3*N),n=()=>{E=g=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,w,S,k(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${M}list()t,${M}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,v,n,f,(t=>!0===t?1:!1===t?0:t),void 0)};t.createSqliteWasmPersister=(t,a,e,n,s,i)=>_t(t,n,(async(t,a=[])=>e.exec(t,{bind:a,rowMode:"object",returnValue:"resultRows"}).map((t=>({...t})))),(t=>a.capi.sqlite3_update_hook(e,((a,e,n,s)=>t(s)),0)),(()=>a.capi.sqlite3_update_hook(e,(()=>0),0)),s,i,(()=>0),3,e)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqliteWasm={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),d=(t,a,e)=>t.slice(a,e),w=t=>t.length,p=async t=>o.all(t),v=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),E=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==w(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",R="pragma_",D="data_version",_="schema_version",M="pragma_table_",P=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>E(g(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),k=t=>[...t?.values()??[]],q=(t,a)=>t?.forEach(a),B=(t,a)=>t?.delete(a),U=Object,J=t=>U.getPrototypeOf(t),W=U.entries,Y=U.keys,z=U.freeze,G=(t=[])=>U.fromEntries(t),H=(...t)=>U.assign({},...t),V=(t,a)=>(delete t[a],t),K=(t,a)=>g(W(t),(([t,e])=>a(e,t))),Q=(t,a)=>G(K(t,((t,e)=>[e,a(t,e)]))),X=t=>U.values(t),Z=t=>w(Y(t)),tt=t=>(t=>!c(t)&&l(J(t),(t=>t==U.prototype||c(J(t))),(()=>!0)))(t)&&0==Z(t),at=JSON.stringify,et=JSON.parse,nt=t=>new Map(t),st=(t,a)=>t?.get(a),it=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),ot=(t,a,e)=>c(e)?(B(t,a),t):t?.set(a,e),rt=(t,a,e,n)=>(j(t,a)?n?.(st(t,a)):ot(t,a,e()),st(t,a)),ct=(t,a,e,n,s=0)=>l((e?rt:st)(t,a[s],s>w(a)-2?e:nt),(i=>{if(s>w(a)-2)return n?.(i)&&ot(t,a[s]),i;const o=ct(i,a,e,n,s+1);return x(i)&&ot(t,a[s]),o})),lt=t=>new Set(y(t)||c(t)?t:[t]),ut=(t,a)=>t?.add(a),yt=/^\d+$/,dt=nt(),wt=nt(),pt=(t,a,e,s,i,o,r,u={},d=0,p=[])=>{let E,g,h,m=0,S=0,T=0;rt(dt,p,(()=>0)),rt(wt,p,(()=>[]));const $=nt(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!tt(t)||!tt(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!tt(t)||!tt(a),a.setContent]:v("Store type not supported by this Persister"))(r,t,d),[R,D,_]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{yt.test(a)&&w(t)<1e3&&A(t,a)}]})(),s=nt();return[(e,i,o,r=[],c=()=>[])=>{t??=W;const l=a(1);return ot(s,l,[e,i,o,r,c]),ut(ct(i,o??[n],lt),l),l},(a,e,...i)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==w(a)?A(e,t):null===a[n]?q(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(st(t,a),n+1)));return s(t,0),e})(a,e),(a=>q(a,(a=>st(s,a)[0](t,...e??[],...i))))),t=>l(st(s,t),(([,a,i])=>(ct(a,i??[n],void 0,(a=>(B(a,t),x(a)?1:0))),ot(s,t),e(t),i))),a=>l(st(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=w(o);r==w(e)?a(t,...o,...s(o)):c(e[r])?f(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),M=t=>{t!=m&&(m=t,D($,void 0,m))},P=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(M(1),S++,await J((async()=>{try{const e=await a();y(e)?P(e):t?L(t):v("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}M(0)}))),W),j=()=>(g&&(i(g),g=void 0),W),k=async t=>(1!=m&&(M(2),T++,await J((async()=>{try{await e(C,t)}catch(t){o?.(t)}M(0)}))),W),U=()=>(h&&(t.delListener(h),h=void 0),W),J=async(...t)=>(A(st(wt,p),...t),await(async()=>{if(!st(dt,p)){for(ot(dt,p,1);!c(E=N(st(wt,p)));)try{await E()}catch(t){o?.(t)}ot(dt,p,0)}})(),W),W={load:F,startAutoLoad:async t=>{j(),await F(t);try{g=await s((async(t,a)=>{a||t?2!=m&&(M(1),S++,P(a??t),M(0)):await F()}))}catch(t){o?.(t)}return W},stopAutoLoad:j,isAutoLoading:()=>!c(g),save:k,startAutoSave:async()=>(U(),await k(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&k(t)})),W),stopAutoSave:U,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>R(t,$),delListener:a=>(_(a),t),schedule:J,getStore:()=>t,destroy:()=>(st(wt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return z(W)},vt=(t,a,e,n,i,o=ft,r,l)=>{const u=nt();return[async()=>{u.clear(),g(await e(t,a),(({tn:t,cn:a})=>ut(rt(u,t,lt),a)))},async(a,e)=>((t,a)=>j(st(u,t),a))(a,e)?G(m(g(await t(L+P(a)),(t=>[t[e],l?Q(V(t,e),l):V(t,e)])),(([t,a])=>!c(t)&&!tt(a)))):{},async(a,e,n,l,y,d=!1)=>{const w=lt();Q(n??{},(t=>g(Y(t??{}),(t=>ut(w,t)))));const v=k(w);if(!d&&y&&h(v)&&j(u,a))return await t("DROP "+C+P(a)),void ot(u,a);const f=st(u,a),N=lt(k(f));if(h(v)||(j(u,a)?await p(g([e,...v],(async(n,s)=>{B(N,n)||(await t(O+P(a)+"ADD"+P(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+P(a)+`(${P(e)})`),ut(f,n))}))):(await t("CREATE "+C+P(a)+`(${P(e)}${i} PRIMARY KEY${E(g(v,(t=>s+P(t)+i)))});`),ot(u,a,lt([e,...v])))),await p([...!d&&l?g(k(N),(async n=>{n!=e&&(await t(O+P(a)+"DROP"+P(n)),B(f,n))})):[]]),d)c(n)?await t(I+P(a)+b+" true"):await p(K(n,(async(n,s)=>{c(n)?await t(I+P(a)+b+P(e)+"=$1",[s]):h(v)||await o(t,a,e,Y(n),{[s]:r?g(X(n),r):X(n)},f)})));else if(h(v))j(u,a)&&await t(I+P(a)+b+" true");else{const s=m(k(st(u,a)),(t=>t!=e)),i={},c=[];Q(n??{},((t,a)=>{i[a]=g(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+P(a)+b+P(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},ft=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+P(a)+"("+((...t)=>E(g(t,P),s))(e,...n)+")VALUES"+E(K(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+P(e)+")DO UPDATE SET"+E(g(n,(t=>P(t)+"=excluded."+P(t))),s),K(i,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,o,[r,c,l],u,y,d,w,p,v)=>{const[f,E,g,h]=vt(a,u,y,s,p,v),m=pt(t,(async()=>await h((async()=>{return await f(),t=(await E(r,c))[S]?.[l]??"null",et(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(r,c,{[S]:{[l]:(a=t()??null,at(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[w]:()=>d,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,d);return m},gt=(t,a,e,n,s,i,o,[r,l,[u,y,d]],w,v,f,E,g,h,A,N)=>{const[$,b,C,O]=vt(a,w,v,s,g,h,A,N),I=async(t,a)=>await p(it(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(d,T,{[S]:t},!0,!0,a):null,R=pt(t,(async()=>await O((async()=>{await $();const t=await(async()=>G(m(await p(it(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!tt(t[1])))))(),a=await(async()=>u?(await b(d,T))[S]:{})();return tt(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[E]:()=>f,destroy:()=>(R.stopAutoLoad().stopAutoSave(),i(),R)},0,f);return R},ht="ColumnName",mt="store",At="json",Nt=mt+"TableName",St=mt+"Id"+ht,Tt=mt+ht,$t="autoLoadIntervalSeconds",bt="rowId"+ht,Ct="tableId",Ot="tableName",It="deleteEmptyColumns",Lt="deleteEmptyTable",Rt={mode:At,[$t]:1},Dt={load:0,save:0,[Ot]:e+"_values"},_t=(t,a,e,n,s)=>{const i=nt();return Q(t,((t,o)=>{const r=d(X(H(a,u(t)?{[e]:t}:t)),0,Z(a));c(r[0])||n(o,r[0])||(s(o,r[0]),ot(i,o,r))})),i},Mt=(t,a,s,i,o,c,l,y,w,p,v="getDb",f)=>{let E,g,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>H(Rt,u(t)?{[Nt]:t}:t??{}))(t),n=a[$t];if(a.mode==At){const t=a[Nt]??e;return[1,n,[t,a[St]??T,a[Tt]??mt],lt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=d(X(H(Dt,o)),0,Z(Dt)),c=r[2],l=lt(c),y=lt(c);return[0,n,[_t(s,{[Ct]:null,[bt]:T},Ct,(t=>j(y,t)),(t=>ut(l,t))),_t(i,{[Ot]:null,[bt]:T,[It]:0,[Lt]:0},Ot,((t,a)=>j(y,a)),((t,a)=>ut(l,a))),r],l]})(a);return(A?Et:gt)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${D} d,${_} s,TOTAL_CHANGES() c FROM ${R}${D} JOIN ${R}${_}`);a==E&&e==g&&n==h||(null!=E&&t(),E=a,g=e,h=n)}catch{}}),1e3*N),n=()=>{E=g=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,w,S,k(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${M}list()t,${M}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,v,n,f,(t=>!0===t?1:!1===t?0:t),void 0)};t.createSqliteWasmPersister=(t,a,e,n,s,i)=>Mt(t,n,(async(t,a=[])=>e.exec(t,{bind:a,rowMode:"object",returnValue:"resultRows"}).map((t=>({...t})))),(t=>a.capi.sqlite3_update_hook(e,((a,e,n,s)=>t(s)),0)),(()=>a.capi.sqlite3_update_hook(e,(()=>0),0)),s,i,(()=>0),3,e)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqliteWasm={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),d=(t,a,e)=>t.slice(a,e),w=t=>t.length,p=async t=>o.all(t),v=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),E=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==w(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",R="pragma_",D="data_version",_="schema_version",M="pragma_table_",P=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>E(g(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),k=t=>[...t?.values()??[]],q=(t,a)=>t?.forEach(a),B=(t,a)=>t?.delete(a),U=Object,J=t=>U.getPrototypeOf(t),W=U.entries,Y=U.keys,z=U.freeze,G=(t=[])=>U.fromEntries(t),H=(...t)=>U.assign({},...t),V=(t,a)=>(delete t[a],t),K=(t,a)=>g(W(t),(([t,e])=>a(e,t))),Q=t=>U.values(t),X=t=>w(Y(t)),Z=t=>(t=>!c(t)&&l(J(t),(t=>t==U.prototype||c(J(t))),(()=>!0)))(t)&&0==X(t),tt=JSON.stringify,at=JSON.parse,et=t=>new Map(t),nt=(t,a)=>t?.get(a),st=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),it=(t,a,e)=>c(e)?(B(t,a),t):t?.set(a,e),ot=(t,a,e,n)=>(j(t,a)?n?.(nt(t,a)):it(t,a,e()),nt(t,a)),rt=(t,a,e,n,s=0)=>l((e?ot:nt)(t,a[s],s>w(a)-2?e:et),(i=>{if(s>w(a)-2)return n?.(i)&&it(t,a[s]),i;const o=rt(i,a,e,n,s+1);return x(i)&&it(t,a[s]),o})),ct=t=>new Set(y(t)||c(t)?t:[t]),lt=(t,a)=>t?.add(a),ut=/^\d+$/,yt=et(),dt=et(),wt=(t,a,e,s,i,o,r,u={},d=0,p=[])=>{let E,g,h,m=0,S=0,T=0;ot(yt,p,(()=>0)),ot(dt,p,(()=>[]));const $=et(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!Z(t)||!Z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!Z(t)||!Z(a),a.setContent]:v("Store type not supported by this Persister"))(r,t,d),[R,D,_]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{ut.test(a)&&w(t)<1e3&&A(t,a)}]})(),s=et();return[(e,i,o,r=[],c=()=>[])=>{t??=W;const l=a(1);return it(s,l,[e,i,o,r,c]),lt(rt(i,o??[n],ct),l),l},(a,e,...i)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==w(a)?A(e,t):null===a[n]?q(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(nt(t,a),n+1)));return s(t,0),e})(a,e),(a=>q(a,(a=>nt(s,a)[0](t,...e??[],...i))))),t=>l(nt(s,t),(([,a,i])=>(rt(a,i??[n],void 0,(a=>(B(a,t),x(a)?1:0))),it(s,t),e(t),i))),a=>l(nt(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=w(o);r==w(e)?a(t,...o,...s(o)):c(e[r])?f(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),M=t=>{t!=m&&(m=t,D($,void 0,m))},P=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(M(1),S++,await J((async()=>{try{const e=await a();y(e)?P(e):t?L(t):v("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}M(0)}))),W),j=()=>(g&&(i(g),g=void 0),W),k=async t=>(1!=m&&(M(2),T++,await J((async()=>{try{await e(C,t)}catch(t){o?.(t)}M(0)}))),W),U=()=>(h&&(t.delListener(h),h=void 0),W),J=async(...t)=>(A(nt(dt,p),...t),await(async()=>{if(!nt(yt,p)){for(it(yt,p,1);!c(E=N(nt(dt,p)));)try{await E()}catch(t){o?.(t)}it(yt,p,0)}})(),W),W={load:F,startAutoLoad:async t=>{j(),await F(t);try{g=await s((async(t,a)=>{a||t?2!=m&&(M(1),S++,P(a??t),M(0)):await F()}))}catch(t){o?.(t)}return W},stopAutoLoad:j,isAutoLoading:()=>!c(g),save:k,startAutoSave:async()=>(U(),await k(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&k(t)})),W),stopAutoSave:U,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>R(t,$),delListener:a=>(_(a),t),schedule:J,getStore:()=>t,destroy:()=>(nt(dt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return z(W)},pt=(t,a,e,n,i,o=vt,r,l)=>{const u=et();return[async()=>{u.clear(),g(await e(t,a),(({tn:t,cn:a})=>lt(ot(u,t,ct),a)))},async(a,e)=>((t,a)=>j(nt(u,t),a))(a,e)?G(m(g(await t(L+P(a)),(t=>{return[t[e],l?(a=V(t,e),n=l,G(K(a,((t,a)=>[a,n(t,a)])))):V(t,e)];var a,n})),(([t,a])=>!c(t)&&!Z(a)))):{},async(a,e,n,l,y,d=!1)=>{const w=ct();K(n??{},(t=>g(Y(t??{}),(t=>lt(w,t)))));const v=k(w);if(!d&&y&&h(v)&&j(u,a))return await t("DROP "+C+P(a)),void it(u,a);const f=nt(u,a),N=ct(k(f));if(h(v)||(j(u,a)?await p(g([e,...v],(async(n,s)=>{B(N,n)||(await t(O+P(a)+"ADD"+P(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+P(a)+`(${P(e)})`),lt(f,n))}))):(await t("CREATE "+C+P(a)+`(${P(e)}${i} PRIMARY KEY${E(g(v,(t=>s+P(t)+i)))});`),it(u,a,ct([e,...v])))),await p([...!d&&l?g(k(N),(async n=>{n!=e&&(await t(O+P(a)+"DROP"+P(n)),B(f,n))})):[]]),d)c(n)?await t(I+P(a)+b+" true"):await p(K(n,(async(n,s)=>{c(n)?await t(I+P(a)+b+P(e)+"=$1",[s]):h(v)||await o(t,a,e,Y(n),{[s]:r?g(Q(n),r):Q(n)},f)})));else if(h(v))j(u,a)&&await t(I+P(a)+b+" true");else{const s=m(k(nt(u,a)),(t=>t!=e)),i={},c=[];K(n??{},((t,a)=>{i[a]=g(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+P(a)+b+P(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},vt=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+P(a)+"("+((...t)=>E(g(t,P),s))(e,...n)+")VALUES"+E(K(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+P(e)+")DO UPDATE SET"+E(g(n,(t=>P(t)+"=excluded."+P(t))),s),K(i,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},ft=(t,a,e,n,s,i,o,[r,c,l],u,y,d,w,p,v)=>{const[f,E,g,h]=pt(a,u,y,s,p,v),m=wt(t,(async()=>await h((async()=>{return await f(),t=(await E(r,c))[S]?.[l]??"null",at(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(r,c,{[S]:{[l]:(a=t()??null,tt(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[w]:()=>d,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,d);return m},Et=(t,a,e,n,s,i,o,[r,l,[u,y,d]],w,v,f,E,g,h,A,N)=>{const[$,b,C,O]=pt(a,w,v,s,g,h,A,N),I=async(t,a)=>await p(st(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(d,T,{[S]:t},!0,!0,a):null,R=wt(t,(async()=>await O((async()=>{await $();const t=await(async()=>G(m(await p(st(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!Z(t[1])))))(),a=await(async()=>u?(await b(d,T))[S]:{})();return Z(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[E]:()=>f,destroy:()=>(R.stopAutoLoad().stopAutoSave(),i(),R)},0,f);return R},gt="ColumnName",ht="store",mt="json",At=ht+"TableName",Nt=ht+"Id"+gt,St=ht+gt,Tt="autoLoadIntervalSeconds",$t="rowId"+gt,bt="tableId",Ct="tableName",Ot="deleteEmptyColumns",It="deleteEmptyTable",Lt={mode:mt,[Tt]:1},Rt={load:0,save:0,[Ct]:e+"_values"},Dt=(t,a,e,n,s)=>{const i=et();return K(t,((t,o)=>{const r=d(Q(H(a,u(t)?{[e]:t}:t)),0,X(a));c(r[0])||n(o,r[0])||(s(o,r[0]),it(i,o,r))})),i},_t=(t,a,s,i,o,c,l,y,w,p,v="getDb",f)=>{let E,g,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>H(Lt,u(t)?{[At]:t}:t??{}))(t),n=a[Tt];if(a.mode==mt){const t=a[At]??e;return[1,n,[t,a[Nt]??T,a[St]??ht],ct(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=d(Q(H(Rt,o)),0,X(Rt)),c=r[2],l=ct(c),y=ct(c);return[0,n,[Dt(s,{[bt]:null,[$t]:T},bt,(t=>j(y,t)),(t=>lt(l,t))),Dt(i,{[Ct]:null,[$t]:T,[Ot]:0,[It]:0},Ct,((t,a)=>j(y,a)),((t,a)=>lt(l,a))),r],l]})(a);return(A?ft:Et)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${D} d,${_} s,TOTAL_CHANGES() c FROM ${R}${D} JOIN ${R}${_}`);a==E&&e==g&&n==h||(null!=E&&t(),E=a,g=e,h=n)}catch{}}),1e3*N),n=()=>{E=g=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,w,S,k(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${M}list()t,${M}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,v,n,f,(t=>!0===t?1:!1===t?0:t),void 0)};t.createSqliteWasmPersister=(t,a,e,n,s,i)=>_t(t,n,(async(t,a=[])=>e.exec(t,{bind:a,rowMode:"object",returnValue:"resultRows"}).map((t=>({...t})))),(t=>a.capi.sqlite3_update_hook(e,((a,e,n,s)=>t(s)),0)),(()=>a.capi.sqlite3_update_hook(e,(()=>0),0)),s,i,(()=>0),3,e)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqliteWasm={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),d=(t,a,e)=>t.slice(a,e),w=t=>t.length,p=async t=>o.all(t),v=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),E=(t,a="")=>t.join(a),g=(t,a)=>t.map(a),h=t=>0==w(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",R="pragma_",D="data_version",_="schema_version",M="pragma_table_",P=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>E(g(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),k=t=>[...t?.values()??[]],q=(t,a)=>t?.forEach(a),B=(t,a)=>t?.delete(a),U=Object,J=t=>U.getPrototypeOf(t),W=U.entries,Y=U.keys,z=U.freeze,G=(t=[])=>U.fromEntries(t),H=(...t)=>U.assign({},...t),V=(t,a)=>(delete t[a],t),K=(t,a)=>g(W(t),(([t,e])=>a(e,t))),Q=(t,a)=>G(K(t,((t,e)=>[e,a(t,e)]))),X=t=>U.values(t),Z=t=>w(Y(t)),tt=t=>(t=>!c(t)&&l(J(t),(t=>t==U.prototype||c(J(t))),(()=>!0)))(t)&&0==Z(t),at=JSON.stringify,et=JSON.parse,nt=t=>new Map(t),st=(t,a)=>t?.get(a),it=(t,a)=>g([...t?.entries()??[]],(([t,e])=>a(e,t))),ot=(t,a,e)=>c(e)?(B(t,a),t):t?.set(a,e),rt=(t,a,e,n)=>(j(t,a)?n?.(st(t,a)):ot(t,a,e()),st(t,a)),ct=(t,a,e,n,s=0)=>l((e?rt:st)(t,a[s],s>w(a)-2?e:nt),(i=>{if(s>w(a)-2)return n?.(i)&&ot(t,a[s]),i;const o=ct(i,a,e,n,s+1);return x(i)&&ot(t,a[s]),o})),lt=t=>new Set(y(t)||c(t)?t:[t]),ut=(t,a)=>t?.add(a),yt=/^\d+$/,dt=nt(),wt=nt(),pt=(t,a,e,s,i,o,r,u={},d=0,p=[])=>{let E,g,h,m=0,S=0,T=0;rt(dt,p,(()=>0)),rt(wt,p,(()=>[]));const $=nt(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!tt(t)||!tt(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!tt(t)||!tt(a),a.setContent]:v("Store type not supported by this Persister"))(r,t,d),[R,D,_]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{yt.test(a)&&w(t)<1e3&&A(t,a)}]})(),s=nt();return[(e,i,o,r=[],c=()=>[])=>{t??=W;const l=a(1);return ot(s,l,[e,i,o,r,c]),ut(ct(i,o??[n],lt),l),l},(a,e,...i)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==w(a)?A(e,t):null===a[n]?q(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(st(t,a),n+1)));return s(t,0),e})(a,e),(a=>q(a,(a=>st(s,a)[0](t,...e??[],...i))))),t=>l(st(s,t),(([,a,i])=>(ct(a,i??[n],void 0,(a=>(B(a,t),x(a)?1:0))),ot(s,t),e(t),i))),a=>l(st(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=w(o);r==w(e)?a(t,...o,...s(o)):c(e[r])?f(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),M=t=>{t!=m&&(m=t,D($,void 0,m))},P=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(M(1),S++,await J((async()=>{try{const e=await a();y(e)?P(e):t?L(t):v("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}M(0)}))),W),j=()=>(g&&(i(g),g=void 0),W),k=async t=>(1!=m&&(M(2),T++,await J((async()=>{try{await e(C,t)}catch(t){o?.(t)}M(0)}))),W),U=()=>(h&&(t.delListener(h),h=void 0),W),J=async(...t)=>(A(st(wt,p),...t),await(async()=>{if(!st(dt,p)){for(ot(dt,p,1);!c(E=N(st(wt,p)));)try{await E()}catch(t){o?.(t)}ot(dt,p,0)}})(),W),W={load:F,startAutoLoad:async t=>{j(),await F(t);try{g=await s((async(t,a)=>{a||t?2!=m&&(M(1),S++,P(a??t),M(0)):await F()}))}catch(t){o?.(t)}return W},stopAutoLoad:j,isAutoLoading:()=>!c(g),save:k,startAutoSave:async()=>(U(),await k(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&k(t)})),W),stopAutoSave:U,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>R(t,$),delListener:a=>(_(a),t),schedule:J,getStore:()=>t,destroy:()=>(st(wt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return z(W)},vt=(t,a,e,n,i,o=ft,r,l)=>{const u=nt();return[async()=>{u.clear(),g(await e(t,a),(({tn:t,cn:a})=>ut(rt(u,t,lt),a)))},async(a,e)=>((t,a)=>j(st(u,t),a))(a,e)?G(m(g(await t(L+P(a)),(t=>[t[e],l?Q(V(t,e),l):V(t,e)])),(([t,a])=>!c(t)&&!tt(a)))):{},async(a,e,n,l,y,d=!1)=>{const w=lt();Q(n??{},(t=>g(Y(t??{}),(t=>ut(w,t)))));const v=k(w);if(!d&&y&&h(v)&&j(u,a))return await t("DROP "+C+P(a)),void ot(u,a);const f=st(u,a),N=lt(k(f));if(h(v)||(j(u,a)?await p(g([e,...v],(async(n,s)=>{B(N,n)||(await t(O+P(a)+"ADD"+P(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+P(a)+`(${P(e)})`),ut(f,n))}))):(await t("CREATE "+C+P(a)+`(${P(e)}${i} PRIMARY KEY${E(g(v,(t=>s+P(t)+i)))});`),ot(u,a,lt([e,...v])))),await p([...!d&&l?g(k(N),(async n=>{n!=e&&(await t(O+P(a)+"DROP"+P(n)),B(f,n))})):[]]),d)c(n)?await t(I+P(a)+b+" true"):await p(K(n,(async(n,s)=>{c(n)?await t(I+P(a)+b+P(e)+"=$1",[s]):h(v)||await o(t,a,e,Y(n),{[s]:r?g(X(n),r):X(n)},f)})));else if(h(v))j(u,a)&&await t(I+P(a)+b+" true");else{const s=m(k(st(u,a)),(t=>t!=e)),i={},c=[];Q(n??{},((t,a)=>{i[a]=g(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+P(a)+b+P(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},ft=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+P(a)+"("+((...t)=>E(g(t,P),s))(e,...n)+")VALUES"+E(K(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+P(e)+")DO UPDATE SET"+E(g(n,(t=>P(t)+"=excluded."+P(t))),s),K(i,((t,a)=>[a,...g(t,(t=>t??null))])).flat())},Et=(t,a,e,n,s,i,o,[r,c,l],u,y,d,w,p,v)=>{const[f,E,g,h]=vt(a,u,y,s,p,v),m=pt(t,(async()=>await h((async()=>{return await f(),t=(await E(r,c))[S]?.[l]??"null",et(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await g(r,c,{[S]:{[l]:(a=t()??null,at(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[w]:()=>d,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,d);return m},gt=(t,a,e,n,s,i,o,[r,l,[u,y,d]],w,v,f,E,g,h,A,N)=>{const[$,b,C,O]=vt(a,w,v,s,g,h,A,N),I=async(t,a)=>await p(it(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(d,T,{[S]:t},!0,!0,a):null,R=pt(t,(async()=>await O((async()=>{await $();const t=await(async()=>G(m(await p(it(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!tt(t[1])))))(),a=await(async()=>u?(await b(d,T))[S]:{})();return tt(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[E]:()=>f,destroy:()=>(R.stopAutoLoad().stopAutoSave(),i(),R)},0,f);return R},ht="ColumnName",mt="store",At="json",Nt=mt+"TableName",St=mt+"Id"+ht,Tt=mt+ht,$t="autoLoadIntervalSeconds",bt="rowId"+ht,Ct="tableId",Ot="tableName",It="deleteEmptyColumns",Lt="deleteEmptyTable",Rt={mode:At,[$t]:1},Dt={load:0,save:0,[Ot]:e+"_values"},_t=(t,a,e,n,s)=>{const i=nt();return Q(t,((t,o)=>{const r=d(X(H(a,u(t)?{[e]:t}:t)),0,Z(a));c(r[0])||n(o,r[0])||(s(o,r[0]),ot(i,o,r))})),i},Mt=(t,a,s,i,o,c,l,y,w,p,v="getDb",f)=>{let E,g,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>H(Rt,u(t)?{[Nt]:t}:t??{}))(t),n=a[$t];if(a.mode==At){const t=a[Nt]??e;return[1,n,[t,a[St]??T,a[Tt]??mt],lt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=d(X(H(Dt,o)),0,Z(Dt)),c=r[2],l=lt(c),y=lt(c);return[0,n,[_t(s,{[Ct]:null,[bt]:T},Ct,(t=>j(y,t)),(t=>ut(l,t))),_t(i,{[Ot]:null,[bt]:T,[It]:0,[Lt]:0},Ot,((t,a)=>j(y,a)),((t,a)=>ut(l,a))),r],l]})(a);return(A?Et:gt)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${D} d,${_} s,TOTAL_CHANGES() c FROM ${R}${D} JOIN ${R}${_}`);a==E&&e==g&&n==h||(null!=E&&t(),E=a,g=e,h=n)}catch{}}),1e3*N),n=()=>{E=g=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,w,S,k(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${M}list()t,${M}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,v,n,f,(t=>!0===t?1:!1===t?0:t),void 0)};t.createSqliteWasmPersister=(t,a,e,n,s,i)=>Mt(t,n,(async(t,a=[])=>e.exec(t,{bind:a,rowMode:"object",returnValue:"resultRows"}).map((t=>({...t})))),(t=>a.capi.sqlite3_update_hook(e,((a,e,n,s)=>t(s)),0)),(()=>a.capi.sqlite3_update_hook(e,(()=>0),0)),s,i,(()=>0),3,e)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqliteWasm={});
@@ -1 +1 @@
1
- var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,p=async t=>o.all(t),v=t=>{throw Error(t)},f=(t,a)=>t.forEach(a),g=(t,a="")=>t.join(a),E=(t,a)=>t.map(a),h=t=>0==d(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",D="pragma_",R="data_version",M="schema_version",P="pragma_table_",_=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>g(E(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),B=t=>[...t?.values()??[]],U=(t,a)=>t?.forEach(a),J=(t,a)=>t?.delete(a),Y=Object,k=t=>Y.getPrototypeOf(t),q=Y.entries,z=Y.keys,G=Y.freeze,H=(t=[])=>Y.fromEntries(t),K=(...t)=>Y.assign({},...t),Q=(t,a)=>(delete t[a],t),V=(t,a)=>E(q(t),(([t,e])=>a(e,t))),W=t=>Y.values(t),X=t=>d(z(t)),Z=t=>(t=>!c(t)&&l(k(t),(t=>t==Y.prototype||c(k(t))),(()=>!0)))(t)&&0==X(t),tt=JSON.stringify,at=JSON.parse,et=t=>new Map(t),nt=(t,a)=>t?.get(a),st=(t,a)=>E([...t?.entries()??[]],(([t,e])=>a(e,t))),it=(t,a,e)=>c(e)?(J(t,a),t):t?.set(a,e),ot=(t,a,e,n)=>(j(t,a)?n?.(nt(t,a)):it(t,a,e()),nt(t,a)),rt=(t,a,e,n,s=0)=>l((e?ot:nt)(t,a[s],s>d(a)-2?e:et),(i=>{if(s>d(a)-2)return n?.(i)&&it(t,a[s]),i;const o=rt(i,a,e,n,s+1);return x(i)&&it(t,a[s]),o})),ct=t=>new Set(y(t)||c(t)?t:[t]),lt=(t,a)=>t?.add(a),ut=/^\d+$/,yt=et(),wt=et(),dt=(t,a,e,s,i,o,r,u={},w=0,p=[])=>{let g,E,h,m=0,S=0,T=0;ot(yt,p,(()=>0)),ot(wt,p,(()=>[]));const $=et(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!Z(t)||!Z(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!Z(t)||!Z(a),a.setContent]:v("Store type not supported by this Persister"))(r,t,w),[D,R,M]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{ut.test(a)&&d(t)<1e3&&A(t,a)}]})(),s=et();return[(e,i,o,r=[],c=()=>[])=>{t??=q;const l=a(1);return it(s,l,[e,i,o,r,c]),lt(rt(i,o??[n],ct),l),l},(a,e,...i)=>f(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?A(e,t):null===a[n]?U(t,(t=>s(t,n+1))):f([a[n],null],(a=>s(nt(t,a),n+1)));return s(t,0),e})(a,e),(a=>U(a,(a=>nt(s,a)[0](t,...e??[],...i))))),t=>l(nt(s,t),(([,a,i])=>(rt(a,i??[n],void 0,(a=>(J(a,t),x(a)?1:0))),it(s,t),e(t),i))),a=>l(nt(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=d(o);r==d(e)?a(t,...o,...s(o)):c(e[r])?f(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),P=t=>{t!=m&&(m=t,R($,void 0,m))},_=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(P(1),S++,await k((async()=>{try{const e=await a();y(e)?_(e):t?L(t):v("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}P(0)}))),q),j=()=>(E&&(i(E),E=void 0),q),B=async t=>(1!=m&&(P(2),T++,await k((async()=>{try{await e(C,t)}catch(t){o?.(t)}P(0)}))),q),Y=()=>(h&&(t.delListener(h),h=void 0),q),k=async(...t)=>(A(nt(wt,p),...t),await(async()=>{if(!nt(yt,p)){for(it(yt,p,1);!c(g=N(nt(wt,p)));)try{await g()}catch(t){o?.(t)}it(yt,p,0)}})(),q),q={load:F,startAutoLoad:async t=>{j(),await F(t);try{E=await s((async(t,a)=>{a||t?2!=m&&(P(1),S++,_(a??t),P(0)):await F()}))}catch(t){o?.(t)}return q},stopAutoLoad:j,isAutoLoading:()=>!c(E),save:B,startAutoSave:async()=>(Y(),await B(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&B(t)})),q),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>D(t,$),delListener:a=>(M(a),t),schedule:k,getStore:()=>t,destroy:()=>(nt(wt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return G(q)},pt=(t,a,e,n,i,o=vt,r,l)=>{const u=et();return[async()=>{u.clear(),E(await e(t,a),(({tn:t,cn:a})=>lt(ot(u,t,ct),a)))},async(a,e)=>((t,a)=>j(nt(u,t),a))(a,e)?H(m(E(await t(L+_(a)),(t=>{return[t[e],l?(a=Q(t,e),n=l,H(V(a,((t,a)=>[a,n(t,a)])))):Q(t,e)];var a,n})),(([t,a])=>!c(t)&&!Z(a)))):{},async(a,e,n,l,y,w=!1)=>{const d=ct();V(n??{},(t=>E(z(t??{}),(t=>lt(d,t)))));const v=B(d);if(!w&&y&&h(v)&&j(u,a))return await t("DROP "+C+_(a)),void it(u,a);const f=nt(u,a),N=ct(B(f));if(h(v)||(j(u,a)?await p(E([e,...v],(async(n,s)=>{J(N,n)||(await t(O+_(a)+"ADD"+_(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+_(a)+`(${_(e)})`),lt(f,n))}))):(await t("CREATE "+C+_(a)+`(${_(e)}${i} PRIMARY KEY${g(E(v,(t=>s+_(t)+i)))});`),it(u,a,ct([e,...v])))),await p([...!w&&l?E(B(N),(async n=>{n!=e&&(await t(O+_(a)+"DROP"+_(n)),J(f,n))})):[]]),w)c(n)?await t(I+_(a)+b+" true"):await p(V(n,(async(n,s)=>{c(n)?await t(I+_(a)+b+_(e)+"=$1",[s]):h(v)||await o(t,a,e,z(n),{[s]:r?E(W(n),r):W(n)},f)})));else if(h(v))j(u,a)&&await t(I+_(a)+b+" true");else{const s=m(B(nt(u,a)),(t=>t!=e)),i={},c=[];V(n??{},((t,a)=>{i[a]=E(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+_(a)+b+_(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},vt=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+_(a)+"("+((...t)=>g(E(t,_),s))(e,...n)+")VALUES"+g(V(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+_(e)+")DO UPDATE SET"+g(E(n,(t=>_(t)+"=excluded."+_(t))),s),V(i,((t,a)=>[a,...E(t,(t=>t??null))])).flat())},ft=(t,a,e,n,s,i,o,[r,c,l],u,y,w,d,p,v)=>{const[f,g,E,h]=pt(a,u,y,s,p,v),m=dt(t,(async()=>await h((async()=>{return await f(),t=(await g(r,c))[S]?.[l]??"null",at(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await f(),await E(r,c,{[S]:{[l]:(a=t()??null,tt(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,w);return m},gt=(t,a,e,n,s,i,o,[r,l,[u,y,w]],d,v,f,g,E,h,A,N)=>{const[$,b,C,O]=pt(a,d,v,s,E,h,A,N),I=async(t,a)=>await p(st(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(w,T,{[S]:t},!0,!0,a):null,D=dt(t,(async()=>await O((async()=>{await $();const t=await(async()=>H(m(await p(st(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!Z(t[1])))))(),a=await(async()=>u?(await b(w,T))[S]:{})();return Z(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[g]:()=>f,destroy:()=>(D.stopAutoLoad().stopAutoSave(),i(),D)},0,f);return D},Et="ColumnName",ht="store",mt="json",At=ht+"TableName",Nt=ht+"Id"+Et,St=ht+Et,Tt="autoLoadIntervalSeconds",$t="rowId"+Et,bt="tableId",Ct="tableName",Ot="deleteEmptyColumns",It="deleteEmptyTable",Lt={mode:mt,[Tt]:1},Dt={load:0,save:0,[Ct]:e+"_values"},Rt=(t,a,e,n,s)=>{const i=et();return V(t,((t,o)=>{const r=w(W(K(a,u(t)?{[e]:t}:t)),0,X(a));c(r[0])||n(o,r[0])||(s(o,r[0]),it(i,o,r))})),i},Mt=(t,a,s,i,o,c,l,y,d,p,v="getDb",f)=>{let g,E,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>K(Lt,u(t)?{[At]:t}:t??{}))(t),n=a[Tt];if(a.mode==mt){const t=a[At]??e;return[1,n,[t,a[Nt]??T,a[St]??ht],ct(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=w(W(K(Dt,o)),0,X(Dt)),c=r[2],l=ct(c),y=ct(c);return[0,n,[Rt(s,{[bt]:null,[$t]:T},bt,(t=>j(y,t)),(t=>lt(l,t))),Rt(i,{[Ct]:null,[$t]:T,[Ot]:0,[It]:0},Ct,((t,a)=>j(y,a)),((t,a)=>lt(l,a))),r],l]})(a);return(A?ft:gt)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${R} d,${M} s,TOTAL_CHANGES() c FROM ${D}${R} JOIN ${D}${M}`);a==g&&e==E&&n==h||(null!=g&&t(),g=a,E=e,h=n)}catch{}}),1e3*N),n=()=>{g=E=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,d,S,B(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${P}list()t,${P}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,v,n,f,(t=>!0===t?1:!1===t?0:t),void 0)},Pt="change";t.createSqlite3Persister=(t,a,e,n,s)=>Mt(t,e,(async(t,e=[])=>{return await(n=(n,s)=>a.all(t,e,((t,a)=>t?s(t):n(a))),new o(n));var n}),(t=>{const e=(a,e,n)=>t(n);return a.on(Pt,e),e}),(t=>a.off(Pt,t)),n,s,(()=>0),3,a)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqlite3={});
1
+ var t,a;t=this,a=function(t){"use strict";const a=t=>typeof t,e="tinybase",n="",s=",",i=a(n),o=Promise,r=clearInterval,c=t=>null==t,l=(t,a,e)=>c(t)?e?.():a(t),u=t=>a(t)==i,y=t=>Array.isArray(t),w=(t,a,e)=>t.slice(a,e),d=t=>t.length,p=async t=>o.all(t),f=t=>{throw Error(t)},v=(t,a)=>t.forEach(a),g=(t,a="")=>t.join(a),E=(t,a)=>t.map(a),h=t=>0==d(t),m=(t,a)=>t.filter(a),A=(t,...a)=>t.push(...a),N=t=>t.shift(),S="_",T="_id",$="SELECT",b="WHERE",C="TABLE",O="ALTER "+C,I="DELETE FROM",L=$+"*FROM",D="pragma_",R="data_version",M="schema_version",P="pragma_table_",_=t=>`"${t.replace(/"/g,'""')}"`,F=(t,a=[1])=>g(E(t,(()=>"$"+a[0]++)),s),j=(t,a)=>t?.has(a)??!1,x=t=>c(t)||0==(t=>t?.size??0)(t),B=t=>[...t?.values()??[]],U=(t,a)=>t?.forEach(a),J=(t,a)=>t?.delete(a),Y=Object,k=t=>Y.getPrototypeOf(t),q=Y.entries,z=Y.keys,G=Y.freeze,H=(t=[])=>Y.fromEntries(t),K=(...t)=>Y.assign({},...t),Q=(t,a)=>(delete t[a],t),V=(t,a)=>E(q(t),(([t,e])=>a(e,t))),W=(t,a)=>H(V(t,((t,e)=>[e,a(t,e)]))),X=t=>Y.values(t),Z=t=>d(z(t)),tt=t=>(t=>!c(t)&&l(k(t),(t=>t==Y.prototype||c(k(t))),(()=>!0)))(t)&&0==Z(t),at=JSON.stringify,et=JSON.parse,nt=t=>new Map(t),st=(t,a)=>t?.get(a),it=(t,a)=>E([...t?.entries()??[]],(([t,e])=>a(e,t))),ot=(t,a,e)=>c(e)?(J(t,a),t):t?.set(a,e),rt=(t,a,e,n)=>(j(t,a)?n?.(st(t,a)):ot(t,a,e()),st(t,a)),ct=(t,a,e,n,s=0)=>l((e?rt:st)(t,a[s],s>d(a)-2?e:nt),(i=>{if(s>d(a)-2)return n?.(i)&&ot(t,a[s]),i;const o=ct(i,a,e,n,s+1);return x(i)&&ot(t,a[s]),o})),lt=t=>new Set(y(t)||c(t)?t:[t]),ut=(t,a)=>t?.add(a),yt=/^\d+$/,wt=nt(),dt=nt(),pt=(t,a,e,s,i,o,r,u={},w=0,p=[])=>{let g,E,h,m=0,S=0,T=0;rt(wt,p,(()=>0)),rt(dt,p,(()=>[]));const $=nt(),[b,C,O,I,L]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.getMergeableContent,()=>a.getTransactionMergeableChanges(!e),([[t],[a]])=>!tt(t)||!tt(a),a.setDefaultContent]:2!=t?[0,a.getContent,a.getTransactionChanges,([t,a])=>!tt(t)||!tt(a),a.setContent]:f("Store type not supported by this Persister"))(r,t,w),[D,R,M]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?N(t):null)??n+a++,a=>{yt.test(a)&&d(t)<1e3&&A(t,a)}]})(),s=nt();return[(e,i,o,r=[],c=()=>[])=>{t??=q;const l=a(1);return ot(s,l,[e,i,o,r,c]),ut(ct(i,o??[n],lt),l),l},(a,e,...i)=>v(((t,a=[n])=>{const e=[],s=(t,n)=>n==d(a)?A(e,t):null===a[n]?U(t,(t=>s(t,n+1))):v([a[n],null],(a=>s(st(t,a),n+1)));return s(t,0),e})(a,e),(a=>U(a,(a=>st(s,a)[0](t,...e??[],...i))))),t=>l(st(s,t),(([,a,i])=>(ct(a,i??[n],void 0,(a=>(J(a,t),x(a)?1:0))),ot(s,t),e(t),i))),a=>l(st(s,a),(([a,,e=[],n,s])=>{const i=(...o)=>{const r=d(o);r==d(e)?a(t,...o,...s(o)):c(e[r])?v(n[r]?.(...o)??[],(t=>i(...o,t))):i(...o,e[r])};i()}))]})(),P=t=>{t!=m&&(m=t,R($,void 0,m))},_=a=>{(b&&y(a?.[0])?1===a?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===a?.[2]?t.applyChanges:t.setContent)(a)},F=async t=>(2!=m&&(P(1),S++,await k((async()=>{try{const e=await a();y(e)?_(e):t?L(t):f("Content is not an array: "+e)}catch(a){o?.(a),t&&L(t)}P(0)}))),q),j=()=>(E&&(i(E),E=void 0),q),B=async t=>(1!=m&&(P(2),T++,await k((async()=>{try{await e(C,t)}catch(t){o?.(t)}P(0)}))),q),Y=()=>(h&&(t.delListener(h),h=void 0),q),k=async(...t)=>(A(st(dt,p),...t),await(async()=>{if(!st(wt,p)){for(ot(wt,p,1);!c(g=N(st(dt,p)));)try{await g()}catch(t){o?.(t)}ot(wt,p,0)}})(),q),q={load:F,startAutoLoad:async t=>{j(),await F(t);try{E=await s((async(t,a)=>{a||t?2!=m&&(P(1),S++,_(a??t),P(0)):await F()}))}catch(t){o?.(t)}return q},stopAutoLoad:j,isAutoLoading:()=>!c(E),save:B,startAutoSave:async()=>(Y(),await B(),h=t.addDidFinishTransactionListener((()=>{const t=O();I(t)&&B(t)})),q),stopAutoSave:Y,isAutoSaving:()=>!c(h),getStatus:()=>m,addStatusListener:t=>D(t,$),delListener:a=>(M(a),t),schedule:k,getStore:()=>t,destroy:()=>(st(dt,p).splice(0,void 0),j().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return G(q)},ft=(t,a,e,n,i,o=vt,r,l)=>{const u=nt();return[async()=>{u.clear(),E(await e(t,a),(({tn:t,cn:a})=>ut(rt(u,t,lt),a)))},async(a,e)=>((t,a)=>j(st(u,t),a))(a,e)?H(m(E(await t(L+_(a)),(t=>[t[e],l?W(Q(t,e),l):Q(t,e)])),(([t,a])=>!c(t)&&!tt(a)))):{},async(a,e,n,l,y,w=!1)=>{const d=lt();W(n??{},(t=>E(z(t??{}),(t=>ut(d,t)))));const f=B(d);if(!w&&y&&h(f)&&j(u,a))return await t("DROP "+C+_(a)),void ot(u,a);const v=st(u,a),N=lt(B(v));if(h(f)||(j(u,a)?await p(E([e,...f],(async(n,s)=>{J(N,n)||(await t(O+_(a)+"ADD"+_(n)+i),0==s&&await t("CREATE UNIQUE INDEX pk ON "+_(a)+`(${_(e)})`),ut(v,n))}))):(await t("CREATE "+C+_(a)+`(${_(e)}${i} PRIMARY KEY${g(E(f,(t=>s+_(t)+i)))});`),ot(u,a,lt([e,...f])))),await p([...!w&&l?E(B(N),(async n=>{n!=e&&(await t(O+_(a)+"DROP"+_(n)),J(v,n))})):[]]),w)c(n)?await t(I+_(a)+b+" true"):await p(V(n,(async(n,s)=>{c(n)?await t(I+_(a)+b+_(e)+"=$1",[s]):h(f)||await o(t,a,e,z(n),{[s]:r?E(X(n),r):X(n)},v)})));else if(h(f))j(u,a)&&await t(I+_(a)+b+" true");else{const s=m(B(st(u,a)),(t=>t!=e)),i={},c=[];W(n??{},((t,a)=>{i[a]=E(s,(a=>r?r(t?.[a]):t?.[a])),A(c,a)})),await o(t,a,e,s,i),await t(I+_(a)+b+_(e)+`NOT IN(${F(c)})`,c)}},async a=>{let e;await t("BEGIN");try{e=await a()}catch(t){n?.(t)}return await t("END"),e}]},vt=async(t,a,e,n,i)=>{const o=[1];await t("INSERT INTO"+_(a)+"("+((...t)=>g(E(t,_),s))(e,...n)+")VALUES"+g(V(i,(t=>"($"+o[0]+++","+F(t,o)+")")),s)+"ON CONFLICT("+_(e)+")DO UPDATE SET"+g(E(n,(t=>_(t)+"=excluded."+_(t))),s),V(i,((t,a)=>[a,...E(t,(t=>t??null))])).flat())},gt=(t,a,e,n,s,i,o,[r,c,l],u,y,w,d,p,f)=>{const[v,g,E,h]=ft(a,u,y,s,p,f),m=pt(t,(async()=>await h((async()=>{return await v(),t=(await g(r,c))[S]?.[l]??"null",et(t,((t,a)=>""===a?void 0:a));var t}))),(async t=>await h((async()=>{var a;await v(),await E(r,c,{[S]:{[l]:(a=t()??null,at(a,((t,a)=>void 0===a?"":a)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,w);return m},Et=(t,a,e,n,s,i,o,[r,l,[u,y,w]],d,f,v,g,E,h,A,N)=>{const[$,b,C,O]=ft(a,d,f,s,E,h,A,N),I=async(t,a)=>await p(it(l,(async([e,n,s,i],o)=>{a&&!(o in t)||await C(e,n,t[o],s,i,a)}))),L=async(t,a)=>y?await C(w,T,{[S]:t},!0,!0,a):null,D=pt(t,(async()=>await O((async()=>{await $();const t=await(async()=>H(m(await p(it(r,(async([t,a],e)=>[t,await b(e,a)]))),(t=>!tt(t[1])))))(),a=await(async()=>u?(await b(w,T))[S]:{})();return tt(t)&&c(a)?void 0:[t,a]}))),(async(t,a)=>await O((async()=>{if(await $(),c(a)){const[a,e]=t();await I(a),await L(e)}else await I(a[0],!0),await L(a[1],!0)}))),e,n,s,o,{[g]:()=>v,destroy:()=>(D.stopAutoLoad().stopAutoSave(),i(),D)},0,v);return D},ht="ColumnName",mt="store",At="json",Nt=mt+"TableName",St=mt+"Id"+ht,Tt=mt+ht,$t="autoLoadIntervalSeconds",bt="rowId"+ht,Ct="tableId",Ot="tableName",It="deleteEmptyColumns",Lt="deleteEmptyTable",Dt={mode:At,[$t]:1},Rt={load:0,save:0,[Ot]:e+"_values"},Mt=(t,a,e,n,s)=>{const i=nt();return W(t,((t,o)=>{const r=w(X(K(a,u(t)?{[e]:t}:t)),0,Z(a));c(r[0])||n(o,r[0])||(s(o,r[0]),ot(i,o,r))})),i},Pt=(t,a,s,i,o,c,l,y,d,p,f="getDb",v)=>{let g,E,h;const m=((t,a)=>a?async(e,n)=>(a(e,n),await t(e,n)):t)(s,c),[A,N,S,C]=(t=>{const a=(t=>K(Dt,u(t)?{[Nt]:t}:t??{}))(t),n=a[$t];if(a.mode==At){const t=a[Nt]??e;return[1,n,[t,a[St]??T,a[Tt]??mt],lt(t)]}const{tables:{load:s={},save:i={}}={},values:o={}}=a,r=w(X(K(Rt,o)),0,Z(Rt)),c=r[2],l=lt(c),y=lt(c);return[0,n,[Mt(s,{[Ct]:null,[bt]:T},Ct,(t=>j(y,t)),(t=>ut(l,t))),Mt(i,{[Ot]:null,[bt]:T,[It]:0,[Lt]:0},Ot,((t,a)=>j(y,a)),((t,a)=>ut(l,a))),r],l]})(a);return(A?gt:Et)(t,m,(t=>{let a;const e=()=>a=setInterval((async()=>{try{const[{d:a,s:e,c:n}]=await m(`${$} ${R} d,${M} s,TOTAL_CHANGES() c FROM ${D}${R} JOIN ${D}${M}`);a==g&&e==E&&n==h||(null!=g&&t(),g=a,E=e,h=n)}catch{}}),1e3*N),n=()=>{g=E=h=null,r(a)},s=i((a=>{C.has(a)&&(n(),t(),e())}));return e(),()=>{n(),o(s)}}),(t=>t()),l,y,d,S,B(C),(async(t,a)=>await t(`${$} t.name tn,c.name cn FROM ${P}list()t,${P}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${F(a)})ORDER BY t.name,c.name`,a)),p,f,n,v,(t=>!0===t?1:!1===t?0:t),void 0)},_t="change";t.createSqlite3Persister=(t,a,e,n,s)=>Pt(t,e,(async(t,e=[])=>{return await(n=(n,s)=>a.all(t,e,((t,a)=>t?s(t):n(a))),new o(n));var n}),(t=>{const e=(a,e,n)=>t(n);return a.on(_t,e),e}),(t=>a.off(_t,t)),n,s,(()=>0),3,a)},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterSqlite3={});