tinybase 9.5.0 → 9.6.0-beta.1
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.
- package/@types/omni/index.d.ts +4 -0
- package/@types/omni/with-schemas/index.d.ts +4 -0
- package/@types/persisters/index.d.ts +8 -1
- package/@types/persisters/persister-better-sqlite3/index.d.ts +178 -0
- package/@types/persisters/persister-better-sqlite3/with-schemas/index.d.ts +202 -0
- package/@types/persisters/persister-capacitor-sqlite/index.d.ts +181 -0
- package/@types/persisters/persister-capacitor-sqlite/with-schemas/index.d.ts +205 -0
- package/@types/persisters/persister-indexed-db/index.d.ts +17 -9
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +18 -10
- package/@types/persisters/persister-libsql/index.d.ts +27 -0
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +27 -0
- package/@types/persisters/persister-pg/index.d.ts +197 -0
- package/@types/persisters/persister-pg/with-schemas/index.d.ts +222 -0
- package/@types/persisters/persister-supabase/index.d.ts +201 -0
- package/@types/persisters/persister-supabase/with-schemas/index.d.ts +217 -0
- package/@types/persisters/with-schemas/index.d.ts +8 -1
- package/@types/ui-react-dom/index.d.ts +10 -10
- package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-react-dom-charts/index.d.ts +7 -7
- package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
- package/@types/ui-react-inspector/index.d.ts +1 -1
- package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-solid-dom/index.d.ts +10 -10
- package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-solid-inspector/index.d.ts +1 -1
- package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-svelte-dom/index.d.ts +10 -10
- package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-svelte-inspector/index.d.ts +1 -1
- package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
- package/agents.md +55 -2
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-better-sqlite3/index.js +1 -0
- package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -0
- package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-capacitor-sqlite/index.js +1 -0
- package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -0
- package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pg/index.js +1 -0
- package/min/persisters/persister-pg/index.js.gz +0 -0
- package/min/persisters/persister-pg/with-schemas/index.js +1 -0
- package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-supabase/index.js +1 -0
- package/min/persisters/persister-supabase/index.js.gz +0 -0
- package/min/persisters/persister-supabase/with-schemas/index.js +1 -0
- package/min/persisters/persister-supabase/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/omni/index.js +269 -34
- package/omni/with-schemas/index.js +269 -34
- package/package.json +164 -4
- package/persisters/index.js +23 -7
- package/persisters/persister-better-sqlite3/index.js +1767 -0
- package/persisters/persister-better-sqlite3/with-schemas/index.js +1767 -0
- package/persisters/persister-capacitor-sqlite/index.js +1769 -0
- package/persisters/persister-capacitor-sqlite/with-schemas/index.js +1769 -0
- package/persisters/persister-cr-sqlite-wasm/index.js +20 -6
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +20 -6
- package/persisters/persister-durable-object-sql-storage/index.js +20 -7
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +20 -7
- package/persisters/persister-electric-sql/index.js +20 -6
- package/persisters/persister-electric-sql/with-schemas/index.js +20 -6
- package/persisters/persister-expo-sqlite/index.js +20 -6
- package/persisters/persister-expo-sqlite/with-schemas/index.js +20 -6
- package/persisters/persister-indexed-db/index.js +48 -20
- package/persisters/persister-indexed-db/with-schemas/index.js +48 -20
- package/persisters/persister-libsql/index.js +20 -6
- package/persisters/persister-libsql/with-schemas/index.js +20 -6
- package/persisters/persister-pg/index.js +1905 -0
- package/persisters/persister-pg/with-schemas/index.js +1905 -0
- package/persisters/persister-pglite/index.js +20 -6
- package/persisters/persister-pglite/with-schemas/index.js +20 -6
- package/persisters/persister-postgres/index.js +20 -6
- package/persisters/persister-postgres/with-schemas/index.js +20 -6
- package/persisters/persister-powersync/index.js +27 -10
- package/persisters/persister-powersync/with-schemas/index.js +27 -10
- package/persisters/persister-react-native-sqlite/index.js +20 -6
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite-bun/index.js +20 -6
- package/persisters/persister-sqlite-bun/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite-wasm/index.js +20 -6
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite3/index.js +20 -6
- package/persisters/persister-sqlite3/with-schemas/index.js +20 -6
- package/persisters/persister-supabase/index.js +883 -0
- package/persisters/persister-supabase/with-schemas/index.js +883 -0
- package/persisters/with-schemas/index.js +23 -7
- package/readme.md +14 -14
- package/releases.md +163 -66
|
@@ -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),$=a=>a.length,N=a=>0==$(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=$(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B="_",U="_id",j="SELECT",k="WHERE",J="TABLE",X="ALTER "+J,Y="FROM",z="DELETE "+Y,G=j+"*"+Y,H="pragma_",K="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+J,Z=/\$tableName/g,aa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=(a,t=[1])=>O(p(a,()=>"$"+t[0]++),e),na=(a,t=s)=>k+`(${ea(t,aa(a))})`,ea=(a,t)=>r(a,Z,t),ia=Object,sa=a=>ia.getPrototypeOf(a),ra=ia.entries,ca=a=>!w(a)&&v(sa(a),a=>a==ia.prototype||w(sa(a)),()=>!0),oa=ia.keys,la=ia.freeze,wa=(...a)=>ia.assign(ia.create(null),...a),ua=(a,t,n)=>(ia.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),ya=(a=[])=>{const t=ia.create(null);return g(a,([a,n])=>ua(t,a,n)),t},da=(a,t)=>(delete a[t],a),va=(a,t)=>g(oa(a),n=>t(a[n],n)),fa=(a,t)=>p(ra(a),([a,n])=>t(n,a)),Ea=(a,t)=>{const n=ya();return va(a,(a,e)=>ua(n,e,t(a,e))),n},ma=a=>$(oa(a)),$a=a=>ca(a)&&0==ma(a),Na=Map,_a=a=>new Na(a),Aa=(a,t)=>a?.get(t),ha=(a,t)=>C(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return ha(a,(a,e)=>D(n,t(e,a))),n},Oa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),pa=(a,t,n,e)=>{let i=Aa(a,t);return I(a,t)?e?.(i):Oa(a,t,i=n()),i},Ta=(a,t,n,e,i=0)=>f((n?pa:Aa)(a,t[i],i>$(t)-2?n:_a),s=>{if(i>$(t)-2)return e?.(s)&&Oa(a,t[i]),s;const r=Ta(s,t,n,e,i+1);return S(s)&&Oa(a,t[i]),r}),ba=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),Ia="ColumnName",Sa="store",Ra="json",La=Sa+"TableName",Ca=Sa+"Id"+Ia,Ma=Sa+Ia,Pa="autoLoadIntervalSeconds",Fa="rowId"+Ia,xa="tableId",qa="tableName",Ba="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",ka={mode:Ra,[Pa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Xa=a=>m(a)?a:void 0,Ya=a=>d(a)||m(a),za=(a,t,n,e,i)=>{const s=_a();return va(a,(a,r)=>{const c=(w=wa(t,E(a)?{[n]:a}:a),o=ia.values(w),l=ma(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),Oa(s,r,c))}),s},Ga=JSON.stringify,Ha=JSON.parse,Ka=a=>""===a?void 0:m(a)?p(a,Ka):ca(a)?Ea(a,Ka):a,Qa=/^\d+$/,Va=_a(),Wa=_a(),Za=_a(),at=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,_,h,O=0,I=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;pa(Va,w,()=>0),pa(Wa,w,()=>[]),Oa(Za,w,(Aa(Za,w)??0)+1);const z=_a(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:P(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Qa.test(t)&&$(a)<1e3&&D(a,t)}]})(),s=_a(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==$(t)?D(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(Aa(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>Aa(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 Oa(s,w,[i,r,c,o,l]),Da(Ta(r,c??[n],ba),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(Aa(s,a),([,t,e])=>(Ta(t,e??[n],void 0,t=>(M(t,a),S(t)?1:0)),Oa(s,a),i(a),e)),a=>f(Aa(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=$(r);c==$(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=O&&(O=a,Z(z,void 0,O))},na=()=>{Aa(Za,w)||Aa(Va,w)||!N(Aa(Wa,w)??[])||(Oa(Va,w),Oa(Wa,w),Oa(Za,w))},ea=t=>{(G&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=O&&(await q(async()=>{ta(1),I++,await Ea(()=>F(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||P(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await ra())},oa=async a=>{const t=++L;let n=!0;if(await wa(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ta(1),I++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--B||ta(0)}),B||await ia()}else 2==O?j=t:await ra()});t!=L||J?u(a)||await s(a):d=a},r);await sa(e),t!=L||J||await q(()=>ra(a),()=>{n=!1})}return ma},wa=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await sa(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),ma},ua=async a=>(1!=O&&await q(()=>q(async()=>{ta(2),R++,await Ea(()=>F(()=>e(H,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&F(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,wa]:[wa,da];return await q(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=A(e=>N(a)?e():D(Aa(Wa,w),...p(a,(i,s)=>{const c=s==$(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!Aa(Va,w)){Oa(Va,w,1);const a=Aa(Wa,w);let t=0;await q(async()=>{for(;t<$(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),Oa(Va,w,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,wa]:[oa,ya,wa,da],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>O,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:I,saves:R}),...o,destroy:async()=>(u(_)&&(J=1,_=(async()=>{const a=Aa(Wa,w),t=T(a,([,a,t])=>t!=X||(a?.(),!1)),n=h;b(a),D(a,...t),await q(()=>q(()=>q(fa,()=>n),()=>Y?.()),()=>{const a=(Aa(Za,w)??1)-1;Oa(Za,w,a||void 0),na()})})()),await _,ma)};return la(ma)},tt=new l.TextEncoder,nt=(a,n,i,r,c=et,o,l,w)=>{const y=_a(),d=_a();let v=a;return[async()=>{L(y),L(d),g(await i(v,n),({tn:a,cn:t,uq:n})=>{Da(pa(y,a,ba),t),n&&Da(pa(d,a,ba),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:ba(e);return((a,t)=>I(Aa(y,a),t))(a,t)?ya(T(p(await v(G+aa(a)+na(a,n)),a=>{const n=a[t],e=l?Ea(da(a,t),l):da(a,t);return[n,u(i)?e:ya(T(fa(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!$a(a[1]))):{}},async(a,n,i,l,w,f=!1,E=s,m)=>{const $=u(m)?void 0:ba(m),_=a=>u($)||I($,a),A=ba();va(i??{},a=>g(T(oa(a??{}),_),a=>Da(A,a)));const b=R(A);if(u($)&&!f&&w&&E==s&&N(b)&&I(y,a))return await v("DROP "+J+aa(a)),Oa(y,a),void Oa(d,a);const S=Aa(y,a),L=ba(T(R(S),a=>a==n||_(a)));if(!N(b))if(I(y,a)){if(await h(p([n,...b],async t=>{M(L,t)||(await v(X+aa(a)+"ADD"+aa(t)+r),Da(S,t))})),c==et&&!I(Aa(d,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(tt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ga([a,n]));await v("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Da(pa(d,a,ba),n)}}else await v(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${O(p(b,a=>e+aa(a)+r))});`),Oa(y,a,ba([n,...b])),Oa(d,a,ba([n]));if(await h([...!f&&l?p(R(L),async t=>{t!=n&&(await v(X+aa(a)+"DROP"+aa(t)),M(S,t))}):[]]),f)u(i)?u($)&&await v(z+aa(a)+na(a,E)):await h(fa(i,async(t,e)=>{if(u(t))await v(z+aa(a)+na(a,E)+`AND(${aa(n)}=$1)`,[e]);else if(!N(b)){const i=T(oa(t),_);N(i)||await c(v,a,n,i,{[e]:p(i,a=>o?o(t[a]):t[a])},S)}}));else if(N(b))u($)&&I(y,a)&&await v(z+aa(a)+na(a,E));else{const t=T(R(Aa(y,a)),a=>a!=n&&_(a)),e=ya(),s=[];va(i??{},(a,n)=>{ua(e,n,p(t,t=>o?o(a?.[t]):a?.[t])),D(s,n)}),await c(v,a,n,t,e,S),await v(z+aa(a)+na(a,E)+`AND${aa(n)}NOT IN(${ta(s)})`,s)}},async t=>{if(w)return await w(async a=>{const n=v;return v=a,await q(t,()=>{v=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},et=async(a,t,n,i,s)=>{const r=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>O(p(a,aa),e))(n,...i)+")VALUES"+O(fa(s,a=>"($"+r[0]+++","+ta(a,r)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+O(p(i,a=>aa(a)+"=excluded."+aa(a)),e),fa(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},it=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,$,N)=>{const[_,A,h,g]=nt(t,w,y,f,E,void 0,void 0,N);return at(a,()=>g(async()=>{return await _(),a=(await A(c,o))[B]?.[l]??"null",Ka(Ha(a));var a}),a=>g(async()=>{var t;await _(),await h(c,o,{[B]:{[l]:(t=a()??null,Ga(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},st=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,$,N,_,A,g,O)=>{const[b,D,I,S]=nt(t,f,E,N,_,A,g,O),R=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!ia.hasOwn(o,l))||await I(n,e,a[c],i,s,t,r)})),L=(a,t,n)=>ya(1==n?T(fa(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),C=async(a,t)=>w?await I(y,U,{[B]:u(v)?a:L(a,v,t)},!0,!0,t,void 0,v):null;return at(a,()=>S(async()=>{await b();const a=await(async()=>ya(T(await h(ga(c,async([a,t,n],e)=>[a,await D(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await D(y,U,void 0,d))[B]:{})();return $a(a)&&u(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await b(),u(t)){const[t,n]=a();await R(t),await C(n)}else await R(t[0],!0),await C(t[1],!0)}),n,e,i,r,{[$]:()=>m,destroy:s},0,m)},rt=(a,e,i,r,o,l,y,v,f,m,$="getDb",N,_)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,D]=(a=>{const n=(a=>wa(ka,E(a)?{[La]:a}:a??{}))(a),e=n[Pa];if(n.mode==Ra){const a=n[La]??t;return[1,e,[a,n[Ca]??U,n[Ma]??Sa],ba(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=wa(Ja,c),{load:l,save:w}=o,u=[Ya(l),Ya(w),o[qa],Xa(l),Xa(w)],y=u[2],d=ba(y),v=ba(y),f=za(i,{[xa]:null,[Fa]:U,[ja]:s},xa,a=>I(v,a),a=>Da(d,a)),m=za(r,{[qa]:null,[Fa]:U,[Ba]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Da(d,t));return ha(m,(a,t)=>t[4]??=Aa(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?it:st)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(j+` ${K} d,${Q} s,TOTAL_CHANGES() c FROM ${H}${K} JOIN ${H}${Q}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&I(D,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(D),async(a,t)=>await a(j+` t.name tn,c.name cn,c.pk OR EXISTS(${j} 1 FROM ${H}index_list(t.name)i,${H}index_info(i.name)ii ${k} i."unique"=1 AND ii.name=c.name AND(${j} count(*) FROM ${H}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${k} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ta(t)})ORDER BY t.name,c.name`,t),m,$,n,N,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ct=(a,t,n,e,i)=>rt(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,_,1,t,"getElectricClient");export{ct as createElectricSqlPersister};
|
|
1
|
+
const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),l=globalThis,w=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(w),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},A=a=>new c(a),h=async a=>c.all(a),g=(a,t)=>a.forEach(t),O=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=(a,t)=>a.filter(t),b=(a,t=N(a))=>a.splice(0,t),D=(a,...t)=>a.push(...t),I=(a,t)=>a?.has(t)??!1,S=a=>u(a)||0==(a=>a?.size??0)(a),R=a=>[...a?.values()??[]],L=a=>a.clear(),C=(a,t)=>a?.forEach(t),M=(a,t)=>a?.delete(t),P=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},F=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},x=(a,t)=>F(a,a=>{F(()=>t?.(a))}),q=async(a,t)=>{try{return await a()}finally{await t()}},B="_",U="_id",j="SELECT",k="WHERE",J="TABLE",X="ALTER "+J,Y="FROM",z="DELETE "+Y,G=j+"*"+Y,H="pragma_",K="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+J,Z=/\$tableName/g,aa=a=>O(p(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>O(p(a,()=>t(n)),e),ea=(a,t=s)=>k+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!w(a)&&v(ra(a),a=>a==sa.prototype||w(ra(a)),()=>!0),la=sa.keys,wa=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return g(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>g(la(a),n=>t(a[n],n)),Ea=(a,t)=>p(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(la(a)),$a=a=>oa(a)&&0==Na(a),_a=Map,Aa=a=>new _a(a),ha=(a,t)=>a?.get(t),ga=(a,t)=>C(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ga(a,(a,e)=>D(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(M(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},ba=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:Aa),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=ba(s,t,n,e,i+1);return S(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Ia=(a,t)=>a?.add(t),Sa="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+Sa,Pa=Ra+Sa,Fa="autoLoadIntervalSeconds",xa="rowId"+Sa,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:t+"_values"},Ya=a=>m(a)?a:void 0,za=a=>d(a)||m(a),Ga=(a,t,n,e,i)=>{const s=Aa();return fa(a,(a,r)=>{const c=(w=ua(t,E(a)?{[n]:a}:a),o=sa.values(w),l=Na(t),o.slice(0,l));var o,l,w;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},Ha=JSON.stringify,Ka=JSON.parse,Qa=a=>""===a?void 0:m(a)?p(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=Aa(),Za=Aa(),at=Aa(),tt=(a,t,e,i,s,r,c,o={},l=0,w=[])=>{let d,v,E,_,h,O=0,I=0,R=0,L=0,B=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),pa(at,w,(ha(at,w)??0)+1);const z=Aa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:P(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&D(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(g(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?D(e,a):y(t[n])?C(a,a=>i(a,n+1)):g([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>C(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=e(1);return pa(s,w,[i,r,c,o,l]),Ia(ba(r,c??[n],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(ba(t,e??[n],void 0,t=>(M(t,a),S(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?g(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=O&&(O=a,Z(z,void 0,O))},na=()=>{ha(at,w)||ha(Wa,w)||!$(ha(Za,w)??[])||(pa(Wa,w),pa(Za,w),pa(at,w))},ea=t=>{(G&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>q(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=O&&(await q(async()=>{ta(1),I++,await Ea(()=>F(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||P(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=j;j=0,a&&a==L&&!J&&(2==O?j=a:await ra())},oa=async a=>{const t=++L;let n=!0;if(await la(!0),t==L&&!J){const e=F(async()=>{const a=await i(async(a,e)=>{if(t==L&&!J)if(e||a){const t=n||2==O||!!U;B++,t&&U++,await q(async()=>{ta(1),I++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--B||ta(0)}),B||await ia()}else 2==O?j=t:await ra()});t!=L||J?u(a)||await s(a):d=a},r);await sa(e),t!=L||J||await q(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{j=0,a||L++;const t=v,n=d;return d=void 0,await sa(q(async()=>{await t},async()=>{u(n)||await F(()=>s(n),r)})),ma},ua=async a=>(1!=O&&await q(()=>q(async()=>{ta(2),R++,await Ea(()=>F(()=>e(H,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(E=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&F(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||k++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await q(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=A(e=>$(a)?e():D(ha(Za,w),...p(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=A(t=>a=t),await q(async()=>{try{await F(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Wa,w)){pa(Wa,w,1);const a=ha(Za,w);let t=0;await q(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),pa(Wa,w,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:L;await r;const o=e(a),l=t?L:k;try{await o}catch(a){throw l==(t?L:k)&&await x(s),c==(t?k:L)&&await x(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>O,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:I,saves:R}),...o,destroy:async()=>(u(_)&&(J=1,_=(async()=>{const a=ha(Za,w),t=T(a,([,a,t])=>t!=X||(a?.(),!1)),n=h;b(a),D(a,...t),await q(()=>q(()=>q(fa,()=>n),()=>Y?.()),()=>{const a=(ha(at,w)??1)-1;pa(at,w,a||void 0),na()})})()),await _,ma)};return wa(ma)},nt=new l.TextEncoder,et=(a,n,i,r,c,o=it,l,w,y)=>{const d=Aa(),v=Aa();let f=a;return[async()=>{L(d),L(v),g(await i(f,n),({tn:a,cn:t,uq:n})=>{Ia(Ta(d,a,Da),t),n&&Ia(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(T(p(await f(G+aa(a)+ea(a,n)),a=>{const n=a[t],e=w?ma(va(a,t),w):va(a,t);return[n,u(i)?e:da(T(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!$a(a[1]))):{}},async(a,n,i,w,y,E=!1,m=s,N)=>{const _=u(N)?void 0:Da(N),A=a=>u(_)||I(_,a),b=Da();fa(i??{},a=>g(T(la(a??{}),A),a=>Ia(b,a)));const S=R(b);if(u(_)&&!E&&y&&m==s&&$(S)&&I(d,a))return await f("DROP "+J+aa(a)),pa(d,a),void pa(v,a);const L=ha(d,a),C=Da(T(R(L),a=>a==n||A(a)));if(!$(S))if(I(d,a)){if(await h(p([n,...S],async t=>{M(C,t)||(await f(X+aa(a)+"ADD"+aa(t)+r),Ia(L,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return g(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Ia(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${O(p(S,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...S])),pa(v,a,Da([n]));if(await h([...!E&&w?p(R(C),async t=>{t!=n&&(await f(X+aa(a)+"DROP"+aa(t)),M(L,t))}):[]]),E)u(i)?u(_)&&await f(z+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(z+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!$(S)){const i=T(la(t),A);$(i)||await o(f,a,n,i,{[e]:p(i,a=>l?l(t[a]):t[a])},c,L)}}));else if($(S))u(_)&&I(d,a)&&await f(z+aa(a)+ea(a,m));else{const t=T(R(ha(d,a)),a=>a!=n&&A(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,p(t,t=>l?l(a?.[t]):a?.[t])),D(s,n)}),await o(f,a,n,t,e,c,L),await f(z+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await q(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await F(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>O(p(a,aa),e))(n,...i)+")VALUES"+O(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+O(p(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...p(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,y,d,v,f,E,m,N,$,_)=>{const[A,h,g,O]=et(t,w,y,f,E,m,void 0,void 0,_);return tt(a,()=>O(async()=>{return await A(),a=(await h(c,o))[B]?.[l]??"null",Qa(Ka(a));var a}),a=>O(async()=>{var t;await A(),await g(c,o,{[B]:{[l]:(t=a()??null,Ha(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[l,w,y,d,v]],f,E,m,N,$,_,A,g,O,b)=>{const[D,I,S,R]=et(t,f,E,$,_,A,g,O,b),L=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!sa.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),C=(a,t,n)=>da(1==n?T(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):T(p(t,t=>[t,a[t]]),([,a])=>!u(a))),M=async(a,t)=>w?await S(y,U,{[B]:u(v)?a:C(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>R(async()=>{await D();const a=await(async()=>da(T(await h(Oa(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(y,U,void 0,d))[B]:{})();return $a(a)&&u(t)?void 0:[a,t]}),(a,t)=>R(async()=>{if(await D(),u(t)){const[t,n]=a();await L(t),await M(n)}else await L(t[0],!0),await M(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,l,y,v,f,m,N="getDb",$,_)=>{let A,h,g;const O=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[p,T,b,D]=(a=>{const n=(a=>ua(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=n[Fa];if(n.mode==La){const a=n[Ca]??t;return[1,e,[a,n[Ma]??U,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Da(y),v=Da(y),f=Ga(i,{[qa]:null,[xa]:U,[ka]:s},qa,a=>I(v,a),a=>Ia(d,a)),m=Ga(r,{[Ba]:null,[xa]:U,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>I(v,t),(a,t)=>Ia(d,t));return ga(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!p&&a.isMergeable()&&P(0),(p?st:rt)(a,O,a=>{let t,n,e=1,i=0,s=0;const l=async(t=!0)=>{const[{d:n,s:i,c:r}]=await O(j+` ${K} d,${Q} s,TOTAL_CHANGES() c FROM ${H}${K} JOIN ${H}${Q}`);if(e&&(n!=A||i!=h||r!=g)){const c=t&&!s&&!w(A);A=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=q(()=>x(async()=>{for(i?r&&await l():(await l(!1),i=1);e&&s;)s=0,await l(!1),e&&(await a(),await l())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*T)))});return n=c,c},f=r(a=>{e&&I(D,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await q(async()=>await n,async()=>{A=h=g=null,await o(f)})})},a=>a(),y,v,f,b,R(D),async(a,t)=>await a(j+` t.name tn,c.name cn,c.pk OR EXISTS(${j} 1 FROM ${H}index_list(t.name)i,${H}index_info(i.name)ii ${k} i."unique"=1 AND ii.name=c.name AND(${j} count(*) FROM ${H}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${k} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,_)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>await t.db.raw({sql:a,args:n}),a=>t.notifier.subscribeToDataChanges(n=>g(t.notifier.alias(n),({tablename:t})=>a(t))),a=>a(),e,i,_,1,t,"getElectricClient");export{ot as createElectricSqlPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,$=a=>Array.isArray(a),A=a=>a.length,N=a=>0==A(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=A(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=(a,t=[1])=>P(F(a,()=>"$"+t[0]++),i),ea=(a,t=r)=>J+`(${ia(t,ta(a))})`,ia=(a,t)=>c(a,aa,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!u(a)&&f(ra(a),a=>a==sa.prototype||u(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 M(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>M(la(a),n=>t(a[n],n)),ma=(a,t)=>F(ca(a),([a,n])=>t(n,a)),Ea=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},$a=a=>A(la(a)),Aa=a=>oa(a)&&0==$a(a),Na=Map,_a=a=>new Na(a),pa=(a,t)=>a?.get(t),ha=(a,t)=>S(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ha(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=pa(a,t);return O(a,t)?e?.(i):ga(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>m((n?Ta:pa)(a,t[i],i>A(t)-2?n:_a),s=>{if(i>A(t)-2)return e?.(s)&&ga(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return g(s)&&ga(a,t[i]),r}),Sa=a=>new Set($(a)||y(a)?a:[a]),Da=(a,t)=>a?.add(t),ba="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+ba,Pa=Ra+ba,Fa="autoLoadIntervalSeconds",xa="rowId"+ba,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:n+"_values"},Ya=a=>$(a)?a:void 0,za=a=>v(a)||$(a),Ga=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(w=ua(t,E(a)?{[n]:a}:a),o=sa.values(w),l=$a(t),o.slice(0,l));var o,l,w;d(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:$(a)?F(a,Qa):oa(a)?Ea(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),ga(at,w,(pa(at,w)??0)+1);const z=_a(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Va.test(t)&&A(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==A(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(pa(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>pa(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return ga(s,w,[i,r,c,o,l]),Da(Ia(r,c??[e],Sa),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(pa(s,a),([,t,n])=>(Ia(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),ga(s,a),i(a),n)),a=>m(pa(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=A(r);c==A(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{pa(at,w)||pa(Wa,w)||!N(pa(Za,w)??[])||(ga(Wa,w),ga(Za,w),ga(at,w))},ea=t=>{(G&&$(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=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();$(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},ua=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>ua(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>N(a)?e():B(pa(Za,w),...F(a,(i,s)=>{const c=s==A(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!pa(Wa,w)){ga(Wa,w,1);const a=pa(Za,w);let t=0;await C(async()=>{for(;t<A(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),ga(Wa,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=pa(Za,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(pa(at,w)??1)-1;ga(at,w,a||void 0),na()})})()),await E,Ea)};return wa(Ea)},nt=new w.TextEncoder,et=(a,t,e,s,c=it,o,l,w)=>{const u=_a(),d=_a();let v=a;return[async()=>{I(u),I(d),M(await e(v,t),({tn:a,cn:t,uq:n})=>{Da(Ta(u,a,Sa),t),n&&Da(Ta(d,a,Sa),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Sa(e);return((a,t)=>O(pa(u,a),t))(a,t)?da(x(F(await v(H+ta(a)+ea(a,n)),a=>{const n=a[t],e=l?Ea(va(a,t),l):va(a,t);return[n,y(i)?e:da(x(ma(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!Aa(a[1]))):{}},async(a,t,e,l,w,f=!1,m=r,E)=>{const $=y(E)?void 0:Sa(E),A=a=>y($)||O($,a),_=Sa();fa(e??{},a=>M(x(la(a??{}),A),a=>Da(_,a)));const p=T(_);if(y($)&&!f&&w&&m==r&&N(p)&&O(u,a))return await v("DROP "+X+ta(a)),ga(u,a),void ga(d,a);const g=pa(u,a),I=Sa(x(T(g),a=>a==t||A(a)));if(!N(p))if(O(u,a)){if(await h(F([t,...p],async t=>{D(I,t)||(await v(Y+ta(a)+"ADD"+ta(t)+s),Da(g,t))})),c==it&&!O(pa(d,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,t]));await v("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),Da(Ta(d,a,Sa),t)}}else await v(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(p,a=>i+ta(a)+s))});`),ga(u,a,Sa([t,...p])),ga(d,a,Sa([t]));if(await h([...!f&&l?F(T(I),async n=>{n!=t&&(await v(Y+ta(a)+"DROP"+ta(n)),D(g,n))}):[]]),f)y(e)?y($)&&await v(G+ta(a)+ea(a,m)):await h(ma(e,async(n,e)=>{if(y(n))await v(G+ta(a)+ea(a,m)+`AND(${ta(t)}=$1)`,[e]);else if(!N(p)){const i=x(la(n),A);N(i)||await c(v,a,t,i,{[e]:F(i,a=>o?o(n[a]):n[a])},g)}}));else if(N(p))y($)&&O(u,a)&&await v(G+ta(a)+ea(a,m));else{const n=x(T(pa(u,a)),a=>a!=t&&A(a)),i=da(),s=[];fa(e??{},(a,t)=>{ya(i,t,F(n,t=>o?o(a?.[t]):a?.[t])),B(s,t)}),await c(v,a,t,n,i,g),await v(G+ta(a)+ea(a,m)+`AND${ta(t)}NOT IN(${na(s)})`,s)}},async t=>{if(w)return await w(async a=>{const n=v;return v=a,await C(t,()=>{v=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,e,s)=>{const r=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(ma(s,a=>"($"+r[0]+++","+na(a,r)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),ma(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,$,A)=>{const[N,_,p,h]=et(t,w,u,f,m,void 0,void 0,A);return tt(a,()=>h(async()=>{return await N(),a=(await _(c,o))[U]?.[l]??"null",Qa(Ka(a));var a}),a=>h(async()=>{var t;await N(),await p(c,o,{[U]:{[l]:(t=a()??null,Ha(t,(a,t)=>y(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,u,d,v]],f,m,E,$,A,N,_,p,O)=>{const[g,T,I,S]=et(t,f,m,A,N,_,p,O),D=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!sa.hasOwn(o,l))||await I(n,e,a[c],i,s,t,r)})),b=(a,t,n)=>da(1==n?x(ma(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),R=async(a,t)=>w?await I(u,j,{[U]:y(v)?a:b(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await g();const a=await(async()=>da(x(await h(Oa(c,async([a,t,n],e)=>[a,await T(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>l?(await T(u,j,void 0,d))[U]:{})();return Aa(a)&&y(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await g(),y(t)){const[t,n]=a();await D(t),await R(n)}else await D(t[0],!0),await R(t[1],!0)}),n,e,i,r,{[$]:()=>E,destroy:s},0,E)},ct=(a,t,i,s,c,l,w,d,f,m,$="getDb",A,N)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ua(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=t[Fa];if(t.mode==La){const a=t[Ca]??n;return[1,e,[a,t[Ma]??j,t[Pa]??Ra],Sa(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ua(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Sa(y),v=Sa(y),f=Ga(i,{[qa]:null,[xa]:j,[ka]:r},qa,a=>O(v,a),a=>Da(d,a)),m=Ga(s,{[Ba]:null,[xa]:j,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>O(v,t),(a,t)=>Da(d,t));return ha(m,(a,t)=>t[4]??=pa(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?st:rt)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t)})ORDER BY t.name,c.name`,t),m,$,e,A,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,N)},ot=(t,n,e,i,s)=>ct(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{ot as createExpoSqlitePersister};
|
|
1
|
+
import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=()=>"?",ea=(a,t,n=[1])=>P(F(a,()=>t(n)),i),ia=(a,t=r)=>J+`(${sa(t,ta(a))})`,sa=(a,t)=>c(a,aa,t),ra=Object,ca=a=>ra.getPrototypeOf(a),oa=ra.entries,la=a=>!u(a)&&f(ca(a),a=>a==ra.prototype||u(ca(a)),()=>!0),wa=ra.keys,ua=ra.freeze,ya=(...a)=>ra.assign(ra.create(null),...a),da=(a,t,n)=>(ra.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),va=(a=[])=>{const t=ra.create(null);return M(a,([a,n])=>da(t,a,n)),t},fa=(a,t)=>(delete a[t],a),ma=(a,t)=>M(wa(a),n=>t(a[n],n)),Ea=(a,t)=>F(oa(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=va();return ma(a,(a,e)=>da(n,e,t(a,e))),n},Na=a=>N(wa(a)),$a=a=>la(a)&&0==Na(a),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),Da=a=>new Set(A(a)||y(a)?a:[a]),ba=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return ma(a,(a,r)=>{const c=(w=ya(t,E(a)?{[n]:a}:a),o=ra.values(w),l=Na(t),o.slice(0,l));var o,l,w;d(c[0])||e(r,c[0])||(i(r,c[0]),Ta(s,r,c))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):la(a)?Aa(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const z=pa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,c,o,l]),ba(Sa(r,c??[e],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},ea=t=>{(G&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await wa()},sa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();A(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},wa=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await wa(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>wa(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:wa,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),na()})})()),await E,Ea)};return ua(Ea)},et=new w.TextEncoder,it=(a,t,e,s,c,o=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{ba(Ia(d,a,Da),t),n&&ba(Ia(v,a,Da),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Da(e);return((a,t)=>O(ha(d,a),t))(a,t)?va(x(F(await f(H+ta(a)+ia(a,n)),a=>{const n=a[t],e=w?Aa(fa(a,t),w):fa(a,t);return[n,y(i)?e:va(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!$a(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:Da(A),_=a=>y(N)||O(N,a),p=Da();ma(e??{},a=>M(x(wa(a??{}),_),a=>ba(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+X+ta(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=Da(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{D(S,t)||(await f(Y+ta(a)+"ADD"+ta(t)+s),ba(I,t))})),o==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),ba(Ia(v,a,Da),t)}}else await f(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(g,a=>i+ta(a)+s))});`),Ta(d,a,Da([t,...g])),Ta(v,a,Da([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(Y+ta(a)+"DROP"+ta(n)),D(I,n))}):[]]),m)y(e)?y(N)&&await f(G+ta(a)+ia(a,E)):await h(Ea(e,async(n,e)=>{if(y(n))await f(G+ta(a)+ia(a,E)+`AND(${ta(t)}=${c([1])})`,[e]);else if(!$(g)){const i=x(wa(n),_);$(i)||await o(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},c,I)}}));else if($(g))y(N)&&O(d,a)&&await f(G+ta(a)+ia(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=va(),s=[];ma(e??{},(a,t)=>{da(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await o(f,a,t,n,i,c,I),await f(G+ta(a)+ia(a,E)+`AND${ta(t)}NOT IN(${ea(s,c)})`,s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const c=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(Ea(s,a=>"("+r(c)+","+ea(a,r,c)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),Ea(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(c,o))[U]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(c,o,{[U]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ct=(a,t,n,e,i,s,r,[c,o,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,D]=it(t,f,m,N,$,_,p,O,g),b=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!ra.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>va(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,j,{[U]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>D(async()=>{await T();const a=await(async()=>va(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(u,j,void 0,d))[U]:{})();return $a(a)&&y(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),y(t)){const[t,n]=a();await b(t),await L(n)}else await b(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ot=(a,t,i,s,c,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ya(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??j,t[Fa]??La],Da(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ya(Ya,c),{load:l,save:w}=o,u=[Ga(l),Ga(w),o[Ua],za(l),za(w)],y=u[2],d=Da(y),v=Da(y),f=Ha(i,{[Ba]:null,[qa]:j,[Ja]:r},Ba,a=>O(v,a),a=>ba(d,a)),m=Ha(s,{[Ua]:null,[qa]:j,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>ba(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?rt:ct)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ea(t,na)})ORDER BY t.name,c.name`,t),m,A,e,na,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ot(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,$=a=>Array.isArray(a),A=a=>a.length,N=a=>0==A(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=A(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=(a,t=[1])=>P(F(a,()=>"$"+t[0]++),i),ea=(a,t=r)=>J+`(${ia(t,ta(a))})`,ia=(a,t)=>c(a,aa,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!u(a)&&f(ra(a),a=>a==sa.prototype||u(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 M(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>M(la(a),n=>t(a[n],n)),ma=(a,t)=>F(ca(a),([a,n])=>t(n,a)),Ea=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},$a=a=>A(la(a)),Aa=a=>oa(a)&&0==$a(a),Na=Map,_a=a=>new Na(a),pa=(a,t)=>a?.get(t),ha=(a,t)=>S(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ha(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=pa(a,t);return O(a,t)?e?.(i):ga(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>m((n?Ta:pa)(a,t[i],i>A(t)-2?n:_a),s=>{if(i>A(t)-2)return e?.(s)&&ga(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return g(s)&&ga(a,t[i]),r}),Sa=a=>new Set($(a)||y(a)?a:[a]),Da=(a,t)=>a?.add(t),ba="ColumnName",Ra="store",La="json",Ca=Ra+"TableName",Ma=Ra+"Id"+ba,Pa=Ra+ba,Fa="autoLoadIntervalSeconds",xa="rowId"+ba,qa="tableId",Ba="tableName",Ua="deleteEmptyColumns",ja="deleteEmptyTable",ka="condition",Ja={mode:La,[Fa]:1},Xa={load:0,save:0,[Ba]:n+"_values"},Ya=a=>$(a)?a:void 0,za=a=>v(a)||$(a),Ga=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(w=ua(t,E(a)?{[n]:a}:a),o=sa.values(w),l=$a(t),o.slice(0,l));var o,l,w;d(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:$(a)?F(a,Qa):oa(a)?Ea(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ta(Wa,w,()=>0),Ta(Za,w,()=>[]),ga(at,w,(pa(at,w)??0)+1);const z=_a(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Va.test(t)&&A(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==A(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(pa(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>pa(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return ga(s,w,[i,r,c,o,l]),Da(Ia(r,c??[e],Sa),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(pa(s,a),([,t,n])=>(Ia(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),ga(s,a),i(a),n)),a=>m(pa(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=A(r);c==A(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{pa(at,w)||pa(Wa,w)||!N(pa(Za,w)??[])||(ga(Wa,w),ga(Za,w),ga(at,w))},ea=t=>{(G&&$(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=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();$(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},ua=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await ua(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>ua(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>N(a)?e():B(pa(Za,w),...F(a,(i,s)=>{const c=s==A(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!pa(Wa,w)){ga(Wa,w,1);const a=pa(Za,w);let t=0;await C(async()=>{for(;t<A(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),ga(Wa,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=pa(Za,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(pa(at,w)??1)-1;ga(at,w,a||void 0),na()})})()),await E,Ea)};return wa(Ea)},nt=new w.TextEncoder,et=(a,t,e,s,c=it,o,l,w)=>{const u=_a(),d=_a();let v=a;return[async()=>{I(u),I(d),M(await e(v,t),({tn:a,cn:t,uq:n})=>{Da(Ta(u,a,Sa),t),n&&Da(Ta(d,a,Sa),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Sa(e);return((a,t)=>O(pa(u,a),t))(a,t)?da(x(F(await v(H+ta(a)+ea(a,n)),a=>{const n=a[t],e=l?Ea(va(a,t),l):va(a,t);return[n,y(i)?e:da(x(ma(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!Aa(a[1]))):{}},async(a,t,e,l,w,f=!1,m=r,E)=>{const $=y(E)?void 0:Sa(E),A=a=>y($)||O($,a),_=Sa();fa(e??{},a=>M(x(la(a??{}),A),a=>Da(_,a)));const p=T(_);if(y($)&&!f&&w&&m==r&&N(p)&&O(u,a))return await v("DROP "+X+ta(a)),ga(u,a),void ga(d,a);const g=pa(u,a),I=Sa(x(T(g),a=>a==t||A(a)));if(!N(p))if(O(u,a)){if(await h(F([t,...p],async t=>{D(I,t)||(await v(Y+ta(a)+"ADD"+ta(t)+s),Da(g,t))})),c==it&&!O(pa(d,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ha([a,t]));await v("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),Da(Ta(d,a,Sa),t)}}else await v(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(p,a=>i+ta(a)+s))});`),ga(u,a,Sa([t,...p])),ga(d,a,Sa([t]));if(await h([...!f&&l?F(T(I),async n=>{n!=t&&(await v(Y+ta(a)+"DROP"+ta(n)),D(g,n))}):[]]),f)y(e)?y($)&&await v(G+ta(a)+ea(a,m)):await h(ma(e,async(n,e)=>{if(y(n))await v(G+ta(a)+ea(a,m)+`AND(${ta(t)}=$1)`,[e]);else if(!N(p)){const i=x(la(n),A);N(i)||await c(v,a,t,i,{[e]:F(i,a=>o?o(n[a]):n[a])},g)}}));else if(N(p))y($)&&O(u,a)&&await v(G+ta(a)+ea(a,m));else{const n=x(T(pa(u,a)),a=>a!=t&&A(a)),i=da(),s=[];fa(e??{},(a,t)=>{ya(i,t,F(n,t=>o?o(a?.[t]):a?.[t])),B(s,t)}),await c(v,a,t,n,i,g),await v(G+ta(a)+ea(a,m)+`AND${ta(t)}NOT IN(${na(s)})`,s)}},async t=>{if(w)return await w(async a=>{const n=v;return v=a,await C(t,()=>{v=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,e,s)=>{const r=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(ma(s,a=>"($"+r[0]+++","+na(a,r)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),ma(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,$,A)=>{const[N,_,p,h]=et(t,w,u,f,m,void 0,void 0,A);return tt(a,()=>h(async()=>{return await N(),a=(await _(c,o))[U]?.[l]??"null",Qa(Ka(a));var a}),a=>h(async()=>{var t;await N(),await p(c,o,{[U]:{[l]:(t=a()??null,Ha(t,(a,t)=>y(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,u,d,v]],f,m,E,$,A,N,_,p,O)=>{const[g,T,I,S]=et(t,f,m,A,N,_,p,O),D=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!sa.hasOwn(o,l))||await I(n,e,a[c],i,s,t,r)})),b=(a,t,n)=>da(1==n?x(ma(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),R=async(a,t)=>w?await I(u,j,{[U]:y(v)?a:b(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await g();const a=await(async()=>da(x(await h(Oa(c,async([a,t,n],e)=>[a,await T(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>l?(await T(u,j,void 0,d))[U]:{})();return Aa(a)&&y(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await g(),y(t)){const[t,n]=a();await D(t),await R(n)}else await D(t[0],!0),await R(t[1],!0)}),n,e,i,r,{[$]:()=>E,destroy:s},0,E)},ct=(a,t,i,s,c,l,w,d,f,m,$="getDb",A,N)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ua(Ja,E(a)?{[Ca]:a}:a??{}))(a),e=t[Fa];if(t.mode==La){const a=t[Ca]??n;return[1,e,[a,t[Ma]??j,t[Pa]??Ra],Sa(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ua(Xa,c),{load:l,save:w}=o,u=[za(l),za(w),o[Ba],Ya(l),Ya(w)],y=u[2],d=Sa(y),v=Sa(y),f=Ga(i,{[qa]:null,[xa]:j,[ka]:r},qa,a=>O(v,a),a=>Da(d,a)),m=Ga(s,{[Ba]:null,[xa]:j,[Ua]:0,[ja]:0,[ka]:null},Ba,(a,t)=>O(v,t),(a,t)=>Da(d,t));return ha(m,(a,t)=>t[4]??=pa(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?st:rt)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t)})ORDER BY t.name,c.name`,t),m,$,e,A,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,N)},ot=(t,n,e,i,s)=>ct(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{ot as createExpoSqlitePersister};
|
|
1
|
+
import{addDatabaseChangeListener as a}from"expo-sqlite";const t=a=>typeof a,n="tinybase",e="",i=",",s=t(e),r="true",c=(a,t,n)=>a.replace(t,n),o=Promise,l=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,u=a=>null==a,y=a=>void 0===a,d=a=>null===a,v=a=>!0===a,f=l(u),m=l(y),E=a=>t(a)==s,A=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),_=()=>{},p=a=>new o(a),h=async a=>o.all(a),O=(a,t)=>a?.has(t)??!1,g=a=>y(a)||0==(a=>a?.size??0)(a),T=a=>[...a?.values()??[]],I=a=>a.clear(),S=(a,t)=>a?.forEach(t),D=(a,t)=>a?.delete(t),b=(a,t)=>{throw((a,t)=>Error(n+":"+a+(y(t)?e:":"+t)))(a,t)},R=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},L=(a,t)=>R(a,a=>{R(()=>t?.(a))}),C=async(a,t)=>{try{return await a()}finally{await t()}},M=(a,t)=>a.forEach(t),P=(a,t="")=>a.join(t),F=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),q=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),U="_",j="_id",k="SELECT",J="WHERE",X="TABLE",Y="ALTER "+X,z="FROM",G="DELETE "+z,H=k+"*"+z,K="pragma_",Q="data_version",V="schema_version",W="pragma_table_",Z="CREATE "+X,aa=/\$tableName/g,ta=a=>P(F(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${c(a,/"/g,'""')}"`),"."),na=()=>"?",ea=(a,t,n=[1])=>P(F(a,()=>t(n)),i),ia=(a,t=r)=>J+`(${sa(t,ta(a))})`,sa=(a,t)=>c(a,aa,t),ra=Object,ca=a=>ra.getPrototypeOf(a),oa=ra.entries,la=a=>!u(a)&&f(ca(a),a=>a==ra.prototype||u(ca(a)),()=>!0),wa=ra.keys,ua=ra.freeze,ya=(...a)=>ra.assign(ra.create(null),...a),da=(a,t,n)=>(ra.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),va=(a=[])=>{const t=ra.create(null);return M(a,([a,n])=>da(t,a,n)),t},fa=(a,t)=>(delete a[t],a),ma=(a,t)=>M(wa(a),n=>t(a[n],n)),Ea=(a,t)=>F(oa(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=va();return ma(a,(a,e)=>da(n,e,t(a,e))),n},Na=a=>N(wa(a)),$a=a=>la(a)&&0==Na(a),_a=Map,pa=a=>new _a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>S(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},Ta=(a,t,n)=>y(n)?(D(a,t),a):a?.set(t,n),Ia=(a,t,n,e)=>{let i=ha(a,t);return O(a,t)?e?.(i):Ta(a,t,i=n()),i},Sa=(a,t,n,e,i=0)=>m((n?Ia:ha)(a,t[i],i>N(t)-2?n:pa),s=>{if(i>N(t)-2)return e?.(s)&&Ta(a,t[i]),s;const r=Sa(s,t,n,e,i+1);return g(s)&&Ta(a,t[i]),r}),Da=a=>new Set(A(a)||y(a)?a:[a]),ba=(a,t)=>a?.add(t),Ra="ColumnName",La="store",Ca="json",Ma=La+"TableName",Pa=La+"Id"+Ra,Fa=La+Ra,xa="autoLoadIntervalSeconds",qa="rowId"+Ra,Ba="tableId",Ua="tableName",ja="deleteEmptyColumns",ka="deleteEmptyTable",Ja="condition",Xa={mode:Ca,[xa]:1},Ya={load:0,save:0,[Ua]:n+"_values"},za=a=>A(a)?a:void 0,Ga=a=>v(a)||A(a),Ha=(a,t,n,e,i)=>{const s=pa();return ma(a,(a,r)=>{const c=(w=ya(t,E(a)?{[n]:a}:a),o=ra.values(w),l=Na(t),o.slice(0,l));var o,l,w;d(c[0])||e(r,c[0])||(i(r,c[0]),Ta(s,r,c))}),s},Ka=JSON.stringify,Qa=JSON.parse,Va=a=>""===a?void 0:A(a)?F(a,Va):la(a)?Aa(a,Va):a,Wa=/^\d+$/,Za=pa(),at=pa(),tt=pa(),nt=(a,t,n,i,s,r,c,o={},l=0,w=[])=>{let u,v,f,E,_,h=0,O=0,T=0,I=0,P=0,U=0,j=0,k=0,J=0;const X={},Y=o.destroy;Ia(Za,w,()=>0),Ia(at,w,()=>[]),Ta(tt,w,(ha(tt,w)??0)+1);const z=pa(),[G,H,K,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!$a(a)||!$a(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!$a(a)||!$a(t),t.setContent]:b(0))(c,a,l),[W,Z,aa]=(a=>{let t;const[n,i]=(()=>{const a=[];let t=0;return[n=>(n?a.shift():null)??e+t++,t=>{Wa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=pa(),r=(a,n,i,r)=>{let c,o=!1;if(M(((a,t=[e])=>{const n=[],i=(a,e)=>e==N(t)?B(n,a):d(t[e])?S(a,a=>i(a,e+1)):M([t[e],null],t=>i(ha(a,t),e+1));return i(a,0),n})(n,i),n=>S(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],l=()=>[])=>{t??=a();const w=n(1);return Ta(s,w,[i,r,c,o,l]),ba(Sa(r,c??[e],Da),w),w},(a,t,...n)=>r(!1,a,t,n),a=>m(ha(s,a),([,t,n])=>(Sa(t,n??[e],void 0,t=>(D(t,a),g(t)?1:0)),Ta(s,a),i(a),n)),a=>m(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):d(n[c])?M(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>Ea),ta=a=>{a!=h&&(h=a,Z(z,void 0,h))},na=()=>{ha(tt,w)||ha(Za,w)||!$(ha(at,w)??[])||(Ta(Za,w),Ta(at,w),Ta(tt,w))},ea=t=>{(G&&A(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await wa()},sa=a=>C(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=h&&(await C(async()=>{ta(1),O++,await ma(()=>R(async()=>{const n=await t();A(n)?ea(n):y(n)&&a?V(a):y(n)||b(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),Ea),ca=async()=>{const a=j;j=0,a&&a==I&&!J&&(2==h?j=a:await ra())},oa=async a=>{const t=++I;let n=!0;if(await la(!0),t==I&&!J){const e=R(async()=>{const a=await i(async(a,e)=>{if(t==I&&!J)if(e||a){const t=n||2==h||!!U;P++,t&&U++,await C(async()=>{ta(1),O++,await(t?ma(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&U--,--P||ta(0)}),P||await ia()}else 2==h?j=t:await ra()});t!=I||J?y(a)||await s(a):u=a},r);await sa(e),t!=I||J||await C(()=>ra(a),()=>{n=!1})}return Ea},la=async(a=!1)=>{j=0,a||I++;const t=v,n=u;return u=void 0,await sa(C(async()=>{await t},async()=>{y(n)||await R(()=>s(n),r)})),Ea},wa=async a=>(1!=h&&await C(()=>C(async()=>{ta(2),T++,await ma(()=>R(()=>n(H,a),r))},()=>ta(0)),ca),Ea),ya=async()=>{const t=++k;return await da(!0),t!=k||J||(await wa(),t!=k||J||(f=a.addDidFinishTransactionListener(()=>{if(t==k&&!J){const a=K();Q(a)&&R(()=>wa(a))}}))),Ea},da=async(t=!1)=>{t||k++;const n=f;return f=void 0,y(n)||a.delListener(n),Ea},va=()=>!y(f),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await C(()=>t(),async()=>{await n()}),Ea},ma=async(...a)=>{let t,n=!1;const e=p(e=>$(a)?e():B(ha(at,w),...F(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;_=p(t=>a=t),await C(async()=>{try{await R(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{_=void 0,a()})},c?e:void 0,X]})));if(await(async()=>{if(!ha(Za,w)){Ta(Za,w,1);const a=ha(at,w);let t=0;await C(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{q(a,t),Ta(Za,w,0),na()})}})(),await e,n)throw t;return Ea},Ea={load:ra,startAutoLoad:oa,stopAutoLoad:la,isAutoLoading:()=>!y(u),save:wa,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,la]:[oa,ya,la,da],r=n(a),c=t?k:I;await r;const o=e(a),l=t?I:k;try{await o}catch(a){throw l==(t?I:k)&&await L(s),c==(t?k:I)&&await L(i),a}return Ea},stopAutoPersisting:fa,getStatus:()=>h,addStatusListener:a=>W(a,z),delListener:t=>(aa(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:O,saves:T}),...o,destroy:async()=>(y(E)&&(J=1,E=(async()=>{const a=ha(at,w),t=x(a,([,a,t])=>t!=X||(a?.(),!1)),n=_;q(a),B(a,...t),await C(()=>C(()=>C(fa,()=>n),()=>Y?.()),()=>{const a=(ha(tt,w)??1)-1;Ta(tt,w,a||void 0),na()})})()),await E,Ea)};return ua(Ea)},et=new w.TextEncoder,it=(a,t,e,s,c,o=st,l,w,u)=>{const d=pa(),v=pa();let f=a;return[async()=>{I(d),I(v),M(await e(f,t),({tn:a,cn:t,uq:n})=>{ba(Ia(d,a,Da),t),n&&ba(Ia(v,a,Da),t)})},async(a,t,n,e)=>{const i=y(e)?void 0:Da(e);return((a,t)=>O(ha(d,a),t))(a,t)?va(x(F(await f(H+ta(a)+ia(a,n)),a=>{const n=a[t],e=w?Aa(fa(a,t),w):fa(a,t);return[n,y(i)?e:va(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>y(i)||O(i,a))(a)))]}),a=>!y(a[0])&&!$a(a[1]))):{}},async(a,t,e,w,u,m=!1,E=r,A)=>{const N=y(A)?void 0:Da(A),_=a=>y(N)||O(N,a),p=Da();ma(e??{},a=>M(x(wa(a??{}),_),a=>ba(p,a)));const g=T(p);if(y(N)&&!m&&u&&E==r&&$(g)&&O(d,a))return await f("DROP "+X+ta(a)),Ta(d,a),void Ta(v,a);const I=ha(d,a),S=Da(x(T(I),a=>a==t||_(a)));if(!$(g))if(O(d,a)){if(await h(F([t,...g],async t=>{D(S,t)||(await f(Y+ta(a)+"ADD"+ta(t)+s),ba(I,t))})),o==st&&!O(ha(v,a),t)){const e=n+"_pk_"+(a=>{let t=2166136261;return M(et.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ka([a,t]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+ta(e)+"ON"+ta(a)+`(${ta(t)})`),ba(Ia(v,a,Da),t)}}else await f(Z+ta(a)+`(${ta(t)}${s} PRIMARY KEY${P(F(g,a=>i+ta(a)+s))});`),Ta(d,a,Da([t,...g])),Ta(v,a,Da([t]));if(await h([...!m&&w?F(T(S),async n=>{n!=t&&(await f(Y+ta(a)+"DROP"+ta(n)),D(I,n))}):[]]),m)y(e)?y(N)&&await f(G+ta(a)+ia(a,E)):await h(Ea(e,async(n,e)=>{if(y(n))await f(G+ta(a)+ia(a,E)+`AND(${ta(t)}=${c([1])})`,[e]);else if(!$(g)){const i=x(wa(n),_);$(i)||await o(f,a,t,i,{[e]:F(i,a=>l?l(n[a]):n[a])},c,I)}}));else if($(g))y(N)&&O(d,a)&&await f(G+ta(a)+ia(a,E));else{const n=x(T(ha(d,a)),a=>a!=t&&_(a)),i=va(),s=[];ma(e??{},(a,t)=>{da(i,t,F(n,t=>l?l(a?.[t]):a?.[t])),B(s,t)}),await o(f,a,t,n,i,c,I),await f(G+ta(a)+ia(a,E)+`AND${ta(t)}NOT IN(${ea(s,c)})`,s)}},async t=>{if(u)return await u(async a=>{const n=f;return f=a,await C(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await R(()=>a("ROLLBACK")),t}}]},st=async(a,t,n,e,s,r)=>{const c=[1];await a("INSERT INTO"+ta(t)+"("+((...a)=>P(F(a,ta),i))(n,...e)+")VALUES"+P(Ea(s,a=>"("+r(c)+","+ea(a,r,c)+")"),i)+"ON CONFLICT("+ta(n)+")DO UPDATE SET"+P(F(e,a=>ta(a)+"=excluded."+ta(a)),i),Ea(s,(a,t)=>[t,...F(a,a=>a??null)]).flat())},rt=(a,t,n,e,i,s,r,[c,o,l],w,u,d,v,f,m,E,A,N,$)=>{const[_,p,h,O]=it(t,w,u,f,m,E,void 0,void 0,$);return nt(a,()=>O(async()=>{return await _(),a=(await p(c,o))[U]?.[l]??"null",Va(Qa(a));var a}),a=>O(async()=>{var t;await _(),await h(c,o,{[U]:{[l]:(t=a()??null,Ka(t,(a,t)=>y(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},ct=(a,t,n,e,i,s,r,[c,o,[l,w,u,d,v]],f,m,E,A,N,$,_,p,O,g)=>{const[T,I,S,D]=it(t,f,m,N,$,_,p,O,g),b=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,l;t&&(o=a,l=c,!ra.hasOwn(o,l))||await S(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>va(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(F(t,t=>[t,a[t]]),([,a])=>!y(a))),L=async(a,t)=>w?await S(u,j,{[U]:y(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return nt(a,()=>D(async()=>{await T();const a=await(async()=>va(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!$a(a[1]))))(),t=await(async()=>l?(await I(u,j,void 0,d))[U]:{})();return $a(a)&&y(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await T(),y(t)){const[t,n]=a();await b(t),await L(n)}else await b(t[0],!0),await L(t[1],!0)}),n,e,i,r,{[A]:()=>E,destroy:s},0,E)},ot=(a,t,i,s,c,l,w,d,f,m,A="getDb",N,$)=>{let _,p,h;const g=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,l),[I,S,D,R]=(a=>{const t=(a=>ya(Xa,E(a)?{[Ma]:a}:a??{}))(a),e=t[xa];if(t.mode==Ca){const a=t[Ma]??n;return[1,e,[a,t[Pa]??j,t[Fa]??La],Da(a)]}const{tables:{load:i={},save:s={}}={},values:c={}}=t,o=ya(Ya,c),{load:l,save:w}=o,u=[Ga(l),Ga(w),o[Ua],za(l),za(w)],y=u[2],d=Da(y),v=Da(y),f=Ha(i,{[Ba]:null,[qa]:j,[Ja]:r},Ba,a=>O(v,a),a=>ba(d,a)),m=Ha(s,{[Ua]:null,[qa]:j,[ja]:0,[ka]:0,[Ja]:null},Ua,(a,t)=>O(v,t),(a,t)=>ba(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??r),[0,e,[f,m,u],d]})(t);return!I&&a.isMergeable()&&b(0),(I?rt:ct)(a,g,a=>{let t,n,e=1,i=0,r=0;const l=async(t=!0)=>{const[{d:n,s:i,c:s}]=await g(k+` ${Q} d,${V} s,TOTAL_CHANGES() c FROM ${K}${Q} JOIN ${K}${V}`);if(e&&(n!=_||i!=p||s!=h)){const c=t&&!r&&!u(_);_=n,p=i,h=s,c&&e&&await a()}},d=()=>{y(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(s=!1)=>{if(n)return n;const c=C(()=>L(async()=>{for(i?s&&await l():(await l(!1),i=1);e&&r;)r=0,await l(!1),e&&(await a(),await l())},w),()=>{n==c&&(n=void 0),e&&(r?v():e&&y(t)&&(t=setInterval(()=>v(!0),1e3*S)))});return n=c,c},f=s(a=>{e&&O(R,a)&&(r=1,d(),o.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,r=0,d(),await C(async()=>await n,async()=>{_=p=h=null,await c(f)})})},a=>a(),w,d,f,D,T(R),async(a,t)=>await a(k+` t.name tn,c.name cn,c.pk OR EXISTS(${k} 1 FROM ${K}index_list(t.name)i,${K}index_info(i.name)ii ${J} i."unique"=1 AND ii.name=c.name AND(${k} count(*) FROM ${K}index_info(i.name))=1)uq FROM ${W}list()t,${W}info(t.name)c ${J} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ea(t,na)})ORDER BY t.name,c.name`,t),m,A,e,na,N,a=>v(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},lt=(t,n,e,i,s)=>ot(t,e,async(a,t=[])=>await n.getAllAsync(a,t),t=>a(({tableName:a})=>t(a)),a=>a.remove(),i,s,_,3,n);export{lt as createExpoSqlitePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=
|
|
1
|
+
const t="t",a="v",e=Promise,n=t=>(a,e,n)=>t(a)?n?.():e(a),s=globalThis.window,r=t=>null==t,o=t=>void 0===t,i=t=>null===t,c=n(r),l=n(o),w=t=>Array.isArray(t),y=t=>t.length,u=t=>0==y(t),d=t=>new e(t),v=async t=>e.all(t),f=(t,a)=>t.forEach(a),g=(t,a)=>t.map(a),h=(t,a=y(t))=>t.splice(0,a),p=(t,...a)=>t.push(...a),b=(t,a)=>Error("tinybase:"+t+(o(a)?"":":"+a)),_=(t,a)=>{throw b(t,a)},A=async(t,a)=>{try{return await t()}catch(t){a?.(t)}},S=(t,a)=>A(t,t=>{A(()=>a?.(t))}),m=(t,a)=>{try{return t()}catch(t){a?.(t)}},L=async(t,a)=>{try{return await t()}finally{await a()}},k=Object,P=t=>k.getPrototypeOf(t),D=k.entries,O=k.keys,M=k.freeze,j=(t,a)=>k.hasOwn(t,a),x=t=>(t=>!r(t)&&c(P(t),t=>t==k.prototype||r(P(t)),()=>!0))(t)&&0==(t=>y(O(t)))(t),E=JSON.stringify,z=t=>E(t,(t,a)=>o(a)?"":a),B=t=>o(t)||0==(t=>t?.size??0)(t),C=(t,a)=>t?.forEach(a),I=(t,a)=>t?.delete(a),N=Map,T=t=>new N(t),F=(t,a)=>t?.get(a),J=(t,a,e)=>o(e)?(I(t,a),t):t?.set(a,e),K=(t,a,e,n)=>{let s=F(t,a);var r,o;return r=t,o=a,r?.has(o)?n?.(s):J(t,a,s=e()),s},$=(t,a,e,n,s=0)=>l((e?K:F)(t,a[s],s>y(a)-2?e:T),r=>{if(s>y(a)-2)return n?.(r)&&J(t,a[s]),r;const o=$(r,a,e,n,s+1);return B(r)&&J(t,a[s]),o}),q=/^\d+$/,G=t=>new Set(w(t)||o(t)?t:[t]),H=T(),Q=T(),R=T(),U=(t,a,e,n,s,r,c,v={},b=0,k=[])=>{let P,D,O,j,E,z=0,N=0,U=0,V=0,W=0,X=0,Y=0,Z=0,tt=0;const at={},et=v.destroy;K(H,k,()=>0),K(Q,k,()=>[]),J(R,k,(F(R,k)??0)+1);const nt=T(),[st,rt,ot,it,ct]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.__[1],()=>a.__[2](!e),([[t],[a]])=>!x(t)||!x(a),a.setDefaultContent]:2!=t?[0,a._[7],a._[8],([t,a])=>!x(t)||!x(a),a.setContent]:_(0))(c,t,b),[lt,wt,yt]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?t.shift():null)??""+a++,a=>{q.test(a)&&y(t)<1e3&&p(t,a)}]})(),n=T(),s=(a,e,s,r)=>{let o,c=!1;if(f(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?p(e,t):i(a[s])?C(t,t=>n(t,s+1)):f([a[s],null],a=>n(F(t,a),s+1));return n(t,0),e})(e,s),e=>C(e,e=>{const i=()=>F(n,e)[0](t,...s??[],...r);a?m(i,t=>{c||(o=t),c=!0}):i()})),c)throw o};return[(e,s,r,o=[],i=()=>[])=>{t??=Dt;const c=a(1);var l,w;return J(n,c,[e,s,r,o,i]),l=$(s,r??[""],G),w=c,l?.add(w),c},(t,a,...e)=>s(!1,t,a,e),t=>l(F(n,t),([,a,s])=>($(a,s??[""],void 0,a=>(I(a,t),B(a)?1:0)),J(n,t),e(t),s)),a=>l(F(n,a),([a,,e=[],n,s])=>{const r=(...o)=>{const c=y(o);c==y(e)?a(t,...o,...s(o)):i(e[c])?f(n[c]?.(...o)??[],t=>r(...o,t)):r(...o,e[c])};r()}),(t,a,...e)=>s(!0,t,a,e)]})(),ut=t=>{t!=z&&(z=t,wt(nt,void 0,z))},dt=()=>{F(R,k)||F(H,k)||!u(F(Q,k)??[])||(J(H,k),J(Q,k),J(R,k))},vt=a=>{(st&&w(a?.[0])?1===a?.[2]?t.__[4]:t.__[3]:1===a?.[2]?t._[10]:t._[9])(a)},ft=async()=>{Lt()&&t.__?.[0]?.()&&await At()},gt=t=>L(()=>D=t,()=>{D==t&&(D=void 0)}),ht=async t=>(2!=z&&(await L(async()=>{ut(1),N++,await Pt(()=>A(async()=>{const e=await a();w(e)?vt(e):o(e)&&t?ct(t):o(e)||_(1,e)},a=>{r?.(a),t&&ct(t)}))},()=>ut(0)),await ft()),Dt),pt=async()=>{const t=Y;Y=0,t&&t==V&&!tt&&(2==z?Y=t:await ht())},bt=async t=>{const a=++V;let e=!0;if(await _t(!0),a==V&&!tt){const i=A(async()=>{const t=await n(async(t,n)=>{if(a==V&&!tt)if(n||t){const a=e||2==z||!!X;W++,a&&X++,await L(async()=>{ut(1),N++,await(a?Pt(()=>vt(n??t)):(()=>{try{return vt(n??t)}finally{ut(0)}})())},()=>{a&&X--,--W||ut(0)}),W||await ft()}else 2==z?Y=a:await ht()});a!=V||tt?o(t)||await s(t):P=t},r);await gt(i),a!=V||tt||await L(()=>ht(t),()=>{e=!1})}return Dt},_t=async(t=!1)=>{Y=0,t||V++;const a=D,e=P;return P=void 0,await gt(L(async()=>{await a},async()=>{o(e)||await A(()=>s(e),r)})),Dt},At=async t=>(1!=z&&await L(()=>L(async()=>{ut(2),U++,await Pt(()=>A(()=>e(rt,t),r))},()=>ut(0)),pt),Dt),St=async()=>{const a=++Z;return await mt(!0),a!=Z||tt||(await At(),a!=Z||tt||(O=t.addDidFinishTransactionListener(()=>{if(a==Z&&!tt){const t=ot();it(t)&&A(()=>At(t))}}))),Dt},mt=async(a=!1)=>{a||Z++;const e=O;return O=void 0,o(e)||t.delListener(e),Dt},Lt=()=>!o(O),kt=async(t=!1)=>{const[a,e]=t?[mt,_t]:[_t,mt];return await L(()=>a(),async()=>{await e()}),Dt},Pt=async(...t)=>{let a,e=!1;const n=d(n=>u(t)?n():p(F(Q,k),...g(t,(s,o)=>{const i=o==y(t)-1;return[async()=>{let t;E=d(a=>t=a),await L(async()=>{try{await A(s,r)}catch(t){e||(e=!0,a=t)}i&&n()},()=>{E=void 0,t()})},i?n:void 0,at]})));if(await(async()=>{if(!F(H,k)){J(H,k,1);const t=F(Q,k);let a=0;await L(async()=>{for(;a<y(t);){const e=t[a++];e[2]=void 0,await e[0]()}},()=>{h(t,a),J(H,k,0),dt()})}})(),await n,e)throw a;return Dt},Dt={load:ht,startAutoLoad:bt,stopAutoLoad:_t,isAutoLoading:()=>!o(P),save:At,startAutoSave:St,stopAutoSave:mt,isAutoSaving:Lt,startAutoPersisting:async(t,a=!1)=>{const[e,n,s,r]=a?[St,bt,mt,_t]:[bt,St,_t,mt],o=e(t),i=a?Z:V;await o;const c=n(t),l=a?V:Z;try{await c}catch(t){throw l==(a?V:Z)&&await S(r),i==(a?Z:V)&&await S(s),t}return Dt},stopAutoPersisting:kt,getStatus:()=>z,addStatusListener:t=>lt(t,nt),delListener:a=>(yt(a),t),schedule:Pt,getStore:()=>t,getStats:()=>({loads:N,saves:U}),...v,destroy:async()=>(o(j)&&(tt=1,j=(async()=>{const t=F(Q,k),a=(e=([,t,a])=>a!=at||(t?.(),!1),t.filter(e));var e;const n=E;h(t),p(t,...a),await L(()=>L(()=>L(kt,()=>n),()=>et?.()),()=>{const t=(F(R,k)??1)-1;J(R,k,t||void 0),dt()})})()),await j,Dt)};return M(Dt)},V=[t,"v"],W=["m"],X=[...V,"m"],Y={keyPath:"k"},Z=async(t,a)=>{const e=(a=>g(D(a),([a,e])=>tt(t,"put",{k:a,v:e})))(a);f(await tt(t,"getAllKeys"),n=>j(a,n)?0:p(e,tt(t,"delete",n))),await v(e)},tt=async(t,a,e)=>d((n,s)=>{const r=t[a](e);r.onsuccess=()=>n(r.result),r.onerror=()=>s(b(11,a))}),at=(e,n,r=1,o)=>{const i=async(t,a,e=[],r=0,o="readonly")=>d((i,c)=>{const l=(s?s.indexedDB:indexedDB).open(n,r?3:void 0);let w=0;l.onupgradeneeded=()=>r&&f(X,t=>m(()=>l.result.createObjectStore(t,Y))),l.onblocked=()=>{w=1,c(b(12))},l.onsuccess=()=>w?l.result.close():A(async()=>{l.result.onversionchange=()=>l.result.close();const n=l.result.transaction(t,o),s=d((t,a)=>{n.oncomplete=()=>t(),n.onerror=n.onabort=()=>a(b(11))}),[r]=await v([v(g(t,(t,s)=>a(n.objectStore(t),e[s]))),s]);l.result.close(),i(r)},t=>{l.result.close(),c(t)}),l.onerror=()=>c(b(12))}),c=async t=>((t=[])=>{const a=k.create(null);return f(t,([t,e])=>((t,a,e)=>(k.defineProperty(t,a,{configurable:!0,enumerable:!0,value:e,writable:!0}),e))(a,t,e)),a})(g(await tt(t,"getAll"),({k:t,v:a})=>[t,a])),l=async()=>{if(!e.isMergeable())return await i(V,c);const[a]=await i(W,c);return j(a,t)?[a[t],a.v]:void 0};return U(e,l,async n=>{const s=n();await(e.isMergeable()?i(W,(t,a)=>Z(t,a),[{[t]:s[0],[a]:s[1]}],1,"readwrite"):i(V,(t,a)=>Z(t,a),s,1,"readwrite"))},t=>l().then(a=>{let e,n=1,s=z(a);const i=setInterval(()=>{if(n&&!e){const a=L(()=>S(async()=>{const a=await l();if(n){const e=z(a);e!=s&&(s=e,await t(a))}},o),()=>{e==a&&(e=void 0)});e=a}},1e3*r);return async()=>{n=0,(t=>{clearInterval(t)})(i),await e}}),async t=>await t(),o,3,{getDbName:()=>n})};export{at as createIndexedDbPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=
|
|
1
|
+
const t="t",a="v",e=Promise,n=t=>(a,e,n)=>t(a)?n?.():e(a),s=globalThis.window,r=t=>null==t,o=t=>void 0===t,i=t=>null===t,c=n(r),l=n(o),w=t=>Array.isArray(t),y=t=>t.length,u=t=>0==y(t),d=t=>new e(t),v=async t=>e.all(t),f=(t,a)=>t.forEach(a),g=(t,a)=>t.map(a),h=(t,a=y(t))=>t.splice(0,a),p=(t,...a)=>t.push(...a),b=(t,a)=>Error("tinybase:"+t+(o(a)?"":":"+a)),_=(t,a)=>{throw b(t,a)},A=async(t,a)=>{try{return await t()}catch(t){a?.(t)}},S=(t,a)=>A(t,t=>{A(()=>a?.(t))}),m=(t,a)=>{try{return t()}catch(t){a?.(t)}},L=async(t,a)=>{try{return await t()}finally{await a()}},k=Object,P=t=>k.getPrototypeOf(t),D=k.entries,O=k.keys,M=k.freeze,j=(t,a)=>k.hasOwn(t,a),x=t=>(t=>!r(t)&&c(P(t),t=>t==k.prototype||r(P(t)),()=>!0))(t)&&0==(t=>y(O(t)))(t),E=JSON.stringify,z=t=>E(t,(t,a)=>o(a)?"":a),B=t=>o(t)||0==(t=>t?.size??0)(t),C=(t,a)=>t?.forEach(a),I=(t,a)=>t?.delete(a),N=Map,T=t=>new N(t),F=(t,a)=>t?.get(a),J=(t,a,e)=>o(e)?(I(t,a),t):t?.set(a,e),K=(t,a,e,n)=>{let s=F(t,a);var r,o;return r=t,o=a,r?.has(o)?n?.(s):J(t,a,s=e()),s},$=(t,a,e,n,s=0)=>l((e?K:F)(t,a[s],s>y(a)-2?e:T),r=>{if(s>y(a)-2)return n?.(r)&&J(t,a[s]),r;const o=$(r,a,e,n,s+1);return B(r)&&J(t,a[s]),o}),q=/^\d+$/,G=t=>new Set(w(t)||o(t)?t:[t]),H=T(),Q=T(),R=T(),U=(t,a,e,n,s,r,c,v={},b=0,k=[])=>{let P,D,O,j,E,z=0,N=0,U=0,V=0,W=0,X=0,Y=0,Z=0,tt=0;const at={},et=v.destroy;K(H,k,()=>0),K(Q,k,()=>[]),J(R,k,(F(R,k)??0)+1);const nt=T(),[st,rt,ot,it,ct]=((t=1,a,e)=>1!=t&&a.isMergeable()?[1,a.__[1],()=>a.__[2](!e),([[t],[a]])=>!x(t)||!x(a),a.setDefaultContent]:2!=t?[0,a._[7],a._[8],([t,a])=>!x(t)||!x(a),a.setContent]:_(0))(c,t,b),[lt,wt,yt]=(()=>{let t;const[a,e]=(()=>{const t=[];let a=0;return[e=>(e?t.shift():null)??""+a++,a=>{q.test(a)&&y(t)<1e3&&p(t,a)}]})(),n=T(),s=(a,e,s,r)=>{let o,c=!1;if(f(((t,a=[""])=>{const e=[],n=(t,s)=>s==y(a)?p(e,t):i(a[s])?C(t,t=>n(t,s+1)):f([a[s],null],a=>n(F(t,a),s+1));return n(t,0),e})(e,s),e=>C(e,e=>{const i=()=>F(n,e)[0](t,...s??[],...r);a?m(i,t=>{c||(o=t),c=!0}):i()})),c)throw o};return[(e,s,r,o=[],i=()=>[])=>{t??=Dt;const c=a(1);var l,w;return J(n,c,[e,s,r,o,i]),l=$(s,r??[""],G),w=c,l?.add(w),c},(t,a,...e)=>s(!1,t,a,e),t=>l(F(n,t),([,a,s])=>($(a,s??[""],void 0,a=>(I(a,t),B(a)?1:0)),J(n,t),e(t),s)),a=>l(F(n,a),([a,,e=[],n,s])=>{const r=(...o)=>{const c=y(o);c==y(e)?a(t,...o,...s(o)):i(e[c])?f(n[c]?.(...o)??[],t=>r(...o,t)):r(...o,e[c])};r()}),(t,a,...e)=>s(!0,t,a,e)]})(),ut=t=>{t!=z&&(z=t,wt(nt,void 0,z))},dt=()=>{F(R,k)||F(H,k)||!u(F(Q,k)??[])||(J(H,k),J(Q,k),J(R,k))},vt=a=>{(st&&w(a?.[0])?1===a?.[2]?t.__[4]:t.__[3]:1===a?.[2]?t._[10]:t._[9])(a)},ft=async()=>{Lt()&&t.__?.[0]?.()&&await At()},gt=t=>L(()=>D=t,()=>{D==t&&(D=void 0)}),ht=async t=>(2!=z&&(await L(async()=>{ut(1),N++,await Pt(()=>A(async()=>{const e=await a();w(e)?vt(e):o(e)&&t?ct(t):o(e)||_(1,e)},a=>{r?.(a),t&&ct(t)}))},()=>ut(0)),await ft()),Dt),pt=async()=>{const t=Y;Y=0,t&&t==V&&!tt&&(2==z?Y=t:await ht())},bt=async t=>{const a=++V;let e=!0;if(await _t(!0),a==V&&!tt){const i=A(async()=>{const t=await n(async(t,n)=>{if(a==V&&!tt)if(n||t){const a=e||2==z||!!X;W++,a&&X++,await L(async()=>{ut(1),N++,await(a?Pt(()=>vt(n??t)):(()=>{try{return vt(n??t)}finally{ut(0)}})())},()=>{a&&X--,--W||ut(0)}),W||await ft()}else 2==z?Y=a:await ht()});a!=V||tt?o(t)||await s(t):P=t},r);await gt(i),a!=V||tt||await L(()=>ht(t),()=>{e=!1})}return Dt},_t=async(t=!1)=>{Y=0,t||V++;const a=D,e=P;return P=void 0,await gt(L(async()=>{await a},async()=>{o(e)||await A(()=>s(e),r)})),Dt},At=async t=>(1!=z&&await L(()=>L(async()=>{ut(2),U++,await Pt(()=>A(()=>e(rt,t),r))},()=>ut(0)),pt),Dt),St=async()=>{const a=++Z;return await mt(!0),a!=Z||tt||(await At(),a!=Z||tt||(O=t.addDidFinishTransactionListener(()=>{if(a==Z&&!tt){const t=ot();it(t)&&A(()=>At(t))}}))),Dt},mt=async(a=!1)=>{a||Z++;const e=O;return O=void 0,o(e)||t.delListener(e),Dt},Lt=()=>!o(O),kt=async(t=!1)=>{const[a,e]=t?[mt,_t]:[_t,mt];return await L(()=>a(),async()=>{await e()}),Dt},Pt=async(...t)=>{let a,e=!1;const n=d(n=>u(t)?n():p(F(Q,k),...g(t,(s,o)=>{const i=o==y(t)-1;return[async()=>{let t;E=d(a=>t=a),await L(async()=>{try{await A(s,r)}catch(t){e||(e=!0,a=t)}i&&n()},()=>{E=void 0,t()})},i?n:void 0,at]})));if(await(async()=>{if(!F(H,k)){J(H,k,1);const t=F(Q,k);let a=0;await L(async()=>{for(;a<y(t);){const e=t[a++];e[2]=void 0,await e[0]()}},()=>{h(t,a),J(H,k,0),dt()})}})(),await n,e)throw a;return Dt},Dt={load:ht,startAutoLoad:bt,stopAutoLoad:_t,isAutoLoading:()=>!o(P),save:At,startAutoSave:St,stopAutoSave:mt,isAutoSaving:Lt,startAutoPersisting:async(t,a=!1)=>{const[e,n,s,r]=a?[St,bt,mt,_t]:[bt,St,_t,mt],o=e(t),i=a?Z:V;await o;const c=n(t),l=a?V:Z;try{await c}catch(t){throw l==(a?V:Z)&&await S(r),i==(a?Z:V)&&await S(s),t}return Dt},stopAutoPersisting:kt,getStatus:()=>z,addStatusListener:t=>lt(t,nt),delListener:a=>(yt(a),t),schedule:Pt,getStore:()=>t,getStats:()=>({loads:N,saves:U}),...v,destroy:async()=>(o(j)&&(tt=1,j=(async()=>{const t=F(Q,k),a=(e=([,t,a])=>a!=at||(t?.(),!1),t.filter(e));var e;const n=E;h(t),p(t,...a),await L(()=>L(()=>L(kt,()=>n),()=>et?.()),()=>{const t=(F(R,k)??1)-1;J(R,k,t||void 0),dt()})})()),await j,Dt)};return M(Dt)},V=[t,"v"],W=["m"],X=[...V,"m"],Y={keyPath:"k"},Z=async(t,a)=>{const e=(a=>g(D(a),([a,e])=>tt(t,"put",{k:a,v:e})))(a);f(await tt(t,"getAllKeys"),n=>j(a,n)?0:p(e,tt(t,"delete",n))),await v(e)},tt=async(t,a,e)=>d((n,s)=>{const r=t[a](e);r.onsuccess=()=>n(r.result),r.onerror=()=>s(b(11,a))}),at=(e,n,r=1,o)=>{const i=async(t,a,e=[],r=0,o="readonly")=>d((i,c)=>{const l=(s?s.indexedDB:indexedDB).open(n,r?3:void 0);let w=0;l.onupgradeneeded=()=>r&&f(X,t=>m(()=>l.result.createObjectStore(t,Y))),l.onblocked=()=>{w=1,c(b(12))},l.onsuccess=()=>w?l.result.close():A(async()=>{l.result.onversionchange=()=>l.result.close();const n=l.result.transaction(t,o),s=d((t,a)=>{n.oncomplete=()=>t(),n.onerror=n.onabort=()=>a(b(11))}),[r]=await v([v(g(t,(t,s)=>a(n.objectStore(t),e[s]))),s]);l.result.close(),i(r)},t=>{l.result.close(),c(t)}),l.onerror=()=>c(b(12))}),c=async t=>((t=[])=>{const a=k.create(null);return f(t,([t,e])=>((t,a,e)=>(k.defineProperty(t,a,{configurable:!0,enumerable:!0,value:e,writable:!0}),e))(a,t,e)),a})(g(await tt(t,"getAll"),({k:t,v:a})=>[t,a])),l=async()=>{if(!e.isMergeable())return await i(V,c);const[a]=await i(W,c);return j(a,t)?[a[t],a.v]:void 0};return U(e,l,async n=>{const s=n();await(e.isMergeable()?i(W,(t,a)=>Z(t,a),[{[t]:s[0],[a]:s[1]}],1,"readwrite"):i(V,(t,a)=>Z(t,a),s,1,"readwrite"))},t=>l().then(a=>{let e,n=1,s=z(a);const i=setInterval(()=>{if(n&&!e){const a=L(()=>S(async()=>{const a=await l();if(n){const e=z(a);e!=s&&(s=e,await t(a))}},o),()=>{e==a&&(e=void 0)});e=a}},1e3*r);return async()=>{n=0,(t=>{clearInterval(t)})(i),await e}}),async t=>await t(),o,3,{getDbName:()=>n})};export{at as createIndexedDbPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),A=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=(a,t=[1])=>M(P(a,()=>"$"+t[0]++),e),na=(a,t=s)=>j+`(${ea(t,aa(a))})`,ea=(a,t)=>r(a,Z,t),ia=Object,sa=a=>ia.getPrototypeOf(a),ra=ia.entries,ca=a=>!l(a)&&v(sa(a),a=>a==ia.prototype||l(sa(a)),()=>!0),oa=ia.keys,wa=ia.freeze,la=(...a)=>ia.assign(ia.create(null),...a),ua=(a,t,n)=>(ia.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),ya=(a=[])=>{const t=ia.create(null);return C(a,([a,n])=>ua(t,a,n)),t},da=(a,t)=>(delete a[t],a),va=(a,t)=>C(oa(a),n=>t(a[n],n)),fa=(a,t)=>P(ra(a),([a,n])=>t(n,a)),Ea=(a,t)=>{const n=ya();return va(a,(a,e)=>ua(n,e,t(a,e))),n},ma=a=>N(oa(a)),Na=a=>ca(a)&&0==ma(a),$a=Map,Aa=a=>new $a(a),_a=(a,t)=>a?.get(t),ha=(a,t)=>R(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ha(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),pa=(a,t,n,e)=>{let i=_a(a,t);return I(a,t)?e?.(i):ga(a,t,i=n()),i},Ta=(a,t,n,e,i=0)=>f((n?pa:_a)(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=Ta(s,t,n,e,i+1);return D(s)&&ga(a,t[i]),r}),Ia=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),Sa="ColumnName",La="store",Ra="json",ba=La+"TableName",Ca=La+"Id"+Sa,Ma=La+Sa,Pa="autoLoadIntervalSeconds",xa="rowId"+Sa,Fa="tableId",Ba="tableName",qa="deleteEmptyColumns",ka="deleteEmptyTable",Ua="condition",ja={mode:Ra,[Pa]:1},Ga={load:0,save:0,[Ba]:t+"_values"},Ja=a=>m(a)?a:void 0,Ka=a=>d(a)||m(a),Xa=(a,t,n,e,i)=>{const s=Aa();return va(a,(a,r)=>{const c=(l=la(t,E(a)?{[n]:a}:a),o=ia.values(l),w=ma(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),ga(s,r,c))}),s},Ya=JSON.stringify,za=JSON.parse,Ha=a=>""===a?void 0:m(a)?P(a,Ha):ca(a)?Ea(a,Ha):a,Qa=/^\d+$/,Va=Aa(),Wa=Aa(),Za=Aa(),at=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,A,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;pa(Va,l,()=>0),pa(Wa,l,()=>[]),ga(Za,l,(_a(Za,l)??0)+1);const X=Aa(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Na(a)||!Na(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Na(a)||!Na(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Qa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(_a(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>_a(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return ga(s,l,[i,r,c,o,w]),Da(Ta(r,c??[n],Ia),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(_a(s,a),([,t,e])=>(Ta(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),ga(s,a),i(a),e)),a=>f(_a(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{_a(Za,l)||_a(Va,l)||!$(_a(Wa,l)??[])||(ga(Va,l),ga(Wa,l),ga(Za,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await la(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>$(a)?e():B(_a(Wa,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!_a(Va,l)){ga(Va,l,1);const a=_a(Wa,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),ga(Va,l,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?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u(A)&&(G=1,A=(async()=>{const a=_a(Wa,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(_a(Za,l)??1)-1;ga(Za,l,a||void 0),na()})})()),await A,ma)};return wa(ma)},tt=new w.TextEncoder,nt=(a,n,i,r,c=et,o,w,l)=>{const y=Aa(),d=Aa();let v=a;return[async()=>{L(y),L(d),C(await i(v,n),({tn:a,cn:t,uq:n})=>{Da(pa(y,a,Ia),t),n&&Da(pa(d,a,Ia),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Ia(e);return((a,t)=>I(_a(y,a),t))(a,t)?ya(x(P(await v(Y+aa(a)+na(a,n)),a=>{const n=a[t],e=w?Ea(da(a,t),w):da(a,t);return[n,u(i)?e:ya(x(fa(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Na(a[1]))):{}},async(a,n,i,w,l,f=!1,E=s,m)=>{const N=u(m)?void 0:Ia(m),A=a=>u(N)||I(N,a),_=Ia();va(i??{},a=>C(x(oa(a??{}),A),a=>Da(_,a)));const O=S(_);if(u(N)&&!f&&l&&E==s&&$(O)&&I(y,a))return await v("DROP "+G+aa(a)),ga(y,a),void ga(d,a);const g=_a(y,a),p=Ia(x(S(g),a=>a==n||A(a)));if(!$(O))if(I(y,a)){if(await h(P([n,...O],async t=>{b(p,t)||(await v(J+aa(a)+"ADD"+aa(t)+r),Da(g,t))})),c==et&&!I(_a(d,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(tt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ya([a,n]));await v("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Da(pa(d,a,Ia),n)}}else await v(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(O,a=>e+aa(a)+r))});`),ga(y,a,Ia([n,...O])),ga(d,a,Ia([n]));if(await h([...!f&&w?P(S(p),async t=>{t!=n&&(await v(J+aa(a)+"DROP"+aa(t)),b(g,t))}):[]]),f)u(i)?u(N)&&await v(X+aa(a)+na(a,E)):await h(fa(i,async(t,e)=>{if(u(t))await v(X+aa(a)+na(a,E)+`AND(${aa(n)}=$1)`,[e]);else if(!$(O)){const i=x(oa(t),A);$(i)||await c(v,a,n,i,{[e]:P(i,a=>o?o(t[a]):t[a])},g)}}));else if($(O))u(N)&&I(y,a)&&await v(X+aa(a)+na(a,E));else{const t=x(S(_a(y,a)),a=>a!=n&&A(a)),e=ya(),s=[];va(i??{},(a,n)=>{ua(e,n,P(t,t=>o?o(a?.[t]):a?.[t])),B(s,n)}),await c(v,a,n,t,e,g),await v(X+aa(a)+na(a,E)+`AND${aa(n)}NOT IN(${ta(s)})`,s)}},async t=>{if(l)return await l(async a=>{const n=v;return v=a,await T(t,()=>{v=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},et=async(a,t,n,i,s)=>{const r=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(fa(s,a=>"($"+r[0]+++","+ta(a,r)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),fa(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},it=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,$)=>{const[A,_,h,O]=nt(t,l,y,f,E,void 0,void 0,$);return at(a,()=>O(async()=>{return await A(),a=(await _(c,o))[q]?.[w]??"null",Ha(za(a));var a}),a=>O(async()=>{var t;await A(),await h(c,o,{[q]:{[w]:(t=a()??null,Ya(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},st=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,$,A,_,O,g)=>{const[p,T,I,D]=nt(t,f,E,$,A,_,O,g),S=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!ia.hasOwn(o,w))||await I(n,e,a[c],i,s,t,r)})),L=(a,t,n)=>ya(1==n?x(fa(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),R=async(a,t)=>l?await I(y,k,{[q]:u(v)?a:L(a,v,t)},!0,!0,t,void 0,v):null;return at(a,()=>D(async()=>{await p();const a=await(async()=>ya(x(await h(Oa(c,async([a,t,n],e)=>[a,await T(e,t,n)])),a=>!Na(a[1]))))(),t=await(async()=>w?(await T(y,k,void 0,d))[q]:{})();return Na(a)&&u(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await p(),u(t)){const[t,n]=a();await S(t),await R(n)}else await S(t[0],!0),await R(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},rt=(a,e,i,r,o,w,y,v,f,m,N="getDb",$,A)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>la(ja,E(a)?{[ba]:a}:a??{}))(a),e=n[Pa];if(n.mode==Ra){const a=n[ba]??t;return[1,e,[a,n[Ca]??k,n[Ma]??La],Ia(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=la(Ga,c),{load:w,save:l}=o,u=[Ka(w),Ka(l),o[Ba],Ja(w),Ja(l)],y=u[2],d=Ia(y),v=Ia(y),f=Xa(i,{[Fa]:null,[xa]:k,[Ua]:s},Fa,a=>I(v,a),a=>Da(d,a)),m=Xa(r,{[Ba]:null,[xa]:k,[qa]:0,[ka]:0,[Ua]:null},Ba,(a,t)=>I(v,t),(a,t)=>Da(d,t));return ha(m,(a,t)=>t[4]??=_a(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?it:st)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ta(t)})ORDER BY t.name,c.name`,t),m,N,n,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,A)},ct=(a,t,n,e,i)=>rt(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>A,a=>a(),e,i,A,1,t,"getClient",void 0,"file"==t.protocol?void 0:async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t=[])=>(e?.(a,t),(await n.execute({sql:a,args:t})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ct as createLibSqlPersister};
|
|
1
|
+
const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,A=a=>0==N(a),$=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>M(P(a,()=>t(n)),e),ea=(a,t=s)=>j+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!l(a)&&v(ra(a),a=>a==sa.prototype||l(ra(a)),()=>!0),wa=sa.keys,la=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return C(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>C(wa(a),n=>t(a[n],n)),Ea=(a,t)=>P(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(wa(a)),Aa=a=>oa(a)&&0==Na(a),$a=Map,_a=a=>new $a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:_a),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(l=ua(t,E(a)?{[n]:a}:a),o=sa.values(l),w=Na(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,$,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const X=_a(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Sa(Ia(r,c??[n],Da),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{ha(at,l)||ha(Wa,l)||!A(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await wa(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},wa=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,wa]:[wa,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>A(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,wa]:[oa,ya,wa,da],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u($)&&(G=1,$=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),na()})})()),await $,ma)};return la(ma)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=_a(),v=_a();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Da),t),n&&Sa(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(x(P(await f(Y+aa(a)+ea(a,n)),a=>{const n=a[t],e=l?ma(va(a,t),l):va(a,t);return[n,u(i)?e:da(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Aa(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const $=u(N)?void 0:Da(N),_=a=>u($)||I($,a),O=Da();fa(i??{},a=>C(x(wa(a??{}),_),a=>Sa(O,a)));const g=S(O);if(u($)&&!E&&y&&m==s&&A(g)&&I(d,a))return await f("DROP "+G+aa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Da(x(S(p),a=>a==n||_(a)));if(!A(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(J+aa(a)+"ADD"+aa(t)+r),Sa(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Sa(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(g,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...g])),pa(v,a,Da([n]));if(await h([...!E&&l?P(S(T),async t=>{t!=n&&(await f(J+aa(a)+"DROP"+aa(t)),b(p,t))}):[]]),E)u(i)?u($)&&await f(X+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(X+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!A(g)){const i=x(wa(t),_);A(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if(A(g))u($)&&I(d,a)&&await f(X+aa(a)+ea(a,m));else{const t=x(S(ha(d,a)),a=>a!=n&&_(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(X+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,A,$)=>{const[_,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,$);return tt(a,()=>g(async()=>{return await _(),a=(await h(c,o))[q]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await _(),await O(c,o,{[q]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,A,$,_,O,g,p)=>{const[T,I,D,S]=et(t,f,E,A,$,_,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!sa.hasOwn(o,w))||await D(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>da(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await D(y,k,{[q]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await T();const a=await(async()=>da(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>w?(await I(y,k,void 0,d))[q]:{})();return Aa(a)&&u(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",A,$)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>ua(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??k,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Da(y),v=Da(y),f=Ya(i,{[Ba]:null,[Fa]:k,[ja]:s},Ba,a=>I(v,a),a=>Sa(d,a)),m=Ya(r,{[qa]:null,[Fa]:k,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Sa(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,A,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>$,a=>a(),e,i,$,1,t,"getClient",void 0,"file"==t.protocol?void 0:async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t=[])=>(e?.(a,t),(await n.execute({sql:a,args:t})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,$=a=>0==N(a),A=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=(a,t=[1])=>M(P(a,()=>"$"+t[0]++),e),na=(a,t=s)=>j+`(${ea(t,aa(a))})`,ea=(a,t)=>r(a,Z,t),ia=Object,sa=a=>ia.getPrototypeOf(a),ra=ia.entries,ca=a=>!l(a)&&v(sa(a),a=>a==ia.prototype||l(sa(a)),()=>!0),oa=ia.keys,wa=ia.freeze,la=(...a)=>ia.assign(ia.create(null),...a),ua=(a,t,n)=>(ia.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),ya=(a=[])=>{const t=ia.create(null);return C(a,([a,n])=>ua(t,a,n)),t},da=(a,t)=>(delete a[t],a),va=(a,t)=>C(oa(a),n=>t(a[n],n)),fa=(a,t)=>P(ra(a),([a,n])=>t(n,a)),Ea=(a,t)=>{const n=ya();return va(a,(a,e)=>ua(n,e,t(a,e))),n},ma=a=>N(oa(a)),Na=a=>ca(a)&&0==ma(a),$a=Map,Aa=a=>new $a(a),_a=(a,t)=>a?.get(t),ha=(a,t)=>R(a,(a,n)=>t(n,a)),Oa=(a,t)=>{const n=[];return ha(a,(a,e)=>B(n,t(e,a))),n},ga=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),pa=(a,t,n,e)=>{let i=_a(a,t);return I(a,t)?e?.(i):ga(a,t,i=n()),i},Ta=(a,t,n,e,i=0)=>f((n?pa:_a)(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=Ta(s,t,n,e,i+1);return D(s)&&ga(a,t[i]),r}),Ia=a=>new Set(m(a)||u(a)?a:[a]),Da=(a,t)=>a?.add(t),Sa="ColumnName",La="store",Ra="json",ba=La+"TableName",Ca=La+"Id"+Sa,Ma=La+Sa,Pa="autoLoadIntervalSeconds",xa="rowId"+Sa,Fa="tableId",Ba="tableName",qa="deleteEmptyColumns",ka="deleteEmptyTable",Ua="condition",ja={mode:Ra,[Pa]:1},Ga={load:0,save:0,[Ba]:t+"_values"},Ja=a=>m(a)?a:void 0,Ka=a=>d(a)||m(a),Xa=(a,t,n,e,i)=>{const s=Aa();return va(a,(a,r)=>{const c=(l=la(t,E(a)?{[n]:a}:a),o=ia.values(l),w=ma(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),ga(s,r,c))}),s},Ya=JSON.stringify,za=JSON.parse,Ha=a=>""===a?void 0:m(a)?P(a,Ha):ca(a)?Ea(a,Ha):a,Qa=/^\d+$/,Va=Aa(),Wa=Aa(),Za=Aa(),at=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,A,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;pa(Va,l,()=>0),pa(Wa,l,()=>[]),ga(Za,l,(_a(Za,l)??0)+1);const X=Aa(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Na(a)||!Na(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Na(a)||!Na(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Qa.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=Aa(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(_a(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>_a(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return ga(s,l,[i,r,c,o,w]),Da(Ta(r,c??[n],Ia),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(_a(s,a),([,t,e])=>(Ta(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),ga(s,a),i(a),e)),a=>f(_a(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{_a(Za,l)||_a(Va,l)||!$(_a(Wa,l)??[])||(ga(Va,l),ga(Wa,l),ga(Za,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await la(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},la=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,la]:[la,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>$(a)?e():B(_a(Wa,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!_a(Va,l)){ga(Va,l,1);const a=_a(Wa,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),ga(Va,l,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?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u(A)&&(G=1,A=(async()=>{const a=_a(Wa,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(_a(Za,l)??1)-1;ga(Za,l,a||void 0),na()})})()),await A,ma)};return wa(ma)},tt=new w.TextEncoder,nt=(a,n,i,r,c=et,o,w,l)=>{const y=Aa(),d=Aa();let v=a;return[async()=>{L(y),L(d),C(await i(v,n),({tn:a,cn:t,uq:n})=>{Da(pa(y,a,Ia),t),n&&Da(pa(d,a,Ia),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Ia(e);return((a,t)=>I(_a(y,a),t))(a,t)?ya(x(P(await v(Y+aa(a)+na(a,n)),a=>{const n=a[t],e=w?Ea(da(a,t),w):da(a,t);return[n,u(i)?e:ya(x(fa(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Na(a[1]))):{}},async(a,n,i,w,l,f=!1,E=s,m)=>{const N=u(m)?void 0:Ia(m),A=a=>u(N)||I(N,a),_=Ia();va(i??{},a=>C(x(oa(a??{}),A),a=>Da(_,a)));const O=S(_);if(u(N)&&!f&&l&&E==s&&$(O)&&I(y,a))return await v("DROP "+G+aa(a)),ga(y,a),void ga(d,a);const g=_a(y,a),p=Ia(x(S(g),a=>a==n||A(a)));if(!$(O))if(I(y,a)){if(await h(P([n,...O],async t=>{b(p,t)||(await v(J+aa(a)+"ADD"+aa(t)+r),Da(g,t))})),c==et&&!I(_a(d,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(tt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(Ya([a,n]));await v("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Da(pa(d,a,Ia),n)}}else await v(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(O,a=>e+aa(a)+r))});`),ga(y,a,Ia([n,...O])),ga(d,a,Ia([n]));if(await h([...!f&&w?P(S(p),async t=>{t!=n&&(await v(J+aa(a)+"DROP"+aa(t)),b(g,t))}):[]]),f)u(i)?u(N)&&await v(X+aa(a)+na(a,E)):await h(fa(i,async(t,e)=>{if(u(t))await v(X+aa(a)+na(a,E)+`AND(${aa(n)}=$1)`,[e]);else if(!$(O)){const i=x(oa(t),A);$(i)||await c(v,a,n,i,{[e]:P(i,a=>o?o(t[a]):t[a])},g)}}));else if($(O))u(N)&&I(y,a)&&await v(X+aa(a)+na(a,E));else{const t=x(S(_a(y,a)),a=>a!=n&&A(a)),e=ya(),s=[];va(i??{},(a,n)=>{ua(e,n,P(t,t=>o?o(a?.[t]):a?.[t])),B(s,n)}),await c(v,a,n,t,e,g),await v(X+aa(a)+na(a,E)+`AND${aa(n)}NOT IN(${ta(s)})`,s)}},async t=>{if(l)return await l(async a=>{const n=v;return v=a,await T(t,()=>{v=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},et=async(a,t,n,i,s)=>{const r=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(fa(s,a=>"($"+r[0]+++","+ta(a,r)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),fa(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},it=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,$)=>{const[A,_,h,O]=nt(t,l,y,f,E,void 0,void 0,$);return at(a,()=>O(async()=>{return await A(),a=(await _(c,o))[q]?.[w]??"null",Ha(za(a));var a}),a=>O(async()=>{var t;await A(),await h(c,o,{[q]:{[w]:(t=a()??null,Ya(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},st=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,$,A,_,O,g)=>{const[p,T,I,D]=nt(t,f,E,$,A,_,O,g),S=(a,t)=>h(Oa(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!ia.hasOwn(o,w))||await I(n,e,a[c],i,s,t,r)})),L=(a,t,n)=>ya(1==n?x(fa(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),R=async(a,t)=>l?await I(y,k,{[q]:u(v)?a:L(a,v,t)},!0,!0,t,void 0,v):null;return at(a,()=>D(async()=>{await p();const a=await(async()=>ya(x(await h(Oa(c,async([a,t,n],e)=>[a,await T(e,t,n)])),a=>!Na(a[1]))))(),t=await(async()=>w?(await T(y,k,void 0,d))[q]:{})();return Na(a)&&u(t)?void 0:[a,t]}),(a,t)=>D(async()=>{if(await p(),u(t)){const[t,n]=a();await S(t),await R(n)}else await S(t[0],!0),await R(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},rt=(a,e,i,r,o,w,y,v,f,m,N="getDb",$,A)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>la(ja,E(a)?{[ba]:a}:a??{}))(a),e=n[Pa];if(n.mode==Ra){const a=n[ba]??t;return[1,e,[a,n[Ca]??k,n[Ma]??La],Ia(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=la(Ga,c),{load:w,save:l}=o,u=[Ka(w),Ka(l),o[Ba],Ja(w),Ja(l)],y=u[2],d=Ia(y),v=Ia(y),f=Xa(i,{[Fa]:null,[xa]:k,[Ua]:s},Fa,a=>I(v,a),a=>Da(d,a)),m=Xa(r,{[Ba]:null,[xa]:k,[qa]:0,[ka]:0,[Ua]:null},Ba,(a,t)=>I(v,t),(a,t)=>Da(d,t));return ha(m,(a,t)=>t[4]??=_a(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?it:st)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${ta(t)})ORDER BY t.name,c.name`,t),m,N,n,$,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,A)},ct=(a,t,n,e,i)=>rt(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>A,a=>a(),e,i,A,1,t,"getClient",void 0,"file"==t.protocol?void 0:async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t=[])=>(e?.(a,t),(await n.execute({sql:a,args:t})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ct as createLibSqlPersister};
|
|
1
|
+
const a=a=>typeof a,t="tinybase",n="",e=",",i=a(n),s="true",r=(a,t,n)=>a.replace(t,n),c=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=a=>!0===a,v=o(l),f=o(u),E=t=>a(t)==i,m=a=>Array.isArray(a),N=a=>a.length,A=a=>0==N(a),$=()=>{},_=a=>new c(a),h=async a=>c.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},g=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},p=(a,t)=>g(a,a=>{g(()=>t?.(a))}),T=async(a,t)=>{try{return await a()}finally{await t()}},I=(a,t)=>a?.has(t)??!1,D=a=>u(a)||0==(a=>a?.size??0)(a),S=a=>[...a?.values()??[]],L=a=>a.clear(),R=(a,t)=>a?.forEach(t),b=(a,t)=>a?.delete(t),C=(a,t)=>a.forEach(t),M=(a,t="")=>a.join(t),P=(a,t)=>a.map(t),x=(a,t)=>a.filter(t),F=(a,t=N(a))=>a.splice(0,t),B=(a,...t)=>a.push(...t),q="_",k="_id",U="SELECT",j="WHERE",G="TABLE",J="ALTER "+G,K="FROM",X="DELETE "+K,Y=U+"*"+K,z="pragma_",H="data_version",Q="schema_version",V="pragma_table_",W="CREATE "+G,Z=/\$tableName/g,aa=a=>M(P(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${r(a,/"/g,'""')}"`),"."),ta=()=>"?",na=(a,t,n=[1])=>M(P(a,()=>t(n)),e),ea=(a,t=s)=>j+`(${ia(t,aa(a))})`,ia=(a,t)=>r(a,Z,t),sa=Object,ra=a=>sa.getPrototypeOf(a),ca=sa.entries,oa=a=>!l(a)&&v(ra(a),a=>a==sa.prototype||l(ra(a)),()=>!0),wa=sa.keys,la=sa.freeze,ua=(...a)=>sa.assign(sa.create(null),...a),ya=(a,t,n)=>(sa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),da=(a=[])=>{const t=sa.create(null);return C(a,([a,n])=>ya(t,a,n)),t},va=(a,t)=>(delete a[t],a),fa=(a,t)=>C(wa(a),n=>t(a[n],n)),Ea=(a,t)=>P(ca(a),([a,n])=>t(n,a)),ma=(a,t)=>{const n=da();return fa(a,(a,e)=>ya(n,e,t(a,e))),n},Na=a=>N(wa(a)),Aa=a=>oa(a)&&0==Na(a),$a=Map,_a=a=>new $a(a),ha=(a,t)=>a?.get(t),Oa=(a,t)=>R(a,(a,n)=>t(n,a)),ga=(a,t)=>{const n=[];return Oa(a,(a,e)=>B(n,t(e,a))),n},pa=(a,t,n)=>u(n)?(b(a,t),a):a?.set(t,n),Ta=(a,t,n,e)=>{let i=ha(a,t);return I(a,t)?e?.(i):pa(a,t,i=n()),i},Ia=(a,t,n,e,i=0)=>f((n?Ta:ha)(a,t[i],i>N(t)-2?n:_a),s=>{if(i>N(t)-2)return e?.(s)&&pa(a,t[i]),s;const r=Ia(s,t,n,e,i+1);return D(s)&&pa(a,t[i]),r}),Da=a=>new Set(m(a)||u(a)?a:[a]),Sa=(a,t)=>a?.add(t),La="ColumnName",Ra="store",ba="json",Ca=Ra+"TableName",Ma=Ra+"Id"+La,Pa=Ra+La,xa="autoLoadIntervalSeconds",Fa="rowId"+La,Ba="tableId",qa="tableName",ka="deleteEmptyColumns",Ua="deleteEmptyTable",ja="condition",Ga={mode:ba,[xa]:1},Ja={load:0,save:0,[qa]:t+"_values"},Ka=a=>m(a)?a:void 0,Xa=a=>d(a)||m(a),Ya=(a,t,n,e,i)=>{const s=_a();return fa(a,(a,r)=>{const c=(l=ua(t,E(a)?{[n]:a}:a),o=sa.values(l),w=Na(t),o.slice(0,w));var o,w,l;y(c[0])||e(r,c[0])||(i(r,c[0]),pa(s,r,c))}),s},za=JSON.stringify,Ha=JSON.parse,Qa=a=>""===a?void 0:m(a)?P(a,Qa):oa(a)?ma(a,Qa):a,Va=/^\d+$/,Wa=_a(),Za=_a(),at=_a(),tt=(a,t,e,i,s,r,c,o={},w=0,l=[])=>{let d,v,E,$,h,I=0,S=0,L=0,M=0,q=0,k=0,U=0,j=0,G=0;const J={},K=o.destroy;Ta(Wa,l,()=>0),Ta(Za,l,()=>[]),pa(at,l,(ha(at,l)??0)+1);const X=_a(),[Y,z,H,Q,V]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!Aa(a)||!Aa(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!Aa(a)||!Aa(t),t.setContent]:O(0))(c,a,w),[W,Z,aa]=(a=>{let t;const[e,i]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{Va.test(t)&&N(a)<1e3&&B(a,t)}]})(),s=_a(),r=(a,e,i,r)=>{let c,o=!1;if(C(((a,t=[n])=>{const e=[],i=(a,n)=>n==N(t)?B(e,a):y(t[n])?R(a,a=>i(a,n+1)):C([t[n],null],t=>i(ha(a,t),n+1));return i(a,0),e})(e,i),n=>R(n,n=>{const e=()=>ha(s,n)[0](t,...i??[],...r);a?(a=>{try{return a()}catch(a){(a=>{o||(c=a),o=!0})?.(a)}})(e):e()})),o)throw c};return[(i,r,c,o=[],w=()=>[])=>{t??=a();const l=e(1);return pa(s,l,[i,r,c,o,w]),Sa(Ia(r,c??[n],Da),l),l},(a,t,...n)=>r(!1,a,t,n),a=>f(ha(s,a),([,t,e])=>(Ia(t,e??[n],void 0,t=>(b(t,a),D(t)?1:0)),pa(s,a),i(a),e)),a=>f(ha(s,a),([a,,n=[],e,i])=>{const s=(...r)=>{const c=N(r);c==N(n)?a(t,...r,...i(r)):y(n[c])?C(e[c]?.(...r)??[],a=>s(...r,a)):s(...r,n[c])};s()}),(a,t,...n)=>r(!0,a,t,n)]})(()=>ma),ta=a=>{a!=I&&(I=a,Z(X,void 0,I))},na=()=>{ha(at,l)||ha(Wa,l)||!A(ha(Za,l)??[])||(pa(Wa,l),pa(Za,l),pa(at,l))},ea=t=>{(Y&&m(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},ia=async()=>{va()&&a.__?.[0]?.()&&await ua()},sa=a=>T(()=>v=a,()=>{v==a&&(v=void 0)}),ra=async a=>(2!=I&&(await T(async()=>{ta(1),S++,await Ea(()=>g(async()=>{const n=await t();m(n)?ea(n):u(n)&&a?V(a):u(n)||O(1,n)},t=>{r?.(t),a&&V(a)}))},()=>ta(0)),await ia()),ma),ca=async()=>{const a=U;U=0,a&&a==M&&!G&&(2==I?U=a:await ra())},oa=async a=>{const t=++M;let n=!0;if(await wa(!0),t==M&&!G){const e=g(async()=>{const a=await i(async(a,e)=>{if(t==M&&!G)if(e||a){const t=n||2==I||!!k;q++,t&&k++,await T(async()=>{ta(1),S++,await(t?Ea(()=>ea(e??a)):(()=>{try{return ea(e??a)}finally{ta(0)}})())},()=>{t&&k--,--q||ta(0)}),q||await ia()}else 2==I?U=t:await ra()});t!=M||G?u(a)||await s(a):d=a},r);await sa(e),t!=M||G||await T(()=>ra(a),()=>{n=!1})}return ma},wa=async(a=!1)=>{U=0,a||M++;const t=v,n=d;return d=void 0,await sa(T(async()=>{await t},async()=>{u(n)||await g(()=>s(n),r)})),ma},ua=async a=>(1!=I&&await T(()=>T(async()=>{ta(2),L++,await Ea(()=>g(()=>e(z,a),r))},()=>ta(0)),ca),ma),ya=async()=>{const t=++j;return await da(!0),t!=j||G||(await ua(),t!=j||G||(E=a.addDidFinishTransactionListener(()=>{if(t==j&&!G){const a=H();Q(a)&&g(()=>ua(a))}}))),ma},da=async(t=!1)=>{t||j++;const n=E;return E=void 0,u(n)||a.delListener(n),ma},va=()=>!u(E),fa=async(a=!1)=>{const[t,n]=a?[da,wa]:[wa,da];return await T(()=>t(),async()=>{await n()}),ma},Ea=async(...a)=>{let t,n=!1;const e=_(e=>A(a)?e():B(ha(Za,l),...P(a,(i,s)=>{const c=s==N(a)-1;return[async()=>{let a;h=_(t=>a=t),await T(async()=>{try{await g(i,r)}catch(a){n||(n=!0,t=a)}c&&e()},()=>{h=void 0,a()})},c?e:void 0,J]})));if(await(async()=>{if(!ha(Wa,l)){pa(Wa,l,1);const a=ha(Za,l);let t=0;await T(async()=>{for(;t<N(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{F(a,t),pa(Wa,l,0),na()})}})(),await e,n)throw t;return ma},ma={load:ra,startAutoLoad:oa,stopAutoLoad:wa,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:da,isAutoSaving:va,startAutoPersisting:async(a,t=!1)=>{const[n,e,i,s]=t?[ya,oa,da,wa]:[oa,ya,wa,da],r=n(a),c=t?j:M;await r;const o=e(a),w=t?M:j;try{await o}catch(a){throw w==(t?M:j)&&await p(s),c==(t?j:M)&&await p(i),a}return ma},stopAutoPersisting:fa,getStatus:()=>I,addStatusListener:a=>W(a,X),delListener:t=>(aa(t),a),schedule:Ea,getStore:()=>a,getStats:()=>({loads:S,saves:L}),...o,destroy:async()=>(u($)&&(G=1,$=(async()=>{const a=ha(Za,l),t=x(a,([,a,t])=>t!=J||(a?.(),!1)),n=h;F(a),B(a,...t),await T(()=>T(()=>T(fa,()=>n),()=>K?.()),()=>{const a=(ha(at,l)??1)-1;pa(at,l,a||void 0),na()})})()),await $,ma)};return la(ma)},nt=new w.TextEncoder,et=(a,n,i,r,c,o=it,w,l,y)=>{const d=_a(),v=_a();let f=a;return[async()=>{L(d),L(v),C(await i(f,n),({tn:a,cn:t,uq:n})=>{Sa(Ta(d,a,Da),t),n&&Sa(Ta(v,a,Da),t)})},async(a,t,n,e)=>{const i=u(e)?void 0:Da(e);return((a,t)=>I(ha(d,a),t))(a,t)?da(x(P(await f(Y+aa(a)+ea(a,n)),a=>{const n=a[t],e=l?ma(va(a,t),l):va(a,t);return[n,u(i)?e:da(x(Ea(e,(a,t)=>[t,a]),([a])=>(a=>u(i)||I(i,a))(a)))]}),a=>!u(a[0])&&!Aa(a[1]))):{}},async(a,n,i,l,y,E=!1,m=s,N)=>{const $=u(N)?void 0:Da(N),_=a=>u($)||I($,a),O=Da();fa(i??{},a=>C(x(wa(a??{}),_),a=>Sa(O,a)));const g=S(O);if(u($)&&!E&&y&&m==s&&A(g)&&I(d,a))return await f("DROP "+G+aa(a)),pa(d,a),void pa(v,a);const p=ha(d,a),T=Da(x(S(p),a=>a==n||_(a)));if(!A(g))if(I(d,a)){if(await h(P([n,...g],async t=>{b(T,t)||(await f(J+aa(a)+"ADD"+aa(t)+r),Sa(p,t))})),o==it&&!I(ha(v,a),n)){const e=t+"_pk_"+(a=>{let t=2166136261;return C(nt.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0})(za([a,n]));await f("CREATE UNIQUE INDEX IF NOT EXISTS"+aa(e)+"ON"+aa(a)+`(${aa(n)})`),Sa(Ta(v,a,Da),n)}}else await f(W+aa(a)+`(${aa(n)}${r} PRIMARY KEY${M(P(g,a=>e+aa(a)+r))});`),pa(d,a,Da([n,...g])),pa(v,a,Da([n]));if(await h([...!E&&l?P(S(T),async t=>{t!=n&&(await f(J+aa(a)+"DROP"+aa(t)),b(p,t))}):[]]),E)u(i)?u($)&&await f(X+aa(a)+ea(a,m)):await h(Ea(i,async(t,e)=>{if(u(t))await f(X+aa(a)+ea(a,m)+`AND(${aa(n)}=${c([1])})`,[e]);else if(!A(g)){const i=x(wa(t),_);A(i)||await o(f,a,n,i,{[e]:P(i,a=>w?w(t[a]):t[a])},c,p)}}));else if(A(g))u($)&&I(d,a)&&await f(X+aa(a)+ea(a,m));else{const t=x(S(ha(d,a)),a=>a!=n&&_(a)),e=da(),s=[];fa(i??{},(a,n)=>{ya(e,n,P(t,t=>w?w(a?.[t]):a?.[t])),B(s,n)}),await o(f,a,n,t,e,c,p),await f(X+aa(a)+ea(a,m)+`AND${aa(n)}NOT IN(${na(s,c)})`,s)}},async t=>{if(y)return await y(async a=>{const n=f;return f=a,await T(t,()=>{f=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await g(()=>a("ROLLBACK")),t}}]},it=async(a,t,n,i,s,r)=>{const c=[1];await a("INSERT INTO"+aa(t)+"("+((...a)=>M(P(a,aa),e))(n,...i)+")VALUES"+M(Ea(s,a=>"("+r(c)+","+na(a,r,c)+")"),e)+"ON CONFLICT("+aa(n)+")DO UPDATE SET"+M(P(i,a=>aa(a)+"=excluded."+aa(a)),e),Ea(s,(a,t)=>[t,...P(a,a=>a??null)]).flat())},st=(a,t,n,e,i,s,r,[c,o,w],l,y,d,v,f,E,m,N,A,$)=>{const[_,h,O,g]=et(t,l,y,f,E,m,void 0,void 0,$);return tt(a,()=>g(async()=>{return await _(),a=(await h(c,o))[q]?.[w]??"null",Qa(Ha(a));var a}),a=>g(async()=>{var t;await _(),await O(c,o,{[q]:{[w]:(t=a()??null,za(t,(a,t)=>u(t)?"":t))}},!0,!0)}),n,e,i,r,{[v]:()=>d,destroy:s},0,d)},rt=(a,t,n,e,i,s,r,[c,o,[w,l,y,d,v]],f,E,m,N,A,$,_,O,g,p)=>{const[T,I,D,S]=et(t,f,E,A,$,_,O,g,p),L=(a,t)=>h(ga(o,async([n,e,i,s,r],c)=>{var o,w;t&&(o=a,w=c,!sa.hasOwn(o,w))||await D(n,e,a[c],i,s,t,r)})),R=(a,t,n)=>da(1==n?x(Ea(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):x(P(t,t=>[t,a[t]]),([,a])=>!u(a))),b=async(a,t)=>l?await D(y,k,{[q]:u(v)?a:R(a,v,t)},!0,!0,t,void 0,v):null;return tt(a,()=>S(async()=>{await T();const a=await(async()=>da(x(await h(ga(c,async([a,t,n],e)=>[a,await I(e,t,n)])),a=>!Aa(a[1]))))(),t=await(async()=>w?(await I(y,k,void 0,d))[q]:{})();return Aa(a)&&u(t)?void 0:[a,t]}),(a,t)=>S(async()=>{if(await T(),u(t)){const[t,n]=a();await L(t),await b(n)}else await L(t[0],!0),await b(t[1],!0)}),n,e,i,r,{[N]:()=>m,destroy:s},0,m)},ct=(a,e,i,r,o,w,y,v,f,m,N="getDb",A,$)=>{let _,h,g;const D=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(i,w),[L,R,b,C]=(a=>{const n=(a=>ua(Ga,E(a)?{[Ca]:a}:a??{}))(a),e=n[xa];if(n.mode==ba){const a=n[Ca]??t;return[1,e,[a,n[Ma]??k,n[Pa]??Ra],Da(a)]}const{tables:{load:i={},save:r={}}={},values:c={}}=n,o=ua(Ja,c),{load:w,save:l}=o,u=[Xa(w),Xa(l),o[qa],Ka(w),Ka(l)],y=u[2],d=Da(y),v=Da(y),f=Ya(i,{[Ba]:null,[Fa]:k,[ja]:s},Ba,a=>I(v,a),a=>Sa(d,a)),m=Ya(r,{[qa]:null,[Fa]:k,[ka]:0,[Ua]:0,[ja]:null},qa,(a,t)=>I(v,t),(a,t)=>Sa(d,t));return Oa(m,(a,t)=>t[4]??=ha(f,t[0])?.[2]??s),[0,e,[f,m,u],d]})(e);return!L&&a.isMergeable()&&O(0),(L?st:rt)(a,D,a=>{let t,n,e=1,i=0,s=0;const w=async(t=!0)=>{const[{d:n,s:i,c:r}]=await D(U+` ${H} d,${Q} s,TOTAL_CHANGES() c FROM ${z}${H} JOIN ${z}${Q}`);if(e&&(n!=_||i!=h||r!=g)){const c=t&&!s&&!l(_);_=n,h=i,g=r,c&&e&&await a()}},d=()=>{u(t)||((a=>{clearInterval(a)})(t),t=void 0)},v=(r=!1)=>{if(n)return n;const c=T(()=>p(async()=>{for(i?r&&await w():(await w(!1),i=1);e&&s;)s=0,await w(!1),e&&(await a(),await w())},y),()=>{n==c&&(n=void 0),e&&(s?v():e&&u(t)&&(t=setInterval(()=>v(!0),1e3*R)))});return n=c,c},f=r(a=>{e&&I(C,a)&&(s=1,d(),c.resolve().then(()=>e?void v():0))});return v().then(()=>async()=>{e=0,s=0,d(),await T(async()=>await n,async()=>{_=h=g=null,await o(f)})})},a=>a(),y,v,f,b,S(C),async(a,t)=>await a(U+` t.name tn,c.name cn,c.pk OR EXISTS(${U} 1 FROM ${z}index_list(t.name)i,${z}index_info(i.name)ii ${j} i."unique"=1 AND ii.name=c.name AND(${U} count(*) FROM ${z}index_info(i.name))=1)uq FROM ${V}list()t,${V}info(t.name)c ${j} t.schema='main'AND t.type IN('table','view')AND t.name IN(${na(t,ta)})ORDER BY t.name,c.name`,t),m,N,n,ta,A,a=>d(a)?1:(a=>!1===a)(a)?0:a,void 0,$)},ot=(a,t,n,e,i)=>ct(a,n,async(a,n=[])=>(await t.execute({sql:a,args:n})).rows,()=>$,a=>a(),e,i,$,1,t,"getClient",void 0,"file"==t.protocol?void 0:async a=>{e?.("BEGIN");const n=await t.transaction("write");return await T(async()=>{try{const t=await a(async(a,t=[])=>(e?.(a,t),(await n.execute({sql:a,args:t})).rows));return await n.commit(),e?.("END"),t}catch(a){throw await g(()=>n.rollback()),e?.("ROLLBACK"),a}},()=>n.close())});export{ot as createLibSqlPersister};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),D=(a,t)=>a.filter(t),b=(a,t=m(a))=>a.splice(0,t),p=(a,...t)=>a.push(...t),C="_",P="_id",F="SELECT",k="WHERE",U="TABLE",M="INSERT",G="DELETE",q="UPDATE",H="ALTER "+U,W="FROM",Y=G+" "+W,j=F+"*"+W,x="CREATE ",B=x+U,X="OR REPLACE ",J="FUNCTION",K=/\$tableName/g,z=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),Q=(...a)=>z(g(a,"_")),V=a=>"$"+a[0]++,Z=(a,t,n=[1])=>g(S(a,()=>t(n)),e),aa=(a,t=s)=>k+`(${ta(t,z(a))})`,ta=(a,t)=>i(a,K,t),na=(a,t)=>a?.has(t)??!1,ea=a=>u(a)||0==(a=>a?.size??0)(a),ca=a=>[...a?.values()??[]],sa=a=>a.clear(),ia=(a,t)=>a?.forEach(t),ra=(a,t)=>a?.delete(t),oa=Object,wa=a=>oa.getPrototypeOf(a),la=oa.entries,ua=a=>!l(a)&&d(wa(a),a=>a==oa.prototype||l(wa(a)),()=>!0),ya=oa.keys,da=oa.freeze,Ea=(...a)=>oa.assign(oa.create(null),...a),_a=(a,t,n)=>(oa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Na=(a=[])=>{const t=oa.create(null);return L(a,([a,n])=>_a(t,a,n)),t},ma=(a,t)=>(delete a[t],a),fa=(a,t)=>L(ya(a),n=>t(a[n],n)),va=(a,t)=>S(la(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=Na();return fa(a,(a,e)=>_a(n,e,t(a,e))),n},Ta=a=>m(ya(a)),ha=a=>ua(a)&&0==Ta(a),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):ua(a)?Aa(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,Da=a=>new Sa(a),ba=(a,t)=>a?.get(t),pa=(a,t)=>ia(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return pa(a,(a,e)=>p(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ra(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=ba(a,t);return na(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:ba)(a,t[c],c>m(t)-2?n:Da),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return ea(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=Da();return fa(a,(a,i)=>{const r=(l=Ea(t,_(a)?{[n]:a}:a),o=oa.values(l),w=Ta(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=Da(),st=Da(),it=Da(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,M=0,G=0,q=0,H=0;const W={},Y=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(ba(it,l)??0)+1);const j=Da(),[x,B,X,J,K]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!ha(a)||!ha(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!ha(a)||!ha(t),t.setContent]:O(0))(r,a,w),[z,Q,V]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&p(a,t)}]})(),s=Da(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?p(e,a):y(t[n])?ia(a,a=>c(a,n+1)):L([t[n],null],t=>c(ba(a,t),n+1));return c(a,0),e})(e,c),n=>ia(n,n=>{const e=()=>ba(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(ba(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ra(t,a),ea(t)?1:0)),Pa(s,a),c(a),e)),a=>E(ba(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>fa),Z=a=>{a!=C&&(C=a,Q(j,void 0,C))},aa=()=>{ba(it,l)||ba(ct,l)||!f(ba(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ta=t=>{(x&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},na=async()=>{_a()&&a.__?.[0]?.()&&await ua()},ca=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),sa=async a=>(2!=C&&(await I(async()=>{Z(1),P++,await ma(()=>$(async()=>{const n=await t();N(n)?ta(n):u(n)&&a?K(a):u(n)||O(1,n)},t=>{i?.(t),a&&K(a)}))},()=>Z(0)),await na()),fa),oa=async()=>{const a=G;G=0,a&&a==k&&!H&&(2==C?G=a:await sa())},wa=async a=>{const t=++k;let n=!0;if(await la(!0),t==k&&!H){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!H)if(e||a){const t=n||2==C||!!M;U++,t&&M++,await I(async()=>{Z(1),P++,await(t?ma(()=>ta(e??a)):(()=>{try{return ta(e??a)}finally{Z(0)}})())},()=>{t&&M--,--U||Z(0)}),U||await na()}else 2==C?G=t:await sa()});t!=k||H?u(a)||await s(a):d=a},i);await ca(e),t!=k||H||await I(()=>sa(a),()=>{n=!1})}return fa},la=async(a=!1)=>{G=0,a||k++;const t=_,n=d;return d=void 0,await ca(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),fa},ua=async a=>(1!=C&&await I(()=>I(async()=>{Z(2),F++,await ma(()=>$(()=>e(B,a),i))},()=>Z(0)),oa),fa),ya=async()=>{const t=++q;return await Ea(!0),t!=q||H||(await ua(),t!=q||H||(A=a.addDidFinishTransactionListener(()=>{if(t==q&&!H){const a=X();J(a)&&$(()=>ua(a))}}))),fa},Ea=async(t=!1)=>{t||q++;const n=A;return A=void 0,u(n)||a.delListener(n),fa},_a=()=>!u(A),Na=async(a=!1)=>{const[t,n]=a?[Ea,la]:[la,Ea];return await I(()=>t(),async()=>{await n()}),fa},ma=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():p(ba(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,W]})));if(await(async()=>{if(!ba(ct,l)){Pa(ct,l,1);const a=ba(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),Pa(ct,l,0),aa()})}})(),await e,n)throw t;return fa},fa={load:sa,startAutoLoad:wa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:Ea,isAutoSaving:_a,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ya,wa,Ea,la]:[wa,ya,la,Ea],i=n(a),r=t?q:k;await i;const o=e(a),w=t?k:q;try{await o}catch(a){throw w==(t?k:q)&&await R(s),r==(t?q:k)&&await R(c),a}return fa},stopAutoPersisting:Na,getStatus:()=>C,addStatusListener:a=>z(a,j),delListener:t=>(V(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(H=1,h=(async()=>{const a=ba(st,l),t=D(a,([,a,t])=>t!=W||(a?.(),!1)),n=g;b(a),p(a,...t),await I(()=>I(()=>I(Na,()=>n),()=>Y?.()),()=>{const a=(ba(it,l)??1)-1;Pa(it,l,a||void 0),aa()})})()),await h,fa)};return da(fa)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=Da(),E=Da();let _=a;return[async()=>{sa(d),sa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>na(ba(d,a),t))(a,t)?Na(D(S(await _(j+z(a)+aa(a,n)),a=>{const n=a[t],e=l?Aa(ma(a,t),l):ma(a,t);return[n,u(c)?e:Na(D(va(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||na(c,a))(a)))]}),a=>!u(a[0])&&!ha(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||na(A,a),O=Ua();fa(c??{},a=>L(D(ya(a??{}),T),a=>Ma(O,a)));const $=ca(O);if(u(A)&&!N&&y&&m==s&&f($)&&na(d,a))return await _("DROP "+U+z(a)),Pa(d,a),void Pa(E,a);const R=ba(d,a),I=Ua(D(ca(R),a=>a==n||T(a)));if(!f($))if(na(d,a)){if(await h(S([n,...$],async t=>{ra(I,t)||(await _(H+z(a)+"ADD"+z(t)+i),Ma(R,t))})),o==wt&&!na(ba(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+z(e)+"ON"+z(a)+`(${z(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(B+z(a)+`(${z(n)}${i} PRIMARY KEY${g(S($,a=>e+z(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(ca(I),async t=>{t!=n&&(await _(H+z(a)+"DROP"+z(t)),ra(R,t))}):[]]),N)u(c)?u(A)&&await _(Y+z(a)+aa(a,m)):await h(va(c,async(t,e)=>{if(u(t))await _(Y+z(a)+aa(a,m)+`AND(${z(n)}=${r([1])})`,[e]);else if(!f($)){const c=D(ya(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&na(d,a)&&await _(Y+z(a)+aa(a,m));else{const t=D(ca(ba(d,a)),a=>a!=n&&T(a)),e=Na(),s=[];fa(c??{},(a,n)=>{_a(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),p(s,n)}),await o(_,a,n,t,e,r,R),await _(Y+z(a)+aa(a,m)+`AND${z(n)}NOT IN(${Z(s,r)})`,s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(M+" INTO"+z(t)+"("+((...a)=>g(S(a,z),e))(n,...c)+")VALUES"+g(va(s,a=>"("+i(r)+","+Z(a,i,r)+")"),e)+"ON CONFLICT("+z(n)+`)DO ${q} SET`+g(S(c,a=>z(a)+"=excluded."+z(a)),e),va(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[C]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[C]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,b]=ot(t,_,N,v,A,T,O,$,R),p=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!oa.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),F=(a,t,n)=>Na(1==n?D(va(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):D(S(t,t=>[t,a[t]]),([,a])=>!u(a))),k=async(a,t)=>l?await g(y,P,{[C]:u(E)?a:F(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>b(async()=>{await I();const a=await(async()=>Na(D(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!ha(a[1]))))(),t=await(async()=>w?(await L(y,P,void 0,d))[C]:{})();return ha(a)&&u(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await I(),u(t)){const[t,n]=a();await p(t),await k(n)}else await p(t[0],!0),await k(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=Da(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>Ea(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??P,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=Ea(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:P,[Qa]:s},Xa,a=>na(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:P,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>na(E,t),(a,t)=>Ma(d,t));return pa(m,(a,t)=>t[4]??=ba(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const D=n+ga(Ra(T)),b=t+"_"+D,C=y??c,U=async(a,n,e="",c="")=>{const s=Q(t,a,D);return await N(x+X+J+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},H=async(a,t,n,e)=>(await N(x+a+"TRIGGER"+t+n+"EXECUTE "+J+e+"()"),t),W=a=>`PERFORM pg_notify('${b}',${a});`,Y=(a,t)=>A?s:2===t?Y(a,0)+" OR "+Y(a,1):ta(ba(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),j=(a,e)=>h(S([M,G,q],(c,s)=>{const i=g([t,"d",D,a,c],"_");return H(X,v(dt,a)&&m(i)<=63?z(i):Q(t,"d",D,c,n+ga(a)),`AFTER ${c} ON${z(a)}FOR EACH ROW WHEN(${Y(a,s)})`,e)})),K=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},aa=(a,t)=>{ba(a,D)===t&&(Pa(a,D),ea(a)&&ba(Et,C)===a&&Pa(Et,C))},sa=async()=>{const a=Fa(Et,C,()=>Da()),n=ba(a,D);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await sa());const e=[],c=[1,void 0,e];Pa(a,D,c),c[1]=(async()=>{const a=await U("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${k} command_tag='${B}' LOOP ${W("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");p(e,a),await H("EVENT ",Q(t,"c",D),`ON ddl_command_end WHEN TAG IN('${B}')`,a);const n=await U("d",W("'d:'||TG_TABLE_NAME")+"RETURN NULL;");p(e,n),c[3]=n,await h(S(ca(L),async a=>(await N(B+` IF NOT EXISTS${z(a)}("_id"text PRIMARY KEY)`),await j(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>K(e),()=>aa(a,c)),await $(()=>c[4]),t}return c},ia=async a=>{if(0==--a[0]){const t=ba(Et,C);a[4]=I(()=>K(a[2]),()=>aa(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await sa();try{return[await i(b,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{na(L,e)&&("c:"==n&&await j(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>ia(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>ia(t))},w,l,u,T,ca(L),async(a,t)=>await a(F+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${F} count(*) FROM information_schema.key_column_usage kcu2 ${k} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${k} c.table_schema='public'AND c.table_name IN(${Z(t,V)})`,t),y,d,"text",V,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=z(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=a=>typeof a,t="tinybase",n="",e=",",c=a(n),s="true",i=(a,t,n)=>a.replace(t,n),r=Promise,o=a=>(t,n,e)=>a(t)?e?.():n(t),w=globalThis,l=a=>null==a,u=a=>void 0===a,y=a=>null===a,d=o(l),E=o(u),_=t=>a(t)==c,N=a=>Array.isArray(a),m=a=>a.length,f=a=>0==m(a),v=(a,t)=>a.test(t),A=()=>{},T=a=>new r(a),h=async a=>r.all(a),O=(a,e)=>{throw((a,e)=>Error(t+":"+a+(u(e)?n:":"+e)))(a,e)},$=async(a,t)=>{try{return await a()}catch(a){t?.(a)}},R=(a,t)=>$(a,a=>{$(()=>t?.(a))}),I=async(a,t)=>{try{return await a()}finally{await t()}},L=(a,t)=>a.forEach(t),g=(a,t="")=>a.join(t),S=(a,t)=>a.map(t),D=(a,t)=>a.filter(t),b=(a,t=m(a))=>a.splice(0,t),p=(a,...t)=>a.push(...t),C="_",P="_id",F="SELECT",k="WHERE",U="TABLE",M="INSERT",G="DELETE",q="UPDATE",H="ALTER "+U,W="FROM",Y=G+" "+W,j=F+"*"+W,x="CREATE ",B=x+U,X="OR REPLACE ",J="FUNCTION",K=/\$tableName/g,z=a=>g(S(((a,t="",n)=>a.split(t,n))(a,"."),a=>`"${i(a,/"/g,'""')}"`),"."),Q=(...a)=>z(g(a,"_")),V=a=>"$"+a[0]++,Z=(a,t,n=[1])=>g(S(a,()=>t(n)),e),aa=(a,t=s)=>k+`(${ta(t,z(a))})`,ta=(a,t)=>i(a,K,t),na=(a,t)=>a?.has(t)??!1,ea=a=>u(a)||0==(a=>a?.size??0)(a),ca=a=>[...a?.values()??[]],sa=a=>a.clear(),ia=(a,t)=>a?.forEach(t),ra=(a,t)=>a?.delete(t),oa=Object,wa=a=>oa.getPrototypeOf(a),la=oa.entries,ua=a=>!l(a)&&d(wa(a),a=>a==oa.prototype||l(wa(a)),()=>!0),ya=oa.keys,da=oa.freeze,Ea=(...a)=>oa.assign(oa.create(null),...a),_a=(a,t,n)=>(oa.defineProperty(a,t,{configurable:!0,enumerable:!0,value:n,writable:!0}),n),Na=(a=[])=>{const t=oa.create(null);return L(a,([a,n])=>_a(t,a,n)),t},ma=(a,t)=>(delete a[t],a),fa=(a,t)=>L(ya(a),n=>t(a[n],n)),va=(a,t)=>S(la(a),([a,n])=>t(n,a)),Aa=(a,t)=>{const n=Na();return fa(a,(a,e)=>_a(n,e,t(a,e))),n},Ta=a=>m(ya(a)),ha=a=>ua(a)&&0==Ta(a),Oa=JSON.stringify,$a=JSON.parse,Ra=a=>Oa(a,(a,t)=>u(t)?"":t),Ia=a=>""===a?void 0:N(a)?S(a,Ia):ua(a)?Aa(a,Ia):a,La=new w.TextEncoder,ga=a=>{let t=2166136261;return L(La.encode(a),a=>{t^=a,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Sa=Map,Da=a=>new Sa(a),ba=(a,t)=>a?.get(t),pa=(a,t)=>ia(a,(a,n)=>t(n,a)),Ca=(a,t)=>{const n=[];return pa(a,(a,e)=>p(n,t(e,a))),n},Pa=(a,t,n)=>u(n)?(ra(a,t),a):a?.set(t,n),Fa=(a,t,n,e)=>{let c=ba(a,t);return na(a,t)?e?.(c):Pa(a,t,c=n()),c},ka=(a,t,n,e,c=0)=>E((n?Fa:ba)(a,t[c],c>m(t)-2?n:Da),s=>{if(c>m(t)-2)return e?.(s)&&Pa(a,t[c]),s;const i=ka(s,t,n,e,c+1);return ea(s)&&Pa(a,t[c]),i}),Ua=a=>new Set(N(a)||u(a)?a:[a]),Ma=(a,t)=>a?.add(t),Ga="ColumnName",qa="store",Ha="json",Wa=qa+"TableName",Ya=qa+"Id"+Ga,ja=qa+Ga,xa="autoLoadIntervalSeconds",Ba="rowId"+Ga,Xa="tableId",Ja="tableName",Ka="deleteEmptyColumns",za="deleteEmptyTable",Qa="condition",Va={mode:Ha,[xa]:1},Za={load:0,save:0,[Ja]:t+"_values"},at=a=>N(a)?a:void 0,tt=a=>!0===a||N(a),nt=(a,t,n,e,c)=>{const s=Da();return fa(a,(a,i)=>{const r=(l=Ea(t,_(a)?{[n]:a}:a),o=oa.values(l),w=Ta(t),o.slice(0,w));var o,w,l;y(r[0])||e(i,r[0])||(c(i,r[0]),Pa(s,i,r))}),s},et=/^\d+$/,ct=Da(),st=Da(),it=Da(),rt=(a,t,e,c,s,i,r,o={},w=0,l=[])=>{let d,_,A,h,g,C=0,P=0,F=0,k=0,U=0,M=0,G=0,q=0,H=0;const W={},Y=o.destroy;Fa(ct,l,()=>0),Fa(st,l,()=>[]),Pa(it,l,(ba(it,l)??0)+1);const j=Da(),[x,B,X,J,K]=((a=1,t,n)=>1!=a&&t.isMergeable()?[1,t.__[1],()=>t.__[2](!n),([[a],[t]])=>!ha(a)||!ha(t),t.setDefaultContent]:2!=a?[0,t._[7],t._[8],([a,t])=>!ha(a)||!ha(t),t.setContent]:O(0))(r,a,w),[z,Q,V]=(a=>{let t;const[e,c]=(()=>{const a=[];let t=0;return[e=>(e?a.shift():null)??n+t++,t=>{v(et,t)&&m(a)<1e3&&p(a,t)}]})(),s=Da(),i=(a,e,c,i)=>{let r,o=!1;if(L(((a,t=[n])=>{const e=[],c=(a,n)=>n==m(t)?p(e,a):y(t[n])?ia(a,a=>c(a,n+1)):L([t[n],null],t=>c(ba(a,t),n+1));return c(a,0),e})(e,c),n=>ia(n,n=>{const e=()=>ba(s,n)[0](t,...c??[],...i);a?(a=>{try{return a()}catch(a){(a=>{o||(r=a),o=!0})?.(a)}})(e):e()})),o)throw r};return[(c,i,r,o=[],w=()=>[])=>{t??=a();const l=e(1);return Pa(s,l,[c,i,r,o,w]),Ma(ka(i,r??[n],Ua),l),l},(a,t,...n)=>i(!1,a,t,n),a=>E(ba(s,a),([,t,e])=>(ka(t,e??[n],void 0,t=>(ra(t,a),ea(t)?1:0)),Pa(s,a),c(a),e)),a=>E(ba(s,a),([a,,n=[],e,c])=>{const s=(...i)=>{const r=m(i);r==m(n)?a(t,...i,...c(i)):y(n[r])?L(e[r]?.(...i)??[],a=>s(...i,a)):s(...i,n[r])};s()}),(a,t,...n)=>i(!0,a,t,n)]})(()=>fa),Z=a=>{a!=C&&(C=a,Q(j,void 0,C))},aa=()=>{ba(it,l)||ba(ct,l)||!f(ba(st,l)??[])||(Pa(ct,l),Pa(st,l),Pa(it,l))},ta=t=>{(x&&N(t?.[0])?1===t?.[2]?a.__[4]:a.__[3]:1===t?.[2]?a._[10]:a._[9])(t)},na=async()=>{_a()&&a.__?.[0]?.()&&await ua()},ca=a=>I(()=>_=a,()=>{_==a&&(_=void 0)}),sa=async a=>(2!=C&&(await I(async()=>{Z(1),P++,await ma(()=>$(async()=>{const n=await t();N(n)?ta(n):u(n)&&a?K(a):u(n)||O(1,n)},t=>{i?.(t),a&&K(a)}))},()=>Z(0)),await na()),fa),oa=async()=>{const a=G;G=0,a&&a==k&&!H&&(2==C?G=a:await sa())},wa=async a=>{const t=++k;let n=!0;if(await la(!0),t==k&&!H){const e=$(async()=>{const a=await c(async(a,e)=>{if(t==k&&!H)if(e||a){const t=n||2==C||!!M;U++,t&&M++,await I(async()=>{Z(1),P++,await(t?ma(()=>ta(e??a)):(()=>{try{return ta(e??a)}finally{Z(0)}})())},()=>{t&&M--,--U||Z(0)}),U||await na()}else 2==C?G=t:await sa()});t!=k||H?u(a)||await s(a):d=a},i);await ca(e),t!=k||H||await I(()=>sa(a),()=>{n=!1})}return fa},la=async(a=!1)=>{G=0,a||k++;const t=_,n=d;return d=void 0,await ca(I(async()=>{await t},async()=>{u(n)||await $(()=>s(n),i)})),fa},ua=async a=>(1!=C&&await I(()=>I(async()=>{Z(2),F++,await ma(()=>$(()=>e(B,a),i))},()=>Z(0)),oa),fa),ya=async()=>{const t=++q;return await Ea(!0),t!=q||H||(await ua(),t!=q||H||(A=a.addDidFinishTransactionListener(()=>{if(t==q&&!H){const a=X();J(a)&&$(()=>ua(a))}}))),fa},Ea=async(t=!1)=>{t||q++;const n=A;return A=void 0,u(n)||a.delListener(n),fa},_a=()=>!u(A),Na=async(a=!1)=>{const[t,n]=a?[Ea,la]:[la,Ea];return await I(()=>t(),async()=>{await n()}),fa},ma=async(...a)=>{let t,n=!1;const e=T(e=>f(a)?e():p(ba(st,l),...S(a,(c,s)=>{const r=s==m(a)-1;return[async()=>{let a;g=T(t=>a=t),await I(async()=>{try{await $(c,i)}catch(a){n||(n=!0,t=a)}r&&e()},()=>{g=void 0,a()})},r?e:void 0,W]})));if(await(async()=>{if(!ba(ct,l)){Pa(ct,l,1);const a=ba(st,l);let t=0;await I(async()=>{for(;t<m(a);){const n=a[t++];n[2]=void 0,await n[0]()}},()=>{b(a,t),Pa(ct,l,0),aa()})}})(),await e,n)throw t;return fa},fa={load:sa,startAutoLoad:wa,stopAutoLoad:la,isAutoLoading:()=>!u(d),save:ua,startAutoSave:ya,stopAutoSave:Ea,isAutoSaving:_a,startAutoPersisting:async(a,t=!1)=>{const[n,e,c,s]=t?[ya,wa,Ea,la]:[wa,ya,la,Ea],i=n(a),r=t?q:k;await i;const o=e(a),w=t?k:q;try{await o}catch(a){throw w==(t?k:q)&&await R(s),r==(t?q:k)&&await R(c),a}return fa},stopAutoPersisting:Na,getStatus:()=>C,addStatusListener:a=>z(a,j),delListener:t=>(V(t),a),schedule:ma,getStore:()=>a,getStats:()=>({loads:P,saves:F}),...o,destroy:async()=>(u(h)&&(H=1,h=(async()=>{const a=ba(st,l),t=D(a,([,a,t])=>t!=W||(a?.(),!1)),n=g;b(a),p(a,...t),await I(()=>I(()=>I(Na,()=>n),()=>Y?.()),()=>{const a=(ba(it,l)??1)-1;Pa(it,l,a||void 0),aa()})})()),await h,fa)};return da(fa)},ot=(a,n,c,i,r,o=wt,w,l,y)=>{const d=Da(),E=Da();let _=a;return[async()=>{sa(d),sa(E),L(await c(_,n),({tn:a,cn:t,uq:n})=>{Ma(Fa(d,a,Ua),t),n&&Ma(Fa(E,a,Ua),t)})},async(a,t,n,e)=>{const c=u(e)?void 0:Ua(e);return((a,t)=>na(ba(d,a),t))(a,t)?Na(D(S(await _(j+z(a)+aa(a,n)),a=>{const n=a[t],e=l?Aa(ma(a,t),l):ma(a,t);return[n,u(c)?e:Na(D(va(e,(a,t)=>[t,a]),([a])=>(a=>u(c)||na(c,a))(a)))]}),a=>!u(a[0])&&!ha(a[1]))):{}},async(a,n,c,l,y,N=!1,m=s,v)=>{const A=u(v)?void 0:Ua(v),T=a=>u(A)||na(A,a),O=Ua();fa(c??{},a=>L(D(ya(a??{}),T),a=>Ma(O,a)));const $=ca(O);if(u(A)&&!N&&y&&m==s&&f($)&&na(d,a))return await _("DROP "+U+z(a)),Pa(d,a),void Pa(E,a);const R=ba(d,a),I=Ua(D(ca(R),a=>a==n||T(a)));if(!f($))if(na(d,a)){if(await h(S([n,...$],async t=>{ra(I,t)||(await _(H+z(a)+"ADD"+z(t)+i),Ma(R,t))})),o==wt&&!na(ba(E,a),n)){const e=t+"_pk_"+ga(Oa([a,n]));await _("CREATE UNIQUE INDEX IF NOT EXISTS"+z(e)+"ON"+z(a)+`(${z(n)})`),Ma(Fa(E,a,Ua),n)}}else await _(B+z(a)+`(${z(n)}${i} PRIMARY KEY${g(S($,a=>e+z(a)+i))});`),Pa(d,a,Ua([n,...$])),Pa(E,a,Ua([n]));if(await h([...!N&&l?S(ca(I),async t=>{t!=n&&(await _(H+z(a)+"DROP"+z(t)),ra(R,t))}):[]]),N)u(c)?u(A)&&await _(Y+z(a)+aa(a,m)):await h(va(c,async(t,e)=>{if(u(t))await _(Y+z(a)+aa(a,m)+`AND(${z(n)}=${r([1])})`,[e]);else if(!f($)){const c=D(ya(t),T);f(c)||await o(_,a,n,c,{[e]:S(c,a=>w?w(t[a]):t[a])},r,R)}}));else if(f($))u(A)&&na(d,a)&&await _(Y+z(a)+aa(a,m));else{const t=D(ca(ba(d,a)),a=>a!=n&&T(a)),e=Na(),s=[];fa(c??{},(a,n)=>{_a(e,n,S(t,t=>w?w(a?.[t]):a?.[t])),p(s,n)}),await o(_,a,n,t,e,r,R),await _(Y+z(a)+aa(a,m)+`AND${z(n)}NOT IN(${Z(s,r)})`,s)}},async t=>{if(y)return await y(async a=>{const n=_;return _=a,await I(t,()=>{_=n})});await a("BEGIN");try{const n=await t();return await a("END"),n}catch(t){throw await $(()=>a("ROLLBACK")),t}}]},wt=async(a,t,n,c,s,i)=>{const r=[1];await a(M+" INTO"+z(t)+"("+((...a)=>g(S(a,z),e))(n,...c)+")VALUES"+g(va(s,a=>"("+i(r)+","+Z(a,i,r)+")"),e)+"ON CONFLICT("+z(n)+`)DO ${q} SET`+g(S(c,a=>z(a)+"=excluded."+z(a)),e),va(s,(a,t)=>[t,...S(a,a=>a??null)]).flat())},lt=(a,t,n,e,c,s,i,[r,o,w],l,u,y,d,E,_,N,m,f,v)=>{const[A,T,h,O]=ot(t,l,u,E,_,N,void 0,void 0,v);return rt(a,()=>O(async()=>{return await A(),a=(await T(r,o))[C]?.[w]??"null",Ia($a(a));var a}),a=>O(async()=>{await A(),await h(r,o,{[C]:{[w]:Ra(a()??null)}},!0,!0)}),n,e,c,i,{[d]:()=>y,destroy:s},0,y)},ut=(a,t,n,e,c,s,i,[r,o,[w,l,y,d,E]],_,N,m,f,v,A,T,O,$,R)=>{const[I,L,g,b]=ot(t,_,N,v,A,T,O,$,R),p=(a,t)=>h(Ca(o,async([n,e,c,s,i],r)=>{var o,w;t&&(o=a,w=r,!oa.hasOwn(o,w))||await g(n,e,a[r],c,s,t,i)})),F=(a,t,n)=>Na(1==n?D(va(a,(a,t)=>[t,a]),([a])=>{return n=a,t.includes(n);var n}):D(S(t,t=>[t,a[t]]),([,a])=>!u(a))),k=async(a,t)=>l?await g(y,P,{[C]:u(E)?a:F(a,E,t)},!0,!0,t,void 0,E):null;return rt(a,()=>b(async()=>{await I();const a=await(async()=>Na(D(await h(Ca(r,async([a,t,n],e)=>[a,await L(e,t,n)])),a=>!ha(a[1]))))(),t=await(async()=>w?(await L(y,P,void 0,d))[C]:{})();return ha(a)&&u(t)?void 0:[a,t]}),(a,t)=>b(async()=>{if(await I(),u(t)){const[t,n]=a();await p(t),await k(n)}else await p(t[0],!0),await k(t[1],!0)}),n,e,c,i,{[f]:()=>m,destroy:s},0,m)},yt=/^([cd]:)(.+)/,dt=/^[A-Za-z0-9_]+$/,Et=Da(),_t=a=>!u(a?.idleCount),Nt=async(a,t)=>{if(_t(a)){const n=await a.connect();return n.on("error",t??A),[n,a=>n.release(a)]}return[a,A]},mt=async(a,e,c,i,o)=>{const[w,l]=await Nt(e,o),u=(()=>{let a=r.resolve();return t=>a=a.then(t,t)})();try{return((a,e,c,i,r,o,w,l,u,y,d="getDb")=>{const N=((a,t)=>t?async(n,e)=>(t(n,e),await a(n,e)):a)(c,o),[A,,T,L]=(a=>{const n=(a=>Ea(Va,_(a)?{[Wa]:a}:a??{}))(a),e=n[xa];if(n.mode==Ha){const a=n[Wa]??t;return[1,e,[a,n[Ya]??P,n[ja]??qa],Ua(a)]}const{tables:{load:c={},save:i={}}={},values:r={}}=n,o=Ea(Za,r),{load:w,save:l}=o,u=[tt(w),tt(l),o[Ja],at(w),at(l)],y=u[2],d=Ua(y),E=Ua(y),N=nt(c,{[Xa]:null,[Ba]:P,[Qa]:s},Xa,a=>na(E,a),a=>Ma(d,a)),m=nt(i,{[Ja]:null,[Ba]:P,[Ka]:0,[za]:0,[Qa]:null},Ja,(a,t)=>na(E,t),(a,t)=>Ma(d,t));return pa(m,(a,t)=>t[4]??=ba(N,t[0])?.[2]??s),[0,e,[N,m,u],d]})(e);!A&&a.isMergeable()&&O(0);const D=n+ga(Ra(T)),b=t+"_"+D,C=y??c,U=async(a,n,e="",c="")=>{const s=Q(t,a,D);return await N(x+X+J+s+`()RETURNS ${e}trigger AS $$ ${c}BEGIN ${n}END;$$ LANGUAGE plpgsql;`),s},H=async(a,t,n,e)=>(await N(x+a+"TRIGGER"+t+n+"EXECUTE "+J+e+"()"),t),W=a=>`PERFORM pg_notify('${b}',${a});`,Y=(a,t)=>A?s:2===t?Y(a,0)+" OR "+Y(a,1):ta(ba(T[0],a)?.[2]??s,0==t?"NEW":"OLD"),j=(a,e)=>h(S([M,G,q],(c,s)=>{const i=g([t,"d",D,a,c],"_");return H(X,v(dt,a)&&m(i)<=63?z(i):Q(t,"d",D,c,n+ga(a)),`AFTER ${c} ON${z(a)}FOR EACH ROW WHEN(${Y(a,s)})`,e)})),K=async a=>{f(a)||await N(`DROP FUNCTION IF EXISTS${g(a,",")}CASCADE`)},aa=(a,t)=>{ba(a,D)===t&&(Pa(a,D),ea(a)&&ba(Et,C)===a&&Pa(Et,C))},sa=async()=>{const a=Fa(Et,C,()=>Da()),n=ba(a,D);if(n)return await n[1],n[0]?(n[0]++,n):(await $(()=>n[4]),await sa());const e=[],c=[1,void 0,e];Pa(a,D,c),c[1]=(async()=>{const a=await U("c",`FOR row IN SELECT object_identity FROM pg_event_trigger_ddl_commands()${k} command_tag='${B}' LOOP ${W("'c:'||SPLIT_PART(row.object_identity,'.',2)")}END LOOP;`,"event_","DECLARE row record;");p(e,a),await H("EVENT ",Q(t,"c",D),`ON ddl_command_end WHEN TAG IN('${B}')`,a);const n=await U("d",W("'d:'||TG_TABLE_NAME")+"RETURN NULL;");p(e,n),c[3]=n,await h(S(ca(L),async a=>(await N(B+` IF NOT EXISTS${z(a)}("_id"text PRIMARY KEY)`),await j(a,n))))})();try{await c[1]}catch(t){throw c[0]=0,c[4]=I(()=>K(e),()=>aa(a,c)),await $(()=>c[4]),t}return c},ia=async a=>{if(0==--a[0]){const t=ba(Et,C);a[4]=I(()=>K(a[2]),()=>aa(t,a)),await a[4]}};return(A?lt:ut)(a,N,async a=>{const t=await sa();try{return[await i(b,n=>{R(()=>{return E((e=n,c=yt,e?.match(c)),async([,n,e])=>{na(L,e)&&("c:"==n&&await j(e,t[3]),await a())});var e,c},w)}),t]}catch(a){throw await R(()=>ia(t),w),a}},async([a,t])=>{await I(()=>r(a),()=>ia(t))},w,l,u,T,ca(L),async(a,t)=>await a(F+` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${F} count(*) FROM information_schema.key_column_usage kcu2 ${k} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${k} c.table_schema='public'AND c.table_name IN(${Z(t,V)})`,t),y,d,"text",V,void 0,a=>Oa(a),a=>$a(a))})(a,c,(a,t=[])=>u(async()=>(await w.query(a,t)).rows),async(a,t)=>{const n=n=>n.channel==a?t(n.payload):0,c=z(a),[s,i]=await Nt(e,o);return s.on("notification",n),await s.query("LISTEN "+c),async()=>{s.off("notification",n),_t(e)?i(!0):await s.query("UNLISTEN "+c)}},a=>$(a,o),i,o,l,3,e,"getPg")}catch(a){throw l(),a}};export{mt as createPgPersister};
|
|
Binary file
|