tinybase 6.1.0-beta.4 → 6.1.0-beta.5

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 (233) hide show
  1. package/@types/persisters/index.d.ts +82 -40
  2. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  3. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  4. package/@types/persisters/persister-browser/index.d.ts +4 -4
  5. package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
  6. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
  7. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
  8. package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
  12. package/@types/persisters/persister-file/index.d.ts +2 -2
  13. package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
  14. package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
  15. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
  16. package/@types/persisters/persister-libsql/index.d.ts +3 -3
  17. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
  18. package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
  19. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
  20. package/@types/persisters/persister-pglite/index.d.ts +3 -3
  21. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
  22. package/@types/persisters/persister-postgres/index.d.ts +3 -3
  23. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
  24. package/@types/persisters/persister-powersync/index.d.ts +3 -3
  25. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
  26. package/@types/persisters/persister-remote/index.d.ts +2 -2
  27. package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
  28. package/@types/persisters/persister-sqlite-bun/index.d.ts +3 -3
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -3
  30. package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
  31. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
  32. package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
  33. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
  34. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  35. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  36. package/@types/persisters/with-schemas/index.d.ts +86 -42
  37. package/@types/synchronizers/index.d.ts +18 -16
  38. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
  39. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
  40. package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
  41. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
  42. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
  43. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
  44. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
  45. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
  46. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
  47. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
  48. package/@types/synchronizers/with-schemas/index.d.ts +18 -16
  49. package/@types/ui-react/index.d.ts +2 -2
  50. package/@types/ui-react/with-schemas/index.d.ts +2 -2
  51. package/index.js +23 -17
  52. package/mergeable-store/index.js +23 -17
  53. package/mergeable-store/with-schemas/index.js +23 -17
  54. package/min/index.js +1 -1
  55. package/min/index.js.gz +0 -0
  56. package/min/mergeable-store/index.js +1 -1
  57. package/min/mergeable-store/index.js.gz +0 -0
  58. package/min/mergeable-store/with-schemas/index.js +1 -1
  59. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/index.js +1 -1
  61. package/min/persisters/index.js.gz +0 -0
  62. package/min/persisters/persister-automerge/index.js +1 -1
  63. package/min/persisters/persister-automerge/index.js.gz +0 -0
  64. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-browser/index.js +1 -1
  67. package/min/persisters/persister-browser/index.js.gz +0 -0
  68. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  71. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  72. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  75. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  76. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-electric-sql/index.js +1 -1
  79. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  80. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  83. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-file/index.js +1 -1
  87. package/min/persisters/persister-file/index.js.gz +0 -0
  88. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-indexed-db/index.js +1 -1
  91. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  92. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-libsql/index.js +1 -1
  95. package/min/persisters/persister-libsql/index.js.gz +0 -0
  96. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-partykit-client/index.js +1 -1
  99. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  100. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-pglite/index.js +1 -1
  103. package/min/persisters/persister-pglite/index.js.gz +0 -0
  104. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-postgres/index.js +1 -1
  107. package/min/persisters/persister-postgres/index.js.gz +0 -0
  108. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-powersync/index.js +1 -1
  111. package/min/persisters/persister-powersync/index.js.gz +0 -0
  112. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-remote/index.js +1 -1
  115. package/min/persisters/persister-remote/index.js.gz +0 -0
  116. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  121. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  123. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  124. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-sqlite3/index.js +1 -1
  127. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  128. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-yjs/index.js +1 -1
  131. package/min/persisters/persister-yjs/index.js.gz +0 -0
  132. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/with-schemas/index.js +1 -1
  135. package/min/persisters/with-schemas/index.js.gz +0 -0
  136. package/min/store/index.js +1 -1
  137. package/min/store/index.js.gz +0 -0
  138. package/min/store/with-schemas/index.js +1 -1
  139. package/min/store/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/index.js +1 -1
  141. package/min/synchronizers/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  166. package/min/synchronizers/with-schemas/index.js +1 -1
  167. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  168. package/min/ui-react-inspector/index.js +1 -1
  169. package/min/ui-react-inspector/index.js.gz +0 -0
  170. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  171. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  172. package/min/with-schemas/index.js +1 -1
  173. package/min/with-schemas/index.js.gz +0 -0
  174. package/package.json +8 -4
  175. package/persisters/index.js +293 -161
  176. package/persisters/persister-automerge/index.js +55 -50
  177. package/persisters/persister-automerge/with-schemas/index.js +55 -50
  178. package/persisters/persister-browser/index.js +56 -55
  179. package/persisters/persister-browser/with-schemas/index.js +56 -55
  180. package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
  182. package/persisters/persister-durable-object-storage/index.js +58 -53
  183. package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
  184. package/persisters/persister-electric-sql/index.js +181 -134
  185. package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
  186. package/persisters/persister-expo-sqlite/index.js +181 -134
  187. package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
  188. package/persisters/persister-file/index.js +55 -50
  189. package/persisters/persister-file/with-schemas/index.js +55 -50
  190. package/persisters/persister-indexed-db/index.js +82 -78
  191. package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
  192. package/persisters/persister-libsql/index.js +182 -135
  193. package/persisters/persister-libsql/with-schemas/index.js +182 -135
  194. package/persisters/persister-partykit-client/index.js +56 -51
  195. package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
  196. package/persisters/persister-pglite/index.js +299 -173
  197. package/persisters/persister-pglite/with-schemas/index.js +299 -173
  198. package/persisters/persister-postgres/index.js +296 -171
  199. package/persisters/persister-postgres/with-schemas/index.js +296 -171
  200. package/persisters/persister-powersync/index.js +189 -138
  201. package/persisters/persister-powersync/with-schemas/index.js +189 -138
  202. package/persisters/persister-remote/index.js +55 -50
  203. package/persisters/persister-remote/with-schemas/index.js +55 -50
  204. package/persisters/persister-sqlite-bun/index.js +182 -135
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +182 -135
  206. package/persisters/persister-sqlite-wasm/index.js +182 -135
  207. package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
  208. package/persisters/persister-sqlite3/index.js +181 -134
  209. package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
  210. package/persisters/persister-yjs/index.js +55 -50
  211. package/persisters/persister-yjs/with-schemas/index.js +55 -50
  212. package/persisters/with-schemas/index.js +293 -161
  213. package/readme.md +2 -2
  214. package/releases.md +29 -1
  215. package/store/index.js +20 -15
  216. package/store/with-schemas/index.js +20 -15
  217. package/synchronizers/index.js +68 -63
  218. package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
  219. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
  220. package/synchronizers/synchronizer-local/index.js +68 -63
  221. package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
  222. package/synchronizers/synchronizer-ws-client/index.js +68 -63
  223. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
  224. package/synchronizers/synchronizer-ws-server/index.js +79 -70
  225. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
  226. package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
  227. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
  228. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  229. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  230. package/synchronizers/with-schemas/index.js +68 -63
  231. package/ui-react-inspector/index.js +68 -60
  232. package/ui-react-inspector/with-schemas/index.js +68 -60
  233. package/with-schemas/index.js +23 -17
@@ -1 +1 @@
1
- const t=t=>typeof t,e="",a=t(e),s="message",n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),r=e=>t(e)==a,i=t=>Array.isArray(t),c=t=>t.length,d=t=>{throw Error(t)},y=(t,e)=>t.forEach(e),l=(t,...e)=>t.push(...e),u=t=>t.shift(),g=Object,h=t=>g.getPrototypeOf(t),p=g.keys,v=g.freeze,w=t=>(t=>!n(t)&&o(h(t),(t=>t==g.prototype||n(h(t))),(()=>!0)))(t)&&0==(t=>c(p(t)))(t),f=JSON.stringify,S=JSON.parse,C=t=>f(t,((t,e)=>e instanceof Map?g.fromEntries([...e]):e)),A=t=>n(t)||0==(t=>t?.size??0)(t),L=(t,e)=>t?.forEach(e),b=(t,e)=>t?.delete(e),m=t=>new Map(t),M=(t,e)=>t?.get(e),P=(t,e,a)=>n(a)?(b(t,e),t):t?.set(e,a),E=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(M(t,e)):P(t,e,a()),M(t,e)},O=(t,e,a,s,n=0)=>o((a?E:M)(t,e[n],n>c(e)-2?a:m),(o=>{if(n>c(e)-2)return s?.(o)&&P(t,e[n]),o;const r=O(o,e,a,s,n+1);return A(o)&&P(t,e[n]),r})),T=/^\d+$/,j=t=>new Set(i(t)||n(t)?t:[t]),k=m(),x=m(),z=(t,a,s,r,g,h,p,f={},S=0,C=[])=>{let z,D,J,N=0,F=0,U=0;E(k,C,(()=>0)),E(x,C,(()=>[]));const W=m(),[$,q,B,G,H]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!w(t)||!w(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!w(t)||!w(e),e.setContent]:d("Store type not supported by this Persister"))(p,t,S),[I,K,Q]=(()=>{let t;const[a,s]=(()=>{const t=[];let a=0;return[s=>(s?u(t):null)??e+a++,e=>{T.test(e)&&c(t)<1e3&&l(t,e)}]})(),r=m();return[(s,n,o,i=[],c=()=>[])=>{t??=et;const d=a(1);var y,l;return P(r,d,[s,n,o,i,c]),y=O(n,o??[e],j),l=d,y?.add(l),d},(a,s,...n)=>y(((t,a=[e])=>{const s=[],n=(t,e)=>e==c(a)?l(s,t):null===a[e]?L(t,(t=>n(t,e+1))):y([a[e],null],(a=>n(M(t,a),e+1)));return n(t,0),s})(a,s),(e=>L(e,(e=>M(r,e)[0](t,...s??[],...n))))),t=>o(M(r,t),(([,a,n])=>(O(a,n??[e],void 0,(e=>(b(e,t),A(e)?1:0))),P(r,t),s(t),n))),e=>o(M(r,e),(([e,,a=[],s,o])=>{const r=(...i)=>{const d=c(i);d==c(a)?e(t,...i,...o(i)):n(a[d])?y(s[d]?.(...i)??[],(t=>r(...i,t))):r(...i,a[d])};r()}))]})(),R=t=>{t!=N&&(N=t,K(W,void 0,N))},V=e=>{($&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async t=>(2!=N&&(R(1),F++,await tt((async()=>{try{const e=await a();i(e)?V(e):t?H(t):d("Content is not an array: "+e)}catch(e){h?.(e),t&&H(t)}R(0)}))),et),Y=()=>(D&&(g(D),D=void 0),et),Z=async t=>(1!=N&&(R(2),U++,await tt((async()=>{try{await s(q,t)}catch(t){h?.(t)}R(0)}))),et),_=()=>(J&&(t.delListener(J),J=void 0),et),tt=async(...t)=>(l(M(x,C),...t),await(async()=>{if(!M(k,C)){for(P(k,C,1);!n(z=u(M(x,C)));)try{await z()}catch(t){h?.(t)}P(k,C,0)}})(),et),et={load:X,startAutoLoad:async t=>{Y(),await X(t);try{D=await r((async(t,e)=>{e||t?2!=N&&(R(1),F++,V(e??t),R(0)):await X()}))}catch(t){h?.(t)}return et},stopAutoLoad:Y,isAutoLoading:()=>!n(D),save:Z,startAutoSave:async()=>(_(),await Z(),J=t.addDidFinishTransactionListener((()=>{const t=B();G(t)&&Z(t)})),et),stopAutoSave:_,isAutoSaving:()=>!n(J),getStatus:()=>N,addStatusListener:t=>I(t,W),delListener:e=>(Q(e),t),schedule:tt,getStore:()=>t,destroy:()=>(M(x,C).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:F,saves:U}),...f};return v(et)},D="/store",J=(t,a,n,i)=>{const{host:d,room:y}=a.partySocketOptions,{storeProtocol:l="https",storePath:u=D,messagePrefix:g=e}={...r(n)?{storeProtocol:n}:n},h=l+"://"+d+"/parties/"+a.name+"/"+y+u,p=async t=>await(await fetch(h,{...t?{method:"PUT",body:C(t)}:{},mode:"cors",cache:"no-store"})).json();return z(t,(async()=>await p()),(async(t,e)=>{var s;e?a.send(g+"s"+(r(s=e)?s:C(s))):await p(t())}),(t=>{const e=e=>o(((t,e)=>{const a=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[a],S((s=e,n=a+1,s.slice(n,void 0)))]:void 0;var s,n})(g,e.data),(([e,a])=>{"s"==e&&t(void 0,a)}));return a.addEventListener(s,e),e}),(t=>{a.removeEventListener(s,t)}),i,1,{getConnection:()=>a})};export{J as createPartyKitPersister};
1
+ const t=t=>typeof t,e="",a=t(e),s="message",n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),r=e=>t(e)==a,i=t=>Array.isArray(t),c=t=>t.length,d=t=>{throw Error(t)},y=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},l=(t,e)=>t.forEach(e),u=(t,...e)=>t.push(...e),g=t=>t.shift(),p=Object,h=t=>p.getPrototypeOf(t),w=p.keys,v=p.freeze,f=t=>(t=>!n(t)&&o(h(t),(t=>t==p.prototype||n(h(t))),(()=>!0)))(t)&&0==(t=>c(w(t)))(t),S=JSON.stringify,C=JSON.parse,A=t=>S(t,((t,e)=>e instanceof Map?p.fromEntries([...e]):e)),L=t=>n(t)||0==(t=>t?.size??0)(t),b=(t,e)=>t?.forEach(e),m=(t,e)=>t?.delete(e),M=t=>new Map(t),P=(t,e)=>t?.get(e),E=(t,e,a)=>n(a)?(m(t,e),t):t?.set(e,a),O=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(P(t,e)):E(t,e,a()),P(t,e)},T=(t,e,a,s,n=0)=>o((a?O:P)(t,e[n],n>c(e)-2?a:M),(o=>{if(n>c(e)-2)return s?.(o)&&E(t,e[n]),o;const r=T(o,e,a,s,n+1);return L(o)&&E(t,e[n]),r})),j=/^\d+$/,k=t=>new Set(i(t)||n(t)?t:[t]),x=M(),z=M(),D=(t,a,s,r,p,h,w,S={},C=0,A=[])=>{let D,J,N,F=0,U=0,W=0;O(x,A,(()=>0)),O(z,A,(()=>[]));const $=M(),[q,B,G,H,I]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!f(t)||!f(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!f(t)||!f(e),e.setContent]:d("Store type not supported by this Persister"))(w,t,C),[K,Q,R]=(()=>{let t;const[a,s]=(()=>{const t=[];let a=0;return[s=>(s?g(t):null)??e+a++,e=>{j.test(e)&&c(t)<1e3&&u(t,e)}]})(),r=M();return[(s,n,o,i=[],c=()=>[])=>{t??=at;const d=a(1);var y,l;return E(r,d,[s,n,o,i,c]),y=T(n,o??[e],k),l=d,y?.add(l),d},(a,s,...n)=>l(((t,a=[e])=>{const s=[],n=(t,e)=>e==c(a)?u(s,t):null===a[e]?b(t,(t=>n(t,e+1))):l([a[e],null],(a=>n(P(t,a),e+1)));return n(t,0),s})(a,s),(e=>b(e,(e=>P(r,e)[0](t,...s??[],...n))))),t=>o(P(r,t),(([,a,n])=>(T(a,n??[e],void 0,(e=>(m(e,t),L(e)?1:0))),E(r,t),s(t),n))),e=>o(P(r,e),(([e,,a=[],s,o])=>{const r=(...i)=>{const d=c(i);d==c(a)?e(t,...i,...o(i)):n(a[d])?l(s[d]?.(...i)??[],(t=>r(...i,t))):r(...i,a[d])};r()}))]})(),V=t=>{t!=F&&(F=t,Q($,void 0,F))},X=e=>{(q&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},Y=async t=>(2!=F&&(V(1),U++,await et((async()=>{await y((async()=>{const e=await a();i(e)?X(e):t?I(t):d("Content is not an array: "+e)}),(()=>{t&&I(t)})),V(0)}))),at),Z=async()=>(J&&(await y((()=>p(J)),h),J=void 0),at),_=async t=>(1!=F&&(V(2),W++,await et((async()=>{await y((()=>s(B,t)),h),V(0)}))),at),tt=async()=>(N&&(t.delListener(N),N=void 0),at),et=async(...t)=>(u(P(z,A),...t),await(async()=>{if(!P(x,A)){for(E(x,A,1);!n(D=g(P(z,A)));)await y(D,h);E(x,A,0)}})(),at),at={load:Y,startAutoLoad:async t=>(Z(),await Y(t),await y((async()=>J=await r((async(t,e)=>{e||t?2!=F&&(V(1),U++,X(e??t),V(0)):await Y()}))),h),at),stopAutoLoad:Z,isAutoLoading:()=>!n(J),save:_,startAutoSave:async()=>(tt(),await _(),N=t.addDidFinishTransactionListener((()=>{const t=G();H(t)&&_(t)})),at),stopAutoSave:tt,isAutoSaving:()=>!n(N),getStatus:()=>F,addStatusListener:t=>K(t,$),delListener:e=>(R(e),t),schedule:et,getStore:()=>t,destroy:async()=>(P(z,A).splice(0,void 0),await at.stopAutoLoad(),await at.stopAutoSave()),getStats:()=>({loads:U,saves:W}),...S};return v(at)},J="/store",N=(t,a,n,i)=>{const{host:d,room:y}=a.partySocketOptions,{storeProtocol:l="https",storePath:u=J,messagePrefix:g=e}={...r(n)?{storeProtocol:n}:n},p=l+"://"+d+"/parties/"+a.name+"/"+y+u,h=async t=>await(await fetch(p,{...t?{method:"PUT",body:A(t)}:{},mode:"cors",cache:"no-store"})).json();return D(t,h,(async(t,e)=>{var s;e?a.send(g+"s"+(r(s=e)?s:A(s))):await h(t())}),(t=>{const e=e=>o(((t,e)=>{const a=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[a],C((s=e,n=a+1,s.slice(n,void 0)))]:void 0;var s,n})(g,e.data),(([e,a])=>{"s"==e&&t(void 0,a)}));return a.addEventListener(s,e),e}),(t=>{a.removeEventListener(s,t)}),i,1,{getConnection:()=>a})};export{N as createPartyKitPersister};
@@ -1 +1 @@
1
- const t=t=>typeof t,e="",a=t(e),s="message",n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),r=e=>t(e)==a,i=t=>Array.isArray(t),c=t=>t.length,d=t=>{throw Error(t)},y=(t,e)=>t.forEach(e),l=(t,...e)=>t.push(...e),u=t=>t.shift(),g=Object,h=t=>g.getPrototypeOf(t),p=g.keys,v=g.freeze,w=t=>(t=>!n(t)&&o(h(t),(t=>t==g.prototype||n(h(t))),(()=>!0)))(t)&&0==(t=>c(p(t)))(t),f=JSON.stringify,S=JSON.parse,C=t=>f(t,((t,e)=>e instanceof Map?g.fromEntries([...e]):e)),A=t=>n(t)||0==(t=>t?.size??0)(t),L=(t,e)=>t?.forEach(e),b=(t,e)=>t?.delete(e),m=t=>new Map(t),M=(t,e)=>t?.get(e),P=(t,e,a)=>n(a)?(b(t,e),t):t?.set(e,a),E=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(M(t,e)):P(t,e,a()),M(t,e)},O=(t,e,a,s,n=0)=>o((a?E:M)(t,e[n],n>c(e)-2?a:m),(o=>{if(n>c(e)-2)return s?.(o)&&P(t,e[n]),o;const r=O(o,e,a,s,n+1);return A(o)&&P(t,e[n]),r})),T=/^\d+$/,j=t=>new Set(i(t)||n(t)?t:[t]),k=m(),x=m(),z=(t,a,s,r,g,h,p,f={},S=0,C=[])=>{let z,D,J,N=0,F=0,U=0;E(k,C,(()=>0)),E(x,C,(()=>[]));const W=m(),[$,q,B,G,H]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!w(t)||!w(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!w(t)||!w(e),e.setContent]:d("Store type not supported by this Persister"))(p,t,S),[I,K,Q]=(()=>{let t;const[a,s]=(()=>{const t=[];let a=0;return[s=>(s?u(t):null)??e+a++,e=>{T.test(e)&&c(t)<1e3&&l(t,e)}]})(),r=m();return[(s,n,o,i=[],c=()=>[])=>{t??=et;const d=a(1);var y,l;return P(r,d,[s,n,o,i,c]),y=O(n,o??[e],j),l=d,y?.add(l),d},(a,s,...n)=>y(((t,a=[e])=>{const s=[],n=(t,e)=>e==c(a)?l(s,t):null===a[e]?L(t,(t=>n(t,e+1))):y([a[e],null],(a=>n(M(t,a),e+1)));return n(t,0),s})(a,s),(e=>L(e,(e=>M(r,e)[0](t,...s??[],...n))))),t=>o(M(r,t),(([,a,n])=>(O(a,n??[e],void 0,(e=>(b(e,t),A(e)?1:0))),P(r,t),s(t),n))),e=>o(M(r,e),(([e,,a=[],s,o])=>{const r=(...i)=>{const d=c(i);d==c(a)?e(t,...i,...o(i)):n(a[d])?y(s[d]?.(...i)??[],(t=>r(...i,t))):r(...i,a[d])};r()}))]})(),R=t=>{t!=N&&(N=t,K(W,void 0,N))},V=e=>{($&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async t=>(2!=N&&(R(1),F++,await tt((async()=>{try{const e=await a();i(e)?V(e):t?H(t):d("Content is not an array: "+e)}catch(e){h?.(e),t&&H(t)}R(0)}))),et),Y=()=>(D&&(g(D),D=void 0),et),Z=async t=>(1!=N&&(R(2),U++,await tt((async()=>{try{await s(q,t)}catch(t){h?.(t)}R(0)}))),et),_=()=>(J&&(t.delListener(J),J=void 0),et),tt=async(...t)=>(l(M(x,C),...t),await(async()=>{if(!M(k,C)){for(P(k,C,1);!n(z=u(M(x,C)));)try{await z()}catch(t){h?.(t)}P(k,C,0)}})(),et),et={load:X,startAutoLoad:async t=>{Y(),await X(t);try{D=await r((async(t,e)=>{e||t?2!=N&&(R(1),F++,V(e??t),R(0)):await X()}))}catch(t){h?.(t)}return et},stopAutoLoad:Y,isAutoLoading:()=>!n(D),save:Z,startAutoSave:async()=>(_(),await Z(),J=t.addDidFinishTransactionListener((()=>{const t=B();G(t)&&Z(t)})),et),stopAutoSave:_,isAutoSaving:()=>!n(J),getStatus:()=>N,addStatusListener:t=>I(t,W),delListener:e=>(Q(e),t),schedule:tt,getStore:()=>t,destroy:()=>(M(x,C).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:F,saves:U}),...f};return v(et)},D="/store",J=(t,a,n,i)=>{const{host:d,room:y}=a.partySocketOptions,{storeProtocol:l="https",storePath:u=D,messagePrefix:g=e}={...r(n)?{storeProtocol:n}:n},h=l+"://"+d+"/parties/"+a.name+"/"+y+u,p=async t=>await(await fetch(h,{...t?{method:"PUT",body:C(t)}:{},mode:"cors",cache:"no-store"})).json();return z(t,(async()=>await p()),(async(t,e)=>{var s;e?a.send(g+"s"+(r(s=e)?s:C(s))):await p(t())}),(t=>{const e=e=>o(((t,e)=>{const a=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[a],S((s=e,n=a+1,s.slice(n,void 0)))]:void 0;var s,n})(g,e.data),(([e,a])=>{"s"==e&&t(void 0,a)}));return a.addEventListener(s,e),e}),(t=>{a.removeEventListener(s,t)}),i,1,{getConnection:()=>a})};export{J as createPartyKitPersister};
1
+ const t=t=>typeof t,e="",a=t(e),s="message",n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),r=e=>t(e)==a,i=t=>Array.isArray(t),c=t=>t.length,d=t=>{throw Error(t)},y=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},l=(t,e)=>t.forEach(e),u=(t,...e)=>t.push(...e),g=t=>t.shift(),p=Object,h=t=>p.getPrototypeOf(t),w=p.keys,v=p.freeze,f=t=>(t=>!n(t)&&o(h(t),(t=>t==p.prototype||n(h(t))),(()=>!0)))(t)&&0==(t=>c(w(t)))(t),S=JSON.stringify,C=JSON.parse,A=t=>S(t,((t,e)=>e instanceof Map?p.fromEntries([...e]):e)),L=t=>n(t)||0==(t=>t?.size??0)(t),b=(t,e)=>t?.forEach(e),m=(t,e)=>t?.delete(e),M=t=>new Map(t),P=(t,e)=>t?.get(e),E=(t,e,a)=>n(a)?(m(t,e),t):t?.set(e,a),O=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(P(t,e)):E(t,e,a()),P(t,e)},T=(t,e,a,s,n=0)=>o((a?O:P)(t,e[n],n>c(e)-2?a:M),(o=>{if(n>c(e)-2)return s?.(o)&&E(t,e[n]),o;const r=T(o,e,a,s,n+1);return L(o)&&E(t,e[n]),r})),j=/^\d+$/,k=t=>new Set(i(t)||n(t)?t:[t]),x=M(),z=M(),D=(t,a,s,r,p,h,w,S={},C=0,A=[])=>{let D,J,N,F=0,U=0,W=0;O(x,A,(()=>0)),O(z,A,(()=>[]));const $=M(),[q,B,G,H,I]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!f(t)||!f(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!f(t)||!f(e),e.setContent]:d("Store type not supported by this Persister"))(w,t,C),[K,Q,R]=(()=>{let t;const[a,s]=(()=>{const t=[];let a=0;return[s=>(s?g(t):null)??e+a++,e=>{j.test(e)&&c(t)<1e3&&u(t,e)}]})(),r=M();return[(s,n,o,i=[],c=()=>[])=>{t??=at;const d=a(1);var y,l;return E(r,d,[s,n,o,i,c]),y=T(n,o??[e],k),l=d,y?.add(l),d},(a,s,...n)=>l(((t,a=[e])=>{const s=[],n=(t,e)=>e==c(a)?u(s,t):null===a[e]?b(t,(t=>n(t,e+1))):l([a[e],null],(a=>n(P(t,a),e+1)));return n(t,0),s})(a,s),(e=>b(e,(e=>P(r,e)[0](t,...s??[],...n))))),t=>o(P(r,t),(([,a,n])=>(T(a,n??[e],void 0,(e=>(m(e,t),L(e)?1:0))),E(r,t),s(t),n))),e=>o(P(r,e),(([e,,a=[],s,o])=>{const r=(...i)=>{const d=c(i);d==c(a)?e(t,...i,...o(i)):n(a[d])?l(s[d]?.(...i)??[],(t=>r(...i,t))):r(...i,a[d])};r()}))]})(),V=t=>{t!=F&&(F=t,Q($,void 0,F))},X=e=>{(q&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},Y=async t=>(2!=F&&(V(1),U++,await et((async()=>{await y((async()=>{const e=await a();i(e)?X(e):t?I(t):d("Content is not an array: "+e)}),(()=>{t&&I(t)})),V(0)}))),at),Z=async()=>(J&&(await y((()=>p(J)),h),J=void 0),at),_=async t=>(1!=F&&(V(2),W++,await et((async()=>{await y((()=>s(B,t)),h),V(0)}))),at),tt=async()=>(N&&(t.delListener(N),N=void 0),at),et=async(...t)=>(u(P(z,A),...t),await(async()=>{if(!P(x,A)){for(E(x,A,1);!n(D=g(P(z,A)));)await y(D,h);E(x,A,0)}})(),at),at={load:Y,startAutoLoad:async t=>(Z(),await Y(t),await y((async()=>J=await r((async(t,e)=>{e||t?2!=F&&(V(1),U++,X(e??t),V(0)):await Y()}))),h),at),stopAutoLoad:Z,isAutoLoading:()=>!n(J),save:_,startAutoSave:async()=>(tt(),await _(),N=t.addDidFinishTransactionListener((()=>{const t=G();H(t)&&_(t)})),at),stopAutoSave:tt,isAutoSaving:()=>!n(N),getStatus:()=>F,addStatusListener:t=>K(t,$),delListener:e=>(R(e),t),schedule:et,getStore:()=>t,destroy:async()=>(P(z,A).splice(0,void 0),await at.stopAutoLoad(),await at.stopAutoSave()),getStats:()=>({loads:U,saves:W}),...S};return v(at)},J="/store",N=(t,a,n,i)=>{const{host:d,room:y}=a.partySocketOptions,{storeProtocol:l="https",storePath:u=J,messagePrefix:g=e}={...r(n)?{storeProtocol:n}:n},p=l+"://"+d+"/parties/"+a.name+"/"+y+u,h=async t=>await(await fetch(p,{...t?{method:"PUT",body:A(t)}:{},mode:"cors",cache:"no-store"})).json();return D(t,h,(async(t,e)=>{var s;e?a.send(g+"s"+(r(s=e)?s:A(s))):await h(t())}),(t=>{const e=e=>o(((t,e)=>{const a=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[a],C((s=e,n=a+1,s.slice(n,void 0)))]:void 0;var s,n})(g,e.data),(([e,a])=>{"s"==e&&t(void 0,a)}));return a.addEventListener(s,e),e}),(t=>{a.removeEventListener(s,t)}),i,1,{getConnection:()=>a})};export{N as createPartyKitPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e=",",n=a(""),s=Promise,i=a=>null==a,o=(a,t,e)=>i(a)?e?.():t(a),r=t=>a(t)==n,c=a=>Array.isArray(a),E=(a,t,e)=>a.slice(t,e),l=a=>a.length,w=async a=>s.all(a),y=a=>{throw Error(a)},d=(a,t)=>a.forEach(t),u=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),R=a=>0==l(a),A=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),g=a=>a.shift(),p=(a,t)=>a?.has(t)??!1,C=a=>i(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],L=(a,t)=>a?.forEach(t),$=(a,t)=>a?.delete(t),v=Object,I=a=>v.getPrototypeOf(a),S=v.entries,m=v.keys,_=v.freeze,h=(a=[])=>v.fromEntries(a),f=(...a)=>v.assign({},...a),b=(a,t)=>(delete a[t],a),D=(a,t)=>T(S(a),(([a,e])=>t(e,a))),P=(a,t)=>h(D(a,((a,e)=>[e,t(a,e)]))),U=a=>v.values(a),F=a=>l(m(a)),M=a=>(a=>!i(a)&&o(I(a),(a=>a==v.prototype||i(I(a))),(()=>!0)))(a)&&0==F(a),G=JSON.stringify,B=JSON.parse,j="_",x="_id",X="SELECT",Y="WHERE",q="TABLE",H="ALTER "+q,W="DELETE FROM",k=X+"*FROM",z=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>u(T(a,(()=>"$"+t[0]++)),e),K=a=>new Map(a),V=(a,t)=>a?.get(t),Q=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),Z=(a,t,e)=>i(e)?($(a,t),a):a?.set(t,e),aa=(a,t,e,n)=>(p(a,t)?n?.(V(a,t)):Z(a,t,e()),V(a,t)),ta=(a,t,e,n,s=0)=>o((e?aa:V)(a,t[s],s>l(t)-2?e:K),(i=>{if(s>l(t)-2)return n?.(i)&&Z(a,t[s]),i;const o=ta(i,t,e,n,s+1);return C(i)&&Z(a,t[s]),o})),ea=a=>new Set(c(a)||i(a)?a:[a]),na=(a,t)=>a?.add(t),sa="ColumnName",ia="store",oa="json",ra=ia+"TableName",ca=ia+"Id"+sa,Ea=ia+sa,la="autoLoadIntervalSeconds",wa="rowId"+sa,ya="tableId",da="tableName",ua="deleteEmptyColumns",Ta="deleteEmptyTable",Ra={mode:oa,[la]:1},Aa={load:0,save:0,[da]:t+"_values"},Na=(a,t,e,n,s)=>{const o=K();return P(a,((a,c)=>{const l=E(U(f(t,r(a)?{[e]:a}:a)),0,F(t));i(l[0])||n(c,l[0])||(s(c,l[0]),Z(o,c,l))})),o},ga=/^\d+$/,pa=K(),Ca=K(),Oa=(a,t,e,n,s,r,E,w={},u=0,T=[])=>{let R,A,p,O=0,v=0,I=0;aa(pa,T,(()=>0)),aa(Ca,T,(()=>[]));const S=K(),[m,h,f,b,D]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!M(a)||!M(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!M(a)||!M(t),t.setContent]:y("Store type not supported by this Persister"))(E,a,u),[P,U,F]=(()=>{let a;const[t,e]=(()=>{const a=[];let t=0;return[e=>(e?g(a):null)??""+t++,t=>{ga.test(t)&&l(a)<1e3&&N(a,t)}]})(),n=K();return[(e,s,i,o=[],r=()=>[])=>{a??=H;const c=t(1);return Z(n,c,[e,s,i,o,r]),na(ta(s,i??[""],ea),c),c},(t,e,...s)=>d(((a,t=[""])=>{const e=[],n=(a,s)=>s==l(t)?N(e,a):null===t[s]?L(a,(a=>n(a,s+1))):d([t[s],null],(t=>n(V(a,t),s+1)));return n(a,0),e})(t,e),(t=>L(t,(t=>V(n,t)[0](a,...e??[],...s))))),a=>o(V(n,a),(([,t,s])=>(ta(t,s??[""],void 0,(t=>($(t,a),C(t)?1:0))),Z(n,a),e(a),s))),t=>o(V(n,t),(([t,,e=[],n,s])=>{const o=(...r)=>{const c=l(r);c==l(e)?t(a,...r,...s(r)):i(e[c])?d(n[c]?.(...r)??[],(a=>o(...r,a))):o(...r,e[c])};o()}))]})(),G=a=>{a!=O&&(O=a,U(S,void 0,O))},B=t=>{(m&&c(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},j=async a=>(2!=O&&(G(1),v++,await q((async()=>{try{const e=await t();c(e)?B(e):a?D(a):y("Content is not an array: "+e)}catch(t){r?.(t),a&&D(a)}G(0)}))),H),x=()=>(A&&(s(A),A=void 0),H),X=async a=>(1!=O&&(G(2),I++,await q((async()=>{try{await e(h,a)}catch(a){r?.(a)}G(0)}))),H),Y=()=>(p&&(a.delListener(p),p=void 0),H),q=async(...a)=>(N(V(Ca,T),...a),await(async()=>{if(!V(pa,T)){for(Z(pa,T,1);!i(R=g(V(Ca,T)));)try{await R()}catch(a){r?.(a)}Z(pa,T,0)}})(),H),H={load:j,startAutoLoad:async a=>{x(),await j(a);try{A=await n((async(a,t)=>{t||a?2!=O&&(G(1),v++,B(t??a),G(0)):await j()}))}catch(a){r?.(a)}return H},stopAutoLoad:x,isAutoLoading:()=>!i(A),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=f();b(a)&&X(a)})),H),stopAutoSave:Y,isAutoSaving:()=>!i(p),getStatus:()=>O,addStatusListener:a=>P(a,S),delListener:t=>(F(t),a),schedule:q,getStore:()=>a,destroy:()=>(V(Ca,T).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:v,saves:I}),...w};return _(H)},La=(a,t,n,s,o,r=$a,c,E)=>{const l=K();return[async()=>{l.clear(),T(await n(a,t),(({tn:a,cn:t})=>na(aa(l,a,ea),t)))},async(t,e)=>((a,t)=>p(V(l,a),t))(t,e)?h(A(T(await a(k+z(t)),(a=>[a[e],E?P(b(a,e),E):b(a,e)])),(([a,t])=>!i(a)&&!M(t)))):{},async(t,n,s,E,y,d=!1)=>{const g=ea();P(s??{},(a=>T(m(a??{}),(a=>na(g,a)))));const C=O(g);if(!d&&y&&R(C)&&p(l,t))return await a("DROP "+q+z(t)),void Z(l,t);const L=V(l,t),v=ea(O(L));if(R(C)||(p(l,t)?await w(T([n,...C],(async(e,s)=>{$(v,e)||(await a(H+z(t)+"ADD"+z(e)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(n)})`),na(L,e))}))):(await a("CREATE "+q+z(t)+`(${z(n)}${o} PRIMARY KEY${u(T(C,(a=>e+z(a)+o)))});`),Z(l,t,ea([n,...C])))),await w([...!d&&E?T(O(v),(async e=>{e!=n&&(await a(H+z(t)+"DROP"+z(e)),$(L,e))})):[]]),d)i(s)?await a(W+z(t)+Y+" true"):await w(D(s,(async(e,s)=>{i(e)?await a(W+z(t)+Y+z(n)+"=$1",[s]):R(C)||await r(a,t,n,m(e),{[s]:c?T(U(e),c):U(e)},L)})));else if(R(C))p(l,t)&&await a(W+z(t)+Y+" true");else{const e=A(O(V(l,t)),(a=>a!=n)),i={},o=[];P(s??{},((a,t)=>{i[t]=T(e,(t=>c?c(a?.[t]):a?.[t])),N(o,t)})),await r(a,t,n,e,i),await a(W+z(t)+Y+z(n)+`NOT IN(${J(o)})`,o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},$a=async(a,t,n,s,i)=>{const o=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>u(T(a,z),e))(n,...s)+")VALUES"+u(D(i,(a=>"($"+o[0]+++","+J(a,o)+")")),e)+"ON CONFLICT("+z(n)+")DO UPDATE SET"+u(T(s,(a=>z(a)+"=excluded."+z(a))),e),D(i,((a,t)=>[t,...T(a,(a=>a??null))])).flat())},va=(a,t,e,n,s,i,o,[r,c,E],l,w,y,d,u,T)=>{const[R,A,N,g]=La(t,l,w,s,u,T),p=Oa(a,(async()=>await g((async()=>{return await R(),a=(await A(r,c))[j]?.[E]??"null",B(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await R(),await N(r,c,{[j]:{[E]:(t=a()??null,G(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,y);return p},Ia=(a,t,e,n,s,o,r,[c,E,[l,y,d]],u,T,R,N,g,p,C,O)=>{const[L,$,v,I]=La(t,u,T,s,g,p,C,O),S=async(a,t)=>await w(Q(E,(async([e,n,s,i],o)=>{t&&!(o in a)||await v(e,n,a[o],s,i,t)}))),m=async(a,t)=>y?await v(d,x,{[j]:a},!0,!0,t):null,_=Oa(a,(async()=>await I((async()=>{await L();const a=await(async()=>h(A(await w(Q(c,(async([a,t],e)=>[a,await $(e,t)]))),(a=>!M(a[1])))))(),t=await(async()=>l?(await $(d,x))[j]:{})();return M(a)&&i(t)?void 0:[a,t]}))),(async(a,t)=>await I((async()=>{if(await L(),i(t)){const[t,e]=a();await S(t),await m(e)}else await S(t[0],!0),await m(t[1],!0)}))),e,n,s,r,{[N]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),o(),_)},0,R);return _},Sa=t,ma=/^([cd]:)(.+)/,_a=t+"_data",ha=t+"_table",fa=async(a,e,n,s,i)=>((a,e,n,s,i,c,l,y,d,u,R="getDb")=>{const A=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(n,c),[N,,g,C]=(a=>{const e=(a=>f(Ra,r(a)?{[ra]:a}:a??{}))(a),n=e[la];if(e.mode==oa){const a=e[ra]??t;return[1,n,[a,e[ca]??x,e[Ea]??ia],ea(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,c=E(U(f(Aa,o)),0,F(Aa)),l=c[2],w=ea(l),y=ea(l);return[0,n,[Na(s,{[ya]:null,[wa]:x},ya,(a=>p(y,a)),(a=>na(w,a))),Na(i,{[da]:null,[wa]:x,[ua]:0,[Ta]:0},da,((a,t)=>p(y,t)),((a,t)=>na(w,t))),c],w]})(e),L=async a=>{await A(`CREATE OR REPLACE TRIGGER ${z(_a+"_"+a)} AFTER INSERT OR UPDATE OR DELETE ON ${z(a)} EXECUTE FUNCTION ${_a}()`)};return(N?va:Ia)(a,A,(async a=>{await A(`CREATE OR REPLACE FUNCTION ${ha}()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('${Sa}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ha} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ha}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${_a}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${Sa}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(T(O(C),(async a=>{await A(`CREATE TABLE IF NOT EXISTS ${z(a)}("_id"text PRIMARY KEY)`),await L(a)}))),await s(Sa,(async t=>{return await o((e=t,n=ma,e?.match(n)),(async([,t,e])=>{p(C,e)&&("c:"==t&&await L(e),a())}));var e,n}))}),i,l,y,d,g,O(C),(async(a,t)=>await a(`${X} table_name tn,column_name cn FROM information_schema.columns ${Y} table_schema='public'AND table_name IN(${J(t)})`,t)),u,R,"text",void 0,(a=>G(a)),(a=>B(a)))})(a,n,(async(a,t=[])=>(await e.query(a,t)).rows),(async(a,t)=>await e.listen(a,t)),(async a=>{try{await a()}catch(a){i?.(a)}}),s,i,(()=>0),3,e,"getPglite");export{fa as createPglitePersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i="true",o=(a,t,e)=>a.replace(t,e),r=Promise,c=globalThis,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),y=t=>a(t)==s,d=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),E=a=>a.length,N=()=>{},A=async a=>r.all(a),g=a=>{throw Error(a)},T=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},$=(a,t)=>a.forEach(t),p=(a,t="")=>a.join(t),O=(a,t)=>a.map(t),R=a=>0==E(a),v=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),L=a=>a.shift(),S=(a,t)=>a?.has(t)??!1,C=a=>l(a)||0==(a=>a?.size??0)(a),I=a=>[...a?.values()??[]],_=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),f=new c.TextEncoder,D=Object,h=a=>D.getPrototypeOf(a),P=D.entries,F=D.keys,M=D.freeze,U=(a=[])=>D.fromEntries(a),G=(...a)=>D.assign({},...a),j=(a,t)=>(delete a[t],a),x=(a,t)=>O(P(a),(([a,e])=>t(e,a))),W=(a,t)=>U(x(a,((a,e)=>[e,t(a,e)]))),B=a=>D.values(a),H=a=>E(F(a)),X=a=>(a=>!l(a)&&w(h(a),(a=>a==D.prototype||l(h(a))),(()=>!0)))(a)&&0==H(a),Y=JSON.stringify,k=JSON.parse,q=a=>Y(a,((a,t)=>void 0===t?"":t)),z=a=>new Map(a),J=(a,t)=>a?.get(t),K=(a,t)=>O([...a?.entries()??[]],(([a,e])=>t(e,a))),V=(a,t,e)=>l(e)?(b(a,t),a):a?.set(t,e),Q=(a,t,e,n)=>(S(a,t)?n?.(J(a,t)):V(a,t,e()),J(a,t)),Z=(a,t,e,n,s=0)=>w((e?Q:J)(a,t[s],s>E(t)-2?e:z),(i=>{if(s>E(t)-2)return n?.(i)&&V(a,t[s]),i;const o=Z(i,t,e,n,s+1);return C(i)&&V(a,t[s]),o})),aa="_",ta="_id",ea="SELECT",na="WHERE",sa="TABLE",ia="INSERT",oa="DELETE",ra="UPDATE",ca="ALTER "+sa,la="FROM",wa=oa+" "+la,ya=ea+"*"+la,da="CREATE ",ua=da+sa,Ea="OR REPLACE ",Na="FUNCTION",Aa="$tableName",ga=a=>`"${o(a,/"/g,'""')}"`,Ta=(...a)=>ga(p(a,"_")),$a=(a,t=[1])=>p(O(a,(()=>"$"+t[0]++)),n),pa=(a,t=i)=>na+`(${o(t,Aa,ga(a))})`,Oa=a=>new Set(d(a)||l(a)?a:[a]),Ra=(a,t)=>a?.add(t),va="ColumnName",ma="store",La="json",Sa=ma+"TableName",Ca=ma+"Id"+va,Ia=ma+va,_a="autoLoadIntervalSeconds",ba="rowId"+va,fa="tableId",Da="tableName",ha="deleteEmptyColumns",Pa="deleteEmptyTable",Fa="condition",Ma={mode:La,[_a]:1},Ua={load:0,save:0,[Da]:t+"_values"},Ga=(a,t,e,n,s)=>{const i=z();return W(a,((a,o)=>{const r=u(B(G(t,y(a)?{[e]:a}:a)),0,H(t));l(r[0])||n(o,r[0])||(s(o,r[0]),V(i,o,r))})),i},ja=/^\d+$/,xa=z(),Wa=z(),Ba=(a,t,n,s,i,o,r,c={},y=0,u=[])=>{let N,A,p,O=0,R=0,v=0;Q(xa,u,(()=>0)),Q(Wa,u,(()=>[]));const S=z(),[I,f,D,h,P]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!X(a)||!X(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!X(a)||!X(t),t.setContent]:g("Store type not supported by this Persister"))(r,a,y),[F,U,G]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?L(a):null)??e+t++,t=>{ja.test(t)&&E(a)<1e3&&m(a,t)}]})(),s=z();return[(n,i,o,r=[],c=()=>[])=>{a??=q;const l=t(1);return V(s,l,[n,i,o,r,c]),Ra(Z(i,o??[e],Oa),l),l},(t,n,...i)=>$(((a,t=[e])=>{const n=[],s=(a,e)=>e==E(t)?m(n,a):null===t[e]?_(a,(a=>s(a,e+1))):$([t[e],null],(t=>s(J(a,t),e+1)));return s(a,0),n})(t,n),(t=>_(t,(t=>J(s,t)[0](a,...n??[],...i))))),a=>w(J(s,a),(([,t,i])=>(Z(t,i??[e],void 0,(t=>(b(t,a),C(t)?1:0))),V(s,a),n(a),i))),t=>w(J(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=E(o);r==E(e)?t(a,...o,...s(o)):l(e[r])?$(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=O&&(O=a,U(S,void 0,O))},x=t=>{(I&&d(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},W=async a=>(2!=O&&(j(1),R++,await k((async()=>{await T((async()=>{const e=await t();d(e)?x(e):a?P(a):g("Content is not an array: "+e)}),(()=>{a&&P(a)})),j(0)}))),q),B=async()=>(A&&(await T((()=>i(A)),o),A=void 0),q),H=async a=>(1!=O&&(j(2),v++,await k((async()=>{await T((()=>n(f,a)),o),j(0)}))),q),Y=async()=>(p&&(a.delListener(p),p=void 0),q),k=async(...a)=>(m(J(Wa,u),...a),await(async()=>{if(!J(xa,u)){for(V(xa,u,1);!l(N=L(J(Wa,u)));)await T(N,o);V(xa,u,0)}})(),q),q={load:W,startAutoLoad:async a=>(B(),await W(a),await T((async()=>A=await s((async(a,t)=>{t||a?2!=O&&(j(1),R++,x(t??a),j(0)):await W()}))),o),q),stopAutoLoad:B,isAutoLoading:()=>!l(A),save:H,startAutoSave:async()=>(Y(),await H(),p=a.addDidFinishTransactionListener((()=>{const a=D();h(a)&&H(a)})),q),stopAutoSave:Y,isAutoSaving:()=>!l(p),getStatus:()=>O,addStatusListener:a=>F(a,S),delListener:t=>(G(t),a),schedule:k,getStore:()=>a,destroy:async()=>(J(Wa,u).splice(0,void 0),await q.stopAutoLoad(),await q.stopAutoSave()),getStats:()=>({loads:R,saves:v}),...c};return M(q)},Ha=(a,t,e,s,o,r=Xa,c,w)=>{const y=z();return[async()=>{y.clear(),O(await e(a,t),(({tn:a,cn:t})=>Ra(Q(y,a,Oa),t)))},async(t,e,n)=>((a,t)=>S(J(y,a),t))(t,e)?U(v(O(await a(ya+ga(t)+pa(t,n)),(a=>[a[e],w?W(j(a,e),w):j(a,e)])),(([a,t])=>!l(a)&&!X(t)))):{},async(t,e,s,w,d,u=!1,E=i)=>{const N=Oa();W(s??{},(a=>O(F(a??{}),(a=>Ra(N,a)))));const g=I(N);if(!u&&d&&E==i&&R(g)&&S(y,t))return await a("DROP "+sa+ga(t)),void V(y,t);const T=J(y,t),$=Oa(I(T));if(R(g)||(S(y,t)?await A(O([e,...g],(async(n,s)=>{b($,n)||(await a(ca+ga(t)+"ADD"+ga(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+ga(t)+`(${ga(e)})`),Ra(T,n))}))):(await a(ua+ga(t)+`(${ga(e)}${o} PRIMARY KEY${p(O(g,(a=>n+ga(a)+o)))});`),V(y,t,Oa([e,...g])))),await A([...!u&&w?O(I($),(async n=>{n!=e&&(await a(ca+ga(t)+"DROP"+ga(n)),b(T,n))})):[]]),u)l(s)?await a(wa+ga(t)+pa(t,E)):await A(x(s,(async(n,s)=>{l(n)?await a(wa+ga(t)+pa(t,E)+`AND(${ga(e)}=$1)`,[s]):R(g)||await r(a,t,e,F(n),{[s]:c?O(B(n),c):B(n)},T)})));else if(R(g))S(y,t)&&await a(wa+ga(t)+pa(t,E));else{const n=v(I(J(y,t)),(a=>a!=e)),i={},o=[];W(s??{},((a,t)=>{i[t]=O(n,(t=>c?c(a?.[t]):a?.[t])),m(o,t)})),await r(a,t,e,n,i),await a(wa+ga(t)+pa(t,E)+`AND${ga(e)}NOT IN(${$a(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await T((async()=>e=await t()),s),await a("END"),e}]},Xa=async(a,t,e,s,i)=>{const o=[1];await a(ia+" INTO"+ga(t)+"("+((...a)=>p(O(a,ga),n))(e,...s)+")VALUES"+p(x(i,(a=>"($"+o[0]+++","+$a(a,o)+")")),n)+"ON CONFLICT("+ga(e)+`)DO ${ra} SET`+p(O(s,(a=>ga(a)+"=excluded."+ga(a))),n),x(i,((a,t)=>[t,...O(a,(a=>a??null))])).flat())},Ya=(a,t,e,n,s,i,o,[r,c,l],w,y,d,u,E,N)=>{const[A,g,T,$]=Ha(t,w,y,s,E,N),p=Ba(a,(()=>$((async()=>{return await A(),a=(await g(r,c))[aa]?.[l]??"null",k(a,((a,t)=>""===t?void 0:t));var a}))),(a=>$((async()=>{await A(),await T(r,c,{[aa]:{[l]:q(a()??null)}},!0,!0)}))),e,n,s,o,{[u]:()=>d,destroy:async()=>(await p.stopAutoLoad(),await p.stopAutoSave(),i(),p)},0,d);return p},ka=(a,t,e,n,s,i,o,[r,c,[w,y,d]],u,E,N,g,T,$,p,O)=>{const[R,m,L,S]=Ha(t,u,E,s,T,$,p,O),C=(a,t)=>A(K(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await L(e,n,a[r],s,i,t,o)}))),I=async(a,t)=>y?await L(d,ta,{[aa]:a},!0,!0,t):null,_=Ba(a,(()=>S((async()=>{await R();const a=await(async()=>U(v(await A(K(r,(async([a,t,e],n)=>[a,await m(n,t,e)]))),(a=>!X(a[1])))))(),t=await(async()=>w?(await m(d,ta))[aa]:{})();return X(a)&&l(t)?void 0:[a,t]}))),((a,t)=>S((async()=>{if(await R(),l(t)){const[t,e]=a();await C(t),await I(e)}else await C(t[0],!0),await I(t[1],!0)}))),e,n,s,o,{[g]:()=>N,destroy:async()=>(await _.stopAutoLoad(),await _.stopAutoSave(),i(),_)},0,N);return _},qa=/^([cd]:)(.+)/,za=(a,n,s,r,c,l,d,E,N,g,T="getDb")=>{const R=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[v,,m,L]=(a=>{const e=(a=>G(Ma,y(a)?{[Sa]:a}:a??{}))(a),n=e[_a];if(e.mode==La){const a=e[Sa]??t;return[1,n,[a,e[Ca]??ta,e[Ia]??ma],Oa(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=u(B(G(Ua,r)),0,H(Ua)),l=c[2],w=Oa(l),d=Oa(l),E=Ga(s,{[fa]:null,[ba]:ta,[Fa]:i},fa,(a=>S(d,a)),(a=>Ra(w,a))),N=Ga(o,{[Da]:null,[ba]:ta,[ha]:0,[Pa]:0,[Fa]:null},Da,((a,t)=>S(d,t)),((a,t)=>Ra(w,t)));var A;return A=(a,t)=>t[4]??=J(E,t[0])?.[2]??i,_(N,((a,t)=>A(0,a))),[0,n,[E,N,c],w]})(n),C=e+(a=>{let t=2166136261;return $(f.encode(a),(a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0})(q(m)),b=t+"_"+C,D=async(a,e,n="",s="")=>{const i=Ta(t,a,C);return await R(da+Ea+Na+i+`()RETURNS ${n}trigger AS $$ ${s}BEGIN ${e}END;$$ LANGUAGE plpgsql;`),i},h=async(a,t,e,n)=>(await R(da+a+"TRIGGER"+t+e+"EXECUTE "+Na+n+"()"),t),P=a=>`PERFORM pg_notify('${b}',${a});`,F=(a,t)=>v?i:2===t?F(a,0)+" OR "+F(a,1):o(J(m[0],a)?.[2]??i,Aa,0==t?"NEW":"OLD"),M=(a,e)=>A(O([ia,oa,ra],((n,s)=>h(Ea,Ta(t,"d",C,a,n),`AFTER ${n} ON${ga(a)}FOR EACH ROW WHEN(${F(a,s)})`,e))));return(v?Ya:ka)(a,R,(async a=>{const e=await D("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${na} command_tag='${ua}' LOOP ${P("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");await h("EVENT ",Ta(t,"c",C),`ON ddl_command_end WHEN TAG IN('${ua}')`,e);const n=await D("d",P("'d:'||TG_TABLE_NAME")+"RETURN NULL;");return await A(O(I(L),(async a=>(await R(ua+` IF NOT EXISTS${ga(a)}("_id"text PRIMARY KEY)`),await M(a,n))))),[await r(b,(t=>{return w((e=t,s=qa,e?.match(s)),(async([,t,e])=>{S(L,e)&&("c:"==t&&await M(e,n),a())}));var e,s})),[e,n]]}),(async([a,t])=>{c(a),await R(`DROP FUNCTION IF EXISTS${p(t,",")}CASCADE`)}),d,E,N,m,I(L),(async(a,t)=>await a(ea+` table_name tn,column_name cn FROM information_schema.columns ${na} table_schema='public'AND table_name IN(${$a(t)})`,t)),g,T,"text",void 0,(a=>Y(a)),(a=>k(a)))},Ja=async(a,t,e,n,s)=>za(a,e,(async(a,e=[])=>(await t.query(a,e)).rows),((a,e)=>t.listen(a,e)),(a=>T(a,s)),n,s,N,3,t,"getPglite");export{Ja as createPglitePersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e=",",n=a(""),s=Promise,i=a=>null==a,o=(a,t,e)=>i(a)?e?.():t(a),r=t=>a(t)==n,c=a=>Array.isArray(a),E=(a,t,e)=>a.slice(t,e),l=a=>a.length,w=async a=>s.all(a),y=a=>{throw Error(a)},d=(a,t)=>a.forEach(t),u=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),R=a=>0==l(a),A=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),g=a=>a.shift(),p=(a,t)=>a?.has(t)??!1,C=a=>i(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],L=(a,t)=>a?.forEach(t),$=(a,t)=>a?.delete(t),v=Object,I=a=>v.getPrototypeOf(a),S=v.entries,m=v.keys,_=v.freeze,h=(a=[])=>v.fromEntries(a),f=(...a)=>v.assign({},...a),b=(a,t)=>(delete a[t],a),D=(a,t)=>T(S(a),(([a,e])=>t(e,a))),P=(a,t)=>h(D(a,((a,e)=>[e,t(a,e)]))),U=a=>v.values(a),F=a=>l(m(a)),M=a=>(a=>!i(a)&&o(I(a),(a=>a==v.prototype||i(I(a))),(()=>!0)))(a)&&0==F(a),G=JSON.stringify,B=JSON.parse,j="_",x="_id",X="SELECT",Y="WHERE",q="TABLE",H="ALTER "+q,W="DELETE FROM",k=X+"*FROM",z=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>u(T(a,(()=>"$"+t[0]++)),e),K=a=>new Map(a),V=(a,t)=>a?.get(t),Q=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),Z=(a,t,e)=>i(e)?($(a,t),a):a?.set(t,e),aa=(a,t,e,n)=>(p(a,t)?n?.(V(a,t)):Z(a,t,e()),V(a,t)),ta=(a,t,e,n,s=0)=>o((e?aa:V)(a,t[s],s>l(t)-2?e:K),(i=>{if(s>l(t)-2)return n?.(i)&&Z(a,t[s]),i;const o=ta(i,t,e,n,s+1);return C(i)&&Z(a,t[s]),o})),ea=a=>new Set(c(a)||i(a)?a:[a]),na=(a,t)=>a?.add(t),sa="ColumnName",ia="store",oa="json",ra=ia+"TableName",ca=ia+"Id"+sa,Ea=ia+sa,la="autoLoadIntervalSeconds",wa="rowId"+sa,ya="tableId",da="tableName",ua="deleteEmptyColumns",Ta="deleteEmptyTable",Ra={mode:oa,[la]:1},Aa={load:0,save:0,[da]:t+"_values"},Na=(a,t,e,n,s)=>{const o=K();return P(a,((a,c)=>{const l=E(U(f(t,r(a)?{[e]:a}:a)),0,F(t));i(l[0])||n(c,l[0])||(s(c,l[0]),Z(o,c,l))})),o},ga=/^\d+$/,pa=K(),Ca=K(),Oa=(a,t,e,n,s,r,E,w={},u=0,T=[])=>{let R,A,p,O=0,v=0,I=0;aa(pa,T,(()=>0)),aa(Ca,T,(()=>[]));const S=K(),[m,h,f,b,D]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!M(a)||!M(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!M(a)||!M(t),t.setContent]:y("Store type not supported by this Persister"))(E,a,u),[P,U,F]=(()=>{let a;const[t,e]=(()=>{const a=[];let t=0;return[e=>(e?g(a):null)??""+t++,t=>{ga.test(t)&&l(a)<1e3&&N(a,t)}]})(),n=K();return[(e,s,i,o=[],r=()=>[])=>{a??=H;const c=t(1);return Z(n,c,[e,s,i,o,r]),na(ta(s,i??[""],ea),c),c},(t,e,...s)=>d(((a,t=[""])=>{const e=[],n=(a,s)=>s==l(t)?N(e,a):null===t[s]?L(a,(a=>n(a,s+1))):d([t[s],null],(t=>n(V(a,t),s+1)));return n(a,0),e})(t,e),(t=>L(t,(t=>V(n,t)[0](a,...e??[],...s))))),a=>o(V(n,a),(([,t,s])=>(ta(t,s??[""],void 0,(t=>($(t,a),C(t)?1:0))),Z(n,a),e(a),s))),t=>o(V(n,t),(([t,,e=[],n,s])=>{const o=(...r)=>{const c=l(r);c==l(e)?t(a,...r,...s(r)):i(e[c])?d(n[c]?.(...r)??[],(a=>o(...r,a))):o(...r,e[c])};o()}))]})(),G=a=>{a!=O&&(O=a,U(S,void 0,O))},B=t=>{(m&&c(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},j=async a=>(2!=O&&(G(1),v++,await q((async()=>{try{const e=await t();c(e)?B(e):a?D(a):y("Content is not an array: "+e)}catch(t){r?.(t),a&&D(a)}G(0)}))),H),x=()=>(A&&(s(A),A=void 0),H),X=async a=>(1!=O&&(G(2),I++,await q((async()=>{try{await e(h,a)}catch(a){r?.(a)}G(0)}))),H),Y=()=>(p&&(a.delListener(p),p=void 0),H),q=async(...a)=>(N(V(Ca,T),...a),await(async()=>{if(!V(pa,T)){for(Z(pa,T,1);!i(R=g(V(Ca,T)));)try{await R()}catch(a){r?.(a)}Z(pa,T,0)}})(),H),H={load:j,startAutoLoad:async a=>{x(),await j(a);try{A=await n((async(a,t)=>{t||a?2!=O&&(G(1),v++,B(t??a),G(0)):await j()}))}catch(a){r?.(a)}return H},stopAutoLoad:x,isAutoLoading:()=>!i(A),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=f();b(a)&&X(a)})),H),stopAutoSave:Y,isAutoSaving:()=>!i(p),getStatus:()=>O,addStatusListener:a=>P(a,S),delListener:t=>(F(t),a),schedule:q,getStore:()=>a,destroy:()=>(V(Ca,T).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:v,saves:I}),...w};return _(H)},La=(a,t,n,s,o,r=$a,c,E)=>{const l=K();return[async()=>{l.clear(),T(await n(a,t),(({tn:a,cn:t})=>na(aa(l,a,ea),t)))},async(t,e)=>((a,t)=>p(V(l,a),t))(t,e)?h(A(T(await a(k+z(t)),(a=>[a[e],E?P(b(a,e),E):b(a,e)])),(([a,t])=>!i(a)&&!M(t)))):{},async(t,n,s,E,y,d=!1)=>{const g=ea();P(s??{},(a=>T(m(a??{}),(a=>na(g,a)))));const C=O(g);if(!d&&y&&R(C)&&p(l,t))return await a("DROP "+q+z(t)),void Z(l,t);const L=V(l,t),v=ea(O(L));if(R(C)||(p(l,t)?await w(T([n,...C],(async(e,s)=>{$(v,e)||(await a(H+z(t)+"ADD"+z(e)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(n)})`),na(L,e))}))):(await a("CREATE "+q+z(t)+`(${z(n)}${o} PRIMARY KEY${u(T(C,(a=>e+z(a)+o)))});`),Z(l,t,ea([n,...C])))),await w([...!d&&E?T(O(v),(async e=>{e!=n&&(await a(H+z(t)+"DROP"+z(e)),$(L,e))})):[]]),d)i(s)?await a(W+z(t)+Y+" true"):await w(D(s,(async(e,s)=>{i(e)?await a(W+z(t)+Y+z(n)+"=$1",[s]):R(C)||await r(a,t,n,m(e),{[s]:c?T(U(e),c):U(e)},L)})));else if(R(C))p(l,t)&&await a(W+z(t)+Y+" true");else{const e=A(O(V(l,t)),(a=>a!=n)),i={},o=[];P(s??{},((a,t)=>{i[t]=T(e,(t=>c?c(a?.[t]):a?.[t])),N(o,t)})),await r(a,t,n,e,i),await a(W+z(t)+Y+z(n)+`NOT IN(${J(o)})`,o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},$a=async(a,t,n,s,i)=>{const o=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>u(T(a,z),e))(n,...s)+")VALUES"+u(D(i,(a=>"($"+o[0]+++","+J(a,o)+")")),e)+"ON CONFLICT("+z(n)+")DO UPDATE SET"+u(T(s,(a=>z(a)+"=excluded."+z(a))),e),D(i,((a,t)=>[t,...T(a,(a=>a??null))])).flat())},va=(a,t,e,n,s,i,o,[r,c,E],l,w,y,d,u,T)=>{const[R,A,N,g]=La(t,l,w,s,u,T),p=Oa(a,(async()=>await g((async()=>{return await R(),a=(await A(r,c))[j]?.[E]??"null",B(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await R(),await N(r,c,{[j]:{[E]:(t=a()??null,G(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,y);return p},Ia=(a,t,e,n,s,o,r,[c,E,[l,y,d]],u,T,R,N,g,p,C,O)=>{const[L,$,v,I]=La(t,u,T,s,g,p,C,O),S=async(a,t)=>await w(Q(E,(async([e,n,s,i],o)=>{t&&!(o in a)||await v(e,n,a[o],s,i,t)}))),m=async(a,t)=>y?await v(d,x,{[j]:a},!0,!0,t):null,_=Oa(a,(async()=>await I((async()=>{await L();const a=await(async()=>h(A(await w(Q(c,(async([a,t],e)=>[a,await $(e,t)]))),(a=>!M(a[1])))))(),t=await(async()=>l?(await $(d,x))[j]:{})();return M(a)&&i(t)?void 0:[a,t]}))),(async(a,t)=>await I((async()=>{if(await L(),i(t)){const[t,e]=a();await S(t),await m(e)}else await S(t[0],!0),await m(t[1],!0)}))),e,n,s,r,{[N]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),o(),_)},0,R);return _},Sa=t,ma=/^([cd]:)(.+)/,_a=t+"_data",ha=t+"_table",fa=async(a,e,n,s,i)=>((a,e,n,s,i,c,l,y,d,u,R="getDb")=>{const A=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(n,c),[N,,g,C]=(a=>{const e=(a=>f(Ra,r(a)?{[ra]:a}:a??{}))(a),n=e[la];if(e.mode==oa){const a=e[ra]??t;return[1,n,[a,e[ca]??x,e[Ea]??ia],ea(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,c=E(U(f(Aa,o)),0,F(Aa)),l=c[2],w=ea(l),y=ea(l);return[0,n,[Na(s,{[ya]:null,[wa]:x},ya,(a=>p(y,a)),(a=>na(w,a))),Na(i,{[da]:null,[wa]:x,[ua]:0,[Ta]:0},da,((a,t)=>p(y,t)),((a,t)=>na(w,t))),c],w]})(e),L=async a=>{await A(`CREATE OR REPLACE TRIGGER ${z(_a+"_"+a)} AFTER INSERT OR UPDATE OR DELETE ON ${z(a)} EXECUTE FUNCTION ${_a}()`)};return(N?va:Ia)(a,A,(async a=>{await A(`CREATE OR REPLACE FUNCTION ${ha}()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('${Sa}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ha} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ha}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${_a}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${Sa}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(T(O(C),(async a=>{await A(`CREATE TABLE IF NOT EXISTS ${z(a)}("_id"text PRIMARY KEY)`),await L(a)}))),await s(Sa,(async t=>{return await o((e=t,n=ma,e?.match(n)),(async([,t,e])=>{p(C,e)&&("c:"==t&&await L(e),a())}));var e,n}))}),i,l,y,d,g,O(C),(async(a,t)=>await a(`${X} table_name tn,column_name cn FROM information_schema.columns ${Y} table_schema='public'AND table_name IN(${J(t)})`,t)),u,R,"text",void 0,(a=>G(a)),(a=>B(a)))})(a,n,(async(a,t=[])=>(await e.query(a,t)).rows),(async(a,t)=>await e.listen(a,t)),(async a=>{try{await a()}catch(a){i?.(a)}}),s,i,(()=>0),3,e,"getPglite");export{fa as createPglitePersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i="true",o=(a,t,e)=>a.replace(t,e),r=Promise,c=globalThis,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),y=t=>a(t)==s,d=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),E=a=>a.length,N=()=>{},A=async a=>r.all(a),g=a=>{throw Error(a)},T=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},$=(a,t)=>a.forEach(t),p=(a,t="")=>a.join(t),O=(a,t)=>a.map(t),R=a=>0==E(a),v=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),L=a=>a.shift(),S=(a,t)=>a?.has(t)??!1,C=a=>l(a)||0==(a=>a?.size??0)(a),I=a=>[...a?.values()??[]],_=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),f=new c.TextEncoder,D=Object,h=a=>D.getPrototypeOf(a),P=D.entries,F=D.keys,M=D.freeze,U=(a=[])=>D.fromEntries(a),G=(...a)=>D.assign({},...a),j=(a,t)=>(delete a[t],a),x=(a,t)=>O(P(a),(([a,e])=>t(e,a))),W=(a,t)=>U(x(a,((a,e)=>[e,t(a,e)]))),B=a=>D.values(a),H=a=>E(F(a)),X=a=>(a=>!l(a)&&w(h(a),(a=>a==D.prototype||l(h(a))),(()=>!0)))(a)&&0==H(a),Y=JSON.stringify,k=JSON.parse,q=a=>Y(a,((a,t)=>void 0===t?"":t)),z=a=>new Map(a),J=(a,t)=>a?.get(t),K=(a,t)=>O([...a?.entries()??[]],(([a,e])=>t(e,a))),V=(a,t,e)=>l(e)?(b(a,t),a):a?.set(t,e),Q=(a,t,e,n)=>(S(a,t)?n?.(J(a,t)):V(a,t,e()),J(a,t)),Z=(a,t,e,n,s=0)=>w((e?Q:J)(a,t[s],s>E(t)-2?e:z),(i=>{if(s>E(t)-2)return n?.(i)&&V(a,t[s]),i;const o=Z(i,t,e,n,s+1);return C(i)&&V(a,t[s]),o})),aa="_",ta="_id",ea="SELECT",na="WHERE",sa="TABLE",ia="INSERT",oa="DELETE",ra="UPDATE",ca="ALTER "+sa,la="FROM",wa=oa+" "+la,ya=ea+"*"+la,da="CREATE ",ua=da+sa,Ea="OR REPLACE ",Na="FUNCTION",Aa="$tableName",ga=a=>`"${o(a,/"/g,'""')}"`,Ta=(...a)=>ga(p(a,"_")),$a=(a,t=[1])=>p(O(a,(()=>"$"+t[0]++)),n),pa=(a,t=i)=>na+`(${o(t,Aa,ga(a))})`,Oa=a=>new Set(d(a)||l(a)?a:[a]),Ra=(a,t)=>a?.add(t),va="ColumnName",ma="store",La="json",Sa=ma+"TableName",Ca=ma+"Id"+va,Ia=ma+va,_a="autoLoadIntervalSeconds",ba="rowId"+va,fa="tableId",Da="tableName",ha="deleteEmptyColumns",Pa="deleteEmptyTable",Fa="condition",Ma={mode:La,[_a]:1},Ua={load:0,save:0,[Da]:t+"_values"},Ga=(a,t,e,n,s)=>{const i=z();return W(a,((a,o)=>{const r=u(B(G(t,y(a)?{[e]:a}:a)),0,H(t));l(r[0])||n(o,r[0])||(s(o,r[0]),V(i,o,r))})),i},ja=/^\d+$/,xa=z(),Wa=z(),Ba=(a,t,n,s,i,o,r,c={},y=0,u=[])=>{let N,A,p,O=0,R=0,v=0;Q(xa,u,(()=>0)),Q(Wa,u,(()=>[]));const S=z(),[I,f,D,h,P]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!X(a)||!X(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!X(a)||!X(t),t.setContent]:g("Store type not supported by this Persister"))(r,a,y),[F,U,G]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?L(a):null)??e+t++,t=>{ja.test(t)&&E(a)<1e3&&m(a,t)}]})(),s=z();return[(n,i,o,r=[],c=()=>[])=>{a??=q;const l=t(1);return V(s,l,[n,i,o,r,c]),Ra(Z(i,o??[e],Oa),l),l},(t,n,...i)=>$(((a,t=[e])=>{const n=[],s=(a,e)=>e==E(t)?m(n,a):null===t[e]?_(a,(a=>s(a,e+1))):$([t[e],null],(t=>s(J(a,t),e+1)));return s(a,0),n})(t,n),(t=>_(t,(t=>J(s,t)[0](a,...n??[],...i))))),a=>w(J(s,a),(([,t,i])=>(Z(t,i??[e],void 0,(t=>(b(t,a),C(t)?1:0))),V(s,a),n(a),i))),t=>w(J(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=E(o);r==E(e)?t(a,...o,...s(o)):l(e[r])?$(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=O&&(O=a,U(S,void 0,O))},x=t=>{(I&&d(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},W=async a=>(2!=O&&(j(1),R++,await k((async()=>{await T((async()=>{const e=await t();d(e)?x(e):a?P(a):g("Content is not an array: "+e)}),(()=>{a&&P(a)})),j(0)}))),q),B=async()=>(A&&(await T((()=>i(A)),o),A=void 0),q),H=async a=>(1!=O&&(j(2),v++,await k((async()=>{await T((()=>n(f,a)),o),j(0)}))),q),Y=async()=>(p&&(a.delListener(p),p=void 0),q),k=async(...a)=>(m(J(Wa,u),...a),await(async()=>{if(!J(xa,u)){for(V(xa,u,1);!l(N=L(J(Wa,u)));)await T(N,o);V(xa,u,0)}})(),q),q={load:W,startAutoLoad:async a=>(B(),await W(a),await T((async()=>A=await s((async(a,t)=>{t||a?2!=O&&(j(1),R++,x(t??a),j(0)):await W()}))),o),q),stopAutoLoad:B,isAutoLoading:()=>!l(A),save:H,startAutoSave:async()=>(Y(),await H(),p=a.addDidFinishTransactionListener((()=>{const a=D();h(a)&&H(a)})),q),stopAutoSave:Y,isAutoSaving:()=>!l(p),getStatus:()=>O,addStatusListener:a=>F(a,S),delListener:t=>(G(t),a),schedule:k,getStore:()=>a,destroy:async()=>(J(Wa,u).splice(0,void 0),await q.stopAutoLoad(),await q.stopAutoSave()),getStats:()=>({loads:R,saves:v}),...c};return M(q)},Ha=(a,t,e,s,o,r=Xa,c,w)=>{const y=z();return[async()=>{y.clear(),O(await e(a,t),(({tn:a,cn:t})=>Ra(Q(y,a,Oa),t)))},async(t,e,n)=>((a,t)=>S(J(y,a),t))(t,e)?U(v(O(await a(ya+ga(t)+pa(t,n)),(a=>[a[e],w?W(j(a,e),w):j(a,e)])),(([a,t])=>!l(a)&&!X(t)))):{},async(t,e,s,w,d,u=!1,E=i)=>{const N=Oa();W(s??{},(a=>O(F(a??{}),(a=>Ra(N,a)))));const g=I(N);if(!u&&d&&E==i&&R(g)&&S(y,t))return await a("DROP "+sa+ga(t)),void V(y,t);const T=J(y,t),$=Oa(I(T));if(R(g)||(S(y,t)?await A(O([e,...g],(async(n,s)=>{b($,n)||(await a(ca+ga(t)+"ADD"+ga(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+ga(t)+`(${ga(e)})`),Ra(T,n))}))):(await a(ua+ga(t)+`(${ga(e)}${o} PRIMARY KEY${p(O(g,(a=>n+ga(a)+o)))});`),V(y,t,Oa([e,...g])))),await A([...!u&&w?O(I($),(async n=>{n!=e&&(await a(ca+ga(t)+"DROP"+ga(n)),b(T,n))})):[]]),u)l(s)?await a(wa+ga(t)+pa(t,E)):await A(x(s,(async(n,s)=>{l(n)?await a(wa+ga(t)+pa(t,E)+`AND(${ga(e)}=$1)`,[s]):R(g)||await r(a,t,e,F(n),{[s]:c?O(B(n),c):B(n)},T)})));else if(R(g))S(y,t)&&await a(wa+ga(t)+pa(t,E));else{const n=v(I(J(y,t)),(a=>a!=e)),i={},o=[];W(s??{},((a,t)=>{i[t]=O(n,(t=>c?c(a?.[t]):a?.[t])),m(o,t)})),await r(a,t,e,n,i),await a(wa+ga(t)+pa(t,E)+`AND${ga(e)}NOT IN(${$a(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await T((async()=>e=await t()),s),await a("END"),e}]},Xa=async(a,t,e,s,i)=>{const o=[1];await a(ia+" INTO"+ga(t)+"("+((...a)=>p(O(a,ga),n))(e,...s)+")VALUES"+p(x(i,(a=>"($"+o[0]+++","+$a(a,o)+")")),n)+"ON CONFLICT("+ga(e)+`)DO ${ra} SET`+p(O(s,(a=>ga(a)+"=excluded."+ga(a))),n),x(i,((a,t)=>[t,...O(a,(a=>a??null))])).flat())},Ya=(a,t,e,n,s,i,o,[r,c,l],w,y,d,u,E,N)=>{const[A,g,T,$]=Ha(t,w,y,s,E,N),p=Ba(a,(()=>$((async()=>{return await A(),a=(await g(r,c))[aa]?.[l]??"null",k(a,((a,t)=>""===t?void 0:t));var a}))),(a=>$((async()=>{await A(),await T(r,c,{[aa]:{[l]:q(a()??null)}},!0,!0)}))),e,n,s,o,{[u]:()=>d,destroy:async()=>(await p.stopAutoLoad(),await p.stopAutoSave(),i(),p)},0,d);return p},ka=(a,t,e,n,s,i,o,[r,c,[w,y,d]],u,E,N,g,T,$,p,O)=>{const[R,m,L,S]=Ha(t,u,E,s,T,$,p,O),C=(a,t)=>A(K(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await L(e,n,a[r],s,i,t,o)}))),I=async(a,t)=>y?await L(d,ta,{[aa]:a},!0,!0,t):null,_=Ba(a,(()=>S((async()=>{await R();const a=await(async()=>U(v(await A(K(r,(async([a,t,e],n)=>[a,await m(n,t,e)]))),(a=>!X(a[1])))))(),t=await(async()=>w?(await m(d,ta))[aa]:{})();return X(a)&&l(t)?void 0:[a,t]}))),((a,t)=>S((async()=>{if(await R(),l(t)){const[t,e]=a();await C(t),await I(e)}else await C(t[0],!0),await I(t[1],!0)}))),e,n,s,o,{[g]:()=>N,destroy:async()=>(await _.stopAutoLoad(),await _.stopAutoSave(),i(),_)},0,N);return _},qa=/^([cd]:)(.+)/,za=(a,n,s,r,c,l,d,E,N,g,T="getDb")=>{const R=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[v,,m,L]=(a=>{const e=(a=>G(Ma,y(a)?{[Sa]:a}:a??{}))(a),n=e[_a];if(e.mode==La){const a=e[Sa]??t;return[1,n,[a,e[Ca]??ta,e[Ia]??ma],Oa(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=u(B(G(Ua,r)),0,H(Ua)),l=c[2],w=Oa(l),d=Oa(l),E=Ga(s,{[fa]:null,[ba]:ta,[Fa]:i},fa,(a=>S(d,a)),(a=>Ra(w,a))),N=Ga(o,{[Da]:null,[ba]:ta,[ha]:0,[Pa]:0,[Fa]:null},Da,((a,t)=>S(d,t)),((a,t)=>Ra(w,t)));var A;return A=(a,t)=>t[4]??=J(E,t[0])?.[2]??i,_(N,((a,t)=>A(0,a))),[0,n,[E,N,c],w]})(n),C=e+(a=>{let t=2166136261;return $(f.encode(a),(a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0})(q(m)),b=t+"_"+C,D=async(a,e,n="",s="")=>{const i=Ta(t,a,C);return await R(da+Ea+Na+i+`()RETURNS ${n}trigger AS $$ ${s}BEGIN ${e}END;$$ LANGUAGE plpgsql;`),i},h=async(a,t,e,n)=>(await R(da+a+"TRIGGER"+t+e+"EXECUTE "+Na+n+"()"),t),P=a=>`PERFORM pg_notify('${b}',${a});`,F=(a,t)=>v?i:2===t?F(a,0)+" OR "+F(a,1):o(J(m[0],a)?.[2]??i,Aa,0==t?"NEW":"OLD"),M=(a,e)=>A(O([ia,oa,ra],((n,s)=>h(Ea,Ta(t,"d",C,a,n),`AFTER ${n} ON${ga(a)}FOR EACH ROW WHEN(${F(a,s)})`,e))));return(v?Ya:ka)(a,R,(async a=>{const e=await D("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${na} command_tag='${ua}' LOOP ${P("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");await h("EVENT ",Ta(t,"c",C),`ON ddl_command_end WHEN TAG IN('${ua}')`,e);const n=await D("d",P("'d:'||TG_TABLE_NAME")+"RETURN NULL;");return await A(O(I(L),(async a=>(await R(ua+` IF NOT EXISTS${ga(a)}("_id"text PRIMARY KEY)`),await M(a,n))))),[await r(b,(t=>{return w((e=t,s=qa,e?.match(s)),(async([,t,e])=>{S(L,e)&&("c:"==t&&await M(e,n),a())}));var e,s})),[e,n]]}),(async([a,t])=>{c(a),await R(`DROP FUNCTION IF EXISTS${p(t,",")}CASCADE`)}),d,E,N,m,I(L),(async(a,t)=>await a(ea+` table_name tn,column_name cn FROM information_schema.columns ${na} table_schema='public'AND table_name IN(${$a(t)})`,t)),g,T,"text",void 0,(a=>Y(a)),(a=>k(a)))},Ja=async(a,t,e,n,s)=>za(a,e,(async(a,e=[])=>(await t.query(a,e)).rows),((a,e)=>t.listen(a,e)),(a=>T(a,s)),n,s,N,3,t,"getPglite");export{Ja as createPglitePersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e=",",n=a(""),s=Promise,i=a=>null==a,r=(a,t,e)=>i(a)?e?.():t(a),o=t=>a(t)==n,c=a=>Array.isArray(a),E=(a,t,e)=>a.slice(t,e),l=a=>a.length,w=async a=>s.all(a),y=a=>{throw Error(a)},u=(a,t)=>a.forEach(t),d=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),R=a=>0==l(a),A=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),g=a=>a.shift(),p=(a,t)=>a?.has(t)??!1,C=a=>i(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],L=(a,t)=>a?.forEach(t),v=(a,t)=>a?.delete(t),$=Object,S=a=>$.getPrototypeOf(a),I=$.entries,m=$.keys,_=$.freeze,h=(a=[])=>$.fromEntries(a),f=(...a)=>$.assign({},...a),b=(a,t)=>(delete a[t],a),D=(a,t)=>T(I(a),(([a,e])=>t(e,a))),P=(a,t)=>h(D(a,((a,e)=>[e,t(a,e)]))),U=a=>$.values(a),F=a=>l(m(a)),M=a=>(a=>!i(a)&&r(S(a),(a=>a==$.prototype||i(S(a))),(()=>!0)))(a)&&0==F(a),G=JSON.stringify,B=JSON.parse,j="_",x="_id",X="SELECT",Y="WHERE",q="TABLE",H="ALTER "+q,W="DELETE FROM",k=X+"*FROM",z=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>d(T(a,(()=>"$"+t[0]++)),e),K=a=>new Map(a),V=(a,t)=>a?.get(t),Q=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),Z=(a,t,e)=>i(e)?(v(a,t),a):a?.set(t,e),aa=(a,t,e,n)=>(p(a,t)?n?.(V(a,t)):Z(a,t,e()),V(a,t)),ta=(a,t,e,n,s=0)=>r((e?aa:V)(a,t[s],s>l(t)-2?e:K),(i=>{if(s>l(t)-2)return n?.(i)&&Z(a,t[s]),i;const r=ta(i,t,e,n,s+1);return C(i)&&Z(a,t[s]),r})),ea=a=>new Set(c(a)||i(a)?a:[a]),na=(a,t)=>a?.add(t),sa="ColumnName",ia="store",ra="json",oa=ia+"TableName",ca=ia+"Id"+sa,Ea=ia+sa,la="autoLoadIntervalSeconds",wa="rowId"+sa,ya="tableId",ua="tableName",da="deleteEmptyColumns",Ta="deleteEmptyTable",Ra={mode:ra,[la]:1},Aa={load:0,save:0,[ua]:t+"_values"},Na=(a,t,e,n,s)=>{const r=K();return P(a,((a,c)=>{const l=E(U(f(t,o(a)?{[e]:a}:a)),0,F(t));i(l[0])||n(c,l[0])||(s(c,l[0]),Z(r,c,l))})),r},ga=/^\d+$/,pa=K(),Ca=K(),Oa=(a,t,e,n,s,o,E,w={},d=0,T=[])=>{let R,A,p,O=0,$=0,S=0;aa(pa,T,(()=>0)),aa(Ca,T,(()=>[]));const I=K(),[m,h,f,b,D]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!M(a)||!M(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!M(a)||!M(t),t.setContent]:y("Store type not supported by this Persister"))(E,a,d),[P,U,F]=(()=>{let a;const[t,e]=(()=>{const a=[];let t=0;return[e=>(e?g(a):null)??""+t++,t=>{ga.test(t)&&l(a)<1e3&&N(a,t)}]})(),n=K();return[(e,s,i,r=[],o=()=>[])=>{a??=H;const c=t(1);return Z(n,c,[e,s,i,r,o]),na(ta(s,i??[""],ea),c),c},(t,e,...s)=>u(((a,t=[""])=>{const e=[],n=(a,s)=>s==l(t)?N(e,a):null===t[s]?L(a,(a=>n(a,s+1))):u([t[s],null],(t=>n(V(a,t),s+1)));return n(a,0),e})(t,e),(t=>L(t,(t=>V(n,t)[0](a,...e??[],...s))))),a=>r(V(n,a),(([,t,s])=>(ta(t,s??[""],void 0,(t=>(v(t,a),C(t)?1:0))),Z(n,a),e(a),s))),t=>r(V(n,t),(([t,,e=[],n,s])=>{const r=(...o)=>{const c=l(o);c==l(e)?t(a,...o,...s(o)):i(e[c])?u(n[c]?.(...o)??[],(a=>r(...o,a))):r(...o,e[c])};r()}))]})(),G=a=>{a!=O&&(O=a,U(I,void 0,O))},B=t=>{(m&&c(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},j=async a=>(2!=O&&(G(1),$++,await q((async()=>{try{const e=await t();c(e)?B(e):a?D(a):y("Content is not an array: "+e)}catch(t){o?.(t),a&&D(a)}G(0)}))),H),x=()=>(A&&(s(A),A=void 0),H),X=async a=>(1!=O&&(G(2),S++,await q((async()=>{try{await e(h,a)}catch(a){o?.(a)}G(0)}))),H),Y=()=>(p&&(a.delListener(p),p=void 0),H),q=async(...a)=>(N(V(Ca,T),...a),await(async()=>{if(!V(pa,T)){for(Z(pa,T,1);!i(R=g(V(Ca,T)));)try{await R()}catch(a){o?.(a)}Z(pa,T,0)}})(),H),H={load:j,startAutoLoad:async a=>{x(),await j(a);try{A=await n((async(a,t)=>{t||a?2!=O&&(G(1),$++,B(t??a),G(0)):await j()}))}catch(a){o?.(a)}return H},stopAutoLoad:x,isAutoLoading:()=>!i(A),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=f();b(a)&&X(a)})),H),stopAutoSave:Y,isAutoSaving:()=>!i(p),getStatus:()=>O,addStatusListener:a=>P(a,I),delListener:t=>(F(t),a),schedule:q,getStore:()=>a,destroy:()=>(V(Ca,T).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:$,saves:S}),...w};return _(H)},La=(a,t,n,s,r,o=va,c,E)=>{const l=K();return[async()=>{l.clear(),T(await n(a,t),(({tn:a,cn:t})=>na(aa(l,a,ea),t)))},async(t,e)=>((a,t)=>p(V(l,a),t))(t,e)?h(A(T(await a(k+z(t)),(a=>[a[e],E?P(b(a,e),E):b(a,e)])),(([a,t])=>!i(a)&&!M(t)))):{},async(t,n,s,E,y,u=!1)=>{const g=ea();P(s??{},(a=>T(m(a??{}),(a=>na(g,a)))));const C=O(g);if(!u&&y&&R(C)&&p(l,t))return await a("DROP "+q+z(t)),void Z(l,t);const L=V(l,t),$=ea(O(L));if(R(C)||(p(l,t)?await w(T([n,...C],(async(e,s)=>{v($,e)||(await a(H+z(t)+"ADD"+z(e)+r),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(n)})`),na(L,e))}))):(await a("CREATE "+q+z(t)+`(${z(n)}${r} PRIMARY KEY${d(T(C,(a=>e+z(a)+r)))});`),Z(l,t,ea([n,...C])))),await w([...!u&&E?T(O($),(async e=>{e!=n&&(await a(H+z(t)+"DROP"+z(e)),v(L,e))})):[]]),u)i(s)?await a(W+z(t)+Y+" true"):await w(D(s,(async(e,s)=>{i(e)?await a(W+z(t)+Y+z(n)+"=$1",[s]):R(C)||await o(a,t,n,m(e),{[s]:c?T(U(e),c):U(e)},L)})));else if(R(C))p(l,t)&&await a(W+z(t)+Y+" true");else{const e=A(O(V(l,t)),(a=>a!=n)),i={},r=[];P(s??{},((a,t)=>{i[t]=T(e,(t=>c?c(a?.[t]):a?.[t])),N(r,t)})),await o(a,t,n,e,i),await a(W+z(t)+Y+z(n)+`NOT IN(${J(r)})`,r)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},va=async(a,t,n,s,i)=>{const r=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>d(T(a,z),e))(n,...s)+")VALUES"+d(D(i,(a=>"($"+r[0]+++","+J(a,r)+")")),e)+"ON CONFLICT("+z(n)+")DO UPDATE SET"+d(T(s,(a=>z(a)+"=excluded."+z(a))),e),D(i,((a,t)=>[t,...T(a,(a=>a??null))])).flat())},$a=(a,t,e,n,s,i,r,[o,c,E],l,w,y,u,d,T)=>{const[R,A,N,g]=La(t,l,w,s,d,T),p=Oa(a,(async()=>await g((async()=>{return await R(),a=(await A(o,c))[j]?.[E]??"null",B(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await R(),await N(o,c,{[j]:{[E]:(t=a()??null,G(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,r,{[u]:()=>y,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,y);return p},Sa=(a,t,e,n,s,r,o,[c,E,[l,y,u]],d,T,R,N,g,p,C,O)=>{const[L,v,$,S]=La(t,d,T,s,g,p,C,O),I=async(a,t)=>await w(Q(E,(async([e,n,s,i],r)=>{t&&!(r in a)||await $(e,n,a[r],s,i,t)}))),m=async(a,t)=>y?await $(u,x,{[j]:a},!0,!0,t):null,_=Oa(a,(async()=>await S((async()=>{await L();const a=await(async()=>h(A(await w(Q(c,(async([a,t],e)=>[a,await v(e,t)]))),(a=>!M(a[1])))))(),t=await(async()=>l?(await v(u,x))[j]:{})();return M(a)&&i(t)?void 0:[a,t]}))),(async(a,t)=>await S((async()=>{if(await L(),i(t)){const[t,e]=a();await I(t),await m(e)}else await I(t[0],!0),await m(t[1],!0)}))),e,n,s,o,{[N]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),r(),_)},0,R);return _},Ia=t,ma=/^([cd]:)(.+)/,_a=t+"_data",ha=t+"_table",fa=async(a,e,n,s,i)=>{const c=await(e.reserve?.());return((a,e,n,s,i,c,l,y,u,d,R="getDb")=>{const A=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(n,c),[N,,g,C]=(a=>{const e=(a=>f(Ra,o(a)?{[oa]:a}:a??{}))(a),n=e[la];if(e.mode==ra){const a=e[oa]??t;return[1,n,[a,e[ca]??x,e[Ea]??ia],ea(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=E(U(f(Aa,r)),0,F(Aa)),l=c[2],w=ea(l),y=ea(l);return[0,n,[Na(s,{[ya]:null,[wa]:x},ya,(a=>p(y,a)),(a=>na(w,a))),Na(i,{[ua]:null,[wa]:x,[da]:0,[Ta]:0},ua,((a,t)=>p(y,t)),((a,t)=>na(w,t))),c],w]})(e),L=async a=>{await A(`CREATE OR REPLACE TRIGGER ${z(_a+"_"+a)} AFTER INSERT OR UPDATE OR DELETE ON ${z(a)} EXECUTE FUNCTION ${_a}()`)};return(N?$a:Sa)(a,A,(async a=>{await A(`CREATE OR REPLACE FUNCTION ${ha}()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('${Ia}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ha} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ha}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${_a}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${Ia}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(T(O(C),(async a=>{await A(`CREATE TABLE IF NOT EXISTS ${z(a)}("_id"text PRIMARY KEY)`),await L(a)}))),await s(Ia,(async t=>{return await r((e=t,n=ma,e?.match(n)),(async([,t,e])=>{p(C,e)&&("c:"==t&&await L(e),a())}));var e,n}))}),i,l,y,u,g,O(C),(async(a,t)=>await a(`${X} table_name tn,column_name cn FROM information_schema.columns ${Y} table_schema='public'AND table_name IN(${J(t)})`,t)),d,R,"text",void 0,(a=>G(a)),(a=>B(a)))})(a,n,c?.unsafe,(async(a,t)=>e.listen(a,t)),(async a=>{try{await a.unlisten()}catch(a){i?.(a)}}),s,i,(()=>c?.release?.()),3,e,"getSql")};export{fa as createPostgresPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i="true",o=(a,t,e)=>a.replace(t,e),r=Promise,c=globalThis,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),d=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),E=a=>a.length,N=async a=>r.all(a),A=a=>{throw Error(a)},T=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},g=(a,t)=>a.forEach(t),$=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),O=a=>0==E(a),R=(a,t)=>a.filter(t),v=(a,...t)=>a.push(...t),S=a=>a.shift(),m=(a,t)=>a?.has(t)??!1,L=a=>l(a)||0==(a=>a?.size??0)(a),C=a=>[...a?.values()??[]],I=(a,t)=>a?.forEach(t),_=(a,t)=>a?.delete(t),b=new c.TextEncoder,f=Object,D=a=>f.getPrototypeOf(a),h=f.entries,P=f.keys,F=f.freeze,M=(a=[])=>f.fromEntries(a),U=(...a)=>f.assign({},...a),G=(a,t)=>(delete a[t],a),j=(a,t)=>p(h(a),(([a,e])=>t(e,a))),x=(a,t)=>M(j(a,((a,e)=>[e,t(a,e)]))),W=a=>f.values(a),B=a=>E(P(a)),H=a=>(a=>!l(a)&&w(D(a),(a=>a==f.prototype||l(D(a))),(()=>!0)))(a)&&0==B(a),X=JSON.stringify,Y=JSON.parse,k=a=>X(a,((a,t)=>void 0===t?"":t)),q=a=>new Map(a),z=(a,t)=>a?.get(t),J=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),K=(a,t,e)=>l(e)?(_(a,t),a):a?.set(t,e),V=(a,t,e,n)=>(m(a,t)?n?.(z(a,t)):K(a,t,e()),z(a,t)),Q=(a,t,e,n,s=0)=>w((e?V:z)(a,t[s],s>E(t)-2?e:q),(i=>{if(s>E(t)-2)return n?.(i)&&K(a,t[s]),i;const o=Q(i,t,e,n,s+1);return L(i)&&K(a,t[s]),o})),Z="_",aa="_id",ta="SELECT",ea="WHERE",na="TABLE",sa="INSERT",ia="DELETE",oa="UPDATE",ra="ALTER "+na,ca="FROM",la=ia+" "+ca,wa=ta+"*"+ca,da="CREATE ",ya=da+na,ua="OR REPLACE ",Ea="FUNCTION",Na="$tableName",Aa=a=>`"${o(a,/"/g,'""')}"`,Ta=(...a)=>Aa($(a,"_")),ga=(a,t=[1])=>$(p(a,(()=>"$"+t[0]++)),n),$a=(a,t=i)=>ea+`(${o(t,Na,Aa(a))})`,pa=a=>new Set(y(a)||l(a)?a:[a]),Oa=(a,t)=>a?.add(t),Ra="ColumnName",va="store",Sa="json",ma=va+"TableName",La=va+"Id"+Ra,Ca=va+Ra,Ia="autoLoadIntervalSeconds",_a="rowId"+Ra,ba="tableId",fa="tableName",Da="deleteEmptyColumns",ha="deleteEmptyTable",Pa="condition",Fa={mode:Sa,[Ia]:1},Ma={load:0,save:0,[fa]:t+"_values"},Ua=(a,t,e,n,s)=>{const i=q();return x(a,((a,o)=>{const r=u(W(U(t,d(a)?{[e]:a}:a)),0,B(t));l(r[0])||n(o,r[0])||(s(o,r[0]),K(i,o,r))})),i},Ga=/^\d+$/,ja=q(),xa=q(),Wa=(a,t,n,s,i,o,r,c={},d=0,u=[])=>{let N,$,p,O=0,R=0,m=0;V(ja,u,(()=>0)),V(xa,u,(()=>[]));const C=q(),[b,f,D,h,P]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!H(a)||!H(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!H(a)||!H(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,d),[M,U,G]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?S(a):null)??e+t++,t=>{Ga.test(t)&&E(a)<1e3&&v(a,t)}]})(),s=q();return[(n,i,o,r=[],c=()=>[])=>{a??=J;const l=t(1);return K(s,l,[n,i,o,r,c]),Oa(Q(i,o??[e],pa),l),l},(t,n,...i)=>g(((a,t=[e])=>{const n=[],s=(a,e)=>e==E(t)?v(n,a):null===t[e]?I(a,(a=>s(a,e+1))):g([t[e],null],(t=>s(z(a,t),e+1)));return s(a,0),n})(t,n),(t=>I(t,(t=>z(s,t)[0](a,...n??[],...i))))),a=>w(z(s,a),(([,t,i])=>(Q(t,i??[e],void 0,(t=>(_(t,a),L(t)?1:0))),K(s,a),n(a),i))),t=>w(z(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=E(o);r==E(e)?t(a,...o,...s(o)):l(e[r])?g(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=O&&(O=a,U(C,void 0,O))},x=t=>{(b&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},W=async a=>(2!=O&&(j(1),R++,await k((async()=>{await T((async()=>{const e=await t();y(e)?x(e):a?P(a):A("Content is not an array: "+e)}),(()=>{a&&P(a)})),j(0)}))),J),B=async()=>($&&(await T((()=>i($)),o),$=void 0),J),X=async a=>(1!=O&&(j(2),m++,await k((async()=>{await T((()=>n(f,a)),o),j(0)}))),J),Y=async()=>(p&&(a.delListener(p),p=void 0),J),k=async(...a)=>(v(z(xa,u),...a),await(async()=>{if(!z(ja,u)){for(K(ja,u,1);!l(N=S(z(xa,u)));)await T(N,o);K(ja,u,0)}})(),J),J={load:W,startAutoLoad:async a=>(B(),await W(a),await T((async()=>$=await s((async(a,t)=>{t||a?2!=O&&(j(1),R++,x(t??a),j(0)):await W()}))),o),J),stopAutoLoad:B,isAutoLoading:()=>!l($),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=D();h(a)&&X(a)})),J),stopAutoSave:Y,isAutoSaving:()=>!l(p),getStatus:()=>O,addStatusListener:a=>M(a,C),delListener:t=>(G(t),a),schedule:k,getStore:()=>a,destroy:async()=>(z(xa,u).splice(0,void 0),await J.stopAutoLoad(),await J.stopAutoSave()),getStats:()=>({loads:R,saves:m}),...c};return F(J)},Ba=(a,t,e,s,o,r=Ha,c,w)=>{const d=q();return[async()=>{d.clear(),p(await e(a,t),(({tn:a,cn:t})=>Oa(V(d,a,pa),t)))},async(t,e,n)=>((a,t)=>m(z(d,a),t))(t,e)?M(R(p(await a(wa+Aa(t)+$a(t,n)),(a=>[a[e],w?x(G(a,e),w):G(a,e)])),(([a,t])=>!l(a)&&!H(t)))):{},async(t,e,s,w,y,u=!1,E=i)=>{const A=pa();x(s??{},(a=>p(P(a??{}),(a=>Oa(A,a)))));const T=C(A);if(!u&&y&&E==i&&O(T)&&m(d,t))return await a("DROP "+na+Aa(t)),void K(d,t);const g=z(d,t),S=pa(C(g));if(O(T)||(m(d,t)?await N(p([e,...T],(async(n,s)=>{_(S,n)||(await a(ra+Aa(t)+"ADD"+Aa(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+Aa(t)+`(${Aa(e)})`),Oa(g,n))}))):(await a(ya+Aa(t)+`(${Aa(e)}${o} PRIMARY KEY${$(p(T,(a=>n+Aa(a)+o)))});`),K(d,t,pa([e,...T])))),await N([...!u&&w?p(C(S),(async n=>{n!=e&&(await a(ra+Aa(t)+"DROP"+Aa(n)),_(g,n))})):[]]),u)l(s)?await a(la+Aa(t)+$a(t,E)):await N(j(s,(async(n,s)=>{l(n)?await a(la+Aa(t)+$a(t,E)+`AND(${Aa(e)}=$1)`,[s]):O(T)||await r(a,t,e,P(n),{[s]:c?p(W(n),c):W(n)},g)})));else if(O(T))m(d,t)&&await a(la+Aa(t)+$a(t,E));else{const n=R(C(z(d,t)),(a=>a!=e)),i={},o=[];x(s??{},((a,t)=>{i[t]=p(n,(t=>c?c(a?.[t]):a?.[t])),v(o,t)})),await r(a,t,e,n,i),await a(la+Aa(t)+$a(t,E)+`AND${Aa(e)}NOT IN(${ga(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await T((async()=>e=await t()),s),await a("END"),e}]},Ha=async(a,t,e,s,i)=>{const o=[1];await a(sa+" INTO"+Aa(t)+"("+((...a)=>$(p(a,Aa),n))(e,...s)+")VALUES"+$(j(i,(a=>"($"+o[0]+++","+ga(a,o)+")")),n)+"ON CONFLICT("+Aa(e)+`)DO ${oa} SET`+$(p(s,(a=>Aa(a)+"=excluded."+Aa(a))),n),j(i,((a,t)=>[t,...p(a,(a=>a??null))])).flat())},Xa=(a,t,e,n,s,i,o,[r,c,l],w,d,y,u,E,N)=>{const[A,T,g,$]=Ba(t,w,d,s,E,N),p=Wa(a,(()=>$((async()=>{return await A(),a=(await T(r,c))[Z]?.[l]??"null",Y(a,((a,t)=>""===t?void 0:t));var a}))),(a=>$((async()=>{await A(),await g(r,c,{[Z]:{[l]:k(a()??null)}},!0,!0)}))),e,n,s,o,{[u]:()=>y,destroy:async()=>(await p.stopAutoLoad(),await p.stopAutoSave(),i(),p)},0,y);return p},Ya=(a,t,e,n,s,i,o,[r,c,[w,d,y]],u,E,A,T,g,$,p,O)=>{const[v,S,m,L]=Ba(t,u,E,s,g,$,p,O),C=(a,t)=>N(J(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await m(e,n,a[r],s,i,t,o)}))),I=async(a,t)=>d?await m(y,aa,{[Z]:a},!0,!0,t):null,_=Wa(a,(()=>L((async()=>{await v();const a=await(async()=>M(R(await N(J(r,(async([a,t,e],n)=>[a,await S(n,t,e)]))),(a=>!H(a[1])))))(),t=await(async()=>w?(await S(y,aa))[Z]:{})();return H(a)&&l(t)?void 0:[a,t]}))),((a,t)=>L((async()=>{if(await v(),l(t)){const[t,e]=a();await C(t),await I(e)}else await C(t[0],!0),await I(t[1],!0)}))),e,n,s,o,{[T]:()=>A,destroy:async()=>(await _.stopAutoLoad(),await _.stopAutoSave(),i(),_)},0,A);return _},ka=/^([cd]:)(.+)/,qa=(a,n,s,r,c,l,y,E,A,T,O="getDb")=>{const R=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[v,,S,L]=(a=>{const e=(a=>U(Fa,d(a)?{[ma]:a}:a??{}))(a),n=e[Ia];if(e.mode==Sa){const a=e[ma]??t;return[1,n,[a,e[La]??aa,e[Ca]??va],pa(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=u(W(U(Ma,r)),0,B(Ma)),l=c[2],w=pa(l),y=pa(l),E=Ua(s,{[ba]:null,[_a]:aa,[Pa]:i},ba,(a=>m(y,a)),(a=>Oa(w,a))),N=Ua(o,{[fa]:null,[_a]:aa,[Da]:0,[ha]:0,[Pa]:null},fa,((a,t)=>m(y,t)),((a,t)=>Oa(w,t)));var A;return A=(a,t)=>t[4]??=z(E,t[0])?.[2]??i,I(N,((a,t)=>A(0,a))),[0,n,[E,N,c],w]})(n),_=e+(a=>{let t=2166136261;return g(b.encode(a),(a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0})(k(S)),f=t+"_"+_,D=async(a,e,n="",s="")=>{const i=Ta(t,a,_);return await R(da+ua+Ea+i+`()RETURNS ${n}trigger AS $$ ${s}BEGIN ${e}END;$$ LANGUAGE plpgsql;`),i},h=async(a,t,e,n)=>(await R(da+a+"TRIGGER"+t+e+"EXECUTE "+Ea+n+"()"),t),P=a=>`PERFORM pg_notify('${f}',${a});`,F=(a,t)=>v?i:2===t?F(a,0)+" OR "+F(a,1):o(z(S[0],a)?.[2]??i,Na,0==t?"NEW":"OLD"),M=(a,e)=>N(p([sa,ia,oa],((n,s)=>h(ua,Ta(t,"d",_,a,n),`AFTER ${n} ON${Aa(a)}FOR EACH ROW WHEN(${F(a,s)})`,e))));return(v?Xa:Ya)(a,R,(async a=>{const e=await D("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${ea} command_tag='${ya}' LOOP ${P("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");await h("EVENT ",Ta(t,"c",_),`ON ddl_command_end WHEN TAG IN('${ya}')`,e);const n=await D("d",P("'d:'||TG_TABLE_NAME")+"RETURN NULL;");return await N(p(C(L),(async a=>(await R(ya+` IF NOT EXISTS${Aa(a)}("_id"text PRIMARY KEY)`),await M(a,n))))),[await r(f,(t=>{return w((e=t,s=ka,e?.match(s)),(async([,t,e])=>{m(L,e)&&("c:"==t&&await M(e,n),a())}));var e,s})),[e,n]]}),(async([a,t])=>{c(a),await R(`DROP FUNCTION IF EXISTS${$(t,",")}CASCADE`)}),y,E,A,S,C(L),(async(a,t)=>await a(ta+` table_name tn,column_name cn FROM information_schema.columns ${ea} table_schema='public'AND table_name IN(${ga(t)})`,t)),T,O,"text",void 0,(a=>X(a)),(a=>Y(a)))},za=async(a,t,e,n,s)=>{const i=await(t.reserve?.());return qa(a,e,i?.unsafe,(async(a,e)=>t.listen(a,e)),(a=>T(a.unlisten,s)),n,s,(()=>i?.release?.()),3,t,"getSql")};export{za as createPostgresPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e=",",n=a(""),s=Promise,i=a=>null==a,r=(a,t,e)=>i(a)?e?.():t(a),o=t=>a(t)==n,c=a=>Array.isArray(a),E=(a,t,e)=>a.slice(t,e),l=a=>a.length,w=async a=>s.all(a),y=a=>{throw Error(a)},u=(a,t)=>a.forEach(t),d=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),R=a=>0==l(a),A=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),g=a=>a.shift(),p=(a,t)=>a?.has(t)??!1,C=a=>i(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],L=(a,t)=>a?.forEach(t),v=(a,t)=>a?.delete(t),$=Object,S=a=>$.getPrototypeOf(a),I=$.entries,m=$.keys,_=$.freeze,h=(a=[])=>$.fromEntries(a),f=(...a)=>$.assign({},...a),b=(a,t)=>(delete a[t],a),D=(a,t)=>T(I(a),(([a,e])=>t(e,a))),P=(a,t)=>h(D(a,((a,e)=>[e,t(a,e)]))),U=a=>$.values(a),F=a=>l(m(a)),M=a=>(a=>!i(a)&&r(S(a),(a=>a==$.prototype||i(S(a))),(()=>!0)))(a)&&0==F(a),G=JSON.stringify,B=JSON.parse,j="_",x="_id",X="SELECT",Y="WHERE",q="TABLE",H="ALTER "+q,W="DELETE FROM",k=X+"*FROM",z=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>d(T(a,(()=>"$"+t[0]++)),e),K=a=>new Map(a),V=(a,t)=>a?.get(t),Q=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),Z=(a,t,e)=>i(e)?(v(a,t),a):a?.set(t,e),aa=(a,t,e,n)=>(p(a,t)?n?.(V(a,t)):Z(a,t,e()),V(a,t)),ta=(a,t,e,n,s=0)=>r((e?aa:V)(a,t[s],s>l(t)-2?e:K),(i=>{if(s>l(t)-2)return n?.(i)&&Z(a,t[s]),i;const r=ta(i,t,e,n,s+1);return C(i)&&Z(a,t[s]),r})),ea=a=>new Set(c(a)||i(a)?a:[a]),na=(a,t)=>a?.add(t),sa="ColumnName",ia="store",ra="json",oa=ia+"TableName",ca=ia+"Id"+sa,Ea=ia+sa,la="autoLoadIntervalSeconds",wa="rowId"+sa,ya="tableId",ua="tableName",da="deleteEmptyColumns",Ta="deleteEmptyTable",Ra={mode:ra,[la]:1},Aa={load:0,save:0,[ua]:t+"_values"},Na=(a,t,e,n,s)=>{const r=K();return P(a,((a,c)=>{const l=E(U(f(t,o(a)?{[e]:a}:a)),0,F(t));i(l[0])||n(c,l[0])||(s(c,l[0]),Z(r,c,l))})),r},ga=/^\d+$/,pa=K(),Ca=K(),Oa=(a,t,e,n,s,o,E,w={},d=0,T=[])=>{let R,A,p,O=0,$=0,S=0;aa(pa,T,(()=>0)),aa(Ca,T,(()=>[]));const I=K(),[m,h,f,b,D]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!M(a)||!M(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!M(a)||!M(t),t.setContent]:y("Store type not supported by this Persister"))(E,a,d),[P,U,F]=(()=>{let a;const[t,e]=(()=>{const a=[];let t=0;return[e=>(e?g(a):null)??""+t++,t=>{ga.test(t)&&l(a)<1e3&&N(a,t)}]})(),n=K();return[(e,s,i,r=[],o=()=>[])=>{a??=H;const c=t(1);return Z(n,c,[e,s,i,r,o]),na(ta(s,i??[""],ea),c),c},(t,e,...s)=>u(((a,t=[""])=>{const e=[],n=(a,s)=>s==l(t)?N(e,a):null===t[s]?L(a,(a=>n(a,s+1))):u([t[s],null],(t=>n(V(a,t),s+1)));return n(a,0),e})(t,e),(t=>L(t,(t=>V(n,t)[0](a,...e??[],...s))))),a=>r(V(n,a),(([,t,s])=>(ta(t,s??[""],void 0,(t=>(v(t,a),C(t)?1:0))),Z(n,a),e(a),s))),t=>r(V(n,t),(([t,,e=[],n,s])=>{const r=(...o)=>{const c=l(o);c==l(e)?t(a,...o,...s(o)):i(e[c])?u(n[c]?.(...o)??[],(a=>r(...o,a))):r(...o,e[c])};r()}))]})(),G=a=>{a!=O&&(O=a,U(I,void 0,O))},B=t=>{(m&&c(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},j=async a=>(2!=O&&(G(1),$++,await q((async()=>{try{const e=await t();c(e)?B(e):a?D(a):y("Content is not an array: "+e)}catch(t){o?.(t),a&&D(a)}G(0)}))),H),x=()=>(A&&(s(A),A=void 0),H),X=async a=>(1!=O&&(G(2),S++,await q((async()=>{try{await e(h,a)}catch(a){o?.(a)}G(0)}))),H),Y=()=>(p&&(a.delListener(p),p=void 0),H),q=async(...a)=>(N(V(Ca,T),...a),await(async()=>{if(!V(pa,T)){for(Z(pa,T,1);!i(R=g(V(Ca,T)));)try{await R()}catch(a){o?.(a)}Z(pa,T,0)}})(),H),H={load:j,startAutoLoad:async a=>{x(),await j(a);try{A=await n((async(a,t)=>{t||a?2!=O&&(G(1),$++,B(t??a),G(0)):await j()}))}catch(a){o?.(a)}return H},stopAutoLoad:x,isAutoLoading:()=>!i(A),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=f();b(a)&&X(a)})),H),stopAutoSave:Y,isAutoSaving:()=>!i(p),getStatus:()=>O,addStatusListener:a=>P(a,I),delListener:t=>(F(t),a),schedule:q,getStore:()=>a,destroy:()=>(V(Ca,T).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:$,saves:S}),...w};return _(H)},La=(a,t,n,s,r,o=va,c,E)=>{const l=K();return[async()=>{l.clear(),T(await n(a,t),(({tn:a,cn:t})=>na(aa(l,a,ea),t)))},async(t,e)=>((a,t)=>p(V(l,a),t))(t,e)?h(A(T(await a(k+z(t)),(a=>[a[e],E?P(b(a,e),E):b(a,e)])),(([a,t])=>!i(a)&&!M(t)))):{},async(t,n,s,E,y,u=!1)=>{const g=ea();P(s??{},(a=>T(m(a??{}),(a=>na(g,a)))));const C=O(g);if(!u&&y&&R(C)&&p(l,t))return await a("DROP "+q+z(t)),void Z(l,t);const L=V(l,t),$=ea(O(L));if(R(C)||(p(l,t)?await w(T([n,...C],(async(e,s)=>{v($,e)||(await a(H+z(t)+"ADD"+z(e)+r),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(n)})`),na(L,e))}))):(await a("CREATE "+q+z(t)+`(${z(n)}${r} PRIMARY KEY${d(T(C,(a=>e+z(a)+r)))});`),Z(l,t,ea([n,...C])))),await w([...!u&&E?T(O($),(async e=>{e!=n&&(await a(H+z(t)+"DROP"+z(e)),v(L,e))})):[]]),u)i(s)?await a(W+z(t)+Y+" true"):await w(D(s,(async(e,s)=>{i(e)?await a(W+z(t)+Y+z(n)+"=$1",[s]):R(C)||await o(a,t,n,m(e),{[s]:c?T(U(e),c):U(e)},L)})));else if(R(C))p(l,t)&&await a(W+z(t)+Y+" true");else{const e=A(O(V(l,t)),(a=>a!=n)),i={},r=[];P(s??{},((a,t)=>{i[t]=T(e,(t=>c?c(a?.[t]):a?.[t])),N(r,t)})),await o(a,t,n,e,i),await a(W+z(t)+Y+z(n)+`NOT IN(${J(r)})`,r)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},va=async(a,t,n,s,i)=>{const r=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>d(T(a,z),e))(n,...s)+")VALUES"+d(D(i,(a=>"($"+r[0]+++","+J(a,r)+")")),e)+"ON CONFLICT("+z(n)+")DO UPDATE SET"+d(T(s,(a=>z(a)+"=excluded."+z(a))),e),D(i,((a,t)=>[t,...T(a,(a=>a??null))])).flat())},$a=(a,t,e,n,s,i,r,[o,c,E],l,w,y,u,d,T)=>{const[R,A,N,g]=La(t,l,w,s,d,T),p=Oa(a,(async()=>await g((async()=>{return await R(),a=(await A(o,c))[j]?.[E]??"null",B(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await R(),await N(o,c,{[j]:{[E]:(t=a()??null,G(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,r,{[u]:()=>y,destroy:()=>(p.stopAutoLoad().stopAutoSave(),i(),p)},0,y);return p},Sa=(a,t,e,n,s,r,o,[c,E,[l,y,u]],d,T,R,N,g,p,C,O)=>{const[L,v,$,S]=La(t,d,T,s,g,p,C,O),I=async(a,t)=>await w(Q(E,(async([e,n,s,i],r)=>{t&&!(r in a)||await $(e,n,a[r],s,i,t)}))),m=async(a,t)=>y?await $(u,x,{[j]:a},!0,!0,t):null,_=Oa(a,(async()=>await S((async()=>{await L();const a=await(async()=>h(A(await w(Q(c,(async([a,t],e)=>[a,await v(e,t)]))),(a=>!M(a[1])))))(),t=await(async()=>l?(await v(u,x))[j]:{})();return M(a)&&i(t)?void 0:[a,t]}))),(async(a,t)=>await S((async()=>{if(await L(),i(t)){const[t,e]=a();await I(t),await m(e)}else await I(t[0],!0),await m(t[1],!0)}))),e,n,s,o,{[N]:()=>R,destroy:()=>(_.stopAutoLoad().stopAutoSave(),r(),_)},0,R);return _},Ia=t,ma=/^([cd]:)(.+)/,_a=t+"_data",ha=t+"_table",fa=async(a,e,n,s,i)=>{const c=await(e.reserve?.());return((a,e,n,s,i,c,l,y,u,d,R="getDb")=>{const A=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(n,c),[N,,g,C]=(a=>{const e=(a=>f(Ra,o(a)?{[oa]:a}:a??{}))(a),n=e[la];if(e.mode==ra){const a=e[oa]??t;return[1,n,[a,e[ca]??x,e[Ea]??ia],ea(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=E(U(f(Aa,r)),0,F(Aa)),l=c[2],w=ea(l),y=ea(l);return[0,n,[Na(s,{[ya]:null,[wa]:x},ya,(a=>p(y,a)),(a=>na(w,a))),Na(i,{[ua]:null,[wa]:x,[da]:0,[Ta]:0},ua,((a,t)=>p(y,t)),((a,t)=>na(w,t))),c],w]})(e),L=async a=>{await A(`CREATE OR REPLACE TRIGGER ${z(_a+"_"+a)} AFTER INSERT OR UPDATE OR DELETE ON ${z(a)} EXECUTE FUNCTION ${_a}()`)};return(N?$a:Sa)(a,A,(async a=>{await A(`CREATE OR REPLACE FUNCTION ${ha}()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('${Ia}','c:'||SPLIT_PART(row.object_identity,'.',2));END LOOP;END;$t2$ LANGUAGE plpgsql;`);try{await A(`CREATE EVENT TRIGGER ${ha} ON ddl_command_end WHEN TAG IN('CREATE TABLE')EXECUTE FUNCTION ${ha}();`)}catch{}return await A(`CREATE OR REPLACE FUNCTION ${_a}()RETURNS trigger AS $t1$ BEGIN PERFORM pg_notify('${Ia}','d:'||TG_TABLE_NAME);RETURN NULL;END;$t1$ LANGUAGE plpgsql;`),await w(T(O(C),(async a=>{await A(`CREATE TABLE IF NOT EXISTS ${z(a)}("_id"text PRIMARY KEY)`),await L(a)}))),await s(Ia,(async t=>{return await r((e=t,n=ma,e?.match(n)),(async([,t,e])=>{p(C,e)&&("c:"==t&&await L(e),a())}));var e,n}))}),i,l,y,u,g,O(C),(async(a,t)=>await a(`${X} table_name tn,column_name cn FROM information_schema.columns ${Y} table_schema='public'AND table_name IN(${J(t)})`,t)),d,R,"text",void 0,(a=>G(a)),(a=>B(a)))})(a,n,c?.unsafe,(async(a,t)=>e.listen(a,t)),(async a=>{try{await a.unlisten()}catch(a){i?.(a)}}),s,i,(()=>c?.release?.()),3,e,"getSql")};export{fa as createPostgresPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i="true",o=(a,t,e)=>a.replace(t,e),r=Promise,c=globalThis,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),d=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),E=a=>a.length,N=async a=>r.all(a),A=a=>{throw Error(a)},T=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},g=(a,t)=>a.forEach(t),$=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),O=a=>0==E(a),R=(a,t)=>a.filter(t),v=(a,...t)=>a.push(...t),S=a=>a.shift(),m=(a,t)=>a?.has(t)??!1,L=a=>l(a)||0==(a=>a?.size??0)(a),C=a=>[...a?.values()??[]],I=(a,t)=>a?.forEach(t),_=(a,t)=>a?.delete(t),b=new c.TextEncoder,f=Object,D=a=>f.getPrototypeOf(a),h=f.entries,P=f.keys,F=f.freeze,M=(a=[])=>f.fromEntries(a),U=(...a)=>f.assign({},...a),G=(a,t)=>(delete a[t],a),j=(a,t)=>p(h(a),(([a,e])=>t(e,a))),x=(a,t)=>M(j(a,((a,e)=>[e,t(a,e)]))),W=a=>f.values(a),B=a=>E(P(a)),H=a=>(a=>!l(a)&&w(D(a),(a=>a==f.prototype||l(D(a))),(()=>!0)))(a)&&0==B(a),X=JSON.stringify,Y=JSON.parse,k=a=>X(a,((a,t)=>void 0===t?"":t)),q=a=>new Map(a),z=(a,t)=>a?.get(t),J=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),K=(a,t,e)=>l(e)?(_(a,t),a):a?.set(t,e),V=(a,t,e,n)=>(m(a,t)?n?.(z(a,t)):K(a,t,e()),z(a,t)),Q=(a,t,e,n,s=0)=>w((e?V:z)(a,t[s],s>E(t)-2?e:q),(i=>{if(s>E(t)-2)return n?.(i)&&K(a,t[s]),i;const o=Q(i,t,e,n,s+1);return L(i)&&K(a,t[s]),o})),Z="_",aa="_id",ta="SELECT",ea="WHERE",na="TABLE",sa="INSERT",ia="DELETE",oa="UPDATE",ra="ALTER "+na,ca="FROM",la=ia+" "+ca,wa=ta+"*"+ca,da="CREATE ",ya=da+na,ua="OR REPLACE ",Ea="FUNCTION",Na="$tableName",Aa=a=>`"${o(a,/"/g,'""')}"`,Ta=(...a)=>Aa($(a,"_")),ga=(a,t=[1])=>$(p(a,(()=>"$"+t[0]++)),n),$a=(a,t=i)=>ea+`(${o(t,Na,Aa(a))})`,pa=a=>new Set(y(a)||l(a)?a:[a]),Oa=(a,t)=>a?.add(t),Ra="ColumnName",va="store",Sa="json",ma=va+"TableName",La=va+"Id"+Ra,Ca=va+Ra,Ia="autoLoadIntervalSeconds",_a="rowId"+Ra,ba="tableId",fa="tableName",Da="deleteEmptyColumns",ha="deleteEmptyTable",Pa="condition",Fa={mode:Sa,[Ia]:1},Ma={load:0,save:0,[fa]:t+"_values"},Ua=(a,t,e,n,s)=>{const i=q();return x(a,((a,o)=>{const r=u(W(U(t,d(a)?{[e]:a}:a)),0,B(t));l(r[0])||n(o,r[0])||(s(o,r[0]),K(i,o,r))})),i},Ga=/^\d+$/,ja=q(),xa=q(),Wa=(a,t,n,s,i,o,r,c={},d=0,u=[])=>{let N,$,p,O=0,R=0,m=0;V(ja,u,(()=>0)),V(xa,u,(()=>[]));const C=q(),[b,f,D,h,P]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!H(a)||!H(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!H(a)||!H(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,d),[M,U,G]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?S(a):null)??e+t++,t=>{Ga.test(t)&&E(a)<1e3&&v(a,t)}]})(),s=q();return[(n,i,o,r=[],c=()=>[])=>{a??=J;const l=t(1);return K(s,l,[n,i,o,r,c]),Oa(Q(i,o??[e],pa),l),l},(t,n,...i)=>g(((a,t=[e])=>{const n=[],s=(a,e)=>e==E(t)?v(n,a):null===t[e]?I(a,(a=>s(a,e+1))):g([t[e],null],(t=>s(z(a,t),e+1)));return s(a,0),n})(t,n),(t=>I(t,(t=>z(s,t)[0](a,...n??[],...i))))),a=>w(z(s,a),(([,t,i])=>(Q(t,i??[e],void 0,(t=>(_(t,a),L(t)?1:0))),K(s,a),n(a),i))),t=>w(z(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=E(o);r==E(e)?t(a,...o,...s(o)):l(e[r])?g(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=O&&(O=a,U(C,void 0,O))},x=t=>{(b&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},W=async a=>(2!=O&&(j(1),R++,await k((async()=>{await T((async()=>{const e=await t();y(e)?x(e):a?P(a):A("Content is not an array: "+e)}),(()=>{a&&P(a)})),j(0)}))),J),B=async()=>($&&(await T((()=>i($)),o),$=void 0),J),X=async a=>(1!=O&&(j(2),m++,await k((async()=>{await T((()=>n(f,a)),o),j(0)}))),J),Y=async()=>(p&&(a.delListener(p),p=void 0),J),k=async(...a)=>(v(z(xa,u),...a),await(async()=>{if(!z(ja,u)){for(K(ja,u,1);!l(N=S(z(xa,u)));)await T(N,o);K(ja,u,0)}})(),J),J={load:W,startAutoLoad:async a=>(B(),await W(a),await T((async()=>$=await s((async(a,t)=>{t||a?2!=O&&(j(1),R++,x(t??a),j(0)):await W()}))),o),J),stopAutoLoad:B,isAutoLoading:()=>!l($),save:X,startAutoSave:async()=>(Y(),await X(),p=a.addDidFinishTransactionListener((()=>{const a=D();h(a)&&X(a)})),J),stopAutoSave:Y,isAutoSaving:()=>!l(p),getStatus:()=>O,addStatusListener:a=>M(a,C),delListener:t=>(G(t),a),schedule:k,getStore:()=>a,destroy:async()=>(z(xa,u).splice(0,void 0),await J.stopAutoLoad(),await J.stopAutoSave()),getStats:()=>({loads:R,saves:m}),...c};return F(J)},Ba=(a,t,e,s,o,r=Ha,c,w)=>{const d=q();return[async()=>{d.clear(),p(await e(a,t),(({tn:a,cn:t})=>Oa(V(d,a,pa),t)))},async(t,e,n)=>((a,t)=>m(z(d,a),t))(t,e)?M(R(p(await a(wa+Aa(t)+$a(t,n)),(a=>[a[e],w?x(G(a,e),w):G(a,e)])),(([a,t])=>!l(a)&&!H(t)))):{},async(t,e,s,w,y,u=!1,E=i)=>{const A=pa();x(s??{},(a=>p(P(a??{}),(a=>Oa(A,a)))));const T=C(A);if(!u&&y&&E==i&&O(T)&&m(d,t))return await a("DROP "+na+Aa(t)),void K(d,t);const g=z(d,t),S=pa(C(g));if(O(T)||(m(d,t)?await N(p([e,...T],(async(n,s)=>{_(S,n)||(await a(ra+Aa(t)+"ADD"+Aa(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+Aa(t)+`(${Aa(e)})`),Oa(g,n))}))):(await a(ya+Aa(t)+`(${Aa(e)}${o} PRIMARY KEY${$(p(T,(a=>n+Aa(a)+o)))});`),K(d,t,pa([e,...T])))),await N([...!u&&w?p(C(S),(async n=>{n!=e&&(await a(ra+Aa(t)+"DROP"+Aa(n)),_(g,n))})):[]]),u)l(s)?await a(la+Aa(t)+$a(t,E)):await N(j(s,(async(n,s)=>{l(n)?await a(la+Aa(t)+$a(t,E)+`AND(${Aa(e)}=$1)`,[s]):O(T)||await r(a,t,e,P(n),{[s]:c?p(W(n),c):W(n)},g)})));else if(O(T))m(d,t)&&await a(la+Aa(t)+$a(t,E));else{const n=R(C(z(d,t)),(a=>a!=e)),i={},o=[];x(s??{},((a,t)=>{i[t]=p(n,(t=>c?c(a?.[t]):a?.[t])),v(o,t)})),await r(a,t,e,n,i),await a(la+Aa(t)+$a(t,E)+`AND${Aa(e)}NOT IN(${ga(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await T((async()=>e=await t()),s),await a("END"),e}]},Ha=async(a,t,e,s,i)=>{const o=[1];await a(sa+" INTO"+Aa(t)+"("+((...a)=>$(p(a,Aa),n))(e,...s)+")VALUES"+$(j(i,(a=>"($"+o[0]+++","+ga(a,o)+")")),n)+"ON CONFLICT("+Aa(e)+`)DO ${oa} SET`+$(p(s,(a=>Aa(a)+"=excluded."+Aa(a))),n),j(i,((a,t)=>[t,...p(a,(a=>a??null))])).flat())},Xa=(a,t,e,n,s,i,o,[r,c,l],w,d,y,u,E,N)=>{const[A,T,g,$]=Ba(t,w,d,s,E,N),p=Wa(a,(()=>$((async()=>{return await A(),a=(await T(r,c))[Z]?.[l]??"null",Y(a,((a,t)=>""===t?void 0:t));var a}))),(a=>$((async()=>{await A(),await g(r,c,{[Z]:{[l]:k(a()??null)}},!0,!0)}))),e,n,s,o,{[u]:()=>y,destroy:async()=>(await p.stopAutoLoad(),await p.stopAutoSave(),i(),p)},0,y);return p},Ya=(a,t,e,n,s,i,o,[r,c,[w,d,y]],u,E,A,T,g,$,p,O)=>{const[v,S,m,L]=Ba(t,u,E,s,g,$,p,O),C=(a,t)=>N(J(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await m(e,n,a[r],s,i,t,o)}))),I=async(a,t)=>d?await m(y,aa,{[Z]:a},!0,!0,t):null,_=Wa(a,(()=>L((async()=>{await v();const a=await(async()=>M(R(await N(J(r,(async([a,t,e],n)=>[a,await S(n,t,e)]))),(a=>!H(a[1])))))(),t=await(async()=>w?(await S(y,aa))[Z]:{})();return H(a)&&l(t)?void 0:[a,t]}))),((a,t)=>L((async()=>{if(await v(),l(t)){const[t,e]=a();await C(t),await I(e)}else await C(t[0],!0),await I(t[1],!0)}))),e,n,s,o,{[T]:()=>A,destroy:async()=>(await _.stopAutoLoad(),await _.stopAutoSave(),i(),_)},0,A);return _},ka=/^([cd]:)(.+)/,qa=(a,n,s,r,c,l,y,E,A,T,O="getDb")=>{const R=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[v,,S,L]=(a=>{const e=(a=>U(Fa,d(a)?{[ma]:a}:a??{}))(a),n=e[Ia];if(e.mode==Sa){const a=e[ma]??t;return[1,n,[a,e[La]??aa,e[Ca]??va],pa(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=u(W(U(Ma,r)),0,B(Ma)),l=c[2],w=pa(l),y=pa(l),E=Ua(s,{[ba]:null,[_a]:aa,[Pa]:i},ba,(a=>m(y,a)),(a=>Oa(w,a))),N=Ua(o,{[fa]:null,[_a]:aa,[Da]:0,[ha]:0,[Pa]:null},fa,((a,t)=>m(y,t)),((a,t)=>Oa(w,t)));var A;return A=(a,t)=>t[4]??=z(E,t[0])?.[2]??i,I(N,((a,t)=>A(0,a))),[0,n,[E,N,c],w]})(n),_=e+(a=>{let t=2166136261;return g(b.encode(a),(a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)})),t>>>0})(k(S)),f=t+"_"+_,D=async(a,e,n="",s="")=>{const i=Ta(t,a,_);return await R(da+ua+Ea+i+`()RETURNS ${n}trigger AS $$ ${s}BEGIN ${e}END;$$ LANGUAGE plpgsql;`),i},h=async(a,t,e,n)=>(await R(da+a+"TRIGGER"+t+e+"EXECUTE "+Ea+n+"()"),t),P=a=>`PERFORM pg_notify('${f}',${a});`,F=(a,t)=>v?i:2===t?F(a,0)+" OR "+F(a,1):o(z(S[0],a)?.[2]??i,Na,0==t?"NEW":"OLD"),M=(a,e)=>N(p([sa,ia,oa],((n,s)=>h(ua,Ta(t,"d",_,a,n),`AFTER ${n} ON${Aa(a)}FOR EACH ROW WHEN(${F(a,s)})`,e))));return(v?Xa:Ya)(a,R,(async a=>{const e=await D("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${ea} command_tag='${ya}' LOOP ${P("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");await h("EVENT ",Ta(t,"c",_),`ON ddl_command_end WHEN TAG IN('${ya}')`,e);const n=await D("d",P("'d:'||TG_TABLE_NAME")+"RETURN NULL;");return await N(p(C(L),(async a=>(await R(ya+` IF NOT EXISTS${Aa(a)}("_id"text PRIMARY KEY)`),await M(a,n))))),[await r(f,(t=>{return w((e=t,s=ka,e?.match(s)),(async([,t,e])=>{m(L,e)&&("c:"==t&&await M(e,n),a())}));var e,s})),[e,n]]}),(async([a,t])=>{c(a),await R(`DROP FUNCTION IF EXISTS${$(t,",")}CASCADE`)}),y,E,A,S,C(L),(async(a,t)=>await a(ta+` table_name tn,column_name cn FROM information_schema.columns ${ea} table_schema='public'AND table_name IN(${ga(t)})`,t)),T,O,"text",void 0,(a=>X(a)),(a=>Y(a)))},za=async(a,t,e,n,s)=>{const i=await(t.reserve?.());return qa(a,e,i?.unsafe,(async(a,e)=>t.listen(a,e)),(a=>T(a.unlisten,s)),n,s,(()=>i?.release?.()),3,t,"getSql")};export{za as createPostgresPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),o=Promise,r=clearInterval,i=a=>null==a,c=(a,t,e)=>i(a)?e?.():t(a),l=t=>a(t)==s,w=a=>Array.isArray(a),y=(a,t,e)=>a.slice(t,e),u=a=>a.length,d=async a=>o.all(a),E=a=>{throw Error(a)},v=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),A=a=>0==u(a),h=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),f=a=>a.shift(),m=(a,t)=>a?.has(t)??!1,S=a=>i(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),$=(a,t)=>a?.delete(t),O=Object,b=a=>O.getPrototypeOf(a),I=O.entries,L=O.keys,R=O.freeze,D=(a=[])=>O.fromEntries(a),M=(...a)=>O.assign({},...a),_=(a,t)=>(delete a[t],a),P=(a,t)=>p(I(a),(([a,e])=>t(e,a))),F=(a,t)=>D(P(a,((a,e)=>[e,t(a,e)]))),U=a=>O.values(a),j=a=>u(L(a)),x=a=>(a=>!i(a)&&c(b(a),(a=>a==O.prototype||i(b(a))),(()=>!0)))(a)&&0==j(a),B=a=>new Set(w(a)||i(a)?a:[a]),H=(a,t)=>a?.add(t),J="_",Y="_id",k="SELECT",z="WHERE",G="TABLE",V="ALTER "+G,W="DELETE FROM",K=k+"*FROM",Q="pragma_",X="data_version",q="schema_version",Z="pragma_table_",aa=a=>`"${a.replace(/"/g,'""')}"`,ta=(...a)=>g(p(a,aa),n),ea=(a,t=[1])=>g(p(a,(()=>"$"+t[0]++)),n),na=a=>new Map(a),sa=(a,t)=>a?.get(t),oa=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),ra=(a,t,e)=>i(e)?($(a,t),a):a?.set(t,e),ia=(a,t,e,n)=>(m(a,t)?n?.(sa(a,t)):ra(a,t,e()),sa(a,t)),ca=(a,t,e,n,s=0)=>c((e?ia:sa)(a,t[s],s>u(t)-2?e:na),(o=>{if(s>u(t)-2)return n?.(o)&&ra(a,t[s]),o;const r=ca(o,t,e,n,s+1);return S(o)&&ra(a,t[s]),r})),la="ColumnName",wa="store",ya="json",ua=wa+"TableName",da=wa+"Id"+la,Ea=wa+la,va="autoLoadIntervalSeconds",ga="rowId"+la,pa="tableId",Aa="tableName",ha="deleteEmptyColumns",Na="deleteEmptyTable",fa={mode:ya,[va]:1},ma={load:0,save:0,[Aa]:t+"_values"},Sa=(a,t,e,n,s)=>{const o=na();return F(a,((a,r)=>{const c=y(U(M(t,l(a)?{[e]:a}:a)),0,j(t));i(c[0])||n(r,c[0])||(s(r,c[0]),ra(o,r,c))})),o},Ta=JSON.stringify,Ca=JSON.parse,$a=/^\d+$/,Oa=na(),ba=na(),Ia=(a,t,n,s,o,r,l,y={},d=0,g=[])=>{let p,A,h,m=0,T=0,O=0;ia(Oa,g,(()=>0)),ia(ba,g,(()=>[]));const b=na(),[I,L,D,M,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!x(a)||!x(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!x(a)||!x(t),t.setContent]:E("Store type not supported by this Persister"))(l,a,d),[P,F,U]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?f(a):null)??e+t++,t=>{$a.test(t)&&u(a)<1e3&&N(a,t)}]})(),s=na();return[(n,o,r,i=[],c=()=>[])=>{a??=W;const l=t(1);return ra(s,l,[n,o,r,i,c]),H(ca(o,r??[e],B),l),l},(t,n,...o)=>v(((a,t=[e])=>{const n=[],s=(a,e)=>e==u(t)?N(n,a):null===t[e]?C(a,(a=>s(a,e+1))):v([t[e],null],(t=>s(sa(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>sa(s,t)[0](a,...n??[],...o))))),a=>c(sa(s,a),(([,t,o])=>(ca(t,o??[e],void 0,(t=>($(t,a),S(t)?1:0))),ra(s,a),n(a),o))),t=>c(sa(s,t),(([t,,e=[],n,s])=>{const o=(...r)=>{const c=u(r);c==u(e)?t(a,...r,...s(r)):i(e[c])?v(n[c]?.(...r)??[],(a=>o(...r,a))):o(...r,e[c])};o()}))]})(),j=a=>{a!=m&&(m=a,F(b,void 0,m))},J=t=>{(I&&w(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},Y=async a=>(2!=m&&(j(1),T++,await V((async()=>{try{const e=await t();w(e)?J(e):a?_(a):E("Content is not an array: "+e)}catch(t){r?.(t),a&&_(a)}j(0)}))),W),k=()=>(A&&(o(A),A=void 0),W),z=async a=>(1!=m&&(j(2),O++,await V((async()=>{try{await n(L,a)}catch(a){r?.(a)}j(0)}))),W),G=()=>(h&&(a.delListener(h),h=void 0),W),V=async(...a)=>(N(sa(ba,g),...a),await(async()=>{if(!sa(Oa,g)){for(ra(Oa,g,1);!i(p=f(sa(ba,g)));)try{await p()}catch(a){r?.(a)}ra(Oa,g,0)}})(),W),W={load:Y,startAutoLoad:async a=>{k(),await Y(a);try{A=await s((async(a,t)=>{t||a?2!=m&&(j(1),T++,J(t??a),j(0)):await Y()}))}catch(a){r?.(a)}return W},stopAutoLoad:k,isAutoLoading:()=>!i(A),save:z,startAutoSave:async()=>(G(),await z(),h=a.addDidFinishTransactionListener((()=>{const a=D();M(a)&&z(a)})),W),stopAutoSave:G,isAutoSaving:()=>!i(h),getStatus:()=>m,addStatusListener:a=>P(a,b),delListener:t=>(U(t),a),schedule:V,getStore:()=>a,destroy:()=>(sa(ba,g).splice(0,void 0),k().stopAutoSave()),getStats:()=>({loads:T,saves:O}),...y};return R(W)},La=(a,t,e,s,o,r=Ra,c,l)=>{const w=na();return[async()=>{w.clear(),p(await e(a,t),(({tn:a,cn:t})=>H(ia(w,a,B),t)))},async(t,e)=>((a,t)=>m(sa(w,a),t))(t,e)?D(h(p(await a(K+aa(t)),(a=>[a[e],l?F(_(a,e),l):_(a,e)])),(([a,t])=>!i(a)&&!x(t)))):{},async(t,e,s,l,y,u=!1)=>{const E=B();F(s??{},(a=>p(L(a??{}),(a=>H(E,a)))));const v=T(E);if(!u&&y&&A(v)&&m(w,t))return await a("DROP "+G+aa(t)),void ra(w,t);const f=sa(w,t),S=B(T(f));if(A(v)||(m(w,t)?await d(p([e,...v],(async(n,s)=>{$(S,n)||(await a(V+aa(t)+"ADD"+aa(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+aa(t)+`(${aa(e)})`),H(f,n))}))):(await a("CREATE "+G+aa(t)+`(${aa(e)}${o} PRIMARY KEY${g(p(v,(a=>n+aa(a)+o)))});`),ra(w,t,B([e,...v])))),await d([...!u&&l?p(T(S),(async n=>{n!=e&&(await a(V+aa(t)+"DROP"+aa(n)),$(f,n))})):[]]),u)i(s)?await a(W+aa(t)+z+" true"):await d(P(s,(async(n,s)=>{i(n)?await a(W+aa(t)+z+aa(e)+"=$1",[s]):A(v)||await r(a,t,e,L(n),{[s]:c?p(U(n),c):U(n)},f)})));else if(A(v))m(w,t)&&await a(W+aa(t)+z+" true");else{const n=h(T(sa(w,t)),(a=>a!=e)),o={},i=[];F(s??{},((a,t)=>{o[t]=p(n,(t=>c?c(a?.[t]):a?.[t])),N(i,t)})),await r(a,t,e,n,o),await a(W+aa(t)+z+aa(e)+`NOT IN(${ea(i)})`,i)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},Ra=async(a,t,e,s,o)=>{const r=[1];await a("INSERT INTO"+aa(t)+"("+ta(e,...s)+")VALUES"+g(P(o,(a=>"($"+r[0]+++","+ea(a,r)+")")),n)+"ON CONFLICT("+aa(e)+")DO UPDATE SET"+g(p(s,(a=>aa(a)+"=excluded."+aa(a))),n),P(o,((a,t)=>[t,...p(a,(a=>a??null))])).flat())},Da=(a,t,e,n,s,o,r,[i,c,l],w,y,u,d,E,v)=>{const[g,p,A,h]=La(t,w,y,s,E,v),N=Ia(a,(async()=>await h((async()=>{return await g(),a=(await p(i,c))[J]?.[l]??"null",Ca(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await h((async()=>{var t;await g(),await A(i,c,{[J]:{[l]:(t=a()??null,Ta(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,r,{[d]:()=>u,destroy:()=>(N.stopAutoLoad().stopAutoSave(),o(),N)},0,u);return N},Ma=(a,t,e,n,s,o,r,[c,l,[w,y,u]],E,v,g,p,A,N,f,m)=>{const[S,T,C,$]=La(t,E,v,s,A,N,f,m),O=async(a,t)=>await d(oa(l,(async([e,n,s,o],r)=>{t&&!(r in a)||await C(e,n,a[r],s,o,t)}))),b=async(a,t)=>y?await C(u,Y,{[J]:a},!0,!0,t):null,I=Ia(a,(async()=>await $((async()=>{await S();const a=await(async()=>D(h(await d(oa(c,(async([a,t],e)=>[a,await T(e,t)]))),(a=>!x(a[1])))))(),t=await(async()=>w?(await T(u,Y))[J]:{})();return x(a)&&i(t)?void 0:[a,t]}))),(async(a,t)=>await $((async()=>{if(await S(),i(t)){const[t,e]=a();await O(t),await b(e)}else await O(t[0],!0),await b(t[1],!0)}))),e,n,s,r,{[p]:()=>g,destroy:()=>(I.stopAutoLoad().stopAutoSave(),o(),I)},0,g);return I},_a=(a,n,s,o,i,c,w,u,d,E,v="getDb",g)=>{let p,A,h;const N=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[f,S,C,$]=(a=>{const e=(a=>M(fa,l(a)?{[ua]:a}:a??{}))(a),n=e[va];if(e.mode==ya){const a=e[ua]??t;return[1,n,[a,e[da]??Y,e[Ea]??wa],B(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,i=y(U(M(ma,r)),0,j(ma)),c=i[2],w=B(c),u=B(c);return[0,n,[Sa(s,{[pa]:null,[ga]:Y},pa,(a=>m(u,a)),(a=>H(w,a))),Sa(o,{[Aa]:null,[ga]:Y,[ha]:0,[Na]:0},Aa,((a,t)=>m(u,t)),((a,t)=>H(w,t))),i],w]})(n);return(f?Da:Ma)(a,N,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await N(`${k} ${X} d,${q} s,TOTAL_CHANGES() c FROM ${Q}${X} JOIN ${Q}${q}`);t==p&&e==A&&n==h||(null!=p&&a(),p=t,A=e,h=n)}catch{}}),1e3*S),n=()=>{p=A=h=null,r(t)},s=o((t=>{$.has(t)&&(n(),a(),e())}));return e(),()=>{n(),i(s)}}),(a=>a()),w,u,d,C,T($),(async(a,t)=>await a(`${k} t.name tn,c.name cn FROM ${Z}list()t,${Z}info(t.name)c ${z} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ea(t)})ORDER BY t.name,c.name`,t)),E,v,e,g,(a=>!0===a?1:!1===a?0:a),void 0)},Pa=(a,t,e,n,s)=>{let o;return _a(a,e,(async(a,e=[])=>t.execute(a,e).then((a=>a.rows?._array??[]))),(a=>{const e=new AbortController,n=t.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const a of n)o&&p(a.changedTables,o)})(),o=a,e}),(a=>{o=void 0,a.abort()}),n,s,(()=>0),1,t,"getPowerSync",Fa)},Fa=async(a,t,e,s,o,r)=>{const i=[1],c=B(s),l=r?h([...r],(a=>a!=e&&!m(c,a))):[];if(!A(l)){const n=L(o),s=D(p(await a("SELECT"+ta(e,...l)+"FROM"+aa(t)+"WHERE"+aa(e)+"IN("+ea(n)+")",n),(a=>[a[e],a])));v(n,(a=>N(o[a],...p(l,(t=>s?.[a]?.[t]??null)))))}await a("INSERT OR REPLACE INTO"+aa(t)+"("+ta(e,...s,...l)+")VALUES"+g(P(o,(a=>"($"+i[0]+++","+ea(a,i)+")")),n),P(o,((a,t)=>[t,...p(a,(a=>a??null))])).flat())};export{Pa as createPowerSyncPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),o="true",i=(a,t,e)=>a.replace(t,e),r=Promise,c=clearInterval,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),u=t=>a(t)==s,y=a=>Array.isArray(a),d=(a,t,e)=>a.slice(t,e),v=a=>a.length,E=()=>{},g=async a=>r.all(a),p=a=>{throw Error(a)},A=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},N=(a,t)=>a.forEach(t),m=(a,t="")=>a.join(t),$=(a,t)=>a.map(t),f=a=>0==v(a),C=(a,t)=>a.filter(t),S=(a,...t)=>a.push(...t),T=a=>a.shift(),b=(a,t)=>a?.has(t)??!1,h=a=>l(a)||0==(a=>a?.size??0)(a),L=a=>[...a?.values()??[]],O=(a,t)=>a?.forEach(t),I=(a,t)=>a?.delete(t),D=Object,R=a=>D.getPrototypeOf(a),M=D.entries,_=D.keys,P=D.freeze,F=(a=[])=>D.fromEntries(a),U=(...a)=>D.assign({},...a),j=(a,t)=>(delete a[t],a),x=(a,t)=>$(M(a),(([a,e])=>t(e,a))),B=(a,t)=>F(x(a,((a,e)=>[e,t(a,e)]))),J=a=>D.values(a),Y=a=>v(_(a)),k=a=>(a=>!l(a)&&w(R(a),(a=>a==D.prototype||l(R(a))),(()=>!0)))(a)&&0==Y(a),z=a=>new Set(y(a)||l(a)?a:[a]),G=(a,t)=>a?.add(t),H="_",V="_id",K="SELECT",Q="WHERE",W="TABLE",X="INSERT",q="ALTER "+W,Z="FROM",aa="DELETE "+Z,ta=K+"*"+Z,ea="pragma_",na="data_version",sa="schema_version",oa="pragma_table_",ia="CREATE "+W,ra=a=>`"${i(a,/"/g,'""')}"`,ca=(...a)=>m($(a,ra),n),la=(a,t=[1])=>m($(a,(()=>"$"+t[0]++)),n),wa=(a,t=o)=>Q+`(${i(t,"$tableName",ra(a))})`,ua=a=>new Map(a),ya=(a,t)=>a?.get(t),da=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),va=(a,t,e)=>l(e)?(I(a,t),a):a?.set(t,e),Ea=(a,t,e,n)=>(b(a,t)?n?.(ya(a,t)):va(a,t,e()),ya(a,t)),ga=(a,t,e,n,s=0)=>w((e?Ea:ya)(a,t[s],s>v(t)-2?e:ua),(o=>{if(s>v(t)-2)return n?.(o)&&va(a,t[s]),o;const i=ga(o,t,e,n,s+1);return h(o)&&va(a,t[s]),i})),pa="ColumnName",Aa="store",Na="json",ma=Aa+"TableName",$a=Aa+"Id"+pa,fa=Aa+pa,Ca="autoLoadIntervalSeconds",Sa="rowId"+pa,Ta="tableId",ba="tableName",ha="deleteEmptyColumns",La="deleteEmptyTable",Oa="condition",Ia={mode:Na,[Ca]:1},Da={load:0,save:0,[ba]:t+"_values"},Ra=(a,t,e,n,s)=>{const o=ua();return B(a,((a,i)=>{const r=d(J(U(t,u(a)?{[e]:a}:a)),0,Y(t));l(r[0])||n(i,r[0])||(s(i,r[0]),va(o,i,r))})),o},Ma=JSON.stringify,_a=JSON.parse,Pa=/^\d+$/,Fa=ua(),Ua=ua(),ja=(a,t,n,s,o,i,r,c={},u=0,d=[])=>{let E,g,m,$=0,f=0,C=0;Ea(Fa,d,(()=>0)),Ea(Ua,d,(()=>[]));const b=ua(),[L,D,R,M,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!k(a)||!k(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!k(a)||!k(t),t.setContent]:p("Store type not supported by this Persister"))(r,a,u),[F,U,j]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?T(a):null)??e+t++,t=>{Pa.test(t)&&v(a)<1e3&&S(a,t)}]})(),s=ua();return[(n,o,i,r=[],c=()=>[])=>{a??=Q;const l=t(1);return va(s,l,[n,o,i,r,c]),G(ga(o,i??[e],z),l),l},(t,n,...o)=>N(((a,t=[e])=>{const n=[],s=(a,e)=>e==v(t)?S(n,a):null===t[e]?O(a,(a=>s(a,e+1))):N([t[e],null],(t=>s(ya(a,t),e+1)));return s(a,0),n})(t,n),(t=>O(t,(t=>ya(s,t)[0](a,...n??[],...o))))),a=>w(ya(s,a),(([,t,o])=>(ga(t,o??[e],void 0,(t=>(I(t,a),h(t)?1:0))),va(s,a),n(a),o))),t=>w(ya(s,t),(([t,,e=[],n,s])=>{const o=(...i)=>{const r=v(i);r==v(e)?t(a,...i,...s(i)):l(e[r])?N(n[r]?.(...i)??[],(a=>o(...i,a))):o(...i,e[r])};o()}))]})(),x=a=>{a!=$&&($=a,U(b,void 0,$))},B=t=>{(L&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},J=async a=>(2!=$&&(x(1),f++,await K((async()=>{await A((async()=>{const e=await t();y(e)?B(e):a?_(a):p("Content is not an array: "+e)}),(()=>{a&&_(a)})),x(0)}))),Q),Y=async()=>(g&&(await A((()=>o(g)),i),g=void 0),Q),H=async a=>(1!=$&&(x(2),C++,await K((async()=>{await A((()=>n(D,a)),i),x(0)}))),Q),V=async()=>(m&&(a.delListener(m),m=void 0),Q),K=async(...a)=>(S(ya(Ua,d),...a),await(async()=>{if(!ya(Fa,d)){for(va(Fa,d,1);!l(E=T(ya(Ua,d)));)await A(E,i);va(Fa,d,0)}})(),Q),Q={load:J,startAutoLoad:async a=>(Y(),await J(a),await A((async()=>g=await s((async(a,t)=>{t||a?2!=$&&(x(1),f++,B(t??a),x(0)):await J()}))),i),Q),stopAutoLoad:Y,isAutoLoading:()=>!l(g),save:H,startAutoSave:async()=>(V(),await H(),m=a.addDidFinishTransactionListener((()=>{const a=R();M(a)&&H(a)})),Q),stopAutoSave:V,isAutoSaving:()=>!l(m),getStatus:()=>$,addStatusListener:a=>F(a,b),delListener:t=>(j(t),a),schedule:K,getStore:()=>a,destroy:async()=>(ya(Ua,d).splice(0,void 0),await Q.stopAutoLoad(),await Q.stopAutoSave()),getStats:()=>({loads:f,saves:C}),...c};return P(Q)},xa=(a,t,e,s,i,r=Ba,c,w)=>{const u=ua();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>G(Ea(u,a,z),t)))},async(t,e,n)=>((a,t)=>b(ya(u,a),t))(t,e)?F(C($(await a(ta+ra(t)+wa(t,n)),(a=>[a[e],w?B(j(a,e),w):j(a,e)])),(([a,t])=>!l(a)&&!k(t)))):{},async(t,e,s,w,y,d=!1,v=o)=>{const E=z();B(s??{},(a=>$(_(a??{}),(a=>G(E,a)))));const p=L(E);if(!d&&y&&v==o&&f(p)&&b(u,t))return await a("DROP "+W+ra(t)),void va(u,t);const A=ya(u,t),N=z(L(A));if(f(p)||(b(u,t)?await g($([e,...p],(async(n,s)=>{I(N,n)||(await a(q+ra(t)+"ADD"+ra(n)+i),0==s&&await a("CREATE UNIQUE INDEX pk ON "+ra(t)+`(${ra(e)})`),G(A,n))}))):(await a(ia+ra(t)+`(${ra(e)}${i} PRIMARY KEY${m($(p,(a=>n+ra(a)+i)))});`),va(u,t,z([e,...p])))),await g([...!d&&w?$(L(N),(async n=>{n!=e&&(await a(q+ra(t)+"DROP"+ra(n)),I(A,n))})):[]]),d)l(s)?await a(aa+ra(t)+wa(t,v)):await g(x(s,(async(n,s)=>{l(n)?await a(aa+ra(t)+wa(t,v)+`AND(${ra(e)}=$1)`,[s]):f(p)||await r(a,t,e,_(n),{[s]:c?$(J(n),c):J(n)},A)})));else if(f(p))b(u,t)&&await a(aa+ra(t)+wa(t,v));else{const n=C(L(ya(u,t)),(a=>a!=e)),o={},i=[];B(s??{},((a,t)=>{o[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),S(i,t)})),await r(a,t,e,n,o),await a(aa+ra(t)+wa(t,v)+`AND${ra(e)}NOT IN(${la(i)})`,i)}},async t=>{let e;return await a("BEGIN"),await A((async()=>e=await t()),s),await a("END"),e}]},Ba=async(a,t,e,s,o)=>{const i=[1];await a(X+" INTO"+ra(t)+"("+ca(e,...s)+")VALUES"+m(x(o,(a=>"($"+i[0]+++","+la(a,i)+")")),n)+"ON CONFLICT("+ra(e)+")DO UPDATE SET"+m($(s,(a=>ra(a)+"=excluded."+ra(a))),n),x(o,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ja=(a,t,e,n,s,o,i,[r,c,l],w,u,y,d,v,E)=>{const[g,p,A,N]=xa(t,w,u,s,v,E),m=ja(a,(()=>N((async()=>{return await g(),a=(await p(r,c))[H]?.[l]??"null",_a(a,((a,t)=>""===t?void 0:t));var a}))),(a=>N((async()=>{var t;await g(),await A(r,c,{[H]:{[l]:(t=a()??null,Ma(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[d]:()=>y,destroy:async()=>(await m.stopAutoLoad(),await m.stopAutoSave(),o(),m)},0,y);return m},Ya=(a,t,e,n,s,o,i,[r,c,[w,u,y]],d,v,E,p,A,N,m,$)=>{const[f,S,T,b]=xa(t,d,v,s,A,N,m,$),h=(a,t)=>g(da(c,(async([e,n,s,o,i],r)=>{t&&!(r in a)||await T(e,n,a[r],s,o,t,i)}))),L=async(a,t)=>u?await T(y,V,{[H]:a},!0,!0,t):null,O=ja(a,(()=>b((async()=>{await f();const a=await(async()=>F(C(await g(da(r,(async([a,t,e],n)=>[a,await S(n,t,e)]))),(a=>!k(a[1])))))(),t=await(async()=>w?(await S(y,V))[H]:{})();return k(a)&&l(t)?void 0:[a,t]}))),((a,t)=>b((async()=>{if(await f(),l(t)){const[t,e]=a();await h(t),await L(e)}else await h(t[0],!0),await L(t[1],!0)}))),e,n,s,i,{[p]:()=>E,destroy:async()=>(await O.stopAutoLoad(),await O.stopAutoSave(),o(),O)},0,E);return O},ka=(a,n,s,i,r,l,w,y,v,E,g="getDb",p)=>{let N,m,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[C,S,T,h]=(a=>{const e=(a=>U(Ia,u(a)?{[ma]:a}:a??{}))(a),n=e[Ca];if(e.mode==Na){const a=e[ma]??t;return[1,n,[a,e[$a]??V,e[fa]??Aa],z(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=d(J(U(Da,r)),0,Y(Da)),l=c[2],w=z(l),y=z(l),v=Ra(s,{[Ta]:null,[Sa]:V,[Oa]:o},Ta,(a=>b(y,a)),(a=>G(w,a))),E=Ra(i,{[ba]:null,[Sa]:V,[ha]:0,[La]:0,[Oa]:null},ba,((a,t)=>b(y,t)),((a,t)=>G(w,t)));var g;return g=(a,t)=>t[4]??=ya(v,t[0])?.[2]??o,O(E,((a,t)=>g(0,a))),[0,n,[v,E,c],w]})(n);return(C?Ja:Ya)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>A((async()=>{const[{d:t,s:e,c:n}]=await f(K+` ${na} d,${sa} s,TOTAL_CHANGES() c FROM ${ea}${na} JOIN ${ea}${sa}`);t==N&&e==m&&n==$||(null!=N&&a(),N=t,m=e,$=n)}))),1e3*S),n=()=>{N=m=$=null,c(t)},s=i((t=>{h.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,v,T,L(h),(async(a,t)=>await a(K+` t.name tn,c.name cn FROM ${oa}list()t,${oa}info(t.name)c ${Q} t.schema='main'AND t.type IN('table','view')AND t.name IN(${la(t)})ORDER BY t.name,c.name`,t)),E,g,e,p,(a=>!0===a?1:!1===a?0:a),void 0)},za=(a,t,e,n,s)=>{let o;return ka(a,e,(async(a,e=[])=>t.execute(a,e).then((a=>a.rows?._array??[]))),(a=>{const e=new AbortController,n=t.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const a of n)o&&$(a.changedTables,o)})(),o=a,e}),(a=>{o=void 0,a.abort()}),n,s,E,1,t,"getPowerSync",Ga)},Ga=async(a,t,e,s,o,i)=>{const r=[1],c=z(s),l=i?C([...i],(a=>a!=e&&!b(c,a))):[];if(!f(l)){const n=_(o),s=F($(await a(K+ca(e,...l)+Z+ra(t)+Q+ra(e)+"IN("+la(n)+")",n),(a=>[a[e],a])));N(n,(a=>S(o[a],...$(l,(t=>s?.[a]?.[t]??null)))))}await a(X+" OR REPLACE INTO"+ra(t)+"("+ca(e,...s,...l)+")VALUES"+m(x(o,(a=>"($"+r[0]+++","+la(a,r)+")")),n),x(o,((a,t)=>[t,...$(a,(a=>a??null))])).flat())};export{za as createPowerSyncPersister};