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),O=(a,t)=>a?.has(t)??!1,p=a=>u(a)||0==(a=>a?.size??0)(a),g=a=>[...a?.values()??[]],T=a=>a.clear(),I=(a,t)=>a?.forEach(t),S=(a,t)=>a?.delete(t),D=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},b=(a,t)=>R(a,a=>{R(()=>t?.(a))}),L=async(a,t)=>{try{return await a()}finally{await t()}},C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),F=(a,t)=>a.filter(t),x=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",q="WHERE",J="TABLE",X="ALTER "+J,Y="FROM",z="DELETE "+Y,G=k+"*"+Y,H="pragma_",K="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+J,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)=>q+`(${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 C(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>C(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),Oa=(a,t)=>I(a,(a,n)=>t(n,a)),pa=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>u(n)?(S(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):ga(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)&&ga(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return p(s)&&ga(a,t[i]),r}),Sa=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),Ra="ColumnName",ba="store",La="json",Ca=ba+"TableName",Ma=ba+"Id"+Ra,Pa=ba+Ra,Fa="autoLoadIntervalSeconds",xa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",qa="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ua]: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]),ga(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,g=0,T=0,M=0,U=0,j=0,k=0,q=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),ga(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]:D(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&&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])?I(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=>I(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 ga(s,w,[i,r,c,o,l]),Da(Ia(r,c??[n],Sa),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(S(t,a),p(t)?1:0)),ga(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!=O&&(O=a,Z(z,void 0,O))},na=()=>{ha(at,w)||ha(Wa,w)||!$(ha(Za,w)??[])||(ga(Wa,w),ga(Za,w),ga(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=>L(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=O&&(await L(async()=>{ta(1),g++,await Ea(()=>R(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||D(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=k;k=0,a&&a==M&&!J&&(2==O?k=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await la(!0),t==M&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==M&&!J)if(e||a){const t=n||2==O||!!j;U++,t&&j++,await L(async()=>{ta(1),g++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&j--,--U||ta(0)}),U||await ia()}else 2==O?k=t:await ra()});t!=M||J?u(a)||await s(a):d=a},r);await sa(e),t!=M||J||await L(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{k=0,a||M++;const t=v,n=d;return d=void 0,await sa(L(async()=>{await t},async()=>{u(n)||await R(()=>s(n),r)})),ma},ua=async a=>(1!=O&&await L(()=>L(async()=>{ta(2),T++,await Ea(()=>R(()=>e(H,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++q;return await da(!0),t!=q||J||(await ua(),t!=q||J||(E=a.addDidFinishTransactionListener(()=>{if(t==q&&!J){const a=K();Q(a)&&R(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||q++;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 L(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():B(ha(Za,w),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await L(async()=>{try{await R(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)){ga(Wa,w,1);const a=ha(Za,w);let t=0;await L(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{x(a,t),ga(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?q:M;await r;const o=e(a),l=t?M:q;try{await o}catch(a){throw l==(t?M:q)&&await b(s),c==(t?q:M)&&await b(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>O,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:g,saves:T}),...o,destroy:async()=>(u(_)&&(J=1,_=(async()=>{const a=ha(Za,w),t=F(a,([,a,t])=>t!=X||(a?.(),!1)),n=h;x(a),B(a,...t),await L(()=>L(()=>L(fa,()=>n),()=>Y?.()),()=>{const a=(ha(at,w)??1)-1;ga(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()=>{T(d),T(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)=>O(ha(d,a),t))(a,t)?da(F(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(F(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||O(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:Sa(N),A=a=>u(_)||O(_,a),p=Sa();fa(i??{},a=>C(F(la(a??{}),A),a=>Da(p,a)));const T=g(p);if(u(_)&&!E&&y&&m==s&&$(T)&&O(d,a))return await f("DROP "+J+aa(a)),ga(d,a),void ga(v,a);const I=ha(d,a),D=Sa(F(g(I),a=>a==n||A(a)));if(!$(T))if(O(d,a)){if(await h(P([n,...T],async t=>{S(D,t)||(await f(X+aa(a)+"ADD"+aa(t)+r),Da(I,t))})),o==it&&!O(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})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Da(Ta(v,a,Sa),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(T,a=>e+aa(a)+r))});`),ga(d,a,Sa([n,...T])),ga(v,a,Sa([n]));if(await h([...!E&&w?P(g(D),async t=>{t!=n&&(await f(X+aa(a)+"DROP"+aa(t)),S(I,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(!$(T)){const i=F(la(t),A);$(i)||await o(f,a,n,i,{[e]:P(i,a=>l?l(t[a]):t[a])},c,I)}}));else if($(T))u(_)&&O(d,a)&&await f(z+aa(a)+ea(a,m));else{const t=F(g(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])),B(s,n)}),await o(f,a,n,t,e,c,I),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 L(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>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,l],w,y,d,v,f,E,m,N,$,_)=>{const[A,h,O,p]=et(t,w,y,f,E,m,void 0,void 0,_);return tt(a,()=>p(async()=>{return await A(),a=(await h(c,o))[U]?.[l]??"null",Qa(Ka(a));var a}),a=>p(async()=>{var t;await A(),await O(c,o,{[U]:{[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,O,p,g)=>{const[T,I,S,D]=et(t,f,E,$,_,A,O,p,g),R=(a,t)=>h(pa(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)})),b=(a,t,n)=>da(1==n?F(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):F(P(t,t=>[t,a[t]]),([,a])=>!u(a))),L=async(a,t)=>w?await S(y,j,{[U]:u(v)?a:b(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>D(async()=>{await T();const a=await(async()=>da(F(await h(pa(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(y,j,void 0,d))[U]:{})();return $a(a)&&u(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),u(t)){const[t,n]=a();await R(t),await L(n)}else await R(t[0],!0),await L(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,p;const T=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,R,C]=(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]??j,n[Pa]??ba],Sa(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[Ua],Ya(l),Ya(w)],y=u[2],d=Sa(y),v=Sa(y),f=Ga(i,{[Ba]:null,[xa]:j,[qa]:s},Ba,a=>O(v,a),a=>Da(d,a)),m=Ga(r,{[Ua]:null,[xa]:j,[ja]:0,[ka]:0,[qa]:null},Ua,(a,t)=>O(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!I&&a.isMergeable()&&D(0),(I?st:rt)(a,T,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await T(k+` ${K} d,${Q} s,TOTAL_CHANGES() c FROM ${H}${K} JOIN ${H}${Q}`);if(e&&(n!=A||i!=h||r!=p)){const c=t&&!s&&!w(A);A=n,h=i,p=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=L(()=>b(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*S)))});return n=c,c},f=r(a=>{e&&O(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await L(async()=>await n,async()=>{A=h=p=null,await o(f)})})},a=>a(),y,v,f,R,g(C),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${H}index_list(t.name)i,${H}index_info(i.name)ii ${q} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${H}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${q} 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 A((e,i)=>t.all(a,n,(a,t)=>a?i(a):e(t))),a=>((a,t,n)=>(a.on(t,n),()=>a.off(t,n)))(t,"change",(t,n,e)=>a(e)),a=>a(),e,i,_,3,t);export{ot as createSqlite3Persister};
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),O=(a,t)=>a?.has(t)??!1,p=a=>u(a)||0==(a=>a?.size??0)(a),g=a=>[...a?.values()??[]],T=a=>a.clear(),I=(a,t)=>a?.forEach(t),S=(a,t)=>a?.delete(t),D=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},b=(a,t)=>R(a,a=>{R(()=>t?.(a))}),L=async(a,t)=>{try{return await a()}finally{await t()}},C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),F=(a,t)=>a.filter(t),x=(a,t=$(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U=Object,j=a=>U.getPrototypeOf(a),k=U.entries,q=a=>!w(a)&&v(j(a),a=>a==U.prototype||w(j(a)),()=>!0),J=U.keys,X=U.freeze,Y=(...a)=>U.assign(U.create(null),...a),z=(a,t,n)=>(U.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),G=(a=[])=>{const t=U.create(null);return C(a,([a,n])=>z(t,a,n)),t},H=(a,t)=>(delete a[t],a),K=(a,t)=>C(J(a),n=>t(a[n],n)),Q=(a,t)=>P(k(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=>q(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=>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),$a=(a,t=s,e)=>{const i=F([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),Na=Map,Aa=a=>new Na(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>I(a,(a,n)=>t(n,a)),pa=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>u(n)?(S(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):ga(a,t,i=n()),i},Ia=(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)&&ga(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return p(s)&&ga(a,t[i]),r}),Sa=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),Ra="ColumnName",ba="store",La="json",Ca=ba+"TableName",Ma=ba+"Id"+Ra,Pa=ba+Ra,Fa="autoLoadIntervalSeconds",xa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",qa="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ua]: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=U.values(w),l=W(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),ga(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):q(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,g=0,T=0,M=0,U=0,j=0,k=0,q=0,J=0;const Y={},z=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),ga(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]:D(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&&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==$(t)?B(e,a):y(t[n])?I(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=>I(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 ga(s,w,[i,r,c,o,l]),Da(Ia(r,c??[n],Sa),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(S(t,a),p(t)?1:0)),ga(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])?C(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)??[])||(ga(Wa,w),ga(Za,w),ga(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=>L(()=>v=a,()=>{v==a&&(v=void 0)}),oa=async a=>(2!=O&&(await L(async()=>{ea(1),g++,await ma(()=>R(async()=>{const n=await t();m(n)?sa(n):u(n)&&a?W(a):u(n)||D(1,n)},t=>{r?.(t),a&&W(a)}))},()=>ea(0)),await ra()),$a),la=async()=>{const a=k;k=0,a&&a==M&&!J&&(2==O?k=a:await oa())},wa=async a=>{const t=++M;let n=!0;if(await ua(!0),t==M&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==M&&!J)if(e||a){const t=n||2==O||!!j;U++,t&&j++,await L(async()=>{ea(1),g++,await(t?ma(()=>sa(e??a)):(()=>{try{return sa(e??a)}finally{ea(0)}})())},()=>{t&&j--,--U||ea(0)}),U||await ra()}else 2==O?k=t:await oa()});t!=M||J?u(a)||await s(a):d=a},r);await ca(e),t!=M||J||await L(()=>oa(a),()=>{n=!1})}return $a},ua=async(a=!1)=>{k=0,a||M++;const t=v,n=d;return d=void 0,await ca(L(async()=>{await t},async()=>{u(n)||await R(()=>s(n),r)})),$a},ya=async a=>(1!=O&&await L(()=>L(async()=>{ea(2),T++,await ma(()=>R(()=>e(K,a),r))},()=>ea(0)),la),$a),da=async()=>{const t=++q;return await va(!0),t!=q||J||(await ya(),t!=q||J||(E=a.addDidFinishTransactionListener(()=>{if(t==q&&!J){const a=Q();V(a)&&R(()=>ya(a))}}))),$a},va=async(t=!1)=>{t||q++;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 L(()=>t(),async()=>{await n()}),$a},ma=async(...a)=>{let t,n=!1;const e=A(e=>_(a)?e():B(ha(Za,w),...P(a,(i,s)=>{const c=s==$(a)-1;return[async()=>{let a;h=A(t=>a=t),await L(async()=>{try{await R(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)){ga(Wa,w,1);const a=ha(Za,w);let t=0;await L(async()=>{for(;t<$(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{x(a,t),ga(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?q:M;await r;const o=e(a),l=t?M:q;try{await o}catch(a){throw l==(t?M:q)&&await b(s),c==(t?q:M)&&await b(i),a}return $a},stopAutoPersisting:Ea,getStatus:()=>O,addStatusListener:a=>aa(a,G),delListener:t=>(na(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:g,saves:T}),...o,destroy:async()=>(u(N)&&(J=1,N=(async()=>{const a=ha(Za,w),t=F(a,([,a,t])=>t!=Y||(a?.(),!1)),n=h;x(a),B(a,...t),await L(()=>L(()=>L(Ea,()=>n),()=>z?.()),()=>{const a=(ha(at,w)??1)-1;ga(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()=>{T(d),T(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)=>O(ha(d,a),t))(a,t)?G(F(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(F(Q(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||O(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:Sa($),A=a=>u(N)||O(N,a),p=Sa();K(i??{},a=>C(F(J(a??{}),A),a=>Da(p,a)));const T=g(p);if(u(N)&&!E&&y&&m==s&&_(T)&&O(d,a))return await f("DROP "+ia+fa(a)),ga(d,a),void ga(v,a);const I=ha(d,a),D=Sa(F(g(I),a=>a==n||A(a)));if(!_(T))if(O(d,a)){if(await h(P([n,...T],async t=>{S(D,t)||(await f(sa+fa(a)+"ADD"+fa(t)+r),Da(I,t))})),o==it&&!O(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})(Ha([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(T,a=>e+fa(a)+r))});`),ga(d,a,Sa([n,...T])),ga(v,a,Sa([n]));if(await h([...!E&&w?P(g(D),async t=>{t!=n&&(await f(sa+fa(a)+"DROP"+fa(t)),S(I,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(!_(T)){const i=F(J(t),A);_(i)||await o(f,a,n,i,{[e]:P(i,a=>l?l(t[a]):t[a])},c,I)}}));else if(_(T))u(N)&&O(d,a)&&await f(ca+fa(a)+$a(a,m));else{const t=F(g(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])),B(s,n)}),await o(f,a,n,t,e,c,I),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 L(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>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,l],w,y,d,v,f,E,m,$,_,N)=>{const[A,h,O,p]=et(t,w,y,f,E,m,void 0,void 0,N);return tt(a,()=>p(async()=>{return await A(),a=(await h(c,o))[aa]?.[l]??"null",Qa(Ka(a));var a}),a=>p(async()=>{var t;await A(),await O(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,O,p,g)=>{const[T,I,S,D]=et(t,f,E,_,N,A,O,p,g),R=(a,t)=>h(pa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!U.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),b=(a,t,n)=>G(1==n?F(Q(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):F(P(t,t=>[t,a[t]]),([,a])=>!u(a))),L=async(a,t)=>w?await S(y,ta,{[aa]:u(v)?a:b(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>D(async()=>{await T();const a=await(async()=>G(F(await h(pa(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>l?(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 R(t),await L(n)}else await R(t[0],!0),await L(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,p;const T=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,R,C]=(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]??ba],Sa(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[Ua],Ya(l),Ya(w)],y=u[2],d=Sa(y),v=Sa(y),f=Ga(i,{[Ba]:null,[xa]:ta,[qa]:s},Ba,a=>O(v,a),a=>Da(d,a)),m=Ga(r,{[Ua]:null,[xa]:ta,[ja]:0,[ka]:0,[qa]:null},Ua,(a,t)=>O(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!I&&a.isMergeable()&&D(0),(I?st:rt)(a,T,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await T(na+` ${wa} d,${ua} s,TOTAL_CHANGES() c FROM ${la}${wa} JOIN ${la}${ua}`);if(e&&(n!=A||i!=h||r!=p)){const c=t&&!s&&!w(A);A=n,h=i,p=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=L(()=>b(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*S)))});return n=c,c},f=r(a=>{e&&O(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await L(async()=>await n,async()=>{A=h=p=null,await o(f)})})},a=>a(),y,v,f,R,g(C),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 A((e,i)=>t.all(a,n,(a,t)=>a?i(a):e(t))),a=>((a,t,n)=>(a.on(t,n),()=>a.off(t,n)))(t,"change",(t,n,e)=>a(e)),a=>a(),e,i,N,3,t);export{ot as createSqlite3Persister};
@@ -0,0 +1 @@
1
+ const t=t=>typeof t,a="tinybase",n="",e=",",s=t(n),i="true",r=(t,a,n)=>t.replace(a,n),o=Promise,c=t=>(a,n,e)=>t(a)?e?.():n(a),w=globalThis,l=t=>null==t,u=t=>void 0===t,y=t=>null===t,d=c(l),v=c(u),f=a=>t(a)==s,E=t=>Array.isArray(t),T=t=>t.length,N=t=>0==T(t),A=()=>{},h=t=>new o(t),g=async t=>o.all(t),p=(t,a)=>t.forEach(a),S=(t,a="")=>t.join(a),_=(t,a)=>t.map(a),I=(t,a)=>t.filter(a),L=(t,a=T(t))=>t.splice(0,a),b=(t,...a)=>t.push(...a),O=(t,a)=>t?.has(a)??!1,m=t=>u(t)||0==(t=>t?.size??0)(t),$=t=>[...t?.values()??[]],R=t=>t.clear(),D=(t,a)=>t?.forEach(a),C=(t,a)=>t?.delete(a),P=(t,e)=>{throw((t,e)=>Error(a+":"+t+(u(e)?n:":"+e)))(t,e)},M=async(t,a)=>{try{return await t()}catch(t){a?.(t)}},U=(t,a)=>M(t,t=>{M(()=>a?.(t))}),x=async(t,a)=>{try{return await t()}finally{await a()}},F=Object,j=t=>F.getPrototypeOf(t),q=F.entries,B=t=>!l(t)&&d(j(t),t=>t==F.prototype||l(j(t)),()=>!0),J=F.keys,k=F.freeze,z=(...t)=>F.assign(F.create(null),...t),G=(t,a,n)=>(F.defineProperty(t,a,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),K=(t=[])=>{const a=F.create(null);return p(t,([t,n])=>G(a,t,n)),a},V=(t,a)=>(delete t[a],t),X=(t,a)=>p(J(t),n=>a(t[n],n)),Y=(t,a)=>_(q(t),([t,n])=>a(n,t)),H=(t,a)=>{const n=K();return X(t,(t,e)=>G(n,e,a(t,e))),n},Q=t=>T(J(t)),W=t=>B(t)&&0==Q(t),Z=JSON.stringify,tt=JSON.parse,at=t=>""===t?void 0:E(t)?_(t,at):B(t)?H(t,at):t,nt="_",et="_id",st="WHERE",it="TABLE",rt="INSERT",ot="UPDATE",ct="ALTER "+it,wt="FROM",lt="DELETE "+wt,ut="SELECT*"+wt,yt="CREATE "+it,dt=/\$tableName/g,vt=t=>S(_(((t,a="",n)=>t.split(a,n))(t,"."),t=>`"${r(t,/"/g,'""')}"`),"."),ft=(...t)=>S(_(t,vt),e),Et=t=>"$"+t[0]++,Tt=(t,a,n=[1])=>S(_(t,()=>a(n)),e),Nt=(t,a=i,e)=>{const s=I([a==i?void 0:`(${At(a,vt(t))})`,e],t=>!u(t));return N(s)?n:st+S(s,"AND")},At=(t,a)=>r(t,dt,a),ht=async(t,a,n,s,i,r)=>{const o=[1],c=S(_(s,t=>vt(t)+"="+r(o)),e),w=r(o);for(const[e,o]of Y(i,(t,a)=>[a,t])){const i=_(o,t=>t??null);if(N(await t(ot+vt(a)+" SET"+c+" "+st+vt(n)+"="+w+" RETURNING"+vt(n),[...i,e]))){const c=[1];await t(rt+" INTO"+vt(a)+"("+ft(n,...s)+")VALUES("+Tt([e,...o],r,c)+")",[e,...i])}}},gt=Map,pt=t=>new gt(t),St=(t,a)=>t?.get(a),_t=(t,a)=>D(t,(t,n)=>a(n,t)),It=(t,a)=>{const n=[];return _t(t,(t,e)=>b(n,a(e,t))),n},Lt=(t,a,n)=>u(n)?(C(t,a),t):t?.set(a,n),bt=(t,a,n,e)=>{let s=St(t,a);return O(t,a)?e?.(s):Lt(t,a,s=n()),s},Ot=(t,a,n,e,s=0)=>v((n?bt:St)(t,a[s],s>T(a)-2?n:pt),i=>{if(s>T(a)-2)return e?.(i)&&Lt(t,a[s]),i;const r=Ot(i,a,n,e,s+1);return m(i)&&Lt(t,a[s]),r}),mt=t=>new Set(E(t)||u(t)?t:[t]),$t=(t,a)=>t?.add(a),Rt="ColumnName",Dt="store",Ct="json",Pt=Dt+"TableName",Mt=Dt+"Id"+Rt,Ut=Dt+Rt,xt="autoLoadIntervalSeconds",Ft="rowId"+Rt,jt="tableId",qt="tableName",Bt="deleteEmptyColumns",Jt="deleteEmptyTable",kt="condition",zt={mode:Ct,[xt]:1},Gt={load:0,save:0,[qt]:a+"_values"},Kt=t=>E(t)?t:void 0,Vt=t=>!0===t||E(t),Xt=(t,a,n,e,s)=>{const i=pt();return X(t,(t,r)=>{const o=(l=z(a,f(t)?{[n]:t}:t),c=F.values(l),w=Q(a),c.slice(0,w));var c,w,l;y(o[0])||e(r,o[0])||(s(r,o[0]),Lt(i,r,o))}),i},Yt=/^\d+$/,Ht=pt(),Qt=pt(),Wt=pt(),Zt=(t,a,e,s,i,r,o,c={},w=0,l=[])=>{let d,f,A,g,S,O=0,$=0,R=0,F=0,j=0,q=0,B=0,J=0,z=0;const G={},K=c.destroy;bt(Ht,l,()=>0),bt(Qt,l,()=>[]),Lt(Wt,l,(St(Wt,l)??0)+1);const V=pt(),[X,Y,H,Q,Z]=((t=1,a,n)=>1!=t&&a.isMergeable()?[1,a.__[1],()=>a.__[2](!n),([[t],[a]])=>!W(t)||!W(a),a.setDefaultContent]:2!=t?[0,a._[7],a._[8],([t,a])=>!W(t)||!W(a),a.setContent]:P(0))(o,t,w),[tt,at,nt]=(t=>{let a;const[e,s]=(()=>{const t=[];let a=0;return[e=>(e?t.shift():null)??n+a++,a=>{Yt.test(a)&&T(t)<1e3&&b(t,a)}]})(),i=pt(),r=(t,e,s,r)=>{let o,c=!1;if(p(((t,a=[n])=>{const e=[],s=(t,n)=>n==T(a)?b(e,t):y(a[n])?D(t,t=>s(t,n+1)):p([a[n],null],a=>s(St(t,a),n+1));return s(t,0),e})(e,s),n=>D(n,n=>{const e=()=>St(i,n)[0](a,...s??[],...r);t?(t=>{try{return t()}catch(t){(t=>{c||(o=t),c=!0})?.(t)}})(e):e()})),c)throw o};return[(s,r,o,c=[],w=()=>[])=>{a??=t();const l=e(1);return Lt(i,l,[s,r,o,c,w]),$t(Ot(r,o??[n],mt),l),l},(t,a,...n)=>r(!1,t,a,n),t=>v(St(i,t),([,a,e])=>(Ot(a,e??[n],void 0,a=>(C(a,t),m(a)?1:0)),Lt(i,t),s(t),e)),t=>v(St(i,t),([t,,n=[],e,s])=>{const i=(...r)=>{const o=T(r);o==T(n)?t(a,...r,...s(r)):y(n[o])?p(e[o]?.(...r)??[],t=>i(...r,t)):i(...r,n[o])};i()}),(t,a,...n)=>r(!0,t,a,n)]})(()=>Nt),et=t=>{t!=O&&(O=t,at(V,void 0,O))},st=()=>{St(Wt,l)||St(Ht,l)||!N(St(Qt,l)??[])||(Lt(Ht,l),Lt(Qt,l),Lt(Wt,l))},it=a=>{(X&&E(a?.[0])?1===a?.[2]?t.__[4]:t.__[3]:1===a?.[2]?t._[10]:t._[9])(a)},rt=async()=>{ft()&&t.__?.[0]?.()&&await yt()},ot=t=>x(()=>f=t,()=>{f==t&&(f=void 0)}),ct=async t=>(2!=O&&(await x(async()=>{et(1),$++,await Tt(()=>M(async()=>{const n=await a();E(n)?it(n):u(n)&&t?Z(t):u(n)||P(1,n)},a=>{r?.(a),t&&Z(t)}))},()=>et(0)),await rt()),Nt),wt=async()=>{const t=B;B=0,t&&t==F&&!z&&(2==O?B=t:await ct())},lt=async t=>{const a=++F;let n=!0;if(await ut(!0),a==F&&!z){const e=M(async()=>{const t=await s(async(t,e)=>{if(a==F&&!z)if(e||t){const a=n||2==O||!!q;j++,a&&q++,await x(async()=>{et(1),$++,await(a?Tt(()=>it(e??t)):(()=>{try{return it(e??t)}finally{et(0)}})())},()=>{a&&q--,--j||et(0)}),j||await rt()}else 2==O?B=a:await ct()});a!=F||z?u(t)||await i(t):d=t},r);await ot(e),a!=F||z||await x(()=>ct(t),()=>{n=!1})}return Nt},ut=async(t=!1)=>{B=0,t||F++;const a=f,n=d;return d=void 0,await ot(x(async()=>{await a},async()=>{u(n)||await M(()=>i(n),r)})),Nt},yt=async t=>(1!=O&&await x(()=>x(async()=>{et(2),R++,await Tt(()=>M(()=>e(Y,t),r))},()=>et(0)),wt),Nt),dt=async()=>{const a=++J;return await vt(!0),a!=J||z||(await yt(),a!=J||z||(A=t.addDidFinishTransactionListener(()=>{if(a==J&&!z){const t=H();Q(t)&&M(()=>yt(t))}}))),Nt},vt=async(a=!1)=>{a||J++;const n=A;return A=void 0,u(n)||t.delListener(n),Nt},ft=()=>!u(A),Et=async(t=!1)=>{const[a,n]=t?[vt,ut]:[ut,vt];return await x(()=>a(),async()=>{await n()}),Nt},Tt=async(...t)=>{let a,n=!1;const e=h(e=>N(t)?e():b(St(Qt,l),..._(t,(s,i)=>{const o=i==T(t)-1;return[async()=>{let t;S=h(a=>t=a),await x(async()=>{try{await M(s,r)}catch(t){n||(n=!0,a=t)}o&&e()},()=>{S=void 0,t()})},o?e:void 0,G]})));if(await(async()=>{if(!St(Ht,l)){Lt(Ht,l,1);const t=St(Qt,l);let a=0;await x(async()=>{for(;a<T(t);){const n=t[a++];n[2]=void 0,await n[0]()}},()=>{L(t,a),Lt(Ht,l,0),st()})}})(),await e,n)throw a;return Nt},Nt={load:ct,startAutoLoad:lt,stopAutoLoad:ut,isAutoLoading:()=>!u(d),save:yt,startAutoSave:dt,stopAutoSave:vt,isAutoSaving:ft,startAutoPersisting:async(t,a=!1)=>{const[n,e,s,i]=a?[dt,lt,vt,ut]:[lt,dt,ut,vt],r=n(t),o=a?J:F;await r;const c=e(t),w=a?F:J;try{await c}catch(t){throw w==(a?F:J)&&await U(i),o==(a?J:F)&&await U(s),t}return Nt},stopAutoPersisting:Et,getStatus:()=>O,addStatusListener:t=>tt(t,V),delListener:a=>(nt(a),t),schedule:Tt,getStore:()=>t,getStats:()=>({loads:$,saves:R}),...c,destroy:async()=>(u(g)&&(z=1,g=(async()=>{const t=St(Qt,l),a=I(t,([,t,a])=>a!=G||(t?.(),!1)),n=S;L(t),b(t,...a),await x(()=>x(()=>x(Et,()=>n),()=>K?.()),()=>{const t=(St(Wt,l)??1)-1;Lt(Wt,l,t||void 0),st()})})()),await g,Nt)};return k(Nt)},ta=new w.TextEncoder,aa=(t,n,s,r,o,c=na,w,l,y)=>{const d=pt(),v=pt();let f=t;return[async()=>{R(d),R(v),p(await s(f,n),({tn:t,cn:a,uq:n})=>{$t(bt(d,t,mt),a),n&&$t(bt(v,t,mt),a)})},async(t,a,n,e)=>{const s=u(e)?void 0:mt(e);return((t,a)=>O(St(d,t),a))(t,a)?K(I(_(await f(ut+vt(t)+Nt(t,n)),t=>{const n=t[a],e=l?H(V(t,a),l):V(t,a);return[n,u(s)?e:K(I(Y(e,(t,a)=>[a,t]),([t])=>(t=>u(s)||O(s,t))(t)))]}),t=>!u(t[0])&&!W(t[1]))):{}},async(t,n,s,l,y,E=!1,T=i,A)=>{const h=u(A)?void 0:mt(A),L=t=>u(h)||O(h,t),m=mt();X(s??{},t=>p(I(J(t??{}),L),t=>$t(m,t)));const R=$(m);if(u(h)&&!E&&y&&T==i&&N(R)&&O(d,t))return await f("DROP "+it+vt(t)),Lt(d,t),void Lt(v,t);const D=St(d,t),P=mt(I($(D),t=>t==n||L(t)));if(!N(R))if(O(d,t)){if(await g(_([n,...R],async a=>{C(P,a)||(await f(ct+vt(t)+"ADD"+vt(a)+r),$t(D,a))})),c==na&&!O(St(v,t),n)){const e=a+"_pk_"+(t=>{let a=2166136261;return p(ta.encode(t),t=>{a^=t,a+=(a<<1)+(a<<4)+(a<<7)+(a<<8)+(a<<24)}),a>>>0})(Z([t,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+vt(e)+"ON"+vt(t)+`(${vt(n)})`),$t(bt(v,t,mt),n)}}else await f(yt+vt(t)+`(${vt(n)}${r} PRIMARY KEY${S(_(R,t=>e+vt(t)+r))});`),Lt(d,t,mt([n,...R])),Lt(v,t,mt([n]));if(await g([...!E&&l?_($(P),async a=>{a!=n&&(await f(ct+vt(t)+"DROP"+vt(a)),C(D,a))}):[]]),E)u(s)?u(h)&&await f(lt+vt(t)+Nt(t,T)):await g(Y(s,async(a,e)=>{if(u(a))await f(lt+vt(t)+Nt(t,T,`(${vt(n)}=${o([1])})`),[e]);else if(!N(R)){const s=I(J(a),L);N(s)||await c(f,t,n,s,{[e]:_(s,t=>w?w(a[t]):a[t])},o,D)}}));else if(N(R))u(h)&&O(d,t)&&await f(lt+vt(t)+Nt(t,T));else{const a=I($(St(d,t)),t=>t!=n&&L(t)),e=K(),i=[];X(s??{},(t,n)=>{G(e,n,_(a,a=>w?w(t?.[a]):t?.[a])),b(i,n)}),await c(f,t,n,a,e,o,D),await f(lt+vt(t)+Nt(t,T,`${vt(n)}NOT IN(${Tt(i,o)})`),i)}},async a=>{if(y)return await y(async t=>{const n=f;return f=t,await x(a,()=>{f=n})});await t("BEGIN");try{const n=await a();return await t("END"),n}catch(a){throw await M(()=>t("ROLLBACK")),a}}]},na=async(t,a,n,s,i,r)=>{const o=[1];await t(rt+" INTO"+vt(a)+"("+ft(n,...s)+")VALUES"+S(Y(i,t=>"("+r(o)+","+Tt(t,r,o)+")"),e)+"ON CONFLICT("+vt(n)+`)DO ${ot} SET`+S(_(s,t=>vt(t)+"=excluded."+vt(t)),e),Y(i,(t,a)=>[a,..._(t,t=>t??null)]).flat())},ea=(t,a,n,e,s,i,r,[o,c,w],l,y,d,v,f,E,T,N,A,h)=>{const[g,p,S,_]=aa(a,l,y,f,E,T,void 0,void 0,h);return Zt(t,()=>_(async()=>{return await g(),t=(await p(o,c))[nt]?.[w]??"null",at(tt(t));var t}),t=>_(async()=>{var a;await g(),await S(o,c,{[nt]:{[w]:(a=t()??null,Z(a,(t,a)=>u(a)?"":a))}},!0,!0)}),n,e,s,r,{[v]:()=>d,destroy:i},0,d)},sa=(t,a,n,e,s,i,r,[o,c,[w,l,y,d,v]],f,E,T,N,A,h,p,S,L,b)=>{const[O,m,$,R]=aa(a,f,E,A,h,p,S,L,b),D=(t,a)=>g(It(c,async([n,e,s,i,r],o)=>{var c,w;a&&(c=t,w=o,!F.hasOwn(c,w))||await $(n,e,t[o],s,i,a,r)})),C=(t,a,n)=>K(1==n?I(Y(t,(t,a)=>[a,t]),([t])=>{return n=t,a.includes(n);var n}):I(_(a,a=>[a,t[a]]),([,t])=>!u(t))),P=async(t,a)=>l?await $(y,et,{[nt]:u(v)?t:C(t,v,a)},!0,!0,a,void 0,v):null;return Zt(t,()=>R(async()=>{await O();const t=await(async()=>K(I(await g(It(o,async([t,a,n],e)=>[t,await m(e,a,n)])),t=>!W(t[1]))))(),a=await(async()=>w?(await m(y,et,void 0,d))[nt]:{})();return W(t)&&u(a)?void 0:[t,a]}),(t,a)=>R(async()=>{if(await O(),u(a)){const[a,n]=t();await D(a),await P(n)}else await D(a[0],!0),await P(a[1],!0)}),n,e,s,r,{[N]:()=>T,destroy:i},0,T)},ia=(t,n,e,s,r)=>{const o=((t,a)=>a?async(n,e)=>(a(n,e),await t(n,e)):t)(async(t,a=[])=>(await n.query(t,a)).rows,s),[c,,w,l]=(t=>{const n=(t=>z(zt,f(t)?{[Pt]:t}:t??{}))(t),e=n[xt];if(n.mode==Ct){const t=n[Pt]??a;return[1,e,[t,n[Mt]??et,n[Ut]??Dt],mt(t)]}const{tables:{load:s={},save:r={}}={},values:o={}}=n,c=z(Gt,o),{load:w,save:l}=c,u=[Vt(w),Vt(l),c[qt],Kt(w),Kt(l)],y=u[2],d=mt(y),v=mt(y),E=Xt(s,{[jt]:null,[Ft]:et,[kt]:i},jt,t=>O(v,t),t=>$t(d,t)),T=Xt(r,{[qt]:null,[Ft]:et,[Bt]:0,[Jt]:0,[kt]:null},qt,(t,a)=>O(v,a),(t,a)=>$t(d,a));return _t(T,(t,a)=>a[4]??=St(E,a[0])?.[2]??i),[0,e,[E,T,u],d]})(e);!c&&t.isMergeable()&&P(0);const u=$(l);return(c?ea:sa)(t,o,t=>n.subscribe({tables:u},()=>{U(t,r)}),t=>t(),r,A,3,w,u,async()=>{const t=[];return await g(_(u,async a=>{const e=ut+vt(a)+"LIMIT 0";s?.(e),await U(async()=>p((await n.query(e)).fields,({name:n})=>b(t,{tn:a,cn:n})))})),t},n,"getTinyJoin","text",Et,ht,t=>Z(t),t=>tt(t),t=>t(o))};export{ia as createTinyJoinPersister};
@@ -0,0 +1 @@
1
+ const t=t=>typeof t,a="tinybase",n="",e=",",s=t(n),i="true",r=(t,a,n)=>t.replace(a,n),o=Promise,c=t=>(a,n,e)=>t(a)?e?.():n(a),w=globalThis,l=t=>null==t,u=t=>void 0===t,y=t=>null===t,d=c(l),v=c(u),f=a=>t(a)==s,E=t=>Array.isArray(t),T=t=>t.length,N=t=>0==T(t),A=()=>{},h=t=>new o(t),g=async t=>o.all(t),p=(t,a)=>t.forEach(a),S=(t,a="")=>t.join(a),_=(t,a)=>t.map(a),I=(t,a)=>t.filter(a),L=(t,a=T(t))=>t.splice(0,a),b=(t,...a)=>t.push(...a),O=(t,a)=>t?.has(a)??!1,m=t=>u(t)||0==(t=>t?.size??0)(t),$=t=>[...t?.values()??[]],R=t=>t.clear(),D=(t,a)=>t?.forEach(a),C=(t,a)=>t?.delete(a),P=(t,e)=>{throw((t,e)=>Error(a+":"+t+(u(e)?n:":"+e)))(t,e)},M=async(t,a)=>{try{return await t()}catch(t){a?.(t)}},U=(t,a)=>M(t,t=>{M(()=>a?.(t))}),x=async(t,a)=>{try{return await t()}finally{await a()}},F=Object,j=t=>F.getPrototypeOf(t),q=F.entries,B=t=>!l(t)&&d(j(t),t=>t==F.prototype||l(j(t)),()=>!0),J=F.keys,k=F.freeze,z=(...t)=>F.assign(F.create(null),...t),G=(t,a,n)=>(F.defineProperty(t,a,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),K=(t=[])=>{const a=F.create(null);return p(t,([t,n])=>G(a,t,n)),a},V=(t,a)=>(delete t[a],t),X=(t,a)=>p(J(t),n=>a(t[n],n)),Y=(t,a)=>_(q(t),([t,n])=>a(n,t)),H=(t,a)=>{const n=K();return X(t,(t,e)=>G(n,e,a(t,e))),n},Q=t=>T(J(t)),W=t=>B(t)&&0==Q(t),Z=JSON.stringify,tt=JSON.parse,at=t=>""===t?void 0:E(t)?_(t,at):B(t)?H(t,at):t,nt="_",et="_id",st="WHERE",it="TABLE",rt="INSERT",ot="UPDATE",ct="ALTER "+it,wt="FROM",lt="DELETE "+wt,ut="SELECT*"+wt,yt="CREATE "+it,dt=/\$tableName/g,vt=t=>S(_(((t,a="",n)=>t.split(a,n))(t,"."),t=>`"${r(t,/"/g,'""')}"`),"."),ft=(...t)=>S(_(t,vt),e),Et=t=>"$"+t[0]++,Tt=(t,a,n=[1])=>S(_(t,()=>a(n)),e),Nt=(t,a=i,e)=>{const s=I([a==i?void 0:`(${At(a,vt(t))})`,e],t=>!u(t));return N(s)?n:st+S(s,"AND")},At=(t,a)=>r(t,dt,a),ht=async(t,a,n,s,i,r)=>{const o=[1],c=S(_(s,t=>vt(t)+"="+r(o)),e),w=r(o);for(const[e,o]of Y(i,(t,a)=>[a,t])){const i=_(o,t=>t??null);if(N(await t(ot+vt(a)+" SET"+c+" "+st+vt(n)+"="+w+" RETURNING"+vt(n),[...i,e]))){const c=[1];await t(rt+" INTO"+vt(a)+"("+ft(n,...s)+")VALUES("+Tt([e,...o],r,c)+")",[e,...i])}}},gt=Map,pt=t=>new gt(t),St=(t,a)=>t?.get(a),_t=(t,a)=>D(t,(t,n)=>a(n,t)),It=(t,a)=>{const n=[];return _t(t,(t,e)=>b(n,a(e,t))),n},Lt=(t,a,n)=>u(n)?(C(t,a),t):t?.set(a,n),bt=(t,a,n,e)=>{let s=St(t,a);return O(t,a)?e?.(s):Lt(t,a,s=n()),s},Ot=(t,a,n,e,s=0)=>v((n?bt:St)(t,a[s],s>T(a)-2?n:pt),i=>{if(s>T(a)-2)return e?.(i)&&Lt(t,a[s]),i;const r=Ot(i,a,n,e,s+1);return m(i)&&Lt(t,a[s]),r}),mt=t=>new Set(E(t)||u(t)?t:[t]),$t=(t,a)=>t?.add(a),Rt="ColumnName",Dt="store",Ct="json",Pt=Dt+"TableName",Mt=Dt+"Id"+Rt,Ut=Dt+Rt,xt="autoLoadIntervalSeconds",Ft="rowId"+Rt,jt="tableId",qt="tableName",Bt="deleteEmptyColumns",Jt="deleteEmptyTable",kt="condition",zt={mode:Ct,[xt]:1},Gt={load:0,save:0,[qt]:a+"_values"},Kt=t=>E(t)?t:void 0,Vt=t=>!0===t||E(t),Xt=(t,a,n,e,s)=>{const i=pt();return X(t,(t,r)=>{const o=(l=z(a,f(t)?{[n]:t}:t),c=F.values(l),w=Q(a),c.slice(0,w));var c,w,l;y(o[0])||e(r,o[0])||(s(r,o[0]),Lt(i,r,o))}),i},Yt=/^\d+$/,Ht=pt(),Qt=pt(),Wt=pt(),Zt=(t,a,e,s,i,r,o,c={},w=0,l=[])=>{let d,f,A,g,S,O=0,$=0,R=0,F=0,j=0,q=0,B=0,J=0,z=0;const G={},K=c.destroy;bt(Ht,l,()=>0),bt(Qt,l,()=>[]),Lt(Wt,l,(St(Wt,l)??0)+1);const V=pt(),[X,Y,H,Q,Z]=((t=1,a,n)=>1!=t&&a.isMergeable()?[1,a.__[1],()=>a.__[2](!n),([[t],[a]])=>!W(t)||!W(a),a.setDefaultContent]:2!=t?[0,a._[7],a._[8],([t,a])=>!W(t)||!W(a),a.setContent]:P(0))(o,t,w),[tt,at,nt]=(t=>{let a;const[e,s]=(()=>{const t=[];let a=0;return[e=>(e?t.shift():null)??n+a++,a=>{Yt.test(a)&&T(t)<1e3&&b(t,a)}]})(),i=pt(),r=(t,e,s,r)=>{let o,c=!1;if(p(((t,a=[n])=>{const e=[],s=(t,n)=>n==T(a)?b(e,t):y(a[n])?D(t,t=>s(t,n+1)):p([a[n],null],a=>s(St(t,a),n+1));return s(t,0),e})(e,s),n=>D(n,n=>{const e=()=>St(i,n)[0](a,...s??[],...r);t?(t=>{try{return t()}catch(t){(t=>{c||(o=t),c=!0})?.(t)}})(e):e()})),c)throw o};return[(s,r,o,c=[],w=()=>[])=>{a??=t();const l=e(1);return Lt(i,l,[s,r,o,c,w]),$t(Ot(r,o??[n],mt),l),l},(t,a,...n)=>r(!1,t,a,n),t=>v(St(i,t),([,a,e])=>(Ot(a,e??[n],void 0,a=>(C(a,t),m(a)?1:0)),Lt(i,t),s(t),e)),t=>v(St(i,t),([t,,n=[],e,s])=>{const i=(...r)=>{const o=T(r);o==T(n)?t(a,...r,...s(r)):y(n[o])?p(e[o]?.(...r)??[],t=>i(...r,t)):i(...r,n[o])};i()}),(t,a,...n)=>r(!0,t,a,n)]})(()=>Nt),et=t=>{t!=O&&(O=t,at(V,void 0,O))},st=()=>{St(Wt,l)||St(Ht,l)||!N(St(Qt,l)??[])||(Lt(Ht,l),Lt(Qt,l),Lt(Wt,l))},it=a=>{(X&&E(a?.[0])?1===a?.[2]?t.__[4]:t.__[3]:1===a?.[2]?t._[10]:t._[9])(a)},rt=async()=>{ft()&&t.__?.[0]?.()&&await yt()},ot=t=>x(()=>f=t,()=>{f==t&&(f=void 0)}),ct=async t=>(2!=O&&(await x(async()=>{et(1),$++,await Tt(()=>M(async()=>{const n=await a();E(n)?it(n):u(n)&&t?Z(t):u(n)||P(1,n)},a=>{r?.(a),t&&Z(t)}))},()=>et(0)),await rt()),Nt),wt=async()=>{const t=B;B=0,t&&t==F&&!z&&(2==O?B=t:await ct())},lt=async t=>{const a=++F;let n=!0;if(await ut(!0),a==F&&!z){const e=M(async()=>{const t=await s(async(t,e)=>{if(a==F&&!z)if(e||t){const a=n||2==O||!!q;j++,a&&q++,await x(async()=>{et(1),$++,await(a?Tt(()=>it(e??t)):(()=>{try{return it(e??t)}finally{et(0)}})())},()=>{a&&q--,--j||et(0)}),j||await rt()}else 2==O?B=a:await ct()});a!=F||z?u(t)||await i(t):d=t},r);await ot(e),a!=F||z||await x(()=>ct(t),()=>{n=!1})}return Nt},ut=async(t=!1)=>{B=0,t||F++;const a=f,n=d;return d=void 0,await ot(x(async()=>{await a},async()=>{u(n)||await M(()=>i(n),r)})),Nt},yt=async t=>(1!=O&&await x(()=>x(async()=>{et(2),R++,await Tt(()=>M(()=>e(Y,t),r))},()=>et(0)),wt),Nt),dt=async()=>{const a=++J;return await vt(!0),a!=J||z||(await yt(),a!=J||z||(A=t.addDidFinishTransactionListener(()=>{if(a==J&&!z){const t=H();Q(t)&&M(()=>yt(t))}}))),Nt},vt=async(a=!1)=>{a||J++;const n=A;return A=void 0,u(n)||t.delListener(n),Nt},ft=()=>!u(A),Et=async(t=!1)=>{const[a,n]=t?[vt,ut]:[ut,vt];return await x(()=>a(),async()=>{await n()}),Nt},Tt=async(...t)=>{let a,n=!1;const e=h(e=>N(t)?e():b(St(Qt,l),..._(t,(s,i)=>{const o=i==T(t)-1;return[async()=>{let t;S=h(a=>t=a),await x(async()=>{try{await M(s,r)}catch(t){n||(n=!0,a=t)}o&&e()},()=>{S=void 0,t()})},o?e:void 0,G]})));if(await(async()=>{if(!St(Ht,l)){Lt(Ht,l,1);const t=St(Qt,l);let a=0;await x(async()=>{for(;a<T(t);){const n=t[a++];n[2]=void 0,await n[0]()}},()=>{L(t,a),Lt(Ht,l,0),st()})}})(),await e,n)throw a;return Nt},Nt={load:ct,startAutoLoad:lt,stopAutoLoad:ut,isAutoLoading:()=>!u(d),save:yt,startAutoSave:dt,stopAutoSave:vt,isAutoSaving:ft,startAutoPersisting:async(t,a=!1)=>{const[n,e,s,i]=a?[dt,lt,vt,ut]:[lt,dt,ut,vt],r=n(t),o=a?J:F;await r;const c=e(t),w=a?F:J;try{await c}catch(t){throw w==(a?F:J)&&await U(i),o==(a?J:F)&&await U(s),t}return Nt},stopAutoPersisting:Et,getStatus:()=>O,addStatusListener:t=>tt(t,V),delListener:a=>(nt(a),t),schedule:Tt,getStore:()=>t,getStats:()=>({loads:$,saves:R}),...c,destroy:async()=>(u(g)&&(z=1,g=(async()=>{const t=St(Qt,l),a=I(t,([,t,a])=>a!=G||(t?.(),!1)),n=S;L(t),b(t,...a),await x(()=>x(()=>x(Et,()=>n),()=>K?.()),()=>{const t=(St(Wt,l)??1)-1;Lt(Wt,l,t||void 0),st()})})()),await g,Nt)};return k(Nt)},ta=new w.TextEncoder,aa=(t,n,s,r,o,c=na,w,l,y)=>{const d=pt(),v=pt();let f=t;return[async()=>{R(d),R(v),p(await s(f,n),({tn:t,cn:a,uq:n})=>{$t(bt(d,t,mt),a),n&&$t(bt(v,t,mt),a)})},async(t,a,n,e)=>{const s=u(e)?void 0:mt(e);return((t,a)=>O(St(d,t),a))(t,a)?K(I(_(await f(ut+vt(t)+Nt(t,n)),t=>{const n=t[a],e=l?H(V(t,a),l):V(t,a);return[n,u(s)?e:K(I(Y(e,(t,a)=>[a,t]),([t])=>(t=>u(s)||O(s,t))(t)))]}),t=>!u(t[0])&&!W(t[1]))):{}},async(t,n,s,l,y,E=!1,T=i,A)=>{const h=u(A)?void 0:mt(A),L=t=>u(h)||O(h,t),m=mt();X(s??{},t=>p(I(J(t??{}),L),t=>$t(m,t)));const R=$(m);if(u(h)&&!E&&y&&T==i&&N(R)&&O(d,t))return await f("DROP "+it+vt(t)),Lt(d,t),void Lt(v,t);const D=St(d,t),P=mt(I($(D),t=>t==n||L(t)));if(!N(R))if(O(d,t)){if(await g(_([n,...R],async a=>{C(P,a)||(await f(ct+vt(t)+"ADD"+vt(a)+r),$t(D,a))})),c==na&&!O(St(v,t),n)){const e=a+"_pk_"+(t=>{let a=2166136261;return p(ta.encode(t),t=>{a^=t,a+=(a<<1)+(a<<4)+(a<<7)+(a<<8)+(a<<24)}),a>>>0})(Z([t,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+vt(e)+"ON"+vt(t)+`(${vt(n)})`),$t(bt(v,t,mt),n)}}else await f(yt+vt(t)+`(${vt(n)}${r} PRIMARY KEY${S(_(R,t=>e+vt(t)+r))});`),Lt(d,t,mt([n,...R])),Lt(v,t,mt([n]));if(await g([...!E&&l?_($(P),async a=>{a!=n&&(await f(ct+vt(t)+"DROP"+vt(a)),C(D,a))}):[]]),E)u(s)?u(h)&&await f(lt+vt(t)+Nt(t,T)):await g(Y(s,async(a,e)=>{if(u(a))await f(lt+vt(t)+Nt(t,T,`(${vt(n)}=${o([1])})`),[e]);else if(!N(R)){const s=I(J(a),L);N(s)||await c(f,t,n,s,{[e]:_(s,t=>w?w(a[t]):a[t])},o,D)}}));else if(N(R))u(h)&&O(d,t)&&await f(lt+vt(t)+Nt(t,T));else{const a=I($(St(d,t)),t=>t!=n&&L(t)),e=K(),i=[];X(s??{},(t,n)=>{G(e,n,_(a,a=>w?w(t?.[a]):t?.[a])),b(i,n)}),await c(f,t,n,a,e,o,D),await f(lt+vt(t)+Nt(t,T,`${vt(n)}NOT IN(${Tt(i,o)})`),i)}},async a=>{if(y)return await y(async t=>{const n=f;return f=t,await x(a,()=>{f=n})});await t("BEGIN");try{const n=await a();return await t("END"),n}catch(a){throw await M(()=>t("ROLLBACK")),a}}]},na=async(t,a,n,s,i,r)=>{const o=[1];await t(rt+" INTO"+vt(a)+"("+ft(n,...s)+")VALUES"+S(Y(i,t=>"("+r(o)+","+Tt(t,r,o)+")"),e)+"ON CONFLICT("+vt(n)+`)DO ${ot} SET`+S(_(s,t=>vt(t)+"=excluded."+vt(t)),e),Y(i,(t,a)=>[a,..._(t,t=>t??null)]).flat())},ea=(t,a,n,e,s,i,r,[o,c,w],l,y,d,v,f,E,T,N,A,h)=>{const[g,p,S,_]=aa(a,l,y,f,E,T,void 0,void 0,h);return Zt(t,()=>_(async()=>{return await g(),t=(await p(o,c))[nt]?.[w]??"null",at(tt(t));var t}),t=>_(async()=>{var a;await g(),await S(o,c,{[nt]:{[w]:(a=t()??null,Z(a,(t,a)=>u(a)?"":a))}},!0,!0)}),n,e,s,r,{[v]:()=>d,destroy:i},0,d)},sa=(t,a,n,e,s,i,r,[o,c,[w,l,y,d,v]],f,E,T,N,A,h,p,S,L,b)=>{const[O,m,$,R]=aa(a,f,E,A,h,p,S,L,b),D=(t,a)=>g(It(c,async([n,e,s,i,r],o)=>{var c,w;a&&(c=t,w=o,!F.hasOwn(c,w))||await $(n,e,t[o],s,i,a,r)})),C=(t,a,n)=>K(1==n?I(Y(t,(t,a)=>[a,t]),([t])=>{return n=t,a.includes(n);var n}):I(_(a,a=>[a,t[a]]),([,t])=>!u(t))),P=async(t,a)=>l?await $(y,et,{[nt]:u(v)?t:C(t,v,a)},!0,!0,a,void 0,v):null;return Zt(t,()=>R(async()=>{await O();const t=await(async()=>K(I(await g(It(o,async([t,a,n],e)=>[t,await m(e,a,n)])),t=>!W(t[1]))))(),a=await(async()=>w?(await m(y,et,void 0,d))[nt]:{})();return W(t)&&u(a)?void 0:[t,a]}),(t,a)=>R(async()=>{if(await O(),u(a)){const[a,n]=t();await D(a),await P(n)}else await D(a[0],!0),await P(a[1],!0)}),n,e,s,r,{[N]:()=>T,destroy:i},0,T)},ia=(t,n,e,s,r)=>{const o=((t,a)=>a?async(n,e)=>(a(n,e),await t(n,e)):t)(async(t,a=[])=>(await n.query(t,a)).rows,s),[c,,w,l]=(t=>{const n=(t=>z(zt,f(t)?{[Pt]:t}:t??{}))(t),e=n[xt];if(n.mode==Ct){const t=n[Pt]??a;return[1,e,[t,n[Mt]??et,n[Ut]??Dt],mt(t)]}const{tables:{load:s={},save:r={}}={},values:o={}}=n,c=z(Gt,o),{load:w,save:l}=c,u=[Vt(w),Vt(l),c[qt],Kt(w),Kt(l)],y=u[2],d=mt(y),v=mt(y),E=Xt(s,{[jt]:null,[Ft]:et,[kt]:i},jt,t=>O(v,t),t=>$t(d,t)),T=Xt(r,{[qt]:null,[Ft]:et,[Bt]:0,[Jt]:0,[kt]:null},qt,(t,a)=>O(v,a),(t,a)=>$t(d,a));return _t(T,(t,a)=>a[4]??=St(E,a[0])?.[2]??i),[0,e,[E,T,u],d]})(e);!c&&t.isMergeable()&&P(0);const u=$(l);return(c?ea:sa)(t,o,t=>n.subscribe({tables:u},()=>{U(t,r)}),t=>t(),r,A,3,w,u,async()=>{const t=[];return await g(_(u,async a=>{const e=ut+vt(a)+"LIMIT 0";s?.(e),await U(async()=>p((await n.query(e)).fields,({name:n})=>b(t,{tn:a,cn:n})))})),t},n,"getTinyJoin","text",Et,ht,t=>Z(t),t=>tt(t),t=>t(o))};export{ia as createTinyJoinPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",c=(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=a=>!0===a,_=o(l),E=o(u),m=t=>a(t)==i,N=a=>Array.isArray(a),v=a=>a.length,$=a=>0==v(a),O=(a,t)=>a.test(t),A=a=>new r(a),f=async a=>r.all(a),R=(a,t)=>a.forEach(t),T=(a,t="")=>a.join(t),h=(a,t)=>a.map(t),I=(a,t)=>a.filter(t),g=(a,t=v(a))=>a.splice(0,t),S=(a,...t)=>a.push(...t),D=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},b=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>b(a,a=>{b(()=>t?.(a))}),p=async(a,t)=>{try{return await a()}finally{await t()}},C=(a,t)=>a?.has(t)??!1,F=a=>u(a)||0==(a=>a?.size??0)(a),M=a=>[...a?.values()??[]],P=a=>a.clear(),k=(a,t)=>a?.forEach(t),U=(a,t)=>a?.delete(t),G=Object,x=a=>G.getPrototypeOf(a),H=G.entries,Y=a=>!l(a)&&_(x(a),a=>a==G.prototype||l(x(a)),()=>!0),B=G.keys,W=G.freeze,X=(...a)=>G.assign(G.create(null),...a),j=(a,t,n)=>(G.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),q=(a=[])=>{const t=G.create(null);return R(a,([a,n])=>j(t,a,n)),t},J=(a,t)=>(delete a[t],a),K=(a,t)=>R(B(a),n=>t(a[n],n)),z=(a,t)=>h(H(a),([a,n])=>t(n,a)),Q=(a,t)=>{const n=q();return K(a,(a,e)=>j(n,e,t(a,e))),n},V=a=>v(B(a)),Z=a=>Y(a)&&0==V(a),aa=Map,ta=a=>new aa(a),na=(a,t)=>a?.get(t),ea=(a,t)=>k(a,(a,n)=>t(n,a)),ia=(a,t)=>{const n=[];return ea(a,(a,e)=>S(n,t(e,a))),n},sa=(a,t,n)=>u(n)?(U(a,t),a):a?.set(t,n),ca=(a,t,n,e)=>{let i=na(a,t);return C(a,t)?e?.(i):sa(a,t,i=n()),i},ra=(a,t,n,e,i=0)=>E((n?ca:na)(a,t[i],i>v(t)-2?n:ta),s=>{if(i>v(t)-2)return e?.(s)&&sa(a,t[i]),s;const c=ra(s,t,n,e,i+1);return F(s)&&sa(a,t[i]),c}),oa=/^\d+$/,wa=a=>new Set(N(a)||u(a)?a:[a]),la=(a,t)=>a?.add(t),ua={Idle:0,Loading:1,Saving:2},ya={StoreOnly:1,MergeableStoreOnly:2,StoreOrMergeableStore:3},da=ta(),_a=ta(),Ea=ta(),ma=(a,t,e,i,s,c,r,o={},w=0,l=[])=>{let d,_,m,f,T,C=0,M=0,P=0,G=0,x=0,H=0,Y=0,B=0,X=0;const j={},q=o.destroy;ca(da,l,()=>0),ca(_a,l,()=>[]),sa(Ea,l,(na(Ea,l)??0)+1);const J=ta(),[K,z,Q,V,aa]=((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]:D(0))(r,a,w),[ea,ia,ua]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{O(oa,t)&&v(a)<1e3&&S(a,t)}]})(),s=ta(),c=(a,e,i,c)=>{let r,o=!1;if(R(((a,t=[n])=>{const e=[],i=(a,n)=>n==v(t)?S(e,a):y(t[n])?k(a,a=>i(a,n+1)):R([t[n],null],t=>i(na(a,t),n+1));return i(a,0),e})(e,i),n=>k(n,n=>{const e=()=>na(s,n)[0](t,...i??[],...c);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(i,c,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return sa(s,l,[i,c,r,o,w]),la(ra(c,r??[n],wa),l),l},(a,t,...n)=>c(!1,a,t,n),a=>E(na(s,a),([,t,e])=>(ra(t,e??[n],void 0,t=>(U(t,a),F(t)?1:0)),sa(s,a),i(a),e)),a=>E(na(s,a),([a,,n=[],e,i])=>{const s=(...c)=>{const r=v(c);r==v(n)?a(t,...c,...i(c)):y(n[r])?R(e[r]?.(...c)??[],a=>s(...c,a)):s(...c,n[r])};s()}),(a,t,...n)=>c(!0,a,t,n)]})(()=>ba),ya=a=>{a!=C&&(C=a,ia(J,void 0,C))},ma=()=>{na(Ea,l)||na(da,l)||!$(na(_a,l)??[])||(sa(da,l),sa(_a,l),sa(Ea,l))},Na=t=>{(K&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},va=async()=>{ga()&&a.__?.[0]?.()&&await Ta()},$a=a=>p(()=>_=a,()=>{_==a&&(_=void 0)}),Oa=async a=>(2!=C&&(await p(async()=>{ya(1),M++,await Da(()=>b(async()=>{const n=await t();N(n)?Na(n):u(n)&&a?aa(a):u(n)||D(1,n)},t=>{c?.(t),a&&aa(a)}))},()=>ya(0)),await va()),ba),Aa=async()=>{const a=Y;Y=0,a&&a==G&&!X&&(2==C?Y=a:await Oa())},fa=async a=>{const t=++G;let n=!0;if(await Ra(!0),t==G&&!X){const e=b(async()=>{const a=await i(async(a,e)=>{if(t==G&&!X)if(e||a){const t=n||2==C||!!H;x++,t&&H++,await p(async()=>{ya(1),M++,await(t?Da(()=>Na(e??a)):(()=>{try{return Na(e??a)}finally{ya(0)}})())},()=>{t&&H--,--x||ya(0)}),x||await va()}else 2==C?Y=t:await Oa()});t!=G||X?u(a)||await s(a):d=a},c);await $a(e),t!=G||X||await p(()=>Oa(a),()=>{n=!1})}return ba},Ra=async(a=!1)=>{Y=0,a||G++;const t=_,n=d;return d=void 0,await $a(p(async()=>{await t},async()=>{u(n)||await b(()=>s(n),c)})),ba},Ta=async a=>(1!=C&&await p(()=>p(async()=>{ya(2),P++,await Da(()=>b(()=>e(z,a),c))},()=>ya(0)),Aa),ba),ha=async()=>{const t=++B;return await Ia(!0),t!=B||X||(await Ta(),t!=B||X||(m=a.addDidFinishTransactionListener(()=>{if(t==B&&!X){const a=Q();V(a)&&b(()=>Ta(a))}}))),ba},Ia=async(t=!1)=>{t||B++;const n=m;return m=void 0,u(n)||a.delListener(n),ba},ga=()=>!u(m),Sa=async(a=!1)=>{const[t,n]=a?[Ia,Ra]:[Ra,Ia];return await p(()=>t(),async()=>{await n()}),ba},Da=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():S(na(_a,l),...h(a,(i,s)=>{const r=s==v(a)-1;return[async()=>{let a;T=A(t=>a=t),await p(async()=>{try{await b(i,c)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{T=void 0,a()})},r?e:void 0,j]})));if(await(async()=>{if(!na(da,l)){sa(da,l,1);const a=na(_a,l);let t=0;await p(async()=>{for(;t<v(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{g(a,t),sa(da,l,0),ma()})}})(),await e,n)throw t;return ba},ba={load:Oa,startAutoLoad:fa,stopAutoLoad:Ra,isAutoLoading:()=>!u(d),save:Ta,startAutoSave:ha,stopAutoSave:Ia,isAutoSaving:ga,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ha,fa,Ia,Ra]:[fa,ha,Ra,Ia],c=n(a),r=t?B:G;await c;const o=e(a),w=t?G:B;try{await o}catch(a){throw w==(t?G:B)&&await L(s),r==(t?B:G)&&await L(i),a}return ba},stopAutoPersisting:Sa,getStatus:()=>C,addStatusListener:a=>ea(a,J),delListener:t=>(ua(t),a),schedule:Da,getStore:()=>a,getStats:()=>({loads:M,saves:P}),...o,destroy:async()=>(u(f)&&(X=1,f=(async()=>{const a=na(_a,l),t=I(a,([,a,t])=>t!=j||(a?.(),!1)),n=T;g(a),S(a,...t),await p(()=>p(()=>p(Sa,()=>n),()=>q?.()),()=>{const a=(na(Ea,l)??1)-1;sa(Ea,l,a||void 0),ma()})})()),await f,ba)};return W(ba)},Na=JSON.stringify,va=JSON.parse,$a=a=>Na(a,(a,t)=>u(t)?"":t),Oa=a=>""===a?void 0:N(a)?h(a,Oa):Y(a)?Q(a,Oa):a,Aa=new w.TextEncoder,fa=a=>{let t=2166136261;return R(Aa.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Ra="_",Ta="_id",ha="SELECT",Ia="WHERE",ga="TABLE",Sa="INSERT",Da="DELETE",ba="UPDATE",La="ALTER "+ga,pa="FROM",Ca=Da+" "+pa,Fa=ha+"*"+pa,Ma="pragma_",Pa="data_version",ka="schema_version",Ua="pragma_table_",Ga="CREATE ",xa=Ga+ga,Ha="OR REPLACE ",Ya="FUNCTION",Ba=/\$tableName/g,Wa=(a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a,Xa=a=>T(h(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),ja=(...a)=>Xa(T(a,"_")),qa=a=>"$"+a[0]++,Ja=()=>"?",Ka=(a,t,n=[1])=>T(h(a,()=>t(n)),e),za=(a,t=s)=>Ia+`(${Qa(t,Xa(a))})`,Qa=(a,t)=>c(a,Ba,t),Va="ColumnName",Za="store",at="json",tt=Za+"TableName",nt=Za+"Id"+Va,et=Za+Va,it="autoLoadIntervalSeconds",st="rowId"+Va,ct="tableId",rt="tableName",ot="deleteEmptyColumns",wt="deleteEmptyTable",lt="condition",ut={mode:at,[it]:1},yt={load:0,save:0,[rt]:t+"_values"},dt=a=>N(a)?a:void 0,_t=a=>d(a)||N(a),Et=(a,t,n,e,i)=>{const s=ta();return K(a,(a,c)=>{const r=(l=X(t,m(a)?{[n]:a}:a),o=G.values(l),w=V(t),o.slice(0,w));var o,w,l;y(r[0])||e(c,r[0])||(i(c,r[0]),sa(s,c,r))}),s},mt=a=>{const n=(a=>X(ut,m(a)?{[tt]:a}:a??{}))(a),e=n[it];if(n.mode==at){const a=n[tt]??t;return[1,e,[a,n[nt]??Ta,n[et]??Za],wa(a)]}const{tables:{load:i={},save:c={}}={},values:r={}}=n,o=X(yt,r),{load:w,save:l}=o,u=[_t(w),_t(l),o[rt],dt(w),dt(l)],y=u[2],d=wa(y),_=wa(y),E=Et(i,{[ct]:null,[st]:Ta,[lt]:s},ct,a=>C(_,a),a=>la(d,a)),N=Et(c,{[rt]:null,[st]:Ta,[ot]:0,[wt]:0,[lt]:null},rt,(a,t)=>C(_,t),(a,t)=>la(d,t));return ea(N,(a,t)=>t[4]??=na(E,t[0])?.[2]??s),[0,e,[E,N,u],d]},Nt=(a,n,i,c,r,o=vt,w,l,y)=>{const d=ta(),_=ta();let E=a;return[async()=>{P(d),P(_),R(await i(E,n),({tn:a,cn:t,uq:n})=>{la(ca(d,a,wa),t),n&&la(ca(_,a,wa),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:wa(e);return((a,t)=>C(na(d,a),t))(a,t)?q(I(h(await E(Fa+Xa(a)+za(a,n)),a=>{const n=a[t],e=l?Q(J(a,t),l):J(a,t);return[n,u(i)?e:q(I(z(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||C(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,l,y,m=!1,N=s,v)=>{const O=u(v)?void 0:wa(v),A=a=>u(O)||C(O,a),g=wa();K(i??{},a=>R(I(B(a??{}),A),a=>la(g,a)));const D=M(g);if(u(O)&&!m&&y&&N==s&&$(D)&&C(d,a))return await E("DROP "+ga+Xa(a)),sa(d,a),void sa(_,a);const b=na(d,a),L=wa(I(M(b),a=>a==n||A(a)));if(!$(D))if(C(d,a)){if(await f(h([n,...D],async t=>{U(L,t)||(await E(La+Xa(a)+"ADD"+Xa(t)+c),la(b,t))})),o==vt&&!C(na(_,a),n)){const e=t+"_pk_"+fa(Na([a,n]));await E("CREATE UNIQUE INDEX IF NOT EXISTS"+Xa(e)+"ON"+Xa(a)+`(${Xa(n)})`),la(ca(_,a,wa),n)}}else await E(xa+Xa(a)+`(${Xa(n)}${c} PRIMARY KEY${T(h(D,a=>e+Xa(a)+c))});`),sa(d,a,wa([n,...D])),sa(_,a,wa([n]));if(await f([...!m&&l?h(M(L),async t=>{t!=n&&(await E(La+Xa(a)+"DROP"+Xa(t)),U(b,t))}):[]]),m)u(i)?u(O)&&await E(Ca+Xa(a)+za(a,N)):await f(z(i,async(t,e)=>{if(u(t))await E(Ca+Xa(a)+za(a,N)+`AND(${Xa(n)}=${r([1])})`,[e]);else if(!$(D)){const i=I(B(t),A);$(i)||await o(E,a,n,i,{[e]:h(i,a=>w?w(t[a]):t[a])},r,b)}}));else if($(D))u(O)&&C(d,a)&&await E(Ca+Xa(a)+za(a,N));else{const t=I(M(na(d,a)),a=>a!=n&&A(a)),e=q(),s=[];K(i??{},(a,n)=>{j(e,n,h(t,t=>w?w(a?.[t]):a?.[t])),S(s,n)}),await o(E,a,n,t,e,r,b),await E(Ca+Xa(a)+za(a,N)+`AND${Xa(n)}NOT IN(${Ka(s,r)})`,s)}},async t=>{if(y)return await y(async a=>{const n=E;return E=a,await p(t,()=>{E=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await b(()=>a("ROLLBACK")),t}}]},vt=async(a,t,n,i,s,c)=>{const r=[1];await a(Sa+" INTO"+Xa(t)+"("+((...a)=>T(h(a,Xa),e))(n,...i)+")VALUES"+T(z(s,a=>"("+c(r)+","+Ka(a,c,r)+")"),e)+"ON CONFLICT("+Xa(n)+`)DO ${ba} SET`+T(h(i,a=>Xa(a)+"=excluded."+Xa(a)),e),z(s,(a,t)=>[t,...h(a,a=>a??null)]).flat())},$t=(a,t,n,e,i,s,c,[r,o,w],l,u,y,d,_,E,m,N,v,$)=>{const[O,A,f,R]=Nt(t,l,u,_,E,m,void 0,void 0,$);return ma(a,()=>R(async()=>{return await O(),a=(await A(r,o))[Ra]?.[w]??"null",Oa(va(a));var a}),a=>R(async()=>{await O(),await f(r,o,{[Ra]:{[w]:$a(a()??null)}},!0,!0)}),n,e,i,c,{[d]:()=>y,destroy:s},0,y)},Ot=(a,t,n,e,i,s,c,[r,o,[w,l,y,d,_]],E,m,N,v,$,O,A,R,T,g)=>{const[S,D,b,L]=Nt(t,E,m,$,O,A,R,T,g),p=(a,t)=>f(ia(o,async([n,e,i,s,c],r)=>{var o,w;t&&(o=a,w=r,!G.hasOwn(o,w))||await b(n,e,a[r],i,s,t,c)})),C=(a,t,n)=>q(1==n?I(z(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):I(h(t,t=>[t,a[t]]),([,a])=>!u(a))),F=async(a,t)=>l?await b(y,Ta,{[Ra]:u(_)?a:C(a,_,t)},!0,!0,t,void 0,_):null;return ma(a,()=>L(async()=>{await S();const a=await(async()=>q(I(await f(ia(r,async([a,t,n],e)=>[a,await D(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>w?(await D(y,Ta,void 0,d))[Ra]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>L(async()=>{if(await S(),u(t)){const[t,n]=a();await p(t),await F(n)}else await p(t[0],!0),await F(t[1],!0)}),n,e,i,c,{[v]:()=>N,destroy:s},0,N)},At=/^([cd]:)(.+)/,ft=/^[A-Za-z0-9_]+$/,Rt=ta(),Tt=(a,e,i,c,r,o,w,l,u,y,d="getDb")=>{const _=Wa(i,o),[m,,N,A]=mt(e);!m&&a.isMergeable()&&D(0);const R=n+fa($a(N)),I=t+"_"+R,g=y??i,P=async(a,n,e="",i="")=>{const s=ja(t,a,R);return await _(Ga+Ha+Ya+s+`()RETURNS ${e}trigger AS $$ ${i}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},k=async(a,t,n,e)=>(await _(Ga+a+"TRIGGER"+t+n+"EXECUTE "+Ya+e+"()"),t),U=a=>`PERFORM pg_notify('${I}',${a});`,G=(a,t)=>m?s:2===t?G(a,0)+" OR "+G(a,1):Qa(na(N[0],a)?.[2]??s,0==t?"NEW":"OLD"),x=(a,e)=>f(h([Sa,Da,ba],(i,s)=>{const c=T([t,"d",R,a,i],"_");return k(Ha,O(ft,a)&&v(c)<=63?Xa(c):ja(t,"d",R,i,n+fa(a)),`AFTER ${i} ON${Xa(a)}FOR EACH ROW WHEN(${G(a,s)})`,e)})),H=async a=>{$(a)||await _(`DROP FUNCTION IF EXISTS${T(a,",")}CASCADE`)},Y=(a,t)=>{na(a,R)===t&&(sa(a,R),F(a)&&na(Rt,g)===a&&sa(Rt,g))},B=async()=>{const a=ca(Rt,g,()=>ta()),n=na(a,R);if(n)return await n[1],n[0]?(n[0]++,n):(await b(()=>n[4]),await B());const e=[],i=[1,void 0,e];sa(a,R,i),i[1]=(async()=>{const a=await P("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${Ia} command_tag='${xa}' LOOP ${U("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");S(e,a),await k("EVENT ",ja(t,"c",R),`ON ddl_command_end WHEN TAG IN('${xa}')`,a);const n=await P("d",U("'d:'||TG_TABLE_NAME")+"RETURN NULL;");S(e,n),i[3]=n,await f(h(M(A),async a=>(await _(xa+` IF NOT EXISTS${Xa(a)}("_id"text PRIMARY KEY)`),await x(a,n))))})();try{await i[1]}catch(t){throw i[0]=0,i[4]=p(()=>H(e),()=>Y(a,i)),await b(()=>i[4]),t}return i},W=async a=>{if(0==--a[0]){const t=na(Rt,g);a[4]=p(()=>H(a[2]),()=>Y(t,a)),await a[4]}};return(m?$t:Ot)(a,_,async a=>{const t=await B();try{return[await c(I,n=>{L(()=>{return E((e=n,i=At,e?.match(i)),async([,n,e])=>{C(A,e)&&("c:"==n&&await x(e,t[3]),await a())});var e,i},w)}),t]}catch(a){throw await L(()=>W(t),w),a}},async([a,t])=>{await p(()=>r(a),()=>W(t))},w,l,u,N,M(A),async(a,t)=>await a(ha+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${ha} count(*) FROM information_schema.key_column_usage kcu2 ${Ia} 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 ${Ia} c.table_schema='public'AND c.table_name IN(${Ka(t,qa)})`,t),y,d,"text",qa,void 0,a=>Na(a),a=>va(a))},ht=(a,t,e,i,s,c,o,w,y,_,E="getDb",m,N)=>{let v,$,O;const A=Wa(e,c),[f,R,T,h]=mt(t);return!f&&a.isMergeable()&&D(0),(f?$t:Ot)(a,A,a=>{let t,n,e=1,c=0,w=0;const y=async(t=!0)=>{const[{d:n,s:i,c:s}]=await A(ha+` ${Pa} d,${ka} s,TOTAL_CHANGES() c FROM ${Ma}${Pa} JOIN ${Ma}${ka}`);if(e&&(n!=v||i!=$||s!=O)){const c=t&&!w&&!l(v);v=n,$=i,O=s,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},_=(i=!1)=>{if(n)return n;const s=p(()=>L(async()=>{for(c?i&&await y():(await y(!1),c=1);e&&w;)w=0,await y(!1),e&&(await a(),await y())},o),()=>{n==s&&(n=void 0),e&&(w?_():e&&u(t)&&(t=setInterval(()=>_(!0),1e3*R)))});return n=s,s},E=i(a=>{e&&C(h,a)&&(w=1,d(),r.resolve().then(()=>e?void _():0))});return _().then(()=>async()=>{e=0,w=0,d(),await p(async()=>await n,async()=>{v=$=O=null,await s(E)})})},a=>a(),o,w,y,T,M(h),async(a,t)=>await a(ha+` t.name tn,c.name cn,c.pk OR EXISTS(${ha} 1 FROM ${Ma}index_list(t.name)i,${Ma}index_info(i.name)ii ${Ia} i."unique"=1 AND ii.name=c.name AND(${ha} count(*) FROM ${Ma}index_info(i.name))=1)uq FROM ${Ua}list()t,${Ua}info(t.name)c ${Ia} t.schema='main'AND t.type IN('table','view')AND t.name IN(${Ka(t,Ja)})ORDER BY t.name,c.name`,t),_,E,n,Ja,m,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,N)};export{ya as Persists,ua as Status,ma as createCustomPersister,Tt as createCustomPostgreSqlPersister,ht as createCustomSqlitePersister};
1
+ const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",c=(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=a=>!0===a,_=o(l),E=o(u),m=t=>a(t)==i,N=a=>Array.isArray(a),v=a=>a.length,$=a=>0==v(a),O=(a,t)=>a.test(t),A=a=>new r(a),f=async a=>r.all(a),R=(a,t)=>a.forEach(t),T=(a,t="")=>a.join(t),h=(a,t)=>a.map(t),I=(a,t)=>a.filter(t),g=(a,t=v(a))=>a.splice(0,t),S=(a,...t)=>a.push(...t),b=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},D=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>D(a,a=>{D(()=>t?.(a))}),p=async(a,t)=>{try{return await a()}finally{await t()}},C=(a,t)=>a?.has(t)??!1,F=a=>u(a)||0==(a=>a?.size??0)(a),M=a=>[...a?.values()??[]],P=a=>a.clear(),k=(a,t)=>a?.forEach(t),U=(a,t)=>a?.delete(t),G=Object,x=a=>G.getPrototypeOf(a),H=G.entries,Y=a=>!l(a)&&_(x(a),a=>a==G.prototype||l(x(a)),()=>!0),B=G.keys,W=G.freeze,X=(...a)=>G.assign(G.create(null),...a),j=(a,t,n)=>(G.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),q=(a=[])=>{const t=G.create(null);return R(a,([a,n])=>j(t,a,n)),t},J=(a,t)=>(delete a[t],a),K=(a,t)=>R(B(a),n=>t(a[n],n)),z=(a,t)=>h(H(a),([a,n])=>t(n,a)),Q=(a,t)=>{const n=q();return K(a,(a,e)=>j(n,e,t(a,e))),n},V=a=>v(B(a)),Z=a=>Y(a)&&0==V(a),aa=Map,ta=a=>new aa(a),na=(a,t)=>a?.get(t),ea=(a,t)=>k(a,(a,n)=>t(n,a)),ia=(a,t)=>{const n=[];return ea(a,(a,e)=>S(n,t(e,a))),n},sa=(a,t,n)=>u(n)?(U(a,t),a):a?.set(t,n),ca=(a,t,n,e)=>{let i=na(a,t);return C(a,t)?e?.(i):sa(a,t,i=n()),i},ra=(a,t,n,e,i=0)=>E((n?ca:na)(a,t[i],i>v(t)-2?n:ta),s=>{if(i>v(t)-2)return e?.(s)&&sa(a,t[i]),s;const c=ra(s,t,n,e,i+1);return F(s)&&sa(a,t[i]),c}),oa=/^\d+$/,wa=a=>new Set(N(a)||u(a)?a:[a]),la=(a,t)=>a?.add(t),ua={Idle:0,Loading:1,Saving:2},ya={StoreOnly:1,MergeableStoreOnly:2,StoreOrMergeableStore:3},da=ta(),_a=ta(),Ea=ta(),ma=(a,t,e,i,s,c,r,o={},w=0,l=[])=>{let d,_,m,f,T,C=0,M=0,P=0,G=0,x=0,H=0,Y=0,B=0,X=0;const j={},q=o.destroy;ca(da,l,()=>0),ca(_a,l,()=>[]),sa(Ea,l,(na(Ea,l)??0)+1);const J=ta(),[K,z,Q,V,aa]=((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]:b(0))(r,a,w),[ea,ia,ua]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{O(oa,t)&&v(a)<1e3&&S(a,t)}]})(),s=ta(),c=(a,e,i,c)=>{let r,o=!1;if(R(((a,t=[n])=>{const e=[],i=(a,n)=>n==v(t)?S(e,a):y(t[n])?k(a,a=>i(a,n+1)):R([t[n],null],t=>i(na(a,t),n+1));return i(a,0),e})(e,i),n=>k(n,n=>{const e=()=>na(s,n)[0](t,...i??[],...c);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(i,c,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return sa(s,l,[i,c,r,o,w]),la(ra(c,r??[n],wa),l),l},(a,t,...n)=>c(!1,a,t,n),a=>E(na(s,a),([,t,e])=>(ra(t,e??[n],void 0,t=>(U(t,a),F(t)?1:0)),sa(s,a),i(a),e)),a=>E(na(s,a),([a,,n=[],e,i])=>{const s=(...c)=>{const r=v(c);r==v(n)?a(t,...c,...i(c)):y(n[r])?R(e[r]?.(...c)??[],a=>s(...c,a)):s(...c,n[r])};s()}),(a,t,...n)=>c(!0,a,t,n)]})(()=>Da),ya=a=>{a!=C&&(C=a,ia(J,void 0,C))},ma=()=>{na(Ea,l)||na(da,l)||!$(na(_a,l)??[])||(sa(da,l),sa(_a,l),sa(Ea,l))},Na=t=>{(K&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},va=async()=>{ga()&&a.__?.[0]?.()&&await Ta()},$a=a=>p(()=>_=a,()=>{_==a&&(_=void 0)}),Oa=async a=>(2!=C&&(await p(async()=>{ya(1),M++,await ba(()=>D(async()=>{const n=await t();N(n)?Na(n):u(n)&&a?aa(a):u(n)||b(1,n)},t=>{c?.(t),a&&aa(a)}))},()=>ya(0)),await va()),Da),Aa=async()=>{const a=Y;Y=0,a&&a==G&&!X&&(2==C?Y=a:await Oa())},fa=async a=>{const t=++G;let n=!0;if(await Ra(!0),t==G&&!X){const e=D(async()=>{const a=await i(async(a,e)=>{if(t==G&&!X)if(e||a){const t=n||2==C||!!H;x++,t&&H++,await p(async()=>{ya(1),M++,await(t?ba(()=>Na(e??a)):(()=>{try{return Na(e??a)}finally{ya(0)}})())},()=>{t&&H--,--x||ya(0)}),x||await va()}else 2==C?Y=t:await Oa()});t!=G||X?u(a)||await s(a):d=a},c);await $a(e),t!=G||X||await p(()=>Oa(a),()=>{n=!1})}return Da},Ra=async(a=!1)=>{Y=0,a||G++;const t=_,n=d;return d=void 0,await $a(p(async()=>{await t},async()=>{u(n)||await D(()=>s(n),c)})),Da},Ta=async a=>(1!=C&&await p(()=>p(async()=>{ya(2),P++,await ba(()=>D(()=>e(z,a),c))},()=>ya(0)),Aa),Da),ha=async()=>{const t=++B;return await Ia(!0),t!=B||X||(await Ta(),t!=B||X||(m=a.addDidFinishTransactionListener(()=>{if(t==B&&!X){const a=Q();V(a)&&D(()=>Ta(a))}}))),Da},Ia=async(t=!1)=>{t||B++;const n=m;return m=void 0,u(n)||a.delListener(n),Da},ga=()=>!u(m),Sa=async(a=!1)=>{const[t,n]=a?[Ia,Ra]:[Ra,Ia];return await p(()=>t(),async()=>{await n()}),Da},ba=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():S(na(_a,l),...h(a,(i,s)=>{const r=s==v(a)-1;return[async()=>{let a;T=A(t=>a=t),await p(async()=>{try{await D(i,c)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{T=void 0,a()})},r?e:void 0,j]})));if(await(async()=>{if(!na(da,l)){sa(da,l,1);const a=na(_a,l);let t=0;await p(async()=>{for(;t<v(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{g(a,t),sa(da,l,0),ma()})}})(),await e,n)throw t;return Da},Da={load:Oa,startAutoLoad:fa,stopAutoLoad:Ra,isAutoLoading:()=>!u(d),save:Ta,startAutoSave:ha,stopAutoSave:Ia,isAutoSaving:ga,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ha,fa,Ia,Ra]:[fa,ha,Ra,Ia],c=n(a),r=t?B:G;await c;const o=e(a),w=t?G:B;try{await o}catch(a){throw w==(t?G:B)&&await L(s),r==(t?B:G)&&await L(i),a}return Da},stopAutoPersisting:Sa,getStatus:()=>C,addStatusListener:a=>ea(a,J),delListener:t=>(ua(t),a),schedule:ba,getStore:()=>a,getStats:()=>({loads:M,saves:P}),...o,destroy:async()=>(u(f)&&(X=1,f=(async()=>{const a=na(_a,l),t=I(a,([,a,t])=>t!=j||(a?.(),!1)),n=T;g(a),S(a,...t),await p(()=>p(()=>p(Sa,()=>n),()=>q?.()),()=>{const a=(na(Ea,l)??1)-1;sa(Ea,l,a||void 0),ma()})})()),await f,Da)};return W(Da)},Na=JSON.stringify,va=JSON.parse,$a=a=>Na(a,(a,t)=>u(t)?"":t),Oa=a=>""===a?void 0:N(a)?h(a,Oa):Y(a)?Q(a,Oa):a,Aa=new w.TextEncoder,fa=a=>{let t=2166136261;return R(Aa.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Ra="_",Ta="_id",ha="SELECT",Ia="WHERE",ga="TABLE",Sa="INSERT",ba="DELETE",Da="UPDATE",La="ALTER "+ga,pa="FROM",Ca=ba+" "+pa,Fa=ha+"*"+pa,Ma="pragma_",Pa="data_version",ka="schema_version",Ua="pragma_table_",Ga="CREATE ",xa=Ga+ga,Ha="OR REPLACE ",Ya="FUNCTION",Ba=/\$tableName/g,Wa=(a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a,Xa=a=>T(h(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),ja=(...a)=>Xa(T(a,"_")),qa=a=>"$"+a[0]++,Ja=()=>"?",Ka=(a,t,n=[1])=>T(h(a,()=>t(n)),e),za=(a,t=s,e)=>{const i=I([t==s?void 0:`(${Qa(t,Xa(a))})`,e],a=>!u(a));return $(i)?n:Ia+T(i,"AND")},Qa=(a,t)=>c(a,Ba,t),Va="ColumnName",Za="store",at="json",tt=Za+"TableName",nt=Za+"Id"+Va,et=Za+Va,it="autoLoadIntervalSeconds",st="rowId"+Va,ct="tableId",rt="tableName",ot="deleteEmptyColumns",wt="deleteEmptyTable",lt="condition",ut={mode:at,[it]:1},yt={load:0,save:0,[rt]:t+"_values"},dt=a=>N(a)?a:void 0,_t=a=>d(a)||N(a),Et=(a,t,n,e,i)=>{const s=ta();return K(a,(a,c)=>{const r=(l=X(t,m(a)?{[n]:a}:a),o=G.values(l),w=V(t),o.slice(0,w));var o,w,l;y(r[0])||e(c,r[0])||(i(c,r[0]),sa(s,c,r))}),s},mt=a=>{const n=(a=>X(ut,m(a)?{[tt]:a}:a??{}))(a),e=n[it];if(n.mode==at){const a=n[tt]??t;return[1,e,[a,n[nt]??Ta,n[et]??Za],wa(a)]}const{tables:{load:i={},save:c={}}={},values:r={}}=n,o=X(yt,r),{load:w,save:l}=o,u=[_t(w),_t(l),o[rt],dt(w),dt(l)],y=u[2],d=wa(y),_=wa(y),E=Et(i,{[ct]:null,[st]:Ta,[lt]:s},ct,a=>C(_,a),a=>la(d,a)),N=Et(c,{[rt]:null,[st]:Ta,[ot]:0,[wt]:0,[lt]:null},rt,(a,t)=>C(_,t),(a,t)=>la(d,t));return ea(N,(a,t)=>t[4]??=na(E,t[0])?.[2]??s),[0,e,[E,N,u],d]},Nt=(a,n,i,c,r,o=vt,w,l,y)=>{const d=ta(),_=ta();let E=a;return[async()=>{P(d),P(_),R(await i(E,n),({tn:a,cn:t,uq:n})=>{la(ca(d,a,wa),t),n&&la(ca(_,a,wa),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:wa(e);return((a,t)=>C(na(d,a),t))(a,t)?q(I(h(await E(Fa+Xa(a)+za(a,n)),a=>{const n=a[t],e=l?Q(J(a,t),l):J(a,t);return[n,u(i)?e:q(I(z(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||C(i,a))(a)))]}),a=>!u(a[0])&&!Z(a[1]))):{}},async(a,n,i,l,y,m=!1,N=s,v)=>{const O=u(v)?void 0:wa(v),A=a=>u(O)||C(O,a),g=wa();K(i??{},a=>R(I(B(a??{}),A),a=>la(g,a)));const b=M(g);if(u(O)&&!m&&y&&N==s&&$(b)&&C(d,a))return await E("DROP "+ga+Xa(a)),sa(d,a),void sa(_,a);const D=na(d,a),L=wa(I(M(D),a=>a==n||A(a)));if(!$(b))if(C(d,a)){if(await f(h([n,...b],async t=>{U(L,t)||(await E(La+Xa(a)+"ADD"+Xa(t)+c),la(D,t))})),o==vt&&!C(na(_,a),n)){const e=t+"_pk_"+fa(Na([a,n]));await E("CREATE UNIQUE INDEX IF NOT EXISTS"+Xa(e)+"ON"+Xa(a)+`(${Xa(n)})`),la(ca(_,a,wa),n)}}else await E(xa+Xa(a)+`(${Xa(n)}${c} PRIMARY KEY${T(h(b,a=>e+Xa(a)+c))});`),sa(d,a,wa([n,...b])),sa(_,a,wa([n]));if(await f([...!m&&l?h(M(L),async t=>{t!=n&&(await E(La+Xa(a)+"DROP"+Xa(t)),U(D,t))}):[]]),m)u(i)?u(O)&&await E(Ca+Xa(a)+za(a,N)):await f(z(i,async(t,e)=>{if(u(t))await E(Ca+Xa(a)+za(a,N,`(${Xa(n)}=${r([1])})`),[e]);else if(!$(b)){const i=I(B(t),A);$(i)||await o(E,a,n,i,{[e]:h(i,a=>w?w(t[a]):t[a])},r,D)}}));else if($(b))u(O)&&C(d,a)&&await E(Ca+Xa(a)+za(a,N));else{const t=I(M(na(d,a)),a=>a!=n&&A(a)),e=q(),s=[];K(i??{},(a,n)=>{j(e,n,h(t,t=>w?w(a?.[t]):a?.[t])),S(s,n)}),await o(E,a,n,t,e,r,D),await E(Ca+Xa(a)+za(a,N,`${Xa(n)}NOT IN(${Ka(s,r)})`),s)}},async t=>{if(y)return await y(async a=>{const n=E;return E=a,await p(t,()=>{E=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await D(()=>a("ROLLBACK")),t}}]},vt=async(a,t,n,i,s,c)=>{const r=[1];await a(Sa+" INTO"+Xa(t)+"("+((...a)=>T(h(a,Xa),e))(n,...i)+")VALUES"+T(z(s,a=>"("+c(r)+","+Ka(a,c,r)+")"),e)+"ON CONFLICT("+Xa(n)+`)DO ${Da} SET`+T(h(i,a=>Xa(a)+"=excluded."+Xa(a)),e),z(s,(a,t)=>[t,...h(a,a=>a??null)]).flat())},$t=(a,t,n,e,i,s,c,[r,o,w],l,u,y,d,_,E,m,N,v,$)=>{const[O,A,f,R]=Nt(t,l,u,_,E,m,void 0,void 0,$);return ma(a,()=>R(async()=>{return await O(),a=(await A(r,o))[Ra]?.[w]??"null",Oa(va(a));var a}),a=>R(async()=>{await O(),await f(r,o,{[Ra]:{[w]:$a(a()??null)}},!0,!0)}),n,e,i,c,{[d]:()=>y,destroy:s},0,y)},Ot=(a,t,n,e,i,s,c,[r,o,[w,l,y,d,_]],E,m,N,v,$,O,A,R,T,g)=>{const[S,b,D,L]=Nt(t,E,m,$,O,A,R,T,g),p=(a,t)=>f(ia(o,async([n,e,i,s,c],r)=>{var o,w;t&&(o=a,w=r,!G.hasOwn(o,w))||await D(n,e,a[r],i,s,t,c)})),C=(a,t,n)=>q(1==n?I(z(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):I(h(t,t=>[t,a[t]]),([,a])=>!u(a))),F=async(a,t)=>l?await D(y,Ta,{[Ra]:u(_)?a:C(a,_,t)},!0,!0,t,void 0,_):null;return ma(a,()=>L(async()=>{await S();const a=await(async()=>q(I(await f(ia(r,async([a,t,n],e)=>[a,await b(e,t,n)])),a=>!Z(a[1]))))(),t=await(async()=>w?(await b(y,Ta,void 0,d))[Ra]:{})();return Z(a)&&u(t)?void 0:[a,t]}),(a,t)=>L(async()=>{if(await S(),u(t)){const[t,n]=a();await p(t),await F(n)}else await p(t[0],!0),await F(t[1],!0)}),n,e,i,c,{[v]:()=>N,destroy:s},0,N)},At=/^([cd]:)(.+)/,ft=/^[A-Za-z0-9_]+$/,Rt=ta(),Tt=(a,e,i,c,r,o,w,l,u,y,d="getDb")=>{const _=Wa(i,o),[m,,N,A]=mt(e);!m&&a.isMergeable()&&b(0);const R=n+fa($a(N)),I=t+"_"+R,g=y??i,P=async(a,n,e="",i="")=>{const s=ja(t,a,R);return await _(Ga+Ha+Ya+s+`()RETURNS ${e}trigger AS $$ ${i}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},k=async(a,t,n,e)=>(await _(Ga+a+"TRIGGER"+t+n+"EXECUTE "+Ya+e+"()"),t),U=a=>`PERFORM pg_notify('${I}',${a});`,G=(a,t)=>m?s:2===t?G(a,0)+" OR "+G(a,1):Qa(na(N[0],a)?.[2]??s,0==t?"NEW":"OLD"),x=(a,e)=>f(h([Sa,ba,Da],(i,s)=>{const c=T([t,"d",R,a,i],"_");return k(Ha,O(ft,a)&&v(c)<=63?Xa(c):ja(t,"d",R,i,n+fa(a)),`AFTER ${i} ON${Xa(a)}FOR EACH ROW WHEN(${G(a,s)})`,e)})),H=async a=>{$(a)||await _(`DROP FUNCTION IF EXISTS${T(a,",")}CASCADE`)},Y=(a,t)=>{na(a,R)===t&&(sa(a,R),F(a)&&na(Rt,g)===a&&sa(Rt,g))},B=async()=>{const a=ca(Rt,g,()=>ta()),n=na(a,R);if(n)return await n[1],n[0]?(n[0]++,n):(await D(()=>n[4]),await B());const e=[],i=[1,void 0,e];sa(a,R,i),i[1]=(async()=>{const a=await P("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${Ia} command_tag='${xa}' LOOP ${U("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");S(e,a),await k("EVENT ",ja(t,"c",R),`ON ddl_command_end WHEN TAG IN('${xa}')`,a);const n=await P("d",U("'d:'||TG_TABLE_NAME")+"RETURN NULL;");S(e,n),i[3]=n,await f(h(M(A),async a=>(await _(xa+` IF NOT EXISTS${Xa(a)}("_id"text PRIMARY KEY)`),await x(a,n))))})();try{await i[1]}catch(t){throw i[0]=0,i[4]=p(()=>H(e),()=>Y(a,i)),await D(()=>i[4]),t}return i},W=async a=>{if(0==--a[0]){const t=na(Rt,g);a[4]=p(()=>H(a[2]),()=>Y(t,a)),await a[4]}};return(m?$t:Ot)(a,_,async a=>{const t=await B();try{return[await c(I,n=>{L(()=>{return E((e=n,i=At,e?.match(i)),async([,n,e])=>{C(A,e)&&("c:"==n&&await x(e,t[3]),await a())});var e,i},w)}),t]}catch(a){throw await L(()=>W(t),w),a}},async([a,t])=>{await p(()=>r(a),()=>W(t))},w,l,u,N,M(A),async(a,t)=>await a(ha+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${ha} count(*) FROM information_schema.key_column_usage kcu2 ${Ia} 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 ${Ia} c.table_schema='public'AND c.table_name IN(${Ka(t,qa)})`,t),y,d,"text",qa,void 0,a=>Na(a),a=>va(a))},ht=(a,t,e,i,s,c,o,w,y,_,E="getDb",m,N)=>{let v,$,O;const A=Wa(e,c),[f,R,T,h]=mt(t);return!f&&a.isMergeable()&&b(0),(f?$t:Ot)(a,A,a=>{let t,n,e=1,c=0,w=0;const y=async(t=!0)=>{const[{d:n,s:i,c:s}]=await A(ha+` ${Pa} d,${ka} s,TOTAL_CHANGES() c FROM ${Ma}${Pa} JOIN ${Ma}${ka}`);if(e&&(n!=v||i!=$||s!=O)){const c=t&&!w&&!l(v);v=n,$=i,O=s,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},_=(i=!1)=>{if(n)return n;const s=p(()=>L(async()=>{for(c?i&&await y():(await y(!1),c=1);e&&w;)w=0,await y(!1),e&&(await a(),await y())},o),()=>{n==s&&(n=void 0),e&&(w?_():e&&u(t)&&(t=setInterval(()=>_(!0),1e3*R)))});return n=s,s},E=i(a=>{e&&C(h,a)&&(w=1,d(),r.resolve().then(()=>e?void _():0))});return _().then(()=>async()=>{e=0,w=0,d(),await p(async()=>await n,async()=>{v=$=O=null,await s(E)})})},a=>a(),o,w,y,T,M(h),async(a,t)=>await a(ha+` t.name tn,c.name cn,c.pk OR EXISTS(${ha} 1 FROM ${Ma}index_list(t.name)i,${Ma}index_info(i.name)ii ${Ia} i."unique"=1 AND ii.name=c.name AND(${ha} count(*) FROM ${Ma}index_info(i.name))=1)uq FROM ${Ua}list()t,${Ua}info(t.name)c ${Ia} t.schema='main'AND t.type IN('table','view')AND t.name IN(${Ka(t,Ja)})ORDER BY t.name,c.name`,t),_,E,n,Ja,m,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,N)};export{ya as Persists,ua as Status,ma as createCustomPersister,Tt as createCustomPostgreSqlPersister,ht as createCustomSqlitePersister};
package/omni/index.js CHANGED
@@ -5163,10 +5163,74 @@ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
5163
5163
  arrayMap(array, () => getPlaceholder(offset)),
5164
5164
  COMMA,
5165
5165
  );
5166
- const getWhereCondition = (tableName, condition = TRUE) =>
5167
- WHERE + `(${replaceTableName(condition, escapeId(tableName))})`;
5166
+ const getWhere = (tableName, condition = TRUE, extraCondition) => {
5167
+ const conditions = arrayFilter(
5168
+ [
5169
+ condition == TRUE
5170
+ ? void 0
5171
+ : `(${replaceTableName(condition, escapeId(tableName))})`,
5172
+ extraCondition,
5173
+ ],
5174
+ (condition2) => !isUndefined(condition2),
5175
+ );
5176
+ return isEmpty(conditions)
5177
+ ? EMPTY_STRING
5178
+ : WHERE + arrayJoin(conditions, 'AND');
5179
+ };
5168
5180
  const replaceTableName = (condition, tableName) =>
5169
5181
  strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
5182
+ const updateThenInsertUpsert = async (
5183
+ executeCommand,
5184
+ tableName,
5185
+ rowIdColumnName,
5186
+ changingColumnNames,
5187
+ rows,
5188
+ getPlaceholder,
5189
+ ) => {
5190
+ const updateOffset = [1];
5191
+ const assignments = arrayJoin(
5192
+ arrayMap(
5193
+ changingColumnNames,
5194
+ (columnName) => escapeId(columnName) + '=' + getPlaceholder(updateOffset),
5195
+ ),
5196
+ COMMA,
5197
+ );
5198
+ const rowIdPlaceholder = getPlaceholder(updateOffset);
5199
+ for (const [id, row] of objToArray(rows, (row2, id2) => [id2, row2])) {
5200
+ const rowParams = arrayMap(row, (value) => value ?? null);
5201
+ if (
5202
+ isEmpty(
5203
+ await executeCommand(
5204
+ UPDATE +
5205
+ escapeId(tableName) +
5206
+ ' SET' +
5207
+ assignments +
5208
+ ' ' +
5209
+ WHERE +
5210
+ escapeId(rowIdColumnName) +
5211
+ '=' +
5212
+ rowIdPlaceholder +
5213
+ ' RETURNING' +
5214
+ escapeId(rowIdColumnName),
5215
+ [...rowParams, id],
5216
+ ),
5217
+ )
5218
+ ) {
5219
+ const offset = [1];
5220
+ await executeCommand(
5221
+ INSERT +
5222
+ ' INTO' +
5223
+ escapeId(tableName) +
5224
+ '(' +
5225
+ escapeColumnNames(rowIdColumnName, ...changingColumnNames) +
5226
+ ')VALUES(' +
5227
+ getPlaceholders([id, ...row], getPlaceholder, offset) +
5228
+ ')',
5229
+ [id, ...rowParams],
5230
+ );
5231
+ }
5232
+ }
5233
+ };
5170
5234
 
5171
5235
  const COLUMN_NAME = 'ColumnName';
5172
5236
  const STORE = 'store';
@@ -5339,7 +5403,7 @@ const getCommandFunctions = (
5339
5403
  await executeCommand(
5340
5404
  SELECT_STAR_FROM +
5341
5405
  escapeId(tableName) +
5342
- getWhereCondition(tableName, condition),
5406
+ getWhere(tableName, condition),
5343
5407
  ),
5344
5408
  (row) => {
5345
5409
  const rowId = row[rowIdColumnName];
@@ -5495,9 +5559,7 @@ const getCommandFunctions = (
5495
5559
  if (isUndefined(content)) {
5496
5560
  if (isUndefined(contentSubIdSet)) {
5497
5561
  await executeCommand(
5498
- DELETE_FROM +
5499
- escapeId(tableName) +
5500
- getWhereCondition(tableName, condition),
5562
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
5501
5563
  );
5502
5564
  }
5503
5565
  } else {
@@ -5507,8 +5569,11 @@ const getCommandFunctions = (
5507
5569
  await executeCommand(
5508
5570
  DELETE_FROM +
5509
5571
  escapeId(tableName) +
5510
- getWhereCondition(tableName, condition) +
5511
- `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
5572
+ getWhere(
5573
+ tableName,
5574
+ condition,
5575
+ `(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
5576
+ ),
5512
5577
  [rowId],
5513
5578
  );
5514
5579
  } else if (!isEmpty(settingColumnNames)) {
@@ -5567,8 +5632,12 @@ const getCommandFunctions = (
5567
5632
  await executeCommand(
5568
5633
  DELETE_FROM +
5569
5634
  escapeId(tableName) +
5570
- getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
5571
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
5635
+ getWhere(
5636
+ tableName,
5637
+ condition,
5638
+ // eslint-disable-next-line max-len
5639
+ `${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
5640
+ ),
5572
5641
  deleteRowIds,
5573
5642
  );
5574
5643
  } else if (
@@ -5576,9 +5645,7 @@ const getCommandFunctions = (
5576
5645
  collHas(schemaMap, tableName)
5577
5646
  ) {
5578
5647
  await executeCommand(
5579
- DELETE_FROM +
5580
- escapeId(tableName) +
5581
- getWhereCondition(tableName, condition),
5648
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
5582
5649
  );
5583
5650
  }
5584
5651
  }
@@ -7961,61 +8028,9 @@ const createPowerSyncPersister = (
7961
8028
  // StoreOnly,
7962
8029
  powerSync,
7963
8030
  'getPowerSync',
7964
- powerSyncUpdateThenInsert,
8031
+ updateThenInsertUpsert,
7965
8032
  );
7966
8033
  };
7967
- const powerSyncUpdateThenInsert = async (
7968
- executeCommand,
7969
- tableName,
7970
- rowIdColumnName,
7971
- changingColumnNames,
7972
- rows,
7973
- getPlaceholder,
7974
- ) => {
7975
- const updateOffset = [1];
7976
- const assignments = arrayJoin(
7977
- arrayMap(
7978
- changingColumnNames,
7979
- (columnName) => escapeId(columnName) + '=' + getPlaceholder(updateOffset),
7980
- ),
7981
- COMMA,
7982
- );
7983
- const rowIdPlaceholder = getPlaceholder(updateOffset);
7984
- for (const [id, row] of objToArray(rows, (row2, id2) => [id2, row2])) {
7985
- const rowParams = arrayMap(row, (value) => value ?? null);
7986
- if (
7987
- isEmpty(
7988
- await executeCommand(
7989
- UPDATE +
7990
- escapeId(tableName) +
7991
- ' SET' +
7992
- assignments +
7993
- ' ' +
7994
- WHERE +
7995
- escapeId(rowIdColumnName) +
7996
- '=' +
7997
- rowIdPlaceholder +
7998
- ' RETURNING' +
7999
- escapeId(rowIdColumnName),
8000
- [...rowParams, id],
8001
- ),
8002
- )
8003
- ) {
8004
- const offset = [1];
8005
- await executeCommand(
8006
- INSERT +
8007
- ' INTO' +
8008
- escapeId(tableName) +
8009
- '(' +
8010
- escapeColumnNames(rowIdColumnName, ...changingColumnNames) +
8011
- ')VALUES(' +
8012
- getPlaceholders([id, ...row], getPlaceholder, offset) +
8013
- ')',
8014
- [id, ...rowParams],
8015
- );
8016
- }
8017
- }
8018
- };
8019
8034
 
8020
8035
  const createReactNativeMmkvPersister = (
8021
8036
  store,
@@ -8363,6 +8378,70 @@ const createSupabasePersister = (
8363
8378
  );
8364
8379
  };
8365
8380
 
8381
+ const LIMIT_0 = 'LIMIT 0';
8382
+ const createTinyJoinPersister = (
8383
+ store,
8384
+ tinyJoin,
8385
+ configOrStoreTableName,
8386
+ onSqlCommand,
8387
+ onIgnoredError,
8388
+ ) => {
8389
+ const executeCommand = getWrappedCommand(
8390
+ async (sql, params = []) => (await tinyJoin.query(sql, params)).rows,
8391
+ onSqlCommand,
8392
+ );
8393
+ const [isJson, , defaultedConfig, managedTableNamesSet] = getConfigStructures(
8394
+ configOrStoreTableName,
8395
+ );
8396
+ if (!isJson && store.isMergeable()) {
8397
+ errorThrow(ERROR_STORE_TYPE);
8398
+ }
8399
+ const managedTableNames = collValues(managedTableNamesSet);
8400
+ const querySchema = async () => {
8401
+ const schema = [];
8402
+ await promiseAll(
8403
+ arrayMap(managedTableNames, async (tn) => {
8404
+ const sql = SELECT_STAR_FROM + escapeId(tn) + LIMIT_0;
8405
+ onSqlCommand?.(sql);
8406
+ await tryCatchIgnore(async () =>
8407
+ arrayForEach((await tinyJoin.query(sql)).fields, ({name}) =>
8408
+ arrayPush(schema, {tn, cn: name}),
8409
+ ),
8410
+ );
8411
+ }),
8412
+ );
8413
+ return schema;
8414
+ };
8415
+ const addPersisterListener = (listener) =>
8416
+ tinyJoin.subscribe(
8417
+ {tables: managedTableNames},
8418
+ () => void tryCatchIgnore(listener, onIgnoredError),
8419
+ );
8420
+ const delPersisterListener = (unsubscribe) => unsubscribe();
8421
+ const executeTransaction = (actions) => actions(executeCommand);
8422
+ return (isJson ? createJsonPersister : createTabularPersister)(
8423
+ store,
8424
+ executeCommand,
8425
+ addPersisterListener,
8426
+ delPersisterListener,
8427
+ onIgnoredError,
8428
+ noop,
8429
+ 3,
8430
+ // StoreOrMergeableStore,
8431
+ defaultedConfig,
8432
+ managedTableNames,
8433
+ querySchema,
8434
+ tinyJoin,
8435
+ 'getTinyJoin',
8436
+ 'text',
8437
+ numberedPlaceholder,
8438
+ updateThenInsertUpsert,
8439
+ (cellOrValue) => jsonString(cellOrValue),
8440
+ (field) => jsonParse(field),
8441
+ executeTransaction,
8442
+ );
8443
+ };
8444
+
8366
8445
  const DELETE = 'delete';
8367
8446
  const getYMap = (yMap) =>
8368
8447
  yMap instanceof Map$1 ? yMap : errorThrow(ERROR_CONTENT);
@@ -12747,6 +12826,7 @@ export {
12747
12826
  createSqliteWasmPersister,
12748
12827
  createStore,
12749
12828
  createSupabasePersister,
12829
+ createTinyJoinPersister,
12750
12830
  createWsServer,
12751
12831
  createWsServerSimple,
12752
12832
  createWsSynchronizer,