tinybase 4.6.0 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.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-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.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-cr-sqlite-wasm.js +6 -2
- package/lib/debug/persisters/persister-electric-sql.js +7 -2
- package/lib/debug/persisters/persister-expo-sqlite-next.js +6 -2
- package/lib/debug/persisters/persister-expo-sqlite.js +6 -2
- package/lib/debug/persisters/persister-indexed-db.js +1 -0
- package/lib/debug/persisters/persister-sqlite-wasm.js +6 -2
- package/lib/debug/persisters/persister-sqlite3.js +6 -2
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-electric-sql.js +1 -1
- package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.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-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-electric-sql.js +1 -1
- package/lib/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-electric-sql.js +1 -1
- package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.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-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
- package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.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 +17 -17
- package/readme.md +1 -1
|
@@ -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=Promise,u=clearInterval,d=e=>null==e,a=(e,n,t)=>d(e)?null==t?void 0:t():n(e),c=e=>n(e)==o,s=(e,n,t)=>e.slice(n,t),v=e=>e.length,y=e=>{return n=function*(){return i.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},f="_",p="_id",h=e=>`"${e.replace(/"/g,'""')}"`,E="SELECT",m=(e,n="")=>e.join(n),T=(e,n)=>e.map(n),O=e=>0==v(e),A=(e,n)=>e.filter(n),P=(e,...n)=>e.push(...n),
|
|
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=Promise,u=clearInterval,d=e=>null==e,a=(e,n,t)=>d(e)?null==t?void 0:t():n(e),c=e=>n(e)==o,s=(e,n,t)=>e.slice(n,t),v=e=>e.length,y=e=>{return n=function*(){return i.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},f="_",p="_id",h=e=>`"${e.replace(/"/g,'""')}"`,E="SELECT",m=(e,n="")=>e.join(n),T=(e,n)=>e.map(n),O=e=>0==v(e),A=(e,n)=>e.filter(n),P=(e,...n)=>e.push(...n),L=(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:[]]},w=(e,n)=>null==e?void 0:e.delete(n),R=Object,N=e=>R.getPrototypeOf(e),S=R.keys,g=R.freeze,x=(e=[])=>R.fromEntries(e),C=(...e)=>R.assign({},...e),D=(e,n)=>T(R.entries(e),(([e,t])=>n(t,e))),I=e=>R.values(e),F=e=>v(S(e)),M=e=>(e=>!d(e)&&a(N(e),(e=>e==R.prototype||d(N(e))),(()=>!0)))(e)&&0==F(e),$=e=>new Map(e),j=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},_=(e,n)=>null==e?void 0:e.get(n),B=(e,n)=>{var t;return T([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},H=(e,n,t)=>d(t)?(w(e,n),e):null==e?void 0:e.set(n,t),W=(e,n,t)=>(L(e,n)||H(e,n,t()),_(e,n)),Y=(e,n,t,l=H)=>(D(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)=>!d(((e,n)=>a(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),k=e=>new Set(Array.isArray(e)||d(e)?e:[e]),q=(e,n)=>null==e?void 0:e.add(n);var G=Object.defineProperty,J=Object.getOwnPropertySymbols,U=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable,K=(e,n,t)=>n in e?G(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,V=(e,n)=>{for(var t in n||(n={}))U.call(n,t)&&K(e,t,n[t]);if(J)for(var t of J(n))z.call(n,t)&&K(e,t,n[t]);return e},Q=(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 X=E+"*FROM",Z="FROM pragma_table_",ee="WHERE",ne=(e,n,t)=>{const o=$();return[()=>Q(void 0,null,(function*(){return Y(o,x(yield y(T(yield e("SELECT name "+Z+"list WHERE schema='main'AND type='table'AND name IN("+le(n)+")ORDER BY name",n),(n=>Q(void 0,[n],(function*({name:n}){return[n,x(T(yield e(E+" name,type "+Z+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>H(o,n,Y(W(o,n,$),t,((e,n,t)=>{t!=_(e,n)&&H(e,n,t)}),((e,n)=>H(e,n))))),((e,n)=>H(o,n)))})),(n,t)=>Q(void 0,null,(function*(){return((e,n)=>!d(_(_(o,e),n)))(n,t)?x(A(T(yield e(X+h(n)),(e=>{return[e[t],(n=V({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!d(e)&&!M(n)))):{}})),(n,t,r,i,u,a=!1)=>Q(void 0,null,(function*(){const c=k();D(null!=r?r:{},(e=>T(S(null!=e?e:{}),(e=>q(c,e)))));const s=b(c);if(!a&&u&&O(s)&&L(o,n))return yield e("DROP TABLE"+h(n)),void H(o,n);if(O(s)||L(o,n)){const l=_(o,n),r=k(j(l));yield y([...T(s,(t=>Q(void 0,null,(function*(){w(r,t)||(yield e(`ALTER TABLE${h(n)}ADD${h(t)}`),H(l,t,""))})))),...!a&&i?T(b(r),(o=>Q(void 0,null,(function*(){o!=t&&(yield e(`ALTER TABLE${h(n)}DROP${h(o)}`),H(l,o))})))):[]])}else yield e(`CREATE TABLE${h(n)}(${h(t)} PRIMARY KEY ON CONFLICT REPLACE${m(T(s,(e=>l+h(e))))});`),H(o,n,$([[t,""],...T(s,(e=>[e,""]))]));if(a)d(r)?yield e("DELETE FROM"+h(n)+"WHERE 1"):yield y(D(r,((l,o)=>Q(void 0,null,(function*(){d(l)?yield e("DELETE FROM"+h(n)+ee+h(t)+"=?",[o]):O(s)||(yield te(e,n,t,S(l),[o,...I(l)]))})))));else if(O(s))L(o,n)&&(yield e("DELETE FROM"+h(n)+"WHERE 1"));else{const l=A(j(_(o,n)),(e=>e!=t)),i=[],u=[];D(null!=r?r:{},((e,n)=>{P(i,n,...T(l,(n=>null==e?void 0:e[n]))),P(u,n)})),yield te(e,n,t,l,i),yield e("DELETE FROM"+h(n)+ee+h(t)+"NOT IN("+le(u)+")",u)}})),n=>Q(void 0,null,(function*(){let l;yield e("BEGIN");try{l=yield n()}catch(e){null==t||t(e)}return yield e("END"),l}))]},te=(e,n,t,o,i)=>Q(void 0,null,(function*(){return yield e("INSERT INTO"+h(n)+"("+h(t)+m(T(o,(e=>l+h(e))))+")VALUES"+s(r(`,(?${r(",?",v(o))})`,v(i)/(v(o)+1)),1)+"ON CONFLICT("+h(t)+")DO UPDATE SET"+m(T(o,(e=>h(e)+"=excluded."+h(e))),l),i)})),le=e=>m(T(e,(()=>"?")),l),oe=JSON.parse;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=$(),ue=$(),de=(e,n,t,l,o,r,[i,u]=[],c=[])=>{let s,v,y,f=0,p=0;W(ie,c,(()=>0)),W(ue,c,(()=>[]));const h=e=>re(void 0,null,(function*(){return 2!=f&&(f=1,yield E.schedule((()=>re(void 0,null,(function*(){yield e(),f=0}))))),E})),E={load:(t,l)=>re(void 0,null,(function*(){return yield h((()=>re(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>re(void 0,[...t],(function*(t={},o={}){return E.stopAutoLoad(),yield E.load(t,o),p=1,y=l(((t,l)=>re(void 0,null,(function*(){if(l){const n=l();yield h((()=>re(void 0,null,(function*(){return e.setTransactionChanges(n)}))))}else yield h((()=>re(void 0,null,(function*(){var l;try{e.setContent(null!=(l=null==t?void 0:t())?l:yield n())}catch(e){null==r||r(e)}}))))})))),E})),stopAutoLoad:()=>(p&&(o(y),y=void 0,p=0),E),save:n=>re(void 0,null,(function*(){return 1!=f&&(f=2,yield E.schedule((()=>re(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){null==r||r(e)}f=0}))))),E})),startAutoSave:()=>re(void 0,null,(function*(){return yield E.stopAutoSave().save(),s=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();M(t)&&M(l)||E.save((()=>[t,l]))})),E})),stopAutoSave:()=>(a(s,e.delListener),s=void 0,E),schedule:(...e)=>re(void 0,null,(function*(){return P(_(ue,c),...e),yield re(void 0,null,(function*(){if(!_(ie,c)){for(H(ie,c,1);!d((e=_(ue,c),v=e.shift()));)try{yield v()}catch(e){null==r||r(e)}H(ie,c,0)}var e})),E})),getStore:()=>e,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i&&(E[i]=()=>u),g(E)};var ae=(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 ce="store",se=(e,n,t,l,o,[r],i,u,d)=>{const[a,c,s,v]=ne(n,i,o);return de(e,(()=>ae(void 0,null,(function*(){return yield v((()=>ae(void 0,null,(function*(){var e,n;return yield a(),oe(null!=(n=null==(e=(yield c(r,p))[f])?void 0:e[ce])?n:"null")}))))}))),(e=>ae(void 0,null,(function*(){return yield v((()=>ae(void 0,null,(function*(){var n,t;yield a(),yield s(r,p,{[f]:{[ce]:(t=null!=(n=e())?n:null,JSON.stringify(t,((e,n)=>n instanceof Map?R.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l,o,[d,u],u)};var ve=(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 ye=(e,n,t,l,o,[r,i,[u,a,c]],s,v,h)=>{const[E,m,T,O]=ne(n,s,o),P=(e,n)=>ve(void 0,null,(function*(){return yield y(B(i,((t,l)=>ve(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield T(t,l,u,o,r,n))})))))})),L=(e,n)=>ve(void 0,null,(function*(){return a?yield T(c,p,{[f]:e},!0,!0,n):null}));return de(e,(()=>ve(void 0,null,(function*(){return yield O((()=>ve(void 0,null,(function*(){yield E();const e=yield ve(void 0,null,(function*(){return x(A(yield y(B(r,((e,n)=>ve(void 0,[e,n],(function*([e,n],t){return[e,yield m(t,n)]}))))),(e=>!M(e[1]))))})),n=yield ve(void 0,null,(function*(){return u?(yield m(c,p))[f]:{}}));return M(e)&&d(n)?void 0:[e,n]}))))}))),((e,n)=>ve(void 0,null,(function*(){return yield O((()=>ve(void 0,null,(function*(){if(yield E(),d(n)){const[n,t]=e();yield P(n),yield L(t)}else{const[e,t]=n();yield P(e,!0),yield L(t,!0)}}))))}))),t,l,o,[h,v],v)},fe="json",pe="autoLoadIntervalSeconds",he="rowIdColumnName",Ee="tableId",me="tableName",Te={mode:fe,[pe]:1},Oe={load:0,save:0,[me]:t+"_values"},Ae=(e,n,t,l)=>{const o=$();return D(e,((e,r)=>{const i=s(I(C(n,c(e)?{[t]:e}:e)),0,F(n));d(i[0])||l(r,i[0])||H(o,r,i)})),o};var Pe=(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="pragma ",be="data_version",we="schema_version",Re=(e,n,l,o,r,i,d,a,v="getDb")=>{let y,f,h;const[m,T,O,A]=(e=>{const n=(e=>C(Te,c(e)?{storeTableName:e}:null!=e?e:{}))(e),l=n[pe];if(n.mode==fe){const{storeTableName:e=t}=n;return[1,l,[e],k(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=n,u=s(I(C(Oe,i)),0,F(Oe)),d=u[2],a=k(d);return[0,l,[Ae(o,{[Ee]:null,[he]:p},Ee,(e=>q(a,e)&&e==d)),Ae(r,{[me]:null,[he]:p,deleteEmptyColumns:0,deleteEmptyTable:0},me,((e,n)=>q(a,n)&&n==d)),u],a]})(n);return(m?se:ye)(e,i?(e,n)=>Pe(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>{return[(n=()=>Pe(void 0,null,(function*(){try{const n=(yield l(Le+be))[0][be],t=(yield l(Le+we))[0][we],o=(yield l(E+" TOTAL_CHANGES() c"))[0].c;n==(null!=y?y:y=n)&&t==(null!=f?f:f=t)&&o==(null!=h?h:h=o)||(e(),y=n,f=t)}catch(e){}})),t=T,n(),setInterval(n,1e3*t)),o((n=>A.has(n)?e():0))];var n,t}),(([e,n])=>{u(e),y=f=null,r(n)}),d,O,b(A),a,v)},Ne="change";e.createSqlite3Persister=(e,n,t,l,o)=>Re(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))),new i(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(Ne,t),t}),(e=>n.off(Ne,e)),l,o,n)},"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.6.
|
|
3
|
+
"version": "4.6.1",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -217,28 +217,28 @@
|
|
|
217
217
|
"@automerge/automerge": "^2.1.10",
|
|
218
218
|
"@babel/cli": "^7.23.4",
|
|
219
219
|
"@babel/core": "^7.23.7",
|
|
220
|
-
"@babel/preset-env": "^7.23.
|
|
220
|
+
"@babel/preset-env": "^7.23.8",
|
|
221
221
|
"@babel/preset-react": "^7.23.3",
|
|
222
222
|
"@babel/preset-typescript": "^7.23.3",
|
|
223
223
|
"@prettier/sync": "^0.3.0",
|
|
224
224
|
"@rollup/plugin-image": "^3.0.3",
|
|
225
225
|
"@rollup/plugin-replace": "^5.0.5",
|
|
226
226
|
"@rollup/plugin-terser": "^0.4.4",
|
|
227
|
-
"@sqlite.org/sqlite-wasm": "^3.44.2-
|
|
227
|
+
"@sqlite.org/sqlite-wasm": "^3.44.2-build3",
|
|
228
228
|
"@types/asciichart": "^1.5.8",
|
|
229
229
|
"@types/expect-puppeteer": "^5.0.6",
|
|
230
230
|
"@types/http-server": "^0.12.4",
|
|
231
231
|
"@types/jest": "^29.5.11",
|
|
232
232
|
"@types/jest-environment-puppeteer": "^5.0.6",
|
|
233
233
|
"@types/less": "^3.0.6",
|
|
234
|
-
"@types/node": "^20.10.
|
|
234
|
+
"@types/node": "^20.10.7",
|
|
235
235
|
"@types/puppeteer": "^5.4.7",
|
|
236
|
-
"@types/react": "^18.2.
|
|
236
|
+
"@types/react": "^18.2.47",
|
|
237
237
|
"@types/react-dom": "^18.2.18",
|
|
238
238
|
"@types/react-test-renderer": "^18.0.7",
|
|
239
239
|
"@types/tmp": "^0.2.6",
|
|
240
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
241
|
-
"@typescript-eslint/parser": "^6.
|
|
240
|
+
"@typescript-eslint/eslint-plugin": "^6.18.1",
|
|
241
|
+
"@typescript-eslint/parser": "^6.18.1",
|
|
242
242
|
"@vlcn.io/crsqlite-wasm": "^0.16.0",
|
|
243
243
|
"asciichart": "^1.5.25",
|
|
244
244
|
"automerge-repo": "^0.1.0",
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"eslint": "^8.56.0",
|
|
256
256
|
"eslint-config-prettier": "^9.1.0",
|
|
257
257
|
"eslint-plugin-jest": "^27.6.1",
|
|
258
|
-
"eslint-plugin-jsdoc": "^48.0.
|
|
258
|
+
"eslint-plugin-jsdoc": "^48.0.2",
|
|
259
259
|
"eslint-plugin-react": "7.33.2",
|
|
260
260
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
261
261
|
"expo-sqlite": "^12.1.0",
|
|
@@ -269,19 +269,19 @@
|
|
|
269
269
|
"jest-fetch-mock": "^3.0.3",
|
|
270
270
|
"jest-puppeteer": "^9.0.2",
|
|
271
271
|
"less": "^4.2.0",
|
|
272
|
-
"partykit": "^0.0.
|
|
273
|
-
"partysocket": "^0.0.
|
|
272
|
+
"partykit": "^0.0.66",
|
|
273
|
+
"partysocket": "^0.0.20",
|
|
274
274
|
"prettier": "^3.1.1",
|
|
275
|
-
"puppeteer": "21.
|
|
275
|
+
"puppeteer": "21.7.0",
|
|
276
276
|
"react": "^18.2.0",
|
|
277
277
|
"react-dom": "^18.2.0",
|
|
278
278
|
"react-test-renderer": "^18.2.0",
|
|
279
|
-
"rollup": "^4.9.
|
|
279
|
+
"rollup": "^4.9.4",
|
|
280
280
|
"rollup-plugin-esbuild": "^6.1.0",
|
|
281
281
|
"rollup-plugin-gzip": "^3.1.1",
|
|
282
282
|
"rollup-plugin-preserve-shebang": "^1.0.1",
|
|
283
283
|
"rollup-plugin-prettier": "^4.1.1",
|
|
284
|
-
"sqlite3": "^5.1.
|
|
284
|
+
"sqlite3": "^5.1.7",
|
|
285
285
|
"tinybase": "file:./",
|
|
286
286
|
"tinydocs": "^0.1.34",
|
|
287
287
|
"tmp": "^0.2.1",
|
|
@@ -291,16 +291,16 @@
|
|
|
291
291
|
"yjs": "^13.6.10"
|
|
292
292
|
},
|
|
293
293
|
"peerDependencies": {
|
|
294
|
-
"@sqlite.org/sqlite-wasm": "^3.44.2-
|
|
294
|
+
"@sqlite.org/sqlite-wasm": "^3.44.2-build3",
|
|
295
295
|
"@vlcn.io/crsqlite-wasm": "^0.16.0",
|
|
296
296
|
"automerge-repo": "^0.1.0",
|
|
297
297
|
"electric-sql": "^0.8.2",
|
|
298
|
-
"partykit": "^0.0.
|
|
299
|
-
"partysocket": "^0.0.
|
|
298
|
+
"partykit": "^0.0.66",
|
|
299
|
+
"partysocket": "^0.0.20",
|
|
300
300
|
"prettier": "^3.1.1",
|
|
301
301
|
"react": "^18.2.0",
|
|
302
302
|
"react-dom": "^18.2.0",
|
|
303
|
-
"sqlite3": "^5.1.
|
|
303
|
+
"sqlite3": "^5.1.7",
|
|
304
304
|
"yjs": "^13.6.10"
|
|
305
305
|
},
|
|
306
306
|
"peerDependenciesMeta": {
|
package/readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://tinybase.org/guides/releases/#v4-6"><em>NEW!</em> v4.6 release</a> <span id="one-with">"The One With ElectricSQL"</span></p><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><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app's data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions & ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://tinybase.org/api/persister-browser">storage</a>, <a href="https://tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>; and (<em>new!</em>) <a href="https://tinybase.org/api/persister-partykit-client/">PartyKit</a> and <a href="https://electric-sql.com/">ElectricSQL</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">5.0kB - 9.4kB</a>, no dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://tinybase.org/react.svg"> React</a></div><div><a href="https://tinybase.org/api/persister-partykit-client"><img width="48" src="https://tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/expo.svg">Expo SQLite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/electric.svg">ElectricSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://tinybase.org/api/persister-automerge"><img width="48" src="https://tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=GitHub&labelColor=%23d81b60&color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&logo=discord&logoColor=%23fff&label=Discord&labelColor=%233131e8&color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&logo=x&logoColor=%23fff&label=Twitter&labelColor=%23333&color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Ideas&labelColor=%23d81b60&color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Issues&labelColor=%23d81b60&color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&logo=jest&logoColor=%23fff&color=%23333&labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/4.6.
|
|
1
|
+
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://tinybase.org/guides/releases/#v4-6"><em>NEW!</em> v4.6 release</a> <span id="one-with">"The One With ElectricSQL"</span></p><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><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app's data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions & ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://tinybase.org/api/persister-browser">storage</a>, <a href="https://tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>; and (<em>new!</em>) <a href="https://tinybase.org/api/persister-partykit-client/">PartyKit</a> and <a href="https://electric-sql.com/">ElectricSQL</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">5.0kB - 9.4kB</a>, no dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://tinybase.org/react.svg"> React</a></div><div><a href="https://tinybase.org/api/persister-partykit-client"><img width="48" src="https://tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/expo.svg">Expo SQLite</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/electric.svg">ElectricSQL</a></div><div><a href="https://tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://tinybase.org/api/persister-automerge"><img width="48" src="https://tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=GitHub&labelColor=%23d81b60&color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&logo=discord&logoColor=%23fff&label=Discord&labelColor=%233131e8&color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&logo=x&logoColor=%23fff&label=Twitter&labelColor=%23333&color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Ideas&labelColor=%23d81b60&color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&logo=GitHub&logoColor=%23fff&label=Issues&labelColor=%23d81b60&color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&logo=jest&logoColor=%23fff&color=%23333&labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/4.6.1" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&logo=npm&logoColor=%23fff&labelColor=%23bd0005&color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
|
|
2
2
|
|
|
3
3
|
```js
|
|
4
4
|
const store = createStore()
|