tinybase 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/debug/persisters/persister-expo-sqlite.js +764 -0
- package/lib/debug/persisters/persister-sqlite3.js +2 -2
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -0
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -0
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +118 -0
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +128 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -0
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/package.json +2 -1
- package/readme.md +1 -1
|
@@ -756,8 +756,8 @@ const createSqlite3Persister = (store, db, configOrStoreTableName, logSql) =>
|
|
|
756
756
|
createSqlitePersister(
|
|
757
757
|
store,
|
|
758
758
|
configOrStoreTableName,
|
|
759
|
-
(sql, args = []) =>
|
|
760
|
-
promiseNew((resolve, reject) =>
|
|
759
|
+
async (sql, args = []) =>
|
|
760
|
+
await promiseNew((resolve, reject) =>
|
|
761
761
|
db.all(sql, args, (error, rows) =>
|
|
762
762
|
error ? reject(error) : resolve(rows.map((row) => ({...row}))),
|
|
763
763
|
),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>typeof e,n="tinybase",t=",",l=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),s=(e,n,t)=>e.slice(n,t),c=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,h=(e,n,t)=>f(e)?null==t?void 0:t():n(e),E=n=>e(n)==l,p=e=>{return n=function*(){return v.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},T=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},A=(e,n)=>null==e?void 0:e.delete(n),L=Object,O=L.keys,P=L.freeze,b=(e=[])=>L.fromEntries(e),w=(...e)=>L.assign({},...e),R=(e,n)=>i(L.entries(e),(([e,t])=>n(t,e))),N=e=>L.values(e),x=e=>u(O(e)),C=e=>(e=>y(e,L)&&e.constructor==L)(e)&&0==x(e),S=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>{var t;return i([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},F=(e,n,t)=>f(t)?(A(e,n),e):null==e?void 0:e.set(n,t),M=(e,n,t,l=F)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!f(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),$=e=>new Set(Array.isArray(e)||f(e)?e:[e]),j=(e,n)=>null==e?void 0:e.add(n),_="_",B="_id",H=e=>`"${e.replace(/"/g,'""')}"`;var W=Object.defineProperty,k=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?W(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,q=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&Y(e,t,n[t]);if(k)for(var t of k(n))U.call(n,t)&&Y(e,t,n[t]);return e},z=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const K="FROM pragma_table_",V="WHERE",G=(e,n)=>{const l=S();return[()=>z(void 0,null,(function*(){return M(l,b(yield p(i(yield e("SELECT name "+K+"list WHERE schema='main'AND type='table'AND name IN("+X(n)+")",n),(n=>z(void 0,[n],(function*({name:n}){return[n,b(i(yield e("SELECT name,type "+K+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return F(l,n,M((i=S,m(o=l,r=n)||F(o,r,i()),D(o,r)),t,((e,n,t)=>{t!=D(e,n)&&F(e,n,t)}),((e,n)=>F(e,n))));var o,r,i}),((e,n)=>F(l,n)))})),(n,t)=>z(void 0,null,(function*(){return((e,n)=>!f(D(D(l,e),n)))(n,t)?b(d(i(yield e("SELECT*FROM"+H(n)),(e=>{return[e[t],(n=q({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!f(e)&&!C(n)))):{}})),(n,o,u,s,v,y=!1)=>z(void 0,null,(function*(){const h=$();R(null!=u?u:{},(e=>i(O(null!=e?e:{}),(e=>j(h,e)))));const E=T(h);if(!y&&v&&a(E)&&m(l,n))return yield e("DROP TABLE"+H(n)),void F(l,n);if(a(E)||m(l,n)){const t=D(l,n),r=$(g(t));yield p([...i(E,(l=>z(void 0,null,(function*(){A(r,l)||(yield e(`ALTER TABLE${H(n)}ADD${H(l)}`),F(t,l,""))})))),...!y&&s?i(T(r),(l=>z(void 0,null,(function*(){l!=o&&(yield e(`ALTER TABLE${H(n)}DROP${H(l)}`),F(t,l))})))):[]])}else yield e(`CREATE TABLE${H(n)}(${H(o)} PRIMARY KEY ON CONFLICT REPLACE${r(i(E,(e=>t+H(e))))});`),F(l,n,S([[o,""],...i(E,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+H(n)+"WHERE 1"):yield p(R(u,((t,l)=>z(void 0,null,(function*(){f(t)?yield e("DELETE FROM"+H(n)+V+H(o)+"=?",[l]):a(E)||(yield Q(e,n,o,O(t),[l,...N(t)]))})))));else if(a(E))m(l,n)&&(yield e("DELETE FROM"+H(n)+"WHERE 1"));else{const t=d(g(D(l,n)),(e=>e!=o)),r=[],a=[];R(null!=u?u:{},((e,n)=>{c(r,n,...i(t,(n=>null==e?void 0:e[n]))),c(a,n)})),yield Q(e,n,o,t,r),yield e("DELETE FROM"+H(n)+V+H(o)+"NOT IN("+X(a)+")",a)}}))]},Q=(e,n,l,a,d)=>z(void 0,null,(function*(){return yield e("INSERT INTO"+H(n)+"("+H(l)+r(i(a,(e=>t+H(e))))+")VALUES"+o(`,(?${o(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+H(l)+")DO UPDATE SET"+r(i(a,(e=>H(e)+"=excluded."+H(e))),t),d)})),X=e=>r(i(e,(()=>"?")),t),Z=JSON.parse;var ee=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ne=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,s=0;const v=[],y=e=>ee(void 0,null,(function*(){return 2!=a&&(a=1,yield E.schedule((()=>ee(void 0,null,(function*(){yield e(),a=0}))))),E})),E={load:(t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ee(void 0,[...t],(function*(t={},o={}){return E.stopAutoLoad(),yield E.load(t,o),s=1,u=l(((t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),E})),stopAutoLoad:()=>(s&&(o(u),u=void 0,s=0),E),save:n=>ee(void 0,null,(function*(){return 1!=a&&(a=2,yield E.schedule((()=>ee(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),E})),startAutoSave:()=>ee(void 0,null,(function*(){return yield E.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();C(t)&&C(l)||E.save((()=>[t,l]))})),E})),stopAutoSave:()=>(h(r,e.delListener),E),schedule:(...e)=>ee(void 0,null,(function*(){return c(v,...e),yield ee(void 0,null,(function*(){if(!d){for(d=1;!f((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),E})),getStore:()=>e,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(E)};var te=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const le="store",oe=(e,n,t,l,[o],r)=>{const[i,u,a]=G(n,r),d=ne(e,(()=>te(void 0,null,(function*(){var e;return yield i(),Z(null==(e=(yield u(o,B))[_])?void 0:e[le])}))),(e=>te(void 0,null,(function*(){return d.schedule(i,(()=>te(void 0,null,(function*(){var n;yield a(o,B,{[_]:{[le]:(n=e(),JSON.stringify(n,((e,n)=>y(n,Map)?L.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ie=(e,n,t,l,[o,r,[i,u,a]],s)=>{const[c,v,y]=G(n,s),h=(e,n)=>re(void 0,null,(function*(){return yield p(I(r,((t,l)=>re(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),E=(e,n)=>re(void 0,null,(function*(){return u?yield y(a,B,{[_]:e},!0,!0,n):null}));return ne(e,(()=>re(void 0,null,(function*(){yield c();const e=yield re(void 0,null,(function*(){return b(d(yield p(I(o,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!C(e[1]))))})),n=yield re(void 0,null,(function*(){return i?(yield v(a,B))[_]:{}}));return C(e)&&f(n)?void 0:[e,n]}))),((e,n)=>re(void 0,null,(function*(){if(yield c(),f(n)){const[n,t]=e();yield h(n),yield E(t)}else{const[e,t]=n();yield h(e,!0),yield E(t,!0)}}))),t,l)},ue="json",ae="autoLoadIntervalSeconds",de="rowIdColumnName",se="tableId",ce="tableName",ve={mode:ue,[ae]:1},ye={load:0,save:0,[ce]:n+"_values"},fe=(e,n,t,l)=>{const o=S();return R(e,((e,r)=>{const i=s(N(w(n,E(e)?{[t]:e}:e)),0,x(n));f(i[0])||l(r,i[0])||F(o,r,i)})),o};var he=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const Ee="pragma ",pe="data_version",me="schema_version",Te=(e,t,l,o,r,i)=>{let u,a;const[d,c,v,y]=(e=>{const t=(e=>w(ve,E(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ae];if(t.mode==ue){const{storeTableName:e=n}=t;return[1,l,[e],$(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=t,u=s(N(w(ye,i)),0,x(ye)),a=u[2],d=$(a);return[0,l,[fe(o,{[se]:null,[de]:B},se,(e=>j(d,e)&&e==a)),fe(r,{[ce]:null,[de]:B,deleteEmptyColumns:0,deleteEmptyTable:0},ce,((e,n)=>j(d,n)&&n==a)),u],d]})(t);return(d?oe:ie)(e,i?(e,n)=>he(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>he(void 0,null,(function*(){try{const n=(yield l(Ee+pe))[0][pe],t=(yield l(Ee+me))[0][me];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*c),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,T(y))},Ae=(e,n,t,l)=>Te(e,t,((e,...t)=>{return l=[e,...t],o=function*(e,t=[]){return(yield n.execAsync([{sql:e,args:t}],!1))[0].rows},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>n.onDatabaseChange((({tableName:n})=>e(n)))),(e=>e.remove()),l);export{Ae as createExpoSqlitePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,n="tinybase",t=",",l=e(""),
|
|
1
|
+
const e=e=>typeof e,n="tinybase",t=",",l=e(""),r=(e,n)=>e.repeat(n),o=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),s=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,p=(e,n,t)=>f(e)?null==t?void 0:t():n(e),h=n=>e(n)==l,E=e=>{return n=function*(){return v.all(e)},new Promise(((e,t)=>{var l=e=>{try{o(n.next(e))}catch(e){t(e)}},r=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);o((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},O=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},b=(e,n)=>null==e?void 0:e.delete(n),P=Object,T=P.keys,w=P.freeze,A=(e=[])=>P.fromEntries(e),L=(...e)=>P.assign({},...e),R=(e,n)=>i(P.entries(e),(([e,t])=>n(t,e))),S=e=>P.values(e),g=e=>u(T(e)),N=e=>(e=>y(e,P)&&e.constructor==P)(e)&&0==g(e),x=e=>new Map(e),C=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},I=(e,n)=>null==e?void 0:e.get(n),D=(e,n)=>{var t;return i([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},j=(e,n,t)=>f(t)?(b(e,n),e):null==e?void 0:e.set(n,t),F=(e,n,t,l=j)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!f(((e,n)=>p(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),M=e=>new Set(Array.isArray(e)||f(e)?e:[e]),$=(e,n)=>null==e?void 0:e.add(n),_="_",B="_id",H=e=>`"${e.replace(/"/g,'""')}"`;var W=Object.defineProperty,k=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?W(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,z=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&Y(e,t,n[t]);if(k)for(var t of k(n))U.call(n,t)&&Y(e,t,n[t]);return e},K=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const V="FROM pragma_table_",q="WHERE",G=(e,n)=>{const l=x();return[()=>K(void 0,null,(function*(){return F(l,A(yield E(i(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+X(n)+")",n),(n=>K(void 0,[n],(function*({name:n}){return[n,A(i(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return j(l,n,F((i=x,m(r=l,o=n)||j(r,o,i()),I(r,o)),t,((e,n,t)=>{t!=I(e,n)&&j(e,n,t)}),((e,n)=>j(e,n))));var r,o,i}),((e,n)=>j(l,n)))})),(n,t)=>K(void 0,null,(function*(){return((e,n)=>!f(I(I(l,e),n)))(n,t)?A(d(i(yield e("SELECT*FROM"+H(n)),(e=>{return[e[t],(n=z({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!f(e)&&!N(n)))):{}})),(n,r,u,c,v,y=!1)=>K(void 0,null,(function*(){const p=M();R(null!=u?u:{},(e=>i(T(null!=e?e:{}),(e=>$(p,e)))));const h=O(p);if(!y&&v&&a(h)&&m(l,n))return yield e("DROP TABLE"+H(n)),void j(l,n);if(a(h)||m(l,n)){const t=I(l,n),o=M(C(t));yield E([...i(h,(l=>K(void 0,null,(function*(){b(o,l)||(yield e(`ALTER TABLE${H(n)}ADD${H(l)}`),j(t,l,""))})))),...!y&&c?i(O(o),(l=>K(void 0,null,(function*(){l!=r&&(yield e(`ALTER TABLE${H(n)}DROP${H(l)}`),j(t,l))})))):[]])}else yield e(`CREATE TABLE${H(n)}(${H(r)} PRIMARY KEY ON CONFLICT REPLACE${o(i(h,(e=>t+H(e))))});`),j(l,n,x([[r,""],...i(h,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+H(n)+"WHERE 1"):yield E(R(u,((t,l)=>K(void 0,null,(function*(){f(t)?yield e("DELETE FROM"+H(n)+q+H(r)+"=?",[l]):a(h)||(yield Q(e,n,r,T(t),[l,...S(t)]))})))));else if(a(h))m(l,n)&&(yield e("DELETE FROM"+H(n)+"WHERE 1"));else{const t=d(C(I(l,n)),(e=>e!=r)),o=[],a=[];R(null!=u?u:{},((e,n)=>{s(o,n,...i(t,(n=>null==e?void 0:e[n]))),s(a,n)})),yield Q(e,n,r,t,o),yield e("DELETE FROM"+H(n)+q+H(r)+"NOT IN("+X(a)+")",a)}}))]},Q=(e,n,l,a,d)=>K(void 0,null,(function*(){return yield e("INSERT INTO"+H(n)+"("+H(l)+o(i(a,(e=>t+H(e))))+")VALUES"+r(`,(?${r(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+H(l)+")DO UPDATE SET"+o(i(a,(e=>H(e)+"=excluded."+H(e))),t),d)})),X=e=>o(i(e,(()=>"?")),t),Z=JSON.parse;var ee=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const ne=(e,n,t,l,r)=>{let o,i,u,a=0,d=0,c=0;const v=[],y=e=>ee(void 0,null,(function*(){return 2!=a&&(a=1,yield h.schedule((()=>ee(void 0,null,(function*(){yield e(),a=0}))))),h})),h={load:(t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ee(void 0,[...t],(function*(t={},r={}){return h.stopAutoLoad(),yield h.load(t,r),c=1,u=l(((t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){var r;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(r=null==t?void 0:t())?r:yield n())}catch(e){}}))))})))),h})),stopAutoLoad:()=>(c&&(r(u),u=void 0,c=0),h),save:n=>ee(void 0,null,(function*(){return 1!=a&&(a=2,yield h.schedule((()=>ee(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),h})),startAutoSave:()=>ee(void 0,null,(function*(){return yield h.stopAutoSave().save(),o=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();N(t)&&N(l)||h.save((()=>[t,l]))})),h})),stopAutoSave:()=>(p(o,e.delListener),h),schedule:(...e)=>ee(void 0,null,(function*(){return s(v,...e),yield ee(void 0,null,(function*(){if(!d){for(d=1;!f((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),h})),getStore:()=>e,destroy:()=>h.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return w(h)};var te=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const le="store",re=(e,n,t,l,[r],o)=>{const[i,u,a]=G(n,o),d=ne(e,(()=>te(void 0,null,(function*(){var e;return yield i(),Z(null==(e=(yield u(r,B))[_])?void 0:e[le])}))),(e=>te(void 0,null,(function*(){return d.schedule(i,(()=>te(void 0,null,(function*(){var n;yield a(r,B,{[_]:{[le]:(n=e(),JSON.stringify(n,((e,n)=>y(n,Map)?P.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var oe=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const ie=(e,n,t,l,[r,o,[i,u,a]],c)=>{const[s,v,y]=G(n,c),p=(e,n)=>oe(void 0,null,(function*(){return yield E(D(o,((t,l)=>oe(void 0,[t,l],(function*([t,l,r,o],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,r,o,n))})))))})),h=(e,n)=>oe(void 0,null,(function*(){return u?yield y(a,B,{[_]:e},!0,!0,n):null}));return ne(e,(()=>oe(void 0,null,(function*(){yield s();const e=yield oe(void 0,null,(function*(){return A(d(yield E(D(r,((e,n)=>oe(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!N(e[1]))))})),n=yield oe(void 0,null,(function*(){return i?(yield v(a,B))[_]:{}}));return N(e)&&f(n)?void 0:[e,n]}))),((e,n)=>oe(void 0,null,(function*(){if(yield s(),f(n)){const[n,t]=e();yield p(n),yield h(t)}else{const[e,t]=n();yield p(e,!0),yield h(t,!0)}}))),t,l)},ue="json",ae="autoLoadIntervalSeconds",de="rowIdColumnName",ce="tableId",se="tableName",ve={mode:ue,[ae]:1},ye={load:0,save:0,[se]:n+"_values"},fe=(e,n,t,l)=>{const r=x();return R(e,((e,o)=>{const i=c(S(L(n,h(e)?{[t]:e}:e)),0,g(n));f(i[0])||l(o,i[0])||j(r,o,i)})),r};var pe=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const he="pragma ",Ee="data_version",me="schema_version",Oe=(e,t,l,r,o,i)=>{let u,a;const[d,s,v,y]=(e=>{const t=(e=>L(ve,h(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ae];if(t.mode==ue){const{storeTableName:e=n}=t;return[1,l,[e],M(e)]}const{tables:{load:r={},save:o={}}={},values:i={}}=t,u=c(S(L(ye,i)),0,g(ye)),a=u[2],d=M(a);return[0,l,[fe(r,{[ce]:null,[de]:B},ce,(e=>$(d,e)&&e==a)),fe(o,{[se]:null,[de]:B,deleteEmptyColumns:0,deleteEmptyTable:0},se,((e,n)=>$(d,n)&&n==a)),u],d]})(t);return(d?re:ie)(e,i?(e,n)=>pe(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>pe(void 0,null,(function*(){try{const n=(yield l(he+Ee))[0][Ee],t=(yield l(he+me))[0][me];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*s),r((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,o(n)}),v,O(y))};var be=Object.defineProperty,Pe=Object.getOwnPropertySymbols,Te=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,Ae=(e,n,t)=>n in e?be(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Le="change",Re=(e,n,t,l)=>Oe(e,t,((e,...t)=>{return l=[e,...t],r=function*(e,t=[]){return yield(l=(l,r)=>n.all(e,t,((e,n)=>e?r(e):l(n.map((e=>((e,n)=>{for(var t in n||(n={}))Te.call(n,t)&&Ae(e,t,n[t]);if(Pe)for(var t of Pe(n))we.call(n,t)&&Ae(e,t,n[t]);return e})({},e)))))),new v(l));var l},new Promise(((e,n)=>{var t=e=>{try{i(r.next(e))}catch(e){n(e)}},o=e=>{try{i(r.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,o);i((r=r.apply(void 0,l)).next())}));var l,r}),(e=>{const t=(n,t,l)=>e(l);return n.on(Le,t),t}),(e=>n.off(Le,e)),l);export{Re as createSqlite3Persister};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=a=>typeof a,t="tinybase",e=",",s=a(""),n=(a,t)=>a.repeat(t),i=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),o=a=>a.length,r=a=>0==o(a),l=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),y=(a,...t)=>a.push(...t),E=Promise,u=(a,t)=>a instanceof t,d=a=>null==a,v=(a,t,e)=>d(a)?e?.():t(a),m=t=>a(t)==s,T=async a=>E.all(a),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],p=(a,t)=>a?.delete(t),h=Object,f=h.keys,R=h.freeze,N=(a=[])=>h.fromEntries(a),O=(...a)=>h.assign({},...a),C=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),S=a=>h.values(a),g=a=>o(f(a)),D=a=>(a=>u(a,h)&&a.constructor==h)(a)&&0==g(a),b=a=>new Map(a),I=a=>[...a?.keys()??[]],F=(a,t)=>a?.get(t),M=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),$=(a,t,e)=>d(e)?(p(a,t),a):a?.set(t,e),_=(a,t,e,s=$)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!d(((a,t)=>v(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),P=a=>new Set(Array.isArray(a)||d(a)?a:[a]),B=(a,t)=>a?.add(t),H="_",W="_id",j=a=>`"${a.replace(/"/g,'""')}"`,x="FROM pragma_table_",k="WHERE",J=(a,t)=>{const s=b();return[async()=>_(s,N(await T(c(await a("SELECT name "+x+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,N(c(await a("SELECT name,type "+x+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>{return $(s,t,_((c=b,A(n=s,i=t)||$(n,i,c()),F(n,i)),e,((a,t,e)=>{e!=F(a,t)&&$(a,t,e)}),((a,t)=>$(a,t))));var n,i,c}),((a,t)=>$(s,t))),async(t,e)=>((a,t)=>!d(F(F(s,a),t)))(t,e)?N(l(c(await a("SELECT*FROM"+j(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!d(a)&&!D(t)))):{},async(t,n,o,w,E,u=!1)=>{const v=P();C(o??{},(a=>c(f(a??{}),(a=>B(v,a)))));const m=L(v);if(!u&&E&&r(m)&&A(s,t))return await a("DROP TABLE"+j(t)),void $(s,t);if(r(m)||A(s,t)){const e=F(s,t),i=P(I(e));await T([...c(m,(async s=>{p(i,s)||(await a(`ALTER TABLE${j(t)}ADD${j(s)}`),$(e,s,""))})),...!u&&w?c(L(i),(async s=>{s!=n&&(await a(`ALTER TABLE${j(t)}DROP${j(s)}`),$(e,s))})):[]])}else await a(`CREATE TABLE${j(t)}(${j(n)} PRIMARY KEY ON CONFLICT REPLACE${i(c(m,(a=>e+j(a))))});`),$(s,t,b([[n,""],...c(m,(a=>[a,""]))]));if(u)d(o)?await a("DELETE FROM"+j(t)+"WHERE 1"):await T(C(o,(async(e,s)=>{d(e)?await a("DELETE FROM"+j(t)+k+j(n)+"=?",[s]):r(m)||await U(a,t,n,f(e),[s,...S(e)])})));else if(r(m))A(s,t)&&await a("DELETE FROM"+j(t)+"WHERE 1");else{const e=l(I(F(s,t)),(a=>a!=n)),i=[],r=[];C(o??{},((a,t)=>{y(i,t,...c(e,(t=>a?.[t]))),y(r,t)})),await U(a,t,n,e,i),await a("DELETE FROM"+j(t)+k+j(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,s,r,l)=>await a("INSERT INTO"+j(t)+"("+j(s)+i(c(r,(a=>e+j(a))))+")VALUES"+n(`,(?${n(",?",o(r))})`,o(l)/(o(r)+1)).substring(1)+"ON CONFLICT("+j(s)+")DO UPDATE SET"+i(c(r,(a=>j(a)+"=excluded."+j(a))),e),l),Y=a=>i(c(a,(()=>"?")),e),q=JSON.parse,z=(a,t,e,s,n)=>{let i,c,o,r=0,l=0,w=0;const E=[],u=async a=>(2!=r&&(r=1,await m.schedule((async()=>{await a(),r=0}))),m),m={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(m.stopAutoLoad(),await m.load(e,n),w=1,o=s((async(e,s)=>await u((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),m),stopAutoLoad:()=>(w&&(n(o),o=void 0,w=0),m),save:async t=>(1!=r&&(r=2,await m.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),m),startAutoSave:async()=>(await m.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||m.save((()=>[e,s]))})),m),stopAutoSave:()=>(v(i,a.delListener),m),schedule:async(...a)=>(y(E,...a),await(async()=>{if(!l){for(l=1;!d((a=E,c=a.shift()));)try{await c()}catch{}l=0}var a})(),m),getStore:()=>a,destroy:()=>m.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(m)},K="store",V=(a,t,e,s,[n],i)=>{const[c,o,r]=J(t,i),l=z(a,(async()=>(await c(),q((await o(n,W))[H]?.[K]))),(async a=>l.schedule(c,(async()=>{var t;await r(n,W,{[H]:{[K]:(t=a(),JSON.stringify(t,((a,t)=>u(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},G=(a,t,e,s,[n,i,[c,o,r]],w)=>{const[y,E,u]=J(t,w),v=async(a,t)=>await T(M(i,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await u(e,s,o,n,i,t)}))),m=async(a,t)=>o?await u(r,W,{[H]:a},!0,!0,t):null;return z(a,(async()=>{await y();const a=await(async()=>N(l(await T(M(n,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>c?(await E(r,W))[H]:{})();return D(a)&&d(t)?void 0:[a,t]}),(async(a,t)=>{if(await y(),d(t)){const[t,e]=a();await v(t),await m(e)}else{const[a,e]=t();await v(a,!0),await m(e,!0)}}),e,s)},Q="json",X="autoLoadIntervalSeconds",Z="rowIdColumnName",aa="tableId",ta="tableName",ea={mode:Q,[X]:1},sa={load:0,save:0,[ta]:t+"_values"},na=(a,t,e,s)=>{const n=b();return C(a,((a,i)=>{const c=w(S(O(t,m(a)?{[e]:a}:a)),0,g(t));d(c[0])||s(i,c[0])||$(n,i,c)})),n},ia="pragma ",ca="data_version",oa="schema_version",ra=(a,e,s,n,i,c)=>{let o,r;const[l,y,E,u]=(a=>{const e=(a=>O(ea,m(a)?{storeTableName:a}:a??{}))(a),s=e[X];if(e.mode==Q){const{storeTableName:a=t}=e;return[1,s,[a],P(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=e,o=w(S(O(sa,c)),0,g(sa)),r=o[2],l=P(r);return[0,s,[na(n,{[aa]:null,[Z]:W},aa,(a=>B(l,a)&&a==r)),na(i,{[ta]:null,[Z]:W,deleteEmptyColumns:0,deleteEmptyTable:0},ta,((a,t)=>B(l,t)&&t==r)),o],l]})(e);return(l?V:G)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(ia+ca))[0][ca],e=(await s(ia+oa))[0][oa];t==(o??=t)&&e==(r??=e)||(a(),o=t,r=e)}catch{}}),1e3*y),n((t=>u.has(t)?a():0))]),(([a,t])=>{clearInterval(a),o=r=null,i(t)}),E,L(u))},la=(a,t,e,s)=>ra(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()),s);export{la as createExpoSqlitePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a=a=>typeof a,t="tinybase",e=",",s=a(""),n=(a,t)=>a.repeat(t),i=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),o=a=>a.length,r=a=>0==o(a),l=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),y=(a,...t)=>a.push(...t),E=Promise,u=(a,t)=>a instanceof t,d=a=>null==a,v=(a,t,e)=>d(a)?e?.():t(a),T=t=>a(t)==s,m=async a=>E.all(a),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],p=(a,t)=>a?.delete(t),f=Object,h=f.keys,R=f.freeze,O=(a=[])=>f.fromEntries(a),N=(...a)=>f.assign({},...a),C=(a,t)=>c(f.entries(a),(([a,e])=>t(e,a))),S=a=>f.values(a),g=a=>o(h(a)),D=a=>(a=>u(a,f)&&a.constructor==f)(a)&&0==g(a),I=a=>new Map(a),b=a=>[...a?.keys()??[]],F=(a,t)=>a?.get(t),M=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),$=(a,t,e)=>d(e)?(p(a,t),a):a?.set(t,e),_=(a,t,e,s=$)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!d(((a,t)=>v(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),P=a=>new Set(Array.isArray(a)||d(a)?a:[a]),B=(a,t)=>a?.add(t),H="_",W="_id",j=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",x="WHERE",J=(a,t)=>{const s=I();return[async()=>_(s,O(await m(c(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,O(c(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>{return $(s,t,_((c=I,A(n=s,i=t)||$(n,i,c()),F(n,i)),e,((a,t,e)=>{e!=F(a,t)&&$(a,t,e)}),((a,t)=>$(a,t))));var n,i,c}),((a,t)=>$(s,t))),async(t,e)=>((a,t)=>!d(F(F(s,a),t)))(t,e)?O(l(c(await a("SELECT*FROM"+j(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!d(a)&&!D(t)))):{},async(t,n,o,w,E,u=!1)=>{const v=P();C(o??{},(a=>c(h(a??{}),(a=>B(v,a)))));const T=L(v);if(!u&&E&&r(T)&&A(s,t))return await a("DROP TABLE"+j(t)),void $(s,t);if(r(T)||A(s,t)){const e=F(s,t),i=P(b(e));await m([...c(T,(async s=>{p(i,s)||(await a(`ALTER TABLE${j(t)}ADD${j(s)}`),$(e,s,""))})),...!u&&w?c(L(i),(async s=>{s!=n&&(await a(`ALTER TABLE${j(t)}DROP${j(s)}`),$(e,s))})):[]])}else await a(`CREATE TABLE${j(t)}(${j(n)} PRIMARY KEY ON CONFLICT REPLACE${i(c(T,(a=>e+j(a))))});`),$(s,t,I([[n,""],...c(T,(a=>[a,""]))]));if(u)d(o)?await a("DELETE FROM"+j(t)+"WHERE 1"):await m(C(o,(async(e,s)=>{d(e)?await a("DELETE FROM"+j(t)+x+j(n)+"=?",[s]):r(T)||await U(a,t,n,h(e),[s,...S(e)])})));else if(r(T))A(s,t)&&await a("DELETE FROM"+j(t)+"WHERE 1");else{const e=l(b(F(s,t)),(a=>a!=n)),i=[],r=[];C(o??{},((a,t)=>{y(i,t,...c(e,(t=>a?.[t]))),y(r,t)})),await U(a,t,n,e,i),await a("DELETE FROM"+j(t)+x+j(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,s,r,l)=>await a("INSERT INTO"+j(t)+"("+j(s)+i(c(r,(a=>e+j(a))))+")VALUES"+n(`,(?${n(",?",o(r))})`,o(l)/(o(r)+1)).substring(1)+"ON CONFLICT("+j(s)+")DO UPDATE SET"+i(c(r,(a=>j(a)+"=excluded."+j(a))),e),l),Y=a=>i(c(a,(()=>"?")),e),z=JSON.parse,K=(a,t,e,s,n)=>{let i,c,o,r=0,l=0,w=0;const E=[],u=async a=>(2!=r&&(r=1,await T.schedule((async()=>{await a(),r=0}))),T),T={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(T.stopAutoLoad(),await T.load(e,n),w=1,o=s((async(e,s)=>await u((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),T),stopAutoLoad:()=>(w&&(n(o),o=void 0,w=0),T),save:async t=>(1!=r&&(r=2,await T.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||T.save((()=>[e,s]))})),T),stopAutoSave:()=>(v(i,a.delListener),T),schedule:async(...a)=>(y(E,...a),await(async()=>{if(!l){for(l=1;!d((a=E,c=a.shift()));)try{await c()}catch{}l=0}var a})(),T),getStore:()=>a,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(T)},V="store",q=(a,t,e,s,[n],i)=>{const[c,o,r]=J(t,i),l=K(a,(async()=>(await c(),z((await o(n,W))[H]?.[V]))),(async a=>l.schedule(c,(async()=>{var t;await r(n,W,{[H]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>u(t,Map)?f.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},G=(a,t,e,s,[n,i,[c,o,r]],w)=>{const[y,E,u]=J(t,w),v=async(a,t)=>await m(M(i,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await u(e,s,o,n,i,t)}))),T=async(a,t)=>o?await u(r,W,{[H]:a},!0,!0,t):null;return K(a,(async()=>{await y();const a=await(async()=>O(l(await m(M(n,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>c?(await E(r,W))[H]:{})();return D(a)&&d(t)?void 0:[a,t]}),(async(a,t)=>{if(await y(),d(t)){const[t,e]=a();await v(t),await T(e)}else{const[a,e]=t();await v(a,!0),await T(e,!0)}}),e,s)},Q="json",X="autoLoadIntervalSeconds",Z="rowIdColumnName",aa="tableId",ta="tableName",ea={mode:Q,[X]:1},sa={load:0,save:0,[ta]:t+"_values"},na=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const c=w(S(N(t,T(a)?{[e]:a}:a)),0,g(t));d(c[0])||s(i,c[0])||$(n,i,c)})),n},ia="pragma ",ca="data_version",oa="schema_version",ra=(a,e,s,n,i,c)=>{let o,r;const[l,y,E,u]=(a=>{const e=(a=>N(ea,T(a)?{storeTableName:a}:a??{}))(a),s=e[X];if(e.mode==Q){const{storeTableName:a=t}=e;return[1,s,[a],P(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=e,o=w(S(N(sa,c)),0,g(sa)),r=o[2],l=P(r);return[0,s,[na(n,{[aa]:null,[Z]:W},aa,(a=>B(l,a)&&a==r)),na(i,{[ta]:null,[Z]:W,deleteEmptyColumns:0,deleteEmptyTable:0},ta,((a,t)=>B(l,t)&&t==r)),o],l]})(e);return(l?q:G)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(ia+ca))[0][ca],e=(await s(ia+oa))[0][oa];t==(o??=t)&&e==(r??=e)||(a(),o=t,r=e)}catch{}}),1e3*y),n((t=>u.has(t)?a():0))]),(([a,t])=>{clearInterval(a),o=r=null,i(t)}),E,L(u))},la="change",wa=(a,t,e,s)=>ra(a,e,((a,e=[])=>
|
|
1
|
+
const a=a=>typeof a,t="tinybase",e=",",s=a(""),n=(a,t)=>a.repeat(t),i=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),o=a=>a.length,r=a=>0==o(a),l=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),y=(a,...t)=>a.push(...t),E=Promise,u=(a,t)=>a instanceof t,d=a=>null==a,v=(a,t,e)=>d(a)?e?.():t(a),T=t=>a(t)==s,m=async a=>E.all(a),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],p=(a,t)=>a?.delete(t),f=Object,h=f.keys,R=f.freeze,O=(a=[])=>f.fromEntries(a),N=(...a)=>f.assign({},...a),C=(a,t)=>c(f.entries(a),(([a,e])=>t(e,a))),S=a=>f.values(a),g=a=>o(h(a)),D=a=>(a=>u(a,f)&&a.constructor==f)(a)&&0==g(a),I=a=>new Map(a),b=a=>[...a?.keys()??[]],F=(a,t)=>a?.get(t),M=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),$=(a,t,e)=>d(e)?(p(a,t),a):a?.set(t,e),_=(a,t,e,s=$)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!d(((a,t)=>v(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),P=a=>new Set(Array.isArray(a)||d(a)?a:[a]),B=(a,t)=>a?.add(t),H="_",W="_id",j=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",x="WHERE",J=(a,t)=>{const s=I();return[async()=>_(s,O(await m(c(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,O(c(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>{return $(s,t,_((c=I,A(n=s,i=t)||$(n,i,c()),F(n,i)),e,((a,t,e)=>{e!=F(a,t)&&$(a,t,e)}),((a,t)=>$(a,t))));var n,i,c}),((a,t)=>$(s,t))),async(t,e)=>((a,t)=>!d(F(F(s,a),t)))(t,e)?O(l(c(await a("SELECT*FROM"+j(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!d(a)&&!D(t)))):{},async(t,n,o,w,E,u=!1)=>{const v=P();C(o??{},(a=>c(h(a??{}),(a=>B(v,a)))));const T=L(v);if(!u&&E&&r(T)&&A(s,t))return await a("DROP TABLE"+j(t)),void $(s,t);if(r(T)||A(s,t)){const e=F(s,t),i=P(b(e));await m([...c(T,(async s=>{p(i,s)||(await a(`ALTER TABLE${j(t)}ADD${j(s)}`),$(e,s,""))})),...!u&&w?c(L(i),(async s=>{s!=n&&(await a(`ALTER TABLE${j(t)}DROP${j(s)}`),$(e,s))})):[]])}else await a(`CREATE TABLE${j(t)}(${j(n)} PRIMARY KEY ON CONFLICT REPLACE${i(c(T,(a=>e+j(a))))});`),$(s,t,I([[n,""],...c(T,(a=>[a,""]))]));if(u)d(o)?await a("DELETE FROM"+j(t)+"WHERE 1"):await m(C(o,(async(e,s)=>{d(e)?await a("DELETE FROM"+j(t)+x+j(n)+"=?",[s]):r(T)||await U(a,t,n,h(e),[s,...S(e)])})));else if(r(T))A(s,t)&&await a("DELETE FROM"+j(t)+"WHERE 1");else{const e=l(b(F(s,t)),(a=>a!=n)),i=[],r=[];C(o??{},((a,t)=>{y(i,t,...c(e,(t=>a?.[t]))),y(r,t)})),await U(a,t,n,e,i),await a("DELETE FROM"+j(t)+x+j(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,s,r,l)=>await a("INSERT INTO"+j(t)+"("+j(s)+i(c(r,(a=>e+j(a))))+")VALUES"+n(`,(?${n(",?",o(r))})`,o(l)/(o(r)+1)).substring(1)+"ON CONFLICT("+j(s)+")DO UPDATE SET"+i(c(r,(a=>j(a)+"=excluded."+j(a))),e),l),Y=a=>i(c(a,(()=>"?")),e),z=JSON.parse,K=(a,t,e,s,n)=>{let i,c,o,r=0,l=0,w=0;const E=[],u=async a=>(2!=r&&(r=1,await T.schedule((async()=>{await a(),r=0}))),T),T={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(T.stopAutoLoad(),await T.load(e,n),w=1,o=s((async(e,s)=>await u((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),T),stopAutoLoad:()=>(w&&(n(o),o=void 0,w=0),T),save:async t=>(1!=r&&(r=2,await T.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||T.save((()=>[e,s]))})),T),stopAutoSave:()=>(v(i,a.delListener),T),schedule:async(...a)=>(y(E,...a),await(async()=>{if(!l){for(l=1;!d((a=E,c=a.shift()));)try{await c()}catch{}l=0}var a})(),T),getStore:()=>a,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(T)},V="store",q=(a,t,e,s,[n],i)=>{const[c,o,r]=J(t,i),l=K(a,(async()=>(await c(),z((await o(n,W))[H]?.[V]))),(async a=>l.schedule(c,(async()=>{var t;await r(n,W,{[H]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>u(t,Map)?f.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},G=(a,t,e,s,[n,i,[c,o,r]],w)=>{const[y,E,u]=J(t,w),v=async(a,t)=>await m(M(i,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await u(e,s,o,n,i,t)}))),T=async(a,t)=>o?await u(r,W,{[H]:a},!0,!0,t):null;return K(a,(async()=>{await y();const a=await(async()=>O(l(await m(M(n,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>c?(await E(r,W))[H]:{})();return D(a)&&d(t)?void 0:[a,t]}),(async(a,t)=>{if(await y(),d(t)){const[t,e]=a();await v(t),await T(e)}else{const[a,e]=t();await v(a,!0),await T(e,!0)}}),e,s)},Q="json",X="autoLoadIntervalSeconds",Z="rowIdColumnName",aa="tableId",ta="tableName",ea={mode:Q,[X]:1},sa={load:0,save:0,[ta]:t+"_values"},na=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const c=w(S(N(t,T(a)?{[e]:a}:a)),0,g(t));d(c[0])||s(i,c[0])||$(n,i,c)})),n},ia="pragma ",ca="data_version",oa="schema_version",ra=(a,e,s,n,i,c)=>{let o,r;const[l,y,E,u]=(a=>{const e=(a=>N(ea,T(a)?{storeTableName:a}:a??{}))(a),s=e[X];if(e.mode==Q){const{storeTableName:a=t}=e;return[1,s,[a],P(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=e,o=w(S(N(sa,c)),0,g(sa)),r=o[2],l=P(r);return[0,s,[na(n,{[aa]:null,[Z]:W},aa,(a=>B(l,a)&&a==r)),na(i,{[ta]:null,[Z]:W,deleteEmptyColumns:0,deleteEmptyTable:0},ta,((a,t)=>B(l,t)&&t==r)),o],l]})(e);return(l?q:G)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(ia+ca))[0][ca],e=(await s(ia+oa))[0][oa];t==(o??=t)&&e==(r??=e)||(a(),o=t,r=e)}catch{}}),1e3*y),n((t=>u.has(t)?a():0))]),(([a,t])=>{clearInterval(a),o=r=null,i(t)}),E,L(u))},la="change",wa=(a,t,e,s)=>ra(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new E(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(la,e),e}),(a=>t.off(la,a)),s);export{wa as createSqlite3Persister};
|
|
Binary file
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The persister-expo-sqlite module of the TinyBase project lets you save and
|
|
3
|
+
* load Store data to and from a local Expo-SQLite database (in an appropriate
|
|
4
|
+
* React Native environment).
|
|
5
|
+
*
|
|
6
|
+
* Note that this Persister is currently experimental as Expo themselves iterate
|
|
7
|
+
* on the underlying database library API.
|
|
8
|
+
* @see Persisting Data guide
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
* @module persister-expo-sqlite
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {DatabasePersisterConfig, Persister} from '../persisters';
|
|
14
|
+
import {SQLiteDatabase} from 'expo-sqlite';
|
|
15
|
+
import {Store} from '../store';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The createExpoSqlitePersister function creates a Persister object that can
|
|
19
|
+
* persist the Store to a local Expo-SQLite database (in an appropriate React
|
|
20
|
+
* Native environment).
|
|
21
|
+
*
|
|
22
|
+
* Note that this Persister is currently experimental as Expo themselves iterate
|
|
23
|
+
* on the underlying database library API.
|
|
24
|
+
*
|
|
25
|
+
* As well as providing a reference to the Store to persist, you must provide a
|
|
26
|
+
* `db` parameter which identifies the database instance.
|
|
27
|
+
*
|
|
28
|
+
* A database Persister uses one of two modes: either a JSON serialization of
|
|
29
|
+
* the whole Store stored in a single row of a table (the default), or a tabular
|
|
30
|
+
* mapping of Table Ids to database table names and vice-versa).
|
|
31
|
+
*
|
|
32
|
+
* The third argument is a DatabasePersisterConfig object that configures which
|
|
33
|
+
* of those modes to use, and settings for each. If the third argument is simply
|
|
34
|
+
* a string, it is used as the `storeTableName` property of the JSON
|
|
35
|
+
* serialization.
|
|
36
|
+
*
|
|
37
|
+
* See the documentation for the DpcJson and DpcTabular types for more
|
|
38
|
+
* information on how both of those modes can be configured.
|
|
39
|
+
* @param store The Store to persist.
|
|
40
|
+
* @param db The database instance that was returned from
|
|
41
|
+
* `SQLite.openDatabase(...)`.
|
|
42
|
+
* @param configOrStoreTableName A DatabasePersisterConfig to configure the
|
|
43
|
+
* persistence mode (or a string to set the `storeTableName` property of the
|
|
44
|
+
* JSON serialization).
|
|
45
|
+
* @returns A reference to the new Persister object.
|
|
46
|
+
* @example
|
|
47
|
+
* This example creates a Persister object and persists the Store to a local
|
|
48
|
+
* SQLite database as a JSON serialization into the `my_tinybase` table. It
|
|
49
|
+
* makes a change to the database directly and then reloads it back into the
|
|
50
|
+
* Store.
|
|
51
|
+
*
|
|
52
|
+
* ```js yolo
|
|
53
|
+
* const db = SQLite.openDatabase('my.db');
|
|
54
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
55
|
+
* const persister = createExpoSqlitePersister(store, db, 'my_tinybase');
|
|
56
|
+
*
|
|
57
|
+
* await persister.save();
|
|
58
|
+
* // Store will be saved to the database.
|
|
59
|
+
*
|
|
60
|
+
* console.log(
|
|
61
|
+
* await new Promise((resolve) =>
|
|
62
|
+
* db.all('SELECT * FROM my_tinybase;', (_, rows) => resolve(rows)),
|
|
63
|
+
* ),
|
|
64
|
+
* );
|
|
65
|
+
* // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
|
|
66
|
+
*
|
|
67
|
+
* await new Promise((resolve) =>
|
|
68
|
+
* db.all(
|
|
69
|
+
* 'UPDATE my_tinybase SET store = ' +
|
|
70
|
+
* `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
|
|
71
|
+
* resolve,
|
|
72
|
+
* ),
|
|
73
|
+
* );
|
|
74
|
+
* await persister.load();
|
|
75
|
+
* console.log(store.getTables());
|
|
76
|
+
* // -> {pets: {felix: {species: 'cat'}}}
|
|
77
|
+
*
|
|
78
|
+
* persister.destroy();
|
|
79
|
+
* ```
|
|
80
|
+
* @example
|
|
81
|
+
* This example creates a Persister object and persists the Store to a local
|
|
82
|
+
* SQLite database with tabular mapping.
|
|
83
|
+
*
|
|
84
|
+
* ```js yolo
|
|
85
|
+
* const db = SQLite.openDatabase('my.db');
|
|
86
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
87
|
+
* const persister = createExpoSqlitePersister(store, db, {
|
|
88
|
+
* mode: 'tabular',
|
|
89
|
+
* tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
|
|
90
|
+
* });
|
|
91
|
+
*
|
|
92
|
+
* await persister.save();
|
|
93
|
+
* console.log(
|
|
94
|
+
* await new Promise((resolve) =>
|
|
95
|
+
* db.all('SELECT * FROM pets;', (_, rows) => resolve(rows)),
|
|
96
|
+
* ),
|
|
97
|
+
* );
|
|
98
|
+
* // -> [{_id: 'fido', species: 'dog'}]
|
|
99
|
+
*
|
|
100
|
+
* await new Promise((resolve) =>
|
|
101
|
+
* db.all(
|
|
102
|
+
* `INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`,
|
|
103
|
+
* resolve,
|
|
104
|
+
* ),
|
|
105
|
+
* );
|
|
106
|
+
* await persister.load();
|
|
107
|
+
* console.log(store.getTables());
|
|
108
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
109
|
+
*
|
|
110
|
+
* persister.destroy();
|
|
111
|
+
* ```
|
|
112
|
+
* @category Creation
|
|
113
|
+
*/
|
|
114
|
+
export function createExpoSqlitePersister(
|
|
115
|
+
store: Store,
|
|
116
|
+
db: SQLiteDatabase,
|
|
117
|
+
configOrStoreTableName?: DatabasePersisterConfig | string,
|
|
118
|
+
): Persister;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The persister-expo-sqlite module of the TinyBase project lets you save and
|
|
3
|
+
* load Store data to and from a local Expo-SQLite database (in an appropriate
|
|
4
|
+
* React Native environment).
|
|
5
|
+
*
|
|
6
|
+
* Note that this Persister is currently experimental as Expo themselves iterate
|
|
7
|
+
* on the underlying database library API.
|
|
8
|
+
* @see Persisting Data guide
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
* @module persister-expo-sqlite
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {DatabasePersisterConfig, Persister} from '../persisters';
|
|
14
|
+
import {OptionalSchemas, Store} from '../store';
|
|
15
|
+
import {SQLiteDatabase} from 'expo-sqlite';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The createExpoSqlitePersister function creates a Persister object that can
|
|
19
|
+
* persist the Store to a local Expo-SQLite database (in an appropriate React
|
|
20
|
+
* Native environment).
|
|
21
|
+
*
|
|
22
|
+
* This has schema-based typing. The following is a simplified representation:
|
|
23
|
+
*
|
|
24
|
+
* ```ts override
|
|
25
|
+
* createExpoSqlitePersister(
|
|
26
|
+
* store: Store,
|
|
27
|
+
* db: SQLiteDatabase,
|
|
28
|
+
* configOrStoreTableName?: DatabasePersisterConfig | string,
|
|
29
|
+
* ): Persister;
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Note that this Persister is currently experimental as Expo themselves iterate
|
|
33
|
+
* on the underlying database library API.
|
|
34
|
+
*
|
|
35
|
+
* As well as providing a reference to the Store to persist, you must provide a
|
|
36
|
+
* `db` parameter which identifies the database instance.
|
|
37
|
+
*
|
|
38
|
+
* A database Persister uses one of two modes: either a JSON serialization of
|
|
39
|
+
* the whole Store stored in a single row of a table (the default), or a tabular
|
|
40
|
+
* mapping of Table Ids to database table names and vice-versa).
|
|
41
|
+
*
|
|
42
|
+
* The third argument is a DatabasePersisterConfig object that configures which
|
|
43
|
+
* of those modes to use, and settings for each. If the third argument is simply
|
|
44
|
+
* a string, it is used as the `storeTableName` property of the JSON
|
|
45
|
+
* serialization.
|
|
46
|
+
*
|
|
47
|
+
* See the documentation for the DpcJson and DpcTabular types for more
|
|
48
|
+
* information on how both of those modes can be configured.
|
|
49
|
+
* @param store The Store to persist.
|
|
50
|
+
* @param db The database instance that was returned from
|
|
51
|
+
* `SQLite.openDatabase(...)`.
|
|
52
|
+
* @param configOrStoreTableName A DatabasePersisterConfig to configure the
|
|
53
|
+
* persistence mode (or a string to set the `storeTableName` property of the
|
|
54
|
+
* JSON serialization).
|
|
55
|
+
* @returns A reference to the new Persister object.
|
|
56
|
+
* @example
|
|
57
|
+
* This example creates a Persister object and persists the Store to a local
|
|
58
|
+
* SQLite database as a JSON serialization into the `my_tinybase` table. It
|
|
59
|
+
* makes a change to the database directly and then reloads it back into the
|
|
60
|
+
* Store.
|
|
61
|
+
*
|
|
62
|
+
* ```js yolo
|
|
63
|
+
* const db = SQLite.openDatabase('my.db');
|
|
64
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
65
|
+
* const persister = createExpoSqlitePersister(store, db, 'my_tinybase');
|
|
66
|
+
*
|
|
67
|
+
* await persister.save();
|
|
68
|
+
* // Store will be saved to the database.
|
|
69
|
+
*
|
|
70
|
+
* console.log(
|
|
71
|
+
* await new Promise((resolve) =>
|
|
72
|
+
* db.all('SELECT * FROM my_tinybase;', (_, rows) => resolve(rows)),
|
|
73
|
+
* ),
|
|
74
|
+
* );
|
|
75
|
+
* // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
|
|
76
|
+
*
|
|
77
|
+
* await new Promise((resolve) =>
|
|
78
|
+
* db.all(
|
|
79
|
+
* 'UPDATE my_tinybase SET store = ' +
|
|
80
|
+
* `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
|
|
81
|
+
* resolve,
|
|
82
|
+
* ),
|
|
83
|
+
* );
|
|
84
|
+
* await persister.load();
|
|
85
|
+
* console.log(store.getTables());
|
|
86
|
+
* // -> {pets: {felix: {species: 'cat'}}}
|
|
87
|
+
*
|
|
88
|
+
* persister.destroy();
|
|
89
|
+
* ```
|
|
90
|
+
* @example
|
|
91
|
+
* This example creates a Persister object and persists the Store to a local
|
|
92
|
+
* SQLite database with tabular mapping.
|
|
93
|
+
*
|
|
94
|
+
* ```js yolo
|
|
95
|
+
* const db = SQLite.openDatabase('my.db');
|
|
96
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
97
|
+
* const persister = createExpoSqlitePersister(store, db, {
|
|
98
|
+
* mode: 'tabular',
|
|
99
|
+
* tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* await persister.save();
|
|
103
|
+
* console.log(
|
|
104
|
+
* await new Promise((resolve) =>
|
|
105
|
+
* db.all('SELECT * FROM pets;', (_, rows) => resolve(rows)),
|
|
106
|
+
* ),
|
|
107
|
+
* );
|
|
108
|
+
* // -> [{_id: 'fido', species: 'dog'}]
|
|
109
|
+
*
|
|
110
|
+
* await new Promise((resolve) =>
|
|
111
|
+
* db.all(
|
|
112
|
+
* `INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`,
|
|
113
|
+
* resolve,
|
|
114
|
+
* ),
|
|
115
|
+
* );
|
|
116
|
+
* await persister.load();
|
|
117
|
+
* console.log(store.getTables());
|
|
118
|
+
* // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
|
|
119
|
+
*
|
|
120
|
+
* persister.destroy();
|
|
121
|
+
* ```
|
|
122
|
+
* @category Creation
|
|
123
|
+
*/
|
|
124
|
+
export function createExpoSqlitePersister<Schemas extends OptionalSchemas>(
|
|
125
|
+
store: Store<Schemas>,
|
|
126
|
+
db: SQLiteDatabase,
|
|
127
|
+
configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
|
|
128
|
+
): Persister<Schemas>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),E=(a,...t)=>a.push(...t),d=Promise,u=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>d.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,R=h.keys,N=h.freeze,O=(a=[])=>h.fromEntries(a),S=(...a)=>h.assign({},...a),C=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),b=a=>h.values(a),g=a=>r(R(a)),D=a=>(a=>u(a,h)&&a.constructor==h)(a)&&0==g(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),x=(a,t,e,s=P)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),_=a=>new Set(Array.isArray(a)||f(a)?a:[a]),B=(a,t)=>a?.add(t),j="_",H="_id",W=a=>`"${a.replace(/"/g,'""')}"`,q="FROM pragma_table_",k="WHERE",J=(a,t)=>{const e=I();return[async()=>x(e,O(await m(c(await a("SELECT name "+q+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,O(c(await a("SELECT name,type "+q+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,s)=>{return P(e,t,x((o=I,v(n=e,i=t)||P(n,i,o()),M(n,i)),s,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))));var n,i,o}),((a,t)=>P(e,t))),async(t,s)=>((a,t)=>!f(M(M(e,a),t)))(t,s)?O(y(c(await a("SELECT*FROM"+W(t)),(a=>{return[a[s],(t={...a},e=s,delete t[e],t)];var t,e})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,n,i,r,w,d=!1)=>{const u=_();C(i??{},(a=>c(R(a??{}),(a=>B(u,a)))));const p=A(u);if(!d&&w&&l(p)&&v(e,t))return await a("DROP TABLE"+W(t)),void P(e,t);if(l(p)||v(e,t)){const s=M(e,t),i=_(F(s));await m([...c(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${W(t)}ADD${W(e)}`),P(s,e,""))})),...!d&&r?c(A(i),(async e=>{e!=n&&(await a(`ALTER TABLE${W(t)}DROP${W(e)}`),P(s,e))})):[]])}else await a(`CREATE TABLE${W(t)}(${W(n)} PRIMARY KEY ON CONFLICT REPLACE${o(c(p,(a=>s+W(a))))});`),P(e,t,I([[n,""],...c(p,(a=>[a,""]))]));if(d)f(i)?await a("DELETE FROM"+W(t)+"WHERE 1"):await m(C(i,(async(e,s)=>{f(e)?await a("DELETE FROM"+W(t)+k+W(n)+"=?",[s]):l(p)||await U(a,t,n,R(e),[s,...b(e)])})));else if(l(p))v(e,t)&&await a("DELETE FROM"+W(t)+"WHERE 1");else{const s=y(F(M(e,t)),(a=>a!=n)),o=[],r=[];C(i??{},((a,t)=>{E(o,t,...c(s,(t=>a?.[t]))),E(r,t)})),await U(a,t,n,s,o),await a("DELETE FROM"+W(t)+k+W(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,e,n,l)=>await a("INSERT INTO"+W(t)+"("+W(e)+o(c(n,(a=>s+W(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+W(e)+")DO UPDATE SET"+o(c(n,(a=>W(a)+"=excluded."+W(a))),s),l),Y=a=>o(c(a,(()=>"?")),s),z=JSON.parse,K=(a,t,e,s,n)=>{let i,o,c,r=0,l=0,y=0;const w=[],d=async a=>(2!=r&&(r=1,await u.schedule((async()=>{await a(),r=0}))),u),u={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(u.stopAutoLoad(),await u.load(e,n),y=1,c=s((async(e,s)=>await d((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),u),stopAutoLoad:()=>(y&&(n(c),c=void 0,y=0),u),save:async t=>(1!=r&&(r=2,await u.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),u),startAutoSave:async()=>(await u.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||u.save((()=>[e,s]))})),u),stopAutoSave:()=>(p(i,a.delListener),u),schedule:async(...a)=>(E(w,...a),await(async()=>{if(!l){for(l=1;!f((a=w,o=a.shift()));)try{await o()}catch{}l=0}var a})(),u),getStore:()=>a,destroy:()=>u.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return N(u)},V="store",G=(a,t,e,s,[n],i)=>{const[o,c,r]=J(t,i),l=K(a,(async()=>(await o(),z((await c(n,H))[j]?.[V]))),(async a=>l.schedule(o,(async()=>{var t;await r(n,H,{[j]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>u(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},Q=(a,t,e,s,[n,i,[o,c,r]],l)=>{const[w,E,d]=J(t,l),u=async(a,t)=>await m($(i,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await d(e,s,c,n,i,t)}))),p=async(a,t)=>c?await d(r,H,{[j]:a},!0,!0,t):null;return K(a,(async()=>{await w();const a=await(async()=>O(y(await m($(n,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await E(r,H))[j]:{})();return D(a)&&f(t)?void 0:[a,t]}),(async(a,t)=>{if(await w(),f(t)){const[t,e]=a();await u(t),await p(e)}else{const[a,e]=t();await u(a,!0),await p(e,!0)}}),e,s)},X="json",Z="autoLoadIntervalSeconds",aa="rowIdColumnName",ta="tableId",ea="tableName",sa={mode:X,[Z]:1},na={load:0,save:0,[ea]:e+"_values"},ia=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const o=w(b(S(t,T(a)?{[e]:a}:a)),0,g(t));f(o[0])||s(i,o[0])||P(n,i,o)})),n},oa="pragma ",ca="data_version",ra="schema_version",la=(a,t,s,n,i,o)=>{let c,r;const[l,y,E,d]=(a=>{const t=(a=>S(sa,T(a)?{storeTableName:a}:a??{}))(a),s=t[Z];if(t.mode==X){const{storeTableName:a=e}=t;return[1,s,[a],_(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(b(S(na,o)),0,g(na)),r=c[2],l=_(r);return[0,s,[ia(n,{[ta]:null,[aa]:H},ta,(a=>B(l,a)&&a==r)),ia(i,{[ea]:null,[aa]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ea,((a,t)=>B(l,t)&&t==r)),c],l]})(t);return(l?G:Q)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(oa+ca))[0][ca],e=(await s(oa+ra))[0][ra];t==(c??=t)&&e==(r??=e)||(a(),c=t,r=e)}catch{}}),1e3*y),n((t=>d.has(t)?a():0))]),(([a,t])=>{clearInterval(a),c=r=null,i(t)}),E,A(d))};a.createExpoSqlitePersister=(a,t,e,s)=>la(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()),s)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterExpoSqlite={});
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),d=Promise,E=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,
|
|
1
|
+
var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),d=Promise,E=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,v=async a=>d.all(a),m=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,R=h.keys,O=h.freeze,S=(a=[])=>h.fromEntries(a),N=(...a)=>h.assign({},...a),C=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),g=a=>h.values(a),b=a=>r(R(a)),D=a=>(a=>E(a,h)&&a.constructor==h)(a)&&0==b(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),_=(a,t,e,s=P)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),B=a=>new Set(Array.isArray(a)||f(a)?a:[a]),j=(a,t)=>a?.add(t),x="_",H="_id",W=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",q="WHERE",J=(a,t)=>{const e=I();return[async()=>_(e,S(await v(c(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,S(c(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,s)=>{return P(e,t,_((o=I,m(n=e,i=t)||P(n,i,o()),M(n,i)),s,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))));var n,i,o}),((a,t)=>P(e,t))),async(t,s)=>((a,t)=>!f(M(M(e,a),t)))(t,s)?S(y(c(await a("SELECT*FROM"+W(t)),(a=>{return[a[s],(t={...a},e=s,delete t[e],t)];var t,e})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,n,i,r,w,d=!1)=>{const E=B();C(i??{},(a=>c(R(a??{}),(a=>j(E,a)))));const p=A(E);if(!d&&w&&l(p)&&m(e,t))return await a("DROP TABLE"+W(t)),void P(e,t);if(l(p)||m(e,t)){const s=M(e,t),i=B(F(s));await v([...c(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${W(t)}ADD${W(e)}`),P(s,e,""))})),...!d&&r?c(A(i),(async e=>{e!=n&&(await a(`ALTER TABLE${W(t)}DROP${W(e)}`),P(s,e))})):[]])}else await a(`CREATE TABLE${W(t)}(${W(n)} PRIMARY KEY ON CONFLICT REPLACE${o(c(p,(a=>s+W(a))))});`),P(e,t,I([[n,""],...c(p,(a=>[a,""]))]));if(d)f(i)?await a("DELETE FROM"+W(t)+"WHERE 1"):await v(C(i,(async(e,s)=>{f(e)?await a("DELETE FROM"+W(t)+q+W(n)+"=?",[s]):l(p)||await U(a,t,n,R(e),[s,...g(e)])})));else if(l(p))m(e,t)&&await a("DELETE FROM"+W(t)+"WHERE 1");else{const s=y(F(M(e,t)),(a=>a!=n)),o=[],r=[];C(i??{},((a,t)=>{u(o,t,...c(s,(t=>a?.[t]))),u(r,t)})),await U(a,t,n,s,o),await a("DELETE FROM"+W(t)+q+W(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,e,n,l)=>await a("INSERT INTO"+W(t)+"("+W(e)+o(c(n,(a=>s+W(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+W(e)+")DO UPDATE SET"+o(c(n,(a=>W(a)+"=excluded."+W(a))),s),l),Y=a=>o(c(a,(()=>"?")),s),z=JSON.parse,K=(a,t,e,s,n)=>{let i,o,c,r=0,l=0,y=0;const w=[],d=async a=>(2!=r&&(r=1,await E.schedule((async()=>{await a(),r=0}))),E),E={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(E.stopAutoLoad(),await E.load(e,n),y=1,c=s((async(e,s)=>await d((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),E),stopAutoLoad:()=>(y&&(n(c),c=void 0,y=0),E),save:async t=>(1!=r&&(r=2,await E.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),E),startAutoSave:async()=>(await E.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||E.save((()=>[e,s]))})),E),stopAutoSave:()=>(p(i,a.delListener),E),schedule:async(...a)=>(u(w,...a),await(async()=>{if(!l){for(l=1;!f((a=w,o=a.shift()));)try{await o()}catch{}l=0}var a})(),E),getStore:()=>a,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return O(E)},V="store",G=(a,t,e,s,[n],i)=>{const[o,c,r]=J(t,i),l=K(a,(async()=>(await o(),z((await c(n,H))[x]?.[V]))),(async a=>l.schedule(o,(async()=>{var t;await r(n,H,{[x]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>E(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},Q=(a,t,e,s,[n,i,[o,c,r]],l)=>{const[w,u,d]=J(t,l),E=async(a,t)=>await v($(i,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await d(e,s,c,n,i,t)}))),p=async(a,t)=>c?await d(r,H,{[x]:a},!0,!0,t):null;return K(a,(async()=>{await w();const a=await(async()=>S(y(await v($(n,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await u(r,H))[x]:{})();return D(a)&&f(t)?void 0:[a,t]}),(async(a,t)=>{if(await w(),f(t)){const[t,e]=a();await E(t),await p(e)}else{const[a,e]=t();await E(a,!0),await p(e,!0)}}),e,s)},X="json",Z="autoLoadIntervalSeconds",aa="rowIdColumnName",ta="tableId",ea="tableName",sa={mode:X,[Z]:1},na={load:0,save:0,[ea]:e+"_values"},ia=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const o=w(g(N(t,T(a)?{[e]:a}:a)),0,b(t));f(o[0])||s(i,o[0])||P(n,i,o)})),n},oa="pragma ",ca="data_version",ra="schema_version",la=(a,t,s,n,i,o)=>{let c,r;const[l,y,u,d]=(a=>{const t=(a=>N(sa,T(a)?{storeTableName:a}:a??{}))(a),s=t[Z];if(t.mode==X){const{storeTableName:a=e}=t;return[1,s,[a],B(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(g(N(na,o)),0,b(na)),r=c[2],l=B(r);return[0,s,[ia(n,{[ta]:null,[aa]:H},ta,(a=>j(l,a)&&a==r)),ia(i,{[ea]:null,[aa]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ea,((a,t)=>j(l,t)&&t==r)),c],l]})(t);return(l?G:Q)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(oa+ca))[0][ca],e=(await s(oa+ra))[0][ra];t==(c??=t)&&e==(r??=e)||(a(),c=t,r=e)}catch{}}),1e3*y),n((t=>d.has(t)?a():0))]),(([a,t])=>{clearInterval(a),c=r=null,i(t)}),u,A(d))},ya="change";a.createSqlite3Persister=(a,t,e,s)=>la(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new d(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(ya,e),e}),(a=>t.off(ya,a)),s)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqlite3={});
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e,n;e=this,n=function(e){"use strict";const n=e=>typeof e,t="tinybase",l=",",o=n(""),r=(e,n)=>e.repeat(n),i=(e,n="")=>e.join(n),u=(e,n)=>e.map(n),a=e=>e.length,d=e=>0==a(e),s=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),v=(e,...n)=>e.push(...n),y=Promise,f=(e,n)=>e instanceof n,p=e=>null==e,h=(e,n,t)=>p(e)?null==t?void 0:t():n(e),E=e=>n(e)==o,m=e=>{return n=function*(){return y.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},T=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},b=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},A=(e,n)=>null==e?void 0:e.delete(n),P=Object,L=P.keys,O=P.freeze,w=(e=[])=>P.fromEntries(e),x=(...e)=>P.assign({},...e),R=(e,n)=>u(P.entries(e),(([e,t])=>n(t,e))),S=e=>P.values(e),g=e=>a(L(e)),N=e=>(e=>f(e,P)&&e.constructor==P)(e)&&0==g(e),C=e=>new Map(e),D=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},I=(e,n)=>null==e?void 0:e.get(n),F=(e,n)=>{var t;return u([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},M=(e,n,t)=>p(t)?(A(e,n),e):null==e?void 0:e.set(n,t),$=(e,n,t,l=M)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!p(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),j=e=>new Set(Array.isArray(e)||p(e)?e:[e]),_=(e,n)=>null==e?void 0:e.add(n),B="_",H="_id",W=e=>`"${e.replace(/"/g,'""')}"`;var q=Object.defineProperty,k=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?q(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,z=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&Y(e,t,n[t]);if(k)for(var t of k(n))U.call(n,t)&&Y(e,t,n[t]);return e},K=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const V="FROM pragma_table_",G="WHERE",Q=(e,n)=>{const t=C();return[()=>K(void 0,null,(function*(){return $(t,w(yield m(u(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+Z(n)+")",n),(n=>K(void 0,[n],(function*({name:n}){return[n,w(u(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,l)=>{return M(t,n,$((i=C,T(o=t,r=n)||M(o,r,i()),I(o,r)),l,((e,n,t)=>{t!=I(e,n)&&M(e,n,t)}),((e,n)=>M(e,n))));var o,r,i}),((e,n)=>M(t,n)))})),(n,l)=>K(void 0,null,(function*(){return((e,n)=>!p(I(I(t,e),n)))(n,l)?w(s(u(yield e("SELECT*FROM"+W(n)),(e=>{return[e[l],(n=z({},e),t=l,delete n[t],n)];var n,t})),(([e,n])=>!p(e)&&!N(n)))):{}})),(n,o,r,a,c,y=!1)=>K(void 0,null,(function*(){const f=j();R(null!=r?r:{},(e=>u(L(null!=e?e:{}),(e=>_(f,e)))));const h=b(f);if(!y&&c&&d(h)&&T(t,n))return yield e("DROP TABLE"+W(n)),void M(t,n);if(d(h)||T(t,n)){const l=I(t,n),r=j(D(l));yield m([...u(h,(t=>K(void 0,null,(function*(){A(r,t)||(yield e(`ALTER TABLE${W(n)}ADD${W(t)}`),M(l,t,""))})))),...!y&&a?u(b(r),(t=>K(void 0,null,(function*(){t!=o&&(yield e(`ALTER TABLE${W(n)}DROP${W(t)}`),M(l,t))})))):[]])}else yield e(`CREATE TABLE${W(n)}(${W(o)} PRIMARY KEY ON CONFLICT REPLACE${i(u(h,(e=>l+W(e))))});`),M(t,n,C([[o,""],...u(h,(e=>[e,""]))]));if(y)p(r)?yield e("DELETE FROM"+W(n)+"WHERE 1"):yield m(R(r,((t,l)=>K(void 0,null,(function*(){p(t)?yield e("DELETE FROM"+W(n)+G+W(o)+"=?",[l]):d(h)||(yield X(e,n,o,L(t),[l,...S(t)]))})))));else if(d(h))T(t,n)&&(yield e("DELETE FROM"+W(n)+"WHERE 1"));else{const l=s(D(I(t,n)),(e=>e!=o)),i=[],a=[];R(null!=r?r:{},((e,n)=>{v(i,n,...u(l,(n=>null==e?void 0:e[n]))),v(a,n)})),yield X(e,n,o,l,i),yield e("DELETE FROM"+W(n)+G+W(o)+"NOT IN("+Z(a)+")",a)}}))]},X=(e,n,t,o,d)=>K(void 0,null,(function*(){return yield e("INSERT INTO"+W(n)+"("+W(t)+i(u(o,(e=>l+W(e))))+")VALUES"+r(`,(?${r(",?",a(o))})`,a(d)/(a(o)+1)).substring(1)+"ON CONFLICT("+W(t)+")DO UPDATE SET"+i(u(o,(e=>W(e)+"=excluded."+W(e))),l),d)})),Z=e=>i(u(e,(()=>"?")),l),ee=JSON.parse;var ne=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const te=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,s=0;const c=[],y=e=>ne(void 0,null,(function*(){return 2!=a&&(a=1,yield f.schedule((()=>ne(void 0,null,(function*(){yield e(),a=0}))))),f})),f={load:(t,l)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ne(void 0,[...t],(function*(t={},o={}){return f.stopAutoLoad(),yield f.load(t,o),s=1,u=l(((t,l)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),f})),stopAutoLoad:()=>(s&&(o(u),u=void 0,s=0),f),save:n=>ne(void 0,null,(function*(){return 1!=a&&(a=2,yield f.schedule((()=>ne(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),f})),startAutoSave:()=>ne(void 0,null,(function*(){return yield f.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();N(t)&&N(l)||f.save((()=>[t,l]))})),f})),stopAutoSave:()=>(h(r,e.delListener),f),schedule:(...e)=>ne(void 0,null,(function*(){return v(c,...e),yield ne(void 0,null,(function*(){if(!d){for(d=1;!p((e=c,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),f})),getStore:()=>e,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return O(f)};var le=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const oe="store",re=(e,n,t,l,[o],r)=>{const[i,u,a]=Q(n,r),d=te(e,(()=>le(void 0,null,(function*(){var e;return yield i(),ee(null==(e=(yield u(o,H))[B])?void 0:e[oe])}))),(e=>le(void 0,null,(function*(){return d.schedule(i,(()=>le(void 0,null,(function*(){var n;yield a(o,H,{[B]:{[oe]:(n=e(),JSON.stringify(n,((e,n)=>f(n,Map)?P.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var ie=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ue=(e,n,t,l,[o,r,[i,u,a]],d)=>{const[c,v,y]=Q(n,d),f=(e,n)=>ie(void 0,null,(function*(){return yield m(F(r,((t,l)=>ie(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),h=(e,n)=>ie(void 0,null,(function*(){return u?yield y(a,H,{[B]:e},!0,!0,n):null}));return te(e,(()=>ie(void 0,null,(function*(){yield c();const e=yield ie(void 0,null,(function*(){return w(s(yield m(F(o,((e,n)=>ie(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!N(e[1]))))})),n=yield ie(void 0,null,(function*(){return i?(yield v(a,H))[B]:{}}));return N(e)&&p(n)?void 0:[e,n]}))),((e,n)=>ie(void 0,null,(function*(){if(yield c(),p(n)){const[n,t]=e();yield f(n),yield h(t)}else{const[e,t]=n();yield f(e,!0),yield h(t,!0)}}))),t,l)},ae="json",de="autoLoadIntervalSeconds",se="rowIdColumnName",ce="tableId",ve="tableName",ye={mode:ae,[de]:1},fe={load:0,save:0,[ve]:t+"_values"},pe=(e,n,t,l)=>{const o=C();return R(e,((e,r)=>{const i=c(S(x(n,E(e)?{[t]:e}:e)),0,g(n));p(i[0])||l(r,i[0])||M(o,r,i)})),o};var he=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const Ee="pragma ",me="data_version",Te="schema_version",be=(e,n,l,o,r,i)=>{let u,a;const[d,s,v,y]=(e=>{const n=(e=>x(ye,E(e)?{storeTableName:e}:null!=e?e:{}))(e),l=n[de];if(n.mode==ae){const{storeTableName:e=t}=n;return[1,l,[e],j(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=n,u=c(S(x(fe,i)),0,g(fe)),a=u[2],d=j(a);return[0,l,[pe(o,{[ce]:null,[se]:H},ce,(e=>_(d,e)&&e==a)),pe(r,{[ve]:null,[se]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ve,((e,n)=>_(d,n)&&n==a)),u],d]})(n);return(d?re:ue)(e,i?(e,n)=>he(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>he(void 0,null,(function*(){try{const n=(yield l(Ee+me))[0][me],t=(yield l(Ee+Te))[0][Te];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*s),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,b(y))};e.createExpoSqlitePersister=(e,n,t,l)=>be(e,t,((e,...t)=>{return l=[e,...t],o=function*(e,t=[]){return(yield n.execAsync([{sql:e,args:t}],!1))[0].rows},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>n.onDatabaseChange((({tableName:n})=>e(n)))),(e=>e.remove()),l)},"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterExpoSqlite={});
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,n;e=this,n=function(e){"use strict";const n=e=>typeof e,t="tinybase",l=",",o=n(""),r=(e,n)=>e.repeat(n),i=(e,n="")=>e.join(n),u=(e,n)=>e.map(n),a=e=>e.length,d=e=>0==a(e),s=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),v=(e,...n)=>e.push(...n),y=Promise,f=(e,n)=>e instanceof n,p=e=>null==e,h=(e,n,t)=>p(e)?null==t?void 0:t():n(e),E=e=>n(e)==o,m=e=>{return n=function*(){return y.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},b=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},O=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},T=(e,n)=>null==e?void 0:e.delete(n),P=Object,
|
|
1
|
+
var e,n;e=this,n=function(e){"use strict";const n=e=>typeof e,t="tinybase",l=",",o=n(""),r=(e,n)=>e.repeat(n),i=(e,n="")=>e.join(n),u=(e,n)=>e.map(n),a=e=>e.length,d=e=>0==a(e),s=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),v=(e,...n)=>e.push(...n),y=Promise,f=(e,n)=>e instanceof n,p=e=>null==e,h=(e,n,t)=>p(e)?null==t?void 0:t():n(e),E=e=>n(e)==o,m=e=>{return n=function*(){return y.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},b=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},O=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},T=(e,n)=>null==e?void 0:e.delete(n),P=Object,w=P.keys,A=P.freeze,L=(e=[])=>P.fromEntries(e),S=(...e)=>P.assign({},...e),g=(e,n)=>u(P.entries(e),(([e,t])=>n(t,e))),R=e=>P.values(e),x=e=>a(w(e)),N=e=>(e=>f(e,P)&&e.constructor==P)(e)&&0==x(e),C=e=>new Map(e),I=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),j=(e,n)=>{var t;return u([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},F=(e,n,t)=>p(t)?(T(e,n),e):null==e?void 0:e.set(n,t),M=(e,n,t,l=F)=>(g(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!p(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),$=e=>new Set(Array.isArray(e)||p(e)?e:[e]),_=(e,n)=>null==e?void 0:e.add(n),B="_",H="_id",W=e=>`"${e.replace(/"/g,'""')}"`;var k=Object.defineProperty,q=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?k(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,z=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&Y(e,t,n[t]);if(q)for(var t of q(n))U.call(n,t)&&Y(e,t,n[t]);return e},K=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const V="FROM pragma_table_",G="WHERE",Q=(e,n)=>{const t=C();return[()=>K(void 0,null,(function*(){return M(t,L(yield m(u(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+Z(n)+")",n),(n=>K(void 0,[n],(function*({name:n}){return[n,L(u(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,l)=>{return F(t,n,M((i=C,b(o=t,r=n)||F(o,r,i()),D(o,r)),l,((e,n,t)=>{t!=D(e,n)&&F(e,n,t)}),((e,n)=>F(e,n))));var o,r,i}),((e,n)=>F(t,n)))})),(n,l)=>K(void 0,null,(function*(){return((e,n)=>!p(D(D(t,e),n)))(n,l)?L(s(u(yield e("SELECT*FROM"+W(n)),(e=>{return[e[l],(n=z({},e),t=l,delete n[t],n)];var n,t})),(([e,n])=>!p(e)&&!N(n)))):{}})),(n,o,r,a,c,y=!1)=>K(void 0,null,(function*(){const f=$();g(null!=r?r:{},(e=>u(w(null!=e?e:{}),(e=>_(f,e)))));const h=O(f);if(!y&&c&&d(h)&&b(t,n))return yield e("DROP TABLE"+W(n)),void F(t,n);if(d(h)||b(t,n)){const l=D(t,n),r=$(I(l));yield m([...u(h,(t=>K(void 0,null,(function*(){T(r,t)||(yield e(`ALTER TABLE${W(n)}ADD${W(t)}`),F(l,t,""))})))),...!y&&a?u(O(r),(t=>K(void 0,null,(function*(){t!=o&&(yield e(`ALTER TABLE${W(n)}DROP${W(t)}`),F(l,t))})))):[]])}else yield e(`CREATE TABLE${W(n)}(${W(o)} PRIMARY KEY ON CONFLICT REPLACE${i(u(h,(e=>l+W(e))))});`),F(t,n,C([[o,""],...u(h,(e=>[e,""]))]));if(y)p(r)?yield e("DELETE FROM"+W(n)+"WHERE 1"):yield m(g(r,((t,l)=>K(void 0,null,(function*(){p(t)?yield e("DELETE FROM"+W(n)+G+W(o)+"=?",[l]):d(h)||(yield X(e,n,o,w(t),[l,...R(t)]))})))));else if(d(h))b(t,n)&&(yield e("DELETE FROM"+W(n)+"WHERE 1"));else{const l=s(I(D(t,n)),(e=>e!=o)),i=[],a=[];g(null!=r?r:{},((e,n)=>{v(i,n,...u(l,(n=>null==e?void 0:e[n]))),v(a,n)})),yield X(e,n,o,l,i),yield e("DELETE FROM"+W(n)+G+W(o)+"NOT IN("+Z(a)+")",a)}}))]},X=(e,n,t,o,d)=>K(void 0,null,(function*(){return yield e("INSERT INTO"+W(n)+"("+W(t)+i(u(o,(e=>l+W(e))))+")VALUES"+r(`,(?${r(",?",a(o))})`,a(d)/(a(o)+1)).substring(1)+"ON CONFLICT("+W(t)+")DO UPDATE SET"+i(u(o,(e=>W(e)+"=excluded."+W(e))),l),d)})),Z=e=>i(u(e,(()=>"?")),l),ee=JSON.parse;var ne=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const te=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,s=0;const c=[],y=e=>ne(void 0,null,(function*(){return 2!=a&&(a=1,yield f.schedule((()=>ne(void 0,null,(function*(){yield e(),a=0}))))),f})),f={load:(t,l)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ne(void 0,[...t],(function*(t={},o={}){return f.stopAutoLoad(),yield f.load(t,o),s=1,u=l(((t,l)=>ne(void 0,null,(function*(){return yield y((()=>ne(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),f})),stopAutoLoad:()=>(s&&(o(u),u=void 0,s=0),f),save:n=>ne(void 0,null,(function*(){return 1!=a&&(a=2,yield f.schedule((()=>ne(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),f})),startAutoSave:()=>ne(void 0,null,(function*(){return yield f.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();N(t)&&N(l)||f.save((()=>[t,l]))})),f})),stopAutoSave:()=>(h(r,e.delListener),f),schedule:(...e)=>ne(void 0,null,(function*(){return v(c,...e),yield ne(void 0,null,(function*(){if(!d){for(d=1;!p((e=c,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),f})),getStore:()=>e,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return A(f)};var le=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const oe="store",re=(e,n,t,l,[o],r)=>{const[i,u,a]=Q(n,r),d=te(e,(()=>le(void 0,null,(function*(){var e;return yield i(),ee(null==(e=(yield u(o,H))[B])?void 0:e[oe])}))),(e=>le(void 0,null,(function*(){return d.schedule(i,(()=>le(void 0,null,(function*(){var n;yield a(o,H,{[B]:{[oe]:(n=e(),JSON.stringify(n,((e,n)=>f(n,Map)?P.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var ie=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ue=(e,n,t,l,[o,r,[i,u,a]],d)=>{const[c,v,y]=Q(n,d),f=(e,n)=>ie(void 0,null,(function*(){return yield m(j(r,((t,l)=>ie(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),h=(e,n)=>ie(void 0,null,(function*(){return u?yield y(a,H,{[B]:e},!0,!0,n):null}));return te(e,(()=>ie(void 0,null,(function*(){yield c();const e=yield ie(void 0,null,(function*(){return L(s(yield m(j(o,((e,n)=>ie(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!N(e[1]))))})),n=yield ie(void 0,null,(function*(){return i?(yield v(a,H))[B]:{}}));return N(e)&&p(n)?void 0:[e,n]}))),((e,n)=>ie(void 0,null,(function*(){if(yield c(),p(n)){const[n,t]=e();yield f(n),yield h(t)}else{const[e,t]=n();yield f(e,!0),yield h(t,!0)}}))),t,l)},ae="json",de="autoLoadIntervalSeconds",se="rowIdColumnName",ce="tableId",ve="tableName",ye={mode:ae,[de]:1},fe={load:0,save:0,[ve]:t+"_values"},pe=(e,n,t,l)=>{const o=C();return g(e,((e,r)=>{const i=c(R(S(n,E(e)?{[t]:e}:e)),0,x(n));p(i[0])||l(r,i[0])||F(o,r,i)})),o};var he=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const Ee="pragma ",me="data_version",be="schema_version",Oe=(e,n,l,o,r,i)=>{let u,a;const[d,s,v,y]=(e=>{const n=(e=>S(ye,E(e)?{storeTableName:e}:null!=e?e:{}))(e),l=n[de];if(n.mode==ae){const{storeTableName:e=t}=n;return[1,l,[e],$(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=n,u=c(R(S(fe,i)),0,x(fe)),a=u[2],d=$(a);return[0,l,[pe(o,{[ce]:null,[se]:H},ce,(e=>_(d,e)&&e==a)),pe(r,{[ve]:null,[se]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ve,((e,n)=>_(d,n)&&n==a)),u],d]})(n);return(d?re:ue)(e,i?(e,n)=>he(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>he(void 0,null,(function*(){try{const n=(yield l(Ee+me))[0][me],t=(yield l(Ee+be))[0][be];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*s),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,O(y))};var Te=Object.defineProperty,Pe=Object.getOwnPropertySymbols,we=Object.prototype.hasOwnProperty,Ae=Object.prototype.propertyIsEnumerable,Le=(e,n,t)=>n in e?Te(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Se="change";e.createSqlite3Persister=(e,n,t,l)=>Oe(e,t,((e,...t)=>{return l=[e,...t],o=function*(e,t=[]){return yield(l=(l,o)=>n.all(e,t,((e,n)=>e?o(e):l(n.map((e=>((e,n)=>{for(var t in n||(n={}))we.call(n,t)&&Le(e,t,n[t]);if(Pe)for(var t of Pe(n))Ae.call(n,t)&&Le(e,t,n[t]);return e})({},e)))))),new y(l));var l},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>{const t=(n,t,l)=>e(l);return n.on(Se,t),t}),(e=>n.off(Se,e)),l)},"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterSqlite3={});
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinybase",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.3",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -250,6 +250,7 @@
|
|
|
250
250
|
"eslint-plugin-jsdoc": "^46.4.6",
|
|
251
251
|
"eslint-plugin-react": "7.32.2",
|
|
252
252
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
253
|
+
"expo-sqlite": "^11.5.0",
|
|
253
254
|
"fake-indexeddb": "^4.0.2",
|
|
254
255
|
"gulp": "^4.0.2",
|
|
255
256
|
"gulp-gzip": "^1.4.2",
|
package/readme.md
CHANGED
|
@@ -266,4 +266,4 @@ export const createShop: typeof createShopDecl = () => {
|
|
|
266
266
|
};
|
|
267
267
|
```
|
|
268
268
|
|
|
269
|
-
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>4.7kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>8.9kB</em>.</p><p>The optional <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.4kB</em>, the auxiliary <a href="https://tinybase.org/api/tools/"><code>tools</code></a> module is <em>10.2kB</em>, and everything is super fast. Life's easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">store</a></th><td>4.7kB</td><td>11.1kB</td><td>47.6kB</td><td>212.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>14.9kB</td><td>29.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.7kB</td><td>16.7kB</td><td>33.8kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships/">relationships</a></th><td>1.8kB</td><td>3.7kB</td><td>16.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/queries/">queries</a></th><td>2.7kB</td><td>5.5kB</td><td>25.0kB</td><td>112.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.5kB</td><td>3.1kB</td><td>12.5kB</td><td>33.3kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters/">persisters</a></th><td>0.6kB</td><td>1.2kB</td><td>3.9kB</td><td>42.4kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>8.9kB</td><td>21.9kB</td><td>94.8kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,815</td><td>1,815</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,957</td><td>1,957</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>776</td><td>776</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>669</td><td>669</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">3,138</td></tr><tr><th class="right">Assertions</th><td colspan="3">14,445</td></tr></tbody></table></div><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a>, <a href="https://discord.com/invite/mGz3mevwP8">Discord</a>, and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/discussions">Discussions</a> and <a href="https://github.com/tinyplex/tinybase/issues">issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li><li><a href="https://tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/4.0.
|
|
269
|
+
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you'll only add a gzipped <em>4.7kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>8.9kB</em>.</p><p>The optional <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.4kB</em>, the auxiliary <a href="https://tinybase.org/api/tools/"><code>tools</code></a> module is <em>10.2kB</em>, and everything is super fast. Life's easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">store</a></th><td>4.7kB</td><td>11.1kB</td><td>47.6kB</td><td>212.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>14.9kB</td><td>29.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.7kB</td><td>16.7kB</td><td>33.8kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships/">relationships</a></th><td>1.8kB</td><td>3.7kB</td><td>16.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/queries/">queries</a></th><td>2.7kB</td><td>5.5kB</td><td>25.0kB</td><td>112.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.5kB</td><td>3.1kB</td><td>12.5kB</td><td>33.3kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters/">persisters</a></th><td>0.6kB</td><td>1.2kB</td><td>3.9kB</td><td>42.4kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>8.9kB</td><td>21.9kB</td><td>94.8kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,815</td><td>1,815</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,957</td><td>1,957</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>776</td><td>776</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>669</td><td>669</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">3,138</td></tr><tr><th class="right">Assertions</th><td colspan="3">14,445</td></tr></tbody></table></div><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a>, <a href="https://discord.com/invite/mGz3mevwP8">Discord</a>, and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/discussions">Discussions</a> and <a href="https://github.com/tinyplex/tinybase/issues">issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li><li><a href="https://tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/4.0.3">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://hachyderm.io/@jamesgpearce">me</a> in API design, minification, and documentation. It could not have been built without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>
|