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 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};
@@ -1 +1 @@
1
- const t=clearInterval,e=t=>null==t,a=(t,a,n)=>e(t)?n?.():a(t),n=t=>Array.isArray(t),s=t=>t.length,r=t=>{throw Error(t)},o=(t,e)=>t.forEach(e),i=(t,...e)=>t.push(...e),c=t=>t.shift(),l=Object,y=t=>l.getPrototypeOf(t),d=l.keys,u=l.freeze,g=t=>(t=>!e(t)&&a(y(t),(t=>t==l.prototype||e(y(t))),(()=>!0)))(t)&&0==(t=>s(d(t)))(t),h=JSON.stringify,p=JSON.parse,w=t=>e(t)||0==(t=>t?.size??0)(t),v=(t,e)=>t?.forEach(e),f=(t,e)=>t?.delete(e),S=t=>new Map(t),C=(t,e)=>t?.get(e),A=(t,a,n)=>e(n)?(f(t,a),t):t?.set(a,n),b=(t,e,a,n)=>{var s,r;return s=t,r=e,s?.has(r)?n?.(C(t,e)):A(t,e,a()),C(t,e)},L=(t,e,n,r,o=0)=>a((n?b:C)(t,e[o],o>s(e)-2?n:S),(a=>{if(o>s(e)-2)return r?.(a)&&A(t,e[o]),a;const i=L(a,e,n,r,o+1);return w(a)&&A(t,e[o]),i})),M=/^\d+$/,E=t=>new Set(n(t)||e(t)?t:[t]),T=S(),O=S(),m=(t,l,y,d,h,p,m,D={},P=0,j=[])=>{let x,z,I,J=0,N=0,k=0;b(T,j,(()=>0)),b(O,j,(()=>[]));const F=S(),[H,U,$,q,B]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!g(t)||!g(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!g(t)||!g(e),e.setContent]:r("Store type not supported by this Persister"))(m,t,P),[G,K,Q]=(()=>{let t;const[n,r]=(()=>{const t=[];let e=0;return[a=>(a?c(t):null)??""+e++,e=>{M.test(e)&&s(t)<1e3&&i(t,e)}]})(),l=S();return[(e,a,s,r=[],o=()=>[])=>{t??=tt;const i=n(1);var c,y;return A(l,i,[e,a,s,r,o]),c=L(a,s??[""],E),y=i,c?.add(y),i},(e,a,...n)=>o(((t,e=[""])=>{const a=[],n=(t,r)=>r==s(e)?i(a,t):null===e[r]?v(t,(t=>n(t,r+1))):o([e[r],null],(e=>n(C(t,e),r+1)));return n(t,0),a})(e,a),(e=>v(e,(e=>C(l,e)[0](t,...a??[],...n))))),t=>a(C(l,t),(([,e,a])=>(L(e,a??[""],void 0,(e=>(f(e,t),w(e)?1:0))),A(l,t),r(t),a))),n=>a(C(l,n),(([a,,n=[],r,i])=>{const c=(...l)=>{const y=s(l);y==s(n)?a(t,...l,...i(l)):e(n[y])?o(r[y]?.(...l)??[],(t=>c(...l,t))):c(...l,n[y])};c()}))]})(),R=t=>{t!=J&&(J=t,K(F,void 0,J))},V=e=>{(H&&n(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},W=async t=>(2!=J&&(R(1),N++,await _((async()=>{try{const e=await l();n(e)?V(e):t?B(t):r("Content is not an array: "+e)}catch(e){p?.(e),t&&B(t)}R(0)}))),tt),X=()=>(z&&(h(z),z=void 0),tt),Y=async t=>(1!=J&&(R(2),k++,await _((async()=>{try{await y(U,t)}catch(t){p?.(t)}R(0)}))),tt),Z=()=>(I&&(t.delListener(I),I=void 0),tt),_=async(...t)=>(i(C(O,j),...t),await(async()=>{if(!C(T,j)){for(A(T,j,1);!e(x=c(C(O,j)));)try{await x()}catch(t){p?.(t)}A(T,j,0)}})(),tt),tt={load:W,startAutoLoad:async t=>{X(),await W(t);try{z=await d((async(t,e)=>{e||t?2!=J&&(R(1),N++,V(e??t),R(0)):await W()}))}catch(t){p?.(t)}return tt},stopAutoLoad:X,isAutoLoading:()=>!e(z),save:Y,startAutoSave:async()=>(Z(),await Y(),I=t.addDidFinishTransactionListener((()=>{const t=$();q(t)&&Y(t)})),tt),stopAutoSave:Z,isAutoSaving:()=>!e(I),getStatus:()=>J,addStatusListener:t=>G(t,F),delListener:e=>(Q(e),t),schedule:_,getStore:()=>t,destroy:()=>(C(O,j).splice(0,void 0),X().stopAutoSave()),getStats:()=>({loads:N,saves:k}),...D};return u(tt)},D=t=>t.headers.get("ETag"),P=(a,n,s,r=5,o)=>{let i;return m(a,(async()=>{const t=await fetch(n);return i=D(t),p(await t.text())}),(async t=>{return await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),h(e,((t,e)=>e instanceof Map?l.fromEntries([...e]):e)))});var e}),(t=>setInterval((async()=>{const a=await fetch(n,{method:"HEAD"}),s=D(a);e(i)||e(s)||s==i||(i=s,t())}),1e3*r)),(e=>t(e)),o,1,{getUrls:()=>[n,s]})};export{P as createRemotePersister};
1
+ const t=clearInterval,e=t=>null==t,a=(t,a,n)=>e(t)?n?.():a(t),n=t=>Array.isArray(t),s=t=>t.length,r=t=>{throw Error(t)},o=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},i=(t,e)=>t.forEach(e),c=(t,...e)=>t.push(...e),l=t=>t.shift(),y=Object,d=t=>y.getPrototypeOf(t),u=y.keys,g=y.freeze,p=t=>(t=>!e(t)&&a(d(t),(t=>t==y.prototype||e(d(t))),(()=>!0)))(t)&&0==(t=>s(u(t)))(t),w=JSON.stringify,h=JSON.parse,v=t=>e(t)||0==(t=>t?.size??0)(t),f=(t,e)=>t?.forEach(e),S=(t,e)=>t?.delete(e),C=t=>new Map(t),A=(t,e)=>t?.get(e),b=(t,a,n)=>e(n)?(S(t,a),t):t?.set(a,n),L=(t,e,a,n)=>{var s,r;return s=t,r=e,s?.has(r)?n?.(A(t,e)):b(t,e,a()),A(t,e)},M=(t,e,n,r,o=0)=>a((n?L:A)(t,e[o],o>s(e)-2?n:C),(a=>{if(o>s(e)-2)return r?.(a)&&b(t,e[o]),a;const i=M(a,e,n,r,o+1);return v(a)&&b(t,e[o]),i})),E=/^\d+$/,T=t=>new Set(n(t)||e(t)?t:[t]),O=C(),m=C(),D=(t,y,d,u,w,h,D,P={},j=0,x=[])=>{let z,I,J,N=0,k=0,F=0;L(O,x,(()=>0)),L(m,x,(()=>[]));const H=C(),[U,$,q,B,G]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!p(t)||!p(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!p(t)||!p(e),e.setContent]:r("Store type not supported by this Persister"))(D,t,j),[K,Q,R]=(()=>{let t;const[n,r]=(()=>{const t=[];let e=0;return[a=>(a?l(t):null)??""+e++,e=>{E.test(e)&&s(t)<1e3&&c(t,e)}]})(),o=C();return[(e,a,s,r=[],i=()=>[])=>{t??=et;const c=n(1);var l,y;return b(o,c,[e,a,s,r,i]),l=M(a,s??[""],T),y=c,l?.add(y),c},(e,a,...n)=>i(((t,e=[""])=>{const a=[],n=(t,r)=>r==s(e)?c(a,t):null===e[r]?f(t,(t=>n(t,r+1))):i([e[r],null],(e=>n(A(t,e),r+1)));return n(t,0),a})(e,a),(e=>f(e,(e=>A(o,e)[0](t,...a??[],...n))))),t=>a(A(o,t),(([,e,a])=>(M(e,a??[""],void 0,(e=>(S(e,t),v(e)?1:0))),b(o,t),r(t),a))),n=>a(A(o,n),(([a,,n=[],r,o])=>{const c=(...l)=>{const y=s(l);y==s(n)?a(t,...l,...o(l)):e(n[y])?i(r[y]?.(...l)??[],(t=>c(...l,t))):c(...l,n[y])};c()}))]})(),V=t=>{t!=N&&(N=t,Q(H,void 0,N))},W=e=>{(U&&n(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async t=>(2!=N&&(V(1),k++,await tt((async()=>{await o((async()=>{const e=await y();n(e)?W(e):t?G(t):r("Content is not an array: "+e)}),(()=>{t&&G(t)})),V(0)}))),et),Y=async()=>(I&&(await o((()=>w(I)),h),I=void 0),et),Z=async t=>(1!=N&&(V(2),F++,await tt((async()=>{await o((()=>d($,t)),h),V(0)}))),et),_=async()=>(J&&(t.delListener(J),J=void 0),et),tt=async(...t)=>(c(A(m,x),...t),await(async()=>{if(!A(O,x)){for(b(O,x,1);!e(z=l(A(m,x)));)await o(z,h);b(O,x,0)}})(),et),et={load:X,startAutoLoad:async t=>(Y(),await X(t),await o((async()=>I=await u((async(t,e)=>{e||t?2!=N&&(V(1),k++,W(e??t),V(0)):await X()}))),h),et),stopAutoLoad:Y,isAutoLoading:()=>!e(I),save:Z,startAutoSave:async()=>(_(),await Z(),J=t.addDidFinishTransactionListener((()=>{const t=q();B(t)&&Z(t)})),et),stopAutoSave:_,isAutoSaving:()=>!e(J),getStatus:()=>N,addStatusListener:t=>K(t,H),delListener:e=>(R(e),t),schedule:tt,getStore:()=>t,destroy:async()=>(A(m,x).splice(0,void 0),await et.stopAutoLoad(),await et.stopAutoSave()),getStats:()=>({loads:k,saves:F}),...P};return g(et)},P=t=>t.headers.get("ETag"),j=(a,n,s,r=5,o)=>{let i;return D(a,(async()=>{const t=await fetch(n);return i=P(t),h(await t.text())}),(async t=>{return await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),w(e,((t,e)=>e instanceof Map?y.fromEntries([...e]):e)))});var e}),(t=>setInterval((async()=>{const a=await fetch(n,{method:"HEAD"}),s=P(a);e(i)||e(s)||s==i||(i=s,t())}),1e3*r)),(e=>t(e)),o,1,{getUrls:()=>[n,s]})};export{j as createRemotePersister};
@@ -1 +1 @@
1
- const t=clearInterval,e=t=>null==t,a=(t,a,n)=>e(t)?n?.():a(t),n=t=>Array.isArray(t),s=t=>t.length,r=t=>{throw Error(t)},o=(t,e)=>t.forEach(e),i=(t,...e)=>t.push(...e),c=t=>t.shift(),l=Object,y=t=>l.getPrototypeOf(t),d=l.keys,u=l.freeze,g=t=>(t=>!e(t)&&a(y(t),(t=>t==l.prototype||e(y(t))),(()=>!0)))(t)&&0==(t=>s(d(t)))(t),h=JSON.stringify,p=JSON.parse,w=t=>e(t)||0==(t=>t?.size??0)(t),v=(t,e)=>t?.forEach(e),f=(t,e)=>t?.delete(e),S=t=>new Map(t),C=(t,e)=>t?.get(e),A=(t,a,n)=>e(n)?(f(t,a),t):t?.set(a,n),b=(t,e,a,n)=>{var s,r;return s=t,r=e,s?.has(r)?n?.(C(t,e)):A(t,e,a()),C(t,e)},L=(t,e,n,r,o=0)=>a((n?b:C)(t,e[o],o>s(e)-2?n:S),(a=>{if(o>s(e)-2)return r?.(a)&&A(t,e[o]),a;const i=L(a,e,n,r,o+1);return w(a)&&A(t,e[o]),i})),M=/^\d+$/,E=t=>new Set(n(t)||e(t)?t:[t]),T=S(),O=S(),m=(t,l,y,d,h,p,m,D={},P=0,j=[])=>{let x,z,I,J=0,N=0,k=0;b(T,j,(()=>0)),b(O,j,(()=>[]));const F=S(),[H,U,$,q,B]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!g(t)||!g(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!g(t)||!g(e),e.setContent]:r("Store type not supported by this Persister"))(m,t,P),[G,K,Q]=(()=>{let t;const[n,r]=(()=>{const t=[];let e=0;return[a=>(a?c(t):null)??""+e++,e=>{M.test(e)&&s(t)<1e3&&i(t,e)}]})(),l=S();return[(e,a,s,r=[],o=()=>[])=>{t??=tt;const i=n(1);var c,y;return A(l,i,[e,a,s,r,o]),c=L(a,s??[""],E),y=i,c?.add(y),i},(e,a,...n)=>o(((t,e=[""])=>{const a=[],n=(t,r)=>r==s(e)?i(a,t):null===e[r]?v(t,(t=>n(t,r+1))):o([e[r],null],(e=>n(C(t,e),r+1)));return n(t,0),a})(e,a),(e=>v(e,(e=>C(l,e)[0](t,...a??[],...n))))),t=>a(C(l,t),(([,e,a])=>(L(e,a??[""],void 0,(e=>(f(e,t),w(e)?1:0))),A(l,t),r(t),a))),n=>a(C(l,n),(([a,,n=[],r,i])=>{const c=(...l)=>{const y=s(l);y==s(n)?a(t,...l,...i(l)):e(n[y])?o(r[y]?.(...l)??[],(t=>c(...l,t))):c(...l,n[y])};c()}))]})(),R=t=>{t!=J&&(J=t,K(F,void 0,J))},V=e=>{(H&&n(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},W=async t=>(2!=J&&(R(1),N++,await _((async()=>{try{const e=await l();n(e)?V(e):t?B(t):r("Content is not an array: "+e)}catch(e){p?.(e),t&&B(t)}R(0)}))),tt),X=()=>(z&&(h(z),z=void 0),tt),Y=async t=>(1!=J&&(R(2),k++,await _((async()=>{try{await y(U,t)}catch(t){p?.(t)}R(0)}))),tt),Z=()=>(I&&(t.delListener(I),I=void 0),tt),_=async(...t)=>(i(C(O,j),...t),await(async()=>{if(!C(T,j)){for(A(T,j,1);!e(x=c(C(O,j)));)try{await x()}catch(t){p?.(t)}A(T,j,0)}})(),tt),tt={load:W,startAutoLoad:async t=>{X(),await W(t);try{z=await d((async(t,e)=>{e||t?2!=J&&(R(1),N++,V(e??t),R(0)):await W()}))}catch(t){p?.(t)}return tt},stopAutoLoad:X,isAutoLoading:()=>!e(z),save:Y,startAutoSave:async()=>(Z(),await Y(),I=t.addDidFinishTransactionListener((()=>{const t=$();q(t)&&Y(t)})),tt),stopAutoSave:Z,isAutoSaving:()=>!e(I),getStatus:()=>J,addStatusListener:t=>G(t,F),delListener:e=>(Q(e),t),schedule:_,getStore:()=>t,destroy:()=>(C(O,j).splice(0,void 0),X().stopAutoSave()),getStats:()=>({loads:N,saves:k}),...D};return u(tt)},D=t=>t.headers.get("ETag"),P=(a,n,s,r=5,o)=>{let i;return m(a,(async()=>{const t=await fetch(n);return i=D(t),p(await t.text())}),(async t=>{return await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),h(e,((t,e)=>e instanceof Map?l.fromEntries([...e]):e)))});var e}),(t=>setInterval((async()=>{const a=await fetch(n,{method:"HEAD"}),s=D(a);e(i)||e(s)||s==i||(i=s,t())}),1e3*r)),(e=>t(e)),o,1,{getUrls:()=>[n,s]})};export{P as createRemotePersister};
1
+ const t=clearInterval,e=t=>null==t,a=(t,a,n)=>e(t)?n?.():a(t),n=t=>Array.isArray(t),s=t=>t.length,r=t=>{throw Error(t)},o=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},i=(t,e)=>t.forEach(e),c=(t,...e)=>t.push(...e),l=t=>t.shift(),y=Object,d=t=>y.getPrototypeOf(t),u=y.keys,g=y.freeze,p=t=>(t=>!e(t)&&a(d(t),(t=>t==y.prototype||e(d(t))),(()=>!0)))(t)&&0==(t=>s(u(t)))(t),w=JSON.stringify,h=JSON.parse,v=t=>e(t)||0==(t=>t?.size??0)(t),f=(t,e)=>t?.forEach(e),S=(t,e)=>t?.delete(e),C=t=>new Map(t),A=(t,e)=>t?.get(e),b=(t,a,n)=>e(n)?(S(t,a),t):t?.set(a,n),L=(t,e,a,n)=>{var s,r;return s=t,r=e,s?.has(r)?n?.(A(t,e)):b(t,e,a()),A(t,e)},M=(t,e,n,r,o=0)=>a((n?L:A)(t,e[o],o>s(e)-2?n:C),(a=>{if(o>s(e)-2)return r?.(a)&&b(t,e[o]),a;const i=M(a,e,n,r,o+1);return v(a)&&b(t,e[o]),i})),E=/^\d+$/,T=t=>new Set(n(t)||e(t)?t:[t]),O=C(),m=C(),D=(t,y,d,u,w,h,D,P={},j=0,x=[])=>{let z,I,J,N=0,k=0,F=0;L(O,x,(()=>0)),L(m,x,(()=>[]));const H=C(),[U,$,q,B,G]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!p(t)||!p(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!p(t)||!p(e),e.setContent]:r("Store type not supported by this Persister"))(D,t,j),[K,Q,R]=(()=>{let t;const[n,r]=(()=>{const t=[];let e=0;return[a=>(a?l(t):null)??""+e++,e=>{E.test(e)&&s(t)<1e3&&c(t,e)}]})(),o=C();return[(e,a,s,r=[],i=()=>[])=>{t??=et;const c=n(1);var l,y;return b(o,c,[e,a,s,r,i]),l=M(a,s??[""],T),y=c,l?.add(y),c},(e,a,...n)=>i(((t,e=[""])=>{const a=[],n=(t,r)=>r==s(e)?c(a,t):null===e[r]?f(t,(t=>n(t,r+1))):i([e[r],null],(e=>n(A(t,e),r+1)));return n(t,0),a})(e,a),(e=>f(e,(e=>A(o,e)[0](t,...a??[],...n))))),t=>a(A(o,t),(([,e,a])=>(M(e,a??[""],void 0,(e=>(S(e,t),v(e)?1:0))),b(o,t),r(t),a))),n=>a(A(o,n),(([a,,n=[],r,o])=>{const c=(...l)=>{const y=s(l);y==s(n)?a(t,...l,...o(l)):e(n[y])?i(r[y]?.(...l)??[],(t=>c(...l,t))):c(...l,n[y])};c()}))]})(),V=t=>{t!=N&&(N=t,Q(H,void 0,N))},W=e=>{(U&&n(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async t=>(2!=N&&(V(1),k++,await tt((async()=>{await o((async()=>{const e=await y();n(e)?W(e):t?G(t):r("Content is not an array: "+e)}),(()=>{t&&G(t)})),V(0)}))),et),Y=async()=>(I&&(await o((()=>w(I)),h),I=void 0),et),Z=async t=>(1!=N&&(V(2),F++,await tt((async()=>{await o((()=>d($,t)),h),V(0)}))),et),_=async()=>(J&&(t.delListener(J),J=void 0),et),tt=async(...t)=>(c(A(m,x),...t),await(async()=>{if(!A(O,x)){for(b(O,x,1);!e(z=l(A(m,x)));)await o(z,h);b(O,x,0)}})(),et),et={load:X,startAutoLoad:async t=>(Y(),await X(t),await o((async()=>I=await u((async(t,e)=>{e||t?2!=N&&(V(1),k++,W(e??t),V(0)):await X()}))),h),et),stopAutoLoad:Y,isAutoLoading:()=>!e(I),save:Z,startAutoSave:async()=>(_(),await Z(),J=t.addDidFinishTransactionListener((()=>{const t=q();B(t)&&Z(t)})),et),stopAutoSave:_,isAutoSaving:()=>!e(J),getStatus:()=>N,addStatusListener:t=>K(t,H),delListener:e=>(R(e),t),schedule:tt,getStore:()=>t,destroy:async()=>(A(m,x).splice(0,void 0),await et.stopAutoLoad(),await et.stopAutoSave()),getStats:()=>({loads:k,saves:F}),...P};return g(et)},P=t=>t.headers.get("ETag"),j=(a,n,s,r=5,o)=>{let i;return D(a,(async()=>{const t=await fetch(n);return i=P(t),h(await t.text())}),(async t=>{return await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),w(e,((t,e)=>e instanceof Map?y.fromEntries([...e]):e)))});var e}),(t=>setInterval((async()=>{const a=await fetch(n,{method:"HEAD"}),s=P(a);e(i)||e(s)||s==i||(i=s,t())}),1e3*r)),(e=>t(e)),o,1,{getUrls:()=>[n,s]})};export{j as createRemotePersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=Promise,o=clearInterval,r=a=>null==a,c=(a,t,e)=>r(a)?e?.():t(a),l=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),w=a=>a.length,d=async a=>i.all(a),v=a=>{throw Error(a)},p=(a,t)=>a.forEach(t),E=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),A=a=>0==w(a),h=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),N=a=>a.shift(),$=(a,t)=>a?.has(t)??!1,f=a=>r(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),O=(a,t)=>a?.delete(t),T="_",I="_id",L="SELECT",b="WHERE",D="TABLE",R="ALTER "+D,M="DELETE FROM",_=L+"*FROM",P="pragma_",F="data_version",U="schema_version",j="pragma_table_",B=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>E(g(a,(()=>"$"+t[0]++)),n),Y=Object,k=a=>Y.getPrototypeOf(a),x=Y.entries,z=Y.keys,G=Y.freeze,H=(a=[])=>Y.fromEntries(a),q=(...a)=>Y.assign({},...a),K=(a,t)=>(delete a[t],a),Q=(a,t)=>g(x(a),(([a,e])=>t(e,a))),V=(a,t)=>H(Q(a,((a,e)=>[e,t(a,e)]))),W=a=>Y.values(a),X=a=>w(z(a)),Z=a=>(a=>!r(a)&&c(k(a),(a=>a==Y.prototype||r(k(a))),(()=>!0)))(a)&&0==X(a),aa=a=>new Map(a),ta=(a,t)=>a?.get(t),ea=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),na=(a,t,e)=>r(e)?(O(a,t),a):a?.set(t,e),sa=(a,t,e,n)=>($(a,t)?n?.(ta(a,t)):na(a,t,e()),ta(a,t)),ia=(a,t,e,n,s=0)=>c((e?sa:ta)(a,t[s],s>w(t)-2?e:aa),(i=>{if(s>w(t)-2)return n?.(i)&&na(a,t[s]),i;const o=ia(i,t,e,n,s+1);return f(i)&&na(a,t[s]),o})),oa=a=>new Set(y(a)||r(a)?a:[a]),ra=(a,t)=>a?.add(t),ca="ColumnName",la="store",ya="json",ua=la+"TableName",wa=la+"Id"+ca,da=la+ca,va="autoLoadIntervalSeconds",pa="rowId"+ca,Ea="tableId",ga="tableName",Aa="deleteEmptyColumns",ha="deleteEmptyTable",ma={mode:ya,[va]:1},Na={load:0,save:0,[ga]:t+"_values"},$a=(a,t,e,n,s)=>{const i=aa();return V(a,((a,o)=>{const c=u(W(q(t,l(a)?{[e]:a}:a)),0,X(t));r(c[0])||n(o,c[0])||(s(o,c[0]),na(i,o,c))})),i},fa=JSON.stringify,Sa=JSON.parse,Ca=/^\d+$/,Oa=aa(),Ta=aa(),Ia=(a,t,n,s,i,o,l,u={},d=0,E=[])=>{let g,A,h,$=0,S=0,T=0;sa(Oa,E,(()=>0)),sa(Ta,E,(()=>[]));const I=aa(),[L,b,D,R,M]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!Z(a)||!Z(t),t.setContent]:v("Store type not supported by this Persister"))(l,a,d),[_,P,F]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?N(a):null)??e+t++,t=>{Ca.test(t)&&w(a)<1e3&&m(a,t)}]})(),s=aa();return[(n,i,o,r=[],c=()=>[])=>{a??=z;const l=t(1);return na(s,l,[n,i,o,r,c]),ra(ia(i,o??[e],oa),l),l},(t,n,...i)=>p(((a,t=[e])=>{const n=[],s=(a,e)=>e==w(t)?m(n,a):null===t[e]?C(a,(a=>s(a,e+1))):p([t[e],null],(t=>s(ta(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>ta(s,t)[0](a,...n??[],...i))))),a=>c(ta(s,a),(([,t,i])=>(ia(t,i??[e],void 0,(t=>(O(t,a),f(t)?1:0))),na(s,a),n(a),i))),t=>c(ta(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const c=w(o);c==w(e)?t(a,...o,...s(o)):r(e[c])?p(n[c]?.(...o)??[],(a=>i(...o,a))):i(...o,e[c])};i()}))]})(),U=a=>{a!=$&&($=a,P(I,void 0,$))},j=t=>{(L&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},B=async a=>(2!=$&&(U(1),S++,await x((async()=>{try{const e=await t();y(e)?j(e):a?M(a):v("Content is not an array: "+e)}catch(t){o?.(t),a&&M(a)}U(0)}))),z),J=()=>(A&&(i(A),A=void 0),z),Y=async a=>(1!=$&&(U(2),T++,await x((async()=>{try{await n(b,a)}catch(a){o?.(a)}U(0)}))),z),k=()=>(h&&(a.delListener(h),h=void 0),z),x=async(...a)=>(m(ta(Ta,E),...a),await(async()=>{if(!ta(Oa,E)){for(na(Oa,E,1);!r(g=N(ta(Ta,E)));)try{await g()}catch(a){o?.(a)}na(Oa,E,0)}})(),z),z={load:B,startAutoLoad:async a=>{J(),await B(a);try{A=await s((async(a,t)=>{t||a?2!=$&&(U(1),S++,j(t??a),U(0)):await B()}))}catch(a){o?.(a)}return z},stopAutoLoad:J,isAutoLoading:()=>!r(A),save:Y,startAutoSave:async()=>(k(),await Y(),h=a.addDidFinishTransactionListener((()=>{const a=D();R(a)&&Y(a)})),z),stopAutoSave:k,isAutoSaving:()=>!r(h),getStatus:()=>$,addStatusListener:a=>_(a,I),delListener:t=>(F(t),a),schedule:x,getStore:()=>a,destroy:()=>(ta(Ta,E).splice(0,void 0),J().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return G(z)},La=(a,t,e,s,i,o=ba,c,l)=>{const y=aa();return[async()=>{y.clear(),g(await e(a,t),(({tn:a,cn:t})=>ra(sa(y,a,oa),t)))},async(t,e)=>((a,t)=>$(ta(y,a),t))(t,e)?H(h(g(await a(_+B(t)),(a=>[a[e],l?V(K(a,e),l):K(a,e)])),(([a,t])=>!r(a)&&!Z(t)))):{},async(t,e,s,l,u,w=!1)=>{const v=oa();V(s??{},(a=>g(z(a??{}),(a=>ra(v,a)))));const p=S(v);if(!w&&u&&A(p)&&$(y,t))return await a("DROP "+D+B(t)),void na(y,t);const N=ta(y,t),f=oa(S(N));if(A(p)||($(y,t)?await d(g([e,...p],(async(n,s)=>{O(f,n)||(await a(R+B(t)+"ADD"+B(n)+i),0==s&&await a("CREATE UNIQUE INDEX pk ON "+B(t)+`(${B(e)})`),ra(N,n))}))):(await a("CREATE "+D+B(t)+`(${B(e)}${i} PRIMARY KEY${E(g(p,(a=>n+B(a)+i)))});`),na(y,t,oa([e,...p])))),await d([...!w&&l?g(S(f),(async n=>{n!=e&&(await a(R+B(t)+"DROP"+B(n)),O(N,n))})):[]]),w)r(s)?await a(M+B(t)+b+" true"):await d(Q(s,(async(n,s)=>{r(n)?await a(M+B(t)+b+B(e)+"=$1",[s]):A(p)||await o(a,t,e,z(n),{[s]:c?g(W(n),c):W(n)},N)})));else if(A(p))$(y,t)&&await a(M+B(t)+b+" true");else{const n=h(S(ta(y,t)),(a=>a!=e)),i={},r=[];V(s??{},((a,t)=>{i[t]=g(n,(t=>c?c(a?.[t]):a?.[t])),m(r,t)})),await o(a,t,e,n,i),await a(M+B(t)+b+B(e)+`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}]},ba=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+B(t)+"("+((...a)=>E(g(a,B),n))(e,...s)+")VALUES"+E(Q(i,(a=>"($"+o[0]+++","+J(a,o)+")")),n)+"ON CONFLICT("+B(e)+")DO UPDATE SET"+E(g(s,(a=>B(a)+"=excluded."+B(a))),n),Q(i,((a,t)=>[t,...g(a,(a=>a??null))])).flat())},Da=(a,t,e,n,s,i,o,[r,c,l],y,u,w,d,v,p)=>{const[E,g,A,h]=La(t,y,u,s,v,p),m=Ia(a,(async()=>await h((async()=>{return await E(),a=(await g(r,c))[T]?.[l]??"null",Sa(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await h((async()=>{var t;await E(),await A(r,c,{[T]:{[l]:(t=a()??null,fa(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,w);return m},Ra=(a,t,e,n,s,i,o,[c,l,[y,u,w]],v,p,E,g,A,m,N,$)=>{const[f,S,C,O]=La(t,v,p,s,A,m,N,$),L=async(a,t)=>await d(ea(l,(async([e,n,s,i],o)=>{t&&!(o in a)||await C(e,n,a[o],s,i,t)}))),b=async(a,t)=>u?await C(w,I,{[T]:a},!0,!0,t):null,D=Ia(a,(async()=>await O((async()=>{await f();const a=await(async()=>H(h(await d(ea(c,(async([a,t],e)=>[a,await S(e,t)]))),(a=>!Z(a[1])))))(),t=await(async()=>y?(await S(w,I))[T]:{})();return Z(a)&&r(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await f(),r(t)){const[t,e]=a();await L(t),await b(e)}else await L(t[0],!0),await b(t[1],!0)}))),e,n,s,o,{[g]:()=>E,destroy:()=>(D.stopAutoLoad().stopAutoSave(),i(),D)},0,E);return D},Ma=(a,n,s,i,r,c,y,w,d,v,p="getDb",E)=>{let g,A,h;const m=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[N,f,C,O]=(a=>{const e=(a=>q(ma,l(a)?{[ua]:a}:a??{}))(a),n=e[va];if(e.mode==ya){const a=e[ua]??t;return[1,n,[a,e[wa]??I,e[da]??la],oa(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,r=u(W(q(Na,o)),0,X(Na)),c=r[2],y=oa(c),w=oa(c);return[0,n,[$a(s,{[Ea]:null,[pa]:I},Ea,(a=>$(w,a)),(a=>ra(y,a))),$a(i,{[ga]:null,[pa]:I,[Aa]:0,[ha]:0},ga,((a,t)=>$(w,t)),((a,t)=>ra(y,t))),r],y]})(n);return(N?Da:Ra)(a,m,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await m(`${L} ${F} d,${U} s,TOTAL_CHANGES() c FROM ${P}${F} JOIN ${P}${U}`);t==g&&e==A&&n==h||(null!=g&&a(),g=t,A=e,h=n)}catch{}}),1e3*f),n=()=>{g=A=h=null,o(t)},s=i((t=>{O.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),y,w,d,C,S(O),(async(a,t)=>await a(`${L} t.name tn,c.name cn FROM ${j}list()t,${j}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${J(t)})ORDER BY t.name,c.name`,t)),v,p,e,E,(a=>!0===a?1:!1===a?0:a),void 0)},_a=(a,t,e,n,s)=>Ma(a,e,(async(a,e=[])=>t.query(a).all(...e)),(()=>()=>0),(a=>a()),n,s,(()=>0),3,t);export{_a as createSqliteBunPersister};
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=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,p=()=>{},E=async a=>r.all(a),A=a=>{throw Error(a)},g=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),S=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),T=a=>a.shift(),h=(a,t)=>a?.has(t)??!1,L=a=>l(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],b=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),I="_",R="_id",M="SELECT",_="WHERE",P="TABLE",F="ALTER "+P,U="FROM",j="DELETE "+U,B=M+"*"+U,J="pragma_",Y="data_version",k="schema_version",x="pragma_table_",z="CREATE "+P,G=a=>`"${o(a,/"/g,'""')}"`,H=(a,t=[1])=>m($(a,(()=>"$"+t[0]++)),n),q=(a,t=i)=>_+`(${o(t,"$tableName",G(a))})`,K=Object,Q=a=>K.getPrototypeOf(a),V=K.entries,W=K.keys,X=K.freeze,Z=(a=[])=>K.fromEntries(a),aa=(...a)=>K.assign({},...a),ta=(a,t)=>(delete a[t],a),ea=(a,t)=>$(V(a),(([a,e])=>t(e,a))),na=(a,t)=>Z(ea(a,((a,e)=>[e,t(a,e)]))),sa=a=>K.values(a),ia=a=>v(W(a)),oa=a=>(a=>!l(a)&&w(Q(a),(a=>a==K.prototype||l(Q(a))),(()=>!0)))(a)&&0==ia(a),ra=a=>new Map(a),ca=(a,t)=>a?.get(t),la=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),wa=(a,t,e)=>l(e)?(D(a,t),a):a?.set(t,e),ua=(a,t,e,n)=>(h(a,t)?n?.(ca(a,t)):wa(a,t,e()),ca(a,t)),ya=(a,t,e,n,s=0)=>w((e?ua:ca)(a,t[s],s>v(t)-2?e:ra),(i=>{if(s>v(t)-2)return n?.(i)&&wa(a,t[s]),i;const o=ya(i,t,e,n,s+1);return L(i)&&wa(a,t[s]),o})),da=a=>new Set(y(a)||l(a)?a:[a]),va=(a,t)=>a?.add(t),pa="ColumnName",Ea="store",Aa="json",ga=Ea+"TableName",Na=Ea+"Id"+pa,ma=Ea+pa,$a="autoLoadIntervalSeconds",fa="rowId"+pa,Sa="tableId",Ca="tableName",Ta="deleteEmptyColumns",ha="deleteEmptyTable",La="condition",Oa={mode:Aa,[$a]:1},ba={load:0,save:0,[Ca]:t+"_values"},Da=(a,t,e,n,s)=>{const i=ra();return na(a,((a,o)=>{const r=d(sa(aa(t,u(a)?{[e]:a}:a)),0,ia(t));l(r[0])||n(o,r[0])||(s(o,r[0]),wa(i,o,r))})),i},Ia=JSON.stringify,Ra=JSON.parse,Ma=/^\d+$/,_a=ra(),Pa=ra(),Fa=(a,t,n,s,i,o,r,c={},u=0,d=[])=>{let p,E,m,$=0,f=0,S=0;ua(_a,d,(()=>0)),ua(Pa,d,(()=>[]));const h=ra(),[O,I,R,M,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!oa(a)||!oa(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!oa(a)||!oa(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,u),[P,F,U]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?T(a):null)??e+t++,t=>{Ma.test(t)&&v(a)<1e3&&C(a,t)}]})(),s=ra();return[(n,i,o,r=[],c=()=>[])=>{a??=G;const l=t(1);return wa(s,l,[n,i,o,r,c]),va(ya(i,o??[e],da),l),l},(t,n,...i)=>N(((a,t=[e])=>{const n=[],s=(a,e)=>e==v(t)?C(n,a):null===t[e]?b(a,(a=>s(a,e+1))):N([t[e],null],(t=>s(ca(a,t),e+1)));return s(a,0),n})(t,n),(t=>b(t,(t=>ca(s,t)[0](a,...n??[],...i))))),a=>w(ca(s,a),(([,t,i])=>(ya(t,i??[e],void 0,(t=>(D(t,a),L(t)?1:0))),wa(s,a),n(a),i))),t=>w(ca(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=v(o);r==v(e)?t(a,...o,...s(o)):l(e[r])?N(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=$&&($=a,F(h,void 0,$))},B=t=>{(O&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},J=async a=>(2!=$&&(j(1),f++,await z((async()=>{await g((async()=>{const e=await t();y(e)?B(e):a?_(a):A("Content is not an array: "+e)}),(()=>{a&&_(a)})),j(0)}))),G),Y=async()=>(E&&(await g((()=>i(E)),o),E=void 0),G),k=async a=>(1!=$&&(j(2),S++,await z((async()=>{await g((()=>n(I,a)),o),j(0)}))),G),x=async()=>(m&&(a.delListener(m),m=void 0),G),z=async(...a)=>(C(ca(Pa,d),...a),await(async()=>{if(!ca(_a,d)){for(wa(_a,d,1);!l(p=T(ca(Pa,d)));)await g(p,o);wa(_a,d,0)}})(),G),G={load:J,startAutoLoad:async a=>(Y(),await J(a),await g((async()=>E=await s((async(a,t)=>{t||a?2!=$&&(j(1),f++,B(t??a),j(0)):await J()}))),o),G),stopAutoLoad:Y,isAutoLoading:()=>!l(E),save:k,startAutoSave:async()=>(x(),await k(),m=a.addDidFinishTransactionListener((()=>{const a=R();M(a)&&k(a)})),G),stopAutoSave:x,isAutoSaving:()=>!l(m),getStatus:()=>$,addStatusListener:a=>P(a,h),delListener:t=>(U(t),a),schedule:z,getStore:()=>a,destroy:async()=>(ca(Pa,d).splice(0,void 0),await G.stopAutoLoad(),await G.stopAutoSave()),getStats:()=>({loads:f,saves:S}),...c};return X(G)},Ua=(a,t,e,s,o,r=ja,c,w)=>{const u=ra();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>va(ua(u,a,da),t)))},async(t,e,n)=>((a,t)=>h(ca(u,a),t))(t,e)?Z(S($(await a(B+G(t)+q(t,n)),(a=>[a[e],w?na(ta(a,e),w):ta(a,e)])),(([a,t])=>!l(a)&&!oa(t)))):{},async(t,e,s,w,y,d=!1,v=i)=>{const p=da();na(s??{},(a=>$(W(a??{}),(a=>va(p,a)))));const A=O(p);if(!d&&y&&v==i&&f(A)&&h(u,t))return await a("DROP "+P+G(t)),void wa(u,t);const g=ca(u,t),N=da(O(g));if(f(A)||(h(u,t)?await E($([e,...A],(async(n,s)=>{D(N,n)||(await a(F+G(t)+"ADD"+G(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+G(t)+`(${G(e)})`),va(g,n))}))):(await a(z+G(t)+`(${G(e)}${o} PRIMARY KEY${m($(A,(a=>n+G(a)+o)))});`),wa(u,t,da([e,...A])))),await E([...!d&&w?$(O(N),(async n=>{n!=e&&(await a(F+G(t)+"DROP"+G(n)),D(g,n))})):[]]),d)l(s)?await a(j+G(t)+q(t,v)):await E(ea(s,(async(n,s)=>{l(n)?await a(j+G(t)+q(t,v)+`AND(${G(e)}=$1)`,[s]):f(A)||await r(a,t,e,W(n),{[s]:c?$(sa(n),c):sa(n)},g)})));else if(f(A))h(u,t)&&await a(j+G(t)+q(t,v));else{const n=S(O(ca(u,t)),(a=>a!=e)),i={},o=[];na(s??{},((a,t)=>{i[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),C(o,t)})),await r(a,t,e,n,i),await a(j+G(t)+q(t,v)+`AND${G(e)}NOT IN(${H(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await g((async()=>e=await t()),s),await a("END"),e}]},ja=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+G(t)+"("+((...a)=>m($(a,G),n))(e,...s)+")VALUES"+m(ea(i,(a=>"($"+o[0]+++","+H(a,o)+")")),n)+"ON CONFLICT("+G(e)+")DO UPDATE SET"+m($(s,(a=>G(a)+"=excluded."+G(a))),n),ea(i,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ba=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,v,p)=>{const[E,A,g,N]=Ua(t,w,u,s,v,p),m=Fa(a,(()=>N((async()=>{return await E(),a=(await A(r,c))[I]?.[l]??"null",Ra(a,((a,t)=>""===t?void 0:t));var a}))),(a=>N((async()=>{var t;await E(),await g(r,c,{[I]:{[l]:(t=a()??null,Ia(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:async()=>(await m.stopAutoLoad(),await m.stopAutoSave(),i(),m)},0,y);return m},Ja=(a,t,e,n,s,i,o,[r,c,[w,u,y]],d,v,p,A,g,N,m,$)=>{const[f,C,T,h]=Ua(t,d,v,s,g,N,m,$),L=(a,t)=>E(la(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await T(e,n,a[r],s,i,t,o)}))),O=async(a,t)=>u?await T(y,R,{[I]:a},!0,!0,t):null,b=Fa(a,(()=>h((async()=>{await f();const a=await(async()=>Z(S(await E(la(r,(async([a,t,e],n)=>[a,await C(n,t,e)]))),(a=>!oa(a[1])))))(),t=await(async()=>w?(await C(y,R))[I]:{})();return oa(a)&&l(t)?void 0:[a,t]}))),((a,t)=>h((async()=>{if(await f(),l(t)){const[t,e]=a();await L(t),await O(e)}else await L(t[0],!0),await O(t[1],!0)}))),e,n,s,o,{[A]:()=>p,destroy:async()=>(await b.stopAutoLoad(),await b.stopAutoSave(),i(),b)},0,p);return b},Ya=(a,n,s,o,r,l,w,y,v,p,E="getDb",A)=>{let N,m,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[S,C,T,L]=(a=>{const e=(a=>aa(Oa,u(a)?{[ga]:a}:a??{}))(a),n=e[$a];if(e.mode==Aa){const a=e[ga]??t;return[1,n,[a,e[Na]??R,e[ma]??Ea],da(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=d(sa(aa(ba,r)),0,ia(ba)),l=c[2],w=da(l),y=da(l),v=Da(s,{[Sa]:null,[fa]:R,[La]:i},Sa,(a=>h(y,a)),(a=>va(w,a))),p=Da(o,{[Ca]:null,[fa]:R,[Ta]:0,[ha]:0,[La]:null},Ca,((a,t)=>h(y,t)),((a,t)=>va(w,t)));var E;return E=(a,t)=>t[4]??=ca(v,t[0])?.[2]??i,b(p,((a,t)=>E(0,a))),[0,n,[v,p,c],w]})(n);return(S?Ba:Ja)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>g((async()=>{const[{d:t,s:e,c:n}]=await f(M+` ${Y} d,${k} s,TOTAL_CHANGES() c FROM ${J}${Y} JOIN ${J}${k}`);t==N&&e==m&&n==$||(null!=N&&a(),N=t,m=e,$=n)}))),1e3*C),n=()=>{N=m=$=null,c(t)},s=o((t=>{L.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,v,T,O(L),(async(a,t)=>await a(M+` t.name tn,c.name cn FROM ${x}list()t,${x}info(t.name)c ${_} t.schema='main'AND t.type IN('table','view')AND t.name IN(${H(t)})ORDER BY t.name,c.name`,t)),p,E,e,A,(a=>!0===a?1:!1===a?0:a),void 0)},ka=(a,t,e,n,s)=>Ya(a,e,(async(a,e=[])=>t.query(a).all(...e)),(()=>p),(a=>a()),n,s,p,3,t);export{ka as createSqliteBunPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=Promise,o=clearInterval,r=a=>null==a,c=(a,t,e)=>r(a)?e?.():t(a),l=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),w=a=>a.length,d=async a=>i.all(a),v=a=>{throw Error(a)},p=(a,t)=>a.forEach(t),E=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),A=a=>0==w(a),h=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),N=a=>a.shift(),$=(a,t)=>a?.has(t)??!1,f=a=>r(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),O=(a,t)=>a?.delete(t),T="_",I="_id",L="SELECT",b="WHERE",D="TABLE",R="ALTER "+D,M="DELETE FROM",_=L+"*FROM",P="pragma_",F="data_version",U="schema_version",j="pragma_table_",B=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>E(g(a,(()=>"$"+t[0]++)),n),Y=Object,k=a=>Y.getPrototypeOf(a),x=Y.entries,z=Y.keys,G=Y.freeze,H=(a=[])=>Y.fromEntries(a),q=(...a)=>Y.assign({},...a),K=(a,t)=>(delete a[t],a),Q=(a,t)=>g(x(a),(([a,e])=>t(e,a))),V=(a,t)=>H(Q(a,((a,e)=>[e,t(a,e)]))),W=a=>Y.values(a),X=a=>w(z(a)),Z=a=>(a=>!r(a)&&c(k(a),(a=>a==Y.prototype||r(k(a))),(()=>!0)))(a)&&0==X(a),aa=a=>new Map(a),ta=(a,t)=>a?.get(t),ea=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),na=(a,t,e)=>r(e)?(O(a,t),a):a?.set(t,e),sa=(a,t,e,n)=>($(a,t)?n?.(ta(a,t)):na(a,t,e()),ta(a,t)),ia=(a,t,e,n,s=0)=>c((e?sa:ta)(a,t[s],s>w(t)-2?e:aa),(i=>{if(s>w(t)-2)return n?.(i)&&na(a,t[s]),i;const o=ia(i,t,e,n,s+1);return f(i)&&na(a,t[s]),o})),oa=a=>new Set(y(a)||r(a)?a:[a]),ra=(a,t)=>a?.add(t),ca="ColumnName",la="store",ya="json",ua=la+"TableName",wa=la+"Id"+ca,da=la+ca,va="autoLoadIntervalSeconds",pa="rowId"+ca,Ea="tableId",ga="tableName",Aa="deleteEmptyColumns",ha="deleteEmptyTable",ma={mode:ya,[va]:1},Na={load:0,save:0,[ga]:t+"_values"},$a=(a,t,e,n,s)=>{const i=aa();return V(a,((a,o)=>{const c=u(W(q(t,l(a)?{[e]:a}:a)),0,X(t));r(c[0])||n(o,c[0])||(s(o,c[0]),na(i,o,c))})),i},fa=JSON.stringify,Sa=JSON.parse,Ca=/^\d+$/,Oa=aa(),Ta=aa(),Ia=(a,t,n,s,i,o,l,u={},d=0,E=[])=>{let g,A,h,$=0,S=0,T=0;sa(Oa,E,(()=>0)),sa(Ta,E,(()=>[]));const I=aa(),[L,b,D,R,M]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!Z(a)||!Z(t),t.setContent]:v("Store type not supported by this Persister"))(l,a,d),[_,P,F]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?N(a):null)??e+t++,t=>{Ca.test(t)&&w(a)<1e3&&m(a,t)}]})(),s=aa();return[(n,i,o,r=[],c=()=>[])=>{a??=z;const l=t(1);return na(s,l,[n,i,o,r,c]),ra(ia(i,o??[e],oa),l),l},(t,n,...i)=>p(((a,t=[e])=>{const n=[],s=(a,e)=>e==w(t)?m(n,a):null===t[e]?C(a,(a=>s(a,e+1))):p([t[e],null],(t=>s(ta(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>ta(s,t)[0](a,...n??[],...i))))),a=>c(ta(s,a),(([,t,i])=>(ia(t,i??[e],void 0,(t=>(O(t,a),f(t)?1:0))),na(s,a),n(a),i))),t=>c(ta(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const c=w(o);c==w(e)?t(a,...o,...s(o)):r(e[c])?p(n[c]?.(...o)??[],(a=>i(...o,a))):i(...o,e[c])};i()}))]})(),U=a=>{a!=$&&($=a,P(I,void 0,$))},j=t=>{(L&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},B=async a=>(2!=$&&(U(1),S++,await x((async()=>{try{const e=await t();y(e)?j(e):a?M(a):v("Content is not an array: "+e)}catch(t){o?.(t),a&&M(a)}U(0)}))),z),J=()=>(A&&(i(A),A=void 0),z),Y=async a=>(1!=$&&(U(2),T++,await x((async()=>{try{await n(b,a)}catch(a){o?.(a)}U(0)}))),z),k=()=>(h&&(a.delListener(h),h=void 0),z),x=async(...a)=>(m(ta(Ta,E),...a),await(async()=>{if(!ta(Oa,E)){for(na(Oa,E,1);!r(g=N(ta(Ta,E)));)try{await g()}catch(a){o?.(a)}na(Oa,E,0)}})(),z),z={load:B,startAutoLoad:async a=>{J(),await B(a);try{A=await s((async(a,t)=>{t||a?2!=$&&(U(1),S++,j(t??a),U(0)):await B()}))}catch(a){o?.(a)}return z},stopAutoLoad:J,isAutoLoading:()=>!r(A),save:Y,startAutoSave:async()=>(k(),await Y(),h=a.addDidFinishTransactionListener((()=>{const a=D();R(a)&&Y(a)})),z),stopAutoSave:k,isAutoSaving:()=>!r(h),getStatus:()=>$,addStatusListener:a=>_(a,I),delListener:t=>(F(t),a),schedule:x,getStore:()=>a,destroy:()=>(ta(Ta,E).splice(0,void 0),J().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return G(z)},La=(a,t,e,s,i,o=ba,c,l)=>{const y=aa();return[async()=>{y.clear(),g(await e(a,t),(({tn:a,cn:t})=>ra(sa(y,a,oa),t)))},async(t,e)=>((a,t)=>$(ta(y,a),t))(t,e)?H(h(g(await a(_+B(t)),(a=>[a[e],l?V(K(a,e),l):K(a,e)])),(([a,t])=>!r(a)&&!Z(t)))):{},async(t,e,s,l,u,w=!1)=>{const v=oa();V(s??{},(a=>g(z(a??{}),(a=>ra(v,a)))));const p=S(v);if(!w&&u&&A(p)&&$(y,t))return await a("DROP "+D+B(t)),void na(y,t);const N=ta(y,t),f=oa(S(N));if(A(p)||($(y,t)?await d(g([e,...p],(async(n,s)=>{O(f,n)||(await a(R+B(t)+"ADD"+B(n)+i),0==s&&await a("CREATE UNIQUE INDEX pk ON "+B(t)+`(${B(e)})`),ra(N,n))}))):(await a("CREATE "+D+B(t)+`(${B(e)}${i} PRIMARY KEY${E(g(p,(a=>n+B(a)+i)))});`),na(y,t,oa([e,...p])))),await d([...!w&&l?g(S(f),(async n=>{n!=e&&(await a(R+B(t)+"DROP"+B(n)),O(N,n))})):[]]),w)r(s)?await a(M+B(t)+b+" true"):await d(Q(s,(async(n,s)=>{r(n)?await a(M+B(t)+b+B(e)+"=$1",[s]):A(p)||await o(a,t,e,z(n),{[s]:c?g(W(n),c):W(n)},N)})));else if(A(p))$(y,t)&&await a(M+B(t)+b+" true");else{const n=h(S(ta(y,t)),(a=>a!=e)),i={},r=[];V(s??{},((a,t)=>{i[t]=g(n,(t=>c?c(a?.[t]):a?.[t])),m(r,t)})),await o(a,t,e,n,i),await a(M+B(t)+b+B(e)+`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}]},ba=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+B(t)+"("+((...a)=>E(g(a,B),n))(e,...s)+")VALUES"+E(Q(i,(a=>"($"+o[0]+++","+J(a,o)+")")),n)+"ON CONFLICT("+B(e)+")DO UPDATE SET"+E(g(s,(a=>B(a)+"=excluded."+B(a))),n),Q(i,((a,t)=>[t,...g(a,(a=>a??null))])).flat())},Da=(a,t,e,n,s,i,o,[r,c,l],y,u,w,d,v,p)=>{const[E,g,A,h]=La(t,y,u,s,v,p),m=Ia(a,(async()=>await h((async()=>{return await E(),a=(await g(r,c))[T]?.[l]??"null",Sa(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await h((async()=>{var t;await E(),await A(r,c,{[T]:{[l]:(t=a()??null,fa(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>w,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,w);return m},Ra=(a,t,e,n,s,i,o,[c,l,[y,u,w]],v,p,E,g,A,m,N,$)=>{const[f,S,C,O]=La(t,v,p,s,A,m,N,$),L=async(a,t)=>await d(ea(l,(async([e,n,s,i],o)=>{t&&!(o in a)||await C(e,n,a[o],s,i,t)}))),b=async(a,t)=>u?await C(w,I,{[T]:a},!0,!0,t):null,D=Ia(a,(async()=>await O((async()=>{await f();const a=await(async()=>H(h(await d(ea(c,(async([a,t],e)=>[a,await S(e,t)]))),(a=>!Z(a[1])))))(),t=await(async()=>y?(await S(w,I))[T]:{})();return Z(a)&&r(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await f(),r(t)){const[t,e]=a();await L(t),await b(e)}else await L(t[0],!0),await b(t[1],!0)}))),e,n,s,o,{[g]:()=>E,destroy:()=>(D.stopAutoLoad().stopAutoSave(),i(),D)},0,E);return D},Ma=(a,n,s,i,r,c,y,w,d,v,p="getDb",E)=>{let g,A,h;const m=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[N,f,C,O]=(a=>{const e=(a=>q(ma,l(a)?{[ua]:a}:a??{}))(a),n=e[va];if(e.mode==ya){const a=e[ua]??t;return[1,n,[a,e[wa]??I,e[da]??la],oa(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,r=u(W(q(Na,o)),0,X(Na)),c=r[2],y=oa(c),w=oa(c);return[0,n,[$a(s,{[Ea]:null,[pa]:I},Ea,(a=>$(w,a)),(a=>ra(y,a))),$a(i,{[ga]:null,[pa]:I,[Aa]:0,[ha]:0},ga,((a,t)=>$(w,t)),((a,t)=>ra(y,t))),r],y]})(n);return(N?Da:Ra)(a,m,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await m(`${L} ${F} d,${U} s,TOTAL_CHANGES() c FROM ${P}${F} JOIN ${P}${U}`);t==g&&e==A&&n==h||(null!=g&&a(),g=t,A=e,h=n)}catch{}}),1e3*f),n=()=>{g=A=h=null,o(t)},s=i((t=>{O.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),y,w,d,C,S(O),(async(a,t)=>await a(`${L} t.name tn,c.name cn FROM ${j}list()t,${j}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${J(t)})ORDER BY t.name,c.name`,t)),v,p,e,E,(a=>!0===a?1:!1===a?0:a),void 0)},_a=(a,t,e,n,s)=>Ma(a,e,(async(a,e=[])=>t.query(a).all(...e)),(()=>()=>0),(a=>a()),n,s,(()=>0),3,t);export{_a as createSqliteBunPersister};
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=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,p=()=>{},E=async a=>r.all(a),A=a=>{throw Error(a)},g=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),S=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),T=a=>a.shift(),h=(a,t)=>a?.has(t)??!1,L=a=>l(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],b=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),I="_",R="_id",M="SELECT",_="WHERE",P="TABLE",F="ALTER "+P,U="FROM",j="DELETE "+U,B=M+"*"+U,J="pragma_",Y="data_version",k="schema_version",x="pragma_table_",z="CREATE "+P,G=a=>`"${o(a,/"/g,'""')}"`,H=(a,t=[1])=>m($(a,(()=>"$"+t[0]++)),n),q=(a,t=i)=>_+`(${o(t,"$tableName",G(a))})`,K=Object,Q=a=>K.getPrototypeOf(a),V=K.entries,W=K.keys,X=K.freeze,Z=(a=[])=>K.fromEntries(a),aa=(...a)=>K.assign({},...a),ta=(a,t)=>(delete a[t],a),ea=(a,t)=>$(V(a),(([a,e])=>t(e,a))),na=(a,t)=>Z(ea(a,((a,e)=>[e,t(a,e)]))),sa=a=>K.values(a),ia=a=>v(W(a)),oa=a=>(a=>!l(a)&&w(Q(a),(a=>a==K.prototype||l(Q(a))),(()=>!0)))(a)&&0==ia(a),ra=a=>new Map(a),ca=(a,t)=>a?.get(t),la=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),wa=(a,t,e)=>l(e)?(D(a,t),a):a?.set(t,e),ua=(a,t,e,n)=>(h(a,t)?n?.(ca(a,t)):wa(a,t,e()),ca(a,t)),ya=(a,t,e,n,s=0)=>w((e?ua:ca)(a,t[s],s>v(t)-2?e:ra),(i=>{if(s>v(t)-2)return n?.(i)&&wa(a,t[s]),i;const o=ya(i,t,e,n,s+1);return L(i)&&wa(a,t[s]),o})),da=a=>new Set(y(a)||l(a)?a:[a]),va=(a,t)=>a?.add(t),pa="ColumnName",Ea="store",Aa="json",ga=Ea+"TableName",Na=Ea+"Id"+pa,ma=Ea+pa,$a="autoLoadIntervalSeconds",fa="rowId"+pa,Sa="tableId",Ca="tableName",Ta="deleteEmptyColumns",ha="deleteEmptyTable",La="condition",Oa={mode:Aa,[$a]:1},ba={load:0,save:0,[Ca]:t+"_values"},Da=(a,t,e,n,s)=>{const i=ra();return na(a,((a,o)=>{const r=d(sa(aa(t,u(a)?{[e]:a}:a)),0,ia(t));l(r[0])||n(o,r[0])||(s(o,r[0]),wa(i,o,r))})),i},Ia=JSON.stringify,Ra=JSON.parse,Ma=/^\d+$/,_a=ra(),Pa=ra(),Fa=(a,t,n,s,i,o,r,c={},u=0,d=[])=>{let p,E,m,$=0,f=0,S=0;ua(_a,d,(()=>0)),ua(Pa,d,(()=>[]));const h=ra(),[O,I,R,M,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!oa(a)||!oa(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!oa(a)||!oa(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,u),[P,F,U]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?T(a):null)??e+t++,t=>{Ma.test(t)&&v(a)<1e3&&C(a,t)}]})(),s=ra();return[(n,i,o,r=[],c=()=>[])=>{a??=G;const l=t(1);return wa(s,l,[n,i,o,r,c]),va(ya(i,o??[e],da),l),l},(t,n,...i)=>N(((a,t=[e])=>{const n=[],s=(a,e)=>e==v(t)?C(n,a):null===t[e]?b(a,(a=>s(a,e+1))):N([t[e],null],(t=>s(ca(a,t),e+1)));return s(a,0),n})(t,n),(t=>b(t,(t=>ca(s,t)[0](a,...n??[],...i))))),a=>w(ca(s,a),(([,t,i])=>(ya(t,i??[e],void 0,(t=>(D(t,a),L(t)?1:0))),wa(s,a),n(a),i))),t=>w(ca(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=v(o);r==v(e)?t(a,...o,...s(o)):l(e[r])?N(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=$&&($=a,F(h,void 0,$))},B=t=>{(O&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},J=async a=>(2!=$&&(j(1),f++,await z((async()=>{await g((async()=>{const e=await t();y(e)?B(e):a?_(a):A("Content is not an array: "+e)}),(()=>{a&&_(a)})),j(0)}))),G),Y=async()=>(E&&(await g((()=>i(E)),o),E=void 0),G),k=async a=>(1!=$&&(j(2),S++,await z((async()=>{await g((()=>n(I,a)),o),j(0)}))),G),x=async()=>(m&&(a.delListener(m),m=void 0),G),z=async(...a)=>(C(ca(Pa,d),...a),await(async()=>{if(!ca(_a,d)){for(wa(_a,d,1);!l(p=T(ca(Pa,d)));)await g(p,o);wa(_a,d,0)}})(),G),G={load:J,startAutoLoad:async a=>(Y(),await J(a),await g((async()=>E=await s((async(a,t)=>{t||a?2!=$&&(j(1),f++,B(t??a),j(0)):await J()}))),o),G),stopAutoLoad:Y,isAutoLoading:()=>!l(E),save:k,startAutoSave:async()=>(x(),await k(),m=a.addDidFinishTransactionListener((()=>{const a=R();M(a)&&k(a)})),G),stopAutoSave:x,isAutoSaving:()=>!l(m),getStatus:()=>$,addStatusListener:a=>P(a,h),delListener:t=>(U(t),a),schedule:z,getStore:()=>a,destroy:async()=>(ca(Pa,d).splice(0,void 0),await G.stopAutoLoad(),await G.stopAutoSave()),getStats:()=>({loads:f,saves:S}),...c};return X(G)},Ua=(a,t,e,s,o,r=ja,c,w)=>{const u=ra();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>va(ua(u,a,da),t)))},async(t,e,n)=>((a,t)=>h(ca(u,a),t))(t,e)?Z(S($(await a(B+G(t)+q(t,n)),(a=>[a[e],w?na(ta(a,e),w):ta(a,e)])),(([a,t])=>!l(a)&&!oa(t)))):{},async(t,e,s,w,y,d=!1,v=i)=>{const p=da();na(s??{},(a=>$(W(a??{}),(a=>va(p,a)))));const A=O(p);if(!d&&y&&v==i&&f(A)&&h(u,t))return await a("DROP "+P+G(t)),void wa(u,t);const g=ca(u,t),N=da(O(g));if(f(A)||(h(u,t)?await E($([e,...A],(async(n,s)=>{D(N,n)||(await a(F+G(t)+"ADD"+G(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+G(t)+`(${G(e)})`),va(g,n))}))):(await a(z+G(t)+`(${G(e)}${o} PRIMARY KEY${m($(A,(a=>n+G(a)+o)))});`),wa(u,t,da([e,...A])))),await E([...!d&&w?$(O(N),(async n=>{n!=e&&(await a(F+G(t)+"DROP"+G(n)),D(g,n))})):[]]),d)l(s)?await a(j+G(t)+q(t,v)):await E(ea(s,(async(n,s)=>{l(n)?await a(j+G(t)+q(t,v)+`AND(${G(e)}=$1)`,[s]):f(A)||await r(a,t,e,W(n),{[s]:c?$(sa(n),c):sa(n)},g)})));else if(f(A))h(u,t)&&await a(j+G(t)+q(t,v));else{const n=S(O(ca(u,t)),(a=>a!=e)),i={},o=[];na(s??{},((a,t)=>{i[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),C(o,t)})),await r(a,t,e,n,i),await a(j+G(t)+q(t,v)+`AND${G(e)}NOT IN(${H(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await g((async()=>e=await t()),s),await a("END"),e}]},ja=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+G(t)+"("+((...a)=>m($(a,G),n))(e,...s)+")VALUES"+m(ea(i,(a=>"($"+o[0]+++","+H(a,o)+")")),n)+"ON CONFLICT("+G(e)+")DO UPDATE SET"+m($(s,(a=>G(a)+"=excluded."+G(a))),n),ea(i,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ba=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,v,p)=>{const[E,A,g,N]=Ua(t,w,u,s,v,p),m=Fa(a,(()=>N((async()=>{return await E(),a=(await A(r,c))[I]?.[l]??"null",Ra(a,((a,t)=>""===t?void 0:t));var a}))),(a=>N((async()=>{var t;await E(),await g(r,c,{[I]:{[l]:(t=a()??null,Ia(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:async()=>(await m.stopAutoLoad(),await m.stopAutoSave(),i(),m)},0,y);return m},Ja=(a,t,e,n,s,i,o,[r,c,[w,u,y]],d,v,p,A,g,N,m,$)=>{const[f,C,T,h]=Ua(t,d,v,s,g,N,m,$),L=(a,t)=>E(la(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await T(e,n,a[r],s,i,t,o)}))),O=async(a,t)=>u?await T(y,R,{[I]:a},!0,!0,t):null,b=Fa(a,(()=>h((async()=>{await f();const a=await(async()=>Z(S(await E(la(r,(async([a,t,e],n)=>[a,await C(n,t,e)]))),(a=>!oa(a[1])))))(),t=await(async()=>w?(await C(y,R))[I]:{})();return oa(a)&&l(t)?void 0:[a,t]}))),((a,t)=>h((async()=>{if(await f(),l(t)){const[t,e]=a();await L(t),await O(e)}else await L(t[0],!0),await O(t[1],!0)}))),e,n,s,o,{[A]:()=>p,destroy:async()=>(await b.stopAutoLoad(),await b.stopAutoSave(),i(),b)},0,p);return b},Ya=(a,n,s,o,r,l,w,y,v,p,E="getDb",A)=>{let N,m,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[S,C,T,L]=(a=>{const e=(a=>aa(Oa,u(a)?{[ga]:a}:a??{}))(a),n=e[$a];if(e.mode==Aa){const a=e[ga]??t;return[1,n,[a,e[Na]??R,e[ma]??Ea],da(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=d(sa(aa(ba,r)),0,ia(ba)),l=c[2],w=da(l),y=da(l),v=Da(s,{[Sa]:null,[fa]:R,[La]:i},Sa,(a=>h(y,a)),(a=>va(w,a))),p=Da(o,{[Ca]:null,[fa]:R,[Ta]:0,[ha]:0,[La]:null},Ca,((a,t)=>h(y,t)),((a,t)=>va(w,t)));var E;return E=(a,t)=>t[4]??=ca(v,t[0])?.[2]??i,b(p,((a,t)=>E(0,a))),[0,n,[v,p,c],w]})(n);return(S?Ba:Ja)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>g((async()=>{const[{d:t,s:e,c:n}]=await f(M+` ${Y} d,${k} s,TOTAL_CHANGES() c FROM ${J}${Y} JOIN ${J}${k}`);t==N&&e==m&&n==$||(null!=N&&a(),N=t,m=e,$=n)}))),1e3*C),n=()=>{N=m=$=null,c(t)},s=o((t=>{L.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,v,T,O(L),(async(a,t)=>await a(M+` t.name tn,c.name cn FROM ${x}list()t,${x}info(t.name)c ${_} t.schema='main'AND t.type IN('table','view')AND t.name IN(${H(t)})ORDER BY t.name,c.name`,t)),p,E,e,A,(a=>!0===a?1:!1===a?0:a),void 0)},ka=(a,t,e,n,s)=>Ya(a,e,(async(a,e=[])=>t.query(a).all(...e)),(()=>p),(a=>a()),n,s,p,3,t);export{ka as createSqliteBunPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),o=Promise,i=clearInterval,r=a=>null==a,c=(a,t,e)=>r(a)?e?.():t(a),l=t=>a(t)==s,u=a=>Array.isArray(a),w=(a,t,e)=>a.slice(t,e),y=a=>a.length,d=async a=>o.all(a),p=a=>{throw Error(a)},v=(a,t)=>a.forEach(t),E=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),h=a=>0==y(a),A=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),N=a=>a.shift(),$=(a,t)=>a?.has(t)??!1,f=a=>r(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),O=(a,t)=>a?.delete(t),T="_",b="_id",I="SELECT",L="WHERE",R="TABLE",D="ALTER "+R,_="DELETE FROM",M=I+"*FROM",P="pragma_",F="data_version",j="schema_version",k="pragma_table_",U=a=>`"${a.replace(/"/g,'""')}"`,x=(a,t=[1])=>E(g(a,(()=>"$"+t[0]++)),n),B=Object,J=a=>B.getPrototypeOf(a),Y=B.entries,q=B.keys,z=B.freeze,G=(a=[])=>B.fromEntries(a),H=(...a)=>B.assign({},...a),V=(a,t)=>(delete a[t],a),K=(a,t)=>g(Y(a),(([a,e])=>t(e,a))),Q=(a,t)=>G(K(a,((a,e)=>[e,t(a,e)]))),W=a=>B.values(a),X=a=>y(q(a)),Z=a=>(a=>!r(a)&&c(J(a),(a=>a==B.prototype||r(J(a))),(()=>!0)))(a)&&0==X(a),aa=a=>new Map(a),ta=(a,t)=>a?.get(t),ea=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),na=(a,t,e)=>r(e)?(O(a,t),a):a?.set(t,e),sa=(a,t,e,n)=>($(a,t)?n?.(ta(a,t)):na(a,t,e()),ta(a,t)),oa=(a,t,e,n,s=0)=>c((e?sa:ta)(a,t[s],s>y(t)-2?e:aa),(o=>{if(s>y(t)-2)return n?.(o)&&na(a,t[s]),o;const i=oa(o,t,e,n,s+1);return f(o)&&na(a,t[s]),i})),ia=a=>new Set(u(a)||r(a)?a:[a]),ra=(a,t)=>a?.add(t),ca="ColumnName",la="store",ua="json",wa=la+"TableName",ya=la+"Id"+ca,da=la+ca,pa="autoLoadIntervalSeconds",va="rowId"+ca,Ea="tableId",ga="tableName",ha="deleteEmptyColumns",Aa="deleteEmptyTable",ma={mode:ua,[pa]:1},Na={load:0,save:0,[ga]:t+"_values"},$a=(a,t,e,n,s)=>{const o=aa();return Q(a,((a,i)=>{const c=w(W(H(t,l(a)?{[e]:a}:a)),0,X(t));r(c[0])||n(i,c[0])||(s(i,c[0]),na(o,i,c))})),o},fa=JSON.stringify,Sa=JSON.parse,Ca=/^\d+$/,Oa=aa(),Ta=aa(),ba=(a,t,n,s,o,i,l,w={},d=0,E=[])=>{let g,h,A,$=0,S=0,T=0;sa(Oa,E,(()=>0)),sa(Ta,E,(()=>[]));const b=aa(),[I,L,R,D,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!Z(a)||!Z(t),t.setContent]:p("Store type not supported by this Persister"))(l,a,d),[M,P,F]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?N(a):null)??e+t++,t=>{Ca.test(t)&&y(a)<1e3&&m(a,t)}]})(),s=aa();return[(n,o,i,r=[],c=()=>[])=>{a??=q;const l=t(1);return na(s,l,[n,o,i,r,c]),ra(oa(o,i??[e],ia),l),l},(t,n,...o)=>v(((a,t=[e])=>{const n=[],s=(a,e)=>e==y(t)?m(n,a):null===t[e]?C(a,(a=>s(a,e+1))):v([t[e],null],(t=>s(ta(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>ta(s,t)[0](a,...n??[],...o))))),a=>c(ta(s,a),(([,t,o])=>(oa(t,o??[e],void 0,(t=>(O(t,a),f(t)?1:0))),na(s,a),n(a),o))),t=>c(ta(s,t),(([t,,e=[],n,s])=>{const o=(...i)=>{const c=y(i);c==y(e)?t(a,...i,...s(i)):r(e[c])?v(n[c]?.(...i)??[],(a=>o(...i,a))):o(...i,e[c])};o()}))]})(),j=a=>{a!=$&&($=a,P(b,void 0,$))},k=t=>{(I&&u(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},U=async a=>(2!=$&&(j(1),S++,await Y((async()=>{try{const e=await t();u(e)?k(e):a?_(a):p("Content is not an array: "+e)}catch(t){i?.(t),a&&_(a)}j(0)}))),q),x=()=>(h&&(o(h),h=void 0),q),B=async a=>(1!=$&&(j(2),T++,await Y((async()=>{try{await n(L,a)}catch(a){i?.(a)}j(0)}))),q),J=()=>(A&&(a.delListener(A),A=void 0),q),Y=async(...a)=>(m(ta(Ta,E),...a),await(async()=>{if(!ta(Oa,E)){for(na(Oa,E,1);!r(g=N(ta(Ta,E)));)try{await g()}catch(a){i?.(a)}na(Oa,E,0)}})(),q),q={load:U,startAutoLoad:async a=>{x(),await U(a);try{h=await s((async(a,t)=>{t||a?2!=$&&(j(1),S++,k(t??a),j(0)):await U()}))}catch(a){i?.(a)}return q},stopAutoLoad:x,isAutoLoading:()=>!r(h),save:B,startAutoSave:async()=>(J(),await B(),A=a.addDidFinishTransactionListener((()=>{const a=R();D(a)&&B(a)})),q),stopAutoSave:J,isAutoSaving:()=>!r(A),getStatus:()=>$,addStatusListener:a=>M(a,b),delListener:t=>(F(t),a),schedule:Y,getStore:()=>a,destroy:()=>(ta(Ta,E).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...w};return z(q)},Ia=(a,t,e,s,o,i=La,c,l)=>{const u=aa();return[async()=>{u.clear(),g(await e(a,t),(({tn:a,cn:t})=>ra(sa(u,a,ia),t)))},async(t,e)=>((a,t)=>$(ta(u,a),t))(t,e)?G(A(g(await a(M+U(t)),(a=>[a[e],l?Q(V(a,e),l):V(a,e)])),(([a,t])=>!r(a)&&!Z(t)))):{},async(t,e,s,l,w,y=!1)=>{const p=ia();Q(s??{},(a=>g(q(a??{}),(a=>ra(p,a)))));const v=S(p);if(!y&&w&&h(v)&&$(u,t))return await a("DROP "+R+U(t)),void na(u,t);const N=ta(u,t),f=ia(S(N));if(h(v)||($(u,t)?await d(g([e,...v],(async(n,s)=>{O(f,n)||(await a(D+U(t)+"ADD"+U(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+U(t)+`(${U(e)})`),ra(N,n))}))):(await a("CREATE "+R+U(t)+`(${U(e)}${o} PRIMARY KEY${E(g(v,(a=>n+U(a)+o)))});`),na(u,t,ia([e,...v])))),await d([...!y&&l?g(S(f),(async n=>{n!=e&&(await a(D+U(t)+"DROP"+U(n)),O(N,n))})):[]]),y)r(s)?await a(_+U(t)+L+" true"):await d(K(s,(async(n,s)=>{r(n)?await a(_+U(t)+L+U(e)+"=$1",[s]):h(v)||await i(a,t,e,q(n),{[s]:c?g(W(n),c):W(n)},N)})));else if(h(v))$(u,t)&&await a(_+U(t)+L+" true");else{const n=A(S(ta(u,t)),(a=>a!=e)),o={},r=[];Q(s??{},((a,t)=>{o[t]=g(n,(t=>c?c(a?.[t]):a?.[t])),m(r,t)})),await i(a,t,e,n,o),await a(_+U(t)+L+U(e)+`NOT IN(${x(r)})`,r)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},La=async(a,t,e,s,o)=>{const i=[1];await a("INSERT INTO"+U(t)+"("+((...a)=>E(g(a,U),n))(e,...s)+")VALUES"+E(K(o,(a=>"($"+i[0]+++","+x(a,i)+")")),n)+"ON CONFLICT("+U(e)+")DO UPDATE SET"+E(g(s,(a=>U(a)+"=excluded."+U(a))),n),K(o,((a,t)=>[t,...g(a,(a=>a??null))])).flat())},Ra=(a,t,e,n,s,o,i,[r,c,l],u,w,y,d,p,v)=>{const[E,g,h,A]=Ia(t,u,w,s,p,v),m=ba(a,(async()=>await A((async()=>{return await E(),a=(await g(r,c))[T]?.[l]??"null",Sa(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await A((async()=>{var t;await E(),await h(r,c,{[T]:{[l]:(t=a()??null,fa(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[d]:()=>y,destroy:()=>(m.stopAutoLoad().stopAutoSave(),o(),m)},0,y);return m},Da=(a,t,e,n,s,o,i,[c,l,[u,w,y]],p,v,E,g,h,m,N,$)=>{const[f,S,C,O]=Ia(t,p,v,s,h,m,N,$),I=async(a,t)=>await d(ea(l,(async([e,n,s,o],i)=>{t&&!(i in a)||await C(e,n,a[i],s,o,t)}))),L=async(a,t)=>w?await C(y,b,{[T]:a},!0,!0,t):null,R=ba(a,(async()=>await O((async()=>{await f();const a=await(async()=>G(A(await d(ea(c,(async([a,t],e)=>[a,await S(e,t)]))),(a=>!Z(a[1])))))(),t=await(async()=>u?(await S(y,b))[T]:{})();return Z(a)&&r(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await f(),r(t)){const[t,e]=a();await I(t),await L(e)}else await I(t[0],!0),await L(t[1],!0)}))),e,n,s,i,{[g]:()=>E,destroy:()=>(R.stopAutoLoad().stopAutoSave(),o(),R)},0,E);return R},_a=(a,n,s,o,r,c,u,y,d,p,v="getDb",E)=>{let g,h,A;const m=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[N,f,C,O]=(a=>{const e=(a=>H(ma,l(a)?{[wa]:a}:a??{}))(a),n=e[pa];if(e.mode==ua){const a=e[wa]??t;return[1,n,[a,e[ya]??b,e[da]??la],ia(a)]}const{tables:{load:s={},save:o={}}={},values:i={}}=e,r=w(W(H(Na,i)),0,X(Na)),c=r[2],u=ia(c),y=ia(c);return[0,n,[$a(s,{[Ea]:null,[va]:b},Ea,(a=>$(y,a)),(a=>ra(u,a))),$a(o,{[ga]:null,[va]:b,[ha]:0,[Aa]:0},ga,((a,t)=>$(y,t)),((a,t)=>ra(u,t))),r],u]})(n);return(N?Ra:Da)(a,m,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await m(`${I} ${F} d,${j} s,TOTAL_CHANGES() c FROM ${P}${F} JOIN ${P}${j}`);t==g&&e==h&&n==A||(null!=g&&a(),g=t,h=e,A=n)}catch{}}),1e3*f),n=()=>{g=h=A=null,i(t)},s=o((t=>{O.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),u,y,d,C,S(O),(async(a,t)=>await a(`${I} t.name tn,c.name cn FROM ${k}list()t,${k}info(t.name)c ${L} t.schema='main'AND t.type IN('table','view')AND t.name IN(${x(t)})ORDER BY t.name,c.name`,t)),p,v,e,E,(a=>!0===a?1:!1===a?0:a),void 0)},Ma=(a,t,e,n,s,o)=>_a(a,n,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,n,s)=>a(s)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),s,o,(()=>0),3,e);export{Ma as createSqliteWasmPersister};
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=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),p=a=>a.length,v=()=>{},E=async a=>r.all(a),A=a=>{throw Error(a)},g=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},m=(a,t)=>a.forEach(t),N=(a,t="")=>a.join(t),$=(a,t)=>a.map(t),f=a=>0==p(a),h=(a,t)=>a.filter(t),S=(a,...t)=>a.push(...t),b=a=>a.shift(),C=(a,t)=>a?.has(t)??!1,T=a=>l(a)||0==(a=>a?.size??0)(a),L=a=>[...a?.values()??[]],O=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),I="_",R="_id",_="SELECT",M="WHERE",P="TABLE",F="ALTER "+P,j="FROM",k="DELETE "+j,U=_+"*"+j,x="pragma_",B="data_version",J="schema_version",Y="pragma_table_",q="CREATE "+P,z=a=>`"${o(a,/"/g,'""')}"`,G=(a,t=[1])=>N($(a,(()=>"$"+t[0]++)),n),H=(a,t=i)=>M+`(${o(t,"$tableName",z(a))})`,V=Object,K=a=>V.getPrototypeOf(a),Q=V.entries,W=V.keys,X=V.freeze,Z=(a=[])=>V.fromEntries(a),aa=(...a)=>V.assign({},...a),ta=(a,t)=>(delete a[t],a),ea=(a,t)=>$(Q(a),(([a,e])=>t(e,a))),na=(a,t)=>Z(ea(a,((a,e)=>[e,t(a,e)]))),sa=a=>V.values(a),ia=a=>p(W(a)),oa=a=>(a=>!l(a)&&w(K(a),(a=>a==V.prototype||l(K(a))),(()=>!0)))(a)&&0==ia(a),ra=a=>new Map(a),ca=(a,t)=>a?.get(t),la=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),wa=(a,t,e)=>l(e)?(D(a,t),a):a?.set(t,e),ua=(a,t,e,n)=>(C(a,t)?n?.(ca(a,t)):wa(a,t,e()),ca(a,t)),ya=(a,t,e,n,s=0)=>w((e?ua:ca)(a,t[s],s>p(t)-2?e:ra),(i=>{if(s>p(t)-2)return n?.(i)&&wa(a,t[s]),i;const o=ya(i,t,e,n,s+1);return T(i)&&wa(a,t[s]),o})),da=a=>new Set(y(a)||l(a)?a:[a]),pa=(a,t)=>a?.add(t),va="ColumnName",Ea="store",Aa="json",ga=Ea+"TableName",ma=Ea+"Id"+va,Na=Ea+va,$a="autoLoadIntervalSeconds",fa="rowId"+va,ha="tableId",Sa="tableName",ba="deleteEmptyColumns",Ca="deleteEmptyTable",Ta="condition",La={mode:Aa,[$a]:1},Oa={load:0,save:0,[Sa]:t+"_values"},Da=(a,t,e,n,s)=>{const i=ra();return na(a,((a,o)=>{const r=d(sa(aa(t,u(a)?{[e]:a}:a)),0,ia(t));l(r[0])||n(o,r[0])||(s(o,r[0]),wa(i,o,r))})),i},Ia=JSON.stringify,Ra=JSON.parse,_a=/^\d+$/,Ma=ra(),Pa=ra(),Fa=(a,t,n,s,i,o,r,c={},u=0,d=[])=>{let v,E,N,$=0,f=0,h=0;ua(Ma,d,(()=>0)),ua(Pa,d,(()=>[]));const C=ra(),[L,I,R,_,M]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!oa(a)||!oa(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!oa(a)||!oa(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,u),[P,F,j]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?b(a):null)??e+t++,t=>{_a.test(t)&&p(a)<1e3&&S(a,t)}]})(),s=ra();return[(n,i,o,r=[],c=()=>[])=>{a??=z;const l=t(1);return wa(s,l,[n,i,o,r,c]),pa(ya(i,o??[e],da),l),l},(t,n,...i)=>m(((a,t=[e])=>{const n=[],s=(a,e)=>e==p(t)?S(n,a):null===t[e]?O(a,(a=>s(a,e+1))):m([t[e],null],(t=>s(ca(a,t),e+1)));return s(a,0),n})(t,n),(t=>O(t,(t=>ca(s,t)[0](a,...n??[],...i))))),a=>w(ca(s,a),(([,t,i])=>(ya(t,i??[e],void 0,(t=>(D(t,a),T(t)?1:0))),wa(s,a),n(a),i))),t=>w(ca(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=p(o);r==p(e)?t(a,...o,...s(o)):l(e[r])?m(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),k=a=>{a!=$&&($=a,F(C,void 0,$))},U=t=>{(L&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},x=async a=>(2!=$&&(k(1),f++,await q((async()=>{await g((async()=>{const e=await t();y(e)?U(e):a?M(a):A("Content is not an array: "+e)}),(()=>{a&&M(a)})),k(0)}))),z),B=async()=>(E&&(await g((()=>i(E)),o),E=void 0),z),J=async a=>(1!=$&&(k(2),h++,await q((async()=>{await g((()=>n(I,a)),o),k(0)}))),z),Y=async()=>(N&&(a.delListener(N),N=void 0),z),q=async(...a)=>(S(ca(Pa,d),...a),await(async()=>{if(!ca(Ma,d)){for(wa(Ma,d,1);!l(v=b(ca(Pa,d)));)await g(v,o);wa(Ma,d,0)}})(),z),z={load:x,startAutoLoad:async a=>(B(),await x(a),await g((async()=>E=await s((async(a,t)=>{t||a?2!=$&&(k(1),f++,U(t??a),k(0)):await x()}))),o),z),stopAutoLoad:B,isAutoLoading:()=>!l(E),save:J,startAutoSave:async()=>(Y(),await J(),N=a.addDidFinishTransactionListener((()=>{const a=R();_(a)&&J(a)})),z),stopAutoSave:Y,isAutoSaving:()=>!l(N),getStatus:()=>$,addStatusListener:a=>P(a,C),delListener:t=>(j(t),a),schedule:q,getStore:()=>a,destroy:async()=>(ca(Pa,d).splice(0,void 0),await z.stopAutoLoad(),await z.stopAutoSave()),getStats:()=>({loads:f,saves:h}),...c};return X(z)},ja=(a,t,e,s,o,r=ka,c,w)=>{const u=ra();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>pa(ua(u,a,da),t)))},async(t,e,n)=>((a,t)=>C(ca(u,a),t))(t,e)?Z(h($(await a(U+z(t)+H(t,n)),(a=>[a[e],w?na(ta(a,e),w):ta(a,e)])),(([a,t])=>!l(a)&&!oa(t)))):{},async(t,e,s,w,y,d=!1,p=i)=>{const v=da();na(s??{},(a=>$(W(a??{}),(a=>pa(v,a)))));const A=L(v);if(!d&&y&&p==i&&f(A)&&C(u,t))return await a("DROP "+P+z(t)),void wa(u,t);const g=ca(u,t),m=da(L(g));if(f(A)||(C(u,t)?await E($([e,...A],(async(n,s)=>{D(m,n)||(await a(F+z(t)+"ADD"+z(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(e)})`),pa(g,n))}))):(await a(q+z(t)+`(${z(e)}${o} PRIMARY KEY${N($(A,(a=>n+z(a)+o)))});`),wa(u,t,da([e,...A])))),await E([...!d&&w?$(L(m),(async n=>{n!=e&&(await a(F+z(t)+"DROP"+z(n)),D(g,n))})):[]]),d)l(s)?await a(k+z(t)+H(t,p)):await E(ea(s,(async(n,s)=>{l(n)?await a(k+z(t)+H(t,p)+`AND(${z(e)}=$1)`,[s]):f(A)||await r(a,t,e,W(n),{[s]:c?$(sa(n),c):sa(n)},g)})));else if(f(A))C(u,t)&&await a(k+z(t)+H(t,p));else{const n=h(L(ca(u,t)),(a=>a!=e)),i={},o=[];na(s??{},((a,t)=>{i[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),S(o,t)})),await r(a,t,e,n,i),await a(k+z(t)+H(t,p)+`AND${z(e)}NOT IN(${G(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await g((async()=>e=await t()),s),await a("END"),e}]},ka=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>N($(a,z),n))(e,...s)+")VALUES"+N(ea(i,(a=>"($"+o[0]+++","+G(a,o)+")")),n)+"ON CONFLICT("+z(e)+")DO UPDATE SET"+N($(s,(a=>z(a)+"=excluded."+z(a))),n),ea(i,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ua=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,p,v)=>{const[E,A,g,m]=ja(t,w,u,s,p,v),N=Fa(a,(()=>m((async()=>{return await E(),a=(await A(r,c))[I]?.[l]??"null",Ra(a,((a,t)=>""===t?void 0:t));var a}))),(a=>m((async()=>{var t;await E(),await g(r,c,{[I]:{[l]:(t=a()??null,Ia(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:async()=>(await N.stopAutoLoad(),await N.stopAutoSave(),i(),N)},0,y);return N},xa=(a,t,e,n,s,i,o,[r,c,[w,u,y]],d,p,v,A,g,m,N,$)=>{const[f,S,b,C]=ja(t,d,p,s,g,m,N,$),T=(a,t)=>E(la(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await b(e,n,a[r],s,i,t,o)}))),L=async(a,t)=>u?await b(y,R,{[I]:a},!0,!0,t):null,O=Fa(a,(()=>C((async()=>{await f();const a=await(async()=>Z(h(await E(la(r,(async([a,t,e],n)=>[a,await S(n,t,e)]))),(a=>!oa(a[1])))))(),t=await(async()=>w?(await S(y,R))[I]:{})();return oa(a)&&l(t)?void 0:[a,t]}))),((a,t)=>C((async()=>{if(await f(),l(t)){const[t,e]=a();await T(t),await L(e)}else await T(t[0],!0),await L(t[1],!0)}))),e,n,s,o,{[A]:()=>v,destroy:async()=>(await O.stopAutoLoad(),await O.stopAutoSave(),i(),O)},0,v);return O},Ba=(a,n,s,o,r,l,w,y,p,v,E="getDb",A)=>{let m,N,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[h,S,b,T]=(a=>{const e=(a=>aa(La,u(a)?{[ga]:a}:a??{}))(a),n=e[$a];if(e.mode==Aa){const a=e[ga]??t;return[1,n,[a,e[ma]??R,e[Na]??Ea],da(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=d(sa(aa(Oa,r)),0,ia(Oa)),l=c[2],w=da(l),y=da(l),p=Da(s,{[ha]:null,[fa]:R,[Ta]:i},ha,(a=>C(y,a)),(a=>pa(w,a))),v=Da(o,{[Sa]:null,[fa]:R,[ba]:0,[Ca]:0,[Ta]:null},Sa,((a,t)=>C(y,t)),((a,t)=>pa(w,t)));var E;return E=(a,t)=>t[4]??=ca(p,t[0])?.[2]??i,O(v,((a,t)=>E(0,a))),[0,n,[p,v,c],w]})(n);return(h?Ua:xa)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>g((async()=>{const[{d:t,s:e,c:n}]=await f(_+` ${B} d,${J} s,TOTAL_CHANGES() c FROM ${x}${B} JOIN ${x}${J}`);t==m&&e==N&&n==$||(null!=m&&a(),m=t,N=e,$=n)}))),1e3*S),n=()=>{m=N=$=null,c(t)},s=o((t=>{T.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,p,b,L(T),(async(a,t)=>await a(_+` t.name tn,c.name cn FROM ${Y}list()t,${Y}info(t.name)c ${M} t.schema='main'AND t.type IN('table','view')AND t.name IN(${G(t)})ORDER BY t.name,c.name`,t)),v,E,e,A,(a=>!0===a?1:!1===a?0:a),void 0)},Ja=(a,t,e,n,s,i)=>Ba(a,n,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,n,s)=>a(s)),0)),(()=>t.capi.sqlite3_update_hook(e,v,0)),s,i,v,3,e);export{Ja as createSqliteWasmPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),o=Promise,i=clearInterval,r=a=>null==a,c=(a,t,e)=>r(a)?e?.():t(a),l=t=>a(t)==s,u=a=>Array.isArray(a),w=(a,t,e)=>a.slice(t,e),y=a=>a.length,d=async a=>o.all(a),p=a=>{throw Error(a)},v=(a,t)=>a.forEach(t),E=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),h=a=>0==y(a),A=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),N=a=>a.shift(),$=(a,t)=>a?.has(t)??!1,f=a=>r(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),O=(a,t)=>a?.delete(t),T="_",b="_id",I="SELECT",L="WHERE",R="TABLE",D="ALTER "+R,_="DELETE FROM",M=I+"*FROM",P="pragma_",F="data_version",j="schema_version",k="pragma_table_",U=a=>`"${a.replace(/"/g,'""')}"`,x=(a,t=[1])=>E(g(a,(()=>"$"+t[0]++)),n),B=Object,J=a=>B.getPrototypeOf(a),Y=B.entries,q=B.keys,z=B.freeze,G=(a=[])=>B.fromEntries(a),H=(...a)=>B.assign({},...a),V=(a,t)=>(delete a[t],a),K=(a,t)=>g(Y(a),(([a,e])=>t(e,a))),Q=(a,t)=>G(K(a,((a,e)=>[e,t(a,e)]))),W=a=>B.values(a),X=a=>y(q(a)),Z=a=>(a=>!r(a)&&c(J(a),(a=>a==B.prototype||r(J(a))),(()=>!0)))(a)&&0==X(a),aa=a=>new Map(a),ta=(a,t)=>a?.get(t),ea=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),na=(a,t,e)=>r(e)?(O(a,t),a):a?.set(t,e),sa=(a,t,e,n)=>($(a,t)?n?.(ta(a,t)):na(a,t,e()),ta(a,t)),oa=(a,t,e,n,s=0)=>c((e?sa:ta)(a,t[s],s>y(t)-2?e:aa),(o=>{if(s>y(t)-2)return n?.(o)&&na(a,t[s]),o;const i=oa(o,t,e,n,s+1);return f(o)&&na(a,t[s]),i})),ia=a=>new Set(u(a)||r(a)?a:[a]),ra=(a,t)=>a?.add(t),ca="ColumnName",la="store",ua="json",wa=la+"TableName",ya=la+"Id"+ca,da=la+ca,pa="autoLoadIntervalSeconds",va="rowId"+ca,Ea="tableId",ga="tableName",ha="deleteEmptyColumns",Aa="deleteEmptyTable",ma={mode:ua,[pa]:1},Na={load:0,save:0,[ga]:t+"_values"},$a=(a,t,e,n,s)=>{const o=aa();return Q(a,((a,i)=>{const c=w(W(H(t,l(a)?{[e]:a}:a)),0,X(t));r(c[0])||n(i,c[0])||(s(i,c[0]),na(o,i,c))})),o},fa=JSON.stringify,Sa=JSON.parse,Ca=/^\d+$/,Oa=aa(),Ta=aa(),ba=(a,t,n,s,o,i,l,w={},d=0,E=[])=>{let g,h,A,$=0,S=0,T=0;sa(Oa,E,(()=>0)),sa(Ta,E,(()=>[]));const b=aa(),[I,L,R,D,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!Z(a)||!Z(t),t.setContent]:p("Store type not supported by this Persister"))(l,a,d),[M,P,F]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?N(a):null)??e+t++,t=>{Ca.test(t)&&y(a)<1e3&&m(a,t)}]})(),s=aa();return[(n,o,i,r=[],c=()=>[])=>{a??=q;const l=t(1);return na(s,l,[n,o,i,r,c]),ra(oa(o,i??[e],ia),l),l},(t,n,...o)=>v(((a,t=[e])=>{const n=[],s=(a,e)=>e==y(t)?m(n,a):null===t[e]?C(a,(a=>s(a,e+1))):v([t[e],null],(t=>s(ta(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>ta(s,t)[0](a,...n??[],...o))))),a=>c(ta(s,a),(([,t,o])=>(oa(t,o??[e],void 0,(t=>(O(t,a),f(t)?1:0))),na(s,a),n(a),o))),t=>c(ta(s,t),(([t,,e=[],n,s])=>{const o=(...i)=>{const c=y(i);c==y(e)?t(a,...i,...s(i)):r(e[c])?v(n[c]?.(...i)??[],(a=>o(...i,a))):o(...i,e[c])};o()}))]})(),j=a=>{a!=$&&($=a,P(b,void 0,$))},k=t=>{(I&&u(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},U=async a=>(2!=$&&(j(1),S++,await Y((async()=>{try{const e=await t();u(e)?k(e):a?_(a):p("Content is not an array: "+e)}catch(t){i?.(t),a&&_(a)}j(0)}))),q),x=()=>(h&&(o(h),h=void 0),q),B=async a=>(1!=$&&(j(2),T++,await Y((async()=>{try{await n(L,a)}catch(a){i?.(a)}j(0)}))),q),J=()=>(A&&(a.delListener(A),A=void 0),q),Y=async(...a)=>(m(ta(Ta,E),...a),await(async()=>{if(!ta(Oa,E)){for(na(Oa,E,1);!r(g=N(ta(Ta,E)));)try{await g()}catch(a){i?.(a)}na(Oa,E,0)}})(),q),q={load:U,startAutoLoad:async a=>{x(),await U(a);try{h=await s((async(a,t)=>{t||a?2!=$&&(j(1),S++,k(t??a),j(0)):await U()}))}catch(a){i?.(a)}return q},stopAutoLoad:x,isAutoLoading:()=>!r(h),save:B,startAutoSave:async()=>(J(),await B(),A=a.addDidFinishTransactionListener((()=>{const a=R();D(a)&&B(a)})),q),stopAutoSave:J,isAutoSaving:()=>!r(A),getStatus:()=>$,addStatusListener:a=>M(a,b),delListener:t=>(F(t),a),schedule:Y,getStore:()=>a,destroy:()=>(ta(Ta,E).splice(0,void 0),x().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...w};return z(q)},Ia=(a,t,e,s,o,i=La,c,l)=>{const u=aa();return[async()=>{u.clear(),g(await e(a,t),(({tn:a,cn:t})=>ra(sa(u,a,ia),t)))},async(t,e)=>((a,t)=>$(ta(u,a),t))(t,e)?G(A(g(await a(M+U(t)),(a=>[a[e],l?Q(V(a,e),l):V(a,e)])),(([a,t])=>!r(a)&&!Z(t)))):{},async(t,e,s,l,w,y=!1)=>{const p=ia();Q(s??{},(a=>g(q(a??{}),(a=>ra(p,a)))));const v=S(p);if(!y&&w&&h(v)&&$(u,t))return await a("DROP "+R+U(t)),void na(u,t);const N=ta(u,t),f=ia(S(N));if(h(v)||($(u,t)?await d(g([e,...v],(async(n,s)=>{O(f,n)||(await a(D+U(t)+"ADD"+U(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+U(t)+`(${U(e)})`),ra(N,n))}))):(await a("CREATE "+R+U(t)+`(${U(e)}${o} PRIMARY KEY${E(g(v,(a=>n+U(a)+o)))});`),na(u,t,ia([e,...v])))),await d([...!y&&l?g(S(f),(async n=>{n!=e&&(await a(D+U(t)+"DROP"+U(n)),O(N,n))})):[]]),y)r(s)?await a(_+U(t)+L+" true"):await d(K(s,(async(n,s)=>{r(n)?await a(_+U(t)+L+U(e)+"=$1",[s]):h(v)||await i(a,t,e,q(n),{[s]:c?g(W(n),c):W(n)},N)})));else if(h(v))$(u,t)&&await a(_+U(t)+L+" true");else{const n=A(S(ta(u,t)),(a=>a!=e)),o={},r=[];Q(s??{},((a,t)=>{o[t]=g(n,(t=>c?c(a?.[t]):a?.[t])),m(r,t)})),await i(a,t,e,n,o),await a(_+U(t)+L+U(e)+`NOT IN(${x(r)})`,r)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},La=async(a,t,e,s,o)=>{const i=[1];await a("INSERT INTO"+U(t)+"("+((...a)=>E(g(a,U),n))(e,...s)+")VALUES"+E(K(o,(a=>"($"+i[0]+++","+x(a,i)+")")),n)+"ON CONFLICT("+U(e)+")DO UPDATE SET"+E(g(s,(a=>U(a)+"=excluded."+U(a))),n),K(o,((a,t)=>[t,...g(a,(a=>a??null))])).flat())},Ra=(a,t,e,n,s,o,i,[r,c,l],u,w,y,d,p,v)=>{const[E,g,h,A]=Ia(t,u,w,s,p,v),m=ba(a,(async()=>await A((async()=>{return await E(),a=(await g(r,c))[T]?.[l]??"null",Sa(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await A((async()=>{var t;await E(),await h(r,c,{[T]:{[l]:(t=a()??null,fa(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[d]:()=>y,destroy:()=>(m.stopAutoLoad().stopAutoSave(),o(),m)},0,y);return m},Da=(a,t,e,n,s,o,i,[c,l,[u,w,y]],p,v,E,g,h,m,N,$)=>{const[f,S,C,O]=Ia(t,p,v,s,h,m,N,$),I=async(a,t)=>await d(ea(l,(async([e,n,s,o],i)=>{t&&!(i in a)||await C(e,n,a[i],s,o,t)}))),L=async(a,t)=>w?await C(y,b,{[T]:a},!0,!0,t):null,R=ba(a,(async()=>await O((async()=>{await f();const a=await(async()=>G(A(await d(ea(c,(async([a,t],e)=>[a,await S(e,t)]))),(a=>!Z(a[1])))))(),t=await(async()=>u?(await S(y,b))[T]:{})();return Z(a)&&r(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await f(),r(t)){const[t,e]=a();await I(t),await L(e)}else await I(t[0],!0),await L(t[1],!0)}))),e,n,s,i,{[g]:()=>E,destroy:()=>(R.stopAutoLoad().stopAutoSave(),o(),R)},0,E);return R},_a=(a,n,s,o,r,c,u,y,d,p,v="getDb",E)=>{let g,h,A;const m=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[N,f,C,O]=(a=>{const e=(a=>H(ma,l(a)?{[wa]:a}:a??{}))(a),n=e[pa];if(e.mode==ua){const a=e[wa]??t;return[1,n,[a,e[ya]??b,e[da]??la],ia(a)]}const{tables:{load:s={},save:o={}}={},values:i={}}=e,r=w(W(H(Na,i)),0,X(Na)),c=r[2],u=ia(c),y=ia(c);return[0,n,[$a(s,{[Ea]:null,[va]:b},Ea,(a=>$(y,a)),(a=>ra(u,a))),$a(o,{[ga]:null,[va]:b,[ha]:0,[Aa]:0},ga,((a,t)=>$(y,t)),((a,t)=>ra(u,t))),r],u]})(n);return(N?Ra:Da)(a,m,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await m(`${I} ${F} d,${j} s,TOTAL_CHANGES() c FROM ${P}${F} JOIN ${P}${j}`);t==g&&e==h&&n==A||(null!=g&&a(),g=t,h=e,A=n)}catch{}}),1e3*f),n=()=>{g=h=A=null,i(t)},s=o((t=>{O.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),u,y,d,C,S(O),(async(a,t)=>await a(`${I} t.name tn,c.name cn FROM ${k}list()t,${k}info(t.name)c ${L} t.schema='main'AND t.type IN('table','view')AND t.name IN(${x(t)})ORDER BY t.name,c.name`,t)),p,v,e,E,(a=>!0===a?1:!1===a?0:a),void 0)},Ma=(a,t,e,n,s,o)=>_a(a,n,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,n,s)=>a(s)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),s,o,(()=>0),3,e);export{Ma as createSqliteWasmPersister};
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=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),p=a=>a.length,v=()=>{},E=async a=>r.all(a),A=a=>{throw Error(a)},g=async(a,t,e)=>{try{return await a()}catch(a){t?.(a)}},m=(a,t)=>a.forEach(t),N=(a,t="")=>a.join(t),$=(a,t)=>a.map(t),f=a=>0==p(a),h=(a,t)=>a.filter(t),S=(a,...t)=>a.push(...t),b=a=>a.shift(),C=(a,t)=>a?.has(t)??!1,T=a=>l(a)||0==(a=>a?.size??0)(a),L=a=>[...a?.values()??[]],O=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),I="_",R="_id",_="SELECT",M="WHERE",P="TABLE",F="ALTER "+P,j="FROM",k="DELETE "+j,U=_+"*"+j,x="pragma_",B="data_version",J="schema_version",Y="pragma_table_",q="CREATE "+P,z=a=>`"${o(a,/"/g,'""')}"`,G=(a,t=[1])=>N($(a,(()=>"$"+t[0]++)),n),H=(a,t=i)=>M+`(${o(t,"$tableName",z(a))})`,V=Object,K=a=>V.getPrototypeOf(a),Q=V.entries,W=V.keys,X=V.freeze,Z=(a=[])=>V.fromEntries(a),aa=(...a)=>V.assign({},...a),ta=(a,t)=>(delete a[t],a),ea=(a,t)=>$(Q(a),(([a,e])=>t(e,a))),na=(a,t)=>Z(ea(a,((a,e)=>[e,t(a,e)]))),sa=a=>V.values(a),ia=a=>p(W(a)),oa=a=>(a=>!l(a)&&w(K(a),(a=>a==V.prototype||l(K(a))),(()=>!0)))(a)&&0==ia(a),ra=a=>new Map(a),ca=(a,t)=>a?.get(t),la=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),wa=(a,t,e)=>l(e)?(D(a,t),a):a?.set(t,e),ua=(a,t,e,n)=>(C(a,t)?n?.(ca(a,t)):wa(a,t,e()),ca(a,t)),ya=(a,t,e,n,s=0)=>w((e?ua:ca)(a,t[s],s>p(t)-2?e:ra),(i=>{if(s>p(t)-2)return n?.(i)&&wa(a,t[s]),i;const o=ya(i,t,e,n,s+1);return T(i)&&wa(a,t[s]),o})),da=a=>new Set(y(a)||l(a)?a:[a]),pa=(a,t)=>a?.add(t),va="ColumnName",Ea="store",Aa="json",ga=Ea+"TableName",ma=Ea+"Id"+va,Na=Ea+va,$a="autoLoadIntervalSeconds",fa="rowId"+va,ha="tableId",Sa="tableName",ba="deleteEmptyColumns",Ca="deleteEmptyTable",Ta="condition",La={mode:Aa,[$a]:1},Oa={load:0,save:0,[Sa]:t+"_values"},Da=(a,t,e,n,s)=>{const i=ra();return na(a,((a,o)=>{const r=d(sa(aa(t,u(a)?{[e]:a}:a)),0,ia(t));l(r[0])||n(o,r[0])||(s(o,r[0]),wa(i,o,r))})),i},Ia=JSON.stringify,Ra=JSON.parse,_a=/^\d+$/,Ma=ra(),Pa=ra(),Fa=(a,t,n,s,i,o,r,c={},u=0,d=[])=>{let v,E,N,$=0,f=0,h=0;ua(Ma,d,(()=>0)),ua(Pa,d,(()=>[]));const C=ra(),[L,I,R,_,M]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!oa(a)||!oa(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!oa(a)||!oa(t),t.setContent]:A("Store type not supported by this Persister"))(r,a,u),[P,F,j]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?b(a):null)??e+t++,t=>{_a.test(t)&&p(a)<1e3&&S(a,t)}]})(),s=ra();return[(n,i,o,r=[],c=()=>[])=>{a??=z;const l=t(1);return wa(s,l,[n,i,o,r,c]),pa(ya(i,o??[e],da),l),l},(t,n,...i)=>m(((a,t=[e])=>{const n=[],s=(a,e)=>e==p(t)?S(n,a):null===t[e]?O(a,(a=>s(a,e+1))):m([t[e],null],(t=>s(ca(a,t),e+1)));return s(a,0),n})(t,n),(t=>O(t,(t=>ca(s,t)[0](a,...n??[],...i))))),a=>w(ca(s,a),(([,t,i])=>(ya(t,i??[e],void 0,(t=>(D(t,a),T(t)?1:0))),wa(s,a),n(a),i))),t=>w(ca(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=p(o);r==p(e)?t(a,...o,...s(o)):l(e[r])?m(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),k=a=>{a!=$&&($=a,F(C,void 0,$))},U=t=>{(L&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},x=async a=>(2!=$&&(k(1),f++,await q((async()=>{await g((async()=>{const e=await t();y(e)?U(e):a?M(a):A("Content is not an array: "+e)}),(()=>{a&&M(a)})),k(0)}))),z),B=async()=>(E&&(await g((()=>i(E)),o),E=void 0),z),J=async a=>(1!=$&&(k(2),h++,await q((async()=>{await g((()=>n(I,a)),o),k(0)}))),z),Y=async()=>(N&&(a.delListener(N),N=void 0),z),q=async(...a)=>(S(ca(Pa,d),...a),await(async()=>{if(!ca(Ma,d)){for(wa(Ma,d,1);!l(v=b(ca(Pa,d)));)await g(v,o);wa(Ma,d,0)}})(),z),z={load:x,startAutoLoad:async a=>(B(),await x(a),await g((async()=>E=await s((async(a,t)=>{t||a?2!=$&&(k(1),f++,U(t??a),k(0)):await x()}))),o),z),stopAutoLoad:B,isAutoLoading:()=>!l(E),save:J,startAutoSave:async()=>(Y(),await J(),N=a.addDidFinishTransactionListener((()=>{const a=R();_(a)&&J(a)})),z),stopAutoSave:Y,isAutoSaving:()=>!l(N),getStatus:()=>$,addStatusListener:a=>P(a,C),delListener:t=>(j(t),a),schedule:q,getStore:()=>a,destroy:async()=>(ca(Pa,d).splice(0,void 0),await z.stopAutoLoad(),await z.stopAutoSave()),getStats:()=>({loads:f,saves:h}),...c};return X(z)},ja=(a,t,e,s,o,r=ka,c,w)=>{const u=ra();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>pa(ua(u,a,da),t)))},async(t,e,n)=>((a,t)=>C(ca(u,a),t))(t,e)?Z(h($(await a(U+z(t)+H(t,n)),(a=>[a[e],w?na(ta(a,e),w):ta(a,e)])),(([a,t])=>!l(a)&&!oa(t)))):{},async(t,e,s,w,y,d=!1,p=i)=>{const v=da();na(s??{},(a=>$(W(a??{}),(a=>pa(v,a)))));const A=L(v);if(!d&&y&&p==i&&f(A)&&C(u,t))return await a("DROP "+P+z(t)),void wa(u,t);const g=ca(u,t),m=da(L(g));if(f(A)||(C(u,t)?await E($([e,...A],(async(n,s)=>{D(m,n)||(await a(F+z(t)+"ADD"+z(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+z(t)+`(${z(e)})`),pa(g,n))}))):(await a(q+z(t)+`(${z(e)}${o} PRIMARY KEY${N($(A,(a=>n+z(a)+o)))});`),wa(u,t,da([e,...A])))),await E([...!d&&w?$(L(m),(async n=>{n!=e&&(await a(F+z(t)+"DROP"+z(n)),D(g,n))})):[]]),d)l(s)?await a(k+z(t)+H(t,p)):await E(ea(s,(async(n,s)=>{l(n)?await a(k+z(t)+H(t,p)+`AND(${z(e)}=$1)`,[s]):f(A)||await r(a,t,e,W(n),{[s]:c?$(sa(n),c):sa(n)},g)})));else if(f(A))C(u,t)&&await a(k+z(t)+H(t,p));else{const n=h(L(ca(u,t)),(a=>a!=e)),i={},o=[];na(s??{},((a,t)=>{i[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),S(o,t)})),await r(a,t,e,n,i),await a(k+z(t)+H(t,p)+`AND${z(e)}NOT IN(${G(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await g((async()=>e=await t()),s),await a("END"),e}]},ka=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+z(t)+"("+((...a)=>N($(a,z),n))(e,...s)+")VALUES"+N(ea(i,(a=>"($"+o[0]+++","+G(a,o)+")")),n)+"ON CONFLICT("+z(e)+")DO UPDATE SET"+N($(s,(a=>z(a)+"=excluded."+z(a))),n),ea(i,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ua=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,p,v)=>{const[E,A,g,m]=ja(t,w,u,s,p,v),N=Fa(a,(()=>m((async()=>{return await E(),a=(await A(r,c))[I]?.[l]??"null",Ra(a,((a,t)=>""===t?void 0:t));var a}))),(a=>m((async()=>{var t;await E(),await g(r,c,{[I]:{[l]:(t=a()??null,Ia(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:async()=>(await N.stopAutoLoad(),await N.stopAutoSave(),i(),N)},0,y);return N},xa=(a,t,e,n,s,i,o,[r,c,[w,u,y]],d,p,v,A,g,m,N,$)=>{const[f,S,b,C]=ja(t,d,p,s,g,m,N,$),T=(a,t)=>E(la(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await b(e,n,a[r],s,i,t,o)}))),L=async(a,t)=>u?await b(y,R,{[I]:a},!0,!0,t):null,O=Fa(a,(()=>C((async()=>{await f();const a=await(async()=>Z(h(await E(la(r,(async([a,t,e],n)=>[a,await S(n,t,e)]))),(a=>!oa(a[1])))))(),t=await(async()=>w?(await S(y,R))[I]:{})();return oa(a)&&l(t)?void 0:[a,t]}))),((a,t)=>C((async()=>{if(await f(),l(t)){const[t,e]=a();await T(t),await L(e)}else await T(t[0],!0),await L(t[1],!0)}))),e,n,s,o,{[A]:()=>v,destroy:async()=>(await O.stopAutoLoad(),await O.stopAutoSave(),i(),O)},0,v);return O},Ba=(a,n,s,o,r,l,w,y,p,v,E="getDb",A)=>{let m,N,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[h,S,b,T]=(a=>{const e=(a=>aa(La,u(a)?{[ga]:a}:a??{}))(a),n=e[$a];if(e.mode==Aa){const a=e[ga]??t;return[1,n,[a,e[ma]??R,e[Na]??Ea],da(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=d(sa(aa(Oa,r)),0,ia(Oa)),l=c[2],w=da(l),y=da(l),p=Da(s,{[ha]:null,[fa]:R,[Ta]:i},ha,(a=>C(y,a)),(a=>pa(w,a))),v=Da(o,{[Sa]:null,[fa]:R,[ba]:0,[Ca]:0,[Ta]:null},Sa,((a,t)=>C(y,t)),((a,t)=>pa(w,t)));var E;return E=(a,t)=>t[4]??=ca(p,t[0])?.[2]??i,O(v,((a,t)=>E(0,a))),[0,n,[p,v,c],w]})(n);return(h?Ua:xa)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>g((async()=>{const[{d:t,s:e,c:n}]=await f(_+` ${B} d,${J} s,TOTAL_CHANGES() c FROM ${x}${B} JOIN ${x}${J}`);t==m&&e==N&&n==$||(null!=m&&a(),m=t,N=e,$=n)}))),1e3*S),n=()=>{m=N=$=null,c(t)},s=o((t=>{T.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,p,b,L(T),(async(a,t)=>await a(_+` t.name tn,c.name cn FROM ${Y}list()t,${Y}info(t.name)c ${M} t.schema='main'AND t.type IN('table','view')AND t.name IN(${G(t)})ORDER BY t.name,c.name`,t)),v,E,e,A,(a=>!0===a?1:!1===a?0:a),void 0)},Ja=(a,t,e,n,s,i)=>Ba(a,n,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,n,s)=>a(s)),0)),(()=>t.capi.sqlite3_update_hook(e,v,0)),s,i,v,3,e);export{Ja as createSqliteWasmPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=Promise,o=clearInterval,r=a=>null==a,c=(a,t,e)=>r(a)?e?.():t(a),l=t=>a(t)==s,w=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),y=a=>a.length,d=async a=>i.all(a),v=a=>{throw Error(a)},p=(a,t)=>a.forEach(t),E=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),A=a=>0==y(a),h=(a,t)=>a.filter(t),m=(a,...t)=>a.push(...t),f=a=>a.shift(),N=(a,t)=>a?.has(t)??!1,$=a=>r(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],C=(a,t)=>a?.forEach(t),O=(a,t)=>a?.delete(t),T="_",I="_id",L="SELECT",b="WHERE",D="TABLE",R="ALTER "+D,M="DELETE FROM",_=L+"*FROM",P="pragma_",F="data_version",U="schema_version",j="pragma_table_",B=a=>`"${a.replace(/"/g,'""')}"`,J=(a,t=[1])=>E(g(a,(()=>"$"+t[0]++)),n),Y=Object,k=a=>Y.getPrototypeOf(a),x=Y.entries,z=Y.keys,G=Y.freeze,H=(a=[])=>Y.fromEntries(a),K=(...a)=>Y.assign({},...a),Q=(a,t)=>(delete a[t],a),V=(a,t)=>g(x(a),(([a,e])=>t(e,a))),W=(a,t)=>H(V(a,((a,e)=>[e,t(a,e)]))),X=a=>Y.values(a),q=a=>y(z(a)),Z=a=>(a=>!r(a)&&c(k(a),(a=>a==Y.prototype||r(k(a))),(()=>!0)))(a)&&0==q(a),aa=a=>new Map(a),ta=(a,t)=>a?.get(t),ea=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),na=(a,t,e)=>r(e)?(O(a,t),a):a?.set(t,e),sa=(a,t,e,n)=>(N(a,t)?n?.(ta(a,t)):na(a,t,e()),ta(a,t)),ia=(a,t,e,n,s=0)=>c((e?sa:ta)(a,t[s],s>y(t)-2?e:aa),(i=>{if(s>y(t)-2)return n?.(i)&&na(a,t[s]),i;const o=ia(i,t,e,n,s+1);return $(i)&&na(a,t[s]),o})),oa=a=>new Set(w(a)||r(a)?a:[a]),ra=(a,t)=>a?.add(t),ca="ColumnName",la="store",wa="json",ua=la+"TableName",ya=la+"Id"+ca,da=la+ca,va="autoLoadIntervalSeconds",pa="rowId"+ca,Ea="tableId",ga="tableName",Aa="deleteEmptyColumns",ha="deleteEmptyTable",ma={mode:wa,[va]:1},fa={load:0,save:0,[ga]:t+"_values"},Na=(a,t,e,n,s)=>{const i=aa();return W(a,((a,o)=>{const c=u(X(K(t,l(a)?{[e]:a}:a)),0,q(t));r(c[0])||n(o,c[0])||(s(o,c[0]),na(i,o,c))})),i},$a=JSON.stringify,Sa=JSON.parse,Ca=/^\d+$/,Oa=aa(),Ta=aa(),Ia=(a,t,n,s,i,o,l,u={},d=0,E=[])=>{let g,A,h,N=0,S=0,T=0;sa(Oa,E,(()=>0)),sa(Ta,E,(()=>[]));const I=aa(),[L,b,D,R,M]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!Z(a)||!Z(t),t.setContent]:v("Store type not supported by this Persister"))(l,a,d),[_,P,F]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?f(a):null)??e+t++,t=>{Ca.test(t)&&y(a)<1e3&&m(a,t)}]})(),s=aa();return[(n,i,o,r=[],c=()=>[])=>{a??=z;const l=t(1);return na(s,l,[n,i,o,r,c]),ra(ia(i,o??[e],oa),l),l},(t,n,...i)=>p(((a,t=[e])=>{const n=[],s=(a,e)=>e==y(t)?m(n,a):null===t[e]?C(a,(a=>s(a,e+1))):p([t[e],null],(t=>s(ta(a,t),e+1)));return s(a,0),n})(t,n),(t=>C(t,(t=>ta(s,t)[0](a,...n??[],...i))))),a=>c(ta(s,a),(([,t,i])=>(ia(t,i??[e],void 0,(t=>(O(t,a),$(t)?1:0))),na(s,a),n(a),i))),t=>c(ta(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const c=y(o);c==y(e)?t(a,...o,...s(o)):r(e[c])?p(n[c]?.(...o)??[],(a=>i(...o,a))):i(...o,e[c])};i()}))]})(),U=a=>{a!=N&&(N=a,P(I,void 0,N))},j=t=>{(L&&w(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},B=async a=>(2!=N&&(U(1),S++,await x((async()=>{try{const e=await t();w(e)?j(e):a?M(a):v("Content is not an array: "+e)}catch(t){o?.(t),a&&M(a)}U(0)}))),z),J=()=>(A&&(i(A),A=void 0),z),Y=async a=>(1!=N&&(U(2),T++,await x((async()=>{try{await n(b,a)}catch(a){o?.(a)}U(0)}))),z),k=()=>(h&&(a.delListener(h),h=void 0),z),x=async(...a)=>(m(ta(Ta,E),...a),await(async()=>{if(!ta(Oa,E)){for(na(Oa,E,1);!r(g=f(ta(Ta,E)));)try{await g()}catch(a){o?.(a)}na(Oa,E,0)}})(),z),z={load:B,startAutoLoad:async a=>{J(),await B(a);try{A=await s((async(a,t)=>{t||a?2!=N&&(U(1),S++,j(t??a),U(0)):await B()}))}catch(a){o?.(a)}return z},stopAutoLoad:J,isAutoLoading:()=>!r(A),save:Y,startAutoSave:async()=>(k(),await Y(),h=a.addDidFinishTransactionListener((()=>{const a=D();R(a)&&Y(a)})),z),stopAutoSave:k,isAutoSaving:()=>!r(h),getStatus:()=>N,addStatusListener:a=>_(a,I),delListener:t=>(F(t),a),schedule:x,getStore:()=>a,destroy:()=>(ta(Ta,E).splice(0,void 0),J().stopAutoSave()),getStats:()=>({loads:S,saves:T}),...u};return G(z)},La=(a,t,e,s,i,o=ba,c,l)=>{const w=aa();return[async()=>{w.clear(),g(await e(a,t),(({tn:a,cn:t})=>ra(sa(w,a,oa),t)))},async(t,e)=>((a,t)=>N(ta(w,a),t))(t,e)?H(h(g(await a(_+B(t)),(a=>[a[e],l?W(Q(a,e),l):Q(a,e)])),(([a,t])=>!r(a)&&!Z(t)))):{},async(t,e,s,l,u,y=!1)=>{const v=oa();W(s??{},(a=>g(z(a??{}),(a=>ra(v,a)))));const p=S(v);if(!y&&u&&A(p)&&N(w,t))return await a("DROP "+D+B(t)),void na(w,t);const f=ta(w,t),$=oa(S(f));if(A(p)||(N(w,t)?await d(g([e,...p],(async(n,s)=>{O($,n)||(await a(R+B(t)+"ADD"+B(n)+i),0==s&&await a("CREATE UNIQUE INDEX pk ON "+B(t)+`(${B(e)})`),ra(f,n))}))):(await a("CREATE "+D+B(t)+`(${B(e)}${i} PRIMARY KEY${E(g(p,(a=>n+B(a)+i)))});`),na(w,t,oa([e,...p])))),await d([...!y&&l?g(S($),(async n=>{n!=e&&(await a(R+B(t)+"DROP"+B(n)),O(f,n))})):[]]),y)r(s)?await a(M+B(t)+b+" true"):await d(V(s,(async(n,s)=>{r(n)?await a(M+B(t)+b+B(e)+"=$1",[s]):A(p)||await o(a,t,e,z(n),{[s]:c?g(X(n),c):X(n)},f)})));else if(A(p))N(w,t)&&await a(M+B(t)+b+" true");else{const n=h(S(ta(w,t)),(a=>a!=e)),i={},r=[];W(s??{},((a,t)=>{i[t]=g(n,(t=>c?c(a?.[t]):a?.[t])),m(r,t)})),await o(a,t,e,n,i),await a(M+B(t)+b+B(e)+`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}]},ba=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+B(t)+"("+((...a)=>E(g(a,B),n))(e,...s)+")VALUES"+E(V(i,(a=>"($"+o[0]+++","+J(a,o)+")")),n)+"ON CONFLICT("+B(e)+")DO UPDATE SET"+E(g(s,(a=>B(a)+"=excluded."+B(a))),n),V(i,((a,t)=>[t,...g(a,(a=>a??null))])).flat())},Da=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,v,p)=>{const[E,g,A,h]=La(t,w,u,s,v,p),m=Ia(a,(async()=>await h((async()=>{return await E(),a=(await g(r,c))[T]?.[l]??"null",Sa(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await h((async()=>{var t;await E(),await A(r,c,{[T]:{[l]:(t=a()??null,$a(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:()=>(m.stopAutoLoad().stopAutoSave(),i(),m)},0,y);return m},Ra=(a,t,e,n,s,i,o,[c,l,[w,u,y]],v,p,E,g,A,m,f,N)=>{const[$,S,C,O]=La(t,v,p,s,A,m,f,N),L=async(a,t)=>await d(ea(l,(async([e,n,s,i],o)=>{t&&!(o in a)||await C(e,n,a[o],s,i,t)}))),b=async(a,t)=>u?await C(y,I,{[T]:a},!0,!0,t):null,D=Ia(a,(async()=>await O((async()=>{await $();const a=await(async()=>H(h(await d(ea(c,(async([a,t],e)=>[a,await S(e,t)]))),(a=>!Z(a[1])))))(),t=await(async()=>w?(await S(y,I))[T]:{})();return Z(a)&&r(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await $(),r(t)){const[t,e]=a();await L(t),await b(e)}else await L(t[0],!0),await b(t[1],!0)}))),e,n,s,o,{[g]:()=>E,destroy:()=>(D.stopAutoLoad().stopAutoSave(),i(),D)},0,E);return D},Ma=(a,n,s,i,r,c,w,y,d,v,p="getDb",E)=>{let g,A,h;const m=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,c),[f,$,C,O]=(a=>{const e=(a=>K(ma,l(a)?{[ua]:a}:a??{}))(a),n=e[va];if(e.mode==wa){const a=e[ua]??t;return[1,n,[a,e[ya]??I,e[da]??la],oa(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,r=u(X(K(fa,o)),0,q(fa)),c=r[2],w=oa(c),y=oa(c);return[0,n,[Na(s,{[Ea]:null,[pa]:I},Ea,(a=>N(y,a)),(a=>ra(w,a))),Na(i,{[ga]:null,[pa]:I,[Aa]:0,[ha]:0},ga,((a,t)=>N(y,t)),((a,t)=>ra(w,t))),r],w]})(n);return(f?Da:Ra)(a,m,(a=>{let t;const e=()=>t=setInterval((async()=>{try{const[{d:t,s:e,c:n}]=await m(`${L} ${F} d,${U} s,TOTAL_CHANGES() c FROM ${P}${F} JOIN ${P}${U}`);t==g&&e==A&&n==h||(null!=g&&a(),g=t,A=e,h=n)}catch{}}),1e3*$),n=()=>{g=A=h=null,o(t)},s=i((t=>{O.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,d,C,S(O),(async(a,t)=>await a(`${L} t.name tn,c.name cn FROM ${j}list()t,${j}info(t.name)c ${b} t.schema='main'AND t.type IN('table','view')AND t.name IN(${J(t)})ORDER BY t.name,c.name`,t)),v,p,e,E,(a=>!0===a?1:!1===a?0:a),void 0)},_a="change",Pa=(a,t,e,n,s)=>Ma(a,e,(async(a,e=[])=>{return await(n=(n,s)=>t.all(a,e,((a,t)=>a?s(a):n(t))),new i(n));var n}),(a=>{const e=(t,e,n)=>a(n);return t.on(_a,e),e}),(a=>t.off(_a,a)),n,s,(()=>0),3,t);export{Pa as createSqlite3Persister};
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=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,p=()=>{},E=async a=>r.all(a),g=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),S=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),C=a=>a.shift(),T=(a,t)=>a?.has(t)??!1,L=a=>l(a)||0==(a=>a?.size??0)(a),O=a=>[...a?.values()??[]],b=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),I="_",R="_id",M="SELECT",_="WHERE",P="TABLE",F="ALTER "+P,U="FROM",j="DELETE "+U,B=M+"*"+U,J="pragma_",Y="data_version",k="schema_version",x="pragma_table_",z="CREATE "+P,G=a=>`"${o(a,/"/g,'""')}"`,H=(a,t=[1])=>m($(a,(()=>"$"+t[0]++)),n),K=(a,t=i)=>_+`(${o(t,"$tableName",G(a))})`,Q=Object,V=a=>Q.getPrototypeOf(a),W=Q.entries,X=Q.keys,q=Q.freeze,Z=(a=[])=>Q.fromEntries(a),aa=(...a)=>Q.assign({},...a),ta=(a,t)=>(delete a[t],a),ea=(a,t)=>$(W(a),(([a,e])=>t(e,a))),na=(a,t)=>Z(ea(a,((a,e)=>[e,t(a,e)]))),sa=a=>Q.values(a),ia=a=>v(X(a)),oa=a=>(a=>!l(a)&&w(V(a),(a=>a==Q.prototype||l(V(a))),(()=>!0)))(a)&&0==ia(a),ra=a=>new Map(a),ca=(a,t)=>a?.get(t),la=(a,t)=>$([...a?.entries()??[]],(([a,e])=>t(e,a))),wa=(a,t,e)=>l(e)?(D(a,t),a):a?.set(t,e),ua=(a,t,e,n)=>(T(a,t)?n?.(ca(a,t)):wa(a,t,e()),ca(a,t)),ya=(a,t,e,n,s=0)=>w((e?ua:ca)(a,t[s],s>v(t)-2?e:ra),(i=>{if(s>v(t)-2)return n?.(i)&&wa(a,t[s]),i;const o=ya(i,t,e,n,s+1);return L(i)&&wa(a,t[s]),o})),da=a=>new Set(y(a)||l(a)?a:[a]),va=(a,t)=>a?.add(t),pa="ColumnName",Ea="store",ga="json",Aa=Ea+"TableName",Na=Ea+"Id"+pa,ma=Ea+pa,$a="autoLoadIntervalSeconds",fa="rowId"+pa,Sa="tableId",ha="tableName",Ca="deleteEmptyColumns",Ta="deleteEmptyTable",La="condition",Oa={mode:ga,[$a]:1},ba={load:0,save:0,[ha]:t+"_values"},Da=(a,t,e,n,s)=>{const i=ra();return na(a,((a,o)=>{const r=d(sa(aa(t,u(a)?{[e]:a}:a)),0,ia(t));l(r[0])||n(o,r[0])||(s(o,r[0]),wa(i,o,r))})),i},Ia=JSON.stringify,Ra=JSON.parse,Ma=/^\d+$/,_a=ra(),Pa=ra(),Fa=(a,t,n,s,i,o,r,c={},u=0,d=[])=>{let p,E,m,$=0,f=0,S=0;ua(_a,d,(()=>0)),ua(Pa,d,(()=>[]));const T=ra(),[O,I,R,M,_]=((a=1,t,e)=>1!=a&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!e),([[a],[t]])=>!oa(a)||!oa(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!oa(a)||!oa(t),t.setContent]:g("Store type not supported by this Persister"))(r,a,u),[P,F,U]=(()=>{let a;const[t,n]=(()=>{const a=[];let t=0;return[n=>(n?C(a):null)??e+t++,t=>{Ma.test(t)&&v(a)<1e3&&h(a,t)}]})(),s=ra();return[(n,i,o,r=[],c=()=>[])=>{a??=G;const l=t(1);return wa(s,l,[n,i,o,r,c]),va(ya(i,o??[e],da),l),l},(t,n,...i)=>N(((a,t=[e])=>{const n=[],s=(a,e)=>e==v(t)?h(n,a):null===t[e]?b(a,(a=>s(a,e+1))):N([t[e],null],(t=>s(ca(a,t),e+1)));return s(a,0),n})(t,n),(t=>b(t,(t=>ca(s,t)[0](a,...n??[],...i))))),a=>w(ca(s,a),(([,t,i])=>(ya(t,i??[e],void 0,(t=>(D(t,a),L(t)?1:0))),wa(s,a),n(a),i))),t=>w(ca(s,t),(([t,,e=[],n,s])=>{const i=(...o)=>{const r=v(o);r==v(e)?t(a,...o,...s(o)):l(e[r])?N(n[r]?.(...o)??[],(a=>i(...o,a))):i(...o,e[r])};i()}))]})(),j=a=>{a!=$&&($=a,F(T,void 0,$))},B=t=>{(O&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},J=async a=>(2!=$&&(j(1),f++,await z((async()=>{await A((async()=>{const e=await t();y(e)?B(e):a?_(a):g("Content is not an array: "+e)}),(()=>{a&&_(a)})),j(0)}))),G),Y=async()=>(E&&(await A((()=>i(E)),o),E=void 0),G),k=async a=>(1!=$&&(j(2),S++,await z((async()=>{await A((()=>n(I,a)),o),j(0)}))),G),x=async()=>(m&&(a.delListener(m),m=void 0),G),z=async(...a)=>(h(ca(Pa,d),...a),await(async()=>{if(!ca(_a,d)){for(wa(_a,d,1);!l(p=C(ca(Pa,d)));)await A(p,o);wa(_a,d,0)}})(),G),G={load:J,startAutoLoad:async a=>(Y(),await J(a),await A((async()=>E=await s((async(a,t)=>{t||a?2!=$&&(j(1),f++,B(t??a),j(0)):await J()}))),o),G),stopAutoLoad:Y,isAutoLoading:()=>!l(E),save:k,startAutoSave:async()=>(x(),await k(),m=a.addDidFinishTransactionListener((()=>{const a=R();M(a)&&k(a)})),G),stopAutoSave:x,isAutoSaving:()=>!l(m),getStatus:()=>$,addStatusListener:a=>P(a,T),delListener:t=>(U(t),a),schedule:z,getStore:()=>a,destroy:async()=>(ca(Pa,d).splice(0,void 0),await G.stopAutoLoad(),await G.stopAutoSave()),getStats:()=>({loads:f,saves:S}),...c};return q(G)},Ua=(a,t,e,s,o,r=ja,c,w)=>{const u=ra();return[async()=>{u.clear(),$(await e(a,t),(({tn:a,cn:t})=>va(ua(u,a,da),t)))},async(t,e,n)=>((a,t)=>T(ca(u,a),t))(t,e)?Z(S($(await a(B+G(t)+K(t,n)),(a=>[a[e],w?na(ta(a,e),w):ta(a,e)])),(([a,t])=>!l(a)&&!oa(t)))):{},async(t,e,s,w,y,d=!1,v=i)=>{const p=da();na(s??{},(a=>$(X(a??{}),(a=>va(p,a)))));const g=O(p);if(!d&&y&&v==i&&f(g)&&T(u,t))return await a("DROP "+P+G(t)),void wa(u,t);const A=ca(u,t),N=da(O(A));if(f(g)||(T(u,t)?await E($([e,...g],(async(n,s)=>{D(N,n)||(await a(F+G(t)+"ADD"+G(n)+o),0==s&&await a("CREATE UNIQUE INDEX pk ON "+G(t)+`(${G(e)})`),va(A,n))}))):(await a(z+G(t)+`(${G(e)}${o} PRIMARY KEY${m($(g,(a=>n+G(a)+o)))});`),wa(u,t,da([e,...g])))),await E([...!d&&w?$(O(N),(async n=>{n!=e&&(await a(F+G(t)+"DROP"+G(n)),D(A,n))})):[]]),d)l(s)?await a(j+G(t)+K(t,v)):await E(ea(s,(async(n,s)=>{l(n)?await a(j+G(t)+K(t,v)+`AND(${G(e)}=$1)`,[s]):f(g)||await r(a,t,e,X(n),{[s]:c?$(sa(n),c):sa(n)},A)})));else if(f(g))T(u,t)&&await a(j+G(t)+K(t,v));else{const n=S(O(ca(u,t)),(a=>a!=e)),i={},o=[];na(s??{},((a,t)=>{i[t]=$(n,(t=>c?c(a?.[t]):a?.[t])),h(o,t)})),await r(a,t,e,n,i),await a(j+G(t)+K(t,v)+`AND${G(e)}NOT IN(${H(o)})`,o)}},async t=>{let e;return await a("BEGIN"),await A((async()=>e=await t()),s),await a("END"),e}]},ja=async(a,t,e,s,i)=>{const o=[1];await a("INSERT INTO"+G(t)+"("+((...a)=>m($(a,G),n))(e,...s)+")VALUES"+m(ea(i,(a=>"($"+o[0]+++","+H(a,o)+")")),n)+"ON CONFLICT("+G(e)+")DO UPDATE SET"+m($(s,(a=>G(a)+"=excluded."+G(a))),n),ea(i,((a,t)=>[t,...$(a,(a=>a??null))])).flat())},Ba=(a,t,e,n,s,i,o,[r,c,l],w,u,y,d,v,p)=>{const[E,g,A,N]=Ua(t,w,u,s,v,p),m=Fa(a,(()=>N((async()=>{return await E(),a=(await g(r,c))[I]?.[l]??"null",Ra(a,((a,t)=>""===t?void 0:t));var a}))),(a=>N((async()=>{var t;await E(),await A(r,c,{[I]:{[l]:(t=a()??null,Ia(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,o,{[d]:()=>y,destroy:async()=>(await m.stopAutoLoad(),await m.stopAutoSave(),i(),m)},0,y);return m},Ja=(a,t,e,n,s,i,o,[r,c,[w,u,y]],d,v,p,g,A,N,m,$)=>{const[f,h,C,T]=Ua(t,d,v,s,A,N,m,$),L=(a,t)=>E(la(c,(async([e,n,s,i,o],r)=>{t&&!(r in a)||await C(e,n,a[r],s,i,t,o)}))),O=async(a,t)=>u?await C(y,R,{[I]:a},!0,!0,t):null,b=Fa(a,(()=>T((async()=>{await f();const a=await(async()=>Z(S(await E(la(r,(async([a,t,e],n)=>[a,await h(n,t,e)]))),(a=>!oa(a[1])))))(),t=await(async()=>w?(await h(y,R))[I]:{})();return oa(a)&&l(t)?void 0:[a,t]}))),((a,t)=>T((async()=>{if(await f(),l(t)){const[t,e]=a();await L(t),await O(e)}else await L(t[0],!0),await O(t[1],!0)}))),e,n,s,o,{[g]:()=>p,destroy:async()=>(await b.stopAutoLoad(),await b.stopAutoSave(),i(),b)},0,p);return b},Ya=(a,n,s,o,r,l,w,y,v,p,E="getDb",g)=>{let N,m,$;const f=((a,t)=>t?async(e,n)=>(t(e,n),await a(e,n)):a)(s,l),[S,h,C,L]=(a=>{const e=(a=>aa(Oa,u(a)?{[Aa]:a}:a??{}))(a),n=e[$a];if(e.mode==ga){const a=e[Aa]??t;return[1,n,[a,e[Na]??R,e[ma]??Ea],da(a)]}const{tables:{load:s={},save:o={}}={},values:r={}}=e,c=d(sa(aa(ba,r)),0,ia(ba)),l=c[2],w=da(l),y=da(l),v=Da(s,{[Sa]:null,[fa]:R,[La]:i},Sa,(a=>T(y,a)),(a=>va(w,a))),p=Da(o,{[ha]:null,[fa]:R,[Ca]:0,[Ta]:0,[La]:null},ha,((a,t)=>T(y,t)),((a,t)=>va(w,t)));var E;return E=(a,t)=>t[4]??=ca(v,t[0])?.[2]??i,b(p,((a,t)=>E(0,a))),[0,n,[v,p,c],w]})(n);return(S?Ba:Ja)(a,f,(a=>{let t;const e=()=>t=setInterval((()=>A((async()=>{const[{d:t,s:e,c:n}]=await f(M+` ${Y} d,${k} s,TOTAL_CHANGES() c FROM ${J}${Y} JOIN ${J}${k}`);t==N&&e==m&&n==$||(null!=N&&a(),N=t,m=e,$=n)}))),1e3*h),n=()=>{N=m=$=null,c(t)},s=o((t=>{L.has(t)&&(n(),a(),e())}));return e(),()=>{n(),r(s)}}),(a=>a()),w,y,v,C,O(L),(async(a,t)=>await a(M+` t.name tn,c.name cn FROM ${x}list()t,${x}info(t.name)c ${_} t.schema='main'AND t.type IN('table','view')AND t.name IN(${H(t)})ORDER BY t.name,c.name`,t)),p,E,e,g,(a=>!0===a?1:!1===a?0:a),void 0)},ka="change",xa=(a,t,e,n,s)=>Ya(a,e,(async(a,e=[])=>{return await(n=(n,s)=>t.all(a,e,((a,t)=>a?s(a):n(t))),new r(n));var n}),(a=>{const e=(t,e,n)=>a(n);return t.on(ka,e),e}),(a=>t.off(ka,a)),n,s,p,3,t);export{xa as createSqlite3Persister};