tinybase 2.1.0 → 2.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/bin/cli.js +2 -0
  2. package/lib/checkpoints.d.ts +0 -2
  3. package/lib/checkpoints.js +1 -1
  4. package/lib/checkpoints.js.gz +0 -0
  5. package/lib/debug/checkpoints.d.ts +0 -2
  6. package/lib/debug/checkpoints.js +4 -2
  7. package/lib/debug/indexes.d.ts +0 -2
  8. package/lib/debug/indexes.js +2 -1
  9. package/lib/debug/metrics.d.ts +0 -2
  10. package/lib/debug/metrics.js +2 -1
  11. package/lib/debug/queries.d.ts +0 -2
  12. package/lib/debug/relationships.d.ts +0 -2
  13. package/lib/debug/relationships.js +2 -1
  14. package/lib/debug/store.d.ts +1 -1
  15. package/lib/debug/store.js +12 -13
  16. package/lib/debug/tinybase.js +14 -14
  17. package/lib/debug/tools.d.ts +290 -0
  18. package/lib/debug/tools.js +955 -0
  19. package/lib/es6/checkpoints.d.ts +0 -2
  20. package/lib/es6/checkpoints.js +1 -1
  21. package/lib/es6/checkpoints.js.gz +0 -0
  22. package/lib/es6/indexes.d.ts +0 -2
  23. package/lib/es6/metrics.d.ts +0 -2
  24. package/lib/es6/queries.d.ts +0 -2
  25. package/lib/es6/relationships.d.ts +0 -2
  26. package/lib/es6/store.d.ts +1 -1
  27. package/lib/es6/store.js +1 -1
  28. package/lib/es6/store.js.gz +0 -0
  29. package/lib/es6/tinybase.js +1 -1
  30. package/lib/es6/tinybase.js.gz +0 -0
  31. package/lib/es6/tools.d.ts +290 -0
  32. package/lib/es6/tools.js +1 -0
  33. package/lib/es6/tools.js.gz +0 -0
  34. package/lib/indexes.d.ts +0 -2
  35. package/lib/metrics.d.ts +0 -2
  36. package/lib/queries.d.ts +0 -2
  37. package/lib/relationships.d.ts +0 -2
  38. package/lib/store.d.ts +1 -1
  39. package/lib/store.js +1 -1
  40. package/lib/store.js.gz +0 -0
  41. package/lib/tinybase.js +1 -1
  42. package/lib/tinybase.js.gz +0 -0
  43. package/lib/tools.d.ts +290 -0
  44. package/lib/tools.js +1 -0
  45. package/lib/tools.js.gz +0 -0
  46. package/lib/umd/checkpoints.d.ts +0 -2
  47. package/lib/umd/checkpoints.js +1 -1
  48. package/lib/umd/checkpoints.js.gz +0 -0
  49. package/lib/umd/common.js +1 -1
  50. package/lib/umd/common.js.gz +0 -0
  51. package/lib/umd/indexes.d.ts +0 -2
  52. package/lib/umd/indexes.js +1 -1
  53. package/lib/umd/indexes.js.gz +0 -0
  54. package/lib/umd/metrics.d.ts +0 -2
  55. package/lib/umd/metrics.js +1 -1
  56. package/lib/umd/metrics.js.gz +0 -0
  57. package/lib/umd/persisters.js +1 -1
  58. package/lib/umd/persisters.js.gz +0 -0
  59. package/lib/umd/queries.d.ts +0 -2
  60. package/lib/umd/queries.js +1 -1
  61. package/lib/umd/queries.js.gz +0 -0
  62. package/lib/umd/relationships.d.ts +0 -2
  63. package/lib/umd/relationships.js +1 -1
  64. package/lib/umd/relationships.js.gz +0 -0
  65. package/lib/umd/store.d.ts +1 -1
  66. package/lib/umd/store.js +1 -1
  67. package/lib/umd/store.js.gz +0 -0
  68. package/lib/umd/tinybase.js +1 -1
  69. package/lib/umd/tinybase.js.gz +0 -0
  70. package/lib/umd/tools.d.ts +290 -0
  71. package/lib/umd/tools.js +1 -0
  72. package/lib/umd/tools.js.gz +0 -0
  73. package/lib/umd/ui-react.js +1 -1
  74. package/lib/umd/ui-react.js.gz +0 -0
  75. package/lib/umd-es6/checkpoints.d.ts +0 -2
  76. package/lib/umd-es6/checkpoints.js +1 -1
  77. package/lib/umd-es6/checkpoints.js.gz +0 -0
  78. package/lib/umd-es6/common.js +1 -1
  79. package/lib/umd-es6/common.js.gz +0 -0
  80. package/lib/umd-es6/indexes.d.ts +0 -2
  81. package/lib/umd-es6/indexes.js +1 -1
  82. package/lib/umd-es6/indexes.js.gz +0 -0
  83. package/lib/umd-es6/metrics.d.ts +0 -2
  84. package/lib/umd-es6/metrics.js +1 -1
  85. package/lib/umd-es6/metrics.js.gz +0 -0
  86. package/lib/umd-es6/persisters.js +1 -1
  87. package/lib/umd-es6/persisters.js.gz +0 -0
  88. package/lib/umd-es6/queries.d.ts +0 -2
  89. package/lib/umd-es6/queries.js +1 -1
  90. package/lib/umd-es6/queries.js.gz +0 -0
  91. package/lib/umd-es6/relationships.d.ts +0 -2
  92. package/lib/umd-es6/relationships.js +1 -1
  93. package/lib/umd-es6/relationships.js.gz +0 -0
  94. package/lib/umd-es6/store.d.ts +1 -1
  95. package/lib/umd-es6/store.js +1 -1
  96. package/lib/umd-es6/store.js.gz +0 -0
  97. package/lib/umd-es6/tinybase.js +1 -1
  98. package/lib/umd-es6/tinybase.js.gz +0 -0
  99. package/lib/umd-es6/tools.d.ts +290 -0
  100. package/lib/umd-es6/tools.js +1 -0
  101. package/lib/umd-es6/tools.js.gz +0 -0
  102. package/lib/umd-es6/ui-react.js +1 -1
  103. package/lib/umd-es6/ui-react.js.gz +0 -0
  104. package/package.json +36 -27
  105. package/readme.md +12 -12
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t){"use strict";const s="utf8",a=e=>null==e,o=(e,t,s)=>a(e)?s?.():t(e),r=Object.freeze,n=(e,t,s,n,i)=>{let c,d=0;const l={load:async s=>{if(2!=d){d=1;const o=await t();a(o)||""==o?e.setTables(s):e.setJson(o),d=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),n(l.load),l),stopAutoLoad:()=>(i(),l),save:async()=>(1!=d&&(d=2,await s(e.getJson()),d=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),c=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(o(c,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(l)},i="storage",c=globalThis.window,d=(e,t,s)=>{let a;return n(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{a=a=>{a.storageArea===s&&a.key===t&&e()},c.addEventListener(i,a)}),(()=>{c.removeEventListener(i,a),a=void 0}))},l=e=>e.headers.get("ETag");e.createCustomPersister=n,e.createFilePersister=(e,a)=>{let o;return n(e,(async()=>{try{return await t.promises.readFile(a,s)}catch{}}),(async e=>{try{await t.promises.writeFile(a,e,s)}catch{}}),(e=>{o=t.watch(a,e)}),(()=>{o?.close(),o=void 0}))},e.createLocalPersister=(e,t)=>d(e,t,localStorage),e.createRemotePersister=(e,t,s,r)=>{let i,c;return n(e,(async()=>{const e=await fetch(t);return c=l(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{i=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),o=l(s);a(c)||a(o)||o==c||(c=o,e())}),1e3*r)}),(()=>{o(i,clearInterval),i=void 0}))},e.createSessionPersister=(e,t)=>d(e,t,sessionStorage),Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisters={},e.fs);
1
+ var e,t;e=this,t=function(e,t){"use strict";const s="utf8",a=e=>null==e,o=(e,t,s)=>a(e)?s?.():t(e),r=Object.freeze,n=(e,t,s,n,i)=>{let c,d=0;const l={load:async s=>{if(2!=d){d=1;const o=await t();a(o)||""==o?e.setTables(s):e.setJson(o),d=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),n(l.load),l),stopAutoLoad:()=>(i(),l),save:async()=>(1!=d&&(d=2,await s(e.getJson()),d=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),c=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(o(c,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(l)},i="storage",c=globalThis.window,d=(e,t,s)=>{let a;return n(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{a=a=>{a.storageArea===s&&a.key===t&&e()},c.addEventListener(i,a)}),(()=>{c.removeEventListener(i,a),a=void 0}))},l=e=>e.headers.get("ETag");e.createCustomPersister=n,e.createFilePersister=(e,a)=>{let o;return n(e,(async()=>{try{return await t.promises.readFile(a,s)}catch{}}),(async e=>{try{await t.promises.writeFile(a,e,s)}catch{}}),(e=>{o=t.watch(a,e)}),(()=>{o?.close(),o=void 0}))},e.createLocalPersister=(e,t)=>d(e,t,localStorage),e.createRemotePersister=(e,t,s,r)=>{let i,c;return n(e,(async()=>{const e=await fetch(t);return c=l(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{i=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),o=l(s);a(c)||a(o)||o==c||(c=o,e())}),1e3*r)}),(()=>{o(i,clearInterval),i=void 0}))},e.createSessionPersister=(e,t)=>d(e,t,sessionStorage)},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisters={},e.fs);
Binary file
@@ -2992,8 +2992,6 @@ export interface Queries {
2992
2992
  * The createQueries function creates a Queries object, and is the main entry
2993
2993
  * point into the queries module.
2994
2994
  *
2995
- * It is trivially simple.
2996
- *
2997
2995
  * A given Store can only have one Queries object associated with it. If you
2998
2996
  * call this function twice on the same Store, your second call will return a
2999
2997
  * reference to the Queries object created by the first.
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),r=t(0),o=t(t),i="Listener",l="Result",a=(e,t)=>e.every(t),d=(e,t)=>e.forEach(t),c=e=>h(e,((e,t)=>e+t),0),u=e=>e.length,f=e=>0==u(e),h=(e,t,n)=>e.reduce(t,n),g=(e,...t)=>e.push(...t),w=Math.max,v=Math.min,R=isFinite,y=e=>null==e,L=(e,t,n)=>y(e)?n?.():t(e),p=e=>t(e)==o,b=e=>Array.isArray(e),T=()=>{},C=e=>e.size,m=(e,t)=>e?.has(t)??!1,I=e=>y(e)||0==C(e),Q=e=>[...e?.values()??[]],S=e=>e.clear(),x=(e,t)=>e?.forEach(t),M=(e,t)=>e?.delete(t),j=e=>new Map(e),E=(e,t)=>e?.get(t),D=(e,t)=>x(e,((e,n)=>t(n,e))),F=(e,t,n)=>y(n)?(M(e,t),e):e?.set(t,n),k=(e,t,n)=>(m(e,t)||F(e,t,n()),E(e,t)),z=(e,t,n,s,r=0)=>L((n?k:E)(e,t[r],r>u(t)-2?n:j),(o=>{if(r>u(t)-2)return s?.(o)&&F(e,t[r]),o;const i=z(o,t,n,s,r+1);return I(o)&&F(e,t[r]),i})),A=e=>new Set(b(e)||y(e)?e:[e]),O=(e,t)=>e?.add(t),W=j([["avg",[(e,t)=>c(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["min",[e=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:v(t,e)]],["sum",[e=>c(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),_=e=>{const o=t(e);return(e=>e==n||e==s)(o)||o==r&&R(e)?o:void 0},B=(e,t,n)=>{const s=e.hasRow,r=j(),o=j(),i=j(),l=j(),c=j(),h=(t,n,...s)=>{const r=k(c,t,A);return d(s,(t=>O(r,t)&&n&&e.callListener(t))),s},g=(t,...n)=>L(E(c,t),(s=>{d(f(n)?Q(s):n,(t=>{e.delListener(t),M(s,t)})),I(s)&&F(c,t)})),w=(e,n)=>{F(r,e,n),m(o,e)||(F(o,e,t()),F(i,e,j()),F(l,e,j()))},v=e=>{F(r,e),F(o,e),F(i,e),F(l,e),g(e)};return[()=>e,()=>[...r?.keys()??[]],e=>D(o,e),e=>m(o,e),e=>E(r,e),e=>E(o,e),(e,t)=>F(o,e,t),w,(t,r,o,c,f)=>{w(t,r);const v=j(),R=j(),L=E(i,t),p=E(l,t),T=t=>{const o=n=>e.getCell(r,t,n),i=E(L,t),l=s(r,t)?n(c(o,t)):void 0;var d,h;if(i===l||b(i)&&b(l)&&(h=l,u(d=i)===u(h)&&a(d,((e,t)=>h[t]===e)))||F(v,t,[i,l]),!y(f)){const e=E(p,t),n=s(r,t)?f(o,t):void 0;e!=n&&F(R,t,n)}},C=e=>{o((()=>{x(v,(([,e],t)=>F(L,t,e))),x(R,((e,t)=>F(p,t,e)))}),v,R,L,p,e),S(v),S(R)};D(L,T),e.hasTable(r)&&d(e.getRowIds(r),(e=>{m(L,e)||T(e)})),C(!0),g(t),h(t,0,e.addRowListener(r,null,((e,t,n)=>T(n))),e.addTableListener(r,(()=>C())))},v,()=>D(c,v),h,g]},P=Object,q=P.freeze,G=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,r,o,c,,,h,,w,v,R,b]=B(e,(()=>!0),T),G=t(),H=t(),J=j(),K=(e,t,...n)=>d(n,(n=>O(k(k(J,t,j),e,A),n))),N=e=>{L(E(J,e),(e=>{D(e,((e,t)=>x(t,(t=>e.delListener(t))))),S(e)})),d([H,G],(t=>t.delTable(e)))},U=(e,t,n)=>K(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),V={setQueryDefinition:(t,n,s)=>{h(t,n),N(t);const r=[],o=[[null,[n,null,null,[],j()]]],i=[],l=[],c=[];s({select:(e,t)=>{const n=p(e)?[u(r)+"",e]:[y(t)?e:t,n=>n(e,t)];return g(r,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=y(n)||p(t)?null:t,r=y(s)?t:n,i=[e,[e,s,p(r)?r:e=>e(r),[],j()]];return g(o,i),{as:e=>i[0]=e}},where:(e,t,n)=>g(i,p(e)?e:y(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,p(t)?[t,n,s,r]:E(W,t)??[(e,t)=>t]]];return g(l,o),{as:e=>o[0]=e}},having:(e,t)=>g(c,p(e)?e:n=>n(e)===t)});const w=j(r);if(I(w))return V;const v=j(o);D(v,((e,[,t])=>L(E(v,t),(({3:t})=>y(e)?0:g(t,e)))));const T=j(l);let S=G;if(I(T)&&f(c))S=H;else{U(t,S,H);const e=j();D(T,((t,[n,s])=>O(k(e,n,A),[t,s])));const n=A();D(w,(t=>m(e,t)?0:O(n,t)));const s=j(),r=(n,s,r,o)=>L(n,(([i,l,d,u])=>{D(s,((t,[n])=>{const s=k(i,t,j),l=E(s,r),a=o?void 0:n;if(l!==a){const n=A([[l,a]]),o=C(s);F(s,r,a),x(E(e,t),(([e,t])=>{const r=((e,t,n,s,r,o=!1)=>{if(I(n))return;const[i,l,a,d]=r;return o||=y(e),x(s,(([n,s])=>{o||(e=y(n)?l?.(e,s,t++):y(s)?a?.(e,n,t--):d?.(e,s,n,t),o||=y(e))})),o?i(Q(n),C(n)):e})(u[e],o,s,n,t);u[e]=y(_(r))?null:r}))}})),I(l)||!a(c,(e=>e((e=>u[e]))))?H.delRow(t,d):y(d)?n[2]=H.addRow(t,u):H.setRow(t,d,u)}));K(S,t,S.addRowListener(t,null,((o,i,l,a)=>{const d=[],c=[],u=j(),f=S.hasRow(t,l);let h=!f;x(n,(e=>{const[n,s,r]=a(t,l,e);g(d,s),g(c,r),h||=n})),D(e,(e=>{const[n,,s]=a(t,l,e);(h||n)&&F(u,e,[s])})),h&&r(z(s,d,void 0,(([,e])=>(M(e,l),I(e)))),u,l,1),f&&r(z(s,c,(()=>{const e={};return x(n,(n=>e[n]=S.getCell(t,l,n))),[j(),A(),void 0,e]}),(([,e])=>{O(e,l)})),u,l)})))}U(t,e,S);const B=s=>{const r=(t,r)=>e.getCell(...y(r)?[n,s,t]:t===n?[n,s,r]:[E(v,t)?.[0],E(E(v,t)?.[4],s)?.[0],r]);S.transaction((()=>a(i,(e=>e(r)))?D(w,((e,n)=>((e,t,n,s,r)=>y(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(S,t,s,e,n(r,s)))):S.delRow(t,s)))},P=(n,s,r,o)=>{const i=t=>e.getCell(s,r,t);d(o,(s=>{const[r,,o,l,a]=E(v,s),d=o?.(i,n),[c,u]=E(a,n)??[];d!=c&&(y(u)||b(t,u),F(a,n,y(d)?null:[d,...R(t,1,e.addRowListener(r,d,(()=>P(n,r,d,l))))]))})),B(n)},{3:q}=E(v,null);return S.transaction((()=>R(t,1,e.addRowListener(n,null,((s,r,o)=>{e.hasRow(n,o)?P(o,n,o,q):(S.delRow(t,o),x(v,(({4:e})=>L(E(e,o),(([,n])=>{b(t,n),F(e,o)})))))}))))),V},delQueryDefinition:e=>(N(e),w(e),V),getStore:n,getQueryIds:s,forEachQuery:r,hasQuery:o,getTableId:c,delListener:e=>(H.delListener(e),V),destroy:v,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=H.getListenerStats();return s}};var X,Y;return X={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},Y=([e,t],n)=>{d(e?["get","has","forEach"]:["get"],(e=>V[e+l+n]=(...t)=>H[e+n](...t))),V["addResult"+n+i]=(...e)=>{return H["add"+n+i](...(s=e,r=0,o=t,s.slice(r,o)),((n,...s)=>e[t](V,...s)));var s,r,o}},d(P.entries(X),(([e,t])=>Y(t,e))),q(V)}));e.createQueries=G,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseQueries={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),r=t(0),o=t(t),i="Listener",l="Result",a=(e,t)=>e.every(t),d=(e,t)=>e.forEach(t),c=e=>h(e,((e,t)=>e+t),0),u=e=>e.length,f=e=>0==u(e),h=(e,t,n)=>e.reduce(t,n),g=(e,...t)=>e.push(...t),w=Math.max,v=Math.min,R=isFinite,y=e=>null==e,L=(e,t,n)=>y(e)?n?.():t(e),p=e=>t(e)==o,T=e=>Array.isArray(e),b=()=>{},C=e=>e.size,m=(e,t)=>e?.has(t)??!1,I=e=>y(e)||0==C(e),Q=e=>[...e?.values()??[]],S=e=>e.clear(),x=(e,t)=>e?.forEach(t),E=(e,t)=>e?.delete(t),M=e=>new Map(e),j=(e,t)=>e?.get(t),D=(e,t)=>x(e,((e,n)=>t(n,e))),F=(e,t,n)=>y(n)?(E(e,t),e):e?.set(t,n),k=(e,t,n)=>(m(e,t)||F(e,t,n()),j(e,t)),z=(e,t,n,s,r=0)=>L((n?k:j)(e,t[r],r>u(t)-2?n:M),(o=>{if(r>u(t)-2)return s?.(o)&&F(e,t[r]),o;const i=z(o,t,n,s,r+1);return I(o)&&F(e,t[r]),i})),A=e=>new Set(T(e)||y(e)?e:[e]),W=(e,t)=>e?.add(t),B=M([["avg",[(e,t)=>c(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["min",[e=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:v(t,e)]],["sum",[e=>c(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),O=e=>{const o=t(e);return(e=>e==n||e==s)(o)||o==r&&R(e)?o:void 0},q=(e,t,n)=>{const s=e.hasRow,r=M(),o=M(),i=M(),l=M(),c=M(),h=(t,n,...s)=>{const r=k(c,t,A);return d(s,(t=>W(r,t)&&n&&e.callListener(t))),s},g=(t,...n)=>L(j(c,t),(s=>{d(f(n)?Q(s):n,(t=>{e.delListener(t),E(s,t)})),I(s)&&F(c,t)})),w=(e,n)=>{F(r,e,n),m(o,e)||(F(o,e,t()),F(i,e,M()),F(l,e,M()))},v=e=>{F(r,e),F(o,e),F(i,e),F(l,e),g(e)};return[()=>e,()=>[...r?.keys()??[]],e=>D(o,e),e=>m(o,e),e=>j(r,e),e=>j(o,e),(e,t)=>F(o,e,t),w,(t,r,o,c,f)=>{w(t,r);const v=M(),R=M(),L=j(i,t),p=j(l,t),b=t=>{const o=n=>e.getCell(r,t,n),i=j(L,t),l=s(r,t)?n(c(o,t)):void 0;var d,h;if(i===l||T(i)&&T(l)&&(h=l,u(d=i)===u(h)&&a(d,((e,t)=>h[t]===e)))||F(v,t,[i,l]),!y(f)){const e=j(p,t),n=s(r,t)?f(o,t):void 0;e!=n&&F(R,t,n)}},C=e=>{o((()=>{x(v,(([,e],t)=>F(L,t,e))),x(R,((e,t)=>F(p,t,e)))}),v,R,L,p,e),S(v),S(R)};D(L,b),e.hasTable(r)&&d(e.getRowIds(r),(e=>{m(L,e)||b(e)})),C(!0),g(t),h(t,0,e.addRowListener(r,null,((e,t,n)=>b(n))),e.addTableListener(r,(()=>C())))},v,()=>D(c,v),h,g]},G=Object,H=G.freeze,J=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,r,o,c,,,h,,w,v,R,T]=q(e,(()=>!0),b),J=t(),K=t(),N=M(),P=(e,t,...n)=>d(n,(n=>W(k(k(N,t,M),e,A),n))),U=e=>{L(j(N,e),(e=>{D(e,((e,t)=>x(t,(t=>e.delListener(t))))),S(e)})),d([K,J],(t=>t.delTable(e)))},V=(e,t,n)=>P(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),X={setQueryDefinition:(t,n,s)=>{h(t,n),U(t);const r=[],o=[[null,[n,null,null,[],M()]]],i=[],l=[],c=[];s({select:(e,t)=>{const n=p(e)?[u(r)+"",e]:[y(t)?e:t,n=>n(e,t)];return g(r,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=y(n)||p(t)?null:t,r=y(s)?t:n,i=[e,[e,s,p(r)?r:e=>e(r),[],M()]];return g(o,i),{as:e=>i[0]=e}},where:(e,t,n)=>g(i,p(e)?e:y(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,p(t)?[t,n,s,r]:j(B,t)??[(e,t)=>t]]];return g(l,o),{as:e=>o[0]=e}},having:(e,t)=>g(c,p(e)?e:n=>n(e)===t)});const w=M(r);if(I(w))return X;const v=M(o);D(v,((e,[,t])=>L(j(v,t),(({3:t})=>y(e)?0:g(t,e)))));const b=M(l);let S=J;if(I(b)&&f(c))S=K;else{V(t,S,K);const e=M();D(b,((t,[n,s])=>W(k(e,n,A),[t,s])));const n=A();D(w,(t=>m(e,t)?0:W(n,t)));const s=M(),r=(n,s,r,o)=>L(n,(([i,l,d,u])=>{D(s,((t,[n])=>{const s=k(i,t,M),l=j(s,r),a=o?void 0:n;if(l!==a){const n=A([[l,a]]),o=C(s);F(s,r,a),x(j(e,t),(([e,t])=>{const r=((e,t,n,s,r,o=!1)=>{if(I(n))return;const[i,l,a,d]=r;return o||=y(e),x(s,(([n,s])=>{o||(e=y(n)?l?.(e,s,t++):y(s)?a?.(e,n,t--):d?.(e,s,n,t),o||=y(e))})),o?i(Q(n),C(n)):e})(u[e],o,s,n,t);u[e]=y(O(r))?null:r}))}})),I(l)||!a(c,(e=>e((e=>u[e]))))?K.delRow(t,d):y(d)?n[2]=K.addRow(t,u):K.setRow(t,d,u)}));P(S,t,S.addRowListener(t,null,((o,i,l,a)=>{const d=[],c=[],u=M(),f=S.hasRow(t,l);let h=!f;x(n,(e=>{const[n,s,r]=a(t,l,e);g(d,s),g(c,r),h||=n})),D(e,(e=>{const[n,,s]=a(t,l,e);(h||n)&&F(u,e,[s])})),h&&r(z(s,d,void 0,(([,e])=>(E(e,l),I(e)))),u,l,1),f&&r(z(s,c,(()=>{const e={};return x(n,(n=>e[n]=S.getCell(t,l,n))),[M(),A(),void 0,e]}),(([,e])=>{W(e,l)})),u,l)})))}V(t,e,S);const q=s=>{const r=(t,r)=>e.getCell(...y(r)?[n,s,t]:t===n?[n,s,r]:[j(v,t)?.[0],j(j(v,t)?.[4],s)?.[0],r]);S.transaction((()=>a(i,(e=>e(r)))?D(w,((e,n)=>((e,t,n,s,r)=>y(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(S,t,s,e,n(r,s)))):S.delRow(t,s)))},G=(n,s,r,o)=>{const i=t=>e.getCell(s,r,t);d(o,(s=>{const[r,,o,l,a]=j(v,s),d=o?.(i,n),[c,u]=j(a,n)??[];d!=c&&(y(u)||T(t,u),F(a,n,y(d)?null:[d,...R(t,1,e.addRowListener(r,d,(()=>G(n,r,d,l))))]))})),q(n)},{3:H}=j(v,null);return S.transaction((()=>R(t,1,e.addRowListener(n,null,((s,r,o)=>{e.hasRow(n,o)?G(o,n,o,H):(S.delRow(t,o),x(v,(({4:e})=>L(j(e,o),(([,n])=>{T(t,n),F(e,o)})))))}))))),X},delQueryDefinition:e=>(U(e),w(e),X),getStore:n,getQueryIds:s,forEachQuery:r,hasQuery:o,getTableId:c,delListener:e=>(K.delListener(e),X),destroy:v,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=K.getListenerStats();return s}};var Y,Z;return Y={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},Z=([e,t],n)=>{d(e?["get","has","forEach"]:["get"],(e=>X[e+l+n]=(...t)=>K[e+n](...t))),X["addResult"+n+i]=(...e)=>{return K["add"+n+i](...(s=e,r=0,o=t,s.slice(r,o)),((n,...s)=>e[t](X,...s)));var s,r,o}},d(G.entries(Y),(([e,t])=>Z(t,e))),H(X)}));e.createQueries=J},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseQueries={});
Binary file
@@ -1170,8 +1170,6 @@ export interface Relationships {
1170
1170
  * The createRelationships function creates a Relationships object, and is the
1171
1171
  * main entry point into the relationships module.
1172
1172
  *
1173
- * It is trivially simple.
1174
- *
1175
1173
  * A given Store can only have one Relationships object associated with it. If
1176
1174
  * you call this function twice on the same Store, your second call will return
1177
1175
  * a reference to the Relationships object created by the first.
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>e.forEach(t),i=e=>e.length,r=(e,...t)=>e.push(...t),a=e=>null==e,d=(e,t,n)=>a(e)?n?.():t(e),l=e=>Array.isArray(e),c=(e,t)=>e?.has(t)??!1,f=e=>a(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),R=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),g=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,n)=>t(n,e))),y=(e,t,n)=>a(n)?(p(e,t),e):e?.set(t,n),I=(e,t,n)=>(c(e,t)||y(e,t,n()),L(e,t)),b=(e,t,n,s,o=0)=>d((n?I:L)(e,t[o],o>i(t)-2?n:g),(r=>{if(o>i(t)-2)return s?.(r)&&y(e,t[o]),r;const a=b(r,t,n,s,o+1);return f(r)&&y(e,t[o]),a})),v=e=>new Set(l(e)||a(e)?e:[e]),T=(e,t)=>e?.add(t),m=(e,t,n)=>{const s=e.hasRow,r=g(),b=g(),m=g(),k=g(),E=g(),j=(t,n,...s)=>{const i=I(E,t,v);return o(s,(t=>T(i,t)&&n&&e.callListener(t))),s},x=(t,...n)=>d(L(E,t),(s=>{o(0==i(n)?u(s):n,(t=>{e.delListener(t),p(s,t)})),f(s)&&y(E,t)})),M=(e,n)=>{y(r,e,n),c(b,e)||(y(b,e,t()),y(m,e,g()),y(k,e,g()))},S=e=>{y(r,e),y(b,e),y(m,e),y(k,e),x(e)};return[()=>e,()=>[...r?.keys()??[]],e=>w(b,e),e=>c(b,e),e=>L(r,e),e=>L(b,e),(e,t)=>y(b,e,t),M,(t,r,d,f,u)=>{M(t,r);const p=g(),I=g(),b=L(m,t),v=L(k,t),T=t=>{const o=n=>e.getCell(r,t,n),d=L(b,t),c=s(r,t)?n(f(o,t)):void 0;var h,R,g;if(d===c||l(d)&&l(c)&&(R=c,i(h=d)===i(R)&&(g=(e,t)=>R[t]===e,h.every(g)))||y(p,t,[d,c]),!a(u)){const e=L(v,t),n=s(r,t)?u(o,t):void 0;e!=n&&y(I,t,n)}},E=e=>{d((()=>{R(p,(([,e],t)=>y(b,t,e))),R(I,((e,t)=>y(v,t,e)))}),p,I,b,v,e),h(p),h(I)};w(b,T),e.hasTable(r)&&o(e.getRowIds(r),(e=>{c(b,e)||T(e)})),E(!0),x(t),j(t,0,e.addRowListener(r,null,((e,t,n)=>T(n))),e.addTableListener(r,(()=>E())))},S,()=>w(E,S),j,x]},k=(e,o)=>t(e)==s?t=>t(e):e??(()=>o??n),E=/^\d+$/,j=e=>{let t;const[s,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{E.test(t)&&i(e)<1e3&&r(e,t)}]})(),c=g();return[(o,i,r)=>{t??=e();const a=s();return y(c,a,[o,i,r]),T(b(i,r??[n],v),a),a},(e,s,...a)=>o(((e,t=[n])=>{const s=[],a=(e,n)=>n==i(t)?r(s,e):null===t[n]?R(e,(e=>a(e,n+1))):o([t[n],null],(t=>a(L(e,t),n+1)));return a(e,0),s})(e,s),(e=>R(e,(e=>L(c,e)[0](t,...s??[],...a))))),e=>d(L(c,e),(([,t,s])=>(b(t,s??[n],void 0,(t=>(p(t,e),f(t)?1:0))),y(c,e),l(e),s))),(e,n,s)=>d(L(c,e),(([e,,r=[]])=>{const d=(...l)=>{const c=i(l);c==i(r)?e(t,...l,...s(l)):a(r[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,r[c])};d()}))]},x=Object.freeze,M=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=g(),s=g(),o=g(),i=g(),[r,l,h,I,b,E,,,M,S,z]=m(e,(()=>[g(),g(),g(),g()]),(e=>a(e)?void 0:e+n)),[A,D,O]=j((()=>P)),_=(e,t,n)=>d(E(e),(([s,,o])=>{if(!c(o,t)){const i=v();if(b(e)!=C(e))T(i,t);else{let e=t;for(;!a(e)&&!c(i,e);)T(i,e),e=L(s,e)}if(n)return i;y(o,t,i)}return L(o,t)})),B=(e,t)=>d(E(e),(([,,e])=>y(e,t))),C=e=>L(t,e),P={setRelationshipDefinition:(e,n,r,l)=>(y(t,e,r),M(e,n,((t,n)=>{const r=v(),l=v(),u=v(),[h,g]=E(e);R(n,(([t,n],s)=>{a(t)||(T(l,t),d(L(g,t),(e=>{p(e,s),f(e)&&y(g,t)}))),a(n)||(T(l,n),c(g,n)||y(g,n,v()),T(L(g,n),s)),T(r,s),y(h,s,n),w(L(i,e),(t=>{c(_(e,t),s)&&T(u,t)}))})),t(),R(r,(t=>D(s,[e,t]))),R(l,(t=>D(o,[e,t]))),R(u,(t=>{B(e,t),D(i,[e,t])}))}),k(l)),P),delRelationshipDefinition:e=>(y(t,e),S(e),P),getStore:r,getRelationshipIds:l,forEachRelationship:t=>h((n=>t(n,(t=>e.forEachRow(b(n),t))))),hasRelationship:I,getLocalTableId:b,getRemoteTableId:C,getRemoteRowId:(e,t)=>L(E(e)?.[0],t),getLocalRowIds:(e,t)=>u(L(E(e)?.[1],t)),getLinkedRowIds:(e,t)=>a(E(e))?[t]:u(_(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>A(n,s,[e,t]),addLocalRowIdsListener:(e,t,n)=>A(n,o,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(_(e,t),A(n,i,[e,t])),delListener:e=>(B(...O(e)),P),destroy:z,getListenerStats:()=>({})};return x(P)}));e.createRelationships=M,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>e.forEach(t),i=e=>e.length,r=(e,...t)=>e.push(...t),a=e=>null==e,d=(e,t,n)=>a(e)?n?.():t(e),l=e=>Array.isArray(e),c=(e,t)=>e?.has(t)??!1,f=e=>a(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),R=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),g=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,n)=>t(n,e))),y=(e,t,n)=>a(n)?(p(e,t),e):e?.set(t,n),I=(e,t,n)=>(c(e,t)||y(e,t,n()),L(e,t)),b=(e,t,n,s,o=0)=>d((n?I:L)(e,t[o],o>i(t)-2?n:g),(r=>{if(o>i(t)-2)return s?.(r)&&y(e,t[o]),r;const a=b(r,t,n,s,o+1);return f(r)&&y(e,t[o]),a})),v=e=>new Set(l(e)||a(e)?e:[e]),T=(e,t)=>e?.add(t),m=(e,t,n)=>{const s=e.hasRow,r=g(),b=g(),m=g(),k=g(),E=g(),x=(t,n,...s)=>{const i=I(E,t,v);return o(s,(t=>T(i,t)&&n&&e.callListener(t))),s},S=(t,...n)=>d(L(E,t),(s=>{o(0==i(n)?u(s):n,(t=>{e.delListener(t),p(s,t)})),f(s)&&y(E,t)})),j=(e,n)=>{y(r,e,n),c(b,e)||(y(b,e,t()),y(m,e,g()),y(k,e,g()))},z=e=>{y(r,e),y(b,e),y(m,e),y(k,e),S(e)};return[()=>e,()=>[...r?.keys()??[]],e=>w(b,e),e=>c(b,e),e=>L(r,e),e=>L(b,e),(e,t)=>y(b,e,t),j,(t,r,d,f,u)=>{j(t,r);const p=g(),I=g(),b=L(m,t),v=L(k,t),T=t=>{const o=n=>e.getCell(r,t,n),d=L(b,t),c=s(r,t)?n(f(o,t)):void 0;var h,R,g;if(d===c||l(d)&&l(c)&&(R=c,i(h=d)===i(R)&&(g=(e,t)=>R[t]===e,h.every(g)))||y(p,t,[d,c]),!a(u)){const e=L(v,t),n=s(r,t)?u(o,t):void 0;e!=n&&y(I,t,n)}},E=e=>{d((()=>{R(p,(([,e],t)=>y(b,t,e))),R(I,((e,t)=>y(v,t,e)))}),p,I,b,v,e),h(p),h(I)};w(b,T),e.hasTable(r)&&o(e.getRowIds(r),(e=>{c(b,e)||T(e)})),E(!0),S(t),x(t,0,e.addRowListener(r,null,((e,t,n)=>T(n))),e.addTableListener(r,(()=>E())))},z,()=>w(E,z),x,S]},k=(e,o)=>t(e)==s?t=>t(e):e??(()=>o??n),E=/^\d+$/,x=e=>{let t;const[s,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{E.test(t)&&i(e)<1e3&&r(e,t)}]})(),c=g();return[(o,i,r)=>{t??=e();const a=s();return y(c,a,[o,i,r]),T(b(i,r??[n],v),a),a},(e,s,...a)=>o(((e,t=[n])=>{const s=[],a=(e,n)=>n==i(t)?r(s,e):null===t[n]?R(e,(e=>a(e,n+1))):o([t[n],null],(t=>a(L(e,t),n+1)));return a(e,0),s})(e,s),(e=>R(e,(e=>L(c,e)[0](t,...s??[],...a))))),e=>d(L(c,e),(([,t,s])=>(b(t,s??[n],void 0,(t=>(p(t,e),f(t)?1:0))),y(c,e),l(e),s))),(e,n,s)=>d(L(c,e),(([e,,r=[]])=>{const d=(...l)=>{const c=i(l);c==i(r)?e(t,...l,...s(l)):a(r[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,r[c])};d()}))]},S=Object.freeze,j=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=g(),s=g(),o=g(),i=g(),[r,l,h,I,b,E,,,j,z,A]=m(e,(()=>[g(),g(),g(),g()]),(e=>a(e)?void 0:e+n)),[D,M,B]=x((()=>$)),C=(e,t,n)=>d(E(e),(([s,,o])=>{if(!c(o,t)){const i=v();if(b(e)!=W(e))T(i,t);else{let e=t;for(;!a(e)&&!c(i,e);)T(i,e),e=L(s,e)}if(n)return i;y(o,t,i)}return L(o,t)})),O=(e,t)=>d(E(e),(([,,e])=>y(e,t))),W=e=>L(t,e),$={setRelationshipDefinition:(e,n,r,l)=>(y(t,e,r),j(e,n,((t,n)=>{const r=v(),l=v(),u=v(),[h,g]=E(e);R(n,(([t,n],s)=>{a(t)||(T(l,t),d(L(g,t),(e=>{p(e,s),f(e)&&y(g,t)}))),a(n)||(T(l,n),c(g,n)||y(g,n,v()),T(L(g,n),s)),T(r,s),y(h,s,n),w(L(i,e),(t=>{c(C(e,t),s)&&T(u,t)}))})),t(),R(r,(t=>M(s,[e,t]))),R(l,(t=>M(o,[e,t]))),R(u,(t=>{O(e,t),M(i,[e,t])}))}),k(l)),$),delRelationshipDefinition:e=>(y(t,e),z(e),$),getStore:r,getRelationshipIds:l,forEachRelationship:t=>h((n=>t(n,(t=>e.forEachRow(b(n),t))))),hasRelationship:I,getLocalTableId:b,getRemoteTableId:W,getRemoteRowId:(e,t)=>L(E(e)?.[0],t),getLocalRowIds:(e,t)=>u(L(E(e)?.[1],t)),getLinkedRowIds:(e,t)=>a(E(e))?[t]:u(C(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>D(n,s,[e,t]),addLocalRowIdsListener:(e,t,n)=>D(n,o,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(C(e,t),D(n,i,[e,t])),delListener:e=>(O(...B(e)),$),destroy:A,getListenerStats:()=>({})};return S($)}));e.createRelationships=j},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
Binary file
@@ -1652,7 +1652,7 @@ export interface Store {
1652
1652
  * ```
1653
1653
  * @category Setter
1654
1654
  */
1655
- setSchema(tablesSchema: Schema): Store;
1655
+ setSchema(schema: Schema): Store;
1656
1656
 
1657
1657
  /**
1658
1658
  * The delTables method lets you remove all of the data in a Store.
package/lib/umd/store.js CHANGED
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),o=t(0),l=t(t),a="type",i="default",c=e=>n+e,d=(e,t)=>e.forEach(t),u=(e,t)=>e.map(t),f=e=>e.length,h=(e,t,n)=>e.slice(t,n),T=(e,...t)=>e.push(...t),b=e=>JSON.stringify(e,((e,t)=>{return g(t,Map)?(n=[...t],s=(e,[t,n])=>(e[t]=n,e),r={},n.reduce(s,r)):t;var n,s,r})),p=JSON.parse,y=isFinite,g=(e,t)=>e instanceof t,v=e=>null==e,w=(e,t,n)=>v(e)?n?.():t(e),R=e=>e==s||e==r,S=(e,t)=>e?.has(t)??!1,C=e=>v(e)||0==(e=>e.size)(e),I=e=>e.clear(),L=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),E=e=>new Map(e),J=e=>[...e?.keys()??[]],F=(e,t)=>e?.get(t),O=(e,t)=>L(e,((e,n)=>t(n,e))),j=(e,t,n)=>v(n)?(m(e,t),e):e?.set(t,n),x=(e,t,n)=>(S(e,t)||j(e,t,n()),F(e,t)),z=(e,t,n)=>{const s={},r=t??(e=>e);return L(e,((e,t)=>w(r(e),(e=>n?.(e)?0:s[t]=e)))),s},M=(e,t)=>{const n=E(),s=t??(e=>e);return L(e,((e,t)=>n.set(t,s(e)))),n},k=e=>M(e,M),A=(e,t,n,s,r=0)=>w((n?x:F)(e,t[r],r>f(t)-2?n:E),(o=>{if(r>f(t)-2)return s?.(o)&&j(e,t[r]),o;const l=A(o,t,n,s,r+1);return C(o)&&j(e,t[r]),l})),N=Object,P=N.keys,_=N.isFrozen,B=N.freeze,D=(e,t)=>!v(((e,t)=>w(e,(e=>e[t])))(e,t)),W=(e,t)=>delete e[t],$=(e,t)=>d(N.entries(e),(([e,n])=>t(n,e))),q=e=>{return t=P(e),0==f(t);var t},G=e=>new Set(Array.isArray(e)||v(e)?e:[e]),H=(e,t)=>e?.add(t),K=/^\d+$/,Q=()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{K.test(t)&&f(e)<1e3&&T(e,t)}]},U=e=>{let t;const[s,r]=Q(),o=E();return[(r,l,a)=>{t??=e();const i=s();return j(o,i,[r,l,a]),H(A(l,a??[n],G),i),i},(e,s,...r)=>d(((e,t=[n])=>{const s=[],r=(e,n)=>n==f(t)?T(s,e):null===t[n]?L(e,(e=>r(e,n+1))):d([t[n],null],(t=>r(F(e,t),n+1)));return r(e,0),s})(e,s),(e=>L(e,(e=>F(o,e)[0](t,...s??[],...r))))),e=>w(F(o,e),(([,t,s])=>(A(t,s??[n],void 0,(t=>(m(t,e),C(t)?1:0))),j(o,e),r(e),s))),(e,n,s)=>w(F(o,e),(([e,,r=[]])=>{const o=(...l)=>{const a=f(l);a==f(r)?e(t,...l,...s(l)):v(r[a])?d(n[a](...l),(e=>o(...l,e))):o(...l,r[a])};o()}))]},V=e=>[e,e],X=()=>[E(),E()],Y=e=>{const n=t(e);return R(n)||n==o&&y(e)?n:void 0},Z=(e,t,n,s=j)=>{const r=(o=J(e),l=e=>!D(t,e),o.filter(l));var o,l;return d(P(t),(s=>n(e,s,t[s]))),d(r,(t=>s(e,t))),e},ee=(e,t,n)=>v(e)||!(e=>g(e,N)&&e.constructor==N)(e)||q(e)||_(e)?(n?.(),!1):($(e,((n,s)=>{t(n,s)||W(e,s)})),!q(e)),te=(e,t,n)=>j(e,t,F(e,t)==-n?void 0:n),ne=()=>{let e,n,s=0;const r=E(),y=E(),g=E(),A=E(),N=E(),P=E(),_=E(),K=E(),se=E(),re=X(),oe=X(),le=X(),ae=X(),ie=X(),ce=X(),de=X(),ue=X(),fe=X(),he=X(),[Te,be,pe,ye]=U((()=>et)),ge=(t,n)=>(!e||S(P,n)||Ne(n))&&ee(t,((e,t)=>ve(n,t,e)),(()=>Ne(n))),ve=(e,t,n,s)=>ee(s?n:Re(n,e,t),((s,r)=>w(we(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Ne(e,t))),we=(t,n,s,r)=>e?w(F(F(P,t),s),(e=>Y(r)!=e.type?Ne(t,n,s,r,e.default):r),(()=>Ne(t,n,s,r))):v(Y(r))?Ne(t,n,s,r):r,Re=(e,t,n)=>(w(F(_,t),(([s,r])=>{L(s,((t,n)=>{D(e,n)||(e[n]=t)})),L(r,(s=>{D(e,s)||Ne(t,n,s)}))})),e),Se=e=>Z(P,e,((e,t,n)=>{const s=E(),r=G();Z(x(P,t,E),n,((e,t,n)=>{j(e,t,n),w(n.default,(e=>j(s,t,e)),(()=>H(r,t)))})),j(_,t,[s,r])}),((e,t)=>{j(P,t),j(_,t)})),Ce=e=>Z(se,e,((e,t,n)=>Ie(t,n)),((e,t)=>Oe(t))),Ie=(e,t)=>Z(x(se,e,(()=>(ze(e,1),E()))),t,((t,n,s)=>Le(e,t,n,s)),((t,n)=>je(e,t,n))),Le=(e,t,n,s,r)=>Z(x(t,n,(()=>(Me(e,n,1),E()))),s,((t,s,r)=>me(e,n,t,s,r)),((s,o)=>xe(e,t,n,s,o,r))),me=(e,t,n,s,r)=>{S(n,s)||ke(e,t,s,1);const o=F(n,s);r!==o&&(Ae(e,t,s,o,r),j(n,s,r))},Ee=(e,t,n,s,r)=>w(F(t,n),(t=>me(e,n,t,s,r)),(()=>Le(e,t,n,Re({[s]:r},e,n)))),Je=e=>{const[t]=x(K,e,Q),n=t();return S(F(se,e),n)?Je(e):n},Fe=e=>F(se,e)??Ie(e,{}),Oe=e=>Ie(e,{}),je=(e,t,n)=>{const[,s]=x(K,e,Q);s(n),Le(e,t,n,{},!0)},xe=(e,t,n,s,r,o)=>{const l=F(F(_,e)?.[0],r);if(!v(l)&&!o)return me(e,n,s,r,l);const a=t=>{Ae(e,n,t,F(s,t)),ke(e,n,t,-1),j(s,t)};v(l)?a(r):O(s,a),C(s)&&(Me(e,n,-1),C(j(t,n))&&(ze(e,-1),j(se,e)))},ze=(e,t)=>te(r,e,t),Me=(e,t,n)=>te(x(y,e,E),t,n),ke=(e,t,n,s)=>te(x(x(g,e,E),t,E),n,s),Ae=(e,t,n,s,r)=>x(x(x(A,e,E),t,E),n,(()=>[s,0]))[1]=r,Ne=(e,t,n,s,r)=>(T(x(x(x(N,e,E),t,E),n,(()=>[])),s),r),Pe=(e,t,n)=>w(F(F(F(A,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...V(Qe(e,t,n))])),_e=e=>C(N)||C(fe[e])?0:L(e?M(N,k):N,((t,n)=>L(t,((t,s)=>L(t,((t,r)=>be(fe[e],[n,s,r],t))))))),Be=(e,t,n)=>{if(!C(t))return be(e,n),1},De=e=>{const t=C(ie[e]),n=C(de[e])&&C(ae[e])&&t&&C(oe[e]),s=C(ue[e])&&C(ce[e])&&C(le[e])&&C(re[e]);if(!n||!s){const o=e?[M(r),k(y),M(g,k),M(A,k)]:[r,y,g,A];if(!n){L(o[2],((t,n)=>L(t,((t,s)=>Be(de[e],t,[n,s])))));const n=G();L(o[1],((s,r)=>{Be(ae[e],s,[r])&&!t&&(be(ie[e],[r,null]),H(n,r))})),t||L(o[3],((t,s)=>{if(!S(n,s)){const n=G();L(t,(e=>L(e,(([t,s],r)=>s!==t?H(n,r):m(e,r))))),L(n,(t=>be(ie[e],[s,t])))}})),Be(oe[e],o[0])}if(!s){let t;L(o[3],((n,s)=>{let r;L(n,((n,o)=>{let l;L(n,(([n,a],i)=>{a!==n&&(be(ue[e],[s,o,i],a,n,Pe),t=r=l=1)})),l&&be(ce[e],[s,o],Pe)})),r&&be(le[e],[s],Pe)})),t&&be(re[e],void 0,Pe)}}},We=(e,...t)=>(Xe((()=>e(...u(t,c)))),et),$e=()=>z(se,(e=>z(e,z))),qe=()=>J(se),Ge=e=>J(F(se,c(e))),He=(e,t,n,s=0,r)=>{const o=[];return O(F(se,c(e)),((e,n)=>T(o,[v(t)?e:F(n,c(t)),e]))),u(h(o.sort((([e],[t])=>(e<t?-1:1)*(n?-1:1))),s,v(r)?r:s+r),(([,e])=>e))},Ke=(e,t)=>J(F(F(se,c(e)),c(t))),Qe=(e,t,n)=>F(F(F(se,c(e)),c(t)),c(n)),Ue=e=>We((()=>(e=>ee(e,ge,Ne))(e)?Ce(e):0)),Ve=()=>We((()=>Ce({}))),Xe=(e,t)=>{if(-1==s)return;Ye();const n=e?.();return Ze(t),n},Ye=()=>(s++,et),Ze=e=>(s>0&&(s--,0==s&&(n=!C(A),s=1,_e(1),n&&De(1),s=-1,e?.(z(A,(e=>z(e,(e=>z(e,(e=>[...e]),(([e,t])=>e===t))),q)),q),z(N,(e=>z(e,z))))&&(s=1,L(A,((e,t)=>L(e,((e,n)=>L(e,(([e],s)=>((e,t,n,s,r)=>v(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(et,t,n,s,e))))))),s=-1,n=!1),be(he[0],void 0,n),_e(0),n&&De(0),be(he[1],void 0,n),s=0,d([A,N,r,y,g],I))),et),et={getTables:$e,getTableIds:qe,getTable:e=>z(F(se,c(e)),z),getRowIds:Ge,getSortedRowIds:He,getRow:(e,t)=>z(F(F(se,c(e)),c(t))),getCellIds:Ke,getCell:Qe,hasTables:()=>!C(se),hasTable:e=>S(se,c(e)),hasRow:(e,t)=>S(F(se,c(e)),c(t)),hasCell:(e,t,n)=>S(F(F(se,c(e)),c(t)),c(n)),getJson:()=>b(se),getSchemaJson:()=>b(P),setTables:Ue,setTable:(e,t)=>We((e=>ge(t,e)?Ie(e,t):0),e),setRow:(e,t,n)=>We(((e,t)=>ve(c(e),c(t),n)?Le(c(e),Fe(c(e)),c(t),n):0),e,t),addRow:(e,t)=>Xe((()=>{let n;return ve(e,n,t)&&(e=c(e),Le(e,Fe(e),n=Je(e),t)),n})),setPartialRow:(e,t,n)=>We(((e,t)=>{if(ve(e,t,n,1)){const s=Fe(e);$(n,((n,r)=>Ee(e,s,t,r,n)))}}),e,t),setCell:(e,n,s,r)=>We(((e,n,s)=>w(we(e,n,s,t(r)==l?r(Qe(e,n,s)):r),(t=>Ee(e,Fe(e),n,s,t)))),e,n,s),setJson:e=>{try{"{}"===e?Ve():Ue(p(e))}catch{}return et},setSchema:t=>We((()=>{if((e=(e=>ee(e,(e=>ee(e,(e=>{if(!ee(e,((e,t)=>[a,i].includes(t))))return!1;const t=e.type;return!(!R(t)&&t!=o||(Y(e.default)!=t&&W(e,i),0))})))))(t))&&(Se(t),!C(se))){const e=$e();Ve(),Ue(e)}})),delTables:Ve,delTable:e=>We((e=>S(se,e)?Oe(e):0),e),delRow:(e,t)=>We(((e,t)=>w(F(se,e),(n=>S(n,t)?je(e,n,t):0))),e,t),delCell:(e,t,n,s)=>We(((e,t,n)=>w(F(se,e),(r=>w(F(r,t),(o=>S(o,n)?xe(e,r,t,o,n,s):0))))),e,t,n),delSchema:()=>We((()=>{Se({}),e=!1})),transaction:Xe,startTransaction:Ye,finishTransaction:Ze,forEachTable:e=>L(se,((t,n)=>e(n,(e=>L(t,((t,n)=>e(n,(e=>O(t,e))))))))),forEachRow:(e,t)=>L(F(se,c(e)),((e,n)=>t(n,(t=>O(e,t))))),forEachCell:(e,t,n)=>O(F(F(se,c(e)),c(t)),n),addSortedRowIdsListener:(e,t,n,s,r,o,l)=>{let a=He(e,t,n,s,r);return Te((()=>{const l=He(e,t,n,s,r);var i,c,d;c=a,f(i=l)===f(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(a=l,o(et,e,t,n,s,r,a))}),ie[l?1:0],[e,t])},addWillFinishTransactionListener:e=>Te(e,he[0]),addDidFinishTransactionListener:e=>Te(e,he[1]),callListener:e=>(ye(e,[qe,Ge,Ke],(e=>v(e[2])?[]:V(Qe(...e)))),et),delListener:e=>(pe(e),et),getListenerStats:()=>({}),createStore:ne};return $({Tables:[0,re],TableIds:[0,oe],Table:[1,le],RowIds:[1,ae],Row:[2,ce],CellIds:[2,de],Cell:[3,ue],InvalidCell:[3,fe]},(([e,t],n)=>{et["add"+n+"Listener"]=(...n)=>Te(n[e],t[n[e+1]?1:0],e>0?h(n,0,e):void 0)})),B(et)};e.createStore=ne,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),o=t(0),l=t(t),a="type",i="default",c=e=>n+e,d=(e,t)=>e.forEach(t),u=(e,t)=>e.map(t),f=e=>e.length,h=(e,t,n)=>e.slice(t,n),T=(e,...t)=>e.push(...t),b=e=>JSON.stringify(e,((e,t)=>{return y(t,Map)?(n=[...t],s=(e,[t,n])=>(e[t]=n,e),r={},n.reduce(s,r)):t;var n,s,r})),g=JSON.parse,p=isFinite,y=(e,t)=>e instanceof t,v=e=>null==e,w=(e,t,n)=>v(e)?n?.():t(e),R=e=>e==s||e==r,S=(e,t)=>e?.has(t)??!1,C=e=>v(e)||0==(e=>e.size)(e),I=e=>e.clear(),L=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),E=e=>new Map(e),J=e=>[...e?.keys()??[]],F=(e,t)=>e?.get(t),x=(e,t)=>L(e,((e,n)=>t(n,e))),z=(e,t,n)=>v(n)?(m(e,t),e):e?.set(t,n),O=(e,t,n)=>(S(e,t)||z(e,t,n()),F(e,t)),j=(e,t,n)=>{const s={},r=t??(e=>e);return L(e,((e,t)=>w(r(e),(e=>n?.(e)?0:s[t]=e)))),s},k=(e,t)=>{const n=E(),s=t??(e=>e);return L(e,((e,t)=>n.set(t,s(e)))),n},A=e=>k(e,k),M=(e,t,n,s,r=0)=>w((n?O:F)(e,t[r],r>f(t)-2?n:E),(o=>{if(r>f(t)-2)return s?.(o)&&z(e,t[r]),o;const l=M(o,t,n,s,r+1);return C(o)&&z(e,t[r]),l})),N=Object,B=N.keys,D=N.isFrozen,P=N.freeze,W=(e,t)=>!v(((e,t)=>w(e,(e=>e[t])))(e,t)),$=(e,t)=>delete e[t],q=(e,t)=>d(N.entries(e),(([e,n])=>t(n,e))),G=e=>{return t=B(e),0==f(t);var t},H=e=>new Set(Array.isArray(e)||v(e)?e:[e]),K=(e,t)=>e?.add(t),Q=/^\d+$/,U=()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{Q.test(t)&&f(e)<1e3&&T(e,t)}]},V=e=>{let t;const[s,r]=U(),o=E();return[(r,l,a)=>{t??=e();const i=s();return z(o,i,[r,l,a]),K(M(l,a??[n],H),i),i},(e,s,...r)=>d(((e,t=[n])=>{const s=[],r=(e,n)=>n==f(t)?T(s,e):null===t[n]?L(e,(e=>r(e,n+1))):d([t[n],null],(t=>r(F(e,t),n+1)));return r(e,0),s})(e,s),(e=>L(e,(e=>F(o,e)[0](t,...s??[],...r))))),e=>w(F(o,e),(([,t,s])=>(M(t,s??[n],void 0,(t=>(m(t,e),C(t)?1:0))),z(o,e),r(e),s))),(e,n,s)=>w(F(o,e),(([e,,r=[]])=>{const o=(...l)=>{const a=f(l);a==f(r)?e(t,...l,...s(l)):v(r[a])?d(n[a](...l),(e=>o(...l,e))):o(...l,r[a])};o()}))]},X=e=>[e,e],Y=()=>[E(),E()],Z=e=>{const n=t(e);return R(n)||n==o&&p(e)?n:void 0},_=(e,t,n,s=z)=>{const r=(o=J(e),l=e=>!W(t,e),o.filter(l));var o,l;return d(B(t),(s=>n(e,s,t[s]))),d(r,(t=>s(e,t))),e},ee=(e,t,n)=>v(e)||!(e=>y(e,N)&&e.constructor==N)(e)||G(e)||D(e)?(n?.(),!1):(q(e,((n,s)=>{t(n,s)||$(e,s)})),!G(e)),te=(e,t,n)=>z(e,t,F(e,t)==-n?void 0:n),ne=()=>{let e,n,s=0;const r=E(),p=E(),y=E(),M=E(),N=E(),B=E(),D=E(),Q=E(),se=E(),re=Y(),oe=Y(),le=Y(),ae=Y(),ie=Y(),ce=Y(),de=Y(),ue=Y(),fe=Y(),he=Y(),[Te,be,ge,pe]=V((()=>et)),ye=(t,n)=>(!e||S(B,n)||Ne(n))&&ee(t,((e,t)=>ve(n,t,e)),(()=>Ne(n))),ve=(e,t,n,s)=>ee(s?n:Re(n,e,t),((s,r)=>w(we(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Ne(e,t))),we=(t,n,s,r)=>e?w(F(F(B,t),s),(e=>Z(r)!=e.type?Ne(t,n,s,r,e.default):r),(()=>Ne(t,n,s,r))):v(Z(r))?Ne(t,n,s,r):r,Re=(e,t,n)=>(w(F(D,t),(([s,r])=>{L(s,((t,n)=>{W(e,n)||(e[n]=t)})),L(r,(s=>{W(e,s)||Ne(t,n,s)}))})),e),Se=e=>_(B,e,((e,t,n)=>{const s=E(),r=H();_(O(B,t,E),n,((e,t,n)=>{z(e,t,n),w(n.default,(e=>z(s,t,e)),(()=>K(r,t)))})),z(D,t,[s,r])}),((e,t)=>{z(B,t),z(D,t)})),Ce=e=>_(se,e,((e,t,n)=>Ie(t,n)),((e,t)=>xe(t))),Ie=(e,t)=>_(O(se,e,(()=>(je(e,1),E()))),t,((t,n,s)=>Le(e,t,n,s)),((t,n)=>ze(e,t,n))),Le=(e,t,n,s,r)=>_(O(t,n,(()=>(ke(e,n,1),E()))),s,((t,s,r)=>me(e,n,t,s,r)),((s,o)=>Oe(e,t,n,s,o,r))),me=(e,t,n,s,r)=>{S(n,s)||Ae(e,t,s,1);const o=F(n,s);r!==o&&(Me(e,t,s,o,r),z(n,s,r))},Ee=(e,t,n,s,r)=>w(F(t,n),(t=>me(e,n,t,s,r)),(()=>Le(e,t,n,Re({[s]:r},e,n)))),Je=e=>{const[t]=O(Q,e,U),n=t();return S(F(se,e),n)?Je(e):n},Fe=e=>F(se,e)??Ie(e,{}),xe=e=>Ie(e,{}),ze=(e,t,n)=>{const[,s]=O(Q,e,U);s(n),Le(e,t,n,{},!0)},Oe=(e,t,n,s,r,o)=>{const l=F(F(D,e)?.[0],r);if(!v(l)&&!o)return me(e,n,s,r,l);const a=t=>{Me(e,n,t,F(s,t)),Ae(e,n,t,-1),z(s,t)};v(l)?a(r):x(s,a),C(s)&&(ke(e,n,-1),C(z(t,n))&&(je(e,-1),z(se,e),z(Q,e)))},je=(e,t)=>te(r,e,t),ke=(e,t,n)=>te(O(p,e,E),t,n),Ae=(e,t,n,s)=>te(O(O(y,e,E),t,E),n,s),Me=(e,t,n,s,r)=>O(O(O(M,e,E),t,E),n,(()=>[s,0]))[1]=r,Ne=(e,t,n,s,r)=>(T(O(O(O(N,e,E),t,E),n,(()=>[])),s),r),Be=(e,t,n)=>w(F(F(F(M,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...X(Ue(e,t,n))])),De=e=>C(N)||C(fe[e])?0:L(e?k(N,A):N,((t,n)=>L(t,((t,s)=>L(t,((t,r)=>be(fe[e],[n,s,r],t))))))),Pe=(e,t,n)=>{if(!C(t))return be(e,n),1},We=e=>{const t=C(ie[e]),n=C(de[e])&&C(ae[e])&&t&&C(oe[e]),s=C(ue[e])&&C(ce[e])&&C(le[e])&&C(re[e]);if(!n||!s){const o=e?[k(r),A(p),k(y,A),k(M,A)]:[r,p,y,M];if(!n){L(o[2],((t,n)=>L(t,((t,s)=>Pe(de[e],t,[n,s])))));const n=H();L(o[1],((s,r)=>{Pe(ae[e],s,[r])&&!t&&(be(ie[e],[r,null]),K(n,r))})),t||L(o[3],((t,s)=>{if(!S(n,s)){const n=H();L(t,(e=>L(e,(([t,s],r)=>s!==t?K(n,r):m(e,r))))),L(n,(t=>be(ie[e],[s,t])))}})),Pe(oe[e],o[0])}if(!s){let t;L(o[3],((n,s)=>{let r;L(n,((n,o)=>{let l;L(n,(([n,a],i)=>{a!==n&&(be(ue[e],[s,o,i],a,n,Be),t=r=l=1)})),l&&be(ce[e],[s,o],Be)})),r&&be(le[e],[s],Be)})),t&&be(re[e],void 0,Be)}}},$e=(e,...t)=>(Ye((()=>e(...u(t,c)))),et),qe=()=>j(se,(e=>j(e,j))),Ge=()=>J(se),He=e=>J(F(se,c(e))),Ke=(e,t,n,s=0,r)=>{return u(h((a=F(se,c(e)),i=(e,n)=>[v(t)?n:F(e,c(t)),n],o=u([...a?.entries()??[]],(([e,t])=>i(t,e))),l=([e],[t])=>(e<t?-1:1)*(n?-1:1),o.sort(l)),s,v(r)?r:s+r),(([,e])=>e));var o,l,a,i},Qe=(e,t)=>J(F(F(se,c(e)),c(t))),Ue=(e,t,n)=>F(F(F(se,c(e)),c(t)),c(n)),Ve=e=>$e((()=>(e=>ee(e,ye,Ne))(e)?Ce(e):0)),Xe=()=>$e((()=>Ce({}))),Ye=(e,t)=>{if(-1==s)return;Ze();const n=e();return _e(t),n},Ze=()=>(s++,et),_e=e=>(s>0&&(s--,0==s&&(n=!C(M),s=1,De(1),n&&We(1),s=-1,e?.(j(M,(e=>j(e,(e=>j(e,(e=>[...e]),(([e,t])=>e===t))),G)),G),j(N,(e=>j(e,j))))&&(s=1,L(M,((e,t)=>L(e,((e,n)=>L(e,(([e],s)=>((e,t,n,s,r)=>v(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(et,t,n,s,e))))))),s=-1,n=!1),be(he[0],void 0,n),De(0),n&&We(0),be(he[1],void 0,n),s=0,d([M,N,r,p,y],I))),et),et={getTables:qe,getTableIds:Ge,getTable:e=>j(F(se,c(e)),j),getRowIds:He,getSortedRowIds:Ke,getRow:(e,t)=>j(F(F(se,c(e)),c(t))),getCellIds:Qe,getCell:Ue,hasTables:()=>!C(se),hasTable:e=>S(se,c(e)),hasRow:(e,t)=>S(F(se,c(e)),c(t)),hasCell:(e,t,n)=>S(F(F(se,c(e)),c(t)),c(n)),getJson:()=>b(se),getSchemaJson:()=>b(B),setTables:Ve,setTable:(e,t)=>$e((e=>ye(t,e)?Ie(e,t):0),e),setRow:(e,t,n)=>$e(((e,t)=>ve(c(e),c(t),n)?Le(c(e),Fe(c(e)),c(t),n):0),e,t),addRow:(e,t)=>Ye((()=>{let n;return ve(e,n,t)&&(e=c(e),Le(e,Fe(e),n=Je(e),t)),n})),setPartialRow:(e,t,n)=>$e(((e,t)=>{if(ve(e,t,n,1)){const s=Fe(e);q(n,((n,r)=>Ee(e,s,t,r,n)))}}),e,t),setCell:(e,n,s,r)=>$e(((e,n,s)=>w(we(e,n,s,t(r)==l?r(Ue(e,n,s)):r),(t=>Ee(e,Fe(e),n,s,t)))),e,n,s),setJson:e=>{try{"{}"===e?Xe():Ve(g(e))}catch{}return et},setSchema:t=>$e((()=>{if((e=(e=>ee(e,(e=>ee(e,(e=>{if(!ee(e,((e,t)=>[a,i].includes(t))))return!1;const t=e.type;return!(!R(t)&&t!=o||(Z(e.default)!=t&&$(e,i),0))})))))(t))&&(Se(t),!C(se))){const e=qe();Xe(),Ve(e)}})),delTables:Xe,delTable:e=>$e((e=>S(se,e)?xe(e):0),e),delRow:(e,t)=>$e(((e,t)=>w(F(se,e),(n=>S(n,t)?ze(e,n,t):0))),e,t),delCell:(e,t,n,s)=>$e(((e,t,n)=>w(F(se,e),(r=>w(F(r,t),(o=>S(o,n)?Oe(e,r,t,o,n,s):0))))),e,t,n),delSchema:()=>$e((()=>{Se({}),e=!1})),transaction:Ye,startTransaction:Ze,finishTransaction:_e,forEachTable:e=>L(se,((t,n)=>e(n,(e=>L(t,((t,n)=>e(n,(e=>x(t,e))))))))),forEachRow:(e,t)=>L(F(se,c(e)),((e,n)=>t(n,(t=>x(e,t))))),forEachCell:(e,t,n)=>x(F(F(se,c(e)),c(t)),n),addSortedRowIdsListener:(e,t,n,s,r,o,l)=>{let a=Ke(e,t,n,s,r);return Te((()=>{const l=Ke(e,t,n,s,r);var i,c,d;c=a,f(i=l)===f(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(a=l,o(et,e,t,n,s,r,a))}),ie[l?1:0],[e,t])},addWillFinishTransactionListener:e=>Te(e,he[0]),addDidFinishTransactionListener:e=>Te(e,he[1]),callListener:e=>(pe(e,[Ge,He,Qe],(e=>v(e[2])?[]:X(Ue(...e)))),et),delListener:e=>(ge(e),et),getListenerStats:()=>({}),createStore:ne};return q({Tables:[0,re],TableIds:[0,oe],Table:[1,le],RowIds:[1,ae],Row:[2,ce],CellIds:[2,de],Cell:[3,ue],InvalidCell:[3,fe]},(([e,t],n)=>{et["add"+n+"Listener"]=(...n)=>Te(n[e],t[n[e+1]?1:0],e>0?h(n,0,e):void 0)})),P(et)};e.createStore=ne},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),l="type",c="default",d="utf8",u="Listener",f="Result",h="add",g="Table",w="RowIds",L="CellIds",p="Cell",R=e=>n+e,v=(e,t)=>e.includes(t),y=(e,t)=>e.every(t),I=(e,t)=>E(e)===E(t)&&y(e,((e,s)=>t[s]===e)),S=(e,t)=>y(e,((s,n)=>0==n||t(e[n-1],s)<=0)),T=(e,t)=>e.sort(t),b=(e,t)=>e.forEach(t),C=(e,t)=>e.map(t),m=e=>M(e,((e,t)=>e+t),0),E=e=>e.length,k=e=>0==E(e),M=(e,t,s)=>e.reduce(t,s),x=(e,t,s)=>e.slice(t,s),A=(e,...t)=>e.push(...t),D=e=>e.pop(),F=e=>e.shift(),P=e=>JSON.stringify(e,((e,t)=>z(t,Map)?M([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),J=JSON.parse,Q=Math.max,j=Math.min,O=isFinite,z=(e,t)=>e instanceof t,N=e=>null==e,W=(e,t,s)=>N(e)?s?.():t(e),B=e=>e==o||e==r,_=e=>s(e)==i,q=e=>Array.isArray(e),H=()=>{},$=e=>e.size,G=(e,t)=>e?.has(t)??!1,K=e=>N(e)||0==$(e),U=e=>[...e?.values()??[]],V=e=>e.clear(),X=(e,t)=>e?.forEach(t),Y=(e,t)=>e?.delete(t),Z=e=>new Map(e),ee=e=>[...e?.keys()??[]],te=(e,t)=>e?.get(t),se=(e,t)=>X(e,((e,s)=>t(s,e))),ne=(e,t,s)=>N(s)?(Y(e,t),e):e?.set(t,s),oe=(e,t,s)=>(G(e,t)||ne(e,t,s()),te(e,t)),re=(e,t,s)=>{const n={},o=t??(e=>e);return X(e,((e,t)=>W(o(e),(e=>s?.(e)?0:n[t]=e)))),n},ae=(e,t)=>{const s=Z(),n=t??(e=>e);return X(e,((e,t)=>s.set(t,n(e)))),s},ie=e=>ae(e,ae),le=(e,t,s,n,o=0)=>W((s?oe:te)(e,t[o],o>E(t)-2?s:Z),(r=>{if(o>E(t)-2)return n?.(r)&&ne(e,t[o]),r;const a=le(r,t,s,n,o+1);return K(r)&&ne(e,t[o]),a})),ce=e=>new Set(q(e)||N(e)?e:[e]),de=(e,t)=>e?.add(t),ue=(e,t,s)=>{const n=e.hasRow,o=Z(),r=Z(),a=Z(),i=Z(),l=Z(),c=(t,s,...n)=>{const o=oe(l,t,ce);return b(n,(t=>de(o,t)&&s&&e.callListener(t))),n},d=(t,...s)=>W(te(l,t),(n=>{b(k(s)?U(n):s,(t=>{e.delListener(t),Y(n,t)})),K(n)&&ne(l,t)})),u=(e,s)=>{ne(o,e,s),G(r,e)||(ne(r,e,t()),ne(a,e,Z()),ne(i,e,Z()))},f=e=>{ne(o,e),ne(r,e),ne(a,e),ne(i,e),d(e)};return[()=>e,()=>ee(o),e=>se(r,e),e=>G(r,e),e=>te(o,e),e=>te(r,e),(e,t)=>ne(r,e,t),u,(t,o,r,l,f)=>{u(t,o);const h=Z(),g=Z(),w=te(a,t),L=te(i,t),p=t=>{const r=s=>e.getCell(o,t,s),a=te(w,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||q(a)&&q(i)&&I(a,i)||ne(h,t,[a,i]),!N(f)){const e=te(L,t),s=n(o,t)?f(r,t):void 0;e!=s&&ne(g,t,s)}},R=e=>{r((()=>{X(h,(([,e],t)=>ne(w,t,e))),X(g,((e,t)=>ne(L,t,e)))}),h,g,w,L,e),V(h),V(g)};se(w,p),e.hasTable(o)&&b(e.getRowIds(o),(e=>{G(w,e)||p(e)})),R(!0),d(t),c(t,0,e.addRowListener(o,null,((e,t,s)=>p(s))),e.addTableListener(o,(()=>R())))},f,()=>se(l,f),c,d]},fe=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),he=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ge=/^\d+$/,we=()=>{const e=[];let t=0;return[()=>F(e)??n+t++,t=>{ge.test(t)&&E(e)<1e3&&A(e,t)}]},Le=e=>{let t;const[s,o]=we(),r=Z();return[(o,a,i)=>{t??=e();const l=s();return ne(r,l,[o,a,i]),de(le(a,i??[n],ce),l),l},(e,s,...o)=>b(((e,t=[n])=>{const s=[],o=(e,n)=>n==E(t)?A(s,e):null===t[n]?X(e,(e=>o(e,n+1))):b([t[n],null],(t=>o(te(e,t),n+1)));return o(e,0),s})(e,s),(e=>X(e,(e=>te(r,e)[0](t,...s??[],...o))))),e=>W(te(r,e),(([,t,s])=>(le(t,s??[n],void 0,(t=>(Y(t,e),K(t)?1:0))),ne(r,e),o(e),s))),(e,s,n)=>W(te(r,e),(([e,,o=[]])=>{const r=(...a)=>{const i=E(a);i==E(o)?e(t,...a,...n(a)):N(o[i])?b(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},pe=Object,Re=pe.keys,ve=pe.isFrozen,ye=pe.freeze,Ie=(e,t)=>!N(((e,t)=>W(e,(e=>e[t])))(e,t)),Se=(e,t)=>delete e[t],Te=(e,t)=>b(pe.entries(e),(([e,s])=>t(s,e))),be=e=>k(Re(e)),Ce=e=>{const t=s(e);return B(t)||t==a&&O(e)?t:void 0},me=(e,t,s,n,o)=>N(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Ee=he((e=>{let t,s,o,r=100,a=Z(),i=1;const l=Z(),c=Z(),[d,u,f]=Le((()=>Q)),h=Z(),g=Z(),w=[],L=[],p=(t,s)=>{i=0,e.transaction((()=>X(te(h,s),((s,n)=>X(s,((s,o)=>X(s,((s,r)=>me(e,n,o,r,s[t]))))))))),i=1},R=e=>{ne(h,e),ne(g,e),u(c,[e])},y=(e,t)=>b(((e,t)=>e.splice(0,t))(e,t??E(e)),R),I=()=>y(w,E(w)-r),S=e.addCellListener(null,null,null,((e,s,n,r,l,c)=>{if(i){W(t,(()=>{A(w,t),I(),y(L),t=void 0,o=1}));const e=oe(a,s,Z),i=oe(e,n,Z),d=oe(i,r,(()=>[c,void 0]));d[1]=l,d[0]===l&&K(ne(i,r))&&K(ne(e,n))&&K(ne(a,s))&&(t=D(w),o=1),M()}})),T=(e="")=>(N(t)&&(t=n+s++,ne(h,t,a),P(t,e),a=Z(),o=1),t),C=()=>{k(w)||(L.unshift(T()),p(0,t),t=D(w),o=1)},m=()=>{k(L)||(A(w,t),t=F(L),p(1,t),o=1)},M=()=>{o&&(u(l),o=0)},x=e=>{const t=T(e);return M(),t},P=(e,t)=>(J(e)&&te(g,e)!==t&&(ne(g,e,t),u(c,[e])),Q),J=e=>G(h,e),Q={setSize:e=>(r=e,I(),Q),addCheckpoint:x,setCheckpoint:P,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...L]],forEachCheckpoint:e=>se(g,e),hasCheckpoint:J,getCheckpoint:e=>te(g,e),goBackward:()=>(C(),M(),Q),goForward:()=>(m(),M(),Q),goTo:e=>{const s=v(w,e)?C:v(L,e)?m:null;for(;!N(s)&&e!=t;)s();return M(),Q},addCheckpointIdsListener:e=>d(e,l),addCheckpointListener:(e,t)=>d(t,c,[e]),delListener:e=>(f(e),Q),clear:()=>(y(w),y(L),N(t)||R(t),t=void 0,s=0,x(),Q),destroy:()=>{e.delListener(S)},getListenerStats:()=>({})};return ye(Q.clear())})),ke=(e,t)=>e<t?-1:1,Me=he((e=>{const t=Z(),s=Z(),[o,r,a,i,l,c,d,,u,f,h]=ue(e,Z,(e=>N(e)?n:q(e)?C(e,R):R(e))),[g,w,L]=Le((()=>v)),p=(t,s,n)=>{const o=l(t);X(n,((t,n)=>s(n,(s=>X(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},v={setIndexDefinition:(e,n,o,r,a,i=ke)=>{const l=N(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,h)=>{let g=0;const L=ce(),p=ce(),R=c(e);if(X(o,(([e,t],s)=>{const n=ce(e),o=ce(t);X(n,(e=>Y(o,e)?Y(n,e):0)),X(n,(e=>{de(L,e),W(te(R,e),(t=>{Y(t,s),K(t)&&(ne(R,e),g=1)}))})),X(o,(e=>{de(L,e),G(R,e)||(ne(R,e,ce()),g=1),de(te(R,e),s),N(r)||de(p,e)}))})),n(),K(f)||(h?se(R,(e=>de(p,e))):se(a,(e=>W(te(u,e),(e=>de(p,e))))),X(p,(e=>{const t=(t,s)=>i(te(f,t),te(f,s),e),s=[...te(R,e)];S(s,t)||(ne(R,e,ce(T(s,t))),de(L,e))}))),(g||h)&&!N(l)){const t=[...R];S(t,l)||(d(e,Z(T(t,l))),g=1)}g&&w(t,[e]),X(L,(t=>w(s,[e,t])))}),fe(o),W(r,fe)),v},delIndexDefinition:e=>(f(e),v),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,c(e)),hasIndex:i,hasSlice:(e,t)=>G(c(e),t),getTableId:l,getSliceIds:e=>ee(c(e)),getSliceRowIds:(e,t)=>U(te(c(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>g(n,s,[e,t]),delListener:e=>(L(e),v),destroy:h,getListenerStats:()=>({})};return ye(v)})),xe=Z([["avg",[(e,t)=>m(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>Q(...e),(e,t)=>Q(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:Q(t,e)]],["min",[e=>j(...e),(e,t)=>j(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:j(t,e)]],["sum",[e=>m(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Ae=(e,t,s,n,o,r=!1)=>{if(K(s))return;const[a,i,l,c]=o;return r||=N(e),X(n,(([s,n])=>{r||(e=N(s)?i?.(e,n,t++):N(n)?l?.(e,s,t--):c?.(e,n,s,t),r||=N(e))})),r?a(U(s),$(s)):e},De=he((e=>{const t=Z(),[s,o,r,a,i,l,c,,d,u,f]=ue(e,H,(e=>isNaN(e)||N(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,w]=Le((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=_(n)?[n,r,a,i]:te(xe,n)??te(xe,"sum");return d(e,s,((s,n,o,r,a,i)=>{const d=l(e),f=$(r);i||=N(d),s();let h=Ae(d,f,r,n,u,i);O(h)||(h=void 0),h!=d&&(c(e,h),g(t,[e],h,d))}),fe(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:l,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(w(e),L),destroy:f,getListenerStats:()=>({})};return ye(L)})),Fe=(e,t,s,o,r)=>{let a,i=0;const l={load:async s=>{if(2!=i){i=1;const o=await t();N(o)||o==n?e.setTables(s):e.setJson(o),i=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),o(l.load),l),stopAutoLoad:()=>(r(),l),save:async()=>(1!=i&&(i=2,await s(e.getJson()),i=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),a=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(W(a,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ye(l)},Pe="storage",Je=globalThis.window,Qe=(e,t,s)=>{let n;return Fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Je.addEventListener(Pe,n)}),(()=>{Je.removeEventListener(Pe,n),n=void 0}))},je=e=>e.headers.get("ETag"),Oe=he((e=>{const t=e.createStore,[s,o,r,a,i,,,l,,c,d,R,v]=ue(e,(()=>!0),H),I=t(),S=t(),T=Z(),C=(e,t,...s)=>b(s,(s=>de(oe(oe(T,t,Z),e,ce),s))),m=e=>{W(te(T,e),(e=>{se(e,((e,t)=>X(t,(t=>e.delListener(t))))),V(e)})),b([S,I],(t=>t.delTable(e)))},M=(e,t,s)=>C(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),D={setQueryDefinition:(t,s,o)=>{l(t,s),m(t);const r=[],a=[[null,[s,null,null,[],Z()]]],i=[],c=[],d=[];o({select:(e,t)=>{const s=_(e)?[E(r)+n,e]:[N(t)?e:t,s=>s(e,t)];return A(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=N(s)||_(t)?null:t,o=N(n)?t:s,r=[e,[e,n,_(o)?o:e=>e(o),[],Z()]];return A(a,r),{as:e=>r[0]=e}},where:(e,t,s)=>A(i,_(e)?e:N(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,_(t)?[t,s,n,o]:te(xe,t)??[(e,t)=>t]]];return A(c,r),{as:e=>r[0]=e}},having:(e,t)=>A(d,_(e)?e:s=>s(e)===t)});const u=Z(r);if(K(u))return D;const f=Z(a);se(f,((e,[,t])=>W(te(f,t),(({3:t})=>N(e)?0:A(t,e)))));const h=Z(c);let g=I;if(K(h)&&k(d))g=S;else{M(t,g,S);const e=Z();se(h,((t,[s,n])=>de(oe(e,s,ce),[t,n])));const s=ce();se(u,(t=>G(e,t)?0:de(s,t)));const n=Z(),o=(s,n,o,r)=>W(s,(([a,i,l,c])=>{se(n,((t,[s])=>{const n=oe(a,t,Z),i=te(n,o),l=r?void 0:s;if(i!==l){const s=ce([[i,l]]),r=$(n);ne(n,o,l),X(te(e,t),(([e,t])=>{const o=Ae(c[e],r,n,s,t);c[e]=N(Ce(o))?null:o}))}})),K(i)||!y(d,(e=>e((e=>c[e]))))?S.delRow(t,l):N(l)?s[2]=S.addRow(t,c):S.setRow(t,l,c)}));C(g,t,g.addRowListener(t,null,((r,a,i,l)=>{const c=[],d=[],u=Z(),f=g.hasRow(t,i);let h=!f;X(s,(e=>{const[s,n,o]=l(t,i,e);A(c,n),A(d,o),h||=s})),se(e,(e=>{const[s,,n]=l(t,i,e);(h||s)&&ne(u,e,[n])})),h&&o(le(n,c,void 0,(([,e])=>(Y(e,i),K(e)))),u,i,1),f&&o(le(n,d,(()=>{const e={};return X(s,(s=>e[s]=g.getCell(t,i,s))),[Z(),ce(),void 0,e]}),(([,e])=>{de(e,i)})),u,i)})))}M(t,e,g);const w=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);b(a,(s=>{const[o,,r,a,i]=te(f,s),c=r?.(l,n),[d,u]=te(i,n)??[];c!=d&&(N(u)||v(t,u),ne(i,n,N(c)?null:[c,...R(t,1,e.addRowListener(o,c,(()=>w(n,o,c,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...N(o)?[s,n,t]:t===s?[s,n,o]:[te(f,t)?.[0],te(te(f,t)?.[4],n)?.[0],o]);g.transaction((()=>y(i,(e=>e(o)))?se(u,((e,s)=>me(g,t,n,e,s(o,n)))):g.delRow(t,n)))})(n)},{3:L}=te(f,null);return g.transaction((()=>R(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?w(r,s,r,L):(g.delRow(t,r),X(f,(({4:e})=>W(te(e,r),(([,s])=>{v(t,s),ne(e,r)})))))}))))),D},delQueryDefinition:e=>(m(e),c(e),D),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:i,delListener:e=>(S.delListener(e),D),destroy:d,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=S.getListenerStats();return n}};return Te({[g]:[1,1],[w]:[0,1],SortedRowIds:[0,5],Row:[1,2],[L]:[0,2],[p]:[1,3]},(([e,t],s)=>{b(e?["get","has","forEach"]:["get"],(e=>D[e+f+s]=(...t)=>S[e+s](...t))),D[h+f+s+u]=(...e)=>S[h+s+u](...x(e,0,t),((s,...n)=>e[t](D,...n)))})),ye(D)})),ze=he((e=>{const t=Z(),s=Z(),o=Z(),r=Z(),[a,i,l,c,d,u,,,f,h,g]=ue(e,(()=>[Z(),Z(),Z(),Z()]),(e=>N(e)?void 0:e+n)),[w,L,p]=Le((()=>I)),R=(e,t,s)=>W(u(e),(([n,,o])=>{if(!G(o,t)){const r=ce();if(d(e)!=y(e))de(r,t);else{let e=t;for(;!N(e)&&!G(r,e);)de(r,e),e=te(n,e)}if(s)return r;ne(o,t,r)}return te(o,t)})),v=(e,t)=>W(u(e),(([,,e])=>ne(e,t))),y=e=>te(t,e),I={setRelationshipDefinition:(e,n,a,i)=>(ne(t,e,a),f(e,n,((t,n)=>{const a=ce(),i=ce(),l=ce(),[c,d]=u(e);X(n,(([t,s],n)=>{N(t)||(de(i,t),W(te(d,t),(e=>{Y(e,n),K(e)&&ne(d,t)}))),N(s)||(de(i,s),G(d,s)||ne(d,s,ce()),de(te(d,s),n)),de(a,n),ne(c,n,s),se(te(r,e),(t=>{G(R(e,t),n)&&de(l,t)}))})),t(),X(a,(t=>L(s,[e,t]))),X(i,(t=>L(o,[e,t]))),X(l,(t=>{v(e,t),L(r,[e,t])}))}),fe(i)),I),delRelationshipDefinition:e=>(ne(t,e),h(e),I),getStore:a,getRelationshipIds:i,forEachRelationship:t=>l((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:c,getLocalTableId:d,getRemoteTableId:y,getRemoteRowId:(e,t)=>te(u(e)?.[0],t),getLocalRowIds:(e,t)=>U(te(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>N(u(e))?[t]:U(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>w(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>w(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),w(s,r,[e,t])),delListener:e=>(v(...p(e)),I),destroy:g,getListenerStats:()=>({})};return ye(I)})),Ne=e=>[e,e],We=()=>[Z(),Z()],Be=(e,t,s,n=ne)=>{const o=(r=ee(e),a=e=>!Ie(t,e),r.filter(a));var r,a;return b(Re(t),(n=>s(e,n,t[n]))),b(o,(t=>n(e,t))),e},_e=(e,t,s)=>N(e)||!(e=>z(e,pe)&&e.constructor==pe)(e)||be(e)||ve(e)?(s?.(),!1):(Te(e,((s,n)=>{t(s,n)||Se(e,n)})),!be(e)),qe=(e,t,s)=>ne(e,t,te(e,t)==-s?void 0:s),He=()=>{let e,t,s=0;const n=Z(),o=Z(),r=Z(),i=Z(),d=Z(),f=Z(),y=Z(),S=Z(),m=Z(),E=We(),k=We(),M=We(),D=We(),F=We(),Q=We(),j=We(),O=We(),z=We(),q=We(),[H,$,U,le]=Le((()=>ct)),ue=(t,s)=>(!e||G(f,s)||$e(s))&&_e(t,((e,t)=>fe(s,t,e)),(()=>$e(s))),fe=(e,t,s,n)=>_e(n?s:ge(s,e,t),((n,o)=>W(he(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>$e(e,t))),he=(t,s,n,o)=>e?W(te(te(f,t),n),(e=>Ce(o)!=e.type?$e(t,s,n,o,e.default):o),(()=>$e(t,s,n,o))):N(Ce(o))?$e(t,s,n,o):o,ge=(e,t,s)=>(W(te(y,t),(([n,o])=>{X(n,((t,s)=>{Ie(e,s)||(e[s]=t)})),X(o,(n=>{Ie(e,n)||$e(t,s,n)}))})),e),pe=e=>Be(f,e,((e,t,s)=>{const n=Z(),o=ce();Be(oe(f,t,Z),s,((e,t,s)=>{ne(e,t,s),W(s.default,(e=>ne(n,t,e)),(()=>de(o,t)))})),ne(y,t,[n,o])}),((e,t)=>{ne(f,t),ne(y,t)})),Re=e=>Be(m,e,((e,t,s)=>ve(t,s)),((e,t)=>Fe(t))),ve=(e,t)=>Be(oe(m,e,(()=>(Qe(e,1),Z()))),t,((t,s,n)=>Ee(e,t,s,n)),((t,s)=>Pe(e,t,s))),Ee=(e,t,s,n,o)=>Be(oe(t,s,(()=>(je(e,s,1),Z()))),n,((t,n,o)=>Me(e,s,t,n,o)),((n,r)=>Je(e,t,s,n,r,o))),Me=(e,t,s,n,o)=>{G(s,n)||Oe(e,t,n,1);const r=te(s,n);o!==r&&(ze(e,t,n,r,o),ne(s,n,o))},xe=(e,t,s,n,o)=>W(te(t,s),(t=>Me(e,s,t,n,o)),(()=>Ee(e,t,s,ge({[n]:o},e,s)))),Ae=e=>{const[t]=oe(S,e,we),s=t();return G(te(m,e),s)?Ae(e):s},De=e=>te(m,e)??ve(e,{}),Fe=e=>ve(e,{}),Pe=(e,t,s)=>{const[,n]=oe(S,e,we);n(s),Ee(e,t,s,{},!0)},Je=(e,t,s,n,o,r)=>{const a=te(te(y,e)?.[0],o);if(!N(a)&&!r)return Me(e,s,n,o,a);const i=t=>{ze(e,s,t,te(n,t)),Oe(e,s,t,-1),ne(n,t)};N(a)?i(o):se(n,i),K(n)&&(je(e,s,-1),K(ne(t,s))&&(Qe(e,-1),ne(m,e)))},Qe=(e,t)=>qe(n,e,t),je=(e,t,s)=>qe(oe(o,e,Z),t,s),Oe=(e,t,s,n)=>qe(oe(oe(r,e,Z),t,Z),s,n),ze=(e,t,s,n,o)=>oe(oe(oe(i,e,Z),t,Z),s,(()=>[n,0]))[1]=o,$e=(e,t,s,n,o)=>(A(oe(oe(oe(d,e,Z),t,Z),s,(()=>[])),n),o),Ge=(e,t,s)=>W(te(te(te(i,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Ne(nt(e,t,s))])),Ke=e=>K(d)||K(z[e])?0:X(e?ae(d,ie):d,((t,s)=>X(t,((t,n)=>X(t,((t,o)=>$(z[e],[s,n,o],t))))))),Ue=(e,t,s)=>{if(!K(t))return $(e,s),1},Ve=e=>{const t=K(F[e]),s=K(j[e])&&K(D[e])&&t&&K(k[e]),a=K(O[e])&&K(Q[e])&&K(M[e])&&K(E[e]);if(!s||!a){const l=e?[ae(n),ie(o),ae(r,ie),ae(i,ie)]:[n,o,r,i];if(!s){X(l[2],((t,s)=>X(t,((t,n)=>Ue(j[e],t,[s,n])))));const s=ce();X(l[1],((n,o)=>{Ue(D[e],n,[o])&&!t&&($(F[e],[o,null]),de(s,o))})),t||X(l[3],((t,n)=>{if(!G(s,n)){const s=ce();X(t,(e=>X(e,(([t,n],o)=>n!==t?de(s,o):Y(e,o))))),X(s,(t=>$(F[e],[n,t])))}})),Ue(k[e],l[0])}if(!a){let t;X(l[3],((s,n)=>{let o;X(s,((s,r)=>{let a;X(s,(([s,i],l)=>{i!==s&&($(O[e],[n,r,l],i,s,Ge),t=o=a=1)})),a&&$(Q[e],[n,r],Ge)})),o&&$(M[e],[n],Ge)})),t&&$(E[e],void 0,Ge)}}},Xe=(e,...t)=>(at((()=>e(...C(t,R)))),ct),Ye=()=>re(m,(e=>re(e,re))),Ze=()=>ee(m),et=e=>ee(te(m,R(e))),tt=(e,t,s,n=0,o)=>{const r=[];return se(te(m,R(e)),((e,s)=>A(r,[N(t)?e:te(s,R(t)),e]))),C(x(T(r,(([e],[t])=>ke(e,t)*(s?-1:1))),n,N(o)?o:n+o),(([,e])=>e))},st=(e,t)=>ee(te(te(m,R(e)),R(t))),nt=(e,t,s)=>te(te(te(m,R(e)),R(t)),R(s)),ot=e=>Xe((()=>(e=>_e(e,ue,$e))(e)?Re(e):0)),rt=()=>Xe((()=>Re({}))),at=(e,t)=>{if(-1==s)return;it();const n=e?.();return lt(t),n},it=()=>(s++,ct),lt=e=>(s>0&&(s--,0==s&&(t=!K(i),s=1,Ke(1),t&&Ve(1),s=-1,e?.(re(i,(e=>re(e,(e=>re(e,(e=>[...e]),(([e,t])=>e===t))),be)),be),re(d,(e=>re(e,re))))&&(s=1,X(i,((e,t)=>X(e,((e,s)=>X(e,(([e],n)=>me(ct,t,s,n,e))))))),s=-1,t=!1),$(q[0],void 0,t),Ke(0),t&&Ve(0),$(q[1],void 0,t),s=0,b([i,d,n,o,r],V))),ct),ct={getTables:Ye,getTableIds:Ze,getTable:e=>re(te(m,R(e)),re),getRowIds:et,getSortedRowIds:tt,getRow:(e,t)=>re(te(te(m,R(e)),R(t))),getCellIds:st,getCell:nt,hasTables:()=>!K(m),hasTable:e=>G(m,R(e)),hasRow:(e,t)=>G(te(m,R(e)),R(t)),hasCell:(e,t,s)=>G(te(te(m,R(e)),R(t)),R(s)),getJson:()=>P(m),getSchemaJson:()=>P(f),setTables:ot,setTable:(e,t)=>Xe((e=>ue(t,e)?ve(e,t):0),e),setRow:(e,t,s)=>Xe(((e,t)=>fe(R(e),R(t),s)?Ee(R(e),De(R(e)),R(t),s):0),e,t),addRow:(e,t)=>at((()=>{let s;return fe(e,s,t)&&(e=R(e),Ee(e,De(e),s=Ae(e),t)),s})),setPartialRow:(e,t,s)=>Xe(((e,t)=>{if(fe(e,t,s,1)){const n=De(e);Te(s,((s,o)=>xe(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Xe(((e,t,s)=>W(he(e,t,s,_(n)?n(nt(e,t,s)):n),(n=>xe(e,De(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?rt():ot(J(e))}catch{}return ct},setSchema:t=>Xe((()=>{if((e=(e=>_e(e,(e=>_e(e,(e=>{if(!_e(e,((e,t)=>v([l,c],t))))return!1;const t=e.type;return!(!B(t)&&t!=a||(Ce(e.default)!=t&&Se(e,c),0))})))))(t))&&(pe(t),!K(m))){const e=Ye();rt(),ot(e)}})),delTables:rt,delTable:e=>Xe((e=>G(m,e)?Fe(e):0),e),delRow:(e,t)=>Xe(((e,t)=>W(te(m,e),(s=>G(s,t)?Pe(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Xe(((e,t,s)=>W(te(m,e),(o=>W(te(o,t),(r=>G(r,s)?Je(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>Xe((()=>{pe({}),e=!1})),transaction:at,startTransaction:it,finishTransaction:lt,forEachTable:e=>X(m,((t,s)=>e(s,(e=>X(t,((t,s)=>e(s,(e=>se(t,e))))))))),forEachRow:(e,t)=>X(te(m,R(e)),((e,s)=>t(s,(t=>se(e,t))))),forEachCell:(e,t,s)=>se(te(te(m,R(e)),R(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=tt(e,t,s,n,o);return H((()=>{const a=tt(e,t,s,n,o);I(a,i)||(i=a,r(ct,e,t,s,n,o,i))}),F[a?1:0],[e,t])},addWillFinishTransactionListener:e=>H(e,q[0]),addDidFinishTransactionListener:e=>H(e,q[1]),callListener:e=>(le(e,[Ze,et,st],(e=>N(e[2])?[]:Ne(nt(...e)))),ct),delListener:e=>(U(e),ct),getListenerStats:()=>({}),createStore:He};return Te({Tables:[0,E],TableIds:[0,k],[g]:[1,M],[w]:[1,D],Row:[2,Q],[L]:[2,j],[p]:[3,O],InvalidCell:[3,z]},(([e,t],s)=>{ct[h+s+u]=(...s)=>H(s[e],t[s[e+1]?1:0],e>0?x(s,0,e):void 0)})),ye(ct)};e.createCheckpoints=Ee,e.createCustomPersister=Fe,e.createFilePersister=(e,s)=>{let n;return Fe(e,(async()=>{try{return await t.promises.readFile(s,d)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,d)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=Me,e.createLocalPersister=(e,t)=>Qe(e,t,localStorage),e.createMetrics=De,e.createQueries=Oe,e.createRelationships=ze,e.createRemotePersister=(e,t,s,n)=>{let o,r;return Fe(e,(async()=>{const e=await fetch(t);return r=je(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=je(s);N(r)||N(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{W(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Qe(e,t,sessionStorage),e.createStore=He,e.defaultSorter=ke,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
1
+ var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),l="type",c="default",d="utf8",u="Listener",f="Result",h="add",g="Table",w="RowIds",L="CellIds",p="Cell",R=e=>n+e,v=(e,t)=>e.includes(t),y=(e,t)=>e.every(t),I=(e,t)=>E(e)===E(t)&&y(e,((e,s)=>t[s]===e)),S=(e,t)=>y(e,((s,n)=>0==n||t(e[n-1],s)<=0)),T=(e,t)=>e.sort(t),b=(e,t)=>e.forEach(t),C=(e,t)=>e.map(t),m=e=>M(e,((e,t)=>e+t),0),E=e=>e.length,k=e=>0==E(e),M=(e,t,s)=>e.reduce(t,s),x=(e,t,s)=>e.slice(t,s),A=(e,...t)=>e.push(...t),D=e=>e.pop(),F=e=>e.shift(),J=e=>JSON.stringify(e,((e,t)=>N(t,Map)?M([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),P=JSON.parse,Q=Math.max,j=Math.min,z=isFinite,N=(e,t)=>e instanceof t,O=e=>null==e,W=(e,t,s)=>O(e)?s?.():t(e),B=e=>e==o||e==r,q=e=>s(e)==i,H=e=>Array.isArray(e),$=()=>{},G=e=>e.size,K=(e,t)=>e?.has(t)??!1,U=e=>O(e)||0==G(e),V=e=>[...e?.values()??[]],X=e=>e.clear(),Y=(e,t)=>e?.forEach(t),Z=(e,t)=>e?.delete(t),_=e=>new Map(e),ee=e=>[...e?.keys()??[]],te=(e,t)=>e?.get(t),se=(e,t)=>Y(e,((e,s)=>t(s,e))),ne=(e,t,s)=>O(s)?(Z(e,t),e):e?.set(t,s),oe=(e,t,s)=>(K(e,t)||ne(e,t,s()),te(e,t)),re=(e,t,s)=>{const n={},o=t??(e=>e);return Y(e,((e,t)=>W(o(e),(e=>s?.(e)?0:n[t]=e)))),n},ae=(e,t)=>{const s=_(),n=t??(e=>e);return Y(e,((e,t)=>s.set(t,n(e)))),s},ie=e=>ae(e,ae),le=(e,t,s,n,o=0)=>W((s?oe:te)(e,t[o],o>E(t)-2?s:_),(r=>{if(o>E(t)-2)return n?.(r)&&ne(e,t[o]),r;const a=le(r,t,s,n,o+1);return U(r)&&ne(e,t[o]),a})),ce=e=>new Set(H(e)||O(e)?e:[e]),de=(e,t)=>e?.add(t),ue=(e,t,s)=>{const n=e.hasRow,o=_(),r=_(),a=_(),i=_(),l=_(),c=(t,s,...n)=>{const o=oe(l,t,ce);return b(n,(t=>de(o,t)&&s&&e.callListener(t))),n},d=(t,...s)=>W(te(l,t),(n=>{b(k(s)?V(n):s,(t=>{e.delListener(t),Z(n,t)})),U(n)&&ne(l,t)})),u=(e,s)=>{ne(o,e,s),K(r,e)||(ne(r,e,t()),ne(a,e,_()),ne(i,e,_()))},f=e=>{ne(o,e),ne(r,e),ne(a,e),ne(i,e),d(e)};return[()=>e,()=>ee(o),e=>se(r,e),e=>K(r,e),e=>te(o,e),e=>te(r,e),(e,t)=>ne(r,e,t),u,(t,o,r,l,f)=>{u(t,o);const h=_(),g=_(),w=te(a,t),L=te(i,t),p=t=>{const r=s=>e.getCell(o,t,s),a=te(w,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||H(a)&&H(i)&&I(a,i)||ne(h,t,[a,i]),!O(f)){const e=te(L,t),s=n(o,t)?f(r,t):void 0;e!=s&&ne(g,t,s)}},R=e=>{r((()=>{Y(h,(([,e],t)=>ne(w,t,e))),Y(g,((e,t)=>ne(L,t,e)))}),h,g,w,L,e),X(h),X(g)};se(w,p),e.hasTable(o)&&b(e.getRowIds(o),(e=>{K(w,e)||p(e)})),R(!0),d(t),c(t,0,e.addRowListener(o,null,((e,t,s)=>p(s))),e.addTableListener(o,(()=>R())))},f,()=>se(l,f),c,d]},fe=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),he=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ge=/^\d+$/,we=()=>{const e=[];let t=0;return[()=>F(e)??n+t++,t=>{ge.test(t)&&E(e)<1e3&&A(e,t)}]},Le=e=>{let t;const[s,o]=we(),r=_();return[(o,a,i)=>{t??=e();const l=s();return ne(r,l,[o,a,i]),de(le(a,i??[n],ce),l),l},(e,s,...o)=>b(((e,t=[n])=>{const s=[],o=(e,n)=>n==E(t)?A(s,e):null===t[n]?Y(e,(e=>o(e,n+1))):b([t[n],null],(t=>o(te(e,t),n+1)));return o(e,0),s})(e,s),(e=>Y(e,(e=>te(r,e)[0](t,...s??[],...o))))),e=>W(te(r,e),(([,t,s])=>(le(t,s??[n],void 0,(t=>(Z(t,e),U(t)?1:0))),ne(r,e),o(e),s))),(e,s,n)=>W(te(r,e),(([e,,o=[]])=>{const r=(...a)=>{const i=E(a);i==E(o)?e(t,...a,...n(a)):O(o[i])?b(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},pe=Object,Re=pe.keys,ve=pe.isFrozen,ye=pe.freeze,Ie=(e,t)=>!O(((e,t)=>W(e,(e=>e[t])))(e,t)),Se=(e,t)=>delete e[t],Te=(e,t)=>b(pe.entries(e),(([e,s])=>t(s,e))),be=e=>k(Re(e)),Ce=e=>{const t=s(e);return B(t)||t==a&&z(e)?t:void 0},me=(e,t,s,n,o)=>O(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Ee=he((e=>{let t,s,o,r=100,a=_(),i=1;const l=_(),c=_(),[d,u,f]=Le((()=>Q)),h=_(),g=_(),w=[],L=[],p=(t,s)=>{i=0,e.transaction((()=>Y(te(h,s),((s,n)=>Y(s,((s,o)=>Y(s,((s,r)=>me(e,n,o,r,s[t]))))))))),i=1},R=e=>{ne(h,e),ne(g,e),u(c,[e])},y=(e,t)=>b(((e,t)=>e.splice(0,t))(e,t??E(e)),R),I=()=>y(w,E(w)-r),S=e.addCellListener(null,null,null,((e,s,n,r,l,c)=>{if(i){W(t,(()=>{A(w,t),I(),y(L),t=void 0,o=1}));const e=oe(a,s,_),i=oe(e,n,_),d=oe(i,r,(()=>[c,void 0]));d[1]=l,d[0]===l&&U(ne(i,r))&&U(ne(e,n))&&U(ne(a,s))&&(t=D(w),o=1),M()}})),T=(e="")=>(O(t)&&(t=n+s++,ne(h,t,a),J(t,e),a=_(),o=1),t),C=()=>{k(w)||(((e,...t)=>{e.unshift(...t)})(L,T()),p(0,t),t=D(w),o=1)},m=()=>{k(L)||(A(w,t),t=F(L),p(1,t),o=1)},M=()=>{o&&(u(l),o=0)},x=e=>{const t=T(e);return M(),t},J=(e,t)=>(P(e)&&te(g,e)!==t&&(ne(g,e,t),u(c,[e])),Q),P=e=>K(h,e),Q={setSize:e=>(r=e,I(),Q),addCheckpoint:x,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...L]],forEachCheckpoint:e=>se(g,e),hasCheckpoint:P,getCheckpoint:e=>te(g,e),goBackward:()=>(C(),M(),Q),goForward:()=>(m(),M(),Q),goTo:e=>{const s=v(w,e)?C:v(L,e)?m:null;for(;!O(s)&&e!=t;)s();return M(),Q},addCheckpointIdsListener:e=>d(e,l),addCheckpointListener:(e,t)=>d(t,c,[e]),delListener:e=>(f(e),Q),clear:()=>(y(w),y(L),O(t)||R(t),t=void 0,s=0,x(),Q),destroy:()=>{e.delListener(S)},getListenerStats:()=>({})};return ye(Q.clear())})),ke=(e,t)=>e<t?-1:1,Me=he((e=>{const t=_(),s=_(),[o,r,a,i,l,c,d,,u,f,h]=ue(e,_,(e=>O(e)?n:H(e)?C(e,R):R(e))),[g,w,L]=Le((()=>v)),p=(t,s,n)=>{const o=l(t);Y(n,((t,n)=>s(n,(s=>Y(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},v={setIndexDefinition:(e,n,o,r,a,i=ke)=>{const l=O(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,h)=>{let g=0;const L=ce(),p=ce(),R=c(e);if(Y(o,(([e,t],s)=>{const n=ce(e),o=ce(t);Y(n,(e=>Z(o,e)?Z(n,e):0)),Y(n,(e=>{de(L,e),W(te(R,e),(t=>{Z(t,s),U(t)&&(ne(R,e),g=1)}))})),Y(o,(e=>{de(L,e),K(R,e)||(ne(R,e,ce()),g=1),de(te(R,e),s),O(r)||de(p,e)}))})),n(),U(f)||(h?se(R,(e=>de(p,e))):se(a,(e=>W(te(u,e),(e=>de(p,e))))),Y(p,(e=>{const t=(t,s)=>i(te(f,t),te(f,s),e),s=[...te(R,e)];S(s,t)||(ne(R,e,ce(T(s,t))),de(L,e))}))),(g||h)&&!O(l)){const t=[...R];S(t,l)||(d(e,_(T(t,l))),g=1)}g&&w(t,[e]),Y(L,(t=>w(s,[e,t])))}),fe(o),W(r,fe)),v},delIndexDefinition:e=>(f(e),v),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,c(e)),hasIndex:i,hasSlice:(e,t)=>K(c(e),t),getTableId:l,getSliceIds:e=>ee(c(e)),getSliceRowIds:(e,t)=>V(te(c(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>g(n,s,[e,t]),delListener:e=>(L(e),v),destroy:h,getListenerStats:()=>({})};return ye(v)})),xe=_([["avg",[(e,t)=>m(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>Q(...e),(e,t)=>Q(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:Q(t,e)]],["min",[e=>j(...e),(e,t)=>j(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:j(t,e)]],["sum",[e=>m(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Ae=(e,t,s,n,o,r=!1)=>{if(U(s))return;const[a,i,l,c]=o;return r||=O(e),Y(n,(([s,n])=>{r||(e=O(s)?i?.(e,n,t++):O(n)?l?.(e,s,t--):c?.(e,n,s,t),r||=O(e))})),r?a(V(s),G(s)):e},De=he((e=>{const t=_(),[s,o,r,a,i,l,c,,d,u,f]=ue(e,$,(e=>isNaN(e)||O(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,w]=Le((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=q(n)?[n,r,a,i]:te(xe,n)??te(xe,"sum");return d(e,s,((s,n,o,r,a,i)=>{const d=l(e),f=G(r);i||=O(d),s();let h=Ae(d,f,r,n,u,i);z(h)||(h=void 0),h!=d&&(c(e,h),g(t,[e],h,d))}),fe(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:l,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(w(e),L),destroy:f,getListenerStats:()=>({})};return ye(L)})),Fe=(e,t,s,o,r)=>{let a,i=0;const l={load:async s=>{if(2!=i){i=1;const o=await t();O(o)||o==n?e.setTables(s):e.setJson(o),i=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),o(l.load),l),stopAutoLoad:()=>(r(),l),save:async()=>(1!=i&&(i=2,await s(e.getJson()),i=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),a=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(W(a,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ye(l)},Je="storage",Pe=globalThis.window,Qe=(e,t,s)=>{let n;return Fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Pe.addEventListener(Je,n)}),(()=>{Pe.removeEventListener(Je,n),n=void 0}))},je=e=>e.headers.get("ETag"),ze=he((e=>{const t=e.createStore,[s,o,r,a,i,,,l,,c,d,R,v]=ue(e,(()=>!0),$),I=t(),S=t(),T=_(),C=(e,t,...s)=>b(s,(s=>de(oe(oe(T,t,_),e,ce),s))),m=e=>{W(te(T,e),(e=>{se(e,((e,t)=>Y(t,(t=>e.delListener(t))))),X(e)})),b([S,I],(t=>t.delTable(e)))},M=(e,t,s)=>C(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),D={setQueryDefinition:(t,s,o)=>{l(t,s),m(t);const r=[],a=[[null,[s,null,null,[],_()]]],i=[],c=[],d=[];o({select:(e,t)=>{const s=q(e)?[E(r)+n,e]:[O(t)?e:t,s=>s(e,t)];return A(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=O(s)||q(t)?null:t,o=O(n)?t:s,r=[e,[e,n,q(o)?o:e=>e(o),[],_()]];return A(a,r),{as:e=>r[0]=e}},where:(e,t,s)=>A(i,q(e)?e:O(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,q(t)?[t,s,n,o]:te(xe,t)??[(e,t)=>t]]];return A(c,r),{as:e=>r[0]=e}},having:(e,t)=>A(d,q(e)?e:s=>s(e)===t)});const u=_(r);if(U(u))return D;const f=_(a);se(f,((e,[,t])=>W(te(f,t),(({3:t})=>O(e)?0:A(t,e)))));const h=_(c);let g=I;if(U(h)&&k(d))g=S;else{M(t,g,S);const e=_();se(h,((t,[s,n])=>de(oe(e,s,ce),[t,n])));const s=ce();se(u,(t=>K(e,t)?0:de(s,t)));const n=_(),o=(s,n,o,r)=>W(s,(([a,i,l,c])=>{se(n,((t,[s])=>{const n=oe(a,t,_),i=te(n,o),l=r?void 0:s;if(i!==l){const s=ce([[i,l]]),r=G(n);ne(n,o,l),Y(te(e,t),(([e,t])=>{const o=Ae(c[e],r,n,s,t);c[e]=O(Ce(o))?null:o}))}})),U(i)||!y(d,(e=>e((e=>c[e]))))?S.delRow(t,l):O(l)?s[2]=S.addRow(t,c):S.setRow(t,l,c)}));C(g,t,g.addRowListener(t,null,((r,a,i,l)=>{const c=[],d=[],u=_(),f=g.hasRow(t,i);let h=!f;Y(s,(e=>{const[s,n,o]=l(t,i,e);A(c,n),A(d,o),h||=s})),se(e,(e=>{const[s,,n]=l(t,i,e);(h||s)&&ne(u,e,[n])})),h&&o(le(n,c,void 0,(([,e])=>(Z(e,i),U(e)))),u,i,1),f&&o(le(n,d,(()=>{const e={};return Y(s,(s=>e[s]=g.getCell(t,i,s))),[_(),ce(),void 0,e]}),(([,e])=>{de(e,i)})),u,i)})))}M(t,e,g);const w=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);b(a,(s=>{const[o,,r,a,i]=te(f,s),c=r?.(l,n),[d,u]=te(i,n)??[];c!=d&&(O(u)||v(t,u),ne(i,n,O(c)?null:[c,...R(t,1,e.addRowListener(o,c,(()=>w(n,o,c,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...O(o)?[s,n,t]:t===s?[s,n,o]:[te(f,t)?.[0],te(te(f,t)?.[4],n)?.[0],o]);g.transaction((()=>y(i,(e=>e(o)))?se(u,((e,s)=>me(g,t,n,e,s(o,n)))):g.delRow(t,n)))})(n)},{3:L}=te(f,null);return g.transaction((()=>R(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?w(r,s,r,L):(g.delRow(t,r),Y(f,(({4:e})=>W(te(e,r),(([,s])=>{v(t,s),ne(e,r)})))))}))))),D},delQueryDefinition:e=>(m(e),c(e),D),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:i,delListener:e=>(S.delListener(e),D),destroy:d,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=S.getListenerStats();return n}};return Te({[g]:[1,1],[w]:[0,1],SortedRowIds:[0,5],Row:[1,2],[L]:[0,2],[p]:[1,3]},(([e,t],s)=>{b(e?["get","has","forEach"]:["get"],(e=>D[e+f+s]=(...t)=>S[e+s](...t))),D[h+f+s+u]=(...e)=>S[h+s+u](...x(e,0,t),((s,...n)=>e[t](D,...n)))})),ye(D)})),Ne=he((e=>{const t=_(),s=_(),o=_(),r=_(),[a,i,l,c,d,u,,,f,h,g]=ue(e,(()=>[_(),_(),_(),_()]),(e=>O(e)?void 0:e+n)),[w,L,p]=Le((()=>I)),R=(e,t,s)=>W(u(e),(([n,,o])=>{if(!K(o,t)){const r=ce();if(d(e)!=y(e))de(r,t);else{let e=t;for(;!O(e)&&!K(r,e);)de(r,e),e=te(n,e)}if(s)return r;ne(o,t,r)}return te(o,t)})),v=(e,t)=>W(u(e),(([,,e])=>ne(e,t))),y=e=>te(t,e),I={setRelationshipDefinition:(e,n,a,i)=>(ne(t,e,a),f(e,n,((t,n)=>{const a=ce(),i=ce(),l=ce(),[c,d]=u(e);Y(n,(([t,s],n)=>{O(t)||(de(i,t),W(te(d,t),(e=>{Z(e,n),U(e)&&ne(d,t)}))),O(s)||(de(i,s),K(d,s)||ne(d,s,ce()),de(te(d,s),n)),de(a,n),ne(c,n,s),se(te(r,e),(t=>{K(R(e,t),n)&&de(l,t)}))})),t(),Y(a,(t=>L(s,[e,t]))),Y(i,(t=>L(o,[e,t]))),Y(l,(t=>{v(e,t),L(r,[e,t])}))}),fe(i)),I),delRelationshipDefinition:e=>(ne(t,e),h(e),I),getStore:a,getRelationshipIds:i,forEachRelationship:t=>l((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:c,getLocalTableId:d,getRemoteTableId:y,getRemoteRowId:(e,t)=>te(u(e)?.[0],t),getLocalRowIds:(e,t)=>V(te(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>O(u(e))?[t]:V(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>w(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>w(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),w(s,r,[e,t])),delListener:e=>(v(...p(e)),I),destroy:g,getListenerStats:()=>({})};return ye(I)})),Oe=e=>[e,e],We=()=>[_(),_()],Be=(e,t,s,n=ne)=>{const o=(r=ee(e),a=e=>!Ie(t,e),r.filter(a));var r,a;return b(Re(t),(n=>s(e,n,t[n]))),b(o,(t=>n(e,t))),e},qe=(e,t,s)=>O(e)||!(e=>N(e,pe)&&e.constructor==pe)(e)||be(e)||ve(e)?(s?.(),!1):(Te(e,((s,n)=>{t(s,n)||Se(e,n)})),!be(e)),He=(e,t,s)=>ne(e,t,te(e,t)==-s?void 0:s),$e=()=>{let e,t,s=0;const n=_(),o=_(),r=_(),i=_(),d=_(),f=_(),y=_(),S=_(),m=_(),E=We(),k=We(),M=We(),D=We(),F=We(),Q=We(),j=We(),z=We(),N=We(),H=We(),[$,G,V,le]=Le((()=>ct)),ue=(t,s)=>(!e||K(f,s)||Ge(s))&&qe(t,((e,t)=>fe(s,t,e)),(()=>Ge(s))),fe=(e,t,s,n)=>qe(n?s:ge(s,e,t),((n,o)=>W(he(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Ge(e,t))),he=(t,s,n,o)=>e?W(te(te(f,t),n),(e=>Ce(o)!=e.type?Ge(t,s,n,o,e.default):o),(()=>Ge(t,s,n,o))):O(Ce(o))?Ge(t,s,n,o):o,ge=(e,t,s)=>(W(te(y,t),(([n,o])=>{Y(n,((t,s)=>{Ie(e,s)||(e[s]=t)})),Y(o,(n=>{Ie(e,n)||Ge(t,s,n)}))})),e),pe=e=>Be(f,e,((e,t,s)=>{const n=_(),o=ce();Be(oe(f,t,_),s,((e,t,s)=>{ne(e,t,s),W(s.default,(e=>ne(n,t,e)),(()=>de(o,t)))})),ne(y,t,[n,o])}),((e,t)=>{ne(f,t),ne(y,t)})),Re=e=>Be(m,e,((e,t,s)=>ve(t,s)),((e,t)=>Fe(t))),ve=(e,t)=>Be(oe(m,e,(()=>(Qe(e,1),_()))),t,((t,s,n)=>Ee(e,t,s,n)),((t,s)=>Je(e,t,s))),Ee=(e,t,s,n,o)=>Be(oe(t,s,(()=>(je(e,s,1),_()))),n,((t,n,o)=>Me(e,s,t,n,o)),((n,r)=>Pe(e,t,s,n,r,o))),Me=(e,t,s,n,o)=>{K(s,n)||ze(e,t,n,1);const r=te(s,n);o!==r&&(Ne(e,t,n,r,o),ne(s,n,o))},xe=(e,t,s,n,o)=>W(te(t,s),(t=>Me(e,s,t,n,o)),(()=>Ee(e,t,s,ge({[n]:o},e,s)))),Ae=e=>{const[t]=oe(S,e,we),s=t();return K(te(m,e),s)?Ae(e):s},De=e=>te(m,e)??ve(e,{}),Fe=e=>ve(e,{}),Je=(e,t,s)=>{const[,n]=oe(S,e,we);n(s),Ee(e,t,s,{},!0)},Pe=(e,t,s,n,o,r)=>{const a=te(te(y,e)?.[0],o);if(!O(a)&&!r)return Me(e,s,n,o,a);const i=t=>{Ne(e,s,t,te(n,t)),ze(e,s,t,-1),ne(n,t)};O(a)?i(o):se(n,i),U(n)&&(je(e,s,-1),U(ne(t,s))&&(Qe(e,-1),ne(m,e),ne(S,e)))},Qe=(e,t)=>He(n,e,t),je=(e,t,s)=>He(oe(o,e,_),t,s),ze=(e,t,s,n)=>He(oe(oe(r,e,_),t,_),s,n),Ne=(e,t,s,n,o)=>oe(oe(oe(i,e,_),t,_),s,(()=>[n,0]))[1]=o,Ge=(e,t,s,n,o)=>(A(oe(oe(oe(d,e,_),t,_),s,(()=>[])),n),o),Ke=(e,t,s)=>W(te(te(te(i,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Oe(nt(e,t,s))])),Ue=e=>U(d)||U(N[e])?0:Y(e?ae(d,ie):d,((t,s)=>Y(t,((t,n)=>Y(t,((t,o)=>G(N[e],[s,n,o],t))))))),Ve=(e,t,s)=>{if(!U(t))return G(e,s),1},Xe=e=>{const t=U(F[e]),s=U(j[e])&&U(D[e])&&t&&U(k[e]),a=U(z[e])&&U(Q[e])&&U(M[e])&&U(E[e]);if(!s||!a){const l=e?[ae(n),ie(o),ae(r,ie),ae(i,ie)]:[n,o,r,i];if(!s){Y(l[2],((t,s)=>Y(t,((t,n)=>Ve(j[e],t,[s,n])))));const s=ce();Y(l[1],((n,o)=>{Ve(D[e],n,[o])&&!t&&(G(F[e],[o,null]),de(s,o))})),t||Y(l[3],((t,n)=>{if(!K(s,n)){const s=ce();Y(t,(e=>Y(e,(([t,n],o)=>n!==t?de(s,o):Z(e,o))))),Y(s,(t=>G(F[e],[n,t])))}})),Ve(k[e],l[0])}if(!a){let t;Y(l[3],((s,n)=>{let o;Y(s,((s,r)=>{let a;Y(s,(([s,i],l)=>{i!==s&&(G(z[e],[n,r,l],i,s,Ke),t=o=a=1)})),a&&G(Q[e],[n,r],Ke)})),o&&G(M[e],[n],Ke)})),t&&G(E[e],void 0,Ke)}}},Ye=(e,...t)=>(at((()=>e(...C(t,R)))),ct),Ze=()=>re(m,(e=>re(e,re))),_e=()=>ee(m),et=e=>ee(te(m,R(e))),tt=(e,t,s,n=0,o)=>{return C(x(T((r=te(m,R(e)),a=(e,s)=>[O(t)?s:te(e,R(t)),s],C([...r?.entries()??[]],(([e,t])=>a(t,e)))),(([e],[t])=>ke(e,t)*(s?-1:1))),n,O(o)?o:n+o),(([,e])=>e));var r,a},st=(e,t)=>ee(te(te(m,R(e)),R(t))),nt=(e,t,s)=>te(te(te(m,R(e)),R(t)),R(s)),ot=e=>Ye((()=>(e=>qe(e,ue,Ge))(e)?Re(e):0)),rt=()=>Ye((()=>Re({}))),at=(e,t)=>{if(-1==s)return;it();const n=e();return lt(t),n},it=()=>(s++,ct),lt=e=>(s>0&&(s--,0==s&&(t=!U(i),s=1,Ue(1),t&&Xe(1),s=-1,e?.(re(i,(e=>re(e,(e=>re(e,(e=>[...e]),(([e,t])=>e===t))),be)),be),re(d,(e=>re(e,re))))&&(s=1,Y(i,((e,t)=>Y(e,((e,s)=>Y(e,(([e],n)=>me(ct,t,s,n,e))))))),s=-1,t=!1),G(H[0],void 0,t),Ue(0),t&&Xe(0),G(H[1],void 0,t),s=0,b([i,d,n,o,r],X))),ct),ct={getTables:Ze,getTableIds:_e,getTable:e=>re(te(m,R(e)),re),getRowIds:et,getSortedRowIds:tt,getRow:(e,t)=>re(te(te(m,R(e)),R(t))),getCellIds:st,getCell:nt,hasTables:()=>!U(m),hasTable:e=>K(m,R(e)),hasRow:(e,t)=>K(te(m,R(e)),R(t)),hasCell:(e,t,s)=>K(te(te(m,R(e)),R(t)),R(s)),getJson:()=>J(m),getSchemaJson:()=>J(f),setTables:ot,setTable:(e,t)=>Ye((e=>ue(t,e)?ve(e,t):0),e),setRow:(e,t,s)=>Ye(((e,t)=>fe(R(e),R(t),s)?Ee(R(e),De(R(e)),R(t),s):0),e,t),addRow:(e,t)=>at((()=>{let s;return fe(e,s,t)&&(e=R(e),Ee(e,De(e),s=Ae(e),t)),s})),setPartialRow:(e,t,s)=>Ye(((e,t)=>{if(fe(e,t,s,1)){const n=De(e);Te(s,((s,o)=>xe(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Ye(((e,t,s)=>W(he(e,t,s,q(n)?n(nt(e,t,s)):n),(n=>xe(e,De(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?rt():ot(P(e))}catch{}return ct},setSchema:t=>Ye((()=>{if((e=(e=>qe(e,(e=>qe(e,(e=>{if(!qe(e,((e,t)=>v([l,c],t))))return!1;const t=e.type;return!(!B(t)&&t!=a||(Ce(e.default)!=t&&Se(e,c),0))})))))(t))&&(pe(t),!U(m))){const e=Ze();rt(),ot(e)}})),delTables:rt,delTable:e=>Ye((e=>K(m,e)?Fe(e):0),e),delRow:(e,t)=>Ye(((e,t)=>W(te(m,e),(s=>K(s,t)?Je(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Ye(((e,t,s)=>W(te(m,e),(o=>W(te(o,t),(r=>K(r,s)?Pe(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>Ye((()=>{pe({}),e=!1})),transaction:at,startTransaction:it,finishTransaction:lt,forEachTable:e=>Y(m,((t,s)=>e(s,(e=>Y(t,((t,s)=>e(s,(e=>se(t,e))))))))),forEachRow:(e,t)=>Y(te(m,R(e)),((e,s)=>t(s,(t=>se(e,t))))),forEachCell:(e,t,s)=>se(te(te(m,R(e)),R(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=tt(e,t,s,n,o);return $((()=>{const a=tt(e,t,s,n,o);I(a,i)||(i=a,r(ct,e,t,s,n,o,i))}),F[a?1:0],[e,t])},addWillFinishTransactionListener:e=>$(e,H[0]),addDidFinishTransactionListener:e=>$(e,H[1]),callListener:e=>(le(e,[_e,et,st],(e=>O(e[2])?[]:Oe(nt(...e)))),ct),delListener:e=>(V(e),ct),getListenerStats:()=>({}),createStore:$e};return Te({Tables:[0,E],TableIds:[0,k],[g]:[1,M],[w]:[1,D],Row:[2,Q],[L]:[2,j],[p]:[3,z],InvalidCell:[3,N]},(([e,t],s)=>{ct[h+s+u]=(...s)=>$(s[e],t[s[e+1]?1:0],e>0?x(s,0,e):void 0)})),ye(ct)};e.createCheckpoints=Ee,e.createCustomPersister=Fe,e.createFilePersister=(e,s)=>{let n;return Fe(e,(async()=>{try{return await t.promises.readFile(s,d)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,d)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=Me,e.createLocalPersister=(e,t)=>Qe(e,t,localStorage),e.createMetrics=De,e.createQueries=ze,e.createRelationships=Ne,e.createRemotePersister=(e,t,s,n)=>{let o,r;return Fe(e,(async()=>{const e=await fetch(t);return r=je(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=je(s);O(r)||O(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{W(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Qe(e,t,sessionStorage),e.createStore=$e,e.defaultSorter=ke},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
Binary file
@@ -0,0 +1,290 @@
1
+ /**
2
+ * The tools module of the TinyBase project provides utilities for working with
3
+ * TinyBase during development.
4
+ *
5
+ * This module is not intended to be directly used at runtime in a production
6
+ * environment.
7
+ *
8
+ * @packageDocumentation
9
+ * @module tools
10
+ * @since v2.2.0
11
+ */
12
+
13
+ import {Schema, Store} from './store.d';
14
+ import {Id} from './common.d';
15
+
16
+ /**
17
+ * The StoreStats type describes a set of statistics about the Store, and
18
+ * is used for debugging purposes.
19
+ *
20
+ * A StoreStats object is returned from the getStoreStats method.
21
+ *
22
+ * @category Statistics
23
+ * @since v2.2.0
24
+ */
25
+ export type StoreStats = {
26
+ /**
27
+ * The number of Table objects in the Store.
28
+ */
29
+ totalTables: number;
30
+ /**
31
+ * The number of Row objects in the Store, across all Table objects.
32
+ */
33
+ totalRows: number;
34
+ /**
35
+ * The number of Cell objects in the Store, across all Row objects, across all
36
+ * Table objects.
37
+ */
38
+ totalCells: number;
39
+ /**
40
+ * The string length of the Store when serialized to JSON.
41
+ */
42
+ jsonLength: number;
43
+ /**
44
+ * Additional detailed statistics about the Store if the `detail` flag is
45
+ * specified in the getStoreStats method.
46
+ */
47
+ detail?: StoreStatsDetail;
48
+ };
49
+
50
+ /**
51
+ * The StoreStatsDetail type describes a more detailed set of statistics about
52
+ * the Store, and is used for debugging purposes.
53
+ *
54
+ * A StoreStatsDetail object is added to the StoreStats object (returned from
55
+ * the getStoreStats method) when the `detail` flag is specified.
56
+ *
57
+ * @category Statistics
58
+ * @since v2.2.0
59
+ */
60
+ export type StoreStatsDetail = {
61
+ /**
62
+ * Information about each Table in the Store.
63
+ */
64
+ tables: {[tableId: Id]: StoreStatsTableDetail};
65
+ };
66
+
67
+ /**
68
+ * The StoreStatsTableDetail type describes a detailed set of statistics about a
69
+ * single Table in the Store, and is used for debugging purposes.
70
+ *
71
+ * @category Statistics
72
+ * @since v2.2.0
73
+ */
74
+ export type StoreStatsTableDetail = {
75
+ /**
76
+ * The number of Row objects in the Table.
77
+ */
78
+ tableRows: number;
79
+ /**
80
+ * The number of Cell objects in the Table, across all Row objects.
81
+ */
82
+ tableCells: number;
83
+ rows: {[rowId: Id]: StoreStatsRowDetail};
84
+ };
85
+
86
+ /**
87
+ * The StoreStatsRowDetail type describes statistics about a single Row in the
88
+ * Store, and is used for debugging purposes.
89
+ *
90
+ * @category Statistics
91
+ * @since v2.2.0
92
+ */
93
+ export type StoreStatsRowDetail = {
94
+ /**
95
+ * The number of Cell objects in the Row.
96
+ */
97
+ rowCells: number;
98
+ };
99
+
100
+ /**
101
+ * A Tools object lets you run various utilities on, and get certain information
102
+ * about, Store objects in development.
103
+ *
104
+ * @category Tools
105
+ * @since v2.2.0
106
+ */
107
+ export interface Tools {
108
+ /**
109
+ * The getStoreStats method provides a set of statistics about the Store, and
110
+ * is used for debugging purposes.
111
+ *
112
+ * @param detail An optional boolean that indicates more detailed stats about
113
+ * the inner structure of the Store should be returned.
114
+ * @returns A StoreStats object containing statistics about the Store.
115
+ * @example
116
+ * This example creates a Tools object and gets basic statistics about it.
117
+ * ```js
118
+ * const store = createStore()
119
+ * .setTable('pets', {
120
+ * fido: {species: 'dog', color: 'brown'},
121
+ * felix: {species: 'cat', color: 'black'},
122
+ * cujo: {species: 'dog', color: 'black'},
123
+ * })
124
+ * .setTable('species', {
125
+ * dog: {price: 5},
126
+ * cat: {price: 4},
127
+ * });
128
+ * const tools = createTools(store);
129
+ * console.log(tools.getStoreStats());
130
+ * // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
131
+ * ```
132
+ * @example
133
+ * This example creates a Tools object and gets detailed statistics about it.
134
+ * ```js
135
+ * const store = createStore()
136
+ * .setTable('pets', {
137
+ * fido: {species: 'dog', color: 'brown'},
138
+ * felix: {species: 'cat', color: 'black'},
139
+ * cujo: {species: 'dog', color: 'black'},
140
+ * })
141
+ * .setTable('species', {
142
+ * dog: {price: 5},
143
+ * cat: {price: 4},
144
+ * });
145
+ * const stats = createTools(store).getStoreStats(true);
146
+ *
147
+ * console.log(stats.totalTables);
148
+ * // -> 2
149
+ * console.log(stats.totalRows);
150
+ * // -> 5
151
+ * console.log(stats.totalCells);
152
+ * // -> 8
153
+ * console.log(stats.detail.tables.pets.tableRows);
154
+ * // -> 3
155
+ * console.log(stats.detail.tables.pets.tableCells);
156
+ * // -> 6
157
+ * console.log(stats.detail.tables.pets.rows);
158
+ * // -> {fido: {rowCells: 2}, felix: {rowCells: 2}, cujo: {rowCells: 2}}
159
+ * ```
160
+ * @category Statistics
161
+ * @since v2.2.0
162
+ */
163
+ getStoreStats(detail?: boolean): StoreStats;
164
+
165
+ /**
166
+ * The getStoreSchema method returns the Schema of the Store as an object.
167
+ *
168
+ * If the Store does not already have an explicit Schema associated with it,
169
+ * the data in the Store will be scanned to attempt to infer a new Schema.
170
+ *
171
+ * To be successful, this requires all the values of a given Cell across a
172
+ * Table object's Row objects to have a consistent type. If a given Cell Id
173
+ * appears in every Row, then a `default` for that Cell is specified in the
174
+ * Schema, based on the most common value found.
175
+ *
176
+ * @returns A Schema object for the Store.
177
+ * @example
178
+ * This example creates a Tools object and gets basic statistics about a Store
179
+ * that already has a Schema.
180
+ * ```js
181
+ * const store = createStore().setSchema({
182
+ * pets: {
183
+ * species: {type: 'string'},
184
+ * color: {type: 'string'},
185
+ * },
186
+ * species: {
187
+ * price: {type: 'number'},
188
+ * },
189
+ * });
190
+ * const schema = createTools(store).getStoreSchema();
191
+ * console.log(schema.pets);
192
+ * // -> {species: {type: 'string'}, color: {type: 'string'}}
193
+ * ```
194
+ * @example
195
+ * This example creates a Tools object and gets basic statistics about a Store
196
+ * that doesn't already have a Schema.
197
+ * ```js
198
+ * const store = createStore()
199
+ * .setTable('pets', {
200
+ * fido: {species: 'dog', color: 'brown'},
201
+ * felix: {species: 'cat', color: 'black'},
202
+ * cujo: {species: 'dog', color: 'black'},
203
+ * })
204
+ * .setTable('species', {
205
+ * dog: {price: 5, barks: true},
206
+ * cat: {price: 4, purrs: true},
207
+ * });
208
+ * const schema = createTools(store).getStoreSchema();
209
+ * console.log(schema.pets.species);
210
+ * // -> {type: 'string', default: 'dog'}
211
+ * console.log(schema.pets.color);
212
+ * // -> {type: 'string', default: 'black'}
213
+ * console.log(schema.species.price);
214
+ * // -> {type: 'number', default: 5}
215
+ * console.log(schema.species.barks);
216
+ * // -> {type: 'boolean'}
217
+ * console.log(schema.species.purrs);
218
+ * // -> {type: 'boolean'}
219
+ * ```
220
+ * @category Modelling
221
+ * @since v2.2.0
222
+ */
223
+ getStoreSchema(): Schema;
224
+
225
+ /**
226
+ * The getStoreApi method returns a code-generated .d.ts file and a .ts file
227
+ * that wraps the schema of a Store.
228
+ *
229
+ * This is currently in development, and further documentation is to come.
230
+ *
231
+ * @category Modelling
232
+ * @since v2.2.0
233
+ */
234
+ getStoreApi(storeName: string): [string, string];
235
+
236
+ /**
237
+ * The getStoreApi method attempts to return a prettified code-generated .d.ts
238
+ * file and a .ts file that wraps the schema of a Store.
239
+ *
240
+ * This is currently in development, and further documentation is to come.
241
+ *
242
+ * @category Modelling
243
+ * @since v2.2.0
244
+ */
245
+ getPrettyStoreApi(storeName: string): Promise<[string, string]>;
246
+ }
247
+
248
+ /**
249
+ * The createTools function creates a Tools object, and is the main entry point
250
+ * into the tools module.
251
+ *
252
+ * A given Store can only have one Tools object associated with it. If you call
253
+ * this function twice on the same Store, your second call will return a
254
+ * reference to the Tools object created by the first.
255
+ *
256
+ * @param store The Store for which to register tools.
257
+ * @returns A reference to the new Tools object.
258
+ * @example
259
+ * This example creates a Tools object.
260
+ *
261
+ * ```js
262
+ * const store = createStore()
263
+ * .setTable('pets', {
264
+ * fido: {species: 'dog', color: 'brown'},
265
+ * felix: {species: 'cat', color: 'black'},
266
+ * cujo: {species: 'dog', color: 'black'},
267
+ * })
268
+ * .setTable('species', {
269
+ * dog: {price: 5},
270
+ * cat: {price: 4},
271
+ * });
272
+ * const tools = createTools(store);
273
+ * console.log(tools.getStoreStats());
274
+ * // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
275
+ * ```
276
+ * @example
277
+ * This example creates a Tools object, and calls the method a second time
278
+ * for the same Store to return the same object.
279
+ *
280
+ * ```js
281
+ * const store = createStore();
282
+ * const tools1 = createTools(store);
283
+ * const tools2 = createTools(store);
284
+ * console.log(tools1 === tools2);
285
+ * // -> true
286
+ * ```
287
+ * @category Creation
288
+ * @since v2.2.0
289
+ */
290
+ export function createTools(store: Store): Tools;
@@ -0,0 +1 @@
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,l="",a=t(l),o=t(!0),n=t(0),r="type",s="default",d=(e,t)=>e.every(t),i=(e,t)=>e.sort(t),$=(e,t)=>e.forEach(t),c=(e,t)=>e.map(t),I=e=>e.length,b=(e,...t)=>e.push(...t),h=e=>e.shift(),w=JSON.parse,u=isFinite,f=e=>null==e,C=e=>Array.isArray(e),g=(e,t)=>e?.has(t)??!1,T=e=>[...e?.values()??[]],R=(e,t)=>e?.forEach(t),p=e=>new Map(e),v=(e,t)=>e?.get(t),m=(e,t)=>c([...e?.entries()??[]],(([e,l])=>t(l,e))),S=(e,t,l)=>{return f(l)?(a=t,e?.delete(a),e):e?.set(t,l);var a},y=(e,t,l)=>(g(e,t)||S(e,t,l()),v(e,t)),L=e=>new Set(C(e)||f(e)?e:[e]),k=/[^A-Za-z0-9]+/,A=/^( *)\/\*\* *(.*?) *\*\/$/gm,E=(e,t,l)=>e.substring(t,l),x=e=>e.toUpperCase(),j=e=>e.toLowerCase(),J=(e,t,l,a=1)=>{const o=`${t}${1==a?"":a}`;return g(e,o)?J(e,t,l,a+1):(S(e,o,l),o)},O=e=>e.length,N=(e,t="")=>e.join(t),G=(e,t=0)=>N(c(e.split(k),((e,l)=>(l>0||t?x:j)(E(e,0,1))+E(e,1)))),z=e=>x(N(e.split(k),"_")),D=e=>`/** ${e}. */`,F=()=>{const e=[p(),p()],t=p(),a=p(),o=p();return[(...e)=>{const t=[],l=e=>C(e)?$(e,l):b(t,e);return $(e,l),t.join("\n")},(t,l,...a)=>$(a,(a=>{return o=y(e[t],l,L),n=a,o?.add(n);var o,n})),(e,l="",a="")=>J(t,e,[l,a]),(e,l,a)=>S(t,e,[l,a]),(e,t,l,o,n,r="")=>J(a,e,[t,l,o,n,r]),(e,t,l)=>J(o,e,C(l)?[`(${t}) => {`,l,"}"]:[`(${t}) => ${l}`]),(e,t)=>v(o,e)===t?e:J(o,e,t),t=>[...i(m(e[t],((e,t)=>`import {${N(i(T(e)),", ")}} from '${t}';`))),l],()=>m(t,(([e,t],a)=>[D(t),`export type ${a} = ${e};`,l])),e=>m(a,(([t,a,o,n,r],s)=>{const d=e?[`${s}: ${r}(${t}): ${a} => ${o},`]:[`${s}${r}(${t}): ${a};`];return e||((e,...t)=>{e.unshift(...t)})(d,D(n)),b(d,l),d})),()=>m(o,((e,t)=>(e=C(e)?e:[e],b(e,e.pop()+";"),[`const ${t} = ${h(e)}`,e,l])))]},M=Object,W=M.keys,P=M.freeze,_=(e,t)=>{return a=e=>e[t],f(l=e)?o?.():a(l);var l,a,o},B=(e,t)=>$(M.entries(e),(([e,l])=>t(l,e))),Q=e=>{return t=W(e),0==I(t);var t},U=e=>{const l=t(e);return(e=>e==a||e==o)(l)||l==n&&u(e)?l:void 0},Z="the Store",q="the specified Row",H="Registers a listener that will be called",K=(e,t="",l="")=>`store.${e}(${t})${l?" as "+l:""}`,V=(e,t="")=>`fluent(() => ${K(e,t)})`,X=(e,t,l=0)=>`Gets ${l?"sorted, paginated":"the"} Ids of the ${e}s in ${t}`,Y=(e,t)=>`Calls a function for each ${e} in ${t}`,ee=(e,t=Z)=>`Gets whether ${e} exists in ${t}`,te=e=>"A function that takes "+e,le=(e,t,l=0)=>`${H} whenever ${e} in ${t} change`+(l?"":"s"),ae=(e=0)=>1==e?"Sets":2==e?"Sets part of":3==e?"Deletes":"Gets",oe=(e,l)=>{if(Q(e))return[n="// store has no inferable schema",n];var n;const d=G(l),i=G(l,1),$=G(i),c=`return ${$};`,I=[],h=[],w=[],u=[],C=[],g=[],v=[],m=(e,t="",l="")=>`store.${e}(${t?t+", ":""}proxy(listener)${l?", "+l:""})`,[y,L,k,A,E,x,j,J,O,M,W]=F();L(0,"tinybase","CellChange","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store"),L(1,"tinybase","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store","createStore"),x("fluent","actions: () => Store",["actions();",c]),x("proxy","listener: any",`(_: Store, ...args: any[]) => listener(${$}, ...args)`);const P=j(z(r),"'type'"),U=j(z(s),"'default'"),oe=k("Tables"),ne=k("TableId"),re=k("TableCallback"),se=k("GetCellChange"),de=k("TablesListener",`(${$}: ${i}, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to the content of the Store"),ie=k("TableIdsListener",`(${$}: ${i}) => void`,"A function for listening to changes to Table Ids in the Store"),$e=k("TableListener",`(${$}: ${i}, tableId: ${ne}, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to a Table in the Store"),ce=k("RowIdsListener",`(${$}: ${i}, tableId: ${ne}) => void`,"A function for listening to changes to Row Ids in the Store"),Ie=k("RowListener",`(${$}: ${i}, tableId: ${ne}, rowId: Id, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to a Row in the Store"),be=k("CellIdsListener",`(${$}: ${i}, tableId: ${ne}, rowId: Id) => void`,"A function for listening to changes to Cell Ids in the Store"),he=k("CellListener"),we=k("InvalidCellListener",`(${$}: ${i}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[]) => void;`,"A function for listening to invalid Cell changes"),ue=k("TransactionListener",`(${$}: ${i}, cellsTouched: boolean) => void;`,"A function for listening to the completion of a transaction");L(1,`./${d}.d`,i,`create${i} as create${i}Decl`,oe,ne,re,de,ie,$e,ce,Ie,be,he,we,ue);const fe=(e=0)=>ae(e)+" the content of the Store";E("hasTables","",o,K("hasTables"),ee("any Table")),E("getTables","",oe,K("getTables"),fe()),E("setTables","tables: "+oe,i,V("setTables","tables"),fe(1)),E("delTables","",i,V("delTables"),fe(3)),E("getTableIds","",ne+"[]",K("getTableIds","",ne+"[]"),X("Table",Z)),E("forEachTable","tableCallback: "+re,"void",K("forEachTable","tableCallback as any"),Y("Table",Z));const Ce=p();var ge;return B(e,((e,l)=>{const n=G(l,1),r=j(z(l),`'${l}'`),c=[],T=[],R=[],p=[],m=`the '${l}' Table`,y="the specified Row in "+m,x="the content of "+m,J=(e=0)=>`${ae(e)} the content of ${m}`,O=(e=0)=>`${ae(e)} the content of ${y}`,D=(e=0)=>`Represents a Row when ${e?"s":"g"}etting ${x}`,F=k(n+"Table",`{[rowId: Id]: ${n}Row}`,"Represents "+m),M=k(n+"Row"),W=k(n+"RowWhenSet"),Q=k(n+"CellId"),Z=k(n+"CellCallback"),H=k(n+"RowCallback");L(1,`./${d}.d`,F,M,W,Q,Z,H),E(`has${n}Table`,"",o,K("hasTable",r),ee(m)),E(`get${n}Table`,"",F,K("getTable",r,F),J()),E(`set${n}Table`,"table: "+F,i,V("setTable",r+", table"),J(1)),E(`del${n}Table`,"",i,V("delTable",r),J(3)),E(`get${n}RowIds`,"","Ids",K("getRowIds",r),X("Row",m)),E(`get${n}SortedRowIds`,`cellId?: ${Q}, descending?: boolean, offset?: number, limit?: number`,"Ids",K("getSortedRowIds",r+", cellId, descending, offset, limit"),X("Row",m,1)),E(`forEach${n}Row`,"rowCallback: "+H,"void",K("forEachRow",r+", rowCallback as any"),Y("Row",m)),E(`has${n}Row`,"rowId: Id",o,K("hasRow",r+", rowId"),ee(q,m)),E(`get${n}Row`,"rowId: Id",M,K("getRow",r+", rowId",M),O()),E(`set${n}Row`,"rowId: Id, row: "+W,i,V("setRow",r+", rowId, row"),O(1)),E(`add${n}Row`,"row: "+W,"Id | undefined",K("addRow",r+", row"),"Adds a new Row to "+m),E(`set${n}PartialRow`,"rowId: Id, partialRow: "+W,i,V("setPartialRow",r+", rowId, partialRow"),O(2)),E(`del${n}Row`,"rowId: Id",i,V("delRow",r+", rowId"),O(3)),E(`get${n}CellIds`,"rowId: Id",Q+"[]",K("getCellIds",r+", rowId",Q+"[]"),X("Cell",y)),E(`forEach${n}Cell`,"rowId: Id, cellCallback: "+Z,"void",K("forEachCell",r+", rowId, cellCallback as any"),Y("Cell",y)),b(v,`[${r}]: {`),B(e,((e,d)=>{const I=G(d,1),h=j(z(d),`'${d}'`),w=e.type,u=!f(_(e,s)),g=e.default,m=`the '${d}' Cell`,L=(e=0)=>`${ae(e)} ${m} for ${y}`;var k;b(v,`[${h}]: {[${P}]: ${j(z(w),`'${w}'`)}${u?`, [${U}]: ${k=g,t(k)==a?j(z(g),`'${g}'`):g}`:""}},`),b(c,`'${d}'${u?"":"?"}: ${w};`),b(T,`'${d}'?: ${w};`),b(R,`'${d}'`),b(p,`[cellId: '${d}', cell: ${w}]`),b(C,`[${$}: ${i}, tableId: '${l}', rowId: Id, cellId: '${d}', newCell: ${w} | undefined, oldCell: ${w} | undefined, getCellChange: ${se} | undefined]`);const A="Map"+G(w,1);S(Ce,w,A),E(`has${n}${I}Cell`,"rowId: Id",o,K("hasCell",`${r}, rowId, ${h}`),ee(m,y));const x=`${w}${u?"":" | undefined"}`;E(`get${n}${I}Cell`,"rowId: Id",x,K("getCell",`${r}, rowId, ${h}`,x),L()),E(`set${n}${I}Cell`,`rowId: Id, cell: ${w} | ${A}`,i,V("setCell",`${r}, rowId, ${h}, cell as any`),L(1)),E(`del${n}${I}Cell`,"rowId: Id",i,V("delCell",`${r}, rowId, ${h}`),L(3))})),b(v,"},"),b(I,`'${l}'?: ${F};`),b(h,`'${l}'`),b(w,`[tableId: '${l}', forEachRow: (rowCallback: ${H}) => void]`),b(u,`[tableId: '${l}', rowId: Id, cellId: ${Q}]`),b(g,Q),A(M,`{${N(c," ")}}`,D()),A(W,`{${N(T," ")}}`,D(1)),A(Q,N(R," | "),"A Cell Id for "+m),A(Z,`(...[cellId, cell]: ${N(p," | ")}) => void`,te("a Cell Id and value from a Row in "+m)),A(H,`(rowId: Id, forEachCell: (cellCallback: ${Z}) => void) => void`,te(`a Row Id from ${m}, and a Cell iterator`))})),E("getJson","","Json",K("getJson"),"Gets a a string serialization the content of the Store"),E("setJson","json: Json",i,V("setJson","json"),"Sets the content of the Store from a serialized string"),E("transaction","actions: () => Return, doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean","Return",K("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),E("startTransaction","",i,V("startTransaction"),"Explicitly starts a transaction"),E("finishTransaction","doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean,",i,V("finishTransaction","doRollback"),"Explicitly finishes a transaction"),E("addTablesListener",`listener: ${de}, mutator?: boolean`,"Id",m("addTablesListener","","mutator"),H+" whenever the content of the Store changes"),E("addTableIdsListener",`listener: ${ie}, mutator?: boolean`,"Id",m("addTableIdsListener","","mutator"),le("the Table Ids",Z,1)),E("addTableListener",`tableId: ${ne} | null, listener: ${$e}, mutator?: boolean`,"Id",m("addTableListener","tableId","mutator"),le("a Table",Z)),E("addRowIdsListener",`tableId: ${ne} | null, listener: ${ce}, mutator?: boolean`,"Id",m("addRowIdsListener","tableId","mutator"),le("the Row Ids","a Table",1)),E("addRowListener",`tableId: ${ne} | null, rowId: IdOrNull, listener: ${Ie}, mutator?: boolean`,"Id",m("addRowListener","tableId, rowId","mutator"),le("a Row","a Table")),E("addCellIdsListener",`tableId: ${ne} | null, rowId: IdOrNull, listener: ${be}, mutator?: boolean`,"Id",m("addCellIdsListener","tableId, rowId","mutator"),le("the Cell Ids","a Row",1)),E("addCellListener",`tableId: ${ne} | null, rowId: IdOrNull, cellId: ${N(g," | ")} | null, listener: ${he}, mutator?: boolean`,"Id",m("addCellListener","tableId, rowId, cellId","mutator"),le("a Cell","a Row")),E("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, listener: ${we}, mutator?: boolean`,"Id",m("addCellListener","tableId, rowId, cellId","mutator"),H+" whenever an invalid Cell change was attempted"),E("addWillFinishTransactionListener","listener: "+ue,"Id",m("addWillFinishTransactionListener"),H+" just before the end of the transaction"),E("addDidFinishTransactionListener","listener: "+ue,"Id",m("addDidFinishTransactionListener"),H+" just after the end of the transaction"),E("callListener","listenerId: Id",i,V("callListener","listenerId"),"Manually provoke a listener to be called"),E("delListener","listenerId: Id",i,V("delListener","listenerId"),"Remove a listener that was previously added to the Store"),E("getStore","","Store","store","Gets the underlying Store object"),A(oe,`{${N(I," ")}}`,"Represents the content of the Store"),A(ne,N(h," | "),"A Table Id in the Store"),A(re,`(...[tableId, rowCallback]: ${N(w," | ")}) => void`,te("a Table Id, and a Row iterator")),A(se,`(...[tableId, rowId, cellId]: ${N(u," | ")}) => CellChange`,"A function that returns information about any Cell's changes during a transaction"),A(he,`(...[${$}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${N(C," | ")}) => void`,"A function for listening to changes to a Cell in the Store"),ge=(e,t)=>k(t,`(cell: ${e} | undefined) => ${e}`,`Takes a ${e} Cell value and returns another`),R(Ce,((e,t)=>ge(t,e))),L(1,`./${d}.d`,...T(Ce)),j("store",["createStore().setSchema({",...v,"})"]),j($,["{",...M(1),"}"]),[y(...J(0),...O(),`export interface ${i} {`,...M(0),"}","",D(`Creates a ${i} object`),`export function create${i}(): ${i};`),y(...J(1),`export const create${i}: typeof create${i}Decl = () => {`,...W(),`return Object.freeze(${$});`,"};")]},ne={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},re=(e=>{const t=new WeakMap;return l=>(t.has(l)||t.set(l,e(l)),t.get(l))})((e=>{const t=()=>{const t=w(e.getSchemaJson());return!Q(t)||d(e.getTableIds(),(l=>{const a=e.getRowIds(l),o=p();if(d(a,(t=>d(e.getCellIds(l,t),(a=>{const n=e.getCell(l,t,a),r=y(o,a,(()=>[U(n),p(),[0],0])),[s,d,[i]]=r,$=y(d,n,(()=>0))+1;return $>i&&(r[2]=[$,n]),S(d,n,$),r[3]++,s==U(n)})))))return t[l]={},R(o,(([e,,[,o],n],d)=>{t[l][d]={[r]:e,...n==I(a)?{[s]:o}:{}}})),1}))?t:{}},l=e=>oe(t(),e);return P({getStoreStats:t=>{let l=0,a=0,o=0;const n={};return e.forEachTable(((e,r)=>{l++;let s=0,d=0;const i={};r(((e,l)=>{s++;let a=0;l((()=>a++)),d+=a,t&&(i[e]={rowCells:a})})),a+=s,o+=d,t&&(n[e]={tableRows:s,tableCells:d,rows:i})})),{totalTables:l,totalRows:a,totalCells:o,jsonLength:O(e.getJson()),...t?{detail:{tables:n}}:{}}},getStoreSchema:t,getStoreApi:l,getPrettyStoreApi:async e=>{const t=l(e);try{const{format:e}=await import("prettier");return c(t,(t=>(e=>e.replace(A,((e,t,l)=>{const a=77-O(t);return`${t}/**\n${l.replace(RegExp(`([^\\n]{1,${a}})(\\s|$)`,"g"),t+" * $1\n")}${t} */`})))(e(t,ne))))}catch{}return t}})}));e.createTools=re},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseTools={});
Binary file