tinybase 5.0.0-beta.14 → 5.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  2. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  4. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  6. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  8. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-powersync.cjs +1 -1
  12. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  16. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  17. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  18. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  19. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  20. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  21. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  22. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  23. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  24. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  25. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  26. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  27. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -1
  28. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  30. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  32. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  33. package/lib/debug/persisters/persister-browser.js +4 -7
  34. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +55 -48
  35. package/lib/debug/persisters/persister-electric-sql.js +55 -48
  36. package/lib/debug/persisters/persister-expo-sqlite-next.js +55 -48
  37. package/lib/debug/persisters/persister-expo-sqlite.js +55 -48
  38. package/lib/debug/persisters/persister-file.js +3 -7
  39. package/lib/debug/persisters/persister-libsql.js +55 -48
  40. package/lib/debug/persisters/persister-powersync.js +55 -48
  41. package/lib/debug/persisters/persister-sqlite-wasm.js +55 -48
  42. package/lib/debug/persisters/persister-sqlite3.js +55 -48
  43. package/lib/debug/synchronizers/synchronizer-ws-client.js +3 -7
  44. package/lib/debug/ui-react-dom.js +3 -7
  45. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  46. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  47. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  48. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  49. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  50. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  51. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  52. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  53. package/lib/es6/persisters/persister-libsql.js +1 -1
  54. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  55. package/lib/es6/persisters/persister-powersync.js +1 -1
  56. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  57. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  58. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  59. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  60. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  61. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  62. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  63. package/lib/persisters/persister-electric-sql.js +1 -1
  64. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  65. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  66. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  67. package/lib/persisters/persister-expo-sqlite.js +1 -1
  68. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  69. package/lib/persisters/persister-libsql.js +1 -1
  70. package/lib/persisters/persister-libsql.js.gz +0 -0
  71. package/lib/persisters/persister-powersync.js +1 -1
  72. package/lib/persisters/persister-powersync.js.gz +0 -0
  73. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  74. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  75. package/lib/persisters/persister-sqlite3.js +1 -1
  76. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  77. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +1 -1
  78. package/lib/types/persisters/persister-expo-sqlite.d.ts +1 -1
  79. package/lib/types/persisters/persister-sqlite-wasm.d.ts +1 -1
  80. package/lib/types/persisters/persister-sqlite3.d.ts +1 -1
  81. package/lib/types/persisters.d.ts +18 -7
  82. package/lib/types/ui-react.d.ts +1 -1
  83. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +1 -1
  84. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +1 -1
  85. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +1 -1
  86. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +1 -1
  87. package/lib/types/with-schemas/persisters.d.ts +18 -7
  88. package/lib/types/with-schemas/ui-react.d.ts +1 -1
  89. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  90. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  91. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  92. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  93. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  94. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  95. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  96. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  97. package/lib/umd/persisters/persister-libsql.js +1 -1
  98. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  99. package/lib/umd/persisters/persister-powersync.js +1 -1
  100. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  101. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  102. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  103. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  104. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  105. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  106. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  107. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  108. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  109. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  110. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  111. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  112. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  113. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  114. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  115. package/lib/umd-es6/persisters/persister-powersync.js +1 -1
  116. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  117. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  118. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  119. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  120. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  121. package/package.json +24 -24
  122. package/readme.md +2 -2
@@ -1 +1 @@
1
- import{addDatabaseChangeListener as a}from"expo-sqlite/next";const t=a=>typeof a,e="tinybase",n="",s=",",i=t(n),r=(a,t)=>a.repeat(t),o=Promise,c=clearInterval,l=a=>null==a,w=(a,t,e)=>l(a)?e?.():t(a),y=a=>t(a)==i,u=a=>Array.isArray(a),d=(a,t,e)=>a.slice(t,e),E=a=>a.length,m=async a=>o.all(a),p="_",g="_id",v=a=>`"${a.replace(/"/g,'""')}"`,A="SELECT",C=(a,t="")=>a.join(t),f=(a,t)=>a.map(t),N=a=>0==E(a),T=(a,t)=>a.filter(t),O=(a,...t)=>a.push(...t),h=(a,t)=>a?.has(t)??!1,R=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),b=Object,S=a=>b.getPrototypeOf(a),D=b.entries,I=b.keys,M=b.freeze,P=(a=[])=>b.fromEntries(a),_=(...a)=>b.assign({},...a),F=(a,t)=>t in a,x=(a,t)=>f(D(a),(([a,e])=>t(e,a))),j=a=>b.values(a),B=a=>E(I(a)),H=a=>(a=>!l(a)&&w(S(a),(a=>a==b.prototype||l(S(a))),(()=>!0)))(a)&&0==B(a),Y=a=>new Map(a),$=a=>[...a?.keys()??[]],k=(a,t)=>a?.get(t),G=(a,t)=>f([...a?.entries()??[]],(([a,e])=>t(e,a))),J=(a,t,e)=>l(e)?(L(a,t),a):a?.set(t,e),U=(a,t,e,n)=>(h(a,t)||J(a,t,e()),k(a,t)),W=(a,t,e,n=J)=>(x(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>F(t,e)?0:n(a,e))),a),q=a=>new Set(u(a)||l(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,Q="DELETE FROM",X=A+"*FROM",Z="FROM pragma_table_",aa="WHERE",ta=(a,t,e,i)=>{const r=Y();return[async()=>W(r,P(await m(f(await a("SELECT name "+Z+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+na(t)+")ORDER BY name",t),(async({name:t})=>[t,P(f(await a(A+" name,type "+Z+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>J(r,t,W(U(r,t,Y),e,((a,t,e)=>{e!=k(a,t)&&J(a,t,e)}),((a,t)=>J(a,t))))),((a,t)=>J(r,t))),async(t,e)=>((a,t)=>!l(k(k(r,a),t)))(t,e)?P(T(f(await a(X+v(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!l(a)&&!H(t)))):{},async(t,e,o,c,w,y=!1)=>{const u=q();x(o??{},(a=>f(I(a??{}),(a=>z(u,a)))));const d=R(u);if(!y&&w&&N(d)&&h(r,t))return await a("DROP "+K+v(t)),void J(r,t);if(N(d)||h(r,t)){const s=k(r,t),i=q($(s));await m([...f(d,(async e=>{L(i,e)||(await a(V+v(t)+"ADD"+v(e)),J(s,e,n))})),...!y&&c?f(R(i),(async n=>{n!=e&&(await a(V+v(t)+"DROP"+v(n)),J(s,n))})):[]])}else await a("CREATE "+K+v(t)+"("+v(e)+` PRIMARY KEY ON CONFLICT REPLACE${C(f(d,(a=>s+v(a))))});`),J(r,t,Y([[e,n],...f(d,(a=>[a,n]))]));if(y)l(o)?await a(Q+v(t)+aa+" 1"):await m(x(o,(async(n,s)=>{l(n)?await a(Q+v(t)+aa+v(e)+"=?",[s]):N(d)||await ea(a,t,e,I(n),[s,...j(n)],i)})));else if(N(d))h(r,t)&&await a(Q+v(t)+aa+" 1");else{const n=T($(k(r,t)),(a=>a!=e)),s=[],c=[];x(o??{},((a,t)=>{O(s,t,...f(n,(t=>a?.[t]))),O(c,t)})),await ea(a,t,e,n,s,i),await a(Q+v(t)+aa+v(e)+"NOT IN("+na(c)+")",c)}},async t=>{let n;await a("BEGIN");try{n=await t()}catch(a){e?.(a)}return await a("END"),n}]},ea=async(a,t,e,i,o,c=!0)=>await a("INSERT "+(c?n:"OR REPLACE ")+"INTO"+v(t)+"("+v(e)+C(f(i,(a=>s+v(a))))+")VALUES"+d(r(`,(?${r(",?",E(i))})`,E(o)/(E(i)+1)),1)+(c?"ON CONFLICT("+v(e)+")DO UPDATE SET"+C(f(i,(a=>v(a)+"=excluded."+v(a))),s):n),f(o,(a=>a??null))),na=a=>C(f(a,(()=>"?")),s),sa=JSON.parse,ia=Y(),ra=Y(),oa=(a,t,e,n,s,i,r,o={},c=[])=>{let y,d,E,m=0;U(ia,c,(()=>0)),U(ra,c,(()=>[]));const[p,g,v,A,C]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!H(a)||!H(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!H(a)||!H(t),t.setContent]:0)(r,a),f=t=>{(p&&u(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},N=async a=>(2!=m&&(m=1,await L((async()=>{try{f(await t())}catch(t){i?.(t),a&&C(a)}m=0}))),b),T=()=>(d&&(s(d),d=void 0),b),h=async a=>(1!=m&&(m=2,await L((async()=>{try{await e(g,a)}catch(a){i?.(a)}m=0}))),b),R=()=>(w(E,a.delListener),E=void 0,b),L=async(...a)=>(O(k(ra,c),...a),await(async()=>{if(!k(ia,c)){for(J(ia,c,1);!l((a=k(ra,c),y=a.shift()));)try{await y()}catch(a){i?.(a)}J(ia,c,0)}var a})(),b),b={load:N,startAutoLoad:async a=>(await T().load(a),d=n((async(a,t)=>{t||a?2!=m&&(m=1,f(t??a),m=0):await N()})),b),stopAutoLoad:T,isAutoLoading:()=>!l(d),save:h,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=v();A(a)&&h(a)})),b),stopAutoSave:R,isAutoSaving:()=>!l(E),schedule:L,getStore:()=>a,destroy:()=>T().stopAutoSave(),getStats:()=>({}),...o};return M(b)},ca="store",la=(a,t,e,n,s,[i],r,o,c,l)=>{const[w,y,u,d]=ta(t,r,s,l);return oa(a,(async()=>await d((async()=>(await w(),sa((await y(i,g))[p]?.[ca]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,g,{[p]:{[ca]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?b.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[c]:()=>o},o)},wa=(a,t,e,n,s,[i,r,[o,c,w]],y,u,d,E)=>{const[v,A,C,f]=ta(t,y,s,E),N=async(a,t)=>await m(G(r,(async([e,n,s,i],r)=>{t&&!F(a,r)||await C(e,n,a[r],s,i,t)}))),O=async(a,t)=>c?await C(w,g,{[p]:a},!0,!0,t):null;return oa(a,(async()=>await f((async()=>{await v();const a=await(async()=>P(T(await m(G(i,(async([a,t],e)=>[a,await A(e,t)]))),(a=>!H(a[1])))))(),t=await(async()=>o?(await A(w,g))[p]:{})();return H(a)&&l(t)?void 0:[a,t]}))),(async(a,t)=>await f((async()=>{if(await v(),l(t)){const[t,e]=a();await N(t),await O(e)}else await N(t[0],!0),await O(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},ya="json",ua="autoLoadIntervalSeconds",da="rowIdColumnName",Ea="tableId",ma="tableName",pa={mode:ya,[ua]:1},ga={load:0,save:0,[ma]:e+"_values"},va=(a,t,e,n)=>{const s=Y();return x(a,((a,i)=>{const r=d(j(_(t,y(a)?{[e]:a}:a)),0,B(t));l(r[0])||n(i,r[0])||J(s,i,r)})),s},Aa="pragma ",Ca="data_version",fa="schema_version",Na=(a,t,n,s,i,r,o,l,w="getDb",u)=>{let E,m,p;const[v,C,f,N]=(a=>{const t=(a=>_(pa,y(a)?{storeTableName:a}:a??{}))(a),n=t[ua];if(t.mode==ya){const{storeTableName:a=e}=t;return[1,n,[a],q(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=t,o=d(j(_(ga,r)),0,B(ga)),c=o[2],l=q(c);return[0,n,[va(s,{[Ea]:null,[da]:g},Ea,(a=>z(l,a)&&a==c)),va(i,{[ma]:null,[da]:g,deleteEmptyColumns:0,deleteEmptyTable:0},ma,((a,t)=>z(l,t)&&t==c)),o],l]})(t);return(v?la:wa)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(Aa+Ca))[0][Ca],e=(await n(Aa+fa))[0][fa],s=(await n(A+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(m??=e)&&s==(p??=s)||(a(),E=t,m=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>N.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),E=m=null,i(t)}),o,f,R(N),l,w,u)},Ta=(t,e,n,s,i)=>Na(t,n,(async(a,t=[])=>await e.getAllAsync(a,t)),(t=>a((({tableName:a})=>t(a)))),(a=>a.remove()),s,i,e);export{Ta as createExpoSqliteNextPersister};
1
+ import{addDatabaseChangeListener as a}from"expo-sqlite/next";const t=a=>typeof a,e="tinybase",n="",s=",",i=t(n),r=(a,t)=>a.repeat(t),c=Promise,o=clearInterval,l=a=>null==a,y=(a,t,e)=>l(a)?e?.():t(a),w=a=>t(a)==i,u=a=>Array.isArray(a),d=(a,t,e)=>a.slice(t,e),E=a=>a.length,v=async a=>c.all(a),m=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),g=a=>0==E(a),A=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),O=(a,t)=>a?.has(t)??!1,N=a=>[...a?.values()??[]],T=(a,t)=>a?.delete(t),f=Object,h=a=>f.getPrototypeOf(a),R=f.entries,L=f.keys,S=f.freeze,b=(a=[])=>f.fromEntries(a),I=(...a)=>f.assign({},...a),D=(a,t)=>t in a,M=(a,t)=>p(R(a),(([a,e])=>t(e,a))),$=a=>f.values(a),_=a=>E(L(a)),P=a=>(a=>!l(a)&&y(h(a),(a=>a==f.prototype||l(h(a))),(()=>!0)))(a)&&0==_(a),F=a=>new Map(a),x=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),B=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),H=(a,t,e)=>l(e)?(T(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(O(a,t)||H(a,t,e()),j(a,t)),Y=(a,t,e,n=H)=>(M(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>D(t,e)?0:n(a,e))),a),k="_",G="_id",U=a=>`"${a.replace(/"/g,'""')}"`,W="SELECT",q=a=>new Set(u(a)||l(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,Q="DELETE FROM",X=W+"*FROM",Z="FROM pragma_table_",aa="WHERE",ta=(a,t,e,i)=>{const r=F();return[async()=>Y(r,b(await v(p(await a("SELECT name "+Z+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+na(t)+")ORDER BY name",t),(async({name:t})=>[t,b(p(await a(W+" name,type "+Z+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>H(r,t,Y(J(r,t,F),e,((a,t,e)=>{e!=j(a,t)&&H(a,t,e)}),((a,t)=>H(a,t))))),((a,t)=>H(r,t))),async(t,e)=>((a,t)=>!l(j(j(r,a),t)))(t,e)?b(A(p(await a(X+U(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!l(a)&&!P(t)))):{},async(t,e,c,o,y,w=!1)=>{const u=q();M(c??{},(a=>p(L(a??{}),(a=>z(u,a)))));const d=N(u);if(!w&&y&&g(d)&&O(r,t))return await a("DROP "+K+U(t)),void H(r,t);if(g(d)||O(r,t)){const s=j(r,t),i=q(x(s));await v([...p(d,(async e=>{T(i,e)||(await a(V+U(t)+"ADD"+U(e)),H(s,e,n))})),...!w&&o?p(N(i),(async n=>{n!=e&&(await a(V+U(t)+"DROP"+U(n)),H(s,n))})):[]])}else await a("CREATE "+K+U(t)+"("+U(e)+` PRIMARY KEY ON CONFLICT REPLACE${m(p(d,(a=>s+U(a))))});`),H(r,t,F([[e,n],...p(d,(a=>[a,n]))]));if(w)l(c)?await a(Q+U(t)+aa+" 1"):await v(M(c,(async(n,s)=>{l(n)?await a(Q+U(t)+aa+U(e)+"=?",[s]):g(d)||await ea(a,t,e,L(n),[s,...$(n)],i)})));else if(g(d))O(r,t)&&await a(Q+U(t)+aa+" 1");else{const n=A(x(j(r,t)),(a=>a!=e)),s=[],o=[];M(c??{},((a,t)=>{C(s,t,...p(n,(t=>a?.[t]))),C(o,t)})),await ea(a,t,e,n,s,i),await a(Q+U(t)+aa+U(e)+"NOT IN("+na(o)+")",o)}},async t=>{let n;await a("BEGIN");try{n=await t()}catch(a){e?.(a)}return await a("END"),n}]},ea=async(a,t,e,i,c,o=!0)=>await a("INSERT "+(o?n:"OR REPLACE ")+"INTO"+U(t)+"("+U(e)+m(p(i,(a=>s+U(a))))+")VALUES"+d(r(`,(?${r(",?",E(i))})`,E(c)/(E(i)+1)),1)+(o?"ON CONFLICT("+U(e)+")DO UPDATE SET"+m(p(i,(a=>U(a)+"=excluded."+U(a))),s):n),p(c,(a=>a??null))),na=a=>m(p(a,(()=>"?")),s),sa=F(),ia=F(),ra=(a,t,e,n,s,i,r,c={},o=[])=>{let w,d,E,v=0;J(sa,o,(()=>0)),J(ia,o,(()=>[]));const[m,p,g,A,O]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!P(a)||!P(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!P(a)||!P(t),t.setContent]:0)(r,a),N=t=>{(m&&u(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=v&&(v=1,await L((async()=>{try{N(await t())}catch(t){i?.(t),a&&O(a)}v=0}))),b),f=()=>(d&&(s(d),d=void 0),b),h=async a=>(1!=v&&(v=2,await L((async()=>{try{await e(p,a)}catch(a){i?.(a)}v=0}))),b),R=()=>(y(E,a.delListener),E=void 0,b),L=async(...a)=>(C(j(ia,o),...a),await(async()=>{if(!j(sa,o)){for(H(sa,o,1);!l((a=j(ia,o),w=a.shift()));)try{await w()}catch(a){i?.(a)}H(sa,o,0)}var a})(),b),b={load:T,startAutoLoad:async a=>(await f().load(a),d=n((async(a,t)=>{t||a?2!=v&&(v=1,N(t??a),v=0):await T()})),b),stopAutoLoad:f,isAutoLoading:()=>!l(d),save:h,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=g();A(a)&&h(a)})),b),stopAutoSave:R,isAutoSaving:()=>!l(E),schedule:L,getStore:()=>a,destroy:()=>f().stopAutoSave(),getStats:()=>({}),...c};return S(b)},ca=(a,t,e,n,s,i,[r,c,o],l,y,w,u)=>{const[d,E,v,m]=ta(t,l,s,u);return ra(a,(async()=>await m((async()=>{return await d(),a=(await E(r,c))[k]?.[o]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await m((async()=>{var t;await d(),await v(r,c,{[k]:{[o]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[w]:()=>y},y)},oa=(a,t,e,n,s,i,[r,c,[o,y,w]],u,d,E,m)=>{const[p,g,C,O]=ta(t,u,s,m),N=async(a,t)=>await v(B(c,(async([e,n,s,i],r)=>{t&&!D(a,r)||await C(e,n,a[r],s,i,t)}))),T=async(a,t)=>y?await C(w,G,{[k]:a},!0,!0,t):null;return ra(a,(async()=>await O((async()=>{await p();const a=await(async()=>b(A(await v(B(r,(async([a,t],e)=>[a,await g(e,t)]))),(a=>!P(a[1])))))(),t=await(async()=>o?(await g(w,G))[k]:{})();return P(a)&&l(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await p(),l(t)){const[t,e]=a();await N(t),await T(e)}else await N(t[0],!0),await T(t[1],!0)}))),e,n,s,i,{[E]:()=>d},d)},la="ColumnName",ya="store",wa="json",ua=ya+"TableName",da=ya+"Id"+la,Ea=ya+la,va="autoLoadIntervalSeconds",ma="rowId"+la,pa="tableId",ga="tableName",Aa={mode:wa,[va]:1},Ca={load:0,save:0,[ga]:e+"_values"},Oa=(a,t,e,n,s)=>{const i=F();return M(a,((a,r)=>{const c=d($(I(t,w(a)?{[e]:a}:a)),0,_(t));l(c[0])||n(r,c[0])||(s(r,c[0]),H(i,r,c))})),i},Na="pragma_",Ta="data_version",fa="schema_version",ha=(t,n,s,i,r)=>((a,t,n,s,i,r,c,l,y,u="getDb",E)=>{let v,m,p;const[g,A,C,T]=(a=>{const t=(a=>I(Aa,w(a)?{[ua]:a}:a??{}))(a),n=t[va];if(t.mode==wa){const a=t[ua]??e;return[1,n,[a,t[da]??G,t[Ea]??ya],q(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=t,c=d($(I(Ca,r)),0,_(Ca)),o=c[2],l=q(o),y=q(o);return[0,n,[Oa(s,{[pa]:null,[ma]:G},pa,(a=>O(y,a)),(a=>z(l,a))),Oa(i,{[ga]:null,[ma]:G,deleteEmptyColumns:0,deleteEmptyTable:0},ga,((a,t)=>O(y,t)),((a,t)=>z(l,t))),c],l]})(t);return(g?ca:oa)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${Ta} d,${fa} s,TOTAL_CHANGES() c FROM ${Na}${Ta} JOIN ${Na}${fa}`);t==(v??=t)&&e==(m??=e)&&s==(p??=s)||(a(),v=t,m=e)}catch{}},e=A,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{o(a),v=m=p=null,i(t)}),c,l,C,N(T),y,u,E)})(t,s,(async(a,t=[])=>await n.getAllAsync(a,t)),(t=>a((({tableName:a})=>t(a)))),(a=>a.remove()),i,r,3,n);export{ha as createExpoSqliteNextPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),g="_",m="_id",p=a=>`"${a.replace(/"/g,'""')}"`,v="SELECT",A=(a,t="")=>a.join(t),C=(a,t)=>a.map(t),N=a=>0==d(a),T=(a,t)=>a.filter(t),f=(a,...t)=>a.push(...t),h=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),b=Object,L=a=>b.getPrototypeOf(a),S=b.entries,D=b.keys,I=b.freeze,M=(a=[])=>b.fromEntries(a),P=(...a)=>b.assign({},...a),_=(a,t)=>t in a,F=(a,t)=>C(S(a),(([a,e])=>t(e,a))),j=a=>b.values(a),x=a=>d(D(a)),B=a=>(a=>!o(a)&&l(L(a),(a=>a==b.prototype||o(L(a))),(()=>!0)))(a)&&0==x(a),H=a=>new Map(a),Y=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),k=(a,t)=>C([...a?.entries()??[]],(([a,e])=>t(e,a))),G=(a,t,e)=>o(e)?(R(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(h(a,t)||G(a,t,e()),$(a,t)),U=(a,t,e,n=G)=>(F(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>_(t,e)?0:n(a,e))),a),W=a=>new Set(y(a)||o(a)?a:[a]),q=(a,t)=>a?.add(t),z="TABLE",K="ALTER "+z,V="DELETE FROM",Q=v+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=H();return[async()=>U(r,M(await E(C(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,M(C(await a(v+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>G(r,t,U(J(r,t,H),e,((a,t,e)=>{e!=$(a,t)&&G(a,t,e)}),((a,t)=>G(a,t))))),((a,t)=>G(r,t))),async(t,e)=>((a,t)=>!o($($(r,a),t)))(t,e)?M(T(C(await a(Q+p(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!B(t)))):{},async(t,s,c,l,w,y=!1)=>{const u=W();F(c??{},(a=>C(D(a??{}),(a=>q(u,a)))));const d=O(u);if(!y&&w&&N(d)&&h(r,t))return await a("DROP "+z+p(t)),void G(r,t);if(N(d)||h(r,t)){const n=$(r,t),i=W(Y(n));await E([...C(d,(async s=>{R(i,s)||(await a(K+p(t)+"ADD"+p(s)),G(n,s,e))})),...!y&&l?C(O(i),(async e=>{e!=s&&(await a(K+p(t)+"DROP"+p(e)),G(n,e))})):[]])}else await a("CREATE "+z+p(t)+"("+p(s)+` PRIMARY KEY ON CONFLICT REPLACE${A(C(d,(a=>n+p(a))))});`),G(r,t,H([[s,e],...C(d,(a=>[a,e]))]));if(y)o(c)?await a(V+p(t)+Z+" 1"):await E(F(c,(async(e,n)=>{o(e)?await a(V+p(t)+Z+p(s)+"=?",[n]):N(d)||await ta(a,t,s,D(e),[n,...j(e)],i)})));else if(N(d))h(r,t)&&await a(V+p(t)+Z+" 1");else{const e=T(Y($(r,t)),(a=>a!=s)),n=[],o=[];F(c??{},((a,t)=>{f(n,t,...C(e,(t=>a?.[t]))),f(o,t)})),await ta(a,t,s,e,n,i),await a(V+p(t)+Z+p(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+p(t)+"("+p(s)+A(C(r,(a=>n+p(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+p(s)+")DO UPDATE SET"+A(C(r,(a=>p(a)+"=excluded."+p(a))),n):e),C(c,(a=>a??null))),ea=a=>A(C(a,(()=>"?")),n),na=JSON.parse,sa=H(),ia=H(),ra=(a,t,e,n,s,i,r,c={},w=[])=>{let u,d,E,g=0;J(sa,w,(()=>0)),J(ia,w,(()=>[]));const[m,p,v,A,C]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!B(a)||!B(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!B(a)||!B(t),t.setContent]:0)(r,a),N=t=>{(m&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=g&&(g=1,await b((async()=>{try{N(await t())}catch(t){i?.(t),a&&C(a)}g=0}))),L),h=()=>(d&&(s(d),d=void 0),L),O=async a=>(1!=g&&(g=2,await b((async()=>{try{await e(p,a)}catch(a){i?.(a)}g=0}))),L),R=()=>(l(E,a.delListener),E=void 0,L),b=async(...a)=>(f($(ia,w),...a),await(async()=>{if(!$(sa,w)){for(G(sa,w,1);!o((a=$(ia,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}G(sa,w,0)}var a})(),L),L={load:T,startAutoLoad:async a=>(await h().load(a),d=n((async(a,t)=>{t||a?2!=g&&(g=1,N(t??a),g=0):await T()})),L),stopAutoLoad:h,isAutoLoading:()=>!o(d),save:O,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=v();A(a)&&O(a)})),L),stopAutoSave:R,isAutoSaving:()=>!o(E),schedule:b,getStore:()=>a,destroy:()=>h().stopAutoSave(),getStats:()=>({}),...c};return I(L)},ca="store",oa=(a,t,e,n,s,[i],r,c,o,l)=>{const[w,y,u,d]=aa(t,r,s,l);return ra(a,(async()=>await d((async()=>(await w(),na((await y(i,m))[g]?.[ca]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,m,{[g]:{[ca]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?b.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[o]:()=>c},c)},la=(a,t,e,n,s,[i,r,[c,l,w]],y,u,d,p)=>{const[v,A,C,N]=aa(t,y,s,p),f=async(a,t)=>await E(k(r,(async([e,n,s,i],r)=>{t&&!_(a,r)||await C(e,n,a[r],s,i,t)}))),h=async(a,t)=>l?await C(w,m,{[g]:a},!0,!0,t):null;return ra(a,(async()=>await N((async()=>{await v();const a=await(async()=>M(T(await E(k(i,(async([a,t],e)=>[a,await A(e,t)]))),(a=>!B(a[1])))))(),t=await(async()=>c?(await A(w,m))[g]:{})();return B(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await N((async()=>{if(await v(),o(t)){const[t,e]=a();await f(t),await h(e)}else await f(t[0],!0),await h(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},wa="json",ya="autoLoadIntervalSeconds",ua="rowIdColumnName",da="tableId",Ea="tableName",ga={mode:wa,[ya]:1},ma={load:0,save:0,[Ea]:t+"_values"},pa=(a,t,e,n)=>{const s=H();return F(a,((a,i)=>{const r=u(j(P(t,w(a)?{[e]:a}:a)),0,x(t));o(r[0])||n(i,r[0])||G(s,i,r)})),s},va="pragma ",Aa="data_version",Ca="schema_version",Na=(a,e,n,s,i,r,o,l,y="getDb",d)=>{let E,g,p;const[A,C,N,T]=(a=>{const e=(a=>P(ga,w(a)?{storeTableName:a}:a??{}))(a),n=e[ya];if(e.mode==wa){const{storeTableName:a=t}=e;return[1,n,[a],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(j(P(ma,r)),0,x(ma)),o=c[2],l=W(o);return[0,n,[pa(s,{[da]:null,[ua]:m},da,(a=>q(l,a)&&a==o)),pa(i,{[Ea]:null,[ua]:m,deleteEmptyColumns:0,deleteEmptyTable:0},Ea,((a,t)=>q(l,t)&&t==o)),c],l]})(e);return(A?oa:la)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(va+Aa))[0][Aa],e=(await n(va+Ca))[0][Ca],s=(await n(v+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(g??=e)&&s==(p??=s)||(a(),E=t,g=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),E=g=null,i(t)}),o,N,O(T),l,y,d)},Ta=(a,t,e,n,s)=>Na(a,e,(async(a,e=[])=>(await t.execAsync([{sql:a,args:e}],!1))[0].rows),(a=>t.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),n,s,t);export{Ta as createExpoSqlitePersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),y=t=>a(t)==s,w=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),v=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),m=a=>0==d(a),p=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),T=Object,h=a=>T.getPrototypeOf(a),R=T.entries,f=T.keys,L=T.freeze,S=(a=[])=>T.fromEntries(a),b=(...a)=>T.assign({},...a),D=(a,t)=>t in a,I=(a,t)=>g(R(a),(([a,e])=>t(e,a))),M=a=>T.values(a),$=a=>d(f(a)),_=a=>(a=>!o(a)&&l(h(a),(a=>a==T.prototype||o(h(a))),(()=>!0)))(a)&&0==$(a),P=a=>new Map(a),F=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),x=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>o(e)?(N(a,t),a):a?.set(t,e),H=(a,t,e,n)=>(A(a,t)||B(a,t,e()),j(a,t)),J=(a,t,e,n=B)=>(I(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>D(t,e)?0:n(a,e))),a),Y="_",k="_id",G=a=>`"${a.replace(/"/g,'""')}"`,U="SELECT",W=a=>new Set(w(a)||o(a)?a:[a]),q=(a,t)=>a?.add(t),z="TABLE",K="ALTER "+z,V="DELETE FROM",Q=U+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=P();return[async()=>J(r,S(await E(g(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,S(g(await a(U+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(r,t,J(H(r,t,P),e,((a,t,e)=>{e!=j(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(r,t))),async(t,e)=>((a,t)=>!o(j(j(r,a),t)))(t,e)?S(p(g(await a(Q+G(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!_(t)))):{},async(t,s,c,l,y,w=!1)=>{const u=W();I(c??{},(a=>g(f(a??{}),(a=>q(u,a)))));const d=O(u);if(!w&&y&&m(d)&&A(r,t))return await a("DROP "+z+G(t)),void B(r,t);if(m(d)||A(r,t)){const n=j(r,t),i=W(F(n));await E([...g(d,(async s=>{N(i,s)||(await a(K+G(t)+"ADD"+G(s)),B(n,s,e))})),...!w&&l?g(O(i),(async e=>{e!=s&&(await a(K+G(t)+"DROP"+G(e)),B(n,e))})):[]])}else await a("CREATE "+z+G(t)+"("+G(s)+` PRIMARY KEY ON CONFLICT REPLACE${v(g(d,(a=>n+G(a))))});`),B(r,t,P([[s,e],...g(d,(a=>[a,e]))]));if(w)o(c)?await a(V+G(t)+Z+" 1"):await E(I(c,(async(e,n)=>{o(e)?await a(V+G(t)+Z+G(s)+"=?",[n]):m(d)||await ta(a,t,s,f(e),[n,...M(e)],i)})));else if(m(d))A(r,t)&&await a(V+G(t)+Z+" 1");else{const e=p(F(j(r,t)),(a=>a!=s)),n=[],o=[];I(c??{},((a,t)=>{C(n,t,...g(e,(t=>a?.[t]))),C(o,t)})),await ta(a,t,s,e,n,i),await a(V+G(t)+Z+G(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+G(t)+"("+G(s)+v(g(r,(a=>n+G(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+G(s)+")DO UPDATE SET"+v(g(r,(a=>G(a)+"=excluded."+G(a))),n):e),g(c,(a=>a??null))),ea=a=>v(g(a,(()=>"?")),n),na=P(),sa=P(),ia=(a,t,e,n,s,i,r,c={},y=[])=>{let u,d,E,v=0;H(na,y,(()=>0)),H(sa,y,(()=>[]));const[g,m,p,A,O]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!_(a)||!_(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!_(a)||!_(t),t.setContent]:0)(r,a),N=t=>{(g&&w(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=v&&(v=1,await S((async()=>{try{N(await t())}catch(t){i?.(t),a&&O(a)}v=0}))),b),h=()=>(d&&(s(d),d=void 0),b),R=async a=>(1!=v&&(v=2,await S((async()=>{try{await e(m,a)}catch(a){i?.(a)}v=0}))),b),f=()=>(l(E,a.delListener),E=void 0,b),S=async(...a)=>(C(j(sa,y),...a),await(async()=>{if(!j(na,y)){for(B(na,y,1);!o((a=j(sa,y),u=a.shift()));)try{await u()}catch(a){i?.(a)}B(na,y,0)}var a})(),b),b={load:T,startAutoLoad:async a=>(await h().load(a),d=n((async(a,t)=>{t||a?2!=v&&(v=1,N(t??a),v=0):await T()})),b),stopAutoLoad:h,isAutoLoading:()=>!o(d),save:R,startAutoSave:async()=>(await f().save(),E=a.addDidFinishTransactionListener((()=>{const a=p();A(a)&&R(a)})),b),stopAutoSave:f,isAutoSaving:()=>!o(E),schedule:S,getStore:()=>a,destroy:()=>h().stopAutoSave(),getStats:()=>({}),...c};return L(b)},ra=(a,t,e,n,s,i,[r,c,o],l,y,w,u)=>{const[d,E,v,g]=aa(t,l,s,u);return ia(a,(async()=>await g((async()=>{return await d(),a=(await E(r,c))[Y]?.[o]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await d(),await v(r,c,{[Y]:{[o]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[w]:()=>y},y)},ca=(a,t,e,n,s,i,[r,c,[l,y,w]],u,d,v,g)=>{const[m,C,A,O]=aa(t,u,s,g),N=async(a,t)=>await E(x(c,(async([e,n,s,i],r)=>{t&&!D(a,r)||await A(e,n,a[r],s,i,t)}))),T=async(a,t)=>y?await A(w,k,{[Y]:a},!0,!0,t):null;return ia(a,(async()=>await O((async()=>{await m();const a=await(async()=>S(p(await E(x(r,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>l?(await C(w,k))[Y]:{})();return _(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await m(),o(t)){const[t,e]=a();await N(t),await T(e)}else await N(t[0],!0),await T(t[1],!0)}))),e,n,s,i,{[v]:()=>d},d)},oa="ColumnName",la="store",ya="json",wa=la+"TableName",ua=la+"Id"+oa,da=la+oa,Ea="autoLoadIntervalSeconds",va="rowId"+oa,ga="tableId",ma="tableName",pa={mode:ya,[Ea]:1},Ca={load:0,save:0,[ma]:t+"_values"},Aa=(a,t,e,n,s)=>{const i=P();return I(a,((a,r)=>{const c=u(M(b(t,y(a)?{[e]:a}:a)),0,$(t));o(c[0])||n(r,c[0])||(s(r,c[0]),B(i,r,c))})),i},Oa="pragma_",Na="data_version",Ta="schema_version",ha=(a,e,n,s,i)=>((a,e,n,s,i,r,o,l,w,d="getDb",E)=>{let v,g,m;const[p,C,N,T]=(a=>{const e=(a=>b(pa,y(a)?{[wa]:a}:a??{}))(a),n=e[Ea];if(e.mode==ya){const a=e[wa]??t;return[1,n,[a,e[ua]??k,e[da]??la],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(M(b(Ca,r)),0,$(Ca)),o=c[2],l=W(o),w=W(o);return[0,n,[Aa(s,{[ga]:null,[va]:k},ga,(a=>A(w,a)),(a=>q(l,a))),Aa(i,{[ma]:null,[va]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ma,((a,t)=>A(w,t)),((a,t)=>q(l,t))),c],l]})(e);return(p?ra:ca)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${Na} d,${Ta} s,TOTAL_CHANGES() c FROM ${Oa}${Na} JOIN ${Oa}${Ta}`);t==(v??=t)&&e==(g??=e)&&s==(m??=s)||(a(),v=t,g=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),v=g=m=null,i(t)}),o,l,N,O(T),w,d,E)})(a,n,(async(a,t=[])=>(await e.execAsync([{sql:a,args:t}],!1))[0].rows),(a=>e.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),s,i,3,e);export{ha as createExpoSqlitePersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),g="_",p="_id",m=a=>`"${a.replace(/"/g,'""')}"`,v="SELECT",C=(a,t="")=>a.join(t),A=(a,t)=>a.map(t),T=a=>0==d(a),f=(a,t)=>a.filter(t),N=(a,...t)=>a.push(...t),O=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),L=Object,S=a=>L.getPrototypeOf(a),b=L.entries,D=L.keys,I=L.freeze,M=(a=[])=>L.fromEntries(a),P=(...a)=>L.assign({},...a),_=(a,t)=>t in a,F=(a,t)=>A(b(a),(([a,e])=>t(e,a))),j=a=>L.values(a),x=a=>d(D(a)),B=a=>(a=>!o(a)&&l(S(a),(a=>a==L.prototype||o(S(a))),(()=>!0)))(a)&&0==x(a),H=a=>new Map(a),Y=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),k=(a,t)=>A([...a?.entries()??[]],(([a,e])=>t(e,a))),G=(a,t,e)=>o(e)?(R(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(O(a,t)||G(a,t,e()),$(a,t)),U=(a,t,e,n=G)=>(F(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>_(t,e)?0:n(a,e))),a),W=a=>new Set(y(a)||o(a)?a:[a]),q=(a,t)=>a?.add(t),z="TABLE",K="ALTER "+z,V="DELETE FROM",Q=v+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=H();return[async()=>U(r,M(await E(A(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,M(A(await a(v+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>G(r,t,U(J(r,t,H),e,((a,t,e)=>{e!=$(a,t)&&G(a,t,e)}),((a,t)=>G(a,t))))),((a,t)=>G(r,t))),async(t,e)=>((a,t)=>!o($($(r,a),t)))(t,e)?M(f(A(await a(Q+m(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!B(t)))):{},async(t,s,c,l,w,y=!1)=>{const u=W();F(c??{},(a=>A(D(a??{}),(a=>q(u,a)))));const d=h(u);if(!y&&w&&T(d)&&O(r,t))return await a("DROP "+z+m(t)),void G(r,t);if(T(d)||O(r,t)){const n=$(r,t),i=W(Y(n));await E([...A(d,(async s=>{R(i,s)||(await a(K+m(t)+"ADD"+m(s)),G(n,s,e))})),...!y&&l?A(h(i),(async e=>{e!=s&&(await a(K+m(t)+"DROP"+m(e)),G(n,e))})):[]])}else await a("CREATE "+z+m(t)+"("+m(s)+` PRIMARY KEY ON CONFLICT REPLACE${C(A(d,(a=>n+m(a))))});`),G(r,t,H([[s,e],...A(d,(a=>[a,e]))]));if(y)o(c)?await a(V+m(t)+Z+" 1"):await E(F(c,(async(e,n)=>{o(e)?await a(V+m(t)+Z+m(s)+"=?",[n]):T(d)||await ta(a,t,s,D(e),[n,...j(e)],i)})));else if(T(d))O(r,t)&&await a(V+m(t)+Z+" 1");else{const e=f(Y($(r,t)),(a=>a!=s)),n=[],o=[];F(c??{},((a,t)=>{N(n,t,...A(e,(t=>a?.[t]))),N(o,t)})),await ta(a,t,s,e,n,i),await a(V+m(t)+Z+m(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+m(t)+"("+m(s)+C(A(r,(a=>n+m(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+m(s)+")DO UPDATE SET"+C(A(r,(a=>m(a)+"=excluded."+m(a))),n):e),A(c,(a=>a??null))),ea=a=>C(A(a,(()=>"?")),n),na=JSON.parse,sa=H(),ia=H(),ra=(a,t,e,n,s,i,r,c={},w=[])=>{let u,d,E,g=0;J(sa,w,(()=>0)),J(ia,w,(()=>[]));const[p,m,v,C,A]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!B(a)||!B(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!B(a)||!B(t),t.setContent]:0)(r,a),T=t=>{(p&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},f=async a=>(2!=g&&(g=1,await L((async()=>{try{T(await t())}catch(t){i?.(t),a&&A(a)}g=0}))),S),O=()=>(d&&(s(d),d=void 0),S),h=async a=>(1!=g&&(g=2,await L((async()=>{try{await e(m,a)}catch(a){i?.(a)}g=0}))),S),R=()=>(l(E,a.delListener),E=void 0,S),L=async(...a)=>(N($(ia,w),...a),await(async()=>{if(!$(sa,w)){for(G(sa,w,1);!o((a=$(ia,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}G(sa,w,0)}var a})(),S),S={load:f,startAutoLoad:async a=>(await O().load(a),d=n((async(a,t)=>{t||a?2!=g&&(g=1,T(t??a),g=0):await f()})),S),stopAutoLoad:O,isAutoLoading:()=>!o(d),save:h,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=v();C(a)&&h(a)})),S),stopAutoSave:R,isAutoSaving:()=>!o(E),schedule:L,getStore:()=>a,destroy:()=>O().stopAutoSave(),getStats:()=>({}),...c};return I(S)},ca="store",oa=(a,t,e,n,s,[i],r,c,o,l)=>{const[w,y,u,d]=aa(t,r,s,l);return ra(a,(async()=>await d((async()=>(await w(),na((await y(i,p))[g]?.[ca]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,p,{[g]:{[ca]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?L.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[o]:()=>c},c)},la=(a,t,e,n,s,[i,r,[c,l,w]],y,u,d,m)=>{const[v,C,A,T]=aa(t,y,s,m),N=async(a,t)=>await E(k(r,(async([e,n,s,i],r)=>{t&&!_(a,r)||await A(e,n,a[r],s,i,t)}))),O=async(a,t)=>l?await A(w,p,{[g]:a},!0,!0,t):null;return ra(a,(async()=>await T((async()=>{await v();const a=await(async()=>M(f(await E(k(i,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!B(a[1])))))(),t=await(async()=>c?(await C(w,p))[g]:{})();return B(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await v(),o(t)){const[t,e]=a();await N(t),await O(e)}else await N(t[0],!0),await O(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},wa="json",ya="autoLoadIntervalSeconds",ua="rowIdColumnName",da="tableId",Ea="tableName",ga={mode:wa,[ya]:1},pa={load:0,save:0,[Ea]:t+"_values"},ma=(a,t,e,n)=>{const s=H();return F(a,((a,i)=>{const r=u(j(P(t,w(a)?{[e]:a}:a)),0,x(t));o(r[0])||n(i,r[0])||G(s,i,r)})),s},va="pragma ",Ca="data_version",Aa="schema_version",Ta=(a,e,n,s,i,r,o,l,y="getDb",d)=>{let E,g,m;const[C,A,T,f]=(a=>{const e=(a=>P(ga,w(a)?{storeTableName:a}:a??{}))(a),n=e[ya];if(e.mode==wa){const{storeTableName:a=t}=e;return[1,n,[a],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(j(P(pa,r)),0,x(pa)),o=c[2],l=W(o);return[0,n,[ma(s,{[da]:null,[ua]:p},da,(a=>q(l,a)&&a==o)),ma(i,{[Ea]:null,[ua]:p,deleteEmptyColumns:0,deleteEmptyTable:0},Ea,((a,t)=>q(l,t)&&t==o)),c],l]})(e);return(C?oa:la)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(va+Ca))[0][Ca],e=(await n(va+Aa))[0][Aa],s=(await n(v+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(g??=e)&&s==(m??=s)||(a(),E=t,g=e)}catch{}},e=A,t(),setInterval(t,1e3*e)),s((t=>f.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),E=g=null,i(t)}),o,T,h(f),l,y,d)},fa=(a,t,e,n,s)=>Ta(a,e,(async(a,e=[])=>(await t.execute({sql:a,args:e})).rows),(()=>()=>0),(a=>a()),n,s,t,"getClient");export{fa as createLibSqlPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),v=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),p=a=>0==d(a),m=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],T=(a,t)=>a?.delete(t),N=Object,h=a=>N.getPrototypeOf(a),R=N.entries,f=N.keys,L=N.freeze,S=(a=[])=>N.fromEntries(a),I=(...a)=>N.assign({},...a),b=(a,t)=>t in a,D=(a,t)=>g(R(a),(([a,e])=>t(e,a))),M=a=>N.values(a),$=a=>d(f(a)),_=a=>(a=>!o(a)&&l(h(a),(a=>a==N.prototype||o(h(a))),(()=>!0)))(a)&&0==$(a),P=a=>new Map(a),F=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),x=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>o(e)?(T(a,t),a):a?.set(t,e),H=(a,t,e,n)=>(A(a,t)||B(a,t,e()),j(a,t)),J=(a,t,e,n=B)=>(D(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>b(t,e)?0:n(a,e))),a),Y="_",k="_id",G=a=>`"${a.replace(/"/g,'""')}"`,U="SELECT",W=a=>new Set(y(a)||o(a)?a:[a]),q=(a,t)=>a?.add(t),z="TABLE",K="ALTER "+z,V="DELETE FROM",Q=U+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=P();return[async()=>J(r,S(await E(g(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,S(g(await a(U+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(r,t,J(H(r,t,P),e,((a,t,e)=>{e!=j(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(r,t))),async(t,e)=>((a,t)=>!o(j(j(r,a),t)))(t,e)?S(m(g(await a(Q+G(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!_(t)))):{},async(t,s,c,l,w,y=!1)=>{const u=W();D(c??{},(a=>g(f(a??{}),(a=>q(u,a)))));const d=O(u);if(!y&&w&&p(d)&&A(r,t))return await a("DROP "+z+G(t)),void B(r,t);if(p(d)||A(r,t)){const n=j(r,t),i=W(F(n));await E([...g(d,(async s=>{T(i,s)||(await a(K+G(t)+"ADD"+G(s)),B(n,s,e))})),...!y&&l?g(O(i),(async e=>{e!=s&&(await a(K+G(t)+"DROP"+G(e)),B(n,e))})):[]])}else await a("CREATE "+z+G(t)+"("+G(s)+` PRIMARY KEY ON CONFLICT REPLACE${v(g(d,(a=>n+G(a))))});`),B(r,t,P([[s,e],...g(d,(a=>[a,e]))]));if(y)o(c)?await a(V+G(t)+Z+" 1"):await E(D(c,(async(e,n)=>{o(e)?await a(V+G(t)+Z+G(s)+"=?",[n]):p(d)||await ta(a,t,s,f(e),[n,...M(e)],i)})));else if(p(d))A(r,t)&&await a(V+G(t)+Z+" 1");else{const e=m(F(j(r,t)),(a=>a!=s)),n=[],o=[];D(c??{},((a,t)=>{C(n,t,...g(e,(t=>a?.[t]))),C(o,t)})),await ta(a,t,s,e,n,i),await a(V+G(t)+Z+G(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+G(t)+"("+G(s)+v(g(r,(a=>n+G(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+G(s)+")DO UPDATE SET"+v(g(r,(a=>G(a)+"=excluded."+G(a))),n):e),g(c,(a=>a??null))),ea=a=>v(g(a,(()=>"?")),n),na=P(),sa=P(),ia=(a,t,e,n,s,i,r,c={},w=[])=>{let u,d,E,v=0;H(na,w,(()=>0)),H(sa,w,(()=>[]));const[g,p,m,A,O]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!_(a)||!_(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!_(a)||!_(t),t.setContent]:0)(r,a),T=t=>{(g&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},N=async a=>(2!=v&&(v=1,await S((async()=>{try{T(await t())}catch(t){i?.(t),a&&O(a)}v=0}))),I),h=()=>(d&&(s(d),d=void 0),I),R=async a=>(1!=v&&(v=2,await S((async()=>{try{await e(p,a)}catch(a){i?.(a)}v=0}))),I),f=()=>(l(E,a.delListener),E=void 0,I),S=async(...a)=>(C(j(sa,w),...a),await(async()=>{if(!j(na,w)){for(B(na,w,1);!o((a=j(sa,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}B(na,w,0)}var a})(),I),I={load:N,startAutoLoad:async a=>(await h().load(a),d=n((async(a,t)=>{t||a?2!=v&&(v=1,T(t??a),v=0):await N()})),I),stopAutoLoad:h,isAutoLoading:()=>!o(d),save:R,startAutoSave:async()=>(await f().save(),E=a.addDidFinishTransactionListener((()=>{const a=m();A(a)&&R(a)})),I),stopAutoSave:f,isAutoSaving:()=>!o(E),schedule:S,getStore:()=>a,destroy:()=>h().stopAutoSave(),getStats:()=>({}),...c};return L(I)},ra=(a,t,e,n,s,i,[r,c,o],l,w,y,u)=>{const[d,E,v,g]=aa(t,l,s,u);return ia(a,(async()=>await g((async()=>{return await d(),a=(await E(r,c))[Y]?.[o]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await d(),await v(r,c,{[Y]:{[o]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[y]:()=>w},w)},ca=(a,t,e,n,s,i,[r,c,[l,w,y]],u,d,v,g)=>{const[p,C,A,O]=aa(t,u,s,g),T=async(a,t)=>await E(x(c,(async([e,n,s,i],r)=>{t&&!b(a,r)||await A(e,n,a[r],s,i,t)}))),N=async(a,t)=>w?await A(y,k,{[Y]:a},!0,!0,t):null;return ia(a,(async()=>await O((async()=>{await p();const a=await(async()=>S(m(await E(x(r,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>l?(await C(y,k))[Y]:{})();return _(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await p(),o(t)){const[t,e]=a();await T(t),await N(e)}else await T(t[0],!0),await N(t[1],!0)}))),e,n,s,i,{[v]:()=>d},d)},oa="ColumnName",la="store",wa="json",ya=la+"TableName",ua=la+"Id"+oa,da=la+oa,Ea="autoLoadIntervalSeconds",va="rowId"+oa,ga="tableId",pa="tableName",ma={mode:wa,[Ea]:1},Ca={load:0,save:0,[pa]:t+"_values"},Aa=(a,t,e,n,s)=>{const i=P();return D(a,((a,r)=>{const c=u(M(I(t,w(a)?{[e]:a}:a)),0,$(t));o(c[0])||n(r,c[0])||(s(r,c[0]),B(i,r,c))})),i},Oa="pragma_",Ta="data_version",Na="schema_version",ha=(a,e,n,s,i)=>((a,e,n,s,i,r,o,l,y,d="getDb",E)=>{let v,g,p;const[m,C,T,N]=(a=>{const e=(a=>I(ma,w(a)?{[ya]:a}:a??{}))(a),n=e[Ea];if(e.mode==wa){const a=e[ya]??t;return[1,n,[a,e[ua]??k,e[da]??la],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(M(I(Ca,r)),0,$(Ca)),o=c[2],l=W(o),y=W(o);return[0,n,[Aa(s,{[ga]:null,[va]:k},ga,(a=>A(y,a)),(a=>q(l,a))),Aa(i,{[pa]:null,[va]:k,deleteEmptyColumns:0,deleteEmptyTable:0},pa,((a,t)=>A(y,t)),((a,t)=>q(l,t))),c],l]})(e);return(m?ra:ca)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${Ta} d,${Na} s,TOTAL_CHANGES() c FROM ${Oa}${Ta} JOIN ${Oa}${Na}`);t==(v??=t)&&e==(g??=e)&&s==(p??=s)||(a(),v=t,g=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>N.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),v=g=p=null,i(t)}),o,l,T,O(N),y,d,E)})(a,n,(async(a,t=[])=>(await e.execute({sql:a,args:t})).rows),(()=>()=>0),(a=>a()),s,i,1,e,"getClient");export{ha as createLibSqlPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,o=clearInterval,c=a=>null==a,l=(a,t,e)=>c(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),g="_",m="_id",p=a=>`"${a.replace(/"/g,'""')}"`,v="SELECT",C=(a,t="")=>a.join(t),A=(a,t)=>a.map(t),T=a=>0==d(a),f=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),N=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],b=(a,t)=>a?.delete(t),R=Object,L=a=>R.getPrototypeOf(a),S=R.entries,D=R.keys,I=R.freeze,M=(a=[])=>R.fromEntries(a),P=(...a)=>R.assign({},...a),_=(a,t)=>t in a,F=(a,t)=>A(S(a),(([a,e])=>t(e,a))),j=a=>R.values(a),x=a=>d(D(a)),B=a=>(a=>!c(a)&&l(L(a),(a=>a==R.prototype||c(L(a))),(()=>!0)))(a)&&0==x(a),H=a=>new Map(a),Y=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),k=(a,t)=>A([...a?.entries()??[]],(([a,e])=>t(e,a))),G=(a,t,e)=>c(e)?(b(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(N(a,t)||G(a,t,e()),$(a,t)),U=(a,t,e,n=G)=>(F(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>_(t,e)?0:n(a,e))),a),W=a=>new Set(y(a)||c(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,q="DELETE FROM",Q=v+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=H();return[async()=>U(r,M(await E(A(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,M(A(await a(v+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>G(r,t,U(J(r,t,H),e,((a,t,e)=>{e!=$(a,t)&&G(a,t,e)}),((a,t)=>G(a,t))))),((a,t)=>G(r,t))),async(t,e)=>((a,t)=>!c($($(r,a),t)))(t,e)?M(f(A(await a(Q+p(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!c(a)&&!B(t)))):{},async(t,s,o,l,w,y=!1)=>{const u=W();F(o??{},(a=>A(D(a??{}),(a=>z(u,a)))));const d=O(u);if(!y&&w&&T(d)&&N(r,t))return await a("DROP "+K+p(t)),void G(r,t);if(T(d)||N(r,t)){const n=$(r,t),i=W(Y(n));await E([...A(d,(async s=>{b(i,s)||(await a(V+p(t)+"ADD"+p(s)),G(n,s,e))})),...!y&&l?A(O(i),(async e=>{e!=s&&(await a(V+p(t)+"DROP"+p(e)),G(n,e))})):[]])}else await a("CREATE "+K+p(t)+"("+p(s)+` PRIMARY KEY ON CONFLICT REPLACE${C(A(d,(a=>n+p(a))))});`),G(r,t,H([[s,e],...A(d,(a=>[a,e]))]));if(y)c(o)?await a(q+p(t)+Z+" 1"):await E(F(o,(async(e,n)=>{c(e)?await a(q+p(t)+Z+p(s)+"=?",[n]):T(d)||await ta(a,t,s,D(e),[n,...j(e)],i)})));else if(T(d))N(r,t)&&await a(q+p(t)+Z+" 1");else{const e=f(Y($(r,t)),(a=>a!=s)),n=[],c=[];F(o??{},((a,t)=>{h(n,t,...A(e,(t=>a?.[t]))),h(c,t)})),await ta(a,t,s,e,n,i),await a(q+p(t)+Z+p(s)+"NOT IN("+ea(c)+")",c)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,o,c=!0)=>await a("INSERT "+(c?e:"OR REPLACE ")+"INTO"+p(t)+"("+p(s)+C(A(r,(a=>n+p(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(o)/(d(r)+1)),1)+(c?"ON CONFLICT("+p(s)+")DO UPDATE SET"+C(A(r,(a=>p(a)+"=excluded."+p(a))),n):e),A(o,(a=>a??null))),ea=a=>C(A(a,(()=>"?")),n),na=JSON.parse,sa=H(),ia=H(),ra=(a,t,e,n,s,i,r,o={},w=[])=>{let u,d,E,g=0;J(sa,w,(()=>0)),J(ia,w,(()=>[]));const[m,p,v,C,A]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!B(a)||!B(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!B(a)||!B(t),t.setContent]:0)(r,a),T=t=>{(m&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},f=async a=>(2!=g&&(g=1,await R((async()=>{try{T(await t())}catch(t){i?.(t),a&&A(a)}g=0}))),L),N=()=>(d&&(s(d),d=void 0),L),O=async a=>(1!=g&&(g=2,await R((async()=>{try{await e(p,a)}catch(a){i?.(a)}g=0}))),L),b=()=>(l(E,a.delListener),E=void 0,L),R=async(...a)=>(h($(ia,w),...a),await(async()=>{if(!$(sa,w)){for(G(sa,w,1);!c((a=$(ia,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}G(sa,w,0)}var a})(),L),L={load:f,startAutoLoad:async a=>(await N().load(a),d=n((async(a,t)=>{t||a?2!=g&&(g=1,T(t??a),g=0):await f()})),L),stopAutoLoad:N,isAutoLoading:()=>!c(d),save:O,startAutoSave:async()=>(await b().save(),E=a.addDidFinishTransactionListener((()=>{const a=v();C(a)&&O(a)})),L),stopAutoSave:b,isAutoSaving:()=>!c(E),schedule:R,getStore:()=>a,destroy:()=>N().stopAutoSave(),getStats:()=>({}),...o};return I(L)},oa="store",ca=(a,t,e,n,s,[i],r,o,c,l)=>{const[w,y,u,d]=aa(t,r,s,l);return ra(a,(async()=>await d((async()=>(await w(),na((await y(i,m))[g]?.[oa]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,m,{[g]:{[oa]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?R.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[c]:()=>o},o)},la=(a,t,e,n,s,[i,r,[o,l,w]],y,u,d,p)=>{const[v,C,A,T]=aa(t,y,s,p),h=async(a,t)=>await E(k(r,(async([e,n,s,i],r)=>{t&&!_(a,r)||await A(e,n,a[r],s,i,t)}))),N=async(a,t)=>l?await A(w,m,{[g]:a},!0,!0,t):null;return ra(a,(async()=>await T((async()=>{await v();const a=await(async()=>M(f(await E(k(i,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!B(a[1])))))(),t=await(async()=>o?(await C(w,m))[g]:{})();return B(a)&&c(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await v(),c(t)){const[t,e]=a();await h(t),await N(e)}else await h(t[0],!0),await N(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},wa="json",ya="autoLoadIntervalSeconds",ua="rowIdColumnName",da="tableId",Ea="tableName",ga={mode:wa,[ya]:1},ma={load:0,save:0,[Ea]:t+"_values"},pa=(a,t,e,n)=>{const s=H();return F(a,((a,i)=>{const r=u(j(P(t,w(a)?{[e]:a}:a)),0,x(t));c(r[0])||n(i,r[0])||G(s,i,r)})),s},va="pragma ",Ca="data_version",Aa="schema_version",Ta=(a,e,n,s,i,r,c,l,y="getDb",d)=>{let E,g,p;const[C,A,T,f]=(a=>{const e=(a=>P(ga,w(a)?{storeTableName:a}:a??{}))(a),n=e[ya];if(e.mode==wa){const{storeTableName:a=t}=e;return[1,n,[a],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,o=u(j(P(ma,r)),0,x(ma)),c=o[2],l=W(c);return[0,n,[pa(s,{[da]:null,[ua]:m},da,(a=>z(l,a)&&a==c)),pa(i,{[Ea]:null,[ua]:m,deleteEmptyColumns:0,deleteEmptyTable:0},Ea,((a,t)=>z(l,t)&&t==c)),o],l]})(e);return(C?ca:la)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(va+Ca))[0][Ca],e=(await n(va+Aa))[0][Aa],s=(await n(v+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(g??=e)&&s==(p??=s)||(a(),E=t,g=e)}catch{}},e=A,t(),setInterval(t,1e3*e)),s((t=>f.has(t)?a():0))];var t,e}),(([a,t])=>{o(a),E=g=null,i(t)}),c,T,O(f),l,y,d)},fa=(a,t,e,n,s,i=!1)=>Ta(a,e,(async(a,e=[])=>t.execute(a,e).then((a=>a.rows?._array??[]))),(a=>{const e=new AbortController,n=t.onChange({rawTableNames:!0,signal:e.signal});return(async()=>{for await(const t of n)A(t.changedTables,a)})(),e}),(a=>a.abort()),n,s,t,"getPowerSync",i);export{fa as createPowerSyncPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,o=clearInterval,c=a=>null==a,l=(a,t,e)=>c(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),g=(a,t="")=>a.join(t),v=(a,t)=>a.map(t),p=a=>0==d(a),m=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,T=a=>[...a?.values()??[]],h=(a,t)=>a?.delete(t),O=Object,N=a=>O.getPrototypeOf(a),f=O.entries,R=O.keys,b=O.freeze,L=(a=[])=>O.fromEntries(a),S=(...a)=>O.assign({},...a),I=(a,t)=>t in a,D=(a,t)=>v(f(a),(([a,e])=>t(e,a))),M=a=>O.values(a),_=a=>d(R(a)),P=a=>(a=>!c(a)&&l(N(a),(a=>a==O.prototype||c(N(a))),(()=>!0)))(a)&&0==_(a),$=a=>new Map(a),F=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),x=(a,t)=>v([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>c(e)?(h(a,t),a):a?.set(t,e),H=(a,t,e,n)=>(A(a,t)||B(a,t,e()),j(a,t)),J=(a,t,e,n=B)=>(D(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>I(t,e)?0:n(a,e))),a),Y="_",k="_id",G=a=>`"${a.replace(/"/g,'""')}"`,U="SELECT",W=a=>new Set(y(a)||c(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,q="DELETE FROM",Q=U+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=$();return[async()=>J(r,L(await E(v(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,L(v(await a(U+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(r,t,J(H(r,t,$),e,((a,t,e)=>{e!=j(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(r,t))),async(t,e)=>((a,t)=>!c(j(j(r,a),t)))(t,e)?L(m(v(await a(Q+G(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!c(a)&&!P(t)))):{},async(t,s,o,l,w,y=!1)=>{const u=W();D(o??{},(a=>v(R(a??{}),(a=>z(u,a)))));const d=T(u);if(!y&&w&&p(d)&&A(r,t))return await a("DROP "+K+G(t)),void B(r,t);if(p(d)||A(r,t)){const n=j(r,t),i=W(F(n));await E([...v(d,(async s=>{h(i,s)||(await a(V+G(t)+"ADD"+G(s)),B(n,s,e))})),...!y&&l?v(T(i),(async e=>{e!=s&&(await a(V+G(t)+"DROP"+G(e)),B(n,e))})):[]])}else await a("CREATE "+K+G(t)+"("+G(s)+` PRIMARY KEY ON CONFLICT REPLACE${g(v(d,(a=>n+G(a))))});`),B(r,t,$([[s,e],...v(d,(a=>[a,e]))]));if(y)c(o)?await a(q+G(t)+Z+" 1"):await E(D(o,(async(e,n)=>{c(e)?await a(q+G(t)+Z+G(s)+"=?",[n]):p(d)||await ta(a,t,s,R(e),[n,...M(e)],i)})));else if(p(d))A(r,t)&&await a(q+G(t)+Z+" 1");else{const e=m(F(j(r,t)),(a=>a!=s)),n=[],c=[];D(o??{},((a,t)=>{C(n,t,...v(e,(t=>a?.[t]))),C(c,t)})),await ta(a,t,s,e,n,i),await a(q+G(t)+Z+G(s)+"NOT IN("+ea(c)+")",c)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,o,c=!0)=>await a("INSERT "+(c?e:"OR REPLACE ")+"INTO"+G(t)+"("+G(s)+g(v(r,(a=>n+G(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(o)/(d(r)+1)),1)+(c?"ON CONFLICT("+G(s)+")DO UPDATE SET"+g(v(r,(a=>G(a)+"=excluded."+G(a))),n):e),v(o,(a=>a??null))),ea=a=>g(v(a,(()=>"?")),n),na=$(),sa=$(),ia=(a,t,e,n,s,i,r,o={},w=[])=>{let u,d,E,g=0;H(na,w,(()=>0)),H(sa,w,(()=>[]));const[v,p,m,A,T]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!P(a)||!P(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!P(a)||!P(t),t.setContent]:0)(r,a),h=t=>{(v&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},O=async a=>(2!=g&&(g=1,await L((async()=>{try{h(await t())}catch(t){i?.(t),a&&T(a)}g=0}))),S),N=()=>(d&&(s(d),d=void 0),S),f=async a=>(1!=g&&(g=2,await L((async()=>{try{await e(p,a)}catch(a){i?.(a)}g=0}))),S),R=()=>(l(E,a.delListener),E=void 0,S),L=async(...a)=>(C(j(sa,w),...a),await(async()=>{if(!j(na,w)){for(B(na,w,1);!c((a=j(sa,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}B(na,w,0)}var a})(),S),S={load:O,startAutoLoad:async a=>(await N().load(a),d=n((async(a,t)=>{t||a?2!=g&&(g=1,h(t??a),g=0):await O()})),S),stopAutoLoad:N,isAutoLoading:()=>!c(d),save:f,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=m();A(a)&&f(a)})),S),stopAutoSave:R,isAutoSaving:()=>!c(E),schedule:L,getStore:()=>a,destroy:()=>N().stopAutoSave(),getStats:()=>({}),...o};return b(S)},ra=(a,t,e,n,s,i,[r,o,c],l,w,y,u)=>{const[d,E,g,v]=aa(t,l,s,u);return ia(a,(async()=>await v((async()=>{return await d(),a=(await E(r,o))[Y]?.[c]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await v((async()=>{var t;await d(),await g(r,o,{[Y]:{[c]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[y]:()=>w},w)},oa=(a,t,e,n,s,i,[r,o,[l,w,y]],u,d,g,v)=>{const[p,C,A,T]=aa(t,u,s,v),h=async(a,t)=>await E(x(o,(async([e,n,s,i],r)=>{t&&!I(a,r)||await A(e,n,a[r],s,i,t)}))),O=async(a,t)=>w?await A(y,k,{[Y]:a},!0,!0,t):null;return ia(a,(async()=>await T((async()=>{await p();const a=await(async()=>L(m(await E(x(r,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!P(a[1])))))(),t=await(async()=>l?(await C(y,k))[Y]:{})();return P(a)&&c(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await p(),c(t)){const[t,e]=a();await h(t),await O(e)}else await h(t[0],!0),await O(t[1],!0)}))),e,n,s,i,{[g]:()=>d},d)},ca="ColumnName",la="store",wa="json",ya=la+"TableName",ua=la+"Id"+ca,da=la+ca,Ea="autoLoadIntervalSeconds",ga="rowId"+ca,va="tableId",pa="tableName",ma={mode:wa,[Ea]:1},Ca={load:0,save:0,[pa]:t+"_values"},Aa=(a,t,e,n,s)=>{const i=$();return D(a,((a,r)=>{const o=u(M(S(t,w(a)?{[e]:a}:a)),0,_(t));c(o[0])||n(r,o[0])||(s(r,o[0]),B(i,r,o))})),i},Ta="pragma_",ha="data_version",Oa="schema_version",Na=(a,e,n,s,i,r=!1)=>((a,e,n,s,i,r,c,l,y,d="getDb",E)=>{let g,v,p;const[m,C,h,O]=(a=>{const e=(a=>S(ma,w(a)?{[ya]:a}:a??{}))(a),n=e[Ea];if(e.mode==wa){const a=e[ya]??t;return[1,n,[a,e[ua]??k,e[da]??la],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,o=u(M(S(Ca,r)),0,_(Ca)),c=o[2],l=W(c),y=W(c);return[0,n,[Aa(s,{[va]:null,[ga]:k},va,(a=>A(y,a)),(a=>z(l,a))),Aa(i,{[pa]:null,[ga]:k,deleteEmptyColumns:0,deleteEmptyTable:0},pa,((a,t)=>A(y,t)),((a,t)=>z(l,t))),o],l]})(e);return(m?ra:oa)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${ha} d,${Oa} s,TOTAL_CHANGES() c FROM ${Ta}${ha} JOIN ${Ta}${Oa}`);t==(g??=t)&&e==(v??=e)&&s==(p??=s)||(a(),g=t,v=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>O.has(t)?a():0))];var t,e}),(([a,t])=>{o(a),g=v=p=null,i(t)}),c,l,h,T(O),y,d,E)})(a,n,(async(a,t=[])=>e.execute(a,t).then((a=>a.rows?._array??[]))),(a=>{const t=new AbortController,n=e.onChange({rawTableNames:!0,signal:t.signal});return(async()=>{for await(const t of n)v(t.changedTables,a)})(),t}),(a=>a.abort()),s,i,1,e,"getPowerSync",r);export{Na as createPowerSyncPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),o=Promise,r=clearInterval,c=a=>null==a,l=(a,t,e)=>c(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>o.all(a),p="_",m="_id",g=a=>`"${a.replace(/"/g,'""')}"`,v="SELECT",A=(a,t="")=>a.join(t),C=(a,t)=>a.map(t),h=a=>0==d(a),T=(a,t)=>a.filter(t),f=(a,...t)=>a.push(...t),N=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),b=Object,L=a=>b.getPrototypeOf(a),S=b.entries,D=b.keys,I=b.freeze,_=(a=[])=>b.fromEntries(a),M=(...a)=>b.assign({},...a),P=(a,t)=>t in a,F=(a,t)=>C(S(a),(([a,e])=>t(e,a))),j=a=>b.values(a),k=a=>d(D(a)),x=a=>(a=>!c(a)&&l(L(a),(a=>a==b.prototype||c(L(a))),(()=>!0)))(a)&&0==k(a),B=a=>new Map(a),H=a=>[...a?.keys()??[]],Y=(a,t)=>a?.get(t),$=(a,t)=>C([...a?.entries()??[]],(([a,e])=>t(e,a))),q=(a,t,e)=>c(e)?(R(a,t),a):a?.set(t,e),G=(a,t,e,n)=>(N(a,t)||q(a,t,e()),Y(a,t)),J=(a,t,e,n=q)=>(F(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>P(t,e)?0:n(a,e))),a),U=a=>new Set(y(a)||c(a)?a:[a]),V=(a,t)=>a?.add(t),W="TABLE",z="ALTER "+W,K="DELETE FROM",Q=v+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const o=B();return[async()=>J(o,_(await E(C(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,_(C(await a(v+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>q(o,t,J(G(o,t,B),e,((a,t,e)=>{e!=Y(a,t)&&q(a,t,e)}),((a,t)=>q(a,t))))),((a,t)=>q(o,t))),async(t,e)=>((a,t)=>!c(Y(Y(o,a),t)))(t,e)?_(T(C(await a(Q+g(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!c(a)&&!x(t)))):{},async(t,s,r,l,w,y=!1)=>{const u=U();F(r??{},(a=>C(D(a??{}),(a=>V(u,a)))));const d=O(u);if(!y&&w&&h(d)&&N(o,t))return await a("DROP "+W+g(t)),void q(o,t);if(h(d)||N(o,t)){const n=Y(o,t),i=U(H(n));await E([...C(d,(async s=>{R(i,s)||(await a(z+g(t)+"ADD"+g(s)),q(n,s,e))})),...!y&&l?C(O(i),(async e=>{e!=s&&(await a(z+g(t)+"DROP"+g(e)),q(n,e))})):[]])}else await a("CREATE "+W+g(t)+"("+g(s)+` PRIMARY KEY ON CONFLICT REPLACE${A(C(d,(a=>n+g(a))))});`),q(o,t,B([[s,e],...C(d,(a=>[a,e]))]));if(y)c(r)?await a(K+g(t)+Z+" 1"):await E(F(r,(async(e,n)=>{c(e)?await a(K+g(t)+Z+g(s)+"=?",[n]):h(d)||await ta(a,t,s,D(e),[n,...j(e)],i)})));else if(h(d))N(o,t)&&await a(K+g(t)+Z+" 1");else{const e=T(H(Y(o,t)),(a=>a!=s)),n=[],c=[];F(r??{},((a,t)=>{f(n,t,...C(e,(t=>a?.[t]))),f(c,t)})),await ta(a,t,s,e,n,i),await a(K+g(t)+Z+g(s)+"NOT IN("+ea(c)+")",c)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,o,r,c=!0)=>await a("INSERT "+(c?e:"OR REPLACE ")+"INTO"+g(t)+"("+g(s)+A(C(o,(a=>n+g(a))))+")VALUES"+u(i(`,(?${i(",?",d(o))})`,d(r)/(d(o)+1)),1)+(c?"ON CONFLICT("+g(s)+")DO UPDATE SET"+A(C(o,(a=>g(a)+"=excluded."+g(a))),n):e),C(r,(a=>a??null))),ea=a=>A(C(a,(()=>"?")),n),na=JSON.parse,sa=B(),ia=B(),oa=(a,t,e,n,s,i,o,r={},w=[])=>{let u,d,E,p=0;G(sa,w,(()=>0)),G(ia,w,(()=>[]));const[m,g,v,A,C]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!x(a)||!x(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!x(a)||!x(t),t.setContent]:0)(o,a),h=t=>{(m&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=p&&(p=1,await b((async()=>{try{h(await t())}catch(t){i?.(t),a&&C(a)}p=0}))),L),N=()=>(d&&(s(d),d=void 0),L),O=async a=>(1!=p&&(p=2,await b((async()=>{try{await e(g,a)}catch(a){i?.(a)}p=0}))),L),R=()=>(l(E,a.delListener),E=void 0,L),b=async(...a)=>(f(Y(ia,w),...a),await(async()=>{if(!Y(sa,w)){for(q(sa,w,1);!c((a=Y(ia,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}q(sa,w,0)}var a})(),L),L={load:T,startAutoLoad:async a=>(await N().load(a),d=n((async(a,t)=>{t||a?2!=p&&(p=1,h(t??a),p=0):await T()})),L),stopAutoLoad:N,isAutoLoading:()=>!c(d),save:O,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=v();A(a)&&O(a)})),L),stopAutoSave:R,isAutoSaving:()=>!c(E),schedule:b,getStore:()=>a,destroy:()=>N().stopAutoSave(),getStats:()=>({}),...r};return I(L)},ra="store",ca=(a,t,e,n,s,[i],o,r,c,l)=>{const[w,y,u,d]=aa(t,o,s,l);return oa(a,(async()=>await d((async()=>(await w(),na((await y(i,m))[p]?.[ra]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,m,{[p]:{[ra]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?b.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[c]:()=>r},r)},la=(a,t,e,n,s,[i,o,[r,l,w]],y,u,d,g)=>{const[v,A,C,h]=aa(t,y,s,g),f=async(a,t)=>await E($(o,(async([e,n,s,i],o)=>{t&&!P(a,o)||await C(e,n,a[o],s,i,t)}))),N=async(a,t)=>l?await C(w,m,{[p]:a},!0,!0,t):null;return oa(a,(async()=>await h((async()=>{await v();const a=await(async()=>_(T(await E($(i,(async([a,t],e)=>[a,await A(e,t)]))),(a=>!x(a[1])))))(),t=await(async()=>r?(await A(w,m))[p]:{})();return x(a)&&c(t)?void 0:[a,t]}))),(async(a,t)=>await h((async()=>{if(await v(),c(t)){const[t,e]=a();await f(t),await N(e)}else await f(t[0],!0),await N(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},wa="json",ya="autoLoadIntervalSeconds",ua="rowIdColumnName",da="tableId",Ea="tableName",pa={mode:wa,[ya]:1},ma={load:0,save:0,[Ea]:t+"_values"},ga=(a,t,e,n)=>{const s=B();return F(a,((a,i)=>{const o=u(j(M(t,w(a)?{[e]:a}:a)),0,k(t));c(o[0])||n(i,o[0])||q(s,i,o)})),s},va="pragma ",Aa="data_version",Ca="schema_version",ha=(a,e,n,s,i,o,c,l,y="getDb",d)=>{let E,p,g;const[A,C,h,T]=(a=>{const e=(a=>M(pa,w(a)?{storeTableName:a}:a??{}))(a),n=e[ya];if(e.mode==wa){const{storeTableName:a=t}=e;return[1,n,[a],U(a)]}const{tables:{load:s={},save:i={}}={},values:o={}}=e,r=u(j(M(ma,o)),0,k(ma)),c=r[2],l=U(c);return[0,n,[ga(s,{[da]:null,[ua]:m},da,(a=>V(l,a)&&a==c)),ga(i,{[Ea]:null,[ua]:m,deleteEmptyColumns:0,deleteEmptyTable:0},Ea,((a,t)=>V(l,t)&&t==c)),r],l]})(e);return(A?ca:la)(a,o?async(a,t)=>(o(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(va+Aa))[0][Aa],e=(await n(va+Ca))[0][Ca],s=(await n(v+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(p??=e)&&s==(g??=s)||(a(),E=t,p=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{r(a),E=p=null,i(t)}),c,h,O(T),l,y,d)},Ta=(a,t,e,n,s,i)=>ha(a,n,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,n,s)=>a(s)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),s,i,e);export{Ta as createSqliteWasmPersister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,o=clearInterval,c=a=>null==a,l=(a,t,e)=>c(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),p=(a,t="")=>a.join(t),v=(a,t)=>a.map(t),g=a=>0==d(a),m=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],h=(a,t)=>a?.delete(t),T=Object,N=a=>T.getPrototypeOf(a),R=T.entries,f=T.keys,L=T.freeze,S=(a=[])=>T.fromEntries(a),b=(...a)=>T.assign({},...a),I=(a,t)=>t in a,D=(a,t)=>v(R(a),(([a,e])=>t(e,a))),_=a=>T.values(a),M=a=>d(f(a)),$=a=>(a=>!c(a)&&l(N(a),(a=>a==T.prototype||c(N(a))),(()=>!0)))(a)&&0==M(a),P=a=>new Map(a),F=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),k=(a,t)=>v([...a?.entries()??[]],(([a,e])=>t(e,a))),x=(a,t,e)=>c(e)?(h(a,t),a):a?.set(t,e),B=(a,t,e,n)=>(A(a,t)||x(a,t,e()),j(a,t)),H=(a,t,e,n=x)=>(D(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>I(t,e)?0:n(a,e))),a),J="_",Y="_id",q=a=>`"${a.replace(/"/g,'""')}"`,G="SELECT",U=a=>new Set(y(a)||c(a)?a:[a]),V=(a,t)=>a?.add(t),W="TABLE",z="ALTER "+W,K="DELETE FROM",Q=G+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=P();return[async()=>H(r,S(await E(v(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,S(v(await a(G+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>x(r,t,H(B(r,t,P),e,((a,t,e)=>{e!=j(a,t)&&x(a,t,e)}),((a,t)=>x(a,t))))),((a,t)=>x(r,t))),async(t,e)=>((a,t)=>!c(j(j(r,a),t)))(t,e)?S(m(v(await a(Q+q(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!c(a)&&!$(t)))):{},async(t,s,o,l,w,y=!1)=>{const u=U();D(o??{},(a=>v(f(a??{}),(a=>V(u,a)))));const d=O(u);if(!y&&w&&g(d)&&A(r,t))return await a("DROP "+W+q(t)),void x(r,t);if(g(d)||A(r,t)){const n=j(r,t),i=U(F(n));await E([...v(d,(async s=>{h(i,s)||(await a(z+q(t)+"ADD"+q(s)),x(n,s,e))})),...!y&&l?v(O(i),(async e=>{e!=s&&(await a(z+q(t)+"DROP"+q(e)),x(n,e))})):[]])}else await a("CREATE "+W+q(t)+"("+q(s)+` PRIMARY KEY ON CONFLICT REPLACE${p(v(d,(a=>n+q(a))))});`),x(r,t,P([[s,e],...v(d,(a=>[a,e]))]));if(y)c(o)?await a(K+q(t)+Z+" 1"):await E(D(o,(async(e,n)=>{c(e)?await a(K+q(t)+Z+q(s)+"=?",[n]):g(d)||await ta(a,t,s,f(e),[n,..._(e)],i)})));else if(g(d))A(r,t)&&await a(K+q(t)+Z+" 1");else{const e=m(F(j(r,t)),(a=>a!=s)),n=[],c=[];D(o??{},((a,t)=>{C(n,t,...v(e,(t=>a?.[t]))),C(c,t)})),await ta(a,t,s,e,n,i),await a(K+q(t)+Z+q(s)+"NOT IN("+ea(c)+")",c)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,o,c=!0)=>await a("INSERT "+(c?e:"OR REPLACE ")+"INTO"+q(t)+"("+q(s)+p(v(r,(a=>n+q(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(o)/(d(r)+1)),1)+(c?"ON CONFLICT("+q(s)+")DO UPDATE SET"+p(v(r,(a=>q(a)+"=excluded."+q(a))),n):e),v(o,(a=>a??null))),ea=a=>p(v(a,(()=>"?")),n),na=P(),sa=P(),ia=(a,t,e,n,s,i,r,o={},w=[])=>{let u,d,E,p=0;B(na,w,(()=>0)),B(sa,w,(()=>[]));const[v,g,m,A,O]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!$(a)||!$(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!$(a)||!$(t),t.setContent]:0)(r,a),h=t=>{(v&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=p&&(p=1,await S((async()=>{try{h(await t())}catch(t){i?.(t),a&&O(a)}p=0}))),b),N=()=>(d&&(s(d),d=void 0),b),R=async a=>(1!=p&&(p=2,await S((async()=>{try{await e(g,a)}catch(a){i?.(a)}p=0}))),b),f=()=>(l(E,a.delListener),E=void 0,b),S=async(...a)=>(C(j(sa,w),...a),await(async()=>{if(!j(na,w)){for(x(na,w,1);!c((a=j(sa,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}x(na,w,0)}var a})(),b),b={load:T,startAutoLoad:async a=>(await N().load(a),d=n((async(a,t)=>{t||a?2!=p&&(p=1,h(t??a),p=0):await T()})),b),stopAutoLoad:N,isAutoLoading:()=>!c(d),save:R,startAutoSave:async()=>(await f().save(),E=a.addDidFinishTransactionListener((()=>{const a=m();A(a)&&R(a)})),b),stopAutoSave:f,isAutoSaving:()=>!c(E),schedule:S,getStore:()=>a,destroy:()=>N().stopAutoSave(),getStats:()=>({}),...o};return L(b)},ra=(a,t,e,n,s,i,[r,o,c],l,w,y,u)=>{const[d,E,p,v]=aa(t,l,s,u);return ia(a,(async()=>await v((async()=>{return await d(),a=(await E(r,o))[J]?.[c]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await v((async()=>{var t;await d(),await p(r,o,{[J]:{[c]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[y]:()=>w},w)},oa=(a,t,e,n,s,i,[r,o,[l,w,y]],u,d,p,v)=>{const[g,C,A,O]=aa(t,u,s,v),h=async(a,t)=>await E(k(o,(async([e,n,s,i],r)=>{t&&!I(a,r)||await A(e,n,a[r],s,i,t)}))),T=async(a,t)=>w?await A(y,Y,{[J]:a},!0,!0,t):null;return ia(a,(async()=>await O((async()=>{await g();const a=await(async()=>S(m(await E(k(r,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!$(a[1])))))(),t=await(async()=>l?(await C(y,Y))[J]:{})();return $(a)&&c(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await g(),c(t)){const[t,e]=a();await h(t),await T(e)}else await h(t[0],!0),await T(t[1],!0)}))),e,n,s,i,{[p]:()=>d},d)},ca="ColumnName",la="store",wa="json",ya=la+"TableName",ua=la+"Id"+ca,da=la+ca,Ea="autoLoadIntervalSeconds",pa="rowId"+ca,va="tableId",ga="tableName",ma={mode:wa,[Ea]:1},Ca={load:0,save:0,[ga]:t+"_values"},Aa=(a,t,e,n,s)=>{const i=P();return D(a,((a,r)=>{const o=u(_(b(t,w(a)?{[e]:a}:a)),0,M(t));c(o[0])||n(r,o[0])||(s(r,o[0]),x(i,r,o))})),i},Oa="pragma_",ha="data_version",Ta="schema_version",Na=(a,e,n,s,i,r)=>((a,e,n,s,i,r,c,l,y,d="getDb",E)=>{let p,v,g;const[m,C,h,T]=(a=>{const e=(a=>b(ma,w(a)?{[ya]:a}:a??{}))(a),n=e[Ea];if(e.mode==wa){const a=e[ya]??t;return[1,n,[a,e[ua]??Y,e[da]??la],U(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,o=u(_(b(Ca,r)),0,M(Ca)),c=o[2],l=U(c),y=U(c);return[0,n,[Aa(s,{[va]:null,[pa]:Y},va,(a=>A(y,a)),(a=>V(l,a))),Aa(i,{[ga]:null,[pa]:Y,deleteEmptyColumns:0,deleteEmptyTable:0},ga,((a,t)=>A(y,t)),((a,t)=>V(l,t))),o],l]})(e);return(m?ra:oa)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${ha} d,${Ta} s,TOTAL_CHANGES() c FROM ${Oa}${ha} JOIN ${Oa}${Ta}`);t==(p??=t)&&e==(v??=e)&&s==(g??=s)||(a(),p=t,v=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{o(a),p=v=g=null,i(t)}),c,l,h,O(T),y,d,E)})(a,s,(async(a,t=[])=>n.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>e.capi.sqlite3_update_hook(n,((t,e,n,s)=>a(s)),0)),(()=>e.capi.sqlite3_update_hook(n,(()=>0),0)),i,r,3,n);export{Na as createSqliteWasmPersister};
@@ -1 +1 @@
1
- const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),g="_",p="_id",v=a=>`"${a.replace(/"/g,'""')}"`,m="SELECT",f=(a,t="")=>a.join(t),A=(a,t)=>a.map(t),C=a=>0==d(a),T=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),N=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),L=Object,S=a=>L.getPrototypeOf(a),b=L.entries,D=L.keys,I=L.freeze,M=(a=[])=>L.fromEntries(a),P=(...a)=>L.assign({},...a),_=(a,t)=>t in a,F=(a,t)=>A(b(a),(([a,e])=>t(e,a))),j=a=>L.values(a),B=a=>d(D(a)),H=a=>(a=>!o(a)&&l(S(a),(a=>a==L.prototype||o(S(a))),(()=>!0)))(a)&&0==B(a),Y=a=>new Map(a),$=a=>[...a?.keys()??[]],k=(a,t)=>a?.get(t),x=(a,t)=>A([...a?.entries()??[]],(([a,e])=>t(e,a))),G=(a,t,e)=>o(e)?(R(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(N(a,t)||G(a,t,e()),k(a,t)),U=(a,t,e,n=G)=>(F(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>_(t,e)?0:n(a,e))),a),W=a=>new Set(y(a)||o(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,q="DELETE FROM",Q=m+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=Y();return[async()=>U(r,M(await E(A(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,M(A(await a(m+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>G(r,t,U(J(r,t,Y),e,((a,t,e)=>{e!=k(a,t)&&G(a,t,e)}),((a,t)=>G(a,t))))),((a,t)=>G(r,t))),async(t,e)=>((a,t)=>!o(k(k(r,a),t)))(t,e)?M(T(A(await a(Q+v(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!H(t)))):{},async(t,s,c,l,w,y=!1)=>{const u=W();F(c??{},(a=>A(D(a??{}),(a=>z(u,a)))));const d=O(u);if(!y&&w&&C(d)&&N(r,t))return await a("DROP "+K+v(t)),void G(r,t);if(C(d)||N(r,t)){const n=k(r,t),i=W($(n));await E([...A(d,(async s=>{R(i,s)||(await a(V+v(t)+"ADD"+v(s)),G(n,s,e))})),...!y&&l?A(O(i),(async e=>{e!=s&&(await a(V+v(t)+"DROP"+v(e)),G(n,e))})):[]])}else await a("CREATE "+K+v(t)+"("+v(s)+` PRIMARY KEY ON CONFLICT REPLACE${f(A(d,(a=>n+v(a))))});`),G(r,t,Y([[s,e],...A(d,(a=>[a,e]))]));if(y)o(c)?await a(q+v(t)+Z+" 1"):await E(F(c,(async(e,n)=>{o(e)?await a(q+v(t)+Z+v(s)+"=?",[n]):C(d)||await ta(a,t,s,D(e),[n,...j(e)],i)})));else if(C(d))N(r,t)&&await a(q+v(t)+Z+" 1");else{const e=T($(k(r,t)),(a=>a!=s)),n=[],o=[];F(c??{},((a,t)=>{h(n,t,...A(e,(t=>a?.[t]))),h(o,t)})),await ta(a,t,s,e,n,i),await a(q+v(t)+Z+v(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+v(t)+"("+v(s)+f(A(r,(a=>n+v(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+v(s)+")DO UPDATE SET"+f(A(r,(a=>v(a)+"=excluded."+v(a))),n):e),A(c,(a=>a??null))),ea=a=>f(A(a,(()=>"?")),n),na=JSON.parse,sa=Y(),ia=Y(),ra=(a,t,e,n,s,i,r,c={},w=[])=>{let u,d,E,g=0;J(sa,w,(()=>0)),J(ia,w,(()=>[]));const[p,v,m,f,A]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!H(a)||!H(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!H(a)||!H(t),t.setContent]:0)(r,a),C=t=>{(p&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},T=async a=>(2!=g&&(g=1,await L((async()=>{try{C(await t())}catch(t){i?.(t),a&&A(a)}g=0}))),S),N=()=>(d&&(s(d),d=void 0),S),O=async a=>(1!=g&&(g=2,await L((async()=>{try{await e(v,a)}catch(a){i?.(a)}g=0}))),S),R=()=>(l(E,a.delListener),E=void 0,S),L=async(...a)=>(h(k(ia,w),...a),await(async()=>{if(!k(sa,w)){for(G(sa,w,1);!o((a=k(ia,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}G(sa,w,0)}var a})(),S),S={load:T,startAutoLoad:async a=>(await N().load(a),d=n((async(a,t)=>{t||a?2!=g&&(g=1,C(t??a),g=0):await T()})),S),stopAutoLoad:N,isAutoLoading:()=>!o(d),save:O,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=m();f(a)&&O(a)})),S),stopAutoSave:R,isAutoSaving:()=>!o(E),schedule:L,getStore:()=>a,destroy:()=>N().stopAutoSave(),getStats:()=>({}),...c};return I(S)},ca="store",oa=(a,t,e,n,s,[i],r,c,o,l)=>{const[w,y,u,d]=aa(t,r,s,l);return ra(a,(async()=>await d((async()=>(await w(),na((await y(i,p))[g]?.[ca]??"null"))))),(async a=>await d((async()=>{var t;await w(),await u(i,p,{[g]:{[ca]:(t=a()??null,JSON.stringify(t,((a,t)=>t instanceof Map?L.fromEntries([...t]):t)))}},!0,!0)}))),e,n,s,1,{[o]:()=>c},c)},la=(a,t,e,n,s,[i,r,[c,l,w]],y,u,d,v)=>{const[m,f,A,C]=aa(t,y,s,v),h=async(a,t)=>await E(x(r,(async([e,n,s,i],r)=>{t&&!_(a,r)||await A(e,n,a[r],s,i,t)}))),N=async(a,t)=>l?await A(w,p,{[g]:a},!0,!0,t):null;return ra(a,(async()=>await C((async()=>{await m();const a=await(async()=>M(T(await E(x(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!H(a[1])))))(),t=await(async()=>c?(await f(w,p))[g]:{})();return H(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await C((async()=>{if(await m(),o(t)){const[t,e]=a();await h(t),await N(e)}else await h(t[0],!0),await N(t[1],!0)}))),e,n,s,1,{[d]:()=>u},u)},wa="json",ya="autoLoadIntervalSeconds",ua="rowIdColumnName",da="tableId",Ea="tableName",ga={mode:wa,[ya]:1},pa={load:0,save:0,[Ea]:t+"_values"},va=(a,t,e,n)=>{const s=Y();return F(a,((a,i)=>{const r=u(j(P(t,w(a)?{[e]:a}:a)),0,B(t));o(r[0])||n(i,r[0])||G(s,i,r)})),s},ma="pragma ",fa="data_version",Aa="schema_version",Ca=(a,e,n,s,i,r,o,l,y="getDb",d)=>{let E,g,v;const[f,A,C,T]=(a=>{const e=(a=>P(ga,w(a)?{storeTableName:a}:a??{}))(a),n=e[ya];if(e.mode==wa){const{storeTableName:a=t}=e;return[1,n,[a],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(j(P(pa,r)),0,B(pa)),o=c[2],l=W(o);return[0,n,[va(s,{[da]:null,[ua]:p},da,(a=>z(l,a)&&a==o)),va(i,{[Ea]:null,[ua]:p,deleteEmptyColumns:0,deleteEmptyTable:0},Ea,((a,t)=>z(l,t)&&t==o)),c],l]})(e);return(f?oa:la)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const t=(await n(ma+fa))[0][fa],e=(await n(ma+Aa))[0][Aa],s=(await n(m+" TOTAL_CHANGES() c"))[0].c;t==(E??=t)&&e==(g??=e)&&s==(v??=s)||(a(),E=t,g=e)}catch{}},e=A,t(),setInterval(t,1e3*e)),s((t=>T.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),E=g=null,i(t)}),o,C,O(T),l,y,d)},Ta="change",ha=(a,t,e,n,s)=>Ca(a,e,(async(a,e=[])=>{return await(n=(n,s)=>t.all(a,e,((a,t)=>a?s(a):n(t))),new r(n));var n}),(a=>{const e=(t,e,n)=>a(n);return t.on(Ta,e),e}),(a=>t.off(Ta,a)),n,s,t);export{ha as createSqlite3Persister};
1
+ const a=a=>typeof a,t="tinybase",e="",n=",",s=a(e),i=(a,t)=>a.repeat(t),r=Promise,c=clearInterval,o=a=>null==a,l=(a,t,e)=>o(a)?e?.():t(a),w=t=>a(t)==s,y=a=>Array.isArray(a),u=(a,t,e)=>a.slice(t,e),d=a=>a.length,E=async a=>r.all(a),v=(a,t="")=>a.join(t),g=(a,t)=>a.map(t),p=a=>0==d(a),m=(a,t)=>a.filter(t),C=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,O=a=>[...a?.values()??[]],T=(a,t)=>a?.delete(t),f=Object,h=a=>f.getPrototypeOf(a),N=f.entries,R=f.keys,L=f.freeze,S=(a=[])=>f.fromEntries(a),I=(...a)=>f.assign({},...a),b=(a,t)=>t in a,D=(a,t)=>g(N(a),(([a,e])=>t(e,a))),M=a=>f.values(a),$=a=>d(R(a)),_=a=>(a=>!o(a)&&l(h(a),(a=>a==f.prototype||o(h(a))),(()=>!0)))(a)&&0==$(a),P=a=>new Map(a),F=a=>[...a?.keys()??[]],j=(a,t)=>a?.get(t),B=(a,t)=>g([...a?.entries()??[]],(([a,e])=>t(e,a))),H=(a,t,e)=>o(e)?(T(a,t),a):a?.set(t,e),J=(a,t,e,n)=>(A(a,t)||H(a,t,e()),j(a,t)),Y=(a,t,e,n=H)=>(D(t,((t,n)=>e(a,n,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>b(t,e)?0:n(a,e))),a),k="_",x="_id",G=a=>`"${a.replace(/"/g,'""')}"`,U="SELECT",W=a=>new Set(y(a)||o(a)?a:[a]),z=(a,t)=>a?.add(t),K="TABLE",V="ALTER "+K,q="DELETE FROM",Q=U+"*FROM",X="FROM pragma_table_",Z="WHERE",aa=(a,t,s,i)=>{const r=P();return[async()=>Y(r,S(await E(g(await a("SELECT name "+X+"list WHERE schema='main'AND(type='table'OR type='view')AND name IN("+ea(t)+")ORDER BY name",t),(async({name:t})=>[t,S(g(await a(U+" name,type "+X+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>H(r,t,Y(J(r,t,P),e,((a,t,e)=>{e!=j(a,t)&&H(a,t,e)}),((a,t)=>H(a,t))))),((a,t)=>H(r,t))),async(t,e)=>((a,t)=>!o(j(j(r,a),t)))(t,e)?S(m(g(await a(Q+G(t)),(a=>{return[a[e],(t={...a},n=e,delete t[n],t)];var t,n})),(([a,t])=>!o(a)&&!_(t)))):{},async(t,s,c,l,w,y=!1)=>{const u=W();D(c??{},(a=>g(R(a??{}),(a=>z(u,a)))));const d=O(u);if(!y&&w&&p(d)&&A(r,t))return await a("DROP "+K+G(t)),void H(r,t);if(p(d)||A(r,t)){const n=j(r,t),i=W(F(n));await E([...g(d,(async s=>{T(i,s)||(await a(V+G(t)+"ADD"+G(s)),H(n,s,e))})),...!y&&l?g(O(i),(async e=>{e!=s&&(await a(V+G(t)+"DROP"+G(e)),H(n,e))})):[]])}else await a("CREATE "+K+G(t)+"("+G(s)+` PRIMARY KEY ON CONFLICT REPLACE${v(g(d,(a=>n+G(a))))});`),H(r,t,P([[s,e],...g(d,(a=>[a,e]))]));if(y)o(c)?await a(q+G(t)+Z+" 1"):await E(D(c,(async(e,n)=>{o(e)?await a(q+G(t)+Z+G(s)+"=?",[n]):p(d)||await ta(a,t,s,R(e),[n,...M(e)],i)})));else if(p(d))A(r,t)&&await a(q+G(t)+Z+" 1");else{const e=m(F(j(r,t)),(a=>a!=s)),n=[],o=[];D(c??{},((a,t)=>{C(n,t,...g(e,(t=>a?.[t]))),C(o,t)})),await ta(a,t,s,e,n,i),await a(q+G(t)+Z+G(s)+"NOT IN("+ea(o)+")",o)}},async t=>{let e;await a("BEGIN");try{e=await t()}catch(a){s?.(a)}return await a("END"),e}]},ta=async(a,t,s,r,c,o=!0)=>await a("INSERT "+(o?e:"OR REPLACE ")+"INTO"+G(t)+"("+G(s)+v(g(r,(a=>n+G(a))))+")VALUES"+u(i(`,(?${i(",?",d(r))})`,d(c)/(d(r)+1)),1)+(o?"ON CONFLICT("+G(s)+")DO UPDATE SET"+v(g(r,(a=>G(a)+"=excluded."+G(a))),n):e),g(c,(a=>a??null))),ea=a=>v(g(a,(()=>"?")),n),na=P(),sa=P(),ia=(a,t,e,n,s,i,r,c={},w=[])=>{let u,d,E,v=0;J(na,w,(()=>0)),J(sa,w,(()=>[]));const[g,p,m,A,O]=((a=1,t)=>a>1&&"merge"in t?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[a],[t]])=>!_(a)||!_(t),t.setDefaultContent]:2!=a?[0,t.getContent,t.getTransactionChanges,([a,t])=>!_(a)||!_(t),t.setContent]:0)(r,a),T=t=>{(g&&y(t?.[0])?1===t?.[2]?a.applyMergeableChanges:a.setMergeableContent:1===t?.[2]?a.applyChanges:a.setContent)(t)},f=async a=>(2!=v&&(v=1,await S((async()=>{try{T(await t())}catch(t){i?.(t),a&&O(a)}v=0}))),I),h=()=>(d&&(s(d),d=void 0),I),N=async a=>(1!=v&&(v=2,await S((async()=>{try{await e(p,a)}catch(a){i?.(a)}v=0}))),I),R=()=>(l(E,a.delListener),E=void 0,I),S=async(...a)=>(C(j(sa,w),...a),await(async()=>{if(!j(na,w)){for(H(na,w,1);!o((a=j(sa,w),u=a.shift()));)try{await u()}catch(a){i?.(a)}H(na,w,0)}var a})(),I),I={load:f,startAutoLoad:async a=>(await h().load(a),d=n((async(a,t)=>{t||a?2!=v&&(v=1,T(t??a),v=0):await f()})),I),stopAutoLoad:h,isAutoLoading:()=>!o(d),save:N,startAutoSave:async()=>(await R().save(),E=a.addDidFinishTransactionListener((()=>{const a=m();A(a)&&N(a)})),I),stopAutoSave:R,isAutoSaving:()=>!o(E),schedule:S,getStore:()=>a,destroy:()=>h().stopAutoSave(),getStats:()=>({}),...c};return L(I)},ra=(a,t,e,n,s,i,[r,c,o],l,w,y,u)=>{const[d,E,v,g]=aa(t,l,s,u);return ia(a,(async()=>await g((async()=>{return await d(),a=(await E(r,c))[k]?.[o]??"null",JSON.parse(a,((a,t)=>""===t?void 0:t));var a}))),(async a=>await g((async()=>{var t;await d(),await v(r,c,{[k]:{[o]:(t=a()??null,JSON.stringify(t,((a,t)=>void 0===t?"":t)))}},!0,!0)}))),e,n,s,i,{[y]:()=>w},w)},ca=(a,t,e,n,s,i,[r,c,[l,w,y]],u,d,v,g)=>{const[p,C,A,O]=aa(t,u,s,g),T=async(a,t)=>await E(B(c,(async([e,n,s,i],r)=>{t&&!b(a,r)||await A(e,n,a[r],s,i,t)}))),f=async(a,t)=>w?await A(y,x,{[k]:a},!0,!0,t):null;return ia(a,(async()=>await O((async()=>{await p();const a=await(async()=>S(m(await E(B(r,(async([a,t],e)=>[a,await C(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>l?(await C(y,x))[k]:{})();return _(a)&&o(t)?void 0:[a,t]}))),(async(a,t)=>await O((async()=>{if(await p(),o(t)){const[t,e]=a();await T(t),await f(e)}else await T(t[0],!0),await f(t[1],!0)}))),e,n,s,i,{[v]:()=>d},d)},oa="ColumnName",la="store",wa="json",ya=la+"TableName",ua=la+"Id"+oa,da=la+oa,Ea="autoLoadIntervalSeconds",va="rowId"+oa,ga="tableId",pa="tableName",ma={mode:wa,[Ea]:1},Ca={load:0,save:0,[pa]:t+"_values"},Aa=(a,t,e,n,s)=>{const i=P();return D(a,((a,r)=>{const c=u(M(I(t,w(a)?{[e]:a}:a)),0,$(t));o(c[0])||n(r,c[0])||(s(r,c[0]),H(i,r,c))})),i},Oa="pragma_",Ta="data_version",fa="schema_version",ha="change",Na=(a,e,n,s,i)=>((a,e,n,s,i,r,o,l,y,d="getDb",E)=>{let v,g,p;const[m,C,T,f]=(a=>{const e=(a=>I(ma,w(a)?{[ya]:a}:a??{}))(a),n=e[Ea];if(e.mode==wa){const a=e[ya]??t;return[1,n,[a,e[ua]??x,e[da]??la],W(a)]}const{tables:{load:s={},save:i={}}={},values:r={}}=e,c=u(M(I(Ca,r)),0,$(Ca)),o=c[2],l=W(o),y=W(o);return[0,n,[Aa(s,{[ga]:null,[va]:x},ga,(a=>A(y,a)),(a=>z(l,a))),Aa(i,{[pa]:null,[va]:x,deleteEmptyColumns:0,deleteEmptyTable:0},pa,((a,t)=>A(y,t)),((a,t)=>z(l,t))),c],l]})(e);return(m?ra:ca)(a,r?async(a,t)=>(r(a,t),await n(a,t)):n,(a=>{return[(t=async()=>{try{const[{d:t,s:e,c:s}]=await n(`SELECT ${Ta} d,${fa} s,TOTAL_CHANGES() c FROM ${Oa}${Ta} JOIN ${Oa}${fa}`);t==(v??=t)&&e==(g??=e)&&s==(p??=s)||(a(),v=t,g=e)}catch{}},e=C,t(),setInterval(t,1e3*e)),s((t=>f.has(t)?a():0))];var t,e}),(([a,t])=>{c(a),v=g=p=null,i(t)}),o,l,T,O(f),y,d,E)})(a,n,(async(a,t=[])=>{return await(n=(n,s)=>e.all(a,t,((a,t)=>a?s(a):n(t))),new r(n));var n}),(a=>{const t=(t,e,n)=>a(n);return e.on(ha,t),t}),(a=>e.off(ha,a)),s,i,3,e);export{Na as createSqlite3Persister};
@@ -36,7 +36,7 @@ import {Store} from '../store.d.ts';
36
36
  * @category Persister
37
37
  * @since v4.5.0
38
38
  */
39
- export interface ExpoSqliteNextPersister extends Persister {
39
+ export interface ExpoSqliteNextPersister extends Persister<3> {
40
40
  /**
41
41
  * The getDb method returns a reference to the database instance the Store is
42
42
  * being persisted to.
@@ -35,7 +35,7 @@ import {Store} from '../store.d.ts';
35
35
  * @category Persister
36
36
  * @since v4.3.14
37
37
  */
38
- export interface ExpoSqlitePersister extends Persister {
38
+ export interface ExpoSqlitePersister extends Persister<3> {
39
39
  /**
40
40
  * The getDb method returns a reference to the database instance the Store is
41
41
  * being persisted to.
@@ -23,7 +23,7 @@ import {Store} from '../store.d.ts';
23
23
  * @category Persister
24
24
  * @since v4.3.14
25
25
  */
26
- export interface SqliteWasmPersister extends Persister {
26
+ export interface SqliteWasmPersister extends Persister<3> {
27
27
  /**
28
28
  * The getDb method returns a reference to the database instance the Store is
29
29
  * being persisted to.
@@ -24,7 +24,7 @@ import {Store} from '../store.d.ts';
24
24
  * @category Persister
25
25
  * @since v4.3.14
26
26
  */
27
- export interface Sqlite3Persister extends Persister {
27
+ export interface Sqlite3Persister extends Persister<3> {
28
28
  /**
29
29
  * The getDb method returns a reference to the database instance the Store is
30
30
  * being persisted to.
@@ -189,14 +189,15 @@ export type DatabasePersisterConfig = DpcJson | DpcTabular;
189
189
  * The DpcJson type describes the configuration of a database-oriented Persister
190
190
  * operating in serialized JSON mode.
191
191
  *
192
- * The only setting is the `storeTableName` property, which indicates the name
193
- * of a table in the database which will be used to serialize the Store content
194
- * into. It defaults to `tinybase`.
192
+ * One setting is the `storeTableName` property, which indicates the name of a
193
+ * table in the database which will be used to serialize the Store content into.
194
+ * It defaults to `tinybase`.
195
195
  *
196
196
  * That table in the database will be given two columns: a primary key column
197
- * called `_id`, and one called `store`. The Persister will place a single row
198
- * in this table with `_` in the `_id` column, and the JSON serialization in the
199
- * `store` column, something like:
197
+ * called `_id`, and one called `store`. (These column names can be changed
198
+ * using the `rowIdColumnName` and `storeColumnName` settings). The Persister
199
+ * will place a single row in this table with `_` in the `_id` column, and the
200
+ * JSON serialization in the `store` column, something like:
200
201
  *
201
202
  * ```
202
203
  * > SELECT * FROM tinybase;
@@ -235,6 +236,16 @@ export type DpcJson = {
235
236
  * `tinybase`.
236
237
  */
237
238
  storeTableName?: string;
239
+ /**
240
+ * The optional name of the column in the database table that will be used as
241
+ * the Id for the Store, defaulting to '_id', since v5.0.
242
+ */
243
+ storeIdColumnName?: string;
244
+ /**
245
+ * The optional name of the column in the database table that will be used for
246
+ * the JSON of the Store, defaulting to 'store', since v5.0.
247
+ */
248
+ storeColumnName?: string;
238
249
  /**
239
250
  * How often the Persister should poll the database for any changes made to it
240
251
  * by other clients, defaulting to 1 second.
@@ -577,7 +588,7 @@ export type DpcTabularValues = {
577
588
  */
578
589
  save?: boolean;
579
590
  /**
580
- * The optional name of the database table from and to which the Store Table
591
+ * The optional name of the database table from and to which the Store Values
581
592
  * should be loaded or saved, defaulting to `tinybase_values`.
582
593
  */
583
594
  tableName?: string;
@@ -467,7 +467,7 @@ export function useStoreOrStoreById(
467
467
  * Note that other components that consume a Store registered like this should
468
468
  * defend against it being undefined at first. On the first render, the other
469
469
  * component will likely not yet have completed the registration. In the example
470
- * below, we use the null-safe `useStore('petStore')?.getTableIds()` to do this.
470
+ * below, we use the null-safe `useStore('petStore')?` to do this.
471
471
  * @param storeId The Id of the Store object to be registered with the Provider.
472
472
  * @param store The Store object to be registered.
473
473
  * @example
@@ -37,7 +37,7 @@ import {SQLiteDatabase} from 'expo-sqlite/next';
37
37
  * @since v4.5.0
38
38
  */
39
39
  export interface ExpoSqliteNextPersister<Schemas extends OptionalSchemas>
40
- extends Persister<Schemas> {
40
+ extends Persister<Schemas, 3> {
41
41
  /**
42
42
  * The getDb method returns a reference to the database instance the Store is
43
43
  * being persisted to.
@@ -36,7 +36,7 @@ import {SQLiteDatabase} from 'expo-sqlite';
36
36
  * @since v4.3.14
37
37
  */
38
38
  export interface ExpoSqlitePersister<Schemas extends OptionalSchemas>
39
- extends Persister<Schemas> {
39
+ extends Persister<Schemas, 3> {
40
40
  /**
41
41
  * The getDb method returns a reference to the database instance the Store is
42
42
  * being persisted to.
@@ -24,7 +24,7 @@ import {OptionalSchemas, Store} from '../store.d.ts';
24
24
  * @since v4.3.14
25
25
  */
26
26
  export interface SqliteWasmPersister<Schemas extends OptionalSchemas>
27
- extends Persister<Schemas> {
27
+ extends Persister<Schemas, 3> {
28
28
  /**
29
29
  * The getDb method returns a reference to the database instance the Store is
30
30
  * being persisted to.
@@ -25,7 +25,7 @@ import {Database} from 'sqlite3';
25
25
  * @since v4.3.14
26
26
  */
27
27
  export interface Sqlite3Persister<Schemas extends OptionalSchemas>
28
- extends Persister<Schemas> {
28
+ extends Persister<Schemas, 3> {
29
29
  /**
30
30
  * The getDb method returns a reference to the database instance the Store is
31
31
  * being persisted to.
@@ -221,14 +221,15 @@ export type DatabasePersisterConfig<Schemas extends OptionalSchemas> =
221
221
  * The DpcJson type describes the configuration of a database-oriented Persister
222
222
  * operating in serialized JSON mode.
223
223
  *
224
- * The only setting is the `storeTableName` property, which indicates the name
225
- * of a table in the database which will be used to serialize the Store content
226
- * into. It defaults to `tinybase`.
224
+ * One setting is the `storeTableName` property, which indicates the name of a
225
+ * table in the database which will be used to serialize the Store content into.
226
+ * It defaults to `tinybase`.
227
227
  *
228
228
  * That table in the database will be given two columns: a primary key column
229
- * called `_id`, and one called `store`. The Persister will place a single row
230
- * in this table with `_` in the `_id` column, and the JSON serialization in the
231
- * `store` column, something like:
229
+ * called `_id`, and one called `store`. (These column names can be changed
230
+ * using the `rowIdColumnName` and `storeColumnName` settings). The Persister
231
+ * will place a single row in this table with `_` in the `_id` column, and the
232
+ * JSON serialization in the `store` column, something like:
232
233
  *
233
234
  * ```
234
235
  * > SELECT * FROM tinybase;
@@ -267,6 +268,16 @@ export type DpcJson = {
267
268
  * `tinybase`.
268
269
  */
269
270
  storeTableName?: string;
271
+ /**
272
+ * The optional name of the column in the database table that will be used as
273
+ * the Id for the Store, defaulting to '_id', since v5.0.
274
+ */
275
+ storeIdColumnName?: string;
276
+ /**
277
+ * The optional name of the column in the database table that will be used for
278
+ * the JSON of the Store, defaulting to 'store', since v5.0.
279
+ */
280
+ storeColumnName?: string;
270
281
  /**
271
282
  * How often the Persister should poll the database for any changes made to it
272
283
  * by other clients, defaulting to 1 second.
@@ -609,7 +620,7 @@ export type DpcTabularValues = {
609
620
  */
610
621
  save?: boolean;
611
622
  /**
612
- * The optional name of the database table from and to which the Store Table
623
+ * The optional name of the database table from and to which the Store Values
613
624
  * should be loaded or saved, defaulting to `tinybase_values`.
614
625
  */
615
626
  tableName?: string;
@@ -566,7 +566,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
566
566
  * Note that other components that consume a Store registered like this should
567
567
  * defend against it being undefined at first. On the first render, the other
568
568
  * component will likely not yet have completed the registration. In the example
569
- * below, we use the null-safe `useStore('petStore')?.getTableIds()` to do this.
569
+ * below, we use the null-safe `useStore('petStore')?` to do this.
570
570
  * @param storeId The Id of the Store object to be registered with the Provider.
571
571
  * @param store The Store object to be registered.
572
572
  * @example