tinybase 10.0.0-beta.1 → 10.0.0-beta.2

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 (149) hide show
  1. package/@types/common/index.d.ts +1 -0
  2. package/@types/common/with-schemas/index.d.ts +1 -0
  3. package/@types/indexes/index.d.ts +1 -0
  4. package/@types/indexes/with-schemas/index.d.ts +1 -0
  5. package/@types/metrics/index.d.ts +1 -0
  6. package/@types/metrics/with-schemas/index.d.ts +1 -0
  7. package/@types/omni/index.d.ts +1 -0
  8. package/@types/omni/with-schemas/index.d.ts +1 -0
  9. package/@types/persisters/index.d.ts +1 -0
  10. package/@types/persisters/persister-partykit-server/index.d.ts +17 -0
  11. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +17 -0
  12. package/@types/persisters/persister-tinyjoin/index.d.ts +197 -0
  13. package/@types/persisters/persister-tinyjoin/with-schemas/index.d.ts +221 -0
  14. package/@types/persisters/with-schemas/index.d.ts +1 -0
  15. package/@types/queries/index.d.ts +3 -0
  16. package/@types/queries/with-schemas/index.d.ts +3 -0
  17. package/@types/relationships/index.d.ts +1 -0
  18. package/@types/relationships/with-schemas/index.d.ts +1 -0
  19. package/@types/store/index.d.ts +4 -0
  20. package/@types/store/with-schemas/index.d.ts +4 -0
  21. package/@types/ui-react/index.d.ts +2 -0
  22. package/@types/ui-react/with-schemas/index.d.ts +1 -0
  23. package/@types/ui-react-dom-charts/index.d.ts +7 -0
  24. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -0
  25. package/@types/ui-solid/index.d.ts +2 -0
  26. package/@types/ui-solid/with-schemas/index.d.ts +1 -0
  27. package/@types/ui-svelte/index.d.ts +23 -0
  28. package/@types/ui-svelte/with-schemas/index.d.ts +23 -0
  29. package/@types/ui-svelte-dom/index.d.ts +10 -0
  30. package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -0
  31. package/@types/ui-svelte-inspector/index.d.ts +1 -0
  32. package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -0
  33. package/min/omni/index.js +1 -1
  34. package/min/omni/index.js.gz +0 -0
  35. package/min/omni/with-schemas/index.js +1 -1
  36. package/min/omni/with-schemas/index.js.gz +0 -0
  37. package/min/persisters/index.js +1 -1
  38. package/min/persisters/index.js.gz +0 -0
  39. package/min/persisters/persister-better-sqlite3/index.js +1 -1
  40. package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
  41. package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -1
  42. package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
  43. package/min/persisters/persister-capacitor-sqlite/index.js +1 -1
  44. package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
  45. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -1
  46. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
  47. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  48. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  49. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  50. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  51. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  52. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  53. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  54. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  55. package/min/persisters/persister-electric-sql/index.js +1 -1
  56. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  57. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  58. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  59. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  60. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  61. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  62. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  63. package/min/persisters/persister-libsql/index.js +1 -1
  64. package/min/persisters/persister-libsql/index.js.gz +0 -0
  65. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  66. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  67. package/min/persisters/persister-pg/index.js +1 -1
  68. package/min/persisters/persister-pg/index.js.gz +0 -0
  69. package/min/persisters/persister-pg/with-schemas/index.js +1 -1
  70. package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
  71. package/min/persisters/persister-pglite/index.js +1 -1
  72. package/min/persisters/persister-pglite/index.js.gz +0 -0
  73. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  74. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  75. package/min/persisters/persister-postgres/index.js +1 -1
  76. package/min/persisters/persister-postgres/index.js.gz +0 -0
  77. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  78. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  79. package/min/persisters/persister-powersync/index.js +1 -1
  80. package/min/persisters/persister-powersync/index.js.gz +0 -0
  81. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  82. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  83. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  84. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  85. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  86. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  87. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  88. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  89. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  90. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  91. package/min/persisters/persister-sqlite-node/index.js +1 -1
  92. package/min/persisters/persister-sqlite-node/index.js.gz +0 -0
  93. package/min/persisters/persister-sqlite-node/with-schemas/index.js +1 -1
  94. package/min/persisters/persister-sqlite-node/with-schemas/index.js.gz +0 -0
  95. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  96. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  97. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  98. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  99. package/min/persisters/persister-sqlite3/index.js +1 -1
  100. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  101. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  102. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  103. package/min/persisters/persister-tinyjoin/index.js +1 -0
  104. package/min/persisters/persister-tinyjoin/index.js.gz +0 -0
  105. package/min/persisters/persister-tinyjoin/with-schemas/index.js +1 -0
  106. package/min/persisters/persister-tinyjoin/with-schemas/index.js.gz +0 -0
  107. package/min/persisters/with-schemas/index.js +1 -1
  108. package/min/persisters/with-schemas/index.js.gz +0 -0
  109. package/omni/index.js +146 -66
  110. package/omni/with-schemas/index.js +146 -66
  111. package/package.json +41 -1
  112. package/persisters/index.js +28 -13
  113. package/persisters/persister-better-sqlite3/index.js +70 -55
  114. package/persisters/persister-better-sqlite3/with-schemas/index.js +70 -55
  115. package/persisters/persister-capacitor-sqlite/index.js +70 -55
  116. package/persisters/persister-capacitor-sqlite/with-schemas/index.js +70 -55
  117. package/persisters/persister-cr-sqlite-wasm/index.js +70 -55
  118. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +70 -55
  119. package/persisters/persister-durable-object-sql-storage/index.js +28 -13
  120. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +28 -13
  121. package/persisters/persister-electric-sql/index.js +70 -55
  122. package/persisters/persister-electric-sql/with-schemas/index.js +70 -55
  123. package/persisters/persister-expo-sqlite/index.js +70 -55
  124. package/persisters/persister-expo-sqlite/with-schemas/index.js +70 -55
  125. package/persisters/persister-libsql/index.js +70 -55
  126. package/persisters/persister-libsql/with-schemas/index.js +70 -55
  127. package/persisters/persister-pg/index.js +77 -62
  128. package/persisters/persister-pg/with-schemas/index.js +77 -62
  129. package/persisters/persister-pglite/index.js +28 -13
  130. package/persisters/persister-pglite/with-schemas/index.js +28 -13
  131. package/persisters/persister-postgres/index.js +28 -13
  132. package/persisters/persister-postgres/with-schemas/index.js +28 -13
  133. package/persisters/persister-powersync/index.js +81 -66
  134. package/persisters/persister-powersync/with-schemas/index.js +81 -66
  135. package/persisters/persister-react-native-sqlite/index.js +70 -55
  136. package/persisters/persister-react-native-sqlite/with-schemas/index.js +70 -55
  137. package/persisters/persister-sqlite-bun/index.js +70 -55
  138. package/persisters/persister-sqlite-bun/with-schemas/index.js +70 -55
  139. package/persisters/persister-sqlite-node/index.js +70 -55
  140. package/persisters/persister-sqlite-node/with-schemas/index.js +70 -55
  141. package/persisters/persister-sqlite-wasm/index.js +70 -55
  142. package/persisters/persister-sqlite-wasm/with-schemas/index.js +70 -55
  143. package/persisters/persister-sqlite3/index.js +70 -55
  144. package/persisters/persister-sqlite3/with-schemas/index.js +70 -55
  145. package/persisters/persister-tinyjoin/index.js +1710 -0
  146. package/persisters/persister-tinyjoin/with-schemas/index.js +1710 -0
  147. package/persisters/with-schemas/index.js +28 -13
  148. package/readme.md +3 -3
  149. package/releases.md +20 -1
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),l=globalThis,w=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(w),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=N(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B="_",U="_id",j="SELECT",k="WHERE",J="TABLE",X="ALTER "+J,Y="FROM",z="DELETE "+Y,G=j+"*"+Y,H="pragma_",K="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+J,Z=/\$tableName/g,aa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>O(p(a,()=>t(n)),e),ea=(a,t=s)=>k+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!w(a)&&v(ra(a),a=>a==sa.prototype||w(ra(a)),()=>!0),la=sa.keys,wa=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return g(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>g(la(a),n=>t(a[n],n)),Ea=(a,t)=>p(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(la(a)),$a=a=>oa(a)&&0==Na(a),_a=Map,Aa=a=>new _a(a),ha=(a,t)=>a?.get(t),ga=(a,t)=>C(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ga(a,(a,e)=>D(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},ba=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:Aa),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=ba(s,t,n,e,i+1);return S(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Ia=(a,t)=>a?.add(t),Sa="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+Sa,Pa=Ra+Sa,Fa="autoLoadIntervalSeconds",xa="rowId"+Sa,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:t+"_values"},Ya=a=>m(a)?a:void 0,za=a=>d(a)||m(a),Ga=(a,t,n,e,i)=>{const s=Aa();return fa(a,(a,r)=>{const c=(w=ua(t,E(a)?{[n]:a}:a),o=sa.values(w),l=Na(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?p(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,_,h,O=0,I=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),pa(at,w,(ha(at,w)??0)+1);const z=Aa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:P(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&D(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?D(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=e(1);return pa(s,w,[i,r,c,o,l]),Ia(ba(r,c??[n],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(ba(t,e??[n],void 0,t=>(M(t,a),S(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=O&&(O=a,Z(z,void 0,O))},na=()=>{ha(at,w)||ha(Wa,w)||!$(ha(Za,w)??[])||(pa(Wa,w),pa(Za,w),pa(at,w))},ea=t=>{(G&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=O&&(await q(async()=>{ta(1),I++,await Ea(()=>F(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||P(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await ra())},oa=async a=>{const t=++L;let n=!0;if(await la(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ta(1),I++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--B||ta(0)}),B||await ia()}else 2==O?j=t:await ra()});t!=L||J?u(a)||await s(a):d=a},r);await sa(e),t!=L||J||await q(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await sa(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),ma},ua=async a=>(1!=O&&await q(()=>q(async()=>{ta(2),R++,await Ea(()=>F(()=>e(H,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&F(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await q(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():D(ha(Za,w),...p(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Wa,w)){pa(Wa,w,1);const a=ha(Za,w);let t=0;await q(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),pa(Wa,w,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>O,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:I,saves:R}),...o,destroy:async()=>(u(_)&&(J=1,_=(async()=>{const a=ha(Za,w),t=T(a,([,a,t])=>t!=X||(a?.(),!1)),n=h;b(a),D(a,...t),await q(()=>q(()=>q(fa,()=>n),()=>Y?.()),()=>{const a=(ha(at,w)??1)-1;pa(at,w,a||void 0),na()})})()),await _,ma)};return wa(ma)},nt=new l.TextEncoder,et=(a,n,i,r,c,o=it,l,w,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),g(await i(f,n),({tn:a,cn:t,uq:n})=>{Ia(Ta(d,a,Da),t),n&&Ia(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(T(p(await f(G+aa(a)+ea(a,n)),a=>{const n=a[t],e=w?ma(va(a,t),w):va(a,t);return[n,u(i)?e:da(T(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!$a(a[1]))):{}},async(a,n,i,w,y,E=!1,m=s,N)=>{const _=u(N)?void 0:Da(N),A=a=>u(_)||I(_,a),b=Da();fa(i??{},a=>g(T(la(a??{}),A),a=>Ia(b,a)));const S=R(b);if(u(_)&&!E&&y&&m==s&&$(S)&&I(d,a))return await f("DROP "+J+aa(a)),pa(d,a),void pa(v,a);const L=ha(d,a),C=Da(T(R(L),a=>a==n||A(a)));if(!$(S))if(I(d,a)){if(await h(p([n,...S],async t=>{M(C,t)||(await f(X+aa(a)+"ADD"+aa(t)+r),Ia(L,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Ia(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${O(p(S,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...S])),pa(v,a,Da([n]));if(await h([...!E&&w?p(R(C),async t=>{t!=n&&(await f(X+aa(a)+"DROP"+aa(t)),M(L,t))}):[]]),E)u(i)?u(_)&&await f(z+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(z+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!$(S)){const i=T(la(t),A);$(i)||await o(f,a,n,i,{[e]:p(i,a=>l?l(t[a]):t[a])},c,L)}}));else if($(S))u(_)&&I(d,a)&&await f(z+aa(a)+ea(a,m));else{const t=T(R(ha(d,a)),a=>a!=n&&A(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,p(t,t=>l?l(a?.[t]):a?.[t])),D(s,n)}),await o(f,a,n,t,e,c,L),await f(z+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await q(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>O(p(a,aa),e))(n,...i)+")VALUES"+O(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+O(p(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,N,$,_)=>{const[A,h,g,O]=et(t,w,y,f,E,m,void 0,void 0,_);return tt(a,()=>O(async()=>{return await A(),a=(await h(c,o))[B]?.[l]??"null",Qa(Ka(a));var a}),a=>O(async()=>{var t;await A(),await g(c,o,{[B]:{[l]:(t=a()??null,Ha(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,N,$,_,A,g,O,b)=>{const[D,I,S,R]=et(t,f,E,$,_,A,g,O,b),L=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!sa.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),C=(a,t,n)=>da(1==n?T(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),M=async(a,t)=>w?await S(y,U,{[B]:u(v)?a:C(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>R(async()=>{await D();const a=await(async()=>da(T(await h(Oa(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(y,U,void 0,d))[B]:{})();return $a(a)&&u(t)?void 0:[a,t]}),(a,t)=>R(async()=>{if(await D(),u(t)){const[t,n]=a();await L(t),await M(n)}else await L(t[0],!0),await M(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,l,y,v,f,m,N="getDb",$,_)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,D]=(a=>{const n=(a=>ua(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=n[Fa];if(n.mode==La){const a=n[Ca]??t;return[1,e,[a,n[Ma]??U,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Da(y),v=Da(y),f=Ga(i,{[qa]:null,[xa]:U,[ka]:s},qa,a=>I(v,a),a=>Ia(d,a)),m=Ga(r,{[Ba]:null,[xa]:U,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>I(v,t),(a,t)=>Ia(d,t));return ga(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?st:rt)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(j+` ${K} d,${Q} s,TOTAL_CHANGES() c FROM ${H}${K} JOIN ${H}${Q}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&I(D,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(D),async(a,t)=>await a(j+` t.name tn,c.name cn,c.pk OR EXISTS(${j} 1 FROM ${H}index_list(t.name)i,${H}index_info(i.name)ii ${k} i."unique"=1 AND ii.name=c.name AND(${j} count(*) FROM ${H}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${k} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,_,1,t,"getElectricClient");export{ot as createElectricSqlPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),l=globalThis,w=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(w),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),$=a=>a.length,_=a=>0==$(a),N=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=$(a))=>a.splice(0,t),I=(a,...t)=>a.push(...t),S=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B=Object,U=a=>B.getPrototypeOf(a),j=B.entries,k=a=>!w(a)&&v(U(a),a=>a==B.prototype||w(U(a)),()=>!0),J=B.keys,X=B.freeze,Y=(...a)=>B.assign(B.create(null),...a),z=(a,t,n)=>(B.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),G=(a=[])=>{const t=B.create(null);return g(a,([a,n])=>z(t,a,n)),t},H=(a,t)=>(delete a[t],a),K=(a,t)=>g(J(a),n=>t(a[n],n)),Q=(a,t)=>p(j(a),([a,n])=>t(n,a)),V=(a,t)=>{const n=G();return K(a,(a,e)=>z(n,e,t(a,e))),n},W=a=>$(J(a)),Z=a=>k(a)&&0==W(a),aa="_",ta="_id",na="SELECT",ea="WHERE",ia="TABLE",sa="ALTER "+ia,ra="FROM",ca="DELETE "+ra,oa=na+"*"+ra,la="pragma_",wa="data_version",ua="schema_version",ya="pragma_table_",da="CREATE "+ia,va=/\$tableName/g,fa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),Ea=()=>"?",ma=(a,t,n=[1])=>O(p(a,()=>t(n)),e),$a=(a,t=s,e)=>{const i=T([t==s?void 0:`(${_a(t,fa(a))})`,e],a=>!u(a));return _(i)?n:ea+O(i,"AND")},_a=(a,t)=>r(a,va,t),Na=Map,Aa=a=>new Na(a),ha=(a,t)=>a?.get(t),ga=(a,t)=>C(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ga(a,(a,e)=>I(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return S(a,t)?e?.(i):pa(a,t,i=n()),i},ba=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>$(t)-2?n:Aa),s=>{if(i>$(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=ba(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Ia=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),Da="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+Da,Pa=Ra+Da,Fa="autoLoadIntervalSeconds",xa="rowId"+Da,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:t+"_values"},Ya=a=>m(a)?a:void 0,za=a=>d(a)||m(a),Ga=(a,t,n,e,i)=>{const s=Aa();return K(a,(a,r)=>{const c=(w=Y(t,E(a)?{[n]:a}:a),o=B.values(w),l=W(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?p(a,Qa):k(a)?V(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,N,h,O=0,S=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const Y={},z=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),pa(at,w,(ha(at,w)??0)+1);const G=Aa(),[H,K,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Z(a)||!Z(t),t.setContent]:P(0))(c,a,l),[aa,ta,na]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&$(a)<1e3&&I(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==$(t)?I(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=e(1);return pa(s,w,[i,r,c,o,l]),Sa(ba(r,c??[n],Ia),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(ba(t,e??[n],void 0,t=>(M(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=$(r);c==$(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>$a),ea=a=>{a!=O&&(O=a,ta(G,void 0,O))},ia=()=>{ha(at,w)||ha(Wa,w)||!_(ha(Za,w)??[])||(pa(Wa,w),pa(Za,w),pa(at,w))},sa=t=>{(H&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},ca=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),oa=async a=>(2!=O&&(await q(async()=>{ea(1),S++,await ma(()=>F(async()=>{const n=await t();m(n)?sa(n):u(n)&&a?W(a):u(n)||P(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),$a),la=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await oa())},wa=async a=>{const t=++L;let n=!0;if(await ua(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ea(1),S++,await(t?ma(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&U--,--B||ea(0)}),B||await ra()}else 2==O?j=t:await oa()});t!=L||J?u(a)||await s(a):d=a},r);await ca(e),t!=L||J||await q(()=>oa(a),()=>{n=!1})}return $a},ua=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await ca(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),$a},ya=async a=>(1!=O&&await q(()=>q(async()=>{ea(2),R++,await ma(()=>F(()=>e(K,a),r))},()=>ea(0)),la),$a),da=async()=>{const t=++k;return await va(!0),t!=k||J||(await ya(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=Q();V(a)&&F(()=>ya(a))}}))),$a},va=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),$a},fa=()=>!u(E),Ea=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await q(()=>t(),async()=>{await n()}),$a},ma=async(...a)=>{let t,n=!1;const e=A(e=>_(a)?e():I(ha(Za,w),...p(a,(i,s)=>{const c=s==$(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,Y]})));if(await(async()=>{if(!ha(Wa,w)){pa(Wa,w,1);const a=ha(Za,w);let t=0;await q(async()=>{for(;t<$(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),pa(Wa,w,0),ia()})}})(),await e,n)throw t;return $a},$a={load:oa,startAutoLoad:wa,stopAutoLoad:ua,isAutoLoading:()=>!u(d),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,wa,va,ua]:[wa,da,ua,va],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return $a},stopAutoPersisting:Ea,getStatus:()=>O,addStatusListener:a=>aa(a,G),delListener:t=>(na(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:S,saves:R}),...o,destroy:async()=>(u(N)&&(J=1,N=(async()=>{const a=ha(Za,w),t=T(a,([,a,t])=>t!=Y||(a?.(),!1)),n=h;b(a),I(a,...t),await q(()=>q(()=>q(Ea,()=>n),()=>z?.()),()=>{const a=(ha(at,w)??1)-1;pa(at,w,a||void 0),ia()})})()),await N,$a)};return X($a)},nt=new l.TextEncoder,et=(a,n,i,r,c,o=it,l,w,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),g(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Ia),t),n&&Sa(Ta(v,a,Ia),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Ia(e);return((a,t)=>S(ha(d,a),t))(a,t)?G(T(p(await f(oa+fa(a)+$a(a,n)),a=>{const n=a[t],e=w?V(H(a,t),w):H(a,t);return[n,u(i)?e:G(T(Q(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||S(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,w,y,E=!1,m=s,$)=>{const N=u($)?void 0:Ia($),A=a=>u(N)||S(N,a),b=Ia();K(i??{},a=>g(T(J(a??{}),A),a=>Sa(b,a)));const D=R(b);if(u(N)&&!E&&y&&m==s&&_(D)&&S(d,a))return await f("DROP "+ia+fa(a)),pa(d,a),void pa(v,a);const L=ha(d,a),C=Ia(T(R(L),a=>a==n||A(a)));if(!_(D))if(S(d,a)){if(await h(p([n,...D],async t=>{M(C,t)||(await f(sa+fa(a)+"ADD"+fa(t)+r),Sa(L,t))})),o==it&&!S(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+fa(e)+"ON"+fa(a)+`(${fa(n)})`),Sa(Ta(v,a,Ia),n)}}else await f(da+fa(a)+`(${fa(n)}${r} PRIMARY KEY${O(p(D,a=>e+fa(a)+r))});`),pa(d,a,Ia([n,...D])),pa(v,a,Ia([n]));if(await h([...!E&&w?p(R(C),async t=>{t!=n&&(await f(sa+fa(a)+"DROP"+fa(t)),M(L,t))}):[]]),E)u(i)?u(N)&&await f(ca+fa(a)+$a(a,m)):await h(Q(i,async(t,e)=>{if(u(t))await f(ca+fa(a)+$a(a,m,`(${fa(n)}=${c([1])})`),[e]);else if(!_(D)){const i=T(J(t),A);_(i)||await o(f,a,n,i,{[e]:p(i,a=>l?l(t[a]):t[a])},c,L)}}));else if(_(D))u(N)&&S(d,a)&&await f(ca+fa(a)+$a(a,m));else{const t=T(R(ha(d,a)),a=>a!=n&&A(a)),e=G(),s=[];K(i??{},(a,n)=>{z(e,n,p(t,t=>l?l(a?.[t]):a?.[t])),I(s,n)}),await o(f,a,n,t,e,c,L),await f(ca+fa(a)+$a(a,m,`${fa(n)}NOT IN(${ma(s,c)})`),s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await q(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+fa(t)+"("+((...a)=>O(p(a,fa),e))(n,...i)+")VALUES"+O(Q(s,a=>"("+r(c)+","+ma(a,r,c)+")"),e)+"ON CONFLICT("+fa(n)+")DO UPDATE SET"+O(p(i,a=>fa(a)+"=excluded."+fa(a)),e),Q(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,$,_,N)=>{const[A,h,g,O]=et(t,w,y,f,E,m,void 0,void 0,N);return tt(a,()=>O(async()=>{return await A(),a=(await h(c,o))[aa]?.[l]??"null",Qa(Ka(a));var a}),a=>O(async()=>{var t;await A(),await g(c,o,{[aa]:{[l]:(t=a()??null,Ha(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,$,_,N,A,g,O,b)=>{const[I,S,D,R]=et(t,f,E,_,N,A,g,O,b),L=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!B.hasOwn(o,l))||await D(n,e,a[c],i,s,t,r)})),C=(a,t,n)=>G(1==n?T(Q(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),M=async(a,t)=>w?await D(y,ta,{[aa]:u(v)?a:C(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>R(async()=>{await I();const a=await(async()=>G(T(await h(Oa(c,async([a,t,n],e)=>[a,await S(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>l?(await S(y,ta,void 0,d))[aa]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>R(async()=>{if(await I(),u(t)){const[t,n]=a();await L(t),await M(n)}else await L(t[0],!0),await M(t[1],!0)}),n,e,i,r,{[$]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,l,y,v,f,m,$="getDb",_,N)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,I]=(a=>{const n=(a=>Y(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=n[Fa];if(n.mode==La){const a=n[Ca]??t;return[1,e,[a,n[Ma]??ta,n[Pa]??Ra],Ia(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=Y(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Ia(y),v=Ia(y),f=Ga(i,{[qa]:null,[xa]:ta,[ka]:s},qa,a=>S(v,a),a=>Sa(d,a)),m=Ga(r,{[Ba]:null,[xa]:ta,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>S(v,t),(a,t)=>Sa(d,t));return ga(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?st:rt)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(na+` ${wa} d,${ua} s,TOTAL_CHANGES() c FROM ${la}${wa} JOIN ${la}${ua}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&S(I,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(I),async(a,t)=>await a(na+` t.name tn,c.name cn,c.pk OR EXISTS(${na} 1 FROM ${la}index_list(t.name)i,${la}index_info(i.name)ii ${ea} i."unique"=1 AND ii.name=c.name AND(${na} count(*) FROM ${la}index_info(i.name))=1)uq FROM ${ya}list()t,${ya}info(t.name)c ${ea} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ma(t,Ea)})ORDER BY t.name,c.name`,t),m,$,n,Ea,_,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,N)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,N,1,t,"getElectricClient");export{ot as createElectricSqlPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),l=globalThis,w=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(w),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=N(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B="_",U="_id",j="SELECT",k="WHERE",J="TABLE",X="ALTER "+J,Y="FROM",z="DELETE "+Y,G=j+"*"+Y,H="pragma_",K="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+J,Z=/\$tableName/g,aa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>O(p(a,()=>t(n)),e),ea=(a,t=s)=>k+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!w(a)&&v(ra(a),a=>a==sa.prototype||w(ra(a)),()=>!0),la=sa.keys,wa=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return g(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>g(la(a),n=>t(a[n],n)),Ea=(a,t)=>p(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(la(a)),$a=a=>oa(a)&&0==Na(a),_a=Map,Aa=a=>new _a(a),ha=(a,t)=>a?.get(t),ga=(a,t)=>C(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ga(a,(a,e)=>D(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},ba=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:Aa),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=ba(s,t,n,e,i+1);return S(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Ia=(a,t)=>a?.add(t),Sa="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+Sa,Pa=Ra+Sa,Fa="autoLoadIntervalSeconds",xa="rowId"+Sa,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:t+"_values"},Ya=a=>m(a)?a:void 0,za=a=>d(a)||m(a),Ga=(a,t,n,e,i)=>{const s=Aa();return fa(a,(a,r)=>{const c=(w=ua(t,E(a)?{[n]:a}:a),o=sa.values(w),l=Na(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?p(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,_,h,O=0,I=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),pa(at,w,(ha(at,w)??0)+1);const z=Aa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:P(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&D(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?D(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=e(1);return pa(s,w,[i,r,c,o,l]),Ia(ba(r,c??[n],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(ba(t,e??[n],void 0,t=>(M(t,a),S(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=O&&(O=a,Z(z,void 0,O))},na=()=>{ha(at,w)||ha(Wa,w)||!$(ha(Za,w)??[])||(pa(Wa,w),pa(Za,w),pa(at,w))},ea=t=>{(G&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=O&&(await q(async()=>{ta(1),I++,await Ea(()=>F(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||P(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await ra())},oa=async a=>{const t=++L;let n=!0;if(await la(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ta(1),I++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--B||ta(0)}),B||await ia()}else 2==O?j=t:await ra()});t!=L||J?u(a)||await s(a):d=a},r);await sa(e),t!=L||J||await q(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await sa(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),ma},ua=async a=>(1!=O&&await q(()=>q(async()=>{ta(2),R++,await Ea(()=>F(()=>e(H,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&F(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await q(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():D(ha(Za,w),...p(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Wa,w)){pa(Wa,w,1);const a=ha(Za,w);let t=0;await q(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),pa(Wa,w,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>O,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:I,saves:R}),...o,destroy:async()=>(u(_)&&(J=1,_=(async()=>{const a=ha(Za,w),t=T(a,([,a,t])=>t!=X||(a?.(),!1)),n=h;b(a),D(a,...t),await q(()=>q(()=>q(fa,()=>n),()=>Y?.()),()=>{const a=(ha(at,w)??1)-1;pa(at,w,a||void 0),na()})})()),await _,ma)};return wa(ma)},nt=new l.TextEncoder,et=(a,n,i,r,c,o=it,l,w,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),g(await i(f,n),({tn:a,cn:t,uq:n})=>{Ia(Ta(d,a,Da),t),n&&Ia(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(T(p(await f(G+aa(a)+ea(a,n)),a=>{const n=a[t],e=w?ma(va(a,t),w):va(a,t);return[n,u(i)?e:da(T(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!$a(a[1]))):{}},async(a,n,i,w,y,E=!1,m=s,N)=>{const _=u(N)?void 0:Da(N),A=a=>u(_)||I(_,a),b=Da();fa(i??{},a=>g(T(la(a??{}),A),a=>Ia(b,a)));const S=R(b);if(u(_)&&!E&&y&&m==s&&$(S)&&I(d,a))return await f("DROP "+J+aa(a)),pa(d,a),void pa(v,a);const L=ha(d,a),C=Da(T(R(L),a=>a==n||A(a)));if(!$(S))if(I(d,a)){if(await h(p([n,...S],async t=>{M(C,t)||(await f(X+aa(a)+"ADD"+aa(t)+r),Ia(L,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Ia(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${O(p(S,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...S])),pa(v,a,Da([n]));if(await h([...!E&&w?p(R(C),async t=>{t!=n&&(await f(X+aa(a)+"DROP"+aa(t)),M(L,t))}):[]]),E)u(i)?u(_)&&await f(z+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(z+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!$(S)){const i=T(la(t),A);$(i)||await o(f,a,n,i,{[e]:p(i,a=>l?l(t[a]):t[a])},c,L)}}));else if($(S))u(_)&&I(d,a)&&await f(z+aa(a)+ea(a,m));else{const t=T(R(ha(d,a)),a=>a!=n&&A(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,p(t,t=>l?l(a?.[t]):a?.[t])),D(s,n)}),await o(f,a,n,t,e,c,L),await f(z+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await q(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>O(p(a,aa),e))(n,...i)+")VALUES"+O(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+O(p(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,N,$,_)=>{const[A,h,g,O]=et(t,w,y,f,E,m,void 0,void 0,_);return tt(a,()=>O(async()=>{return await A(),a=(await h(c,o))[B]?.[l]??"null",Qa(Ka(a));var a}),a=>O(async()=>{var t;await A(),await g(c,o,{[B]:{[l]:(t=a()??null,Ha(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,N,$,_,A,g,O,b)=>{const[D,I,S,R]=et(t,f,E,$,_,A,g,O,b),L=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!sa.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),C=(a,t,n)=>da(1==n?T(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),M=async(a,t)=>w?await S(y,U,{[B]:u(v)?a:C(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>R(async()=>{await D();const a=await(async()=>da(T(await h(Oa(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(y,U,void 0,d))[B]:{})();return $a(a)&&u(t)?void 0:[a,t]}),(a,t)=>R(async()=>{if(await D(),u(t)){const[t,n]=a();await L(t),await M(n)}else await L(t[0],!0),await M(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,l,y,v,f,m,N="getDb",$,_)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,D]=(a=>{const n=(a=>ua(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=n[Fa];if(n.mode==La){const a=n[Ca]??t;return[1,e,[a,n[Ma]??U,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Da(y),v=Da(y),f=Ga(i,{[qa]:null,[xa]:U,[ka]:s},qa,a=>I(v,a),a=>Ia(d,a)),m=Ga(r,{[Ba]:null,[xa]:U,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>I(v,t),(a,t)=>Ia(d,t));return ga(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?st:rt)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(j+` ${K} d,${Q} s,TOTAL_CHANGES() c FROM ${H}${K} JOIN ${H}${Q}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&I(D,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(D),async(a,t)=>await a(j+` t.name tn,c.name cn,c.pk OR EXISTS(${j} 1 FROM ${H}index_list(t.name)i,${H}index_info(i.name)ii ${k} i."unique"=1 AND ii.name=c.name AND(${j} count(*) FROM ${H}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${k} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,_,1,t,"getElectricClient");export{ot as createElectricSqlPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),l=globalThis,w=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(w),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),$=a=>a.length,_=a=>0==$(a),N=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=$(a))=>a.splice(0,t),I=(a,...t)=>a.push(...t),S=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B=Object,U=a=>B.getPrototypeOf(a),j=B.entries,k=a=>!w(a)&&v(U(a),a=>a==B.prototype||w(U(a)),()=>!0),J=B.keys,X=B.freeze,Y=(...a)=>B.assign(B.create(null),...a),z=(a,t,n)=>(B.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),G=(a=[])=>{const t=B.create(null);return g(a,([a,n])=>z(t,a,n)),t},H=(a,t)=>(delete a[t],a),K=(a,t)=>g(J(a),n=>t(a[n],n)),Q=(a,t)=>p(j(a),([a,n])=>t(n,a)),V=(a,t)=>{const n=G();return K(a,(a,e)=>z(n,e,t(a,e))),n},W=a=>$(J(a)),Z=a=>k(a)&&0==W(a),aa="_",ta="_id",na="SELECT",ea="WHERE",ia="TABLE",sa="ALTER "+ia,ra="FROM",ca="DELETE "+ra,oa=na+"*"+ra,la="pragma_",wa="data_version",ua="schema_version",ya="pragma_table_",da="CREATE "+ia,va=/\$tableName/g,fa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),Ea=()=>"?",ma=(a,t,n=[1])=>O(p(a,()=>t(n)),e),$a=(a,t=s,e)=>{const i=T([t==s?void 0:`(${_a(t,fa(a))})`,e],a=>!u(a));return _(i)?n:ea+O(i,"AND")},_a=(a,t)=>r(a,va,t),Na=Map,Aa=a=>new Na(a),ha=(a,t)=>a?.get(t),ga=(a,t)=>C(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ga(a,(a,e)=>I(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return S(a,t)?e?.(i):pa(a,t,i=n()),i},ba=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>$(t)-2?n:Aa),s=>{if(i>$(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=ba(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Ia=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),Da="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+Da,Pa=Ra+Da,Fa="autoLoadIntervalSeconds",xa="rowId"+Da,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:t+"_values"},Ya=a=>m(a)?a:void 0,za=a=>d(a)||m(a),Ga=(a,t,n,e,i)=>{const s=Aa();return K(a,(a,r)=>{const c=(w=Y(t,E(a)?{[n]:a}:a),o=B.values(w),l=W(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?p(a,Qa):k(a)?V(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,N,h,O=0,S=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const Y={},z=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),pa(at,w,(ha(at,w)??0)+1);const G=Aa(),[H,K,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Z(a)||!Z(t),t.setContent]:P(0))(c,a,l),[aa,ta,na]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&$(a)<1e3&&I(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==$(t)?I(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=e(1);return pa(s,w,[i,r,c,o,l]),Sa(ba(r,c??[n],Ia),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(ba(t,e??[n],void 0,t=>(M(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=$(r);c==$(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>$a),ea=a=>{a!=O&&(O=a,ta(G,void 0,O))},ia=()=>{ha(at,w)||ha(Wa,w)||!_(ha(Za,w)??[])||(pa(Wa,w),pa(Za,w),pa(at,w))},sa=t=>{(H&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},ca=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),oa=async a=>(2!=O&&(await q(async()=>{ea(1),S++,await ma(()=>F(async()=>{const n=await t();m(n)?sa(n):u(n)&&a?W(a):u(n)||P(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),$a),la=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await oa())},wa=async a=>{const t=++L;let n=!0;if(await ua(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ea(1),S++,await(t?ma(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&U--,--B||ea(0)}),B||await ra()}else 2==O?j=t:await oa()});t!=L||J?u(a)||await s(a):d=a},r);await ca(e),t!=L||J||await q(()=>oa(a),()=>{n=!1})}return $a},ua=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await ca(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),$a},ya=async a=>(1!=O&&await q(()=>q(async()=>{ea(2),R++,await ma(()=>F(()=>e(K,a),r))},()=>ea(0)),la),$a),da=async()=>{const t=++k;return await va(!0),t!=k||J||(await ya(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=Q();V(a)&&F(()=>ya(a))}}))),$a},va=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),$a},fa=()=>!u(E),Ea=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await q(()=>t(),async()=>{await n()}),$a},ma=async(...a)=>{let t,n=!1;const e=A(e=>_(a)?e():I(ha(Za,w),...p(a,(i,s)=>{const c=s==$(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,Y]})));if(await(async()=>{if(!ha(Wa,w)){pa(Wa,w,1);const a=ha(Za,w);let t=0;await q(async()=>{for(;t<$(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),pa(Wa,w,0),ia()})}})(),await e,n)throw t;return $a},$a={load:oa,startAutoLoad:wa,stopAutoLoad:ua,isAutoLoading:()=>!u(d),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,wa,va,ua]:[wa,da,ua,va],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return $a},stopAutoPersisting:Ea,getStatus:()=>O,addStatusListener:a=>aa(a,G),delListener:t=>(na(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:S,saves:R}),...o,destroy:async()=>(u(N)&&(J=1,N=(async()=>{const a=ha(Za,w),t=T(a,([,a,t])=>t!=Y||(a?.(),!1)),n=h;b(a),I(a,...t),await q(()=>q(()=>q(Ea,()=>n),()=>z?.()),()=>{const a=(ha(at,w)??1)-1;pa(at,w,a||void 0),ia()})})()),await N,$a)};return X($a)},nt=new l.TextEncoder,et=(a,n,i,r,c,o=it,l,w,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),g(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Ia),t),n&&Sa(Ta(v,a,Ia),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Ia(e);return((a,t)=>S(ha(d,a),t))(a,t)?G(T(p(await f(oa+fa(a)+$a(a,n)),a=>{const n=a[t],e=w?V(H(a,t),w):H(a,t);return[n,u(i)?e:G(T(Q(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||S(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,w,y,E=!1,m=s,$)=>{const N=u($)?void 0:Ia($),A=a=>u(N)||S(N,a),b=Ia();K(i??{},a=>g(T(J(a??{}),A),a=>Sa(b,a)));const D=R(b);if(u(N)&&!E&&y&&m==s&&_(D)&&S(d,a))return await f("DROP "+ia+fa(a)),pa(d,a),void pa(v,a);const L=ha(d,a),C=Ia(T(R(L),a=>a==n||A(a)));if(!_(D))if(S(d,a)){if(await h(p([n,...D],async t=>{M(C,t)||(await f(sa+fa(a)+"ADD"+fa(t)+r),Sa(L,t))})),o==it&&!S(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+fa(e)+"ON"+fa(a)+`(${fa(n)})`),Sa(Ta(v,a,Ia),n)}}else await f(da+fa(a)+`(${fa(n)}${r} PRIMARY KEY${O(p(D,a=>e+fa(a)+r))});`),pa(d,a,Ia([n,...D])),pa(v,a,Ia([n]));if(await h([...!E&&w?p(R(C),async t=>{t!=n&&(await f(sa+fa(a)+"DROP"+fa(t)),M(L,t))}):[]]),E)u(i)?u(N)&&await f(ca+fa(a)+$a(a,m)):await h(Q(i,async(t,e)=>{if(u(t))await f(ca+fa(a)+$a(a,m,`(${fa(n)}=${c([1])})`),[e]);else if(!_(D)){const i=T(J(t),A);_(i)||await o(f,a,n,i,{[e]:p(i,a=>l?l(t[a]):t[a])},c,L)}}));else if(_(D))u(N)&&S(d,a)&&await f(ca+fa(a)+$a(a,m));else{const t=T(R(ha(d,a)),a=>a!=n&&A(a)),e=G(),s=[];K(i??{},(a,n)=>{z(e,n,p(t,t=>l?l(a?.[t]):a?.[t])),I(s,n)}),await o(f,a,n,t,e,c,L),await f(ca+fa(a)+$a(a,m,`${fa(n)}NOT IN(${ma(s,c)})`),s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await q(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+fa(t)+"("+((...a)=>O(p(a,fa),e))(n,...i)+")VALUES"+O(Q(s,a=>"("+r(c)+","+ma(a,r,c)+")"),e)+"ON CONFLICT("+fa(n)+")DO UPDATE SET"+O(p(i,a=>fa(a)+"=excluded."+fa(a)),e),Q(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,$,_,N)=>{const[A,h,g,O]=et(t,w,y,f,E,m,void 0,void 0,N);return tt(a,()=>O(async()=>{return await A(),a=(await h(c,o))[aa]?.[l]??"null",Qa(Ka(a));var a}),a=>O(async()=>{var t;await A(),await g(c,o,{[aa]:{[l]:(t=a()??null,Ha(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,$,_,N,A,g,O,b)=>{const[I,S,D,R]=et(t,f,E,_,N,A,g,O,b),L=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!B.hasOwn(o,l))||await D(n,e,a[c],i,s,t,r)})),C=(a,t,n)=>G(1==n?T(Q(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),M=async(a,t)=>w?await D(y,ta,{[aa]:u(v)?a:C(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>R(async()=>{await I();const a=await(async()=>G(T(await h(Oa(c,async([a,t,n],e)=>[a,await S(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>l?(await S(y,ta,void 0,d))[aa]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>R(async()=>{if(await I(),u(t)){const[t,n]=a();await L(t),await M(n)}else await L(t[0],!0),await M(t[1],!0)}),n,e,i,r,{[$]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,l,y,v,f,m,$="getDb",_,N)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,I]=(a=>{const n=(a=>Y(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=n[Fa];if(n.mode==La){const a=n[Ca]??t;return[1,e,[a,n[Ma]??ta,n[Pa]??Ra],Ia(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=Y(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Ia(y),v=Ia(y),f=Ga(i,{[qa]:null,[xa]:ta,[ka]:s},qa,a=>S(v,a),a=>Sa(d,a)),m=Ga(r,{[Ba]:null,[xa]:ta,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>S(v,t),(a,t)=>Sa(d,t));return ga(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?st:rt)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(na+` ${wa} d,${ua} s,TOTAL_CHANGES() c FROM ${la}${wa} JOIN ${la}${ua}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&S(I,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(I),async(a,t)=>await a(na+` t.name tn,c.name cn,c.pk OR EXISTS(${na} 1 FROM ${la}index_list(t.name)i,${la}index_info(i.name)ii ${ea} i."unique"=1 AND ii.name=c.name AND(${na} count(*) FROM ${la}index_info(i.name))=1)uq FROM ${ya}list()t,${ya}info(t.name)c ${ea} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ma(t,Ea)})ORDER BY t.name,c.name`,t),m,$,n,Ea,_,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,N)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,N,1,t,"getElectricClient");export{ot as createElectricSqlPersister};
@@ -1 +1 @@
1
- import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=()=>"?",ea=(a,t,n=[1])=>P(F(a,()=>t(n)),i),ia=(a,t=r)=>J+`(${sa(t,ta(a))})`,sa=(a,t)=>c(a,aa,t),ra=Object,ca=a=>ra.getPrototypeOf(a),oa=ra.entries,la=a=>!u(a)&&f(ca(a),a=>a==ra.prototype||u(ca(a)),()=>!0),wa=ra.keys,ua=ra.freeze,ya=(...a)=>ra.assign(ra.create(null),...a),da=(a,t,n)=>(ra.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),va=(a=[])=>{const t=ra.create(null);return M(a,([a,n])=>da(t,a,n)),t},fa=(a,t)=>(delete a[t],a),ma=(a,t)=>M(wa(a),n=>t(a[n],n)),Ea=(a,t)=>F(oa(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=va();return ma(a,(a,e)=>da(n,e,t(a,e))),n},Na=a=>N(wa(a)),$a=a=>la(a)&&0==Na(a),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),Da=a=>new Set(A(a)||y(a)?a:[a]),ba=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return ma(a,(a,r)=>{const c=(w=ya(t,E(a)?{[n]:a}:a),o=ra.values(w),l=Na(t),o.slice(0,l));var o,l,w;d(c[0])||e(r,c[0])||(i(r,c[0]),Ta(s,r,c))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):la(a)?Aa(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const z=pa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,c,o,l]),ba(Sa(r,c??[e],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},ea=t=>{(G&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await wa()},sa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();A(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},wa=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await wa(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>wa(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:wa,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),na()})})()),await E,Ea)};return ua(Ea)},et=new w.TextEncoder,it=(a,t,e,s,c,o=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{ba(Ia(d,a,Da),t),n&&ba(Ia(v,a,Da),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Da(e);return((a,t)=>O(ha(d,a),t))(a,t)?va(x(F(await f(H+ta(a)+ia(a,n)),a=>{const n=a[t],e=w?Aa(fa(a,t),w):fa(a,t);return[n,y(i)?e:va(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!$a(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:Da(A),_=a=>y(N)||O(N,a),p=Da();ma(e??{},a=>M(x(wa(a??{}),_),a=>ba(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+X+ta(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=Da(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{D(S,t)||(await f(Y+ta(a)+"ADD"+ta(t)+s),ba(I,t))})),o==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),ba(Ia(v,a,Da),t)}}else await f(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(g,a=>i+ta(a)+s))});`),Ta(d,a,Da([t,...g])),Ta(v,a,Da([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(Y+ta(a)+"DROP"+ta(n)),D(I,n))}):[]]),m)y(e)?y(N)&&await f(G+ta(a)+ia(a,E)):await h(Ea(e,async(n,e)=>{if(y(n))await f(G+ta(a)+ia(a,E)+`AND(${ta(t)}=${c([1])})`,[e]);else if(!$(g)){const i=x(wa(n),_);$(i)||await o(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},c,I)}}));else if($(g))y(N)&&O(d,a)&&await f(G+ta(a)+ia(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=va(),s=[];ma(e??{},(a,t)=>{da(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await o(f,a,t,n,i,c,I),await f(G+ta(a)+ia(a,E)+`AND${ta(t)}NOT IN(${ea(s,c)})`,s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const c=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(Ea(s,a=>"("+r(c)+","+ea(a,r,c)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),Ea(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(c,o))[U]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(c,o,{[U]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ct=(a,t,n,e,i,s,r,[c,o,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,D]=it(t,f,m,N,$,_,p,O,g),b=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!ra.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>va(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,j,{[U]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>D(async()=>{await T();const a=await(async()=>va(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(u,j,void 0,d))[U]:{})();return $a(a)&&y(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),y(t)){const[t,n]=a();await b(t),await L(n)}else await b(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ot=(a,t,i,s,c,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ya(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??j,t[Fa]??La],Da(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ya(Ya,c),{load:l,save:w}=o,u=[Ga(l),Ga(w),o[Ua],za(l),za(w)],y=u[2],d=Da(y),v=Da(y),f=Ha(i,{[Ba]:null,[qa]:j,[Ja]:r},Ba,a=>O(v,a),a=>ba(d,a)),m=Ha(s,{[Ua]:null,[qa]:j,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>ba(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?rt:ct)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ea(t,na)})ORDER BY t.name,c.name`,t),m,A,e,na,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ot(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
1
+ import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",o=(a,t,n)=>a.replace(t,n),c=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new c(a),h=async a=>c.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),D=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U=Object,j=a=>U.getPrototypeOf(a),k=U.entries,J=a=>!u(a)&&f(j(a),a=>a==U.prototype||u(j(a)),()=>!0),X=U.keys,Y=U.freeze,z=(...a)=>U.assign(U.create(null),...a),G=(a,t,n)=>(U.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),H=(a=[])=>{const t=U.create(null);return M(a,([a,n])=>G(t,a,n)),t},K=(a,t)=>(delete a[t],a),Q=(a,t)=>M(X(a),n=>t(a[n],n)),V=(a,t)=>F(k(a),([a,n])=>t(n,a)),W=(a,t)=>{const n=H();return Q(a,(a,e)=>G(n,e,t(a,e))),n},Z=a=>N(X(a)),aa=a=>J(a)&&0==Z(a),ta="_",na="_id",ea="SELECT",ia="WHERE",sa="TABLE",ra="ALTER "+sa,oa="FROM",ca="DELETE "+oa,la=ea+"*"+oa,wa="pragma_",ua="data_version",ya="schema_version",da="pragma_table_",va="CREATE "+sa,fa=/\$tableName/g,ma=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${o(a,/"/g,'""')}"`),"."),Ea=()=>"?",Aa=(a,t,n=[1])=>P(F(a,()=>t(n)),i),Na=(a,t=r,n)=>{const i=x([t==r?void 0:`(${$a(t,ma(a))})`,n],a=>!y(a));return $(i)?e:ia+P(i,"AND")},$a=(a,t)=>o(a,fa,t),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(b(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),ba=a=>new Set(A(a)||y(a)?a:[a]),Da=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return Q(a,(a,r)=>{const o=(w=z(t,E(a)?{[n]:a}:a),c=U.values(w),l=Z(t),c.slice(0,l));var c,l,w;d(o[0])||e(r,o[0])||(i(r,o[0]),Ta(s,r,o))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):J(a)?W(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,o,c={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},z=c.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const G=pa(),[H,K,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!aa(a)||!aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!aa(a)||!aa(t),t.setContent]:D(0))(o,a,l),[Z,ta,na]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let o,c=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{c||(o=a),c=!0})?.(a)}})(e):e()})),c)throw o};return[(i,r,o,c=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,o,c,l]),Da(Sa(r,o??[e],ba),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(b(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const o=N(r);o==N(n)?a(t,...r,...i(r)):d(n[o])?M(e[o]?.(...r)??[],a=>s(...r,a)):s(...r,n[o])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Aa),ea=a=>{a!=h&&(h=a,ta(G,void 0,h))},ia=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},sa=t=>{(H&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},oa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ca=async a=>(2!=h&&(await C(async()=>{ea(1),O++,await Ea(()=>R(async()=>{const n=await t();A(n)?sa(n):y(n)&&a?W(a):y(n)||D(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),Aa),la=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ca())},wa=async a=>{const t=++I;let n=!0;if(await ua(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ea(1),O++,await(t?Ea(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&U--,--P||ea(0)}),P||await ra()}else 2==h?j=t:await ca()});t!=I||J?y(a)||await s(a):u=a},r);await oa(e),t!=I||J||await C(()=>ca(a),()=>{n=!1})}return Aa},ua=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await oa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Aa},ya=async a=>(1!=h&&await C(()=>C(async()=>{ea(2),T++,await Ea(()=>R(()=>n(K,a),r))},()=>ea(0)),la),Aa),da=async()=>{const t=++k;return await va(!0),t!=k||J||(await ya(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=Q();V(a)&&R(()=>ya(a))}}))),Aa},va=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Aa},fa=()=>!y(f),ma=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await C(()=>t(),async()=>{await n()}),Aa},Ea=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const o=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}o&&e()},()=>{_=void 0,a()})},o?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),ia()})}})(),await e,n)throw t;return Aa},Aa={load:ca,startAutoLoad:wa,stopAutoLoad:ua,isAutoLoading:()=>!y(u),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,wa,va,ua]:[wa,da,ua,va],r=n(a),o=t?k:I;await r;const c=e(a),l=t?I:k;try{await c}catch(a){throw l==(t?I:k)&&await L(s),o==(t?k:I)&&await L(i),a}return Aa},stopAutoPersisting:ma,getStatus:()=>h,addStatusListener:a=>Z(a,G),delListener:t=>(na(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...c,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(ma,()=>n),()=>z?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),ia()})})()),await E,Aa)};return Y(Aa)},et=new w.TextEncoder,it=(a,t,e,s,o,c=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{Da(Ia(d,a,ba),t),n&&Da(Ia(v,a,ba),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:ba(e);return((a,t)=>O(ha(d,a),t))(a,t)?H(x(F(await f(la+ma(a)+Na(a,n)),a=>{const n=a[t],e=w?W(K(a,t),w):K(a,t);return[n,y(i)?e:H(x(V(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!aa(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:ba(A),_=a=>y(N)||O(N,a),p=ba();Q(e??{},a=>M(x(X(a??{}),_),a=>Da(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+sa+ma(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=ba(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{b(S,t)||(await f(ra+ma(a)+"ADD"+ma(t)+s),Da(I,t))})),c==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ma(e)+"ON"+ma(a)+`(${ma(t)})`),Da(Ia(v,a,ba),t)}}else await f(va+ma(a)+`(${ma(t)}${s} PRIMARY KEY${P(F(g,a=>i+ma(a)+s))});`),Ta(d,a,ba([t,...g])),Ta(v,a,ba([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(ra+ma(a)+"DROP"+ma(n)),b(I,n))}):[]]),m)y(e)?y(N)&&await f(ca+ma(a)+Na(a,E)):await h(V(e,async(n,e)=>{if(y(n))await f(ca+ma(a)+Na(a,E,`(${ma(t)}=${o([1])})`),[e]);else if(!$(g)){const i=x(X(n),_);$(i)||await c(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},o,I)}}));else if($(g))y(N)&&O(d,a)&&await f(ca+ma(a)+Na(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=H(),s=[];Q(e??{},(a,t)=>{G(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await c(f,a,t,n,i,o,I),await f(ca+ma(a)+Na(a,E,`${ma(t)}NOT IN(${Aa(s,o)})`),s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const o=[1];await a("INSERT INTO"+ma(t)+"("+((...a)=>P(F(a,ma),i))(n,...e)+")VALUES"+P(V(s,a=>"("+r(o)+","+Aa(a,r,o)+")"),i)+"ON CONFLICT("+ma(n)+")DO UPDATE SET"+P(F(e,a=>ma(a)+"=excluded."+ma(a)),i),V(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[o,c,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(o,c))[ta]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(o,c,{[ta]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ot=(a,t,n,e,i,s,r,[o,c,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,b]=it(t,f,m,N,$,_,p,O,g),D=(a,t)=>h(ga(c,async([n,e,i,s,r],o)=>{var c,l;t&&(c=a,l=o,!U.hasOwn(c,l))||await S(n,e,a[o],i,s,t,r)})),R=(a,t,n)=>H(1==n?x(V(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,na,{[ta]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>b(async()=>{await T();const a=await(async()=>H(x(await h(ga(o,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!aa(a[1]))))(),t=await(async()=>l?(await I(u,na,void 0,d))[ta]:{})();return aa(a)&&y(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await T(),y(t)){const[t,n]=a();await D(t),await L(n)}else await D(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ct=(a,t,i,s,o,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,b,R]=(a=>{const t=(a=>z(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??na,t[Fa]??La],ba(a)]}const{tables:{load:i={},save:s={}}={},values:o={}}=t,c=z(Ya,o),{load:l,save:w}=c,u=[Ga(l),Ga(w),c[Ua],za(l),za(w)],y=u[2],d=ba(y),v=ba(y),f=Ha(i,{[Ba]:null,[qa]:na,[Ja]:r},Ba,a=>O(v,a),a=>Da(d,a)),m=Ha(s,{[Ua]:null,[qa]:na,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>Da(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&D(0),(I?rt:ot)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(ea+` ${ua} d,${ya} s,TOTAL_CHANGES() c FROM ${wa}${ua} JOIN ${wa}${ya}`);if(e&&(n!=_||i!=p||s!=h)){const o=t&&!r&&!u(_);_=n,p=i,h=s,o&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const o=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==o&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=o,o},f=s(a=>{e&&O(R,a)&&(r=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await o(f)})})},a=>a(),w,d,f,b,T(R),async(a,t)=>await a(ea+` t.name tn,c.name cn,c.pk OR EXISTS(${ea} 1 FROM ${wa}index_list(t.name)i,${wa}index_info(i.name)ii ${ia} i."unique"=1 AND ii.name=c.name AND(${ea} count(*) FROM ${wa}index_info(i.name))=1)uq FROM ${da}list()t,${da}info(t.name)c ${ia} t.schema='main'AND t.type IN('table','view')AND t.name IN(${Aa(t,Ea)})ORDER BY t.name,c.name`,t),m,A,e,Ea,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ct(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
@@ -1 +1 @@
1
- import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=()=>"?",ea=(a,t,n=[1])=>P(F(a,()=>t(n)),i),ia=(a,t=r)=>J+`(${sa(t,ta(a))})`,sa=(a,t)=>c(a,aa,t),ra=Object,ca=a=>ra.getPrototypeOf(a),oa=ra.entries,la=a=>!u(a)&&f(ca(a),a=>a==ra.prototype||u(ca(a)),()=>!0),wa=ra.keys,ua=ra.freeze,ya=(...a)=>ra.assign(ra.create(null),...a),da=(a,t,n)=>(ra.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),va=(a=[])=>{const t=ra.create(null);return M(a,([a,n])=>da(t,a,n)),t},fa=(a,t)=>(delete a[t],a),ma=(a,t)=>M(wa(a),n=>t(a[n],n)),Ea=(a,t)=>F(oa(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=va();return ma(a,(a,e)=>da(n,e,t(a,e))),n},Na=a=>N(wa(a)),$a=a=>la(a)&&0==Na(a),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),Da=a=>new Set(A(a)||y(a)?a:[a]),ba=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return ma(a,(a,r)=>{const c=(w=ya(t,E(a)?{[n]:a}:a),o=ra.values(w),l=Na(t),o.slice(0,l));var o,l,w;d(c[0])||e(r,c[0])||(i(r,c[0]),Ta(s,r,c))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):la(a)?Aa(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const z=pa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,c,o,l]),ba(Sa(r,c??[e],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},ea=t=>{(G&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await wa()},sa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();A(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},wa=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await wa(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>wa(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:wa,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),na()})})()),await E,Ea)};return ua(Ea)},et=new w.TextEncoder,it=(a,t,e,s,c,o=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{ba(Ia(d,a,Da),t),n&&ba(Ia(v,a,Da),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Da(e);return((a,t)=>O(ha(d,a),t))(a,t)?va(x(F(await f(H+ta(a)+ia(a,n)),a=>{const n=a[t],e=w?Aa(fa(a,t),w):fa(a,t);return[n,y(i)?e:va(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!$a(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:Da(A),_=a=>y(N)||O(N,a),p=Da();ma(e??{},a=>M(x(wa(a??{}),_),a=>ba(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+X+ta(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=Da(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{D(S,t)||(await f(Y+ta(a)+"ADD"+ta(t)+s),ba(I,t))})),o==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),ba(Ia(v,a,Da),t)}}else await f(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(g,a=>i+ta(a)+s))});`),Ta(d,a,Da([t,...g])),Ta(v,a,Da([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(Y+ta(a)+"DROP"+ta(n)),D(I,n))}):[]]),m)y(e)?y(N)&&await f(G+ta(a)+ia(a,E)):await h(Ea(e,async(n,e)=>{if(y(n))await f(G+ta(a)+ia(a,E)+`AND(${ta(t)}=${c([1])})`,[e]);else if(!$(g)){const i=x(wa(n),_);$(i)||await o(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},c,I)}}));else if($(g))y(N)&&O(d,a)&&await f(G+ta(a)+ia(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=va(),s=[];ma(e??{},(a,t)=>{da(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await o(f,a,t,n,i,c,I),await f(G+ta(a)+ia(a,E)+`AND${ta(t)}NOT IN(${ea(s,c)})`,s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const c=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(Ea(s,a=>"("+r(c)+","+ea(a,r,c)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),Ea(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(c,o))[U]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(c,o,{[U]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ct=(a,t,n,e,i,s,r,[c,o,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,D]=it(t,f,m,N,$,_,p,O,g),b=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!ra.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>va(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,j,{[U]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>D(async()=>{await T();const a=await(async()=>va(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(u,j,void 0,d))[U]:{})();return $a(a)&&y(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),y(t)){const[t,n]=a();await b(t),await L(n)}else await b(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ot=(a,t,i,s,c,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ya(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??j,t[Fa]??La],Da(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ya(Ya,c),{load:l,save:w}=o,u=[Ga(l),Ga(w),o[Ua],za(l),za(w)],y=u[2],d=Da(y),v=Da(y),f=Ha(i,{[Ba]:null,[qa]:j,[Ja]:r},Ba,a=>O(v,a),a=>ba(d,a)),m=Ha(s,{[Ua]:null,[qa]:j,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>ba(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?rt:ct)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ea(t,na)})ORDER BY t.name,c.name`,t),m,A,e,na,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ot(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
1
+ import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",o=(a,t,n)=>a.replace(t,n),c=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new c(a),h=async a=>c.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),D=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U=Object,j=a=>U.getPrototypeOf(a),k=U.entries,J=a=>!u(a)&&f(j(a),a=>a==U.prototype||u(j(a)),()=>!0),X=U.keys,Y=U.freeze,z=(...a)=>U.assign(U.create(null),...a),G=(a,t,n)=>(U.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),H=(a=[])=>{const t=U.create(null);return M(a,([a,n])=>G(t,a,n)),t},K=(a,t)=>(delete a[t],a),Q=(a,t)=>M(X(a),n=>t(a[n],n)),V=(a,t)=>F(k(a),([a,n])=>t(n,a)),W=(a,t)=>{const n=H();return Q(a,(a,e)=>G(n,e,t(a,e))),n},Z=a=>N(X(a)),aa=a=>J(a)&&0==Z(a),ta="_",na="_id",ea="SELECT",ia="WHERE",sa="TABLE",ra="ALTER "+sa,oa="FROM",ca="DELETE "+oa,la=ea+"*"+oa,wa="pragma_",ua="data_version",ya="schema_version",da="pragma_table_",va="CREATE "+sa,fa=/\$tableName/g,ma=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${o(a,/"/g,'""')}"`),"."),Ea=()=>"?",Aa=(a,t,n=[1])=>P(F(a,()=>t(n)),i),Na=(a,t=r,n)=>{const i=x([t==r?void 0:`(${$a(t,ma(a))})`,n],a=>!y(a));return $(i)?e:ia+P(i,"AND")},$a=(a,t)=>o(a,fa,t),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(b(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),ba=a=>new Set(A(a)||y(a)?a:[a]),Da=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return Q(a,(a,r)=>{const o=(w=z(t,E(a)?{[n]:a}:a),c=U.values(w),l=Z(t),c.slice(0,l));var c,l,w;d(o[0])||e(r,o[0])||(i(r,o[0]),Ta(s,r,o))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):J(a)?W(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,o,c={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},z=c.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const G=pa(),[H,K,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!aa(a)||!aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!aa(a)||!aa(t),t.setContent]:D(0))(o,a,l),[Z,ta,na]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let o,c=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{c||(o=a),c=!0})?.(a)}})(e):e()})),c)throw o};return[(i,r,o,c=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,o,c,l]),Da(Sa(r,o??[e],ba),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(b(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const o=N(r);o==N(n)?a(t,...r,...i(r)):d(n[o])?M(e[o]?.(...r)??[],a=>s(...r,a)):s(...r,n[o])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Aa),ea=a=>{a!=h&&(h=a,ta(G,void 0,h))},ia=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},sa=t=>{(H&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},oa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ca=async a=>(2!=h&&(await C(async()=>{ea(1),O++,await Ea(()=>R(async()=>{const n=await t();A(n)?sa(n):y(n)&&a?W(a):y(n)||D(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),Aa),la=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ca())},wa=async a=>{const t=++I;let n=!0;if(await ua(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ea(1),O++,await(t?Ea(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&U--,--P||ea(0)}),P||await ra()}else 2==h?j=t:await ca()});t!=I||J?y(a)||await s(a):u=a},r);await oa(e),t!=I||J||await C(()=>ca(a),()=>{n=!1})}return Aa},ua=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await oa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Aa},ya=async a=>(1!=h&&await C(()=>C(async()=>{ea(2),T++,await Ea(()=>R(()=>n(K,a),r))},()=>ea(0)),la),Aa),da=async()=>{const t=++k;return await va(!0),t!=k||J||(await ya(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=Q();V(a)&&R(()=>ya(a))}}))),Aa},va=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Aa},fa=()=>!y(f),ma=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await C(()=>t(),async()=>{await n()}),Aa},Ea=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const o=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}o&&e()},()=>{_=void 0,a()})},o?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),ia()})}})(),await e,n)throw t;return Aa},Aa={load:ca,startAutoLoad:wa,stopAutoLoad:ua,isAutoLoading:()=>!y(u),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,wa,va,ua]:[wa,da,ua,va],r=n(a),o=t?k:I;await r;const c=e(a),l=t?I:k;try{await c}catch(a){throw l==(t?I:k)&&await L(s),o==(t?k:I)&&await L(i),a}return Aa},stopAutoPersisting:ma,getStatus:()=>h,addStatusListener:a=>Z(a,G),delListener:t=>(na(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...c,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(ma,()=>n),()=>z?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),ia()})})()),await E,Aa)};return Y(Aa)},et=new w.TextEncoder,it=(a,t,e,s,o,c=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{Da(Ia(d,a,ba),t),n&&Da(Ia(v,a,ba),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:ba(e);return((a,t)=>O(ha(d,a),t))(a,t)?H(x(F(await f(la+ma(a)+Na(a,n)),a=>{const n=a[t],e=w?W(K(a,t),w):K(a,t);return[n,y(i)?e:H(x(V(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!aa(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:ba(A),_=a=>y(N)||O(N,a),p=ba();Q(e??{},a=>M(x(X(a??{}),_),a=>Da(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+sa+ma(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=ba(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{b(S,t)||(await f(ra+ma(a)+"ADD"+ma(t)+s),Da(I,t))})),c==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ma(e)+"ON"+ma(a)+`(${ma(t)})`),Da(Ia(v,a,ba),t)}}else await f(va+ma(a)+`(${ma(t)}${s} PRIMARY KEY${P(F(g,a=>i+ma(a)+s))});`),Ta(d,a,ba([t,...g])),Ta(v,a,ba([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(ra+ma(a)+"DROP"+ma(n)),b(I,n))}):[]]),m)y(e)?y(N)&&await f(ca+ma(a)+Na(a,E)):await h(V(e,async(n,e)=>{if(y(n))await f(ca+ma(a)+Na(a,E,`(${ma(t)}=${o([1])})`),[e]);else if(!$(g)){const i=x(X(n),_);$(i)||await c(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},o,I)}}));else if($(g))y(N)&&O(d,a)&&await f(ca+ma(a)+Na(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=H(),s=[];Q(e??{},(a,t)=>{G(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await c(f,a,t,n,i,o,I),await f(ca+ma(a)+Na(a,E,`${ma(t)}NOT IN(${Aa(s,o)})`),s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const o=[1];await a("INSERT INTO"+ma(t)+"("+((...a)=>P(F(a,ma),i))(n,...e)+")VALUES"+P(V(s,a=>"("+r(o)+","+Aa(a,r,o)+")"),i)+"ON CONFLICT("+ma(n)+")DO UPDATE SET"+P(F(e,a=>ma(a)+"=excluded."+ma(a)),i),V(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[o,c,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(o,c))[ta]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(o,c,{[ta]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ot=(a,t,n,e,i,s,r,[o,c,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,b]=it(t,f,m,N,$,_,p,O,g),D=(a,t)=>h(ga(c,async([n,e,i,s,r],o)=>{var c,l;t&&(c=a,l=o,!U.hasOwn(c,l))||await S(n,e,a[o],i,s,t,r)})),R=(a,t,n)=>H(1==n?x(V(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,na,{[ta]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>b(async()=>{await T();const a=await(async()=>H(x(await h(ga(o,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!aa(a[1]))))(),t=await(async()=>l?(await I(u,na,void 0,d))[ta]:{})();return aa(a)&&y(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await T(),y(t)){const[t,n]=a();await D(t),await L(n)}else await D(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ct=(a,t,i,s,o,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,b,R]=(a=>{const t=(a=>z(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??na,t[Fa]??La],ba(a)]}const{tables:{load:i={},save:s={}}={},values:o={}}=t,c=z(Ya,o),{load:l,save:w}=c,u=[Ga(l),Ga(w),c[Ua],za(l),za(w)],y=u[2],d=ba(y),v=ba(y),f=Ha(i,{[Ba]:null,[qa]:na,[Ja]:r},Ba,a=>O(v,a),a=>Da(d,a)),m=Ha(s,{[Ua]:null,[qa]:na,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>Da(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&D(0),(I?rt:ot)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(ea+` ${ua} d,${ya} s,TOTAL_CHANGES() c FROM ${wa}${ua} JOIN ${wa}${ya}`);if(e&&(n!=_||i!=p||s!=h)){const o=t&&!r&&!u(_);_=n,p=i,h=s,o&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const o=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==o&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=o,o},f=s(a=>{e&&O(R,a)&&(r=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await o(f)})})},a=>a(),w,d,f,b,T(R),async(a,t)=>await a(ea+` t.name tn,c.name cn,c.pk OR EXISTS(${ea} 1 FROM ${wa}index_list(t.name)i,${wa}index_info(i.name)ii ${ia} i."unique"=1 AND ii.name=c.name AND(${ea} count(*) FROM ${wa}index_info(i.name))=1)uq FROM ${da}list()t,${da}info(t.name)c ${ia} t.schema='main'AND t.type IN('table','view')AND t.name IN(${Aa(t,Ea)})ORDER BY t.name,c.name`,t),m,A,e,Ea,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ct(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,A=a=>0==N(a),$=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>M(P(a,()=>t(n)),e),ea=(a,t=s)=>j+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!l(a)&&v(ra(a),a=>a==sa.prototype||l(ra(a)),()=>!0),wa=sa.keys,la=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return C(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>C(wa(a),n=>t(a[n],n)),Ea=(a,t)=>P(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(wa(a)),Aa=a=>oa(a)&&0==Na(a),$a=Map,_a=a=>new $a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:_a),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(l=ua(t,E(a)?{[n]:a}:a),o=sa.values(l),w=Na(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,$,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const X=_a(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Sa(Ia(r,c??[n],Da),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{ha(at,l)||ha(Wa,l)||!A(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await wa(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},wa=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,wa]:[wa,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>A(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,wa]:[oa,ya,wa,da],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u($)&&(G=1,$=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),na()})})()),await $,ma)};return la(ma)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=_a(),v=_a();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Da),t),n&&Sa(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(x(P(await f(Y+aa(a)+ea(a,n)),a=>{const n=a[t],e=l?ma(va(a,t),l):va(a,t);return[n,u(i)?e:da(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Aa(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const $=u(N)?void 0:Da(N),_=a=>u($)||I($,a),O=Da();fa(i??{},a=>C(x(wa(a??{}),_),a=>Sa(O,a)));const g=S(O);if(u($)&&!E&&y&&m==s&&A(g)&&I(d,a))return await f("DROP "+G+aa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Da(x(S(p),a=>a==n||_(a)));if(!A(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(J+aa(a)+"ADD"+aa(t)+r),Sa(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Sa(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(g,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...g])),pa(v,a,Da([n]));if(await h([...!E&&l?P(S(T),async t=>{t!=n&&(await f(J+aa(a)+"DROP"+aa(t)),b(p,t))}):[]]),E)u(i)?u($)&&await f(X+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(X+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!A(g)){const i=x(wa(t),_);A(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if(A(g))u($)&&I(d,a)&&await f(X+aa(a)+ea(a,m));else{const t=x(S(ha(d,a)),a=>a!=n&&_(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(X+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,A,$)=>{const[_,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,$);return tt(a,()=>g(async()=>{return await _(),a=(await h(c,o))[q]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await _(),await O(c,o,{[q]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,A,$,_,O,g,p)=>{const[T,I,D,S]=et(t,f,E,A,$,_,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!sa.hasOwn(o,w))||await D(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>da(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await D(y,k,{[q]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await T();const a=await(async()=>da(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>w?(await I(y,k,void 0,d))[q]:{})();return Aa(a)&&u(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",A,$)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>ua(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??k,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Da(y),v=Da(y),f=Ya(i,{[Ba]:null,[Fa]:k,[ja]:s},Ba,a=>I(v,a),a=>Sa(d,a)),m=Ya(r,{[qa]:null,[Fa]:k,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Sa(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,A,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>$,a=>a(),e,i,$,1,t,"getClient",void 0,async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t)=>(e?.(a,t),(await n.execute({sql:a,args:t??[]})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),D=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q=Object,k=a=>q.getPrototypeOf(a),U=q.entries,j=a=>!l(a)&&v(k(a),a=>a==q.prototype||l(k(a)),()=>!0),G=q.keys,J=q.freeze,K=(...a)=>q.assign(q.create(null),...a),X=(a,t,n)=>(q.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Y=(a=[])=>{const t=q.create(null);return C(a,([a,n])=>X(t,a,n)),t},z=(a,t)=>(delete a[t],a),H=(a,t)=>C(G(a),n=>t(a[n],n)),Q=(a,t)=>P(U(a),([a,n])=>t(n,a)),V=(a,t)=>{const n=Y();return H(a,(a,e)=>X(n,e,t(a,e))),n},W=a=>N(G(a)),Z=a=>j(a)&&0==W(a),aa="_",ta="_id",na="SELECT",ea="WHERE",ia="TABLE",sa="ALTER "+ia,ra="FROM",ca="DELETE "+ra,oa=na+"*"+ra,wa="pragma_",la="data_version",ua="schema_version",ya="pragma_table_",da="CREATE "+ia,va=/\$tableName/g,fa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),Ea=()=>"?",ma=(a,t,n=[1])=>M(P(a,()=>t(n)),e),Na=(a,t=s,e)=>{const i=x([t==s?void 0:`(${$a(t,fa(a))})`,e],a=>!u(a));return $(i)?n:ea+M(i,"AND")},$a=(a,t)=>r(a,va,t),_a=Map,Aa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:Aa),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return S(s)&&pa(a,t[i]),r}),Sa=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=Aa();return H(a,(a,r)=>{const c=(l=K(t,E(a)?{[n]:a}:a),o=q.values(l),w=W(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):j(a)?V(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,_,h,I=0,D=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const K={},X=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const Y=Aa(),[z,H,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Z(a)||!Z(t),t.setContent]:O(0))(c,a,w),[aa,ta,na]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Da(Ia(r,c??[n],Sa),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),S(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Na),ea=a=>{a!=I&&(I=a,ta(Y,void 0,I))},ia=()=>{ha(at,l)||ha(Wa,l)||!$(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},sa=t=>{(z&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},ca=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),oa=async a=>(2!=I&&(await T(async()=>{ea(1),D++,await ma(()=>g(async()=>{const n=await t();m(n)?sa(n):u(n)&&a?W(a):u(n)||O(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),Na),wa=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await oa())},la=async a=>{const t=++M;let n=!0;if(await ua(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ea(1),D++,await(t?ma(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&k--,--q||ea(0)}),q||await ra()}else 2==I?U=t:await oa()});t!=M||G?u(a)||await s(a):d=a},r);await ca(e),t!=M||G||await T(()=>oa(a),()=>{n=!1})}return Na},ua=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await ca(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),Na},ya=async a=>(1!=I&&await T(()=>T(async()=>{ea(2),L++,await ma(()=>g(()=>e(H,a),r))},()=>ea(0)),wa),Na),da=async()=>{const t=++j;return await va(!0),t!=j||G||(await ya(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=Q();V(a)&&g(()=>ya(a))}}))),Na},va=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),Na},fa=()=>!u(E),Ea=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await T(()=>t(),async()=>{await n()}),Na},ma=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,K]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),ia()})}})(),await e,n)throw t;return Na},Na={load:oa,startAutoLoad:la,stopAutoLoad:ua,isAutoLoading:()=>!u(d),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,la,va,ua]:[la,da,ua,va],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return Na},stopAutoPersisting:Ea,getStatus:()=>I,addStatusListener:a=>aa(a,Y),delListener:t=>(na(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:D,saves:L}),...o,destroy:async()=>(u(_)&&(G=1,_=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=K||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(Ea,()=>n),()=>X?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),ia()})})()),await _,Na)};return J(Na)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Da(Ta(d,a,Sa),t),n&&Da(Ta(v,a,Sa),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Sa(e);return((a,t)=>I(ha(d,a),t))(a,t)?Y(x(P(await f(oa+fa(a)+Na(a,n)),a=>{const n=a[t],e=l?V(z(a,t),l):z(a,t);return[n,u(i)?e:Y(x(Q(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const _=u(N)?void 0:Sa(N),A=a=>u(_)||I(_,a),O=Sa();H(i??{},a=>C(x(G(a??{}),A),a=>Da(O,a)));const g=D(O);if(u(_)&&!E&&y&&m==s&&$(g)&&I(d,a))return await f("DROP "+ia+fa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Sa(x(D(p),a=>a==n||A(a)));if(!$(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(sa+fa(a)+"ADD"+fa(t)+r),Da(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+fa(e)+"ON"+fa(a)+`(${fa(n)})`),Da(Ta(v,a,Sa),n)}}else await f(da+fa(a)+`(${fa(n)}${r} PRIMARY KEY${M(P(g,a=>e+fa(a)+r))});`),pa(d,a,Sa([n,...g])),pa(v,a,Sa([n]));if(await h([...!E&&l?P(D(T),async t=>{t!=n&&(await f(sa+fa(a)+"DROP"+fa(t)),b(p,t))}):[]]),E)u(i)?u(_)&&await f(ca+fa(a)+Na(a,m)):await h(Q(i,async(t,e)=>{if(u(t))await f(ca+fa(a)+Na(a,m,`(${fa(n)}=${c([1])})`),[e]);else if(!$(g)){const i=x(G(t),A);$(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if($(g))u(_)&&I(d,a)&&await f(ca+fa(a)+Na(a,m));else{const t=x(D(ha(d,a)),a=>a!=n&&A(a)),e=Y(),s=[];H(i??{},(a,n)=>{X(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(ca+fa(a)+Na(a,m,`${fa(n)}NOT IN(${ma(s,c)})`),s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+fa(t)+"("+((...a)=>M(P(a,fa),e))(n,...i)+")VALUES"+M(Q(s,a=>"("+r(c)+","+ma(a,r,c)+")"),e)+"ON CONFLICT("+fa(n)+")DO UPDATE SET"+M(P(i,a=>fa(a)+"=excluded."+fa(a)),e),Q(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,$,_)=>{const[A,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,_);return tt(a,()=>g(async()=>{return await A(),a=(await h(c,o))[aa]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await A(),await O(c,o,{[aa]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,$,_,A,O,g,p)=>{const[T,I,S,D]=et(t,f,E,$,_,A,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!q.hasOwn(o,w))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>Y(1==n?x(Q(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await S(y,ta,{[aa]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>D(async()=>{await T();const a=await(async()=>Y(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>w?(await I(y,ta,void 0,d))[aa]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",$,_)=>{let A,h,g;const S=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>K(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??ta,n[Pa]??Ra],Sa(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=K(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Sa(y),v=Sa(y),f=Ya(i,{[Ba]:null,[Fa]:ta,[ja]:s},Ba,a=>I(v,a),a=>Da(d,a)),m=Ya(r,{[qa]:null,[Fa]:ta,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Da(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,S,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await S(na+` ${la} d,${ua} s,TOTAL_CHANGES() c FROM ${wa}${la} JOIN ${wa}${ua}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!l(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,D(C),async(a,t)=>await a(na+` t.name tn,c.name cn,c.pk OR EXISTS(${na} 1 FROM ${wa}index_list(t.name)i,${wa}index_info(i.name)ii ${ea} i."unique"=1 AND ii.name=c.name AND(${na} count(*) FROM ${wa}index_info(i.name))=1)uq FROM ${ya}list()t,${ya}info(t.name)c ${ea} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ma(t,Ea)})ORDER BY t.name,c.name`,t),m,N,n,Ea,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>_,a=>a(),e,i,_,1,t,"getClient",void 0,async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t)=>(e?.(a,t),(await n.execute({sql:a,args:t??[]})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,A=a=>0==N(a),$=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>M(P(a,()=>t(n)),e),ea=(a,t=s)=>j+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!l(a)&&v(ra(a),a=>a==sa.prototype||l(ra(a)),()=>!0),wa=sa.keys,la=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return C(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>C(wa(a),n=>t(a[n],n)),Ea=(a,t)=>P(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(wa(a)),Aa=a=>oa(a)&&0==Na(a),$a=Map,_a=a=>new $a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:_a),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(l=ua(t,E(a)?{[n]:a}:a),o=sa.values(l),w=Na(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,$,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const X=_a(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Sa(Ia(r,c??[n],Da),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{ha(at,l)||ha(Wa,l)||!A(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await wa(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},wa=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,wa]:[wa,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>A(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,wa]:[oa,ya,wa,da],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u($)&&(G=1,$=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),na()})})()),await $,ma)};return la(ma)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=_a(),v=_a();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Da),t),n&&Sa(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(x(P(await f(Y+aa(a)+ea(a,n)),a=>{const n=a[t],e=l?ma(va(a,t),l):va(a,t);return[n,u(i)?e:da(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Aa(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const $=u(N)?void 0:Da(N),_=a=>u($)||I($,a),O=Da();fa(i??{},a=>C(x(wa(a??{}),_),a=>Sa(O,a)));const g=S(O);if(u($)&&!E&&y&&m==s&&A(g)&&I(d,a))return await f("DROP "+G+aa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Da(x(S(p),a=>a==n||_(a)));if(!A(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(J+aa(a)+"ADD"+aa(t)+r),Sa(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Sa(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(g,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...g])),pa(v,a,Da([n]));if(await h([...!E&&l?P(S(T),async t=>{t!=n&&(await f(J+aa(a)+"DROP"+aa(t)),b(p,t))}):[]]),E)u(i)?u($)&&await f(X+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(X+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!A(g)){const i=x(wa(t),_);A(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if(A(g))u($)&&I(d,a)&&await f(X+aa(a)+ea(a,m));else{const t=x(S(ha(d,a)),a=>a!=n&&_(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(X+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,A,$)=>{const[_,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,$);return tt(a,()=>g(async()=>{return await _(),a=(await h(c,o))[q]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await _(),await O(c,o,{[q]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,A,$,_,O,g,p)=>{const[T,I,D,S]=et(t,f,E,A,$,_,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!sa.hasOwn(o,w))||await D(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>da(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await D(y,k,{[q]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await T();const a=await(async()=>da(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>w?(await I(y,k,void 0,d))[q]:{})();return Aa(a)&&u(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",A,$)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>ua(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??k,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Da(y),v=Da(y),f=Ya(i,{[Ba]:null,[Fa]:k,[ja]:s},Ba,a=>I(v,a),a=>Sa(d,a)),m=Ya(r,{[qa]:null,[Fa]:k,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Sa(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,A,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>$,a=>a(),e,i,$,1,t,"getClient",void 0,async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t)=>(e?.(a,t),(await n.execute({sql:a,args:t??[]})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),D=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q=Object,k=a=>q.getPrototypeOf(a),U=q.entries,j=a=>!l(a)&&v(k(a),a=>a==q.prototype||l(k(a)),()=>!0),G=q.keys,J=q.freeze,K=(...a)=>q.assign(q.create(null),...a),X=(a,t,n)=>(q.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Y=(a=[])=>{const t=q.create(null);return C(a,([a,n])=>X(t,a,n)),t},z=(a,t)=>(delete a[t],a),H=(a,t)=>C(G(a),n=>t(a[n],n)),Q=(a,t)=>P(U(a),([a,n])=>t(n,a)),V=(a,t)=>{const n=Y();return H(a,(a,e)=>X(n,e,t(a,e))),n},W=a=>N(G(a)),Z=a=>j(a)&&0==W(a),aa="_",ta="_id",na="SELECT",ea="WHERE",ia="TABLE",sa="ALTER "+ia,ra="FROM",ca="DELETE "+ra,oa=na+"*"+ra,wa="pragma_",la="data_version",ua="schema_version",ya="pragma_table_",da="CREATE "+ia,va=/\$tableName/g,fa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),Ea=()=>"?",ma=(a,t,n=[1])=>M(P(a,()=>t(n)),e),Na=(a,t=s,e)=>{const i=x([t==s?void 0:`(${$a(t,fa(a))})`,e],a=>!u(a));return $(i)?n:ea+M(i,"AND")},$a=(a,t)=>r(a,va,t),_a=Map,Aa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:Aa),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return S(s)&&pa(a,t[i]),r}),Sa=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=Aa();return H(a,(a,r)=>{const c=(l=K(t,E(a)?{[n]:a}:a),o=q.values(l),w=W(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):j(a)?V(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,_,h,I=0,D=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const K={},X=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const Y=Aa(),[z,H,Q,V,W]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Z(a)||!Z(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Z(a)||!Z(t),t.setContent]:O(0))(c,a,w),[aa,ta,na]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Da(Ia(r,c??[n],Sa),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),S(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Na),ea=a=>{a!=I&&(I=a,ta(Y,void 0,I))},ia=()=>{ha(at,l)||ha(Wa,l)||!$(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},sa=t=>{(z&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ra=async()=>{fa()&&a.__?.[0]?.()&&await ya()},ca=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),oa=async a=>(2!=I&&(await T(async()=>{ea(1),D++,await ma(()=>g(async()=>{const n=await t();m(n)?sa(n):u(n)&&a?W(a):u(n)||O(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),Na),wa=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await oa())},la=async a=>{const t=++M;let n=!0;if(await ua(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ea(1),D++,await(t?ma(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&k--,--q||ea(0)}),q||await ra()}else 2==I?U=t:await oa()});t!=M||G?u(a)||await s(a):d=a},r);await ca(e),t!=M||G||await T(()=>oa(a),()=>{n=!1})}return Na},ua=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await ca(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),Na},ya=async a=>(1!=I&&await T(()=>T(async()=>{ea(2),L++,await ma(()=>g(()=>e(H,a),r))},()=>ea(0)),wa),Na),da=async()=>{const t=++j;return await va(!0),t!=j||G||(await ya(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=Q();V(a)&&g(()=>ya(a))}}))),Na},va=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),Na},fa=()=>!u(E),Ea=async(a=!1)=>{const[t,n]=a?[va,ua]:[ua,va];return await T(()=>t(),async()=>{await n()}),Na},ma=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,K]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),ia()})}})(),await e,n)throw t;return Na},Na={load:oa,startAutoLoad:la,stopAutoLoad:ua,isAutoLoading:()=>!u(d),save:ya,startAutoSave:da,stopAutoSave:va,isAutoSaving:fa,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[da,la,va,ua]:[la,da,ua,va],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return Na},stopAutoPersisting:Ea,getStatus:()=>I,addStatusListener:a=>aa(a,Y),delListener:t=>(na(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:D,saves:L}),...o,destroy:async()=>(u(_)&&(G=1,_=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=K||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(Ea,()=>n),()=>X?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),ia()})})()),await _,Na)};return J(Na)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Da(Ta(d,a,Sa),t),n&&Da(Ta(v,a,Sa),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Sa(e);return((a,t)=>I(ha(d,a),t))(a,t)?Y(x(P(await f(oa+fa(a)+Na(a,n)),a=>{const n=a[t],e=l?V(z(a,t),l):z(a,t);return[n,u(i)?e:Y(x(Q(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const _=u(N)?void 0:Sa(N),A=a=>u(_)||I(_,a),O=Sa();H(i??{},a=>C(x(G(a??{}),A),a=>Da(O,a)));const g=D(O);if(u(_)&&!E&&y&&m==s&&$(g)&&I(d,a))return await f("DROP "+ia+fa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Sa(x(D(p),a=>a==n||A(a)));if(!$(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(sa+fa(a)+"ADD"+fa(t)+r),Da(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+fa(e)+"ON"+fa(a)+`(${fa(n)})`),Da(Ta(v,a,Sa),n)}}else await f(da+fa(a)+`(${fa(n)}${r} PRIMARY KEY${M(P(g,a=>e+fa(a)+r))});`),pa(d,a,Sa([n,...g])),pa(v,a,Sa([n]));if(await h([...!E&&l?P(D(T),async t=>{t!=n&&(await f(sa+fa(a)+"DROP"+fa(t)),b(p,t))}):[]]),E)u(i)?u(_)&&await f(ca+fa(a)+Na(a,m)):await h(Q(i,async(t,e)=>{if(u(t))await f(ca+fa(a)+Na(a,m,`(${fa(n)}=${c([1])})`),[e]);else if(!$(g)){const i=x(G(t),A);$(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if($(g))u(_)&&I(d,a)&&await f(ca+fa(a)+Na(a,m));else{const t=x(D(ha(d,a)),a=>a!=n&&A(a)),e=Y(),s=[];H(i??{},(a,n)=>{X(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(ca+fa(a)+Na(a,m,`${fa(n)}NOT IN(${ma(s,c)})`),s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+fa(t)+"("+((...a)=>M(P(a,fa),e))(n,...i)+")VALUES"+M(Q(s,a=>"("+r(c)+","+ma(a,r,c)+")"),e)+"ON CONFLICT("+fa(n)+")DO UPDATE SET"+M(P(i,a=>fa(a)+"=excluded."+fa(a)),e),Q(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,$,_)=>{const[A,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,_);return tt(a,()=>g(async()=>{return await A(),a=(await h(c,o))[aa]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await A(),await O(c,o,{[aa]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,$,_,A,O,g,p)=>{const[T,I,S,D]=et(t,f,E,$,_,A,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!q.hasOwn(o,w))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>Y(1==n?x(Q(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await S(y,ta,{[aa]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>D(async()=>{await T();const a=await(async()=>Y(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>w?(await I(y,ta,void 0,d))[aa]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",$,_)=>{let A,h,g;const S=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>K(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??ta,n[Pa]??Ra],Sa(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=K(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Sa(y),v=Sa(y),f=Ya(i,{[Ba]:null,[Fa]:ta,[ja]:s},Ba,a=>I(v,a),a=>Da(d,a)),m=Ya(r,{[qa]:null,[Fa]:ta,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Da(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,S,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await S(na+` ${la} d,${ua} s,TOTAL_CHANGES() c FROM ${wa}${la} JOIN ${wa}${ua}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!l(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,D(C),async(a,t)=>await a(na+` t.name tn,c.name cn,c.pk OR EXISTS(${na} 1 FROM ${wa}index_list(t.name)i,${wa}index_info(i.name)ii ${ea} i."unique"=1 AND ii.name=c.name AND(${na} count(*) FROM ${wa}index_info(i.name))=1)uq FROM ${ya}list()t,${ya}info(t.name)c ${ea} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ma(t,Ea)})ORDER BY t.name,c.name`,t),m,N,n,Ea,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>_,a=>a(),e,i,_,1,t,"getClient",void 0,async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t)=>(e?.(a,t),(await n.execute({sql:a,args:t??[]})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),D=(a,t)=>a.filter(t),b=(a,t=m(a))=>a.splice(0,t),p=(a,...t)=>a.push(...t),C="_",P="_id",F="SELECT",k="WHERE",U="TABLE",M="INSERT",G="DELETE",q="UPDATE",H="ALTER "+U,W="FROM",Y=G+" "+W,j=F+"*"+W,x="CREATE ",B=x+U,X="OR REPLACE ",J="FUNCTION",K=/\$tableName/g,z=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),Q=(...a)=>z(g(a,"_")),V=a=>"$"+a[0]++,Z=(a,t,n=[1])=>g(S(a,()=>t(n)),e),aa=(a,t=s)=>k+`(${ta(t,z(a))})`,ta=(a,t)=>i(a,K,t),na=(a,t)=>a?.has(t)??!1,ea=a=>u(a)||0==(a=>a?.size??0)(a),ca=a=>[...a?.values()??[]],sa=a=>a.clear(),ia=(a,t)=>a?.forEach(t),ra=(a,t)=>a?.delete(t),oa=Object,wa=a=>oa.getPrototypeOf(a),la=oa.entries,ua=a=>!l(a)&&d(wa(a),a=>a==oa.prototype||l(wa(a)),()=>!0),ya=oa.keys,da=oa.freeze,Ea=(...a)=>oa.assign(oa.create(null),...a),_a=(a,t,n)=>(oa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Na=(a=[])=>{const t=oa.create(null);return L(a,([a,n])=>_a(t,a,n)),t},ma=(a,t)=>(delete a[t],a),fa=(a,t)=>L(ya(a),n=>t(a[n],n)),va=(a,t)=>S(la(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=Na();return fa(a,(a,e)=>_a(n,e,t(a,e))),n},Ta=a=>m(ya(a)),ha=a=>ua(a)&&0==Ta(a),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):ua(a)?Aa(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,Da=a=>new Sa(a),ba=(a,t)=>a?.get(t),pa=(a,t)=>ia(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return pa(a,(a,e)=>p(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ra(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=ba(a,t);return na(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:ba)(a,t[c],c>m(t)-2?n:Da),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return ea(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=Da();return fa(a,(a,i)=>{const r=(l=Ea(t,_(a)?{[n]:a}:a),o=oa.values(l),w=Ta(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=Da(),st=Da(),it=Da(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,M=0,G=0,q=0,H=0;const W={},Y=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(ba(it,l)??0)+1);const j=Da(),[x,B,X,J,K]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!ha(a)||!ha(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!ha(a)||!ha(t),t.setContent]:O(0))(r,a,w),[z,Q,V]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&p(a,t)}]})(),s=Da(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?p(e,a):y(t[n])?ia(a,a=>c(a,n+1)):L([t[n],null],t=>c(ba(a,t),n+1));return c(a,0),e})(e,c),n=>ia(n,n=>{const e=()=>ba(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(ba(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ra(t,a),ea(t)?1:0)),Pa(s,a),c(a),e)),a=>E(ba(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>fa),Z=a=>{a!=C&&(C=a,Q(j,void 0,C))},aa=()=>{ba(it,l)||ba(ct,l)||!f(ba(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ta=t=>{(x&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},na=async()=>{_a()&&a.__?.[0]?.()&&await ua()},ca=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),sa=async a=>(2!=C&&(await I(async()=>{Z(1),P++,await ma(()=>$(async()=>{const n=await t();N(n)?ta(n):u(n)&&a?K(a):u(n)||O(1,n)},t=>{i?.(t),a&&K(a)}))},()=>Z(0)),await na()),fa),oa=async()=>{const a=G;G=0,a&&a==k&&!H&&(2==C?G=a:await sa())},wa=async a=>{const t=++k;let n=!0;if(await la(!0),t==k&&!H){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!H)if(e||a){const t=n||2==C||!!M;U++,t&&M++,await I(async()=>{Z(1),P++,await(t?ma(()=>ta(e??a)):(()=>{try{return ta(e??a)}finally{Z(0)}})())},()=>{t&&M--,--U||Z(0)}),U||await na()}else 2==C?G=t:await sa()});t!=k||H?u(a)||await s(a):d=a},i);await ca(e),t!=k||H||await I(()=>sa(a),()=>{n=!1})}return fa},la=async(a=!1)=>{G=0,a||k++;const t=_,n=d;return d=void 0,await ca(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),fa},ua=async a=>(1!=C&&await I(()=>I(async()=>{Z(2),F++,await ma(()=>$(()=>e(B,a),i))},()=>Z(0)),oa),fa),ya=async()=>{const t=++q;return await Ea(!0),t!=q||H||(await ua(),t!=q||H||(A=a.addDidFinishTransactionListener(()=>{if(t==q&&!H){const a=X();J(a)&&$(()=>ua(a))}}))),fa},Ea=async(t=!1)=>{t||q++;const n=A;return A=void 0,u(n)||a.delListener(n),fa},_a=()=>!u(A),Na=async(a=!1)=>{const[t,n]=a?[Ea,la]:[la,Ea];return await I(()=>t(),async()=>{await n()}),fa},ma=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():p(ba(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,W]})));if(await(async()=>{if(!ba(ct,l)){Pa(ct,l,1);const a=ba(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),Pa(ct,l,0),aa()})}})(),await e,n)throw t;return fa},fa={load:sa,startAutoLoad:wa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:Ea,isAutoSaving:_a,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ya,wa,Ea,la]:[wa,ya,la,Ea],i=n(a),r=t?q:k;await i;const o=e(a),w=t?k:q;try{await o}catch(a){throw w==(t?k:q)&&await R(s),r==(t?q:k)&&await R(c),a}return fa},stopAutoPersisting:Na,getStatus:()=>C,addStatusListener:a=>z(a,j),delListener:t=>(V(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(H=1,h=(async()=>{const a=ba(st,l),t=D(a,([,a,t])=>t!=W||(a?.(),!1)),n=g;b(a),p(a,...t),await I(()=>I(()=>I(Na,()=>n),()=>Y?.()),()=>{const a=(ba(it,l)??1)-1;Pa(it,l,a||void 0),aa()})})()),await h,fa)};return da(fa)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=Da(),E=Da();let _=a;return[async()=>{sa(d),sa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>na(ba(d,a),t))(a,t)?Na(D(S(await _(j+z(a)+aa(a,n)),a=>{const n=a[t],e=l?Aa(ma(a,t),l):ma(a,t);return[n,u(c)?e:Na(D(va(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||na(c,a))(a)))]}),a=>!u(a[0])&&!ha(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||na(A,a),O=Ua();fa(c??{},a=>L(D(ya(a??{}),T),a=>Ma(O,a)));const $=ca(O);if(u(A)&&!N&&y&&m==s&&f($)&&na(d,a))return await _("DROP "+U+z(a)),Pa(d,a),void Pa(E,a);const R=ba(d,a),I=Ua(D(ca(R),a=>a==n||T(a)));if(!f($))if(na(d,a)){if(await h(S([n,...$],async t=>{ra(I,t)||(await _(H+z(a)+"ADD"+z(t)+i),Ma(R,t))})),o==wt&&!na(ba(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+z(e)+"ON"+z(a)+`(${z(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(B+z(a)+`(${z(n)}${i} PRIMARY KEY${g(S($,a=>e+z(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(ca(I),async t=>{t!=n&&(await _(H+z(a)+"DROP"+z(t)),ra(R,t))}):[]]),N)u(c)?u(A)&&await _(Y+z(a)+aa(a,m)):await h(va(c,async(t,e)=>{if(u(t))await _(Y+z(a)+aa(a,m)+`AND(${z(n)}=${r([1])})`,[e]);else if(!f($)){const c=D(ya(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&na(d,a)&&await _(Y+z(a)+aa(a,m));else{const t=D(ca(ba(d,a)),a=>a!=n&&T(a)),e=Na(),s=[];fa(c??{},(a,n)=>{_a(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),p(s,n)}),await o(_,a,n,t,e,r,R),await _(Y+z(a)+aa(a,m)+`AND${z(n)}NOT IN(${Z(s,r)})`,s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(M+" INTO"+z(t)+"("+((...a)=>g(S(a,z),e))(n,...c)+")VALUES"+g(va(s,a=>"("+i(r)+","+Z(a,i,r)+")"),e)+"ON CONFLICT("+z(n)+`)DO ${q} SET`+g(S(c,a=>z(a)+"=excluded."+z(a)),e),va(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[C]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[C]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,b]=ot(t,_,N,v,A,T,O,$,R),p=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!oa.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),F=(a,t,n)=>Na(1==n?D(va(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):D(S(t,t=>[t,a[t]]),([,a])=>!u(a))),k=async(a,t)=>l?await g(y,P,{[C]:u(E)?a:F(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>b(async()=>{await I();const a=await(async()=>Na(D(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!ha(a[1]))))(),t=await(async()=>w?(await L(y,P,void 0,d))[C]:{})();return ha(a)&&u(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await I(),u(t)){const[t,n]=a();await p(t),await k(n)}else await p(t[0],!0),await k(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=Da(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>Ea(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??P,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=Ea(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:P,[Qa]:s},Xa,a=>na(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:P,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>na(E,t),(a,t)=>Ma(d,t));return pa(m,(a,t)=>t[4]??=ba(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const D=n+ga(Ra(T)),b=t+"_"+D,C=y??c,U=async(a,n,e="",c="")=>{const s=Q(t,a,D);return await N(x+X+J+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},H=async(a,t,n,e)=>(await N(x+a+"TRIGGER"+t+n+"EXECUTE "+J+e+"()"),t),W=a=>`PERFORM pg_notify('${b}',${a});`,Y=(a,t)=>A?s:2===t?Y(a,0)+" OR "+Y(a,1):ta(ba(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),j=(a,e)=>h(S([M,G,q],(c,s)=>{const i=g([t,"d",D,a,c],"_");return H(X,v(dt,a)&&m(i)<=63?z(i):Q(t,"d",D,c,n+ga(a)),`AFTER ${c} ON${z(a)}FOR EACH ROW WHEN(${Y(a,s)})`,e)})),K=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},aa=(a,t)=>{ba(a,D)===t&&(Pa(a,D),ea(a)&&ba(Et,C)===a&&Pa(Et,C))},sa=async()=>{const a=Fa(Et,C,()=>Da()),n=ba(a,D);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await sa());const e=[],c=[1,void 0,e];Pa(a,D,c),c[1]=(async()=>{const a=await U("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${k} command_tag='${B}' LOOP ${W("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");p(e,a),await H("EVENT ",Q(t,"c",D),`ON ddl_command_end WHEN TAG IN('${B}')`,a);const n=await U("d",W("'d:'||TG_TABLE_NAME")+"RETURN NULL;");p(e,n),c[3]=n,await h(S(ca(L),async a=>(await N(B+` IF NOT EXISTS${z(a)}("_id"text PRIMARY KEY)`),await j(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>K(e),()=>aa(a,c)),await $(()=>c[4]),t}return c},ia=async a=>{if(0==--a[0]){const t=ba(Et,C);a[4]=I(()=>K(a[2]),()=>aa(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await sa();try{return[await i(b,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{na(L,e)&&("c:"==n&&await j(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>ia(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>ia(t))},w,l,u,T,ca(L),async(a,t)=>await a(F+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${F} count(*) FROM information_schema.key_column_usage kcu2 ${k} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${k} c.table_schema='public'AND c.table_name IN(${Z(t,V)})`,t),y,d,"text",V,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=z(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),b=(a,t)=>a.filter(t),p=(a,t=m(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),C=Object,P=a=>C.getPrototypeOf(a),F=C.entries,k=a=>!l(a)&&d(P(a),a=>a==C.prototype||l(P(a)),()=>!0),U=C.keys,M=C.freeze,G=(...a)=>C.assign(C.create(null),...a),q=(a,t,n)=>(C.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),H=(a=[])=>{const t=C.create(null);return L(a,([a,n])=>q(t,a,n)),t},W=(a,t)=>(delete a[t],a),Y=(a,t)=>L(U(a),n=>t(a[n],n)),j=(a,t)=>S(F(a),([a,n])=>t(n,a)),x=(a,t)=>{const n=H();return Y(a,(a,e)=>q(n,e,t(a,e))),n},B=a=>m(U(a)),X=a=>k(a)&&0==B(a),J="_",K="_id",z="SELECT",Q="WHERE",V="TABLE",Z="INSERT",aa="DELETE",ta="UPDATE",na="ALTER "+V,ea="FROM",ca=aa+" "+ea,sa=z+"*"+ea,ia="CREATE ",ra=ia+V,oa="OR REPLACE ",wa="FUNCTION",la=/\$tableName/g,ua=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),ya=(...a)=>ua(g(a,"_")),da=a=>"$"+a[0]++,Ea=(a,t,n=[1])=>g(S(a,()=>t(n)),e),_a=(a,t=s,e)=>{const c=b([t==s?void 0:`(${Na(t,ua(a))})`,e],a=>!u(a));return f(c)?n:Q+g(c,"AND")},Na=(a,t)=>i(a,la,t),ma=(a,t)=>a?.has(t)??!1,fa=a=>u(a)||0==(a=>a?.size??0)(a),va=a=>[...a?.values()??[]],Aa=a=>a.clear(),Ta=(a,t)=>a?.forEach(t),ha=(a,t)=>a?.delete(t),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):k(a)?x(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,ba=a=>new Sa(a),pa=(a,t)=>a?.get(t),Da=(a,t)=>Ta(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return Da(a,(a,e)=>D(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ha(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=pa(a,t);return ma(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:pa)(a,t[c],c>m(t)-2?n:ba),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return fa(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=ba();return Y(a,(a,i)=>{const r=(l=G(t,_(a)?{[n]:a}:a),o=C.values(l),w=B(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=ba(),st=ba(),it=ba(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,G=0,q=0,H=0,W=0;const Y={},j=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(pa(it,l)??0)+1);const x=ba(),[B,J,K,z,Q]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!X(a)||!X(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!X(a)||!X(t),t.setContent]:O(0))(r,a,w),[V,Z,aa]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&D(a,t)}]})(),s=ba(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?D(e,a):y(t[n])?Ta(a,a=>c(a,n+1)):L([t[n],null],t=>c(pa(a,t),n+1));return c(a,0),e})(e,c),n=>Ta(n,n=>{const e=()=>pa(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(pa(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ha(t,a),fa(t)?1:0)),Pa(s,a),c(a),e)),a=>E(pa(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>Na),ta=a=>{a!=C&&(C=a,Z(x,void 0,C))},na=()=>{pa(it,l)||pa(ct,l)||!f(pa(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ea=t=>{(B&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ca=async()=>{da()&&a.__?.[0]?.()&&await la()},sa=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),ia=async a=>(2!=C&&(await I(async()=>{ta(1),P++,await _a(()=>$(async()=>{const n=await t();N(n)?ea(n):u(n)&&a?Q(a):u(n)||O(1,n)},t=>{i?.(t),a&&Q(a)}))},()=>ta(0)),await ca()),Na),ra=async()=>{const a=q;q=0,a&&a==k&&!W&&(2==C?q=a:await ia())},oa=async a=>{const t=++k;let n=!0;if(await wa(!0),t==k&&!W){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!W)if(e||a){const t=n||2==C||!!G;U++,t&&G++,await I(async()=>{ta(1),P++,await(t?_a(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&G--,--U||ta(0)}),U||await ca()}else 2==C?q=t:await ia()});t!=k||W?u(a)||await s(a):d=a},i);await sa(e),t!=k||W||await I(()=>ia(a),()=>{n=!1})}return Na},wa=async(a=!1)=>{q=0,a||k++;const t=_,n=d;return d=void 0,await sa(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),Na},la=async a=>(1!=C&&await I(()=>I(async()=>{ta(2),F++,await _a(()=>$(()=>e(J,a),i))},()=>ta(0)),ra),Na),ua=async()=>{const t=++H;return await ya(!0),t!=H||W||(await la(),t!=H||W||(A=a.addDidFinishTransactionListener(()=>{if(t==H&&!W){const a=K();z(a)&&$(()=>la(a))}}))),Na},ya=async(t=!1)=>{t||H++;const n=A;return A=void 0,u(n)||a.delListener(n),Na},da=()=>!u(A),Ea=async(a=!1)=>{const[t,n]=a?[ya,wa]:[wa,ya];return await I(()=>t(),async()=>{await n()}),Na},_a=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():D(pa(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,Y]})));if(await(async()=>{if(!pa(ct,l)){Pa(ct,l,1);const a=pa(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{p(a,t),Pa(ct,l,0),na()})}})(),await e,n)throw t;return Na},Na={load:ia,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:la,startAutoSave:ua,stopAutoSave:ya,isAutoSaving:da,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ua,oa,ya,wa]:[oa,ua,wa,ya],i=n(a),r=t?H:k;await i;const o=e(a),w=t?k:H;try{await o}catch(a){throw w==(t?k:H)&&await R(s),r==(t?H:k)&&await R(c),a}return Na},stopAutoPersisting:Ea,getStatus:()=>C,addStatusListener:a=>V(a,x),delListener:t=>(aa(t),a),schedule:_a,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(W=1,h=(async()=>{const a=pa(st,l),t=b(a,([,a,t])=>t!=Y||(a?.(),!1)),n=g;p(a),D(a,...t),await I(()=>I(()=>I(Ea,()=>n),()=>j?.()),()=>{const a=(pa(it,l)??1)-1;Pa(it,l,a||void 0),na()})})()),await h,Na)};return M(Na)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=ba(),E=ba();let _=a;return[async()=>{Aa(d),Aa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>ma(pa(d,a),t))(a,t)?H(b(S(await _(sa+ua(a)+_a(a,n)),a=>{const n=a[t],e=l?x(W(a,t),l):W(a,t);return[n,u(c)?e:H(b(j(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||ma(c,a))(a)))]}),a=>!u(a[0])&&!X(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||ma(A,a),O=Ua();Y(c??{},a=>L(b(U(a??{}),T),a=>Ma(O,a)));const $=va(O);if(u(A)&&!N&&y&&m==s&&f($)&&ma(d,a))return await _("DROP "+V+ua(a)),Pa(d,a),void Pa(E,a);const R=pa(d,a),I=Ua(b(va(R),a=>a==n||T(a)));if(!f($))if(ma(d,a)){if(await h(S([n,...$],async t=>{ha(I,t)||(await _(na+ua(a)+"ADD"+ua(t)+i),Ma(R,t))})),o==wt&&!ma(pa(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+ua(e)+"ON"+ua(a)+`(${ua(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(ra+ua(a)+`(${ua(n)}${i} PRIMARY KEY${g(S($,a=>e+ua(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(va(I),async t=>{t!=n&&(await _(na+ua(a)+"DROP"+ua(t)),ha(R,t))}):[]]),N)u(c)?u(A)&&await _(ca+ua(a)+_a(a,m)):await h(j(c,async(t,e)=>{if(u(t))await _(ca+ua(a)+_a(a,m,`(${ua(n)}=${r([1])})`),[e]);else if(!f($)){const c=b(U(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&ma(d,a)&&await _(ca+ua(a)+_a(a,m));else{const t=b(va(pa(d,a)),a=>a!=n&&T(a)),e=H(),s=[];Y(c??{},(a,n)=>{q(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),D(s,n)}),await o(_,a,n,t,e,r,R),await _(ca+ua(a)+_a(a,m,`${ua(n)}NOT IN(${Ea(s,r)})`),s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(Z+" INTO"+ua(t)+"("+((...a)=>g(S(a,ua),e))(n,...c)+")VALUES"+g(j(s,a=>"("+i(r)+","+Ea(a,i,r)+")"),e)+"ON CONFLICT("+ua(n)+`)DO ${ta} SET`+g(S(c,a=>ua(a)+"=excluded."+ua(a)),e),j(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[J]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[J]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,p]=ot(t,_,N,v,A,T,O,$,R),D=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!C.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),P=(a,t,n)=>H(1==n?b(j(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):b(S(t,t=>[t,a[t]]),([,a])=>!u(a))),F=async(a,t)=>l?await g(y,K,{[J]:u(E)?a:P(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>p(async()=>{await I();const a=await(async()=>H(b(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!X(a[1]))))(),t=await(async()=>w?(await L(y,K,void 0,d))[J]:{})();return X(a)&&u(t)?void 0:[a,t]}),(a,t)=>p(async()=>{if(await I(),u(t)){const[t,n]=a();await D(t),await F(n)}else await D(t[0],!0),await F(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=ba(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>G(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??K,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=G(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:K,[Qa]:s},Xa,a=>ma(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:K,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>ma(E,t),(a,t)=>Ma(d,t));return Da(m,(a,t)=>t[4]??=pa(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const b=n+ga(Ra(T)),p=t+"_"+b,C=y??c,P=async(a,n,e="",c="")=>{const s=ya(t,a,b);return await N(ia+oa+wa+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},F=async(a,t,n,e)=>(await N(ia+a+"TRIGGER"+t+n+"EXECUTE "+wa+e+"()"),t),k=a=>`PERFORM pg_notify('${p}',${a});`,U=(a,t)=>A?s:2===t?U(a,0)+" OR "+U(a,1):Na(pa(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),M=(a,e)=>h(S([Z,aa,ta],(c,s)=>{const i=g([t,"d",b,a,c],"_");return F(oa,v(dt,a)&&m(i)<=63?ua(i):ya(t,"d",b,c,n+ga(a)),`AFTER ${c} ON${ua(a)}FOR EACH ROW WHEN(${U(a,s)})`,e)})),q=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},H=(a,t)=>{pa(a,b)===t&&(Pa(a,b),fa(a)&&pa(Et,C)===a&&Pa(Et,C))},W=async()=>{const a=Fa(Et,C,()=>ba()),n=pa(a,b);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await W());const e=[],c=[1,void 0,e];Pa(a,b,c),c[1]=(async()=>{const a=await P("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${Q} command_tag='${ra}' LOOP ${k("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");D(e,a),await F("EVENT ",ya(t,"c",b),`ON ddl_command_end WHEN TAG IN('${ra}')`,a);const n=await P("d",k("'d:'||TG_TABLE_NAME")+"RETURN NULL;");D(e,n),c[3]=n,await h(S(va(L),async a=>(await N(ra+` IF NOT EXISTS${ua(a)}("_id"text PRIMARY KEY)`),await M(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>q(e),()=>H(a,c)),await $(()=>c[4]),t}return c},Y=async a=>{if(0==--a[0]){const t=pa(Et,C);a[4]=I(()=>q(a[2]),()=>H(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await W();try{return[await i(p,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{ma(L,e)&&("c:"==n&&await M(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>Y(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>Y(t))},w,l,u,T,va(L),async(a,t)=>await a(z+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${z} count(*) FROM information_schema.key_column_usage kcu2 ${Q} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${Q} c.table_schema='public'AND c.table_name IN(${Ea(t,da)})`,t),y,d,"text",da,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=ua(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),D=(a,t)=>a.filter(t),b=(a,t=m(a))=>a.splice(0,t),p=(a,...t)=>a.push(...t),C="_",P="_id",F="SELECT",k="WHERE",U="TABLE",M="INSERT",G="DELETE",q="UPDATE",H="ALTER "+U,W="FROM",Y=G+" "+W,j=F+"*"+W,x="CREATE ",B=x+U,X="OR REPLACE ",J="FUNCTION",K=/\$tableName/g,z=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),Q=(...a)=>z(g(a,"_")),V=a=>"$"+a[0]++,Z=(a,t,n=[1])=>g(S(a,()=>t(n)),e),aa=(a,t=s)=>k+`(${ta(t,z(a))})`,ta=(a,t)=>i(a,K,t),na=(a,t)=>a?.has(t)??!1,ea=a=>u(a)||0==(a=>a?.size??0)(a),ca=a=>[...a?.values()??[]],sa=a=>a.clear(),ia=(a,t)=>a?.forEach(t),ra=(a,t)=>a?.delete(t),oa=Object,wa=a=>oa.getPrototypeOf(a),la=oa.entries,ua=a=>!l(a)&&d(wa(a),a=>a==oa.prototype||l(wa(a)),()=>!0),ya=oa.keys,da=oa.freeze,Ea=(...a)=>oa.assign(oa.create(null),...a),_a=(a,t,n)=>(oa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Na=(a=[])=>{const t=oa.create(null);return L(a,([a,n])=>_a(t,a,n)),t},ma=(a,t)=>(delete a[t],a),fa=(a,t)=>L(ya(a),n=>t(a[n],n)),va=(a,t)=>S(la(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=Na();return fa(a,(a,e)=>_a(n,e,t(a,e))),n},Ta=a=>m(ya(a)),ha=a=>ua(a)&&0==Ta(a),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):ua(a)?Aa(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,Da=a=>new Sa(a),ba=(a,t)=>a?.get(t),pa=(a,t)=>ia(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return pa(a,(a,e)=>p(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ra(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=ba(a,t);return na(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:ba)(a,t[c],c>m(t)-2?n:Da),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return ea(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=Da();return fa(a,(a,i)=>{const r=(l=Ea(t,_(a)?{[n]:a}:a),o=oa.values(l),w=Ta(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=Da(),st=Da(),it=Da(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,M=0,G=0,q=0,H=0;const W={},Y=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(ba(it,l)??0)+1);const j=Da(),[x,B,X,J,K]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!ha(a)||!ha(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!ha(a)||!ha(t),t.setContent]:O(0))(r,a,w),[z,Q,V]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&p(a,t)}]})(),s=Da(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?p(e,a):y(t[n])?ia(a,a=>c(a,n+1)):L([t[n],null],t=>c(ba(a,t),n+1));return c(a,0),e})(e,c),n=>ia(n,n=>{const e=()=>ba(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(ba(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ra(t,a),ea(t)?1:0)),Pa(s,a),c(a),e)),a=>E(ba(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>fa),Z=a=>{a!=C&&(C=a,Q(j,void 0,C))},aa=()=>{ba(it,l)||ba(ct,l)||!f(ba(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ta=t=>{(x&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},na=async()=>{_a()&&a.__?.[0]?.()&&await ua()},ca=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),sa=async a=>(2!=C&&(await I(async()=>{Z(1),P++,await ma(()=>$(async()=>{const n=await t();N(n)?ta(n):u(n)&&a?K(a):u(n)||O(1,n)},t=>{i?.(t),a&&K(a)}))},()=>Z(0)),await na()),fa),oa=async()=>{const a=G;G=0,a&&a==k&&!H&&(2==C?G=a:await sa())},wa=async a=>{const t=++k;let n=!0;if(await la(!0),t==k&&!H){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!H)if(e||a){const t=n||2==C||!!M;U++,t&&M++,await I(async()=>{Z(1),P++,await(t?ma(()=>ta(e??a)):(()=>{try{return ta(e??a)}finally{Z(0)}})())},()=>{t&&M--,--U||Z(0)}),U||await na()}else 2==C?G=t:await sa()});t!=k||H?u(a)||await s(a):d=a},i);await ca(e),t!=k||H||await I(()=>sa(a),()=>{n=!1})}return fa},la=async(a=!1)=>{G=0,a||k++;const t=_,n=d;return d=void 0,await ca(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),fa},ua=async a=>(1!=C&&await I(()=>I(async()=>{Z(2),F++,await ma(()=>$(()=>e(B,a),i))},()=>Z(0)),oa),fa),ya=async()=>{const t=++q;return await Ea(!0),t!=q||H||(await ua(),t!=q||H||(A=a.addDidFinishTransactionListener(()=>{if(t==q&&!H){const a=X();J(a)&&$(()=>ua(a))}}))),fa},Ea=async(t=!1)=>{t||q++;const n=A;return A=void 0,u(n)||a.delListener(n),fa},_a=()=>!u(A),Na=async(a=!1)=>{const[t,n]=a?[Ea,la]:[la,Ea];return await I(()=>t(),async()=>{await n()}),fa},ma=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():p(ba(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,W]})));if(await(async()=>{if(!ba(ct,l)){Pa(ct,l,1);const a=ba(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),Pa(ct,l,0),aa()})}})(),await e,n)throw t;return fa},fa={load:sa,startAutoLoad:wa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:Ea,isAutoSaving:_a,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ya,wa,Ea,la]:[wa,ya,la,Ea],i=n(a),r=t?q:k;await i;const o=e(a),w=t?k:q;try{await o}catch(a){throw w==(t?k:q)&&await R(s),r==(t?q:k)&&await R(c),a}return fa},stopAutoPersisting:Na,getStatus:()=>C,addStatusListener:a=>z(a,j),delListener:t=>(V(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(H=1,h=(async()=>{const a=ba(st,l),t=D(a,([,a,t])=>t!=W||(a?.(),!1)),n=g;b(a),p(a,...t),await I(()=>I(()=>I(Na,()=>n),()=>Y?.()),()=>{const a=(ba(it,l)??1)-1;Pa(it,l,a||void 0),aa()})})()),await h,fa)};return da(fa)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=Da(),E=Da();let _=a;return[async()=>{sa(d),sa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>na(ba(d,a),t))(a,t)?Na(D(S(await _(j+z(a)+aa(a,n)),a=>{const n=a[t],e=l?Aa(ma(a,t),l):ma(a,t);return[n,u(c)?e:Na(D(va(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||na(c,a))(a)))]}),a=>!u(a[0])&&!ha(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||na(A,a),O=Ua();fa(c??{},a=>L(D(ya(a??{}),T),a=>Ma(O,a)));const $=ca(O);if(u(A)&&!N&&y&&m==s&&f($)&&na(d,a))return await _("DROP "+U+z(a)),Pa(d,a),void Pa(E,a);const R=ba(d,a),I=Ua(D(ca(R),a=>a==n||T(a)));if(!f($))if(na(d,a)){if(await h(S([n,...$],async t=>{ra(I,t)||(await _(H+z(a)+"ADD"+z(t)+i),Ma(R,t))})),o==wt&&!na(ba(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+z(e)+"ON"+z(a)+`(${z(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(B+z(a)+`(${z(n)}${i} PRIMARY KEY${g(S($,a=>e+z(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(ca(I),async t=>{t!=n&&(await _(H+z(a)+"DROP"+z(t)),ra(R,t))}):[]]),N)u(c)?u(A)&&await _(Y+z(a)+aa(a,m)):await h(va(c,async(t,e)=>{if(u(t))await _(Y+z(a)+aa(a,m)+`AND(${z(n)}=${r([1])})`,[e]);else if(!f($)){const c=D(ya(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&na(d,a)&&await _(Y+z(a)+aa(a,m));else{const t=D(ca(ba(d,a)),a=>a!=n&&T(a)),e=Na(),s=[];fa(c??{},(a,n)=>{_a(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),p(s,n)}),await o(_,a,n,t,e,r,R),await _(Y+z(a)+aa(a,m)+`AND${z(n)}NOT IN(${Z(s,r)})`,s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(M+" INTO"+z(t)+"("+((...a)=>g(S(a,z),e))(n,...c)+")VALUES"+g(va(s,a=>"("+i(r)+","+Z(a,i,r)+")"),e)+"ON CONFLICT("+z(n)+`)DO ${q} SET`+g(S(c,a=>z(a)+"=excluded."+z(a)),e),va(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[C]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[C]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,b]=ot(t,_,N,v,A,T,O,$,R),p=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!oa.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),F=(a,t,n)=>Na(1==n?D(va(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):D(S(t,t=>[t,a[t]]),([,a])=>!u(a))),k=async(a,t)=>l?await g(y,P,{[C]:u(E)?a:F(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>b(async()=>{await I();const a=await(async()=>Na(D(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!ha(a[1]))))(),t=await(async()=>w?(await L(y,P,void 0,d))[C]:{})();return ha(a)&&u(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await I(),u(t)){const[t,n]=a();await p(t),await k(n)}else await p(t[0],!0),await k(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=Da(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>Ea(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??P,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=Ea(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:P,[Qa]:s},Xa,a=>na(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:P,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>na(E,t),(a,t)=>Ma(d,t));return pa(m,(a,t)=>t[4]??=ba(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const D=n+ga(Ra(T)),b=t+"_"+D,C=y??c,U=async(a,n,e="",c="")=>{const s=Q(t,a,D);return await N(x+X+J+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},H=async(a,t,n,e)=>(await N(x+a+"TRIGGER"+t+n+"EXECUTE "+J+e+"()"),t),W=a=>`PERFORM pg_notify('${b}',${a});`,Y=(a,t)=>A?s:2===t?Y(a,0)+" OR "+Y(a,1):ta(ba(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),j=(a,e)=>h(S([M,G,q],(c,s)=>{const i=g([t,"d",D,a,c],"_");return H(X,v(dt,a)&&m(i)<=63?z(i):Q(t,"d",D,c,n+ga(a)),`AFTER ${c} ON${z(a)}FOR EACH ROW WHEN(${Y(a,s)})`,e)})),K=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},aa=(a,t)=>{ba(a,D)===t&&(Pa(a,D),ea(a)&&ba(Et,C)===a&&Pa(Et,C))},sa=async()=>{const a=Fa(Et,C,()=>Da()),n=ba(a,D);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await sa());const e=[],c=[1,void 0,e];Pa(a,D,c),c[1]=(async()=>{const a=await U("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${k} command_tag='${B}' LOOP ${W("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");p(e,a),await H("EVENT ",Q(t,"c",D),`ON ddl_command_end WHEN TAG IN('${B}')`,a);const n=await U("d",W("'d:'||TG_TABLE_NAME")+"RETURN NULL;");p(e,n),c[3]=n,await h(S(ca(L),async a=>(await N(B+` IF NOT EXISTS${z(a)}("_id"text PRIMARY KEY)`),await j(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>K(e),()=>aa(a,c)),await $(()=>c[4]),t}return c},ia=async a=>{if(0==--a[0]){const t=ba(Et,C);a[4]=I(()=>K(a[2]),()=>aa(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await sa();try{return[await i(b,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{na(L,e)&&("c:"==n&&await j(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>ia(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>ia(t))},w,l,u,T,ca(L),async(a,t)=>await a(F+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${F} count(*) FROM information_schema.key_column_usage kcu2 ${k} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${k} c.table_schema='public'AND c.table_name IN(${Z(t,V)})`,t),y,d,"text",V,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=z(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),b=(a,t)=>a.filter(t),p=(a,t=m(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),C=Object,P=a=>C.getPrototypeOf(a),F=C.entries,k=a=>!l(a)&&d(P(a),a=>a==C.prototype||l(P(a)),()=>!0),U=C.keys,M=C.freeze,G=(...a)=>C.assign(C.create(null),...a),q=(a,t,n)=>(C.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),H=(a=[])=>{const t=C.create(null);return L(a,([a,n])=>q(t,a,n)),t},W=(a,t)=>(delete a[t],a),Y=(a,t)=>L(U(a),n=>t(a[n],n)),j=(a,t)=>S(F(a),([a,n])=>t(n,a)),x=(a,t)=>{const n=H();return Y(a,(a,e)=>q(n,e,t(a,e))),n},B=a=>m(U(a)),X=a=>k(a)&&0==B(a),J="_",K="_id",z="SELECT",Q="WHERE",V="TABLE",Z="INSERT",aa="DELETE",ta="UPDATE",na="ALTER "+V,ea="FROM",ca=aa+" "+ea,sa=z+"*"+ea,ia="CREATE ",ra=ia+V,oa="OR REPLACE ",wa="FUNCTION",la=/\$tableName/g,ua=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),ya=(...a)=>ua(g(a,"_")),da=a=>"$"+a[0]++,Ea=(a,t,n=[1])=>g(S(a,()=>t(n)),e),_a=(a,t=s,e)=>{const c=b([t==s?void 0:`(${Na(t,ua(a))})`,e],a=>!u(a));return f(c)?n:Q+g(c,"AND")},Na=(a,t)=>i(a,la,t),ma=(a,t)=>a?.has(t)??!1,fa=a=>u(a)||0==(a=>a?.size??0)(a),va=a=>[...a?.values()??[]],Aa=a=>a.clear(),Ta=(a,t)=>a?.forEach(t),ha=(a,t)=>a?.delete(t),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):k(a)?x(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,ba=a=>new Sa(a),pa=(a,t)=>a?.get(t),Da=(a,t)=>Ta(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return Da(a,(a,e)=>D(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ha(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=pa(a,t);return ma(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:pa)(a,t[c],c>m(t)-2?n:ba),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return fa(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=ba();return Y(a,(a,i)=>{const r=(l=G(t,_(a)?{[n]:a}:a),o=C.values(l),w=B(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=ba(),st=ba(),it=ba(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,G=0,q=0,H=0,W=0;const Y={},j=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(pa(it,l)??0)+1);const x=ba(),[B,J,K,z,Q]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!X(a)||!X(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!X(a)||!X(t),t.setContent]:O(0))(r,a,w),[V,Z,aa]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&D(a,t)}]})(),s=ba(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?D(e,a):y(t[n])?Ta(a,a=>c(a,n+1)):L([t[n],null],t=>c(pa(a,t),n+1));return c(a,0),e})(e,c),n=>Ta(n,n=>{const e=()=>pa(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(pa(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ha(t,a),fa(t)?1:0)),Pa(s,a),c(a),e)),a=>E(pa(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>Na),ta=a=>{a!=C&&(C=a,Z(x,void 0,C))},na=()=>{pa(it,l)||pa(ct,l)||!f(pa(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ea=t=>{(B&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ca=async()=>{da()&&a.__?.[0]?.()&&await la()},sa=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),ia=async a=>(2!=C&&(await I(async()=>{ta(1),P++,await _a(()=>$(async()=>{const n=await t();N(n)?ea(n):u(n)&&a?Q(a):u(n)||O(1,n)},t=>{i?.(t),a&&Q(a)}))},()=>ta(0)),await ca()),Na),ra=async()=>{const a=q;q=0,a&&a==k&&!W&&(2==C?q=a:await ia())},oa=async a=>{const t=++k;let n=!0;if(await wa(!0),t==k&&!W){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!W)if(e||a){const t=n||2==C||!!G;U++,t&&G++,await I(async()=>{ta(1),P++,await(t?_a(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&G--,--U||ta(0)}),U||await ca()}else 2==C?q=t:await ia()});t!=k||W?u(a)||await s(a):d=a},i);await sa(e),t!=k||W||await I(()=>ia(a),()=>{n=!1})}return Na},wa=async(a=!1)=>{q=0,a||k++;const t=_,n=d;return d=void 0,await sa(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),Na},la=async a=>(1!=C&&await I(()=>I(async()=>{ta(2),F++,await _a(()=>$(()=>e(J,a),i))},()=>ta(0)),ra),Na),ua=async()=>{const t=++H;return await ya(!0),t!=H||W||(await la(),t!=H||W||(A=a.addDidFinishTransactionListener(()=>{if(t==H&&!W){const a=K();z(a)&&$(()=>la(a))}}))),Na},ya=async(t=!1)=>{t||H++;const n=A;return A=void 0,u(n)||a.delListener(n),Na},da=()=>!u(A),Ea=async(a=!1)=>{const[t,n]=a?[ya,wa]:[wa,ya];return await I(()=>t(),async()=>{await n()}),Na},_a=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():D(pa(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,Y]})));if(await(async()=>{if(!pa(ct,l)){Pa(ct,l,1);const a=pa(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{p(a,t),Pa(ct,l,0),na()})}})(),await e,n)throw t;return Na},Na={load:ia,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:la,startAutoSave:ua,stopAutoSave:ya,isAutoSaving:da,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ua,oa,ya,wa]:[oa,ua,wa,ya],i=n(a),r=t?H:k;await i;const o=e(a),w=t?k:H;try{await o}catch(a){throw w==(t?k:H)&&await R(s),r==(t?H:k)&&await R(c),a}return Na},stopAutoPersisting:Ea,getStatus:()=>C,addStatusListener:a=>V(a,x),delListener:t=>(aa(t),a),schedule:_a,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(W=1,h=(async()=>{const a=pa(st,l),t=b(a,([,a,t])=>t!=Y||(a?.(),!1)),n=g;p(a),D(a,...t),await I(()=>I(()=>I(Ea,()=>n),()=>j?.()),()=>{const a=(pa(it,l)??1)-1;Pa(it,l,a||void 0),na()})})()),await h,Na)};return M(Na)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=ba(),E=ba();let _=a;return[async()=>{Aa(d),Aa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>ma(pa(d,a),t))(a,t)?H(b(S(await _(sa+ua(a)+_a(a,n)),a=>{const n=a[t],e=l?x(W(a,t),l):W(a,t);return[n,u(c)?e:H(b(j(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||ma(c,a))(a)))]}),a=>!u(a[0])&&!X(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||ma(A,a),O=Ua();Y(c??{},a=>L(b(U(a??{}),T),a=>Ma(O,a)));const $=va(O);if(u(A)&&!N&&y&&m==s&&f($)&&ma(d,a))return await _("DROP "+V+ua(a)),Pa(d,a),void Pa(E,a);const R=pa(d,a),I=Ua(b(va(R),a=>a==n||T(a)));if(!f($))if(ma(d,a)){if(await h(S([n,...$],async t=>{ha(I,t)||(await _(na+ua(a)+"ADD"+ua(t)+i),Ma(R,t))})),o==wt&&!ma(pa(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+ua(e)+"ON"+ua(a)+`(${ua(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(ra+ua(a)+`(${ua(n)}${i} PRIMARY KEY${g(S($,a=>e+ua(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(va(I),async t=>{t!=n&&(await _(na+ua(a)+"DROP"+ua(t)),ha(R,t))}):[]]),N)u(c)?u(A)&&await _(ca+ua(a)+_a(a,m)):await h(j(c,async(t,e)=>{if(u(t))await _(ca+ua(a)+_a(a,m,`(${ua(n)}=${r([1])})`),[e]);else if(!f($)){const c=b(U(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&ma(d,a)&&await _(ca+ua(a)+_a(a,m));else{const t=b(va(pa(d,a)),a=>a!=n&&T(a)),e=H(),s=[];Y(c??{},(a,n)=>{q(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),D(s,n)}),await o(_,a,n,t,e,r,R),await _(ca+ua(a)+_a(a,m,`${ua(n)}NOT IN(${Ea(s,r)})`),s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(Z+" INTO"+ua(t)+"("+((...a)=>g(S(a,ua),e))(n,...c)+")VALUES"+g(j(s,a=>"("+i(r)+","+Ea(a,i,r)+")"),e)+"ON CONFLICT("+ua(n)+`)DO ${ta} SET`+g(S(c,a=>ua(a)+"=excluded."+ua(a)),e),j(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[J]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[J]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,p]=ot(t,_,N,v,A,T,O,$,R),D=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!C.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),P=(a,t,n)=>H(1==n?b(j(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):b(S(t,t=>[t,a[t]]),([,a])=>!u(a))),F=async(a,t)=>l?await g(y,K,{[J]:u(E)?a:P(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>p(async()=>{await I();const a=await(async()=>H(b(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!X(a[1]))))(),t=await(async()=>w?(await L(y,K,void 0,d))[J]:{})();return X(a)&&u(t)?void 0:[a,t]}),(a,t)=>p(async()=>{if(await I(),u(t)){const[t,n]=a();await D(t),await F(n)}else await D(t[0],!0),await F(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=ba(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>G(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??K,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=G(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:K,[Qa]:s},Xa,a=>ma(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:K,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>ma(E,t),(a,t)=>Ma(d,t));return Da(m,(a,t)=>t[4]??=pa(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const b=n+ga(Ra(T)),p=t+"_"+b,C=y??c,P=async(a,n,e="",c="")=>{const s=ya(t,a,b);return await N(ia+oa+wa+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},F=async(a,t,n,e)=>(await N(ia+a+"TRIGGER"+t+n+"EXECUTE "+wa+e+"()"),t),k=a=>`PERFORM pg_notify('${p}',${a});`,U=(a,t)=>A?s:2===t?U(a,0)+" OR "+U(a,1):Na(pa(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),M=(a,e)=>h(S([Z,aa,ta],(c,s)=>{const i=g([t,"d",b,a,c],"_");return F(oa,v(dt,a)&&m(i)<=63?ua(i):ya(t,"d",b,c,n+ga(a)),`AFTER ${c} ON${ua(a)}FOR EACH ROW WHEN(${U(a,s)})`,e)})),q=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},H=(a,t)=>{pa(a,b)===t&&(Pa(a,b),fa(a)&&pa(Et,C)===a&&Pa(Et,C))},W=async()=>{const a=Fa(Et,C,()=>ba()),n=pa(a,b);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await W());const e=[],c=[1,void 0,e];Pa(a,b,c),c[1]=(async()=>{const a=await P("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${Q} command_tag='${ra}' LOOP ${k("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");D(e,a),await F("EVENT ",ya(t,"c",b),`ON ddl_command_end WHEN TAG IN('${ra}')`,a);const n=await P("d",k("'d:'||TG_TABLE_NAME")+"RETURN NULL;");D(e,n),c[3]=n,await h(S(va(L),async a=>(await N(ra+` IF NOT EXISTS${ua(a)}("_id"text PRIMARY KEY)`),await M(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>q(e),()=>H(a,c)),await $(()=>c[4]),t}return c},Y=async a=>{if(0==--a[0]){const t=pa(Et,C);a[4]=I(()=>q(a[2]),()=>H(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await W();try{return[await i(p,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{ma(L,e)&&("c:"==n&&await M(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>Y(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>Y(t))},w,l,u,T,va(L),async(a,t)=>await a(z+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${z} count(*) FROM information_schema.key_column_usage kcu2 ${Q} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${Q} c.table_schema='public'AND c.table_name IN(${Ea(t,da)})`,t),y,d,"text",da,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=ua(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};