tinybase 2.2.6 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.d.ts +18 -3
  3. package/lib/checkpoints.js +1 -1
  4. package/lib/checkpoints.js.gz +0 -0
  5. package/lib/debug/checkpoints.d.ts +18 -3
  6. package/lib/debug/checkpoints.js +97 -49
  7. package/lib/debug/indexes.js +31 -16
  8. package/lib/debug/metrics.js +31 -16
  9. package/lib/debug/persisters.d.ts +33 -23
  10. package/lib/debug/persisters.js +10 -5
  11. package/lib/debug/queries.js +2 -2
  12. package/lib/debug/relationships.js +31 -16
  13. package/lib/debug/store.d.ts +2022 -383
  14. package/lib/debug/store.js +440 -108
  15. package/lib/debug/tinybase.js +508 -140
  16. package/lib/debug/tools.d.ts +89 -38
  17. package/lib/debug/tools.js +757 -453
  18. package/lib/debug/ui-react.d.ts +1525 -381
  19. package/lib/debug/ui-react.js +163 -12
  20. package/lib/es6/checkpoints.d.ts +18 -3
  21. package/lib/es6/checkpoints.js +1 -1
  22. package/lib/es6/checkpoints.js.gz +0 -0
  23. package/lib/es6/indexes.js +1 -1
  24. package/lib/es6/indexes.js.gz +0 -0
  25. package/lib/es6/metrics.js +1 -1
  26. package/lib/es6/metrics.js.gz +0 -0
  27. package/lib/es6/persisters.d.ts +33 -23
  28. package/lib/es6/persisters.js +1 -1
  29. package/lib/es6/persisters.js.gz +0 -0
  30. package/lib/es6/relationships.js +1 -1
  31. package/lib/es6/relationships.js.gz +0 -0
  32. package/lib/es6/store.d.ts +2022 -383
  33. package/lib/es6/store.js +1 -1
  34. package/lib/es6/store.js.gz +0 -0
  35. package/lib/es6/tinybase.js +1 -1
  36. package/lib/es6/tinybase.js.gz +0 -0
  37. package/lib/es6/tools.d.ts +89 -38
  38. package/lib/es6/tools.js +1 -1
  39. package/lib/es6/tools.js.gz +0 -0
  40. package/lib/es6/ui-react.d.ts +1525 -381
  41. package/lib/es6/ui-react.js +1 -1
  42. package/lib/es6/ui-react.js.gz +0 -0
  43. package/lib/indexes.js +1 -1
  44. package/lib/indexes.js.gz +0 -0
  45. package/lib/metrics.js +1 -1
  46. package/lib/metrics.js.gz +0 -0
  47. package/lib/persisters.d.ts +33 -23
  48. package/lib/persisters.js +1 -1
  49. package/lib/persisters.js.gz +0 -0
  50. package/lib/relationships.js +1 -1
  51. package/lib/relationships.js.gz +0 -0
  52. package/lib/store.d.ts +2022 -383
  53. package/lib/store.js +1 -1
  54. package/lib/store.js.gz +0 -0
  55. package/lib/tinybase.js +1 -1
  56. package/lib/tinybase.js.gz +0 -0
  57. package/lib/tools.d.ts +89 -38
  58. package/lib/tools.js +1 -1
  59. package/lib/tools.js.gz +0 -0
  60. package/lib/ui-react.d.ts +1525 -381
  61. package/lib/ui-react.js +1 -1
  62. package/lib/ui-react.js.gz +0 -0
  63. package/lib/umd/checkpoints.d.ts +18 -3
  64. package/lib/umd/checkpoints.js +1 -1
  65. package/lib/umd/checkpoints.js.gz +0 -0
  66. package/lib/umd/indexes.js +1 -1
  67. package/lib/umd/indexes.js.gz +0 -0
  68. package/lib/umd/metrics.js +1 -1
  69. package/lib/umd/metrics.js.gz +0 -0
  70. package/lib/umd/persisters.d.ts +33 -23
  71. package/lib/umd/persisters.js +1 -1
  72. package/lib/umd/persisters.js.gz +0 -0
  73. package/lib/umd/relationships.js +1 -1
  74. package/lib/umd/relationships.js.gz +0 -0
  75. package/lib/umd/store.d.ts +2022 -383
  76. package/lib/umd/store.js +1 -1
  77. package/lib/umd/store.js.gz +0 -0
  78. package/lib/umd/tinybase.js +1 -1
  79. package/lib/umd/tinybase.js.gz +0 -0
  80. package/lib/umd/tools.d.ts +89 -38
  81. package/lib/umd/tools.js +1 -1
  82. package/lib/umd/tools.js.gz +0 -0
  83. package/lib/umd/ui-react.d.ts +1525 -381
  84. package/lib/umd/ui-react.js +1 -1
  85. package/lib/umd/ui-react.js.gz +0 -0
  86. package/lib/umd-es6/checkpoints.d.ts +18 -3
  87. package/lib/umd-es6/checkpoints.js +1 -1
  88. package/lib/umd-es6/checkpoints.js.gz +0 -0
  89. package/lib/umd-es6/indexes.js +1 -1
  90. package/lib/umd-es6/indexes.js.gz +0 -0
  91. package/lib/umd-es6/metrics.js +1 -1
  92. package/lib/umd-es6/metrics.js.gz +0 -0
  93. package/lib/umd-es6/persisters.d.ts +33 -23
  94. package/lib/umd-es6/persisters.js +1 -1
  95. package/lib/umd-es6/persisters.js.gz +0 -0
  96. package/lib/umd-es6/relationships.js +1 -1
  97. package/lib/umd-es6/relationships.js.gz +0 -0
  98. package/lib/umd-es6/store.d.ts +2022 -383
  99. package/lib/umd-es6/store.js +1 -1
  100. package/lib/umd-es6/store.js.gz +0 -0
  101. package/lib/umd-es6/tinybase.js +1 -1
  102. package/lib/umd-es6/tinybase.js.gz +0 -0
  103. package/lib/umd-es6/tools.d.ts +89 -38
  104. package/lib/umd-es6/tools.js +1 -1
  105. package/lib/umd-es6/tools.js.gz +0 -0
  106. package/lib/umd-es6/ui-react.d.ts +1525 -381
  107. package/lib/umd-es6/ui-react.js +1 -1
  108. package/lib/umd-es6/ui-react.js.gz +0 -0
  109. package/package.json +26 -26
  110. package/readme.md +20 -19
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 y(t,Map)?(n=(e,[t,n])=>(e[t]=n,e),s={},[...t].reduce(n,s)):t;var n,s})),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)=>u(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=>[e,e],X=()=>[E(),E()],Y=e=>{const n=t(e);return R(n)||n==o&&p(e)?n:void 0},Z=(e,t,n,s=z)=>{const r=(o=e=>!W(t,e),J(e).filter(o));var o;return d(B(t),(s=>n(e,s,t[s]))),d(r,(t=>s(e,t))),e},_=(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)),ee=(e,t,n)=>z(e,t,F(e,t)==-n?void 0:n),te=()=>{let e,s,r=0;const p=E(),y=E(),N=E(),B=E(),D=E(),Q=E(),ne=E(),se=E(),re=E(),oe=X(),le=X(),ae=X(),ie=X(),ce=X(),de=X(),ue=X(),fe=X(),he=X(),Te=X(),[be,ge,pe,ye]=(e=>{let t;const[s,r]=U(),o=E();return[(e,r,l)=>{t??=tt;const a=s();return z(o,a,[e,r,l]),K(M(r,l??[n],H),a),a},(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()}))]})(),ve=(t,n)=>(!e||S(Q,n)||Be(n))&&_(t,((e,t)=>we(n,t,e)),(()=>Be(n))),we=(e,t,n,s)=>_(s?n:Se(n,e,t),((s,r)=>w(Re(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Be(e,t))),Re=(t,n,s,r)=>e?w(F(F(Q,t),s),(e=>Y(r)!=e.type?Be(t,n,s,r,e.default):r),(()=>Be(t,n,s,r))):v(Y(r))?Be(t,n,s,r):r,Se=(e,t,n)=>(w(F(ne,t),(([s,r])=>{L(s,((t,n)=>{W(e,n)||(e[n]=t)})),L(r,(s=>{W(e,s)||Be(t,n,s)}))})),e),Ce=e=>Z(Q,e,((e,t,n)=>{const s=E(),r=H();Z(O(Q,t,E),n,((e,t,n)=>{z(e,t,n),w(n.default,(e=>z(s,t,e)),(()=>K(r,t)))})),z(ne,t,[s,r])}),((e,t)=>{z(Q,t),z(ne,t)})),Ie=e=>Z(re,e,((e,t,n)=>Le(t,n)),((e,t)=>ze(t))),Le=(e,t)=>Z(O(re,e,(()=>(ke(e,1),E()))),t,((t,n,s)=>me(e,t,n,s)),((t,n)=>Oe(e,t,n))),me=(e,t,n,s,r)=>Z(O(t,n,(()=>(Ae(e,n,1),E()))),s,((t,s,r)=>Ee(e,n,t,s,r)),((s,o)=>je(e,t,n,s,o,r))),Ee=(e,t,n,s,r)=>{S(n,s)||Me(e,t,s,1);const o=F(n,s);r!==o&&(Ne(e,t,s,o,r),z(n,s,r))},Je=(e,t,n,s,r)=>w(F(t,n),(t=>Ee(e,n,t,s,r)),(()=>me(e,t,n,Se({[s]:r},e,n)))),Fe=e=>{const[t]=O(se,e,U),n=t();return S(F(re,e),n)?Fe(e):n},xe=e=>F(re,e)??Le(e,{}),ze=e=>Le(e,{}),Oe=(e,t,n)=>{const[,s]=O(se,e,U);s(n),me(e,t,n,{},!0)},je=(e,t,n,s,r,o)=>{const l=F(F(ne,e)?.[0],r);if(!v(l)&&!o)return Ee(e,n,s,r,l);const a=t=>{Ne(e,n,t,F(s,t)),Me(e,n,t,-1),z(s,t)};v(l)?a(r):x(s,a),C(s)&&(Ae(e,n,-1),C(z(t,n))&&(ke(e,-1),z(re,e),z(se,e)))},ke=(e,t)=>ee(p,e,t),Ae=(e,t,n)=>ee(O(y,e,E),t,n),Me=(e,t,n,s)=>ee(O(O(N,e,E),t,E),n,s),Ne=(e,t,n,s,r)=>O(O(O(B,e,E),t,E),n,(()=>[s,0]))[1]=r,Be=(e,t,n,s,r)=>(T(O(O(O(D,e,E),t,E),n,(()=>[])),s),r),De=(e,t,n)=>w(F(F(F(B,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...V(Ve(e,t,n))])),Pe=e=>C(D)||C(he[e])?0:L(e?k(D,A):D,((t,n)=>L(t,((t,s)=>L(t,((t,r)=>ge(he[e],[n,s,r],t))))))),We=(e,t,n)=>{if(!C(t))return ge(e,n),1},$e=e=>{const t=C(ce[e]),n=C(ue[e])&&C(ie[e])&&t&&C(le[e]),s=C(fe[e])&&C(de[e])&&C(ae[e])&&C(oe[e]);if(!n||!s){const r=e?[k(p),A(y),k(N,A),k(B,A)]:[p,y,N,B];if(!n){L(r[2],((t,n)=>L(t,((t,s)=>We(ue[e],t,[n,s])))));const n=H();L(r[1],((s,r)=>{We(ie[e],s,[r])&&!t&&(ge(ce[e],[r,null]),K(n,r))})),t||L(r[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=>ge(ce[e],[s,t])))}})),We(le[e],r[0])}if(!s){let t;L(r[3],((n,s)=>{let r;L(n,((n,o)=>{let l;L(n,(([n,a],i)=>{a!==n&&(ge(fe[e],[s,o,i],a,n,De),t=r=l=1)})),l&&ge(de[e],[s,o],De)})),r&&ge(ae[e],[s],De)})),t&&ge(oe[e],void 0,De)}}},qe=(e,...t)=>(Ze((()=>e(...u(t,c)))),tt),Ge=()=>j(re,(e=>j(e,j))),He=()=>J(re),Ke=e=>J(F(re,c(e))),Qe=(e,t,n,s=0,r)=>{return u(h((l=F(re,c(e)),a=(e,n)=>[v(t)?n:F(e,c(t)),n],o=([e],[t])=>(e<t?-1:1)*(n?-1:1),u([...l?.entries()??[]],(([e,t])=>a(t,e))).sort(o)),s,v(r)?r:s+r),(([,e])=>e));var o,l,a},Ue=(e,t)=>J(F(F(re,c(e)),c(t))),Ve=(e,t,n)=>F(F(F(re,c(e)),c(t)),c(n)),Xe=e=>qe((()=>(e=>_(e,ve,Be))(e)?Ie(e):0)),Ye=()=>qe((()=>Ie({}))),Ze=(e,t)=>{if(-1==r)return;_e();const n=e();return et(t),n},_e=()=>(r++,tt),et=e=>(r>0&&(r--,0==r&&(s=!C(B),r=1,Pe(1),s&&$e(1),r=-1,e?.(j(B,(e=>j(e,(e=>j(e,(e=>[...e]),(([e,t])=>e===t))),G)),G),j(D,(e=>j(e,j))))&&(r=1,L(B,((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))(tt,t,n,s,e))))))),r=-1,s=!1),ge(Te[0],void 0,s),Pe(0),s&&$e(0),ge(Te[1],void 0,s),r=0,d([B,D,p,y,N],I))),tt),tt={getTables:Ge,getTableIds:He,getTable:e=>j(F(re,c(e)),j),getRowIds:Ke,getSortedRowIds:Qe,getRow:(e,t)=>j(F(F(re,c(e)),c(t))),getCellIds:Ue,getCell:Ve,hasTables:()=>!C(re),hasTable:e=>S(re,c(e)),hasRow:(e,t)=>S(F(re,c(e)),c(t)),hasCell:(e,t,n)=>S(F(F(re,c(e)),c(t)),c(n)),getJson:()=>b(re),getSchemaJson:()=>b(Q),setTables:Xe,setTable:(e,t)=>qe((e=>ve(t,e)?Le(e,t):0),e),setRow:(e,t,n)=>qe(((e,t)=>we(c(e),c(t),n)?me(c(e),xe(c(e)),c(t),n):0),e,t),addRow:(e,t)=>Ze((()=>{let n;return we(e,n,t)&&(e=c(e),me(e,xe(e),n=Fe(e),t)),n})),setPartialRow:(e,t,n)=>qe(((e,t)=>{if(we(e,t,n,1)){const s=xe(e);q(n,((n,r)=>Je(e,s,t,r,n)))}}),e,t),setCell:(e,n,s,r)=>qe(((e,n,s)=>w(Re(e,n,s,t(r)==l?r(Ve(e,n,s)):r),(t=>Je(e,xe(e),n,s,t)))),e,n,s),setJson:e=>{try{"{}"===e?Ye():Xe(g(e))}catch{}return tt},setSchema:t=>qe((()=>{if((e=(e=>_(e,(e=>_(e,(e=>{if(!_(e,((e,t)=>[a,i].includes(t))))return!1;const t=e.type;return!(!R(t)&&t!=o||(Y(e.default)!=t&&$(e,i),0))})))))(t))&&(Ce(t),!C(re))){const e=Ge();Ye(),Xe(e)}})),delTables:Ye,delTable:e=>qe((e=>S(re,e)?ze(e):0),e),delRow:(e,t)=>qe(((e,t)=>w(F(re,e),(n=>S(n,t)?Oe(e,n,t):0))),e,t),delCell:(e,t,n,s)=>qe(((e,t,n)=>w(F(re,e),(r=>w(F(r,t),(o=>S(o,n)?je(e,r,t,o,n,s):0))))),e,t,n),delSchema:()=>qe((()=>{Ce({}),e=!1})),transaction:Ze,startTransaction:_e,finishTransaction:et,forEachTable:e=>L(re,((t,n)=>e(n,(e=>L(t,((t,n)=>e(n,(e=>x(t,e))))))))),forEachRow:(e,t)=>L(F(re,c(e)),((e,n)=>t(n,(t=>x(e,t))))),forEachCell:(e,t,n)=>x(F(F(re,c(e)),c(t)),n),addSortedRowIdsListener:(e,t,n,s,r,o,l)=>{let a=Qe(e,t,n,s,r);return be((()=>{const l=Qe(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(tt,e,t,n,s,r,a))}),ce[l?1:0],[e,t])},addWillFinishTransactionListener:e=>be(e,Te[0]),addDidFinishTransactionListener:e=>be(e,Te[1]),callListener:e=>(ye(e,[He,Ke,Ue],(e=>v(e[2])?[]:V(Ve(...e)))),tt),delListener:e=>(pe(e),tt),getListenerStats:()=>({}),createStore:te};return q({Tables:[0,oe],TableIds:[0,le],Table:[1,ae],RowIds:[1,ie],Row:[2,de],CellIds:[2,ue],Cell:[3,fe],InvalidCell:[3,he]},(([e,t],n)=>{tt["add"+n+"Listener"]=(...n)=>be(n[e],t[n[e+1]?1:0],e>0?h(n,0,e):void 0)})),P(tt)};e.createStore=te},"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,s="",n=t(s),l=t(!0),a=t(0),r=t(t),o="type",c="default",i=e=>s+e,u=(e,t)=>e.forEach(t),d=(e,t)=>e.map(t),f=e=>e.length,h=(e,t,s)=>e.slice(t,s),T=(e,...t)=>e.push(...t),g=e=>JSON.stringify(e,((e,t)=>{return y(t,Map)?(s=(e,[t,s])=>(e[t]=s,e),n={},[...t].reduce(s,n)):t;var s,n})),b=JSON.parse,V=isFinite,y=(e,t)=>e instanceof t,p=e=>null==e,v=(e,t,s)=>p(e)?s?.():t(e),S=e=>e==n||e==l,w=e=>t(e)==r,I=(e,t)=>e?.has(t)??!1,R=e=>p(e)||0==(e=>e.size)(e),m=e=>e.clear(),C=(e,t)=>e?.forEach(t),J=(e,t)=>e?.delete(t),L=e=>new Map(e),E=e=>[...e?.keys()??[]],F=(e,t)=>e?.get(t),x=(e,t)=>C(e,((e,s)=>t(s,e))),z=(e,t,s)=>p(s)?(J(e,t),e):e?.set(t,s),O=(e,t,s)=>(I(e,t)||z(e,t,s()),F(e,t)),j=(e,t,s)=>{const n={},l=t??(e=>e);return C(e,((e,t)=>v(l(e),(e=>s?.(e)?0:n[t]=e)))),n},k=(e,t)=>{const s=L(),n=t??(e=>e);return C(e,((e,t)=>s.set(t,n(e)))),s},A=e=>k(e,k),M=(e,t,s,n,l=0)=>v((s?O:F)(e,t[l],l>f(t)-2?s:L),(a=>{if(l>f(t)-2)return n?.(a)&&z(e,t[l]),a;const r=M(a,t,s,n,l+1);return R(a)&&z(e,t[l]),r})),N=e=>new Set(Array.isArray(e)||p(e)?e:[e]),P=(e,t)=>e?.add(t),B=/^\d+$/,D=()=>{const e=[];let t=0;return[()=>e.shift()??s+t++,t=>{B.test(t)&&f(e)<1e3&&T(e,t)}]},W=Object,$=W.keys,q=W.isFrozen,G=W.freeze,H=e=>y(e,W)&&e.constructor==W,K=(e,t)=>!p(((e,t)=>v(e,(e=>e[t])))(e,t)),Q=(e,t)=>delete e[t],U=(e,t)=>d(W.entries(e),(([e,s])=>t(s,e))),X=e=>{return H(e)&&(t=$(e),0==f(t));var t},Y=e=>[e,e],Z=()=>[L(),L()],_=e=>{const s=t(e);return S(s)||s==a&&V(e)?s:void 0},ee=(e,t,s,n=z)=>{const l=(a=e=>!K(t,e),E(e).filter(a));var a;return u($(t),(n=>s(e,n,t[n]))),u(l,(t=>n(e,t))),e},te=(e,t,s)=>p(e)||!H(e)||X(e)||q(e)?(s?.(),!1):(U(e,((s,n)=>{t(s,n)||Q(e,n)})),!X(e)),se=(e,t,s)=>z(e,t,F(e,t)==-s?void 0:s),ne=()=>{let e,t,n,l,r=0;const V=L(),y=L(),B=L(),W=L(),$=L(),q=L(),H=L(),le=L(),ae=L(),re=L(),oe=L(),ce=L(),ie=N(),ue=L(),de=L(),fe=L(),he=Z(),Te=Z(),ge=Z(),be=Z(),Ve=Z(),ye=Z(),pe=Z(),ve=Z(),Se=Z(),we=Z(),Ie=Z(),Re=Z(),me=Z(),Ce=Z(),[Je,Le,Ee,Fe]=(e=>{let t;const[n,l]=D(),a=L();return[(e,l,r,o=[],c=(()=>[]))=>{t??=Nt;const i=n();return z(a,i,[e,l,r,o,c]),P(M(l,r??[s],N),i),i},(e,n,...l)=>u(((e,t=[s])=>{const n=[],l=(e,s)=>s==f(t)?T(n,e):null===t[s]?C(e,(e=>l(e,s+1))):u([t[s],null],(t=>l(F(e,t),s+1)));return l(e,0),n})(e,n),(e=>C(e,(e=>F(a,e)[0](t,...n??[],...l))))),e=>v(F(a,e),(([,t,n])=>(M(t,n??[s],void 0,(t=>(J(t,e),R(t)?1:0))),z(a,e),l(e),n))),e=>v(F(a,e),(([e,,s=[],n,l])=>{const a=(...r)=>{const o=f(r);o==f(s)?e(t,...r,...l(r)):p(s[o])?u(n[o]?.(...r)??[],(e=>a(...r,e))):a(...r,s[o])};a()}))]})(),xe=e=>{if(!te(e,((e,t)=>[o,c].includes(t))))return!1;const t=e.type;return!(!S(t)&&t!=a||(_(e.default)!=t&&Q(e,c),0))},ze=(t,s)=>(!e||I(ae,s)||ct(s))&&te(t,((e,t)=>Oe(s,t,e)),(()=>ct(s))),Oe=(e,t,s,n)=>te(n?s:Me(s,e,t),((n,l)=>v(je(e,t,l,n),(e=>(s[l]=e,!0)),(()=>!1))),(()=>ct(e,t))),je=(t,s,n,l)=>e?v(F(F(ae,t),n),(e=>_(l)!=e.type?ct(t,s,n,l,e.default):l),(()=>ct(t,s,n,l))):p(_(l))?ct(t,s,n,l):l,ke=(e,t)=>te(t?e:Ne(e),((t,s)=>v(Ae(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>it())),Ae=(e,s)=>t?v(F(oe,e),(t=>_(s)!=t.type?it(e,s,t.default):s),(()=>it(e,s))):p(_(s))?it(e,s):s,Me=(e,t,s)=>(v(F(re,t),(([n,l])=>{C(n,((t,s)=>{K(e,s)||(e[s]=t)})),C(l,(n=>{K(e,n)||ct(t,s,n)}))})),e),Ne=e=>(t&&(C(ce,((t,s)=>{K(e,s)||(e[s]=t)})),C(ie,(t=>{K(e,t)||it(t)}))),e),Pe=e=>ee(ae,e,((e,t,s)=>{const n=L(),l=N();ee(O(ae,t,L),s,((e,t,s)=>{z(e,t,s),v(s.default,(e=>z(n,t,e)),(()=>P(l,t)))})),z(re,t,[n,l])}),((e,t)=>{z(ae,t),z(re,t)})),Be=e=>ee(oe,e,((e,t,s)=>{z(oe,t,s),v(s.default,(e=>z(ce,t,e)),(()=>P(ie,t)))}),((e,t)=>{z(oe,t),z(ce,t),J(ie,t)})),De=e=>X(e)?zt():Jt(e),We=e=>ee(de,e,((e,t,s)=>$e(t,s)),((e,t)=>Ze(t))),$e=(e,t)=>ee(O(de,e,(()=>(st(e,1),L()))),t,((t,s,n)=>qe(e,t,s,n)),((t,s)=>_e(e,t,s))),qe=(e,t,s,n,l)=>ee(O(t,s,(()=>(nt(e,s,1),L()))),n,((t,n,l)=>Ge(e,s,t,n,l)),((n,a)=>et(e,t,s,n,a,l))),Ge=(e,t,s,n,l)=>{I(s,n)||lt(e,t,n,1);const a=F(s,n);l!==a&&(at(e,t,n,a,l),z(s,n,l))},He=(e,t,s,n,l)=>v(F(t,s),(t=>Ge(e,s,t,n,l)),(()=>qe(e,t,s,Me({[n]:l},e,s)))),Ke=e=>X(e)?Ot():Lt(e),Qe=e=>ee(fe,e,((e,t,s)=>Ue(t,s)),((e,t)=>tt(t))),Ue=(e,t)=>{I(fe,e)||rt(e,1);const s=F(fe,e);t!==s&&(ot(e,s,t),z(fe,e,t))},Xe=e=>{const[t]=O(ue,e,D),s=t();return I(F(de,e),s)?Xe(e):s},Ye=e=>F(de,e)??$e(e,{}),Ze=e=>$e(e,{}),_e=(e,t,s)=>{const[,n]=O(ue,e,D);n(s),qe(e,t,s,{},!0)},et=(e,t,s,n,l,a)=>{const r=F(F(re,e)?.[0],l);if(!p(r)&&!a)return Ge(e,s,n,l,r);const o=t=>{at(e,s,t,F(n,t)),lt(e,s,t,-1),z(n,t)};p(r)?o(l):x(n,o),R(n)&&(nt(e,s,-1),R(z(t,s))&&(st(e,-1),z(de,e),z(ue,e)))},tt=e=>{const t=F(ce,e);if(!p(t))return Ue(e,t);ot(e,F(fe,e)),rt(e,-1),z(fe,e)},st=(e,t)=>se(V,e,t),nt=(e,t,s)=>se(O(y,e,L),t,s),lt=(e,t,s,n)=>se(O(O(B,e,L),t,L),s,n),at=(e,t,s,n,l)=>O(O(O(W,e,L),t,L),s,(()=>[n,0]))[1]=l,rt=(e,t)=>se($,e,t),ot=(e,t,s)=>O(q,e,(()=>[t,0]))[1]=s,ct=(e,t,s,n,l)=>(T(O(O(O(H,e,L),t,L),s,(()=>[])),n),l),it=(e,t,s)=>(T(O(le,e,(()=>[])),t),s),ut=(e,t,s)=>v(F(F(F(W,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Y(It(e,t,s))])),dt=e=>v(F(q,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Y(Ct(e))])),ft=e=>R(H)||R(Se[e])?0:C(e?k(H,A):H,((t,s)=>C(t,((t,n)=>C(t,((t,l)=>Le(Se[e],[s,n,l],t))))))),ht=e=>R(le)||R(we[e])?0:C(e?k(le):le,((t,s)=>Le(we[e],[s],t))),Tt=(e,t,s)=>{if(!R(t))return Le(e,s),1},gt=e=>{const t=R(Ve[e]),s=R(pe[e])&&R(be[e])&&t&&R(Te[e]),n=R(ve[e])&&R(ye[e])&&R(ge[e])&&R(he[e]);if(!s||!n){const l=e?[k(V),A(y),k(B,A),k(W,A)]:[V,y,B,W];if(!s){C(l[2],((t,s)=>C(t,((t,n)=>Tt(pe[e],t,[s,n])))));const s=N();C(l[1],((n,l)=>{Tt(be[e],n,[l])&&!t&&(Le(Ve[e],[l,null]),P(s,l))})),t||C(l[3],((t,n)=>{if(!I(s,n)){const s=N();C(t,(e=>C(e,(([t,n],l)=>n!==t?P(s,l):J(e,l))))),C(s,(t=>Le(Ve[e],[n,t])))}})),Tt(Te[e],l[0])}if(!n){let t;C(l[3],((s,n)=>{let l;C(s,((s,a)=>{let r;C(s,(([s,o],c)=>{o!==s&&(Le(ve[e],[n,a,c],o,s,ut),t=l=r=1)})),r&&Le(ye[e],[n,a],ut)})),l&&Le(ge[e],[n],ut)})),t&&Le(he[e],void 0,ut)}}},bt=e=>{const t=R(Re[e]),s=R(me[e])&&R(Ie[e]);if(!t||!s){const n=e?[k($),k(q)]:[$,q];if(t||Tt(Re[e],n[0]),!s){let t;C(n[1],(([s,n],l)=>{n!==s&&(Le(me[e],[l],n,s,dt),t=1)})),t&&Le(Ie[e],void 0,dt)}}},Vt=(e,...t)=>(kt((()=>e(...d(t,i)))),Nt),yt=()=>j(de,(e=>j(e,j))),pt=()=>E(de),vt=e=>E(F(de,i(e))),St=(e,t,s,n=0,l)=>{return d(h((r=F(de,i(e)),o=(e,s)=>[p(t)?s:F(e,i(t)),s],a=([e],[t])=>(e<t?-1:1)*(s?-1:1),d([...r?.entries()??[]],(([e,t])=>o(t,e))).sort(a)),n,p(l)?l:n+l),(([,e])=>e));var a,r,o},wt=(e,t)=>E(F(F(de,i(e)),i(t))),It=(e,t,s)=>F(F(F(de,i(e)),i(t)),i(s)),Rt=()=>j(fe),mt=()=>E(fe),Ct=e=>F(fe,i(e)),Jt=e=>Vt((()=>(e=>te(e,ze,ct))(e)?We(e):0)),Lt=e=>Vt((()=>ke(e)?Qe(e):0)),Et=e=>{try{De(b(e))}catch{}return Nt},Ft=t=>Vt((()=>{if((e=te(t,(e=>te(e,xe))))&&(Pe(t),!R(de))){const e=yt();zt(),Jt(e)}})),xt=e=>Vt((()=>{if(t=(e=>te(e,xe))(e)){const s=Rt();jt(),Ot(),t=!0,Be(e),Lt(s)}})),zt=()=>Vt((()=>We({}))),Ot=()=>Vt((()=>Qe({}))),jt=()=>Vt((()=>{Be({}),t=!1})),kt=(e,t)=>{if(-1==r)return;At();const s=e();return Mt(t),s},At=()=>(r++,Nt),Mt=e=>(r>0&&(r--,0==r&&(n=!R(W),l=!R(q),r=1,ft(1),n&&gt(1),ht(1),l&&bt(1),r=-1,e?.(j(W,(e=>j(e,(e=>j(e,(e=>[...e]),(([e,t])=>e===t))),X)),X),j(H,(e=>j(e,j))),j(q,(e=>[...e]),(([e,t])=>e===t)),j(le))&&(r=1,C(W,((e,t)=>C(e,((e,s)=>C(e,(([e],n)=>((e,t,s,n,l)=>p(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l))(Nt,t,s,n,e))))))),C(q,(([e],t)=>((e,t,s)=>p(s)?e.delValue(t):e.setValue(t,s))(Nt,t,e))),r=-1,n=l=!1),Le(Ce[0],void 0,n,l),ft(0),n&&gt(0),ht(0),l&&bt(0),Le(Ce[1],void 0,n,l),r=0,u([V,y,B,W,H,$,q,le],m))),Nt),Nt={getTables:yt,getTableIds:pt,getTable:e=>j(F(de,i(e)),j),getRowIds:vt,getSortedRowIds:St,getRow:(e,t)=>j(F(F(de,i(e)),i(t))),getCellIds:wt,getCell:It,getValues:Rt,getValueIds:mt,getValue:Ct,hasTables:()=>!R(de),hasTable:e=>I(de,i(e)),hasRow:(e,t)=>I(F(de,i(e)),i(t)),hasCell:(e,t,s)=>I(F(F(de,i(e)),i(t)),i(s)),hasValues:()=>!R(fe),hasValue:e=>I(fe,i(e)),getTablesJson:()=>g(de),getValuesJson:()=>g(fe),getJson:()=>g([de,fe]),getTablesSchemaJson:()=>g(ae),getValuesSchemaJson:()=>g(oe),getSchemaJson:()=>g([ae,oe]),setTables:Jt,setTable:(e,t)=>Vt((e=>ze(t,e)?$e(e,t):0),e),setRow:(e,t,s)=>Vt(((e,t)=>Oe(e,t,s)?qe(e,Ye(e),t,s):0),e,t),addRow:(e,t)=>kt((()=>{let s;return Oe(e,s,t)&&(e=i(e),qe(e,Ye(e),s=Xe(e),t)),s})),setPartialRow:(e,t,s)=>Vt(((e,t)=>{if(Oe(e,t,s,1)){const n=Ye(e);U(s,((s,l)=>He(e,n,t,l,s)))}}),e,t),setCell:(e,t,s,n)=>Vt(((e,t,s)=>v(je(e,t,s,w(n)?n(It(e,t,s)):n),(n=>He(e,Ye(e),t,s,n)))),e,t,s),setValues:Lt,setPartialValues:e=>Vt((()=>ke(e,1)?U(e,((e,t)=>Ue(t,e))):0)),setValue:(e,t)=>Vt((e=>v(Ae(e,w(t)?t(Ct(e)):t),(t=>Ue(e,t)))),e),setTablesJson:Et,setValuesJson:e=>{try{Ke(b(e))}catch{}return Nt},setJson:e=>{try{const[t,s]=b(e);De(t),Ke(s)}catch{Et(e)}return Nt},setTablesSchema:Ft,setValuesSchema:xt,setSchema:(e,t)=>Vt((()=>{Ft(e),xt(t)})),delTables:zt,delTable:e=>Vt((e=>I(de,e)?Ze(e):0),e),delRow:(e,t)=>Vt(((e,t)=>v(F(de,e),(s=>I(s,t)?_e(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Vt(((e,t,s)=>v(F(de,e),(l=>v(F(l,t),(a=>I(a,s)?et(e,l,t,a,s,n):0))))),e,t,s),delValues:Ot,delValue:e=>Vt((e=>I(fe,e)?tt(e):0),e),delTablesSchema:()=>Vt((()=>{Pe({}),e=!1})),delValuesSchema:jt,transaction:kt,startTransaction:At,finishTransaction:Mt,forEachTable:e=>C(de,((t,s)=>e(s,(e=>C(t,((t,s)=>e(s,(e=>x(t,e))))))))),forEachRow:(e,t)=>C(F(de,i(e)),((e,s)=>t(s,(t=>x(e,t))))),forEachCell:(e,t,s)=>x(F(F(de,i(e)),i(t)),s),forEachValue:e=>x(fe,e),addSortedRowIdsListener:(e,t,s,n,l,a,r)=>{let o=St(e,t,s,n,l);return Je((()=>{const r=St(e,t,s,n,l);var c,i,u;i=o,f(c=r)===f(i)&&(u=(e,t)=>i[t]===e,c.every(u))||(o=r,a(Nt,e,t,s,n,l,o))}),Ve[r?1:0],[e,t],[pt])},addWillFinishTransactionListener:e=>Je(e,Ce[0]),addDidFinishTransactionListener:e=>Je(e,Ce[1]),callListener:e=>(Fe(e),Nt),delListener:e=>(Ee(e),Nt),getListenerStats:()=>({}),createStore:ne};return U({Tables:[0,he],TableIds:[0,Te],Table:[1,ge,[pt]],RowIds:[1,be,[pt]],Row:[2,ye,[pt,vt]],CellIds:[2,pe,[pt,vt]],Cell:[3,ve,[pt,vt,wt],e=>Y(It(...e))],InvalidCell:[3,Se],Values:[0,Ie],ValueIds:[0,Re],Value:[1,me,[mt],e=>Y(Ct(e[0]))],InvalidValue:[1,we]},(([e,t,s,n],l)=>{Nt["add"+l+"Listener"]=(...l)=>Je(l[e],t[l[e+1]?1:0],e>0?h(l,0,e):void 0,s,n)})),G(Nt)};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="default",c="utf8",d="Listener",u="Result",f="add",h="Table",g="RowIds",w="CellIds",L="Cell",p=e=>n+e,R=(e,t)=>e.includes(t),v=(e,t)=>e.every(t),y=(e,t)=>m(e)===m(t)&&v(e,((e,s)=>t[s]===e)),I=(e,t)=>v(e,((s,n)=>0==n||t(e[n-1],s)<=0)),S=(e,t)=>e.sort(t),T=(e,t)=>e.forEach(t),b=(e,t)=>e.map(t),C=e=>k(e,((e,t)=>e+t),0),m=e=>e.length,E=e=>0==m(e),k=(e,t,s)=>e.reduce(t,s),M=(e,t,s)=>e.slice(t,s),x=(e,...t)=>e.push(...t),A=e=>e.pop(),D=e=>e.shift(),F=e=>JSON.stringify(e,((e,t)=>z(t,Map)?k([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),J=JSON.parse,P=Math.max,Q=Math.min,j=isFinite,z=(e,t)=>e instanceof t,N=e=>null==e,O=(e,t,s)=>N(e)?s?.():t(e),W=e=>e==o||e==r,B=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),_=e=>[...e?.keys()??[]],ee=(e,t)=>e?.get(t),te=(e,t)=>X(e,((e,s)=>t(s,e))),se=(e,t,s)=>N(s)?(Y(e,t),e):e?.set(t,s),ne=(e,t,s)=>(G(e,t)||se(e,t,s()),ee(e,t)),oe=(e,t,s)=>{const n={},o=t??(e=>e);return X(e,((e,t)=>O(o(e),(e=>s?.(e)?0:n[t]=e)))),n},re=(e,t)=>{const s=Z(),n=t??(e=>e);return X(e,((e,t)=>s.set(t,n(e)))),s},ae=e=>re(e,re),ie=(e,t,s,n,o=0)=>O((s?ne:ee)(e,t[o],o>m(t)-2?s:Z),(r=>{if(o>m(t)-2)return n?.(r)&&se(e,t[o]),r;const a=ie(r,t,s,n,o+1);return K(r)&&se(e,t[o]),a})),le=e=>new Set(q(e)||N(e)?e:[e]),ce=(e,t)=>e?.add(t),de=(e,t,s)=>{const n=e.hasRow,o=Z(),r=Z(),a=Z(),i=Z(),l=Z(),c=(t,s,...n)=>{const o=ne(l,t,le);return T(n,(t=>ce(o,t)&&s&&e.callListener(t))),n},d=(t,...s)=>O(ee(l,t),(n=>{T(E(s)?U(n):s,(t=>{e.delListener(t),Y(n,t)})),K(n)&&se(l,t)})),u=(e,s)=>{se(o,e,s),G(r,e)||(se(r,e,t()),se(a,e,Z()),se(i,e,Z()))},f=e=>{se(o,e),se(r,e),se(a,e),se(i,e),d(e)};return[()=>e,()=>_(o),e=>te(r,e),e=>G(r,e),e=>ee(o,e),e=>ee(r,e),(e,t)=>se(r,e,t),u,(t,o,r,l,f)=>{u(t,o);const h=Z(),g=Z(),w=ee(a,t),L=ee(i,t),p=t=>{const r=s=>e.getCell(o,t,s),a=ee(w,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||q(a)&&q(i)&&y(a,i)||se(h,t,[a,i]),!N(f)){const e=ee(L,t),s=n(o,t)?f(r,t):void 0;e!=s&&se(g,t,s)}},R=e=>{r((()=>{X(h,(([,e],t)=>se(w,t,e))),X(g,((e,t)=>se(L,t,e)))}),h,g,w,L,e),V(h),V(g)};te(w,p),e.hasTable(o)&&T(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,()=>te(l,f),c,d]},ue=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),fe=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},he=/^\d+$/,ge=()=>{const e=[];let t=0;return[()=>D(e)??n+t++,t=>{he.test(t)&&m(e)<1e3&&x(e,t)}]},we=e=>{let t;const[s,o]=ge(),r=Z();return[(o,a,i)=>{t??=e();const l=s();return se(r,l,[o,a,i]),ce(ie(a,i??[n],le),l),l},(e,s,...o)=>T(((e,t=[n])=>{const s=[],o=(e,n)=>n==m(t)?x(s,e):null===t[n]?X(e,(e=>o(e,n+1))):T([t[n],null],(t=>o(ee(e,t),n+1)));return o(e,0),s})(e,s),(e=>X(e,(e=>ee(r,e)[0](t,...s??[],...o))))),e=>O(ee(r,e),(([,t,s])=>(ie(t,s??[n],void 0,(t=>(Y(t,e),K(t)?1:0))),se(r,e),o(e),s))),(e,s,n)=>O(ee(r,e),(([e,,o=[]])=>{const r=(...a)=>{const i=m(a);i==m(o)?e(t,...a,...n(a)):N(o[i])?T(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},Le=Object,pe=Le.keys,Re=Le.isFrozen,ve=Le.freeze,ye=(e,t)=>!N(((e,t)=>O(e,(e=>e[t])))(e,t)),Ie=(e,t)=>delete e[t],Se=(e,t)=>b(Le.entries(e),(([e,s])=>t(s,e))),Te=e=>E(pe(e)),be=e=>{const t=s(e);return W(t)||t==a&&j(e)?t:void 0},Ce=(e,t,s,n,o)=>N(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),me=fe((e=>{let t,s,o,r=100,a=Z(),i=1;const l=Z(),c=Z(),[d,u,f]=we((()=>Q)),h=Z(),g=Z(),w=[],L=[],p=(t,s)=>{i=0,e.transaction((()=>X(ee(h,s),((s,n)=>X(s,((s,o)=>X(s,((s,r)=>Ce(e,n,o,r,s[t]))))))))),i=1},v=e=>{se(h,e),se(g,e),u(c,[e])},y=(e,t)=>T(((e,t)=>e.splice(0,t))(e,t??m(e)),v),I=()=>y(w,m(w)-r),S=e.addCellListener(null,null,null,((e,s,n,r,l,c)=>{if(i){O(t,(()=>{x(w,t),I(),y(L),t=void 0,o=1}));const e=ne(a,s,Z),i=ne(e,n,Z),d=ne(i,r,(()=>[c,void 0]));d[1]=l,d[0]===l&&K(se(i,r))&&K(se(e,n))&&K(se(a,s))&&(t=A(w),o=1),M()}})),b=(e="")=>(N(t)&&(t=n+s++,se(h,t,a),J(t,e),a=Z(),o=1),t),C=()=>{E(w)||(((e,...t)=>{e.unshift(...t)})(L,b()),p(0,t),t=A(w),o=1)},k=()=>{E(L)||(x(w,t),t=D(L),p(1,t),o=1)},M=()=>{o&&(u(l),o=0)},F=e=>{const t=b(e);return M(),t},J=(e,t)=>(P(e)&&ee(g,e)!==t&&(se(g,e,t),u(c,[e])),Q),P=e=>G(h,e),Q={setSize:e=>(r=e,I(),Q),addCheckpoint:F,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...L]],forEachCheckpoint:e=>te(g,e),hasCheckpoint:P,getCheckpoint:e=>ee(g,e),goBackward:()=>(C(),M(),Q),goForward:()=>(k(),M(),Q),goTo:e=>{const s=R(w,e)?C:R(L,e)?k: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)||v(t),t=void 0,s=0,F(),Q),destroy:()=>{e.delListener(S)},getListenerStats:()=>({})};return ve(Q.clear())})),Ee=(e,t)=>e<t?-1:1,ke=fe((e=>{const t=Z(),s=Z(),[o,r,a,i,l,c,d,,u,f,h]=de(e,Z,(e=>N(e)?n:q(e)?b(e,p):p(e))),[g,w,L]=we((()=>v)),R=(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=Ee)=>{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=le(),p=le(),R=c(e);if(X(o,(([e,t],s)=>{const n=le(e),o=le(t);X(n,(e=>Y(o,e)?Y(n,e):0)),X(n,(e=>{ce(L,e),O(ee(R,e),(t=>{Y(t,s),K(t)&&(se(R,e),g=1)}))})),X(o,(e=>{ce(L,e),G(R,e)||(se(R,e,le()),g=1),ce(ee(R,e),s),N(r)||ce(p,e)}))})),n(),K(f)||(h?te(R,(e=>ce(p,e))):te(a,(e=>O(ee(u,e),(e=>ce(p,e))))),X(p,(e=>{const t=(t,s)=>i(ee(f,t),ee(f,s),e),s=[...ee(R,e)];I(s,t)||(se(R,e,le(S(s,t))),ce(L,e))}))),(g||h)&&!N(l)){const t=[...R];I(t,l)||(d(e,Z(S(t,l))),g=1)}g&&w(t,[e]),X(L,(t=>w(s,[e,t])))}),ue(o),O(r,ue)),v},delIndexDefinition:e=>(f(e),v),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>R(t,e,s))))),forEachSlice:(e,t)=>R(e,t,c(e)),hasIndex:i,hasSlice:(e,t)=>G(c(e),t),getTableId:l,getSliceIds:e=>_(c(e)),getSliceRowIds:(e,t)=>U(ee(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 ve(v)})),Me=Z([["avg",[(e,t)=>C(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=>P(...e),(e,t)=>P(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:P(t,e)]],["min",[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)]],["sum",[e=>C(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),xe=(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},Ae=fe((e=>{const t=Z(),[s,o,r,a,i,l,c,,d,u,f]=de(e,H,(e=>isNaN(e)||N(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,w]=we((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=B(n)?[n,r,a,i]:ee(Me,n)??ee(Me,"sum");return d(e,s,((s,n,o,r,a,i)=>{const d=l(e),f=$(r);i||=N(d),s();let h=xe(d,f,r,n,u,i);j(h)||(h=void 0),h!=d&&(c(e,h),g(t,[e],h,d))}),ue(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 ve(L)})),De=(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:()=>(O(a,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ve(l)},Fe="storage",Je=globalThis.window,Pe=(e,t,s)=>{let n;return De(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Je.addEventListener(Fe,n)}),(()=>{Je.removeEventListener(Fe,n),n=void 0}))},Qe=e=>e.headers.get("ETag"),je=fe((e=>{const t=e.createStore,[s,o,r,a,i,,,l,,c,p,R,y]=de(e,(()=>!0),H),I=t(),S=t(),b=Z(),C=(e,t,...s)=>T(s,(s=>ce(ne(ne(b,t,Z),e,le),s))),k=e=>{O(ee(b,e),(e=>{te(e,((e,t)=>X(t,(t=>e.delListener(t))))),V(e)})),T([S,I],(t=>t.delTable(e)))},A=(e,t,s)=>C(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),D={setQueryDefinition:(t,s,o)=>{l(t,s),k(t);const r=[],a=[[null,[s,null,null,[],Z()]]],i=[],c=[],d=[];o({select:(e,t)=>{const s=B(e)?[m(r)+n,e]:[N(t)?e:t,s=>s(e,t)];return x(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=N(s)||B(t)?null:t,o=N(n)?t:s,r=[e,[e,n,B(o)?o:e=>e(o),[],Z()]];return x(a,r),{as:e=>r[0]=e}},where:(e,t,s)=>x(i,B(e)?e:N(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,B(t)?[t,s,n,o]:ee(Me,t)??[(e,t)=>t]]];return x(c,r),{as:e=>r[0]=e}},having:(e,t)=>x(d,B(e)?e:s=>s(e)===t)});const u=Z(r);if(K(u))return D;const f=Z(a);te(f,((e,[,t])=>O(ee(f,t),(({3:t})=>N(e)?0:x(t,e)))));const h=Z(c);let g=I;if(K(h)&&E(d))g=S;else{A(t,g,S);const e=Z();te(h,((t,[s,n])=>ce(ne(e,s,le),[t,n])));const s=le();te(u,(t=>G(e,t)?0:ce(s,t)));const n=Z(),o=(s,n,o,r)=>O(s,(([a,i,l,c])=>{te(n,((t,[s])=>{const n=ne(a,t,Z),i=ee(n,o),l=r?void 0:s;if(i!==l){const s=le([[i,l]]),r=$(n);se(n,o,l),X(ee(e,t),(([e,t])=>{const o=xe(c[e],r,n,s,t);c[e]=N(be(o))?null:o}))}})),K(i)||!v(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);x(c,n),x(d,o),h||=s})),te(e,(e=>{const[s,,n]=l(t,i,e);(h||s)&&se(u,e,[n])})),h&&o(ie(n,c,void 0,(([,e])=>(Y(e,i),K(e)))),u,i,1),f&&o(ie(n,d,(()=>{const e={};return X(s,(s=>e[s]=g.getCell(t,i,s))),[Z(),le(),void 0,e]}),(([,e])=>{ce(e,i)})),u,i)})))}A(t,e,g);const w=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);T(a,(s=>{const[o,,r,a,i]=ee(f,s),c=r?.(l,n),[d,u]=ee(i,n)??[];c!=d&&(N(u)||y(t,u),se(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]:[ee(f,t)?.[0],ee(ee(f,t)?.[4],n)?.[0],o]);g.transaction((()=>v(i,(e=>e(o)))?te(u,((e,s)=>Ce(g,t,n,e,s(o,n)))):g.delRow(t,n)))})(n)},{3:L}=ee(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})=>O(ee(e,r),(([,s])=>{y(t,s),se(e,r)})))))}))))),D},delQueryDefinition:e=>(k(e),c(e),D),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:i,delListener:e=>(S.delListener(e),D),destroy:p,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=S.getListenerStats();return n}};return Se({[h]:[1,1],[g]:[0,1],SortedRowIds:[0,5],Row:[1,2],[w]:[0,2],[L]:[1,3]},(([e,t],s)=>{T(e?["get","has","forEach"]:["get"],(e=>D[e+u+s]=(...t)=>S[e+s](...t))),D[f+u+s+d]=(...e)=>S[f+s+d](...M(e,0,t),((s,...n)=>e[t](D,...n)))})),ve(D)})),ze=fe((e=>{const t=Z(),s=Z(),o=Z(),r=Z(),[a,i,l,c,d,u,,,f,h,g]=de(e,(()=>[Z(),Z(),Z(),Z()]),(e=>N(e)?void 0:e+n)),[w,L,p]=we((()=>I)),R=(e,t,s)=>O(u(e),(([n,,o])=>{if(!G(o,t)){const r=le();if(d(e)!=y(e))ce(r,t);else{let e=t;for(;!N(e)&&!G(r,e);)ce(r,e),e=ee(n,e)}if(s)return r;se(o,t,r)}return ee(o,t)})),v=(e,t)=>O(u(e),(([,,e])=>se(e,t))),y=e=>ee(t,e),I={setRelationshipDefinition:(e,n,a,i)=>(se(t,e,a),f(e,n,((t,n)=>{const a=le(),i=le(),l=le(),[c,d]=u(e);X(n,(([t,s],n)=>{N(t)||(ce(i,t),O(ee(d,t),(e=>{Y(e,n),K(e)&&se(d,t)}))),N(s)||(ce(i,s),G(d,s)||se(d,s,le()),ce(ee(d,s),n)),ce(a,n),se(c,n,s),te(ee(r,e),(t=>{G(R(e,t),n)&&ce(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])}))}),ue(i)),I),delRelationshipDefinition:e=>(se(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)=>ee(u(e)?.[0],t),getLocalRowIds:(e,t)=>U(ee(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 ve(I)})),Ne=e=>[e,e],Oe=()=>[Z(),Z()],We=(e,t,s,n=se)=>{const o=(r=e=>!ye(t,e),_(e).filter(r));var r;return T(pe(t),(n=>s(e,n,t[n]))),T(o,(t=>n(e,t))),e},Be=(e,t,s)=>N(e)||!(e=>z(e,Le)&&e.constructor==Le)(e)||Te(e)||Re(e)?(s?.(),!1):(Se(e,((s,n)=>{t(s,n)||Ie(e,n)})),!Te(e)),qe=(e,t,s)=>se(e,t,ee(e,t)==-s?void 0:s),He=()=>{let e,t,s=0;const n=Z(),o=Z(),r=Z(),i=Z(),c=Z(),u=Z(),v=Z(),I=Z(),C=Z(),m=Oe(),E=Oe(),k=Oe(),A=Oe(),D=Oe(),P=Oe(),Q=Oe(),j=Oe(),z=Oe(),q=Oe(),[H,$,U,ie]=we((()=>lt)),de=(t,s)=>(!e||G(u,s)||$e(s))&&Be(t,((e,t)=>ue(s,t,e)),(()=>$e(s))),ue=(e,t,s,n)=>Be(n?s:he(s,e,t),((n,o)=>O(fe(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>$e(e,t))),fe=(t,s,n,o)=>e?O(ee(ee(u,t),n),(e=>be(o)!=e.type?$e(t,s,n,o,e.default):o),(()=>$e(t,s,n,o))):N(be(o))?$e(t,s,n,o):o,he=(e,t,s)=>(O(ee(v,t),(([n,o])=>{X(n,((t,s)=>{ye(e,s)||(e[s]=t)})),X(o,(n=>{ye(e,n)||$e(t,s,n)}))})),e),Le=e=>We(u,e,((e,t,s)=>{const n=Z(),o=le();We(ne(u,t,Z),s,((e,t,s)=>{se(e,t,s),O(s.default,(e=>se(n,t,e)),(()=>ce(o,t)))})),se(v,t,[n,o])}),((e,t)=>{se(u,t),se(v,t)})),pe=e=>We(C,e,((e,t,s)=>Re(t,s)),((e,t)=>De(t))),Re=(e,t)=>We(ne(C,e,(()=>(Pe(e,1),Z()))),t,((t,s,n)=>me(e,t,s,n)),((t,s)=>Fe(e,t,s))),me=(e,t,s,n,o)=>We(ne(t,s,(()=>(Qe(e,s,1),Z()))),n,((t,n,o)=>ke(e,s,t,n,o)),((n,r)=>Je(e,t,s,n,r,o))),ke=(e,t,s,n,o)=>{G(s,n)||je(e,t,n,1);const r=ee(s,n);o!==r&&(ze(e,t,n,r,o),se(s,n,o))},Me=(e,t,s,n,o)=>O(ee(t,s),(t=>ke(e,s,t,n,o)),(()=>me(e,t,s,he({[n]:o},e,s)))),xe=e=>{const[t]=ne(I,e,ge),s=t();return G(ee(C,e),s)?xe(e):s},Ae=e=>ee(C,e)??Re(e,{}),De=e=>Re(e,{}),Fe=(e,t,s)=>{const[,n]=ne(I,e,ge);n(s),me(e,t,s,{},!0)},Je=(e,t,s,n,o,r)=>{const a=ee(ee(v,e)?.[0],o);if(!N(a)&&!r)return ke(e,s,n,o,a);const i=t=>{ze(e,s,t,ee(n,t)),je(e,s,t,-1),se(n,t)};N(a)?i(o):te(n,i),K(n)&&(Qe(e,s,-1),K(se(t,s))&&(Pe(e,-1),se(C,e),se(I,e)))},Pe=(e,t)=>qe(n,e,t),Qe=(e,t,s)=>qe(ne(o,e,Z),t,s),je=(e,t,s,n)=>qe(ne(ne(r,e,Z),t,Z),s,n),ze=(e,t,s,n,o)=>ne(ne(ne(i,e,Z),t,Z),s,(()=>[n,0]))[1]=o,$e=(e,t,s,n,o)=>(x(ne(ne(ne(c,e,Z),t,Z),s,(()=>[])),n),o),Ge=(e,t,s)=>O(ee(ee(ee(i,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Ne(st(e,t,s))])),Ke=e=>K(c)||K(z[e])?0:X(e?re(c,ae):c,((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(D[e]),s=K(Q[e])&&K(A[e])&&t&&K(E[e]),a=K(j[e])&&K(P[e])&&K(k[e])&&K(m[e]);if(!s||!a){const l=e?[re(n),ae(o),re(r,ae),re(i,ae)]:[n,o,r,i];if(!s){X(l[2],((t,s)=>X(t,((t,n)=>Ue(Q[e],t,[s,n])))));const s=le();X(l[1],((n,o)=>{Ue(A[e],n,[o])&&!t&&($(D[e],[o,null]),ce(s,o))})),t||X(l[3],((t,n)=>{if(!G(s,n)){const s=le();X(t,(e=>X(e,(([t,n],o)=>n!==t?ce(s,o):Y(e,o))))),X(s,(t=>$(D[e],[n,t])))}})),Ue(E[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&&($(j[e],[n,r,l],i,s,Ge),t=o=a=1)})),a&&$(P[e],[n,r],Ge)})),o&&$(k[e],[n],Ge)})),t&&$(m[e],void 0,Ge)}}},Xe=(e,...t)=>(rt((()=>e(...b(t,p)))),lt),Ye=()=>oe(C,(e=>oe(e,oe))),Ze=()=>_(C),_e=e=>_(ee(C,p(e))),et=(e,t,s,n=0,o)=>{return b(M(S((r=ee(C,p(e)),a=(e,s)=>[N(t)?s:ee(e,p(t)),s],b([...r?.entries()??[]],(([e,t])=>a(t,e)))),(([e],[t])=>Ee(e,t)*(s?-1:1))),n,N(o)?o:n+o),(([,e])=>e));var r,a},tt=(e,t)=>_(ee(ee(C,p(e)),p(t))),st=(e,t,s)=>ee(ee(ee(C,p(e)),p(t)),p(s)),nt=e=>Xe((()=>(e=>Be(e,de,$e))(e)?pe(e):0)),ot=()=>Xe((()=>pe({}))),rt=(e,t)=>{if(-1==s)return;at();const n=e();return it(t),n},at=()=>(s++,lt),it=e=>(s>0&&(s--,0==s&&(t=!K(i),s=1,Ke(1),t&&Ve(1),s=-1,e?.(oe(i,(e=>oe(e,(e=>oe(e,(e=>[...e]),(([e,t])=>e===t))),Te)),Te),oe(c,(e=>oe(e,oe))))&&(s=1,X(i,((e,t)=>X(e,((e,s)=>X(e,(([e],n)=>Ce(lt,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,T([i,c,n,o,r],V))),lt),lt={getTables:Ye,getTableIds:Ze,getTable:e=>oe(ee(C,p(e)),oe),getRowIds:_e,getSortedRowIds:et,getRow:(e,t)=>oe(ee(ee(C,p(e)),p(t))),getCellIds:tt,getCell:st,hasTables:()=>!K(C),hasTable:e=>G(C,p(e)),hasRow:(e,t)=>G(ee(C,p(e)),p(t)),hasCell:(e,t,s)=>G(ee(ee(C,p(e)),p(t)),p(s)),getJson:()=>F(C),getSchemaJson:()=>F(u),setTables:nt,setTable:(e,t)=>Xe((e=>de(t,e)?Re(e,t):0),e),setRow:(e,t,s)=>Xe(((e,t)=>ue(p(e),p(t),s)?me(p(e),Ae(p(e)),p(t),s):0),e,t),addRow:(e,t)=>rt((()=>{let s;return ue(e,s,t)&&(e=p(e),me(e,Ae(e),s=xe(e),t)),s})),setPartialRow:(e,t,s)=>Xe(((e,t)=>{if(ue(e,t,s,1)){const n=Ae(e);Se(s,((s,o)=>Me(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Xe(((e,t,s)=>O(fe(e,t,s,B(n)?n(st(e,t,s)):n),(n=>Me(e,Ae(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?ot():nt(J(e))}catch{}return lt},setSchema:t=>Xe((()=>{if((e=(e=>Be(e,(e=>Be(e,(e=>{if(!Be(e,((e,t)=>R(["type",l],t))))return!1;const t=e.type;return!(!W(t)&&t!=a||(be(e.default)!=t&&Ie(e,l),0))})))))(t))&&(Le(t),!K(C))){const e=Ye();ot(),nt(e)}})),delTables:ot,delTable:e=>Xe((e=>G(C,e)?De(e):0),e),delRow:(e,t)=>Xe(((e,t)=>O(ee(C,e),(s=>G(s,t)?Fe(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Xe(((e,t,s)=>O(ee(C,e),(o=>O(ee(o,t),(r=>G(r,s)?Je(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>Xe((()=>{Le({}),e=!1})),transaction:rt,startTransaction:at,finishTransaction:it,forEachTable:e=>X(C,((t,s)=>e(s,(e=>X(t,((t,s)=>e(s,(e=>te(t,e))))))))),forEachRow:(e,t)=>X(ee(C,p(e)),((e,s)=>t(s,(t=>te(e,t))))),forEachCell:(e,t,s)=>te(ee(ee(C,p(e)),p(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=et(e,t,s,n,o);return H((()=>{const a=et(e,t,s,n,o);y(a,i)||(i=a,r(lt,e,t,s,n,o,i))}),D[a?1:0],[e,t])},addWillFinishTransactionListener:e=>H(e,q[0]),addDidFinishTransactionListener:e=>H(e,q[1]),callListener:e=>(ie(e,[Ze,_e,tt],(e=>N(e[2])?[]:Ne(st(...e)))),lt),delListener:e=>(U(e),lt),getListenerStats:()=>({}),createStore:He};return Se({Tables:[0,m],TableIds:[0,E],[h]:[1,k],[g]:[1,A],Row:[2,P],[w]:[2,Q],[L]:[3,j],InvalidCell:[3,z]},(([e,t],s)=>{lt[f+s+d]=(...s)=>H(s[e],t[s[e+1]?1:0],e>0?M(s,0,e):void 0)})),ve(lt)};e.createCheckpoints=me,e.createCustomPersister=De,e.createFilePersister=(e,s)=>{let n;return De(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=ke,e.createLocalPersister=(e,t)=>Pe(e,t,localStorage),e.createMetrics=Ae,e.createQueries=je,e.createRelationships=ze,e.createRemotePersister=(e,t,s,n)=>{let o,r;return De(e,(async()=>{const e=await fetch(t);return r=Qe(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=Qe(s);N(r)||N(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{O(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Pe(e,t,sessionStorage),e.createStore=He,e.defaultSorter=Ee},"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="default",c="utf8",d="Listener",u="Result",h="add",f="Table",g="RowIds",L="CellIds",w="Cell",v=e=>n+e,p=(e,t)=>e.includes(t),R=(e,t)=>e.every(t),S=(e,t)=>C(e)===C(t)&&R(e,((e,s)=>t[s]===e)),y=(e,t)=>R(e,((s,n)=>0==n||t(e[n-1],s)<=0)),I=(e,t)=>e.sort(t),T=(e,t)=>e.forEach(t),b=(e,t)=>e.map(t),m=e=>E(e,((e,t)=>e+t),0),C=e=>e.length,V=e=>0==C(e),E=(e,t,s)=>e.reduce(t,s),k=(e,t,s)=>e.slice(t,s),J=(e,...t)=>e.push(...t),M=e=>e.pop(),x=e=>e.shift(),A=e=>JSON.stringify(e,((e,t)=>j(t,Map)?E([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),D=JSON.parse,F=Math.max,P=Math.min,Q=isFinite,j=(e,t)=>e instanceof t,z=e=>null==e,N=(e,t,s)=>z(e)?s?.():t(e),O=e=>e==o||e==r,W=e=>s(e)==i,B=e=>Array.isArray(e),q=()=>{},H=e=>e.size,$=(e,t)=>e?.has(t)??!1,G=e=>z(e)||0==H(e),K=e=>[...e?.values()??[]],U=e=>e.clear(),X=(e,t)=>e?.forEach(t),Y=(e,t)=>e?.delete(t),Z=e=>new Map(e),_=e=>[...e?.keys()??[]],ee=(e,t)=>e?.get(t),te=(e,t)=>X(e,((e,s)=>t(s,e))),se=(e,t,s)=>z(s)?(Y(e,t),e):e?.set(t,s),ne=(e,t,s)=>($(e,t)||se(e,t,s()),ee(e,t)),oe=(e,t,s)=>{const n={},o=t??(e=>e);return X(e,((e,t)=>N(o(e),(e=>s?.(e)?0:n[t]=e)))),n},re=(e,t)=>{const s=Z(),n=t??(e=>e);return X(e,((e,t)=>s.set(t,n(e)))),s},ae=e=>re(e,re),ie=(e,t,s,n,o=0)=>N((s?ne:ee)(e,t[o],o>C(t)-2?s:Z),(r=>{if(o>C(t)-2)return n?.(r)&&se(e,t[o]),r;const a=ie(r,t,s,n,o+1);return G(r)&&se(e,t[o]),a})),le=e=>{const t=s(e);return O(t)||t==a&&Q(e)?t:void 0},ce=(e,t,s,n,o)=>z(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),de=(e,t,s)=>z(s)?e.delValue(t):e.setValue(t,s),ue=e=>new Set(B(e)||z(e)?e:[e]),he=(e,t)=>e?.add(t),fe=(e,t,s)=>{const n=e.hasRow,o=Z(),r=Z(),a=Z(),i=Z(),l=Z(),c=(t,s,...n)=>{const o=ne(l,t,ue);return T(n,(t=>he(o,t)&&s&&e.callListener(t))),n},d=(t,...s)=>N(ee(l,t),(n=>{T(V(s)?K(n):s,(t=>{e.delListener(t),Y(n,t)})),G(n)&&se(l,t)})),u=(e,s)=>{se(o,e,s),$(r,e)||(se(r,e,t()),se(a,e,Z()),se(i,e,Z()))},h=e=>{se(o,e),se(r,e),se(a,e),se(i,e),d(e)};return[()=>e,()=>_(o),e=>te(r,e),e=>$(r,e),e=>ee(o,e),e=>ee(r,e),(e,t)=>se(r,e,t),u,(t,o,r,l,h)=>{u(t,o);const f=Z(),g=Z(),L=ee(a,t),w=ee(i,t),v=t=>{const r=s=>e.getCell(o,t,s),a=ee(L,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||B(a)&&B(i)&&S(a,i)||se(f,t,[a,i]),!z(h)){const e=ee(w,t),s=n(o,t)?h(r,t):void 0;e!=s&&se(g,t,s)}},p=e=>{r((()=>{X(f,(([,e],t)=>se(L,t,e))),X(g,((e,t)=>se(w,t,e)))}),f,g,L,w,e),U(f),U(g)};te(L,v),e.hasTable(o)&&T(e.getRowIds(o),(e=>{$(L,e)||v(e)})),p(!0),d(t),c(t,0,e.addRowListener(o,null,((e,t,s)=>v(s))),e.addTableListener(o,(()=>p())))},h,()=>te(l,h),c,d]},ge=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),Le=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},we=/^\d+$/,ve=()=>{const e=[];let t=0;return[()=>x(e)??n+t++,t=>{we.test(t)&&C(e)<1e3&&J(e,t)}]},pe=e=>{let t;const[s,o]=ve(),r=Z();return[(o,a,i,l=[],c=(()=>[]))=>{t??=e();const d=s();return se(r,d,[o,a,i,l,c]),he(ie(a,i??[n],ue),d),d},(e,s,...o)=>T(((e,t=[n])=>{const s=[],o=(e,n)=>n==C(t)?J(s,e):null===t[n]?X(e,(e=>o(e,n+1))):T([t[n],null],(t=>o(ee(e,t),n+1)));return o(e,0),s})(e,s),(e=>X(e,(e=>ee(r,e)[0](t,...s??[],...o))))),e=>N(ee(r,e),(([,t,s])=>(ie(t,s??[n],void 0,(t=>(Y(t,e),G(t)?1:0))),se(r,e),o(e),s))),e=>N(ee(r,e),(([e,,s=[],n,o])=>{const r=(...a)=>{const i=C(a);i==C(s)?e(t,...a,...o(a)):z(s[i])?T(n[i]?.(...a)??[],(e=>r(...a,e))):r(...a,s[i])};r()}))]},Re=Object,Se=Re.keys,ye=Re.isFrozen,Ie=Re.freeze,Te=e=>j(e,Re)&&e.constructor==Re,be=(e,t)=>!z(((e,t)=>N(e,(e=>e[t])))(e,t)),me=(e,t)=>delete e[t],Ce=(e,t)=>b(Re.entries(e),(([e,s])=>t(s,e))),Ve=e=>Te(e)&&V(Se(e)),Ee=Le((e=>{let t,s,o,r=100,a=Z(),i=Z(),l=1;const c=Z(),d=Z(),[u,h,f]=pe((()=>W)),g=Z(),L=Z(),w=[],v=[],R=(t,s)=>{l=0,e.transaction((()=>{const[n,o]=ee(g,s);X(n,((s,n)=>X(s,((s,o)=>X(s,((s,r)=>ce(e,n,o,r,s[t]))))))),X(o,((s,n)=>de(e,n,s[t])))})),l=1},S=e=>{se(g,e),se(L,e),h(d,[e])},y=(e,t)=>T(((e,t)=>e.splice(0,t))(e,t??C(e)),S),I=()=>y(w,C(w)-r),b=()=>N(t,(()=>{J(w,t),I(),y(v),t=void 0,o=1})),m=()=>{t=M(w),o=1},E=e.addCellListener(null,null,null,((e,t,s,n,o,r)=>{if(l){b();const e=ne(a,t,Z),i=ne(e,s,Z),l=ne(i,n,(()=>[r,void 0]));l[1]=o,l[0]===o&&G(se(i,n))&&G(se(e,s))&&G(se(a,t))&&m(),P()}})),k=e.addValueListener(null,((e,t,s,n)=>{if(l){b();const e=ne(i,t,(()=>[n,void 0]));e[1]=s,e[0]===s&&G(se(i,t))&&m(),P()}})),A=(e="")=>(z(t)&&(t=n+s++,se(g,t,[a,i]),j(t,e),a=Z(),i=Z(),o=1),t),D=()=>{V(w)||(((e,...t)=>{e.unshift(...t)})(v,A()),R(0,t),t=M(w),o=1)},F=()=>{V(v)||(J(w,t),t=x(v),R(1,t),o=1)},P=()=>{o&&(h(c),o=0)},Q=e=>{const t=A(e);return P(),t},j=(e,t)=>(O(e)&&ee(L,e)!==t&&(se(L,e,t),h(d,[e])),W),O=e=>$(g,e),W={setSize:e=>(r=e,I(),W),addCheckpoint:Q,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...v]],forEachCheckpoint:e=>te(L,e),hasCheckpoint:O,getCheckpoint:e=>ee(L,e),goBackward:()=>(D(),P(),W),goForward:()=>(F(),P(),W),goTo:e=>{const s=p(w,e)?D:p(v,e)?F:null;for(;!z(s)&&e!=t;)s();return P(),W},addCheckpointIdsListener:e=>u(e,c),addCheckpointListener:(e,t)=>u(t,d,[e]),delListener:e=>(f(e),W),clear:()=>(y(w),y(v),z(t)||S(t),t=void 0,s=0,Q(),W),destroy:()=>{e.delListener(E),e.delListener(k)},getListenerStats:()=>({})};return Ie(W.clear())})),ke=(e,t)=>e<t?-1:1,Je=Le((e=>{const t=Z(),s=Z(),[o,r,a,i,l,c,d,,u,h,f]=fe(e,Z,(e=>z(e)?n:B(e)?b(e,v):v(e))),[g,L,w]=pe((()=>R)),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)))))))))},R={setIndexDefinition:(e,n,o,r,a,i=ke)=>{const l=z(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,h,f)=>{let g=0;const w=ue(),v=ue(),p=c(e);if(X(o,(([e,t],s)=>{const n=ue(e),o=ue(t);X(n,(e=>Y(o,e)?Y(n,e):0)),X(n,(e=>{he(w,e),N(ee(p,e),(t=>{Y(t,s),G(t)&&(se(p,e),g=1)}))})),X(o,(e=>{he(w,e),$(p,e)||(se(p,e,ue()),g=1),he(ee(p,e),s),z(r)||he(v,e)}))})),n(),G(h)||(f?te(p,(e=>he(v,e))):te(a,(e=>N(ee(u,e),(e=>he(v,e))))),X(v,(e=>{const t=(t,s)=>i(ee(h,t),ee(h,s),e),s=[...ee(p,e)];y(s,t)||(se(p,e,ue(I(s,t))),he(w,e))}))),(g||f)&&!z(l)){const t=[...p];y(t,l)||(d(e,Z(I(t,l))),g=1)}g&&L(t,[e]),X(w,(t=>L(s,[e,t])))}),ge(o),N(r,ge)),R},delIndexDefinition:e=>(h(e),R),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)=>$(c(e),t),getTableId:l,getSliceIds:e=>_(c(e)),getSliceRowIds:(e,t)=>K(ee(c(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>g(n,s,[e,t]),delListener:e=>(w(e),R),destroy:f,getListenerStats:()=>({})};return Ie(R)})),Me=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=>F(...e),(e,t)=>F(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:F(t,e)]],["min",[e=>P(...e),(e,t)=>P(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:P(t,e)]],["sum",[e=>m(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),xe=(e,t,s,n,o,r=!1)=>{if(G(s))return;const[a,i,l,c]=o;return r||=z(e),X(n,(([s,n])=>{r||(e=z(s)?i?.(e,n,t++):z(n)?l?.(e,s,t--):c?.(e,n,s,t),r||=z(e))})),r?a(K(s),H(s)):e},Ae=Le((e=>{const t=Z(),[s,o,r,a,i,l,c,,d,u,h]=fe(e,q,(e=>isNaN(e)||z(e)||!0===e||!1===e||e===n?void 0:1*e)),[f,g,L]=pe((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=W(n)?[n,r,a,i]:ee(Me,n)??ee(Me,"sum");return d(e,s,((s,n,o,r,a,i)=>{const d=l(e),h=H(r);i||=z(d),s();let f=xe(d,h,r,n,u,i);Q(f)||(f=void 0),f!=d&&(c(e,f),g(t,[e],f,d))}),ge(o,1)),w},delMetricDefinition:e=>(u(e),w),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:l,addMetricListener:(e,s)=>f(s,t,[e]),delListener:e=>(L(e),w),destroy:h,getListenerStats:()=>({})};return Ie(w)})),De=(e,t,s,o,r)=>{let a,i,l=0;const c={load:async(s,o)=>{if(2!=l){l=1;const r=await t();z(r)||r==n?e.transaction((()=>e.setTables(s).setValues(o))):e.setJson(r),l=0}return c},startAutoLoad:async(e,t)=>(c.stopAutoLoad(),await c.load(e,t),o(c.load),c),stopAutoLoad:()=>(r(),c),save:async()=>(1!=l&&(l=2,await s(e.getJson()),l=0),c),startAutoSave:async()=>(await c.stopAutoSave().save(),a=e.addTablesListener(c.save),i=e.addValuesListener(c.save),c),stopAutoSave:()=>(N(a,e.delListener),N(i,e.delListener),c),getStore:()=>e,destroy:()=>c.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return Ie(c)},Fe="storage",Pe=globalThis.window,Qe=(e,t,s)=>{let n;return De(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Pe.addEventListener(Fe,n)}),(()=>{Pe.removeEventListener(Fe,n),n=void 0}))},je=e=>e.headers.get("ETag"),ze=Le((e=>{const t=e.createStore,[s,o,r,a,i,,,l,,c,v,p,S]=fe(e,(()=>!0),q),y=t(),I=t(),b=Z(),m=(e,t,...s)=>T(s,(s=>he(ne(ne(b,t,Z),e,ue),s))),E=e=>{N(ee(b,e),(e=>{te(e,((e,t)=>X(t,(t=>e.delListener(t))))),U(e)})),T([I,y],(t=>t.delTable(e)))},M=(e,t,s)=>m(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),x={setQueryDefinition:(t,s,o)=>{l(t,s),E(t);const r=[],a=[[null,[s,null,null,[],Z()]]],i=[],c=[],d=[];o({select:(e,t)=>{const s=W(e)?[C(r)+n,e]:[z(t)?e:t,s=>s(e,t)];return J(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=z(s)||W(t)?null:t,o=z(n)?t:s,r=[e,[e,n,W(o)?o:e=>e(o),[],Z()]];return J(a,r),{as:e=>r[0]=e}},where:(e,t,s)=>J(i,W(e)?e:z(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,W(t)?[t,s,n,o]:ee(Me,t)??[(e,t)=>t]]];return J(c,r),{as:e=>r[0]=e}},having:(e,t)=>J(d,W(e)?e:s=>s(e)===t)});const u=Z(r);if(G(u))return x;const h=Z(a);te(h,((e,[,t])=>N(ee(h,t),(({3:t})=>z(e)?0:J(t,e)))));const f=Z(c);let g=y;if(G(f)&&V(d))g=I;else{M(t,g,I);const e=Z();te(f,((t,[s,n])=>he(ne(e,s,ue),[t,n])));const s=ue();te(u,(t=>$(e,t)?0:he(s,t)));const n=Z(),o=(s,n,o,r)=>N(s,(([a,i,l,c])=>{te(n,((t,[s])=>{const n=ne(a,t,Z),i=ee(n,o),l=r?void 0:s;if(i!==l){const s=ue([[i,l]]),r=H(n);se(n,o,l),X(ee(e,t),(([e,t])=>{const o=xe(c[e],r,n,s,t);c[e]=z(le(o))?null:o}))}})),G(i)||!R(d,(e=>e((e=>c[e]))))?I.delRow(t,l):z(l)?s[2]=I.addRow(t,c):I.setRow(t,l,c)}));m(g,t,g.addRowListener(t,null,((r,a,i,l)=>{const c=[],d=[],u=Z(),h=g.hasRow(t,i);let f=!h;X(s,(e=>{const[s,n,o]=l(t,i,e);J(c,n),J(d,o),f||=s})),te(e,(e=>{const[s,,n]=l(t,i,e);(f||s)&&se(u,e,[n])})),f&&o(ie(n,c,void 0,(([,e])=>(Y(e,i),G(e)))),u,i,1),h&&o(ie(n,d,(()=>{const e={};return X(s,(s=>e[s]=g.getCell(t,i,s))),[Z(),ue(),void 0,e]}),(([,e])=>{he(e,i)})),u,i)})))}M(t,e,g);const L=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);T(a,(s=>{const[o,,r,a,i]=ee(h,s),c=r?.(l,n),[d,u]=ee(i,n)??[];c!=d&&(z(u)||S(t,u),se(i,n,z(c)?null:[c,...p(t,1,e.addRowListener(o,c,(()=>L(n,o,c,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...z(o)?[s,n,t]:t===s?[s,n,o]:[ee(h,t)?.[0],ee(ee(h,t)?.[4],n)?.[0],o]);g.transaction((()=>R(i,(e=>e(o)))?te(u,((e,s)=>ce(g,t,n,e,s(o,n)))):g.delRow(t,n)))})(n)},{3:w}=ee(h,null);return g.transaction((()=>p(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?L(r,s,r,w):(g.delRow(t,r),X(h,(({4:e})=>N(ee(e,r),(([,s])=>{S(t,s),se(e,r)})))))}))))),x},delQueryDefinition:e=>(E(e),c(e),x),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:i,delListener:e=>(I.delListener(e),x),destroy:v,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=I.getListenerStats();return n}};return Ce({[f]:[1,1],[g]:[0,1],SortedRowIds:[0,5],Row:[1,2],[L]:[0,2],[w]:[1,3]},(([e,t],s)=>{T(e?["get","has","forEach"]:["get"],(e=>x[e+u+s]=(...t)=>I[e+s](...t))),x[h+u+s+d]=(...e)=>I[h+s+d](...k(e,0,t),((s,...n)=>e[t](x,...n)))})),Ie(x)})),Ne=Le((e=>{const t=Z(),s=Z(),o=Z(),r=Z(),[a,i,l,c,d,u,,,h,f,g]=fe(e,(()=>[Z(),Z(),Z(),Z()]),(e=>z(e)?void 0:e+n)),[L,w,v]=pe((()=>y)),p=(e,t,s)=>N(u(e),(([n,,o])=>{if(!$(o,t)){const r=ue();if(d(e)!=S(e))he(r,t);else{let e=t;for(;!z(e)&&!$(r,e);)he(r,e),e=ee(n,e)}if(s)return r;se(o,t,r)}return ee(o,t)})),R=(e,t)=>N(u(e),(([,,e])=>se(e,t))),S=e=>ee(t,e),y={setRelationshipDefinition:(e,n,a,i)=>(se(t,e,a),h(e,n,((t,n)=>{const a=ue(),i=ue(),l=ue(),[c,d]=u(e);X(n,(([t,s],n)=>{z(t)||(he(i,t),N(ee(d,t),(e=>{Y(e,n),G(e)&&se(d,t)}))),z(s)||(he(i,s),$(d,s)||se(d,s,ue()),he(ee(d,s),n)),he(a,n),se(c,n,s),te(ee(r,e),(t=>{$(p(e,t),n)&&he(l,t)}))})),t(),X(a,(t=>w(s,[e,t]))),X(i,(t=>w(o,[e,t]))),X(l,(t=>{R(e,t),w(r,[e,t])}))}),ge(i)),y),delRelationshipDefinition:e=>(se(t,e),f(e),y),getStore:a,getRelationshipIds:i,forEachRelationship:t=>l((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:c,getLocalTableId:d,getRemoteTableId:S,getRemoteRowId:(e,t)=>ee(u(e)?.[0],t),getLocalRowIds:(e,t)=>K(ee(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>z(u(e))?[t]:K(p(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(p(e,t),L(s,r,[e,t])),delListener:e=>(R(...v(e)),y),destroy:g,getListenerStats:()=>({})};return Ie(y)})),Oe=e=>[e,e],We=()=>[Z(),Z()],Be=(e,t,s,n=se)=>{const o=(r=e=>!be(t,e),_(e).filter(r));var r;return T(Se(t),(n=>s(e,n,t[n]))),T(o,(t=>n(e,t))),e},qe=(e,t,s)=>z(e)||!Te(e)||Ve(e)||ye(e)?(s?.(),!1):(Ce(e,((s,n)=>{t(s,n)||me(e,n)})),!Ve(e)),He=(e,t,s)=>se(e,t,ee(e,t)==-s?void 0:s),$e=()=>{let e,t,s,n,o=0;const r=Z(),i=Z(),c=Z(),u=Z(),R=Z(),y=Z(),m=Z(),C=Z(),V=Z(),E=Z(),M=Z(),x=Z(),F=ue(),P=Z(),Q=Z(),j=Z(),B=We(),q=We(),H=We(),K=We(),ie=We(),fe=We(),ge=We(),Le=We(),we=We(),Re=We(),Se=We(),ye=We(),Te=We(),Ee=We(),[Je,Me,xe,Ae]=pe((()=>Gt)),De=e=>{if(!qe(e,((e,t)=>p(["type",l],t))))return!1;const t=e.type;return!(!O(t)&&t!=a||(le(e.default)!=t&&me(e,l),0))},Fe=(t,s)=>(!e||$(V,s)||vt(s))&&qe(t,((e,t)=>Pe(s,t,e)),(()=>vt(s))),Pe=(e,t,s,n)=>qe(n?s:Ne(s,e,t),((n,o)=>N(Qe(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>vt(e,t))),Qe=(t,s,n,o)=>e?N(ee(ee(V,t),n),(e=>le(o)!=e.type?vt(t,s,n,o,e.default):o),(()=>vt(t,s,n,o))):z(le(o))?vt(t,s,n,o):o,je=(e,t)=>qe(t?e:Ge(e),((t,s)=>N(ze(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>pt())),ze=(e,s)=>t?N(ee(M,e),(t=>le(s)!=t.type?pt(e,s,t.default):s),(()=>pt(e,s))):z(le(s))?pt(e,s):s,Ne=(e,t,s)=>(N(ee(E,t),(([n,o])=>{X(n,((t,s)=>{be(e,s)||(e[s]=t)})),X(o,(n=>{be(e,n)||vt(t,s,n)}))})),e),Ge=e=>(t&&(X(x,((t,s)=>{be(e,s)||(e[s]=t)})),X(F,(t=>{be(e,t)||pt(t)}))),e),Ke=e=>Be(V,e,((e,t,s)=>{const n=Z(),o=ue();Be(ne(V,t,Z),s,((e,t,s)=>{se(e,t,s),N(s.default,(e=>se(n,t,e)),(()=>he(o,t)))})),se(E,t,[n,o])}),((e,t)=>{se(V,t),se(E,t)})),Ue=e=>Be(M,e,((e,t,s)=>{se(M,t,s),N(s.default,(e=>se(x,t,e)),(()=>he(F,t)))}),((e,t)=>{se(M,t),se(x,t),Y(F,t)})),Xe=e=>Ve(e)?Ot():Pt(e),Ye=e=>Be(Q,e,((e,t,s)=>Ze(t,s)),((e,t)=>it(t))),Ze=(e,t)=>Be(ne(Q,e,(()=>(ut(e,1),Z()))),t,((t,s,n)=>_e(e,t,s,n)),((t,s)=>lt(e,t,s))),_e=(e,t,s,n,o)=>Be(ne(t,s,(()=>(ht(e,s,1),Z()))),n,((t,n,o)=>et(e,s,t,n,o)),((n,r)=>ct(e,t,s,n,r,o))),et=(e,t,s,n,o)=>{$(s,n)||ft(e,t,n,1);const r=ee(s,n);o!==r&&(gt(e,t,n,r,o),se(s,n,o))},tt=(e,t,s,n,o)=>N(ee(t,s),(t=>et(e,s,t,n,o)),(()=>_e(e,t,s,Ne({[n]:o},e,s)))),st=e=>Ve(e)?Wt():Qt(e),nt=e=>Be(j,e,((e,t,s)=>ot(t,s)),((e,t)=>dt(t))),ot=(e,t)=>{$(j,e)||Lt(e,1);const s=ee(j,e);t!==s&&(wt(e,s,t),se(j,e,t))},rt=e=>{const[t]=ne(P,e,ve),s=t();return $(ee(Q,e),s)?rt(e):s},at=e=>ee(Q,e)??Ze(e,{}),it=e=>Ze(e,{}),lt=(e,t,s)=>{const[,n]=ne(P,e,ve);n(s),_e(e,t,s,{},!0)},ct=(e,t,s,n,o,r)=>{const a=ee(ee(E,e)?.[0],o);if(!z(a)&&!r)return et(e,s,n,o,a);const i=t=>{gt(e,s,t,ee(n,t)),ft(e,s,t,-1),se(n,t)};z(a)?i(o):te(n,i),G(n)&&(ht(e,s,-1),G(se(t,s))&&(ut(e,-1),se(Q,e),se(P,e)))},dt=e=>{const t=ee(x,e);if(!z(t))return ot(e,t);wt(e,ee(j,e)),Lt(e,-1),se(j,e)},ut=(e,t)=>He(r,e,t),ht=(e,t,s)=>He(ne(i,e,Z),t,s),ft=(e,t,s,n)=>He(ne(ne(c,e,Z),t,Z),s,n),gt=(e,t,s,n,o)=>ne(ne(ne(u,e,Z),t,Z),s,(()=>[n,0]))[1]=o,Lt=(e,t)=>He(R,e,t),wt=(e,t,s)=>ne(y,e,(()=>[t,0]))[1]=s,vt=(e,t,s,n,o)=>(J(ne(ne(ne(m,e,Z),t,Z),s,(()=>[])),n),o),pt=(e,t,s)=>(J(ne(C,e,(()=>[])),t),s),Rt=(e,t,s)=>N(ee(ee(ee(u,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Oe(xt(e,t,s))])),St=e=>N(ee(y,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Oe(Ft(e))])),yt=e=>G(m)||G(we[e])?0:X(e?re(m,ae):m,((t,s)=>X(t,((t,n)=>X(t,((t,o)=>Me(we[e],[s,n,o],t))))))),It=e=>G(C)||G(Re[e])?0:X(e?re(C):C,((t,s)=>Me(Re[e],[s],t))),Tt=(e,t,s)=>{if(!G(t))return Me(e,s),1},bt=e=>{const t=G(ie[e]),s=G(ge[e])&&G(K[e])&&t&&G(q[e]),n=G(Le[e])&&G(fe[e])&&G(H[e])&&G(B[e]);if(!s||!n){const o=e?[re(r),ae(i),re(c,ae),re(u,ae)]:[r,i,c,u];if(!s){X(o[2],((t,s)=>X(t,((t,n)=>Tt(ge[e],t,[s,n])))));const s=ue();X(o[1],((n,o)=>{Tt(K[e],n,[o])&&!t&&(Me(ie[e],[o,null]),he(s,o))})),t||X(o[3],((t,n)=>{if(!$(s,n)){const s=ue();X(t,(e=>X(e,(([t,n],o)=>n!==t?he(s,o):Y(e,o))))),X(s,(t=>Me(ie[e],[n,t])))}})),Tt(q[e],o[0])}if(!n){let t;X(o[3],((s,n)=>{let o;X(s,((s,r)=>{let a;X(s,(([s,i],l)=>{i!==s&&(Me(Le[e],[n,r,l],i,s,Rt),t=o=a=1)})),a&&Me(fe[e],[n,r],Rt)})),o&&Me(H[e],[n],Rt)})),t&&Me(B[e],void 0,Rt)}}},mt=e=>{const t=G(ye[e]),s=G(Te[e])&&G(Se[e]);if(!t||!s){const n=e?[re(R),re(y)]:[R,y];if(t||Tt(ye[e],n[0]),!s){let t;X(n[1],(([s,n],o)=>{n!==s&&(Me(Te[e],[o],n,s,St),t=1)})),t&&Me(Se[e],void 0,St)}}},Ct=(e,...t)=>(qt((()=>e(...b(t,v)))),Gt),Vt=()=>oe(Q,(e=>oe(e,oe))),Et=()=>_(Q),kt=e=>_(ee(Q,v(e))),Jt=(e,t,s,n=0,o)=>{return b(k(I((r=ee(Q,v(e)),a=(e,s)=>[z(t)?s:ee(e,v(t)),s],b([...r?.entries()??[]],(([e,t])=>a(t,e)))),(([e],[t])=>ke(e,t)*(s?-1:1))),n,z(o)?o:n+o),(([,e])=>e));var r,a},Mt=(e,t)=>_(ee(ee(Q,v(e)),v(t))),xt=(e,t,s)=>ee(ee(ee(Q,v(e)),v(t)),v(s)),At=()=>oe(j),Dt=()=>_(j),Ft=e=>ee(j,v(e)),Pt=e=>Ct((()=>(e=>qe(e,Fe,vt))(e)?Ye(e):0)),Qt=e=>Ct((()=>je(e)?nt(e):0)),jt=e=>{try{Xe(D(e))}catch{}return Gt},zt=t=>Ct((()=>{if((e=qe(t,(e=>qe(e,De))))&&(Ke(t),!G(Q))){const e=Vt();Ot(),Pt(e)}})),Nt=e=>Ct((()=>{if(t=(e=>qe(e,De))(e)){const s=At();Bt(),Wt(),t=!0,Ue(e),Qt(s)}})),Ot=()=>Ct((()=>Ye({}))),Wt=()=>Ct((()=>nt({}))),Bt=()=>Ct((()=>{Ue({}),t=!1})),qt=(e,t)=>{if(-1==o)return;Ht();const s=e();return $t(t),s},Ht=()=>(o++,Gt),$t=e=>(o>0&&(o--,0==o&&(s=!G(u),n=!G(y),o=1,yt(1),s&&bt(1),It(1),n&&mt(1),o=-1,e?.(oe(u,(e=>oe(e,(e=>oe(e,(e=>[...e]),(([e,t])=>e===t))),Ve)),Ve),oe(m,(e=>oe(e,oe))),oe(y,(e=>[...e]),(([e,t])=>e===t)),oe(C))&&(o=1,X(u,((e,t)=>X(e,((e,s)=>X(e,(([e],n)=>ce(Gt,t,s,n,e))))))),X(y,(([e],t)=>de(Gt,t,e))),o=-1,s=n=!1),Me(Ee[0],void 0,s,n),yt(0),s&&bt(0),It(0),n&&mt(0),Me(Ee[1],void 0,s,n),o=0,T([r,i,c,u,m,R,y,C],U))),Gt),Gt={getTables:Vt,getTableIds:Et,getTable:e=>oe(ee(Q,v(e)),oe),getRowIds:kt,getSortedRowIds:Jt,getRow:(e,t)=>oe(ee(ee(Q,v(e)),v(t))),getCellIds:Mt,getCell:xt,getValues:At,getValueIds:Dt,getValue:Ft,hasTables:()=>!G(Q),hasTable:e=>$(Q,v(e)),hasRow:(e,t)=>$(ee(Q,v(e)),v(t)),hasCell:(e,t,s)=>$(ee(ee(Q,v(e)),v(t)),v(s)),hasValues:()=>!G(j),hasValue:e=>$(j,v(e)),getTablesJson:()=>A(Q),getValuesJson:()=>A(j),getJson:()=>A([Q,j]),getTablesSchemaJson:()=>A(V),getValuesSchemaJson:()=>A(M),getSchemaJson:()=>A([V,M]),setTables:Pt,setTable:(e,t)=>Ct((e=>Fe(t,e)?Ze(e,t):0),e),setRow:(e,t,s)=>Ct(((e,t)=>Pe(e,t,s)?_e(e,at(e),t,s):0),e,t),addRow:(e,t)=>qt((()=>{let s;return Pe(e,s,t)&&(e=v(e),_e(e,at(e),s=rt(e),t)),s})),setPartialRow:(e,t,s)=>Ct(((e,t)=>{if(Pe(e,t,s,1)){const n=at(e);Ce(s,((s,o)=>tt(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Ct(((e,t,s)=>N(Qe(e,t,s,W(n)?n(xt(e,t,s)):n),(n=>tt(e,at(e),t,s,n)))),e,t,s),setValues:Qt,setPartialValues:e=>Ct((()=>je(e,1)?Ce(e,((e,t)=>ot(t,e))):0)),setValue:(e,t)=>Ct((e=>N(ze(e,W(t)?t(Ft(e)):t),(t=>ot(e,t)))),e),setTablesJson:jt,setValuesJson:e=>{try{st(D(e))}catch{}return Gt},setJson:e=>{try{const[t,s]=D(e);Xe(t),st(s)}catch{jt(e)}return Gt},setTablesSchema:zt,setValuesSchema:Nt,setSchema:(e,t)=>Ct((()=>{zt(e),Nt(t)})),delTables:Ot,delTable:e=>Ct((e=>$(Q,e)?it(e):0),e),delRow:(e,t)=>Ct(((e,t)=>N(ee(Q,e),(s=>$(s,t)?lt(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Ct(((e,t,s)=>N(ee(Q,e),(o=>N(ee(o,t),(r=>$(r,s)?ct(e,o,t,r,s,n):0))))),e,t,s),delValues:Wt,delValue:e=>Ct((e=>$(j,e)?dt(e):0),e),delTablesSchema:()=>Ct((()=>{Ke({}),e=!1})),delValuesSchema:Bt,transaction:qt,startTransaction:Ht,finishTransaction:$t,forEachTable:e=>X(Q,((t,s)=>e(s,(e=>X(t,((t,s)=>e(s,(e=>te(t,e))))))))),forEachRow:(e,t)=>X(ee(Q,v(e)),((e,s)=>t(s,(t=>te(e,t))))),forEachCell:(e,t,s)=>te(ee(ee(Q,v(e)),v(t)),s),forEachValue:e=>te(j,e),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=Jt(e,t,s,n,o);return Je((()=>{const a=Jt(e,t,s,n,o);S(a,i)||(i=a,r(Gt,e,t,s,n,o,i))}),ie[a?1:0],[e,t],[Et])},addWillFinishTransactionListener:e=>Je(e,Ee[0]),addDidFinishTransactionListener:e=>Je(e,Ee[1]),callListener:e=>(Ae(e),Gt),delListener:e=>(xe(e),Gt),getListenerStats:()=>({}),createStore:$e};return Ce({Tables:[0,B],TableIds:[0,q],[f]:[1,H,[Et]],[g]:[1,K,[Et]],Row:[2,fe,[Et,kt]],[L]:[2,ge,[Et,kt]],[w]:[3,Le,[Et,kt,Mt],e=>Oe(xt(...e))],InvalidCell:[3,we],Values:[0,Se],ValueIds:[0,ye],Value:[1,Te,[Dt],e=>Oe(Ft(e[0]))],InvalidValue:[1,Re]},(([e,t,s,n],o)=>{Gt[h+o+d]=(...o)=>Je(o[e],t[o[e+1]?1:0],e>0?k(o,0,e):void 0,s,n)})),Ie(Gt)};e.createCheckpoints=Ee,e.createCustomPersister=De,e.createFilePersister=(e,s)=>{let n;return De(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=Je,e.createLocalPersister=(e,t)=>Qe(e,t,localStorage),e.createMetrics=Ae,e.createQueries=ze,e.createRelationships=Ne,e.createRemotePersister=(e,t,s,n)=>{let o,r;return De(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);z(r)||z(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{N(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
@@ -10,7 +10,7 @@
10
10
  * @since v2.2.0
11
11
  */
12
12
 
13
- import {Schema, Store} from './store.d';
13
+ import {Store, TablesSchema, ValuesSchema} from './store.d';
14
14
  import {Id} from './common.d';
15
15
 
16
16
  /**
@@ -36,6 +36,10 @@ export type StoreStats = {
36
36
  * Table objects.
37
37
  */
38
38
  totalCells: number;
39
+ /**
40
+ * The number of Value objects in the Store, since v3.0.0.
41
+ */
42
+ totalValues: number;
39
43
  /**
40
44
  * The string length of the Store when serialized to JSON.
41
45
  */
@@ -106,6 +110,7 @@ export type StoreStatsRowDetail = {
106
110
  * @since v2.2.0
107
111
  */
108
112
  export interface Tools {
113
+ /* eslint-disable max-len */
109
114
  /**
110
115
  * The getStoreStats method provides a set of statistics about the Store, and
111
116
  * is used for debugging purposes.
@@ -125,10 +130,11 @@ export interface Tools {
125
130
  * .setTable('species', {
126
131
  * dog: {price: 5},
127
132
  * cat: {price: 4},
128
- * });
133
+ * })
134
+ * .setValues({open: true, employees: 3});
129
135
  * const tools = createTools(store);
130
136
  * console.log(tools.getStoreStats());
131
- * // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
137
+ * // -> {totalTables: 2, totalRows: 5, totalCells: 8, totalValues: 2, jsonLength: 212}
132
138
  * ```
133
139
  * @example
134
140
  * This example creates a Tools object and gets detailed statistics about it.
@@ -162,24 +168,27 @@ export interface Tools {
162
168
  * @since v2.2.0
163
169
  */
164
170
  getStoreStats(detail?: boolean): StoreStats;
171
+ /* eslint-enable max-len */
165
172
 
166
173
  /**
167
- * The getStoreSchema method returns the Schema of the Store as an object.
174
+ * The getStoreTablesSchema method returns the TablesSchema of the Store as an
175
+ * object.
168
176
  *
169
- * If the Store does not already have an explicit Schema associated with it,
170
- * the data in the Store will be scanned to attempt to infer a new Schema.
177
+ * If the Store does not already have an explicit TablesSchema associated with
178
+ * it, the data in the Store will be scanned to attempt to infer a new
179
+ * TablesSchema.
171
180
  *
172
181
  * To be successful, this requires all the values of a given Cell across a
173
- * Table object's Row objects to have a consistent type. If a given Cell Id
182
+ * Table object's Row objects to have a consistent type. If a given Cell Id
174
183
  * appears in every Row, then a `default` for that Cell is specified in the
175
- * Schema, based on the most common value found.
184
+ * TablesSchema, based on the most common value found.
176
185
  *
177
- * @returns A Schema object for the Store.
186
+ * @returns A TablesSchema object for the Store.
178
187
  * @example
179
- * This example creates a Tools object and gets basic statistics about a Store
180
- * that already has a Schema.
188
+ * This example creates a Tools object and gets the schema of a Store that
189
+ * already has a TablesSchema.
181
190
  * ```js
182
- * const store = createStore().setSchema({
191
+ * const store = createStore().setTablesSchema({
183
192
  * pets: {
184
193
  * species: {type: 'string'},
185
194
  * color: {type: 'string'},
@@ -188,13 +197,13 @@ export interface Tools {
188
197
  * price: {type: 'number'},
189
198
  * },
190
199
  * });
191
- * const schema = createTools(store).getStoreSchema();
200
+ * const schema = createTools(store).getStoreTablesSchema();
192
201
  * console.log(schema.pets);
193
202
  * // -> {species: {type: 'string'}, color: {type: 'string'}}
194
203
  * ```
195
204
  * @example
196
- * This example creates a Tools object and gets basic statistics about a Store
197
- * that doesn't already have a Schema.
205
+ * This example creates a Tools object and infers the schema of a Store that
206
+ * doesn't already have a TablesSchema.
198
207
  * ```js
199
208
  * const store = createStore()
200
209
  * .setTable('pets', {
@@ -206,7 +215,7 @@ export interface Tools {
206
215
  * dog: {price: 5, barks: true},
207
216
  * cat: {price: 4, purrs: true},
208
217
  * });
209
- * const schema = createTools(store).getStoreSchema();
218
+ * const schema = createTools(store).getStoreTablesSchema();
210
219
  * console.log(schema.pets.species);
211
220
  * // -> {type: 'string', default: 'dog'}
212
221
  * console.log(schema.pets.color);
@@ -219,18 +228,57 @@ export interface Tools {
219
228
  * // -> {type: 'boolean'}
220
229
  * ```
221
230
  * @category Modelling
222
- * @since v2.2.0
231
+ * @since v3.0.0
223
232
  */
224
- getStoreSchema(): Schema;
233
+ getStoreTablesSchema(): TablesSchema;
234
+
235
+ /**
236
+ * The getStoreValuesSchema method returns the ValuesSchema of the Store as an
237
+ * object.
238
+ *
239
+ * If the Store does not already have an explicit ValuesSchema associated with
240
+ * it, the data in the Store will be scanned to infer a new ValuesSchema,
241
+ * based on the types of the Values present. Note that, unlike the inference
242
+ * of Cell values in the TablesSchema, it is not able to determine whether a
243
+ * Value should have a default or not.
244
+ *
245
+ * @returns A ValuesSchema object for the Store.
246
+ * @example
247
+ * This example creates a Tools object and gets the schema of a Store that
248
+ * already has a ValuesSchema.
249
+ * ```js
250
+ * const store = createStore().setValuesSchema({
251
+ * open: {type: 'boolean', default: true},
252
+ * employees: {type: 'number'},
253
+ * });
254
+ *
255
+ * const schema = createTools(store).getStoreValuesSchema();
256
+ * console.log(schema);
257
+ * // -> {open: {type: 'boolean', default: true}, employees: {type: 'number'}}
258
+ * ```
259
+ * @example
260
+ * This example creates a Tools object and infers the schema of a Store that
261
+ * doesn't already have a ValuesSchema.
262
+ * ```js
263
+ * const store = createStore().setValues({open: true, employees: 3});
264
+ * const schema = createTools(store).getStoreValuesSchema();
265
+ *
266
+ * console.log(schema);
267
+ * // -> {open: {type: 'boolean'}, employees: {type: 'number'}}
268
+ * ```
269
+ * @category Modelling
270
+ * @since v3.0.0
271
+ */
272
+ getStoreValuesSchema(): ValuesSchema;
225
273
 
226
274
  /**
227
275
  * The getStoreApi method returns a code-generated .d.ts file and a .ts file
228
276
  * that describe the schema of a Store in an ORM style.
229
277
  *
230
- * If the Store does not already have an explicit Schema associated with it,
231
- * the data in the Store will be scanned to attempt to infer a new Schema. The
232
- * method returns two strings (which should be saved as files) though if no
233
- * schema can be inferred, the strings will be empty.
278
+ * If the Store does not already have an explicit TablesSchema associated with
279
+ * it, the data in the Store will be scanned to attempt to infer a new
280
+ * TablesSchema. The method returns two strings (which should be saved as
281
+ * files) though if no schema can be inferred, the strings will be empty.
234
282
  *
235
283
  * The method takes a single argument which represents the name you want the
236
284
  * generated store object to have in code. You are expected to save the files
@@ -278,9 +326,9 @@ export interface Tools {
278
326
  * `.ts` files.
279
327
  * @example
280
328
  * This example creates a Tools object and generates code for a Store that
281
- * already has a Schema.
329
+ * already has a TablesSchema.
282
330
  * ```js
283
- * const store = createStore().setSchema({
331
+ * const store = createStore().setTablesSchema({
284
332
  * pets: {
285
333
  * price: {type: 'number'},
286
334
  * },
@@ -294,12 +342,12 @@ export interface Tools {
294
342
  * // -> 'export type PetsRow = {\'price\'?: number;};'
295
343
  *
296
344
  * const tsLines = ts.split('\n');
297
- * console.log(tsLines[40]);
345
+ * console.log(tsLines[41]);
298
346
  * // -> 'getPetsTable: (): PetsTable => store.getTable(PETS) as PetsTable,'
299
347
  * ```
300
348
  * @example
301
349
  * This example creates a Tools object and generates code for a Store that
302
- * doesn't already have a Schema.
350
+ * doesn't already have a TablesSchema.
303
351
  * ```js
304
352
  * const store = createStore().setTable('pets', {
305
353
  * fido: {price: 5},
@@ -314,7 +362,7 @@ export interface Tools {
314
362
  * // -> 'export type PetsRow = {\'price\': number;};'
315
363
  *
316
364
  * const tsLines = ts.split('\n');
317
- * console.log(tsLines[42]);
365
+ * console.log(tsLines[43]);
318
366
  * // -> 'getPetsTable: (): PetsTable => store.getTable(PETS) as PetsTable,'
319
367
  * ```
320
368
  * @category Modelling
@@ -349,9 +397,9 @@ export interface Tools {
349
397
  * `.ts` files.
350
398
  * @example
351
399
  * This example creates a Tools object and generates code for a Store that
352
- * already has a Schema.
400
+ * already has a TablesSchema.
353
401
  * ```js
354
- * const store = createStore().setSchema({
402
+ * const store = createStore().setTablesSchema({
355
403
  * pets: {
356
404
  * price: {type: 'number'},
357
405
  * },
@@ -360,18 +408,18 @@ export interface Tools {
360
408
  * const [dTs, ts] = await tools.getPrettyStoreApi('shop');
361
409
  *
362
410
  * const dTsLines = dTs.split('\n');
363
- * console.log(dTsLines[14]);
411
+ * console.log(dTsLines[5]);
364
412
  * // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
365
- * console.log(dTsLines[19]);
413
+ * console.log(dTsLines[10]);
366
414
  * // -> 'export type PetsRow = {price?: number};'
367
415
  *
368
416
  * const tsLines = ts.split('\n');
369
- * console.log(tsLines[73]);
417
+ * console.log(tsLines[72]);
370
418
  * // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
371
419
  * ```
372
420
  * @example
373
421
  * This example creates a Tools object and generates code for a Store that
374
- * doesn't already have a Schema.
422
+ * doesn't already have a TablesSchema.
375
423
  * ```js
376
424
  * const store = createStore().setTable('pets', {
377
425
  * fido: {price: 5},
@@ -381,13 +429,13 @@ export interface Tools {
381
429
  * const [dTs, ts] = await tools.getPrettyStoreApi('shop');
382
430
  *
383
431
  * const dTsLines = dTs.split('\n');
384
- * console.log(dTsLines[14]);
432
+ * console.log(dTsLines[5]);
385
433
  * // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
386
- * console.log(dTsLines[19]);
434
+ * console.log(dTsLines[10]);
387
435
  * // -> 'export type PetsRow = {price: number};'
388
436
  *
389
437
  * const tsLines = ts.split('\n');
390
- * console.log(tsLines[75]);
438
+ * console.log(tsLines[74]);
391
439
  * // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
392
440
  * ```
393
441
  * @category Modelling
@@ -396,6 +444,7 @@ export interface Tools {
396
444
  getPrettyStoreApi(storeName: string): Promise<[string, string]>;
397
445
  }
398
446
 
447
+ /* eslint-disable max-len */
399
448
  /**
400
449
  * The createTools function creates a Tools object, and is the main entry point
401
450
  * into the tools module.
@@ -419,10 +468,11 @@ export interface Tools {
419
468
  * .setTable('species', {
420
469
  * dog: {price: 5},
421
470
  * cat: {price: 4},
422
- * });
471
+ * })
472
+ * .setValues({open: true, employees: 3});
423
473
  * const tools = createTools(store);
424
474
  * console.log(tools.getStoreStats());
425
- * // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
475
+ * // -> {totalTables: 2, totalRows: 5, totalCells: 8, totalValues: 2, jsonLength: 212}
426
476
  * ```
427
477
  * @example
428
478
  * This example creates a Tools object, and calls the method a second time
@@ -439,3 +489,4 @@ export interface Tools {
439
489
  * @since v2.2.0
440
490
  */
441
491
  export function createTools(store: Store): Tools;
492
+ /* eslint-enable max-len */
package/lib/umd/tools.js CHANGED
@@ -1 +1 @@
1
- var e,l;e=this,l=function(e){"use strict";const l=e=>typeof e,t="",a=l(t),o=l(!0),n=l(0),d="type",r="default",s=(e,l)=>e.every(l),$=(e,l)=>e.sort(l),i=(e,l)=>e.forEach(l),I=(e,l)=>e.map(l),c=e=>e.length,b=e=>0==c(e),w=(e,...l)=>e.push(...l),C=e=>e.pop(),h=(e,...l)=>e.unshift(...l),u=e=>e.shift(),g=JSON.parse,T=isFinite,f=e=>null==e,R=e=>e==a||e==o,p=e=>l(e)==a,m=e=>Array.isArray(e),y=(e,l)=>e?.has(l)??!1,L=e=>[...e?.values()??[]],v=(e,l)=>e?.forEach(l),S=(e,l)=>e?.delete(l),k=e=>new Map(e),E=(e,l)=>e?.get(l),j=(e,l)=>v(e,((e,t)=>l(t,e))),x=(e,l)=>I([...e?.entries()??[]],(([e,t])=>l(t,e))),A=(e,l,t)=>f(t)?(S(e,l),e):e?.set(l,t),J=(e,l,t)=>(y(e,l)||A(e,l,t()),E(e,l)),O=e=>new Set(m(e)||f(e)?e:[e]),N=(e,l)=>e?.add(l),z=e=>[e,e],D=()=>[k(),k()],F=/[^A-Za-z0-9]+/,G=/^( *)\/\*\* *(.*?) *\*\/$/gm,M=(e,l,t)=>e.substring(l,t),W=e=>e.toUpperCase(),P=e=>e.toLowerCase(),_=(e,l,t,a=1)=>{const o=`${l}${1==a?"":a}`;return y(e,o)?_(e,l,t,a+1):(A(e,o,t),o)},B=e=>e.replace(G,((e,l,t)=>{const a=77-Q(l);return`${l}/**\n${t.replace(RegExp(`([^\\n]{1,${a}})(\\s|$)`,"g"),l+" * $1\n")}${l} */`})),Q=e=>e.length,U=(e,l=t)=>e.join(l),Z=e=>e.flat(1e3),q=(e,l=0)=>U(I(e.split(F),((e,t)=>(t>0||l?W:P)(M(e,0,1))+M(e,1)))),H=e=>W(U((e||" ").split(F),"_")),K=e=>`/** ${e}. */`,V=()=>{const e=D(),l=k(),a=k(),o=k();return[(...e)=>U(Z(e),"\n"),(l,t,...a)=>i(a,(a=>N(J(e[l],t,O),a))),(e,t="",a="")=>_(l,e,[t,a]),(e,l,t,o,n,d="")=>_(a,e,[l,t,o,n,d]),(e,l,t)=>_(o,e,m(t)?[`(${l}) => {`,t,"}"]:[`(${l}) => ${t}`]),(e,l)=>E(o,e)===l?e:_(o,e,l),l=>[...$(x(e[l],((e,l)=>`import {${U($(L(e)),", ")}} from '${l}';`))),t],()=>x(l,(([e,l],a)=>[K(l),`export type ${a} = ${e};`,t])),e=>x(a,(([l,a,o,n,d],r)=>{const s=e?[`${r}: ${d}(${l}): ${a} => ${o},`]:[`${r}${d}(${l}): ${a};`];return e||h(s,K(n)),w(s,t),s})),()=>x(o,((e,l)=>(e=m(e)?e:[e],w(e,C(e)+";"),[`const ${l} = ${u(e)}`,e,t])))]},X=Object,Y=X.keys,ee=X.freeze,le=(e,l)=>I(X.entries(e),(([e,t])=>l(t,e))),te=e=>b(Y(e)),ae=e=>{const t=l(e);return R(t)||t==n&&T(e)?t:void 0},oe="the content of",ne="the Store",de="A function for",re="export",se="listener",$e=" | undefined",ie=`Registers a ${se} that will be called`,Ie="Represents",ce=" => void",be=`${oe} ${ne}`,we="the end of the transaction",Ce="the specified Row",he=(e,l=0)=>`${Ie} a Row when ${l?"s":"g"}etting ${oe} the '${e}' Table`,ue=(e,l,t=0)=>`Gets ${t?"sorted, paginated":"the"} Ids of the ${e}s in ${l}`,ge=(e,l)=>`Calls a function for each ${e} in ${l}`,Te=(e,l=ne)=>`Gets whether ${e} exists in ${l}`,fe=e=>"A function that takes "+e,Re=(e=0,l=0)=>`${de} listening to changes to ${xe[e]} in ${xe[l]}`,pe=(e,l,a=0)=>`${ie} whenever ${e} in ${l} change`+(a?t:"s"),me=(e=0)=>`${je[e]} ${be}`,ye=e=>`the '${e}' Table`,Le=e=>`${Ce} in ${ye(e)}`,ve=e=>`the '${e}' Cell`,Se=(e,l=0)=>`${je[l]} ${oe} ${ye(e)}`,ke=(e,l=0)=>`${je[l]} ${oe} ${Le(e)}`,Ee=(e,l,t=0)=>`${je[t]} ${ve(l)} for ${Le(e)}`,je=["Gets","Sets","Sets part of","Deletes"],xe=[ne,"anything","Table Ids","a Table","Row Ids","a Row","Cell Ids","a Cell","invalid Cell changes"],Ae=["ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store"],Je=(e,l=t,a=t)=>`store.${e}(${l})${a?" as "+a:t}`,Oe=(e,l=t)=>`fluent(() => ${Je(e,l)})`,Ne=(e,l=t,a=t)=>`store.${e}(${l?l+", ":t}proxy(${se})${a?", "+a:t})`,ze=(e,l)=>{if(te(e))return z(t);const[a,n,s,$,i,I,c,b,w,C]=V(),h=`./${q(l)}.d`,u=q(l,1),g=q(u),T=k(),R=l=>le(e,((e,a)=>l(a,J(T,a,(()=>{const e=q(a,1);return[s(e+"Table",`{[rowId: Id]: ${e}Row}`,`${Ie} the '${a}' Table`),s(e+"Row",`{${U(m(a,((e,l,a)=>`'${e}'${f(a)?"?":t}: ${l};`))," ")}}`,he(a)),s(e+"RowWhenSet",`{${U(m(a,((e,l)=>`'${e}'?: ${l};`))," ")}}`,he(a,1)),s(e+"CellId",U(m(a,(e=>`'${e}'`))," | "),`A Cell Id for the '${a}' Table`),s(e+"CellCallback",`(...[cellId, cell]: ${U(m(a,((e,l)=>`[cellId: '${e}', cell: ${l}]`))," | ")})${ce}`,fe(`a Cell Id and value from a Row in the '${a}' Table`)),s(e+"RowCallback",`(rowId: Id, forEachCell: (cellCallback: ${e}CellCallback)${ce})${ce}`,fe(`a Row Id from the '${a}' Table, and a Cell iterator`))]})),q(a,1),I(H(a),`'${a}'`)))),m=(l,t)=>le(e[l],((e,l)=>t(l,e[d],e[r],I(H(l),`'${l}'`),q(l,1)))),y=s("Tables",`{${U(R(((e,l)=>`'${e}'?: ${l[0]};`))," ")}}`,`${Ie} ${be}`),v=s("TableId",U(R((e=>`'${e}'`))," | "),"A Table Id in "+ne),S=s("TableCallback",`(...[tableId, rowCallback]: ${U(R(((e,l)=>`[tableId: '${e}', forEachRow: (rowCallback: ${l[5]})${ce}]`))," | ")})${ce}`,fe("a Table Id, and a Row iterator")),E=s("GetCellChange",`(...[tableId, rowId, cellId]: ${U(R(((e,l)=>`[tableId: '${e}', rowId: Id, cellId: ${l[3]}]`))," | ")}) => CellChange`,de+" returning information about any Cell's changes during a transaction"),x=s("TablesListener",`(${g}: ${u}, getCellChange: ${E}${$e})${ce}`,Re(1)),O=s("TableIdsListener",`(${g}: ${u})${ce}`,Re(2)),N=s("TableListener",`(${g}: ${u}, tableId: ${v}, getCellChange: ${E}${$e})${ce}`,Re(3)),D=s("RowIdsListener",`(${g}: ${u}, tableId: ${v})${ce}`,Re(4,3)),F=s("RowListener",`(${g}: ${u}, tableId: ${v}, rowId: Id, getCellChange: ${E}${$e})${ce}`,Re(5,3)),G=s("CellIdsListener",`(${g}: ${u}, tableId: ${v}, rowId: Id)`+ce,Re(6,5)),M=s("CellListener",`(...[${g}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${U(Z(R((e=>m(e,((l,t)=>`[${g}: ${u}, tableId: '${e}', rowId: Id, cellId: '${l}', newCell: ${t}${$e}, oldCell: ${t}${$e}, getCellChange: ${E} | undefined]`)))))," | ")})${ce}`,Re(7,5)),W=s("InvalidCellListener",`(${g}: ${u}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[])${ce}`,Re(8)),P=s("TransactionListener",`(${g}: ${u}, cellsTouched: boolean)${ce}`,de+" listening to the completion of a transaction");$("hasTables",t,o,Je("hasTables"),Te("any Table")),$("getTables",t,y,Je("getTables"),me()),$("setTables","tables: "+y,u,Oe("setTables","tables"),me(1)),$("delTables",t,u,Oe("delTables"),me(3)),$("getTableIds",t,v+"[]",Je("getTableIds",t,v+"[]"),ue("Table",ne)),$("forEachTable","tableCallback: "+S,"void",Je("forEachTable","tableCallback as any"),ge("Table",ne));const _=k();return R(((e,[l,a,d,r,s,i],I,c)=>{n(1,h,l,a,d,r,s,i),$(`has${I}Table`,t,o,Je("hasTable",c),Te(ye(e))),$(`get${I}Table`,t,l,Je("getTable",c,l),Se(e)),$(`set${I}Table`,"table: "+l,u,Oe("setTable",c+", table"),Se(e,1)),$(`del${I}Table`,t,u,Oe("delTable",c),Se(e,3)),$(`get${I}RowIds`,t,"Ids",Je("getRowIds",c),ue("Row",ye(e))),$(`get${I}SortedRowIds`,`cellId?: ${r}, descending?: boolean, offset?: number, limit?: number`,"Ids",Je("getSortedRowIds",c+", cellId, descending, offset, limit"),ue("Row",ye(e),1)),$(`forEach${I}Row`,"rowCallback: "+i,"void",Je("forEachRow",c+", rowCallback as any"),ge("Row",ye(e))),$(`has${I}Row`,"rowId: Id",o,Je("hasRow",c+", rowId"),Te(Ce,ye(e))),$(`get${I}Row`,"rowId: Id",a,Je("getRow",c+", rowId",a),ke(e)),$(`set${I}Row`,"rowId: Id, row: "+d,u,Oe("setRow",c+", rowId, row"),ke(e,1)),$(`add${I}Row`,"row: "+d,"Id"+$e,Je("addRow",c+", row"),"Adds a new Row to "+ye(e)),$(`set${I}PartialRow`,"rowId: Id, partialRow: "+d,u,Oe("setPartialRow",c+", rowId, partialRow"),ke(e,2)),$(`del${I}Row`,"rowId: Id",u,Oe("delRow",c+", rowId"),ke(e,3)),$(`get${I}CellIds`,"rowId: Id",r+"[]",Je("getCellIds",c+", rowId",r+"[]"),ue("Cell",Le(e))),$(`forEach${I}Cell`,"rowId: Id, cellCallback: "+s,"void",Je("forEachCell",c+", rowId, cellCallback as any"),ge("Cell",Le(e))),m(e,((l,a,n,d,r)=>{const s="Map"+q(a,1);A(_,a,s),$(`has${I}${r}Cell`,"rowId: Id",o,Je("hasCell",`${c}, rowId, ${d}`),Te(ve(l),Le(e)));const i=`${a}${f(n)?$e:t}`;$(`get${I}${r}Cell`,"rowId: Id",i,Je("getCell",`${c}, rowId, ${d}`,i),Ee(e,l)),$(`set${I}${r}Cell`,`rowId: Id, cell: ${a} | ${s}`,u,Oe("setCell",`${c}, rowId, ${d}, cell as any`),Ee(e,l,1)),$(`del${I}${r}Cell`,"rowId: Id",u,Oe("delCell",`${c}, rowId, ${d}`),Ee(e,l,3))}))})),$("getJson",t,"Json",Je("getJson"),`${je[0]} a string serialization ${be}`),$("setJson","json: Json",u,Oe("setJson","json"),`${je[1]} ${be} from a serialized string`),$("transaction","actions: () => Return, doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean","Return",Je("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),$("startTransaction",t,u,Oe("startTransaction"),"Explicitly starts a transaction"),$("finishTransaction","doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean,",u,Oe("finishTransaction","doRollback"),"Explicitly finishes a transaction"),$("addTablesListener",`${se}: ${x}, mutator?: boolean`,"Id",Ne("addTablesListener",t,"mutator"),`${ie} whenever ${be} changes`),$("addTableIdsListener",`${se}: ${O}, mutator?: boolean`,"Id",Ne("addTableIdsListener",t,"mutator"),pe("the Table Ids",ne,1)),$("addTableListener",`tableId: ${v} | null, ${se}: ${N}, mutator?: boolean`,"Id",Ne("addTableListener","tableId","mutator"),pe("a Table",ne)),$("addRowIdsListener",`tableId: ${v} | null, ${se}: ${D}, mutator?: boolean`,"Id",Ne("addRowIdsListener","tableId","mutator"),pe("the Row Ids","a Table",1)),$("addRowListener",`tableId: ${v} | null, rowId: IdOrNull, ${se}: ${F}, mutator?: boolean`,"Id",Ne("addRowListener","tableId, rowId","mutator"),pe("a Row","a Table")),$("addCellIdsListener",`tableId: ${v} | null, rowId: IdOrNull, ${se}: ${G}, mutator?: boolean`,"Id",Ne("addCellIdsListener","tableId, rowId","mutator"),pe("the Cell Ids","a Row",1)),$("addCellListener",`tableId: ${v} | null, rowId: IdOrNull, cellId: ${U(R(((e,l)=>l[3]))," | ")} | null, ${se}: ${M}, mutator?: boolean`,"Id",Ne("addCellListener","tableId, rowId, cellId","mutator"),pe("a Cell","a Row")),$("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, ${se}: ${W}, mutator?: boolean`,"Id",Ne("addCellListener","tableId, rowId, cellId","mutator"),ie+" whenever an invalid Cell change was attempted"),$("addWillFinishTransactionListener",`${se}: ${P}`,"Id",Ne("addWillFinishTransactionListener"),`${ie} just before ${we}`),$("addDidFinishTransactionListener",`${se}: ${P}`,"Id",Ne("addDidFinishTransactionListener"),`${ie} just after ${we}`),$("callListener",se+"Id: Id",u,Oe("callListener",se+"Id"),`Manually provoke a ${se} to be called`),$("delListener",se+"Id: Id",u,Oe("delListener",se+"Id"),`Remove a ${se} that was previously added to ${ne}`),$("getStore",t,"Store","store",je[0]+" the underlying Store object"),j(_,((e,l)=>s(l,`(cell: ${e}${$e}) => ${e}`,`Takes a ${e} Cell value and returns another`))),n(0,"tinybase","CellChange",...Ae),n(1,"tinybase","createStore",...Ae),n(1,h,u,`create${u} as create${u}Decl`,y,v,S,x,O,N,D,F,G,M,W,P,...L(_)),I("store",["createStore().setSchema({",Z(R(((e,l,a,o)=>[`[${o}]: {`,...m(e,((e,l,a,o)=>`[${o}]: {[${I(H(d),`'${d}'`)}]: ${I(H(l),`'${l}'`)}${f(a)?t:`, [${I(H(r),`'${r}'`)}]: ${p(a)?I(H(a),`'${a}'`):a}`}},`)),"},"]))),"})"]),i("fluent","actions: () => Store",["actions();",`return ${g};`]),i("proxy",se+": any",`(_: Store, ...args: any[]) => ${se}(${g}, ...args)`),I(g,["{",...w(1),"}"]),[a(...c(0),...b(),`${re} interface ${u} {`,...w(0),"}",t,K(`Creates a ${u} object`),`${re} function create${u}(): ${u};`),a(...c(1),`${re} const create${u}: typeof create${u}Decl = () => {`,...C(),`return Object.freeze(${g});`,"};")]},De={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},Fe=(e=>{const l=new WeakMap;return t=>(l.has(t)||l.set(t,e(t)),l.get(t))})((e=>{const l=()=>{const l=g(e.getSchemaJson());return!te(l)||s(e.getTableIds(),(t=>{const a=e.getRowIds(t),o=k();if(s(a,(l=>s(e.getCellIds(t,l),(a=>{const n=e.getCell(t,l,a),d=J(o,a,(()=>[ae(n),k(),[0],0])),[r,s,[$]]=d,i=J(s,n,(()=>0))+1;return i>$&&(d[2]=[i,n]),A(s,n,i),d[3]++,r==ae(n)})))))return l[t]={},v(o,(([e,,[,o],n],s)=>{l[t][s]={[d]:e,...n==c(a)?{[r]:o}:{}}})),1}))?l:{}},t=e=>ze(l(),e),a=async e=>{let l;try{l=(await import("prettier")).format}catch{l=e=>e}return I(t(e),(e=>B(l(e,De))))};return ee({getStoreStats:l=>{let t=0,a=0,o=0;const n={};return e.forEachTable(((e,d)=>{t++;let r=0,s=0;const $={};d(((e,t)=>{r++;let a=0;t((()=>a++)),s+=a,l&&($[e]={rowCells:a})})),a+=r,o+=s,l&&(n[e]={tableRows:r,tableCells:s,rows:$})})),{totalTables:t,totalRows:a,totalCells:o,jsonLength:Q(e.getJson()),...l?{detail:{tables:n}}:{}}},getStoreSchema:l,getStoreApi:t,getPrettyStoreApi:a})}));e.createTools=Fe},"object"==typeof exports&&"undefined"!=typeof module?l(exports):"function"==typeof define&&define.amd?define(["exports"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseTools={});
1
+ var e,a;e=this,a=function(e){"use strict";const a=e=>typeof e,l="",t=a(l),s=a(!0),o=a(0),n="type",d="default",r=(e,a)=>e.every(a),$=(e,a)=>e.sort(a),i=(e,a)=>e.forEach(a),u=(e,a)=>e.map(a),I=e=>e.length,c=e=>0==I(e),b=(e,...a)=>e.push(...a),w=e=>e.pop(),h=(e,...a)=>e.unshift(...a),g=e=>e.shift(),C=JSON.parse,T=isFinite,f=(e,a)=>e instanceof a,V=e=>null==e,R=e=>e==t||e==s,m=e=>a(e)==t,p=e=>Array.isArray(e),v=e=>{const l=a(e);return R(l)||l==o&&T(e)?l:void 0},L=(e,a)=>e?.has(a)??!1,y=e=>[...e?.values()??[]],k=(e,a)=>e?.forEach(a),S=(e,a)=>e?.delete(a),J=e=>new Map(e),E=(e,a)=>e?.get(a),j=(e,a)=>k(e,((e,l)=>a(l,e))),x=(e,a)=>u([...e?.entries()??[]],(([e,l])=>a(l,e))),A=(e,a,l)=>V(l)?(S(e,a),e):e?.set(a,l),O=(e,a,l)=>(L(e,a)||A(e,a,l()),E(e,a)),D=e=>new Set(p(e)||V(e)?e:[e]),N=(e,a)=>e?.add(a),G=e=>[e,e],z=()=>[J(),J()],F=/[^A-Za-z]+/,P=/[^A-Za-z0-9]+/,W=/^( *)\/\*\* *(.*?) *\*\/$/gm,M=(e,a,l)=>e.substring(a,l),Z=e=>e.toUpperCase(),_=e=>e.toLowerCase(),B=(e,a,l,t=1)=>{const s=`${a}${1==t?"":t}`;return L(e,s)?B(e,a,l,t+1):(A(e,s,l),s)},Q=e=>e.replace(W,((e,a,l)=>{const t=77-U(a);return`${a}/**\n${l.replace(RegExp(`([^\\n]{1,${t}})(\\s|$)`,"g"),a+" * $1\n")}${a} */`})),U=e=>e.length,q=(e,a=l)=>e.join(a),H=e=>e.flat(1e3),K=(e,a=0)=>q(u(e.split(P),((e,l)=>(l>0||a?Z:_)(M(e,0,1))+M(e,1)))),X=e=>Z(q((e&&!F.test(e[0])?e:" "+e).split(P),"_")),Y=e=>`/** ${e}. */`,ee=()=>{const e=z(),a=J(),t=J(),s=J();return[(...e)=>q(H(e),"\n"),(a,l,...t)=>i(t,(t=>N(O(e[a],l,D),t))),(e,l,t)=>B(a,e,[l,t]),(e,a,l,s,o,n="")=>B(t,e,[a,l,s,o,n]),(e,a,l)=>B(s,e,p(l)?[`(${a}) => {`,l,"}"]:[`(${a}) => ${l}`]),(e,a)=>E(s,e)===a?e:B(s,e,a),a=>[...$(x(e[a],((e,a)=>`import {${q($(y(e)),", ")}} from '${a}';`))),l],()=>x(a,(([e,a],t)=>[Y(a),`export type ${t} = ${e};`,l])),e=>x(t,(([a,t,s,o,n],d)=>{const r=e?[`${d}: ${n}(${a}): ${t} => ${s},`]:[`${d}${n}(${a}): ${t};`];return e||h(r,Y(o)),b(r,l),r})),()=>x(s,((e,a)=>(e=p(e)?e:[e],b(e,w(e)+";"),[`const ${a} = ${g(e)}`,e,l])))]},ae=Object,le=ae.keys,te=ae.freeze,se=e=>f(e,ae)&&e.constructor==ae,oe=(e,a)=>u(ae.entries(e),(([e,l])=>a(l,e))),ne=e=>se(e)&&c(le(e)),de="the Store",re="A function for",$e="export",ie="listener",ue=" | undefined",Ie=`Registers a ${ie} that will be called`,ce="Represents",be=" => void",we="the end of the transaction",he="the specified Row",ge="a string serialization of",Ce=(e=0,a=0)=>`the ${Ne[e]}content of${a?" "+de:""}`,Te=(e,a=0,l=0)=>`${Oe[e]} ${Ce(a,1)}${l?" when set":""}`,fe=(e,a=0)=>`${ce} a Row when ${a?"s":"g"}etting ${Ce()} the '${e}' Table`,Ve=(e,a,l=0)=>`Gets ${l?"sorted, paginated":"the"} Ids of the ${e}s in ${a}`,Re=(e,a)=>`Calls a function for each ${e} in ${a}`,me=(e,a=de)=>`Gets whether ${e} exists in ${a}`,pe=e=>"A function that takes "+e,ve=(e,a=0)=>`${re} listening to changes to ${De[e]} in ${De[a]}`,Le=(e,a,t=0)=>`${Ie} whenever ${e} in ${a} change`+(t?l:"s"),ye=e=>`the '${e}' Table`,ke=e=>`${he} in ${ye(e)}`,Se=e=>`the '${e}' Cell`,Je=e=>`the '${e}' Value`,Ee=(e,a=0)=>`${Oe[a]} ${Ce()} ${ye(e)}`,je=(e,a=0)=>`${Oe[a]} ${Ce()} ${ke(e)}`,xe=(e,a,l=0)=>`${Oe[l]} ${Se(a)} for ${ke(e)}`,Ae=(e,a=0)=>`${Oe[a]} ${Je(e)}`,Oe=["Gets","Sets","Sets part of","Deletes",ce,"Gets "+ge,"Sets "+ge,Ie+" whenever"],De=[de,"Tables","Table Ids","a Table","Row Ids","a Row","Cell Ids","a Cell","invalid Cell changes","Values","Value Ids","a Value","invalid Value changes"],Ne=["","tabular ","keyed value "],Ge=["DoRollback","Id","IdOrNull","Ids","Json","Store"],ze=(e,a=l,t=l)=>`store.${e}(${a})${t?" as "+t:l}`,Fe=(e,a=l)=>`fluent(() => ${ze(e,a)})`,Pe=(e,a=l,t=l)=>`store.${e}(${a?a+", ":l}proxy(${ie})${t?", "+t:l})`,We=(e,a,t)=>{if(ne(e)&&ne(a))return G(l);const[o,r,$,i,u,I,c,w,h,g]=ee(),C=`./${K(t)}.d`,T=K(t,1),f=K(T),R=[],p=J(),v=a=>oe(e,((e,t)=>a(t,O(p,t,(()=>{const e=K(t,1);return[$(e+"Table",`{[rowId: Id]: ${e}Row}`,`${ce} the '${t}' Table`),$(e+"Row",`{${q(L(t,((e,a,t)=>`'${e}'${V(t)?"?":l}: ${a};`))," ")}}`,fe(t)),$(e+"RowWhenSet",`{${q(L(t,((e,a)=>`'${e}'?: ${a};`))," ")}}`,fe(t,1)),$(e+"CellId",q(L(t,(e=>`'${e}'`))," | "),`A Cell Id for the '${t}' Table`),$(e+"CellCallback",`(...[cellId, cell]: ${q(L(t,((e,a)=>`[cellId: '${e}', cell: ${a}]`))," | ")})${be}`,pe(`a Cell Id and value from a Row in the '${t}' Table`)),$(e+"RowCallback",`(rowId: Id, forEachCell: (cellCallback: ${e}CellCallback)${be})${be}`,pe(`a Row Id from the '${t}' Table, and a Cell iterator`))]})),K(t,1),I(X(t),`'${t}'`)))),L=(a,l)=>oe(e[a],((e,a)=>l(a,e[n],e[d],I(X(a),`'${a}'`),K(a,1)))),k=e=>oe(a,((a,l)=>e(l,a[n],a[d],I(X(l),`'${l}'`),K(l,1))));if(r(1,C,T,`create${T} as create${T}Decl`),!ne(e)){const e=$("Tables",`{${q(v(((e,a)=>`'${e}'?: ${a[0]};`))," ")}}`,Te(4,1)),a=$("TableId",q(v((e=>`'${e}'`))," | "),"A Table Id in "+de),t=$("TableCallback",`(...[tableId, rowCallback]: ${q(v(((e,a)=>`[tableId: '${e}', forEachRow: (rowCallback: ${a[5]})${be}]`))," | ")})${be}`,pe("a Table Id, and a Row iterator")),o=$("GetCellChange",`(...[tableId, rowId, cellId]: ${q(v(((e,a)=>`[tableId: '${e}', rowId: Id, cellId: ${a[3]}]`))," | ")}) => CellChange`,re+" returning information about any Cell's changes during a transaction"),u=$("TablesListener",`(${f}: ${T}, getCellChange: ${o}${ue})${be}`,ve(1)),c=$("TableIdsListener",`(${f}: ${T})${be}`,ve(2)),w=$("TableListener",`(${f}: ${T}, tableId: ${a}, getCellChange: ${o}${ue})${be}`,ve(3)),h=$("RowIdsListener",`(${f}: ${T}, tableId: ${a})`+be,ve(4,3)),g=$("RowListener",`(${f}: ${T}, tableId: ${a}, rowId: Id, getCellChange: ${o}${ue})${be}`,ve(5,3)),p=$("CellIdsListener",`(${f}: ${T}, tableId: ${a}, rowId: Id)`+be,ve(6,5)),k=$("CellListener",`(...[${f}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${q(H(v((e=>L(e,((a,l)=>`[${f}: ${T}, tableId: '${e}', rowId: Id, cellId: '${a}', newCell: ${l}${ue}, oldCell: ${l}${ue}, getCellChange: ${o} | undefined]`)))))," | ")})${be}`,ve(7,5)),S=$("InvalidCellListener",`(${f}: ${T}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[])${be}`,ve(8));i("hasTables",l,s,ze("hasTables"),me("any Table")),i("getTables",l,e,ze("getTables"),Te(0,1)),i("setTables","tables: "+e,T,Fe("setTables","tables"),Te(1,1)),i("delTables",l,T,Fe("delTables"),Te(3,1)),i("getTableIds",l,a+"[]",ze("getTableIds",l,a+"[]"),Ve("Table",de)),i("forEachTable","tableCallback: "+t,"void",ze("forEachTable","tableCallback as any"),Re("Table",de));const E=J();v(((e,[a,t,o,n,d,$],u,I)=>{r(1,C,a,t,o,n,d,$),i(`has${u}Table`,l,s,ze("hasTable",I),me(ye(e))),i(`get${u}Table`,l,a,ze("getTable",I,a),Ee(e)),i(`set${u}Table`,"table: "+a,T,Fe("setTable",I+", table"),Ee(e,1)),i(`del${u}Table`,l,T,Fe("delTable",I),Ee(e,3)),i(`get${u}RowIds`,l,"Ids",ze("getRowIds",I),Ve("Row",ye(e))),i(`get${u}SortedRowIds`,`cellId?: ${n}, descending?: boolean, offset?: number, limit?: number`,"Ids",ze("getSortedRowIds",I+", cellId, descending, offset, limit"),Ve("Row",ye(e),1)),i(`forEach${u}Row`,"rowCallback: "+$,"void",ze("forEachRow",I+", rowCallback as any"),Re("Row",ye(e))),i(`has${u}Row`,"rowId: Id",s,ze("hasRow",I+", rowId"),me(he,ye(e))),i(`get${u}Row`,"rowId: Id",t,ze("getRow",I+", rowId",t),je(e)),i(`set${u}Row`,"rowId: Id, row: "+o,T,Fe("setRow",I+", rowId, row"),je(e,1)),i(`add${u}Row`,"row: "+o,"Id"+ue,ze("addRow",I+", row"),"Adds a new Row to "+ye(e)),i(`set${u}PartialRow`,"rowId: Id, partialRow: "+o,T,Fe("setPartialRow",I+", rowId, partialRow"),je(e,2)),i(`del${u}Row`,"rowId: Id",T,Fe("delRow",I+", rowId"),je(e,3)),i(`get${u}CellIds`,"rowId: Id",n+"[]",ze("getCellIds",I+", rowId",n+"[]"),Ve("Cell",ke(e))),i(`forEach${u}Cell`,"rowId: Id, cellCallback: "+d,"void",ze("forEachCell",I+", rowId, cellCallback as any"),Re("Cell",ke(e))),L(e,((a,t,o,n,d)=>{const r="Map"+K(t,1);A(E,t,r),i(`has${u}${d}Cell`,"rowId: Id",s,ze("hasCell",`${I}, rowId, ${n}`),me(Se(a),ke(e)));const $=`${t}${V(o)?ue:l}`;i(`get${u}${d}Cell`,"rowId: Id",$,ze("getCell",`${I}, rowId, ${n}`,$),xe(e,a)),i(`set${u}${d}Cell`,`rowId: Id, cell: ${t} | ${r}`,T,Fe("setCell",`${I}, rowId, ${n}, cell as any`),xe(e,a,1)),i(`del${u}${d}Cell`,"rowId: Id",T,Fe("delCell",`${I}, rowId, ${n}`),xe(e,a,3))}))})),i("getTablesJson",l,"Json",ze("getTablesJson"),Te(5,1)),i("setTablesJson","tablesJson: Json",T,Fe("setTablesJson","tablesJson"),Te(6,1)),i("addTablesListener",`${ie}: ${u}, mutator?: boolean`,"Id",Pe("addTablesListener",l,"mutator"),Te(7,1)+" changes"),i("addTableIdsListener",`${ie}: ${c}, mutator?: boolean`,"Id",Pe("addTableIdsListener",l,"mutator"),Le("the Table Ids",de,1)),i("addTableListener",`tableId: ${a} | null, ${ie}: ${w}, mutator?: boolean`,"Id",Pe("addTableListener","tableId","mutator"),Le("a Table",de)),i("addRowIdsListener",`tableId: ${a} | null, ${ie}: ${h}, mutator?: boolean`,"Id",Pe("addRowIdsListener","tableId","mutator"),Le("the Row Ids","a Table",1)),i("addRowListener",`tableId: ${a} | null, rowId: IdOrNull, ${ie}: ${g}, mutator?: boolean`,"Id",Pe("addRowListener","tableId, rowId","mutator"),Le("a Row","a Table")),i("addCellIdsListener",`tableId: ${a} | null, rowId: IdOrNull, ${ie}: ${p}, mutator?: boolean`,"Id",Pe("addCellIdsListener","tableId, rowId","mutator"),Le("the Cell Ids","a Row",1)),i("addCellListener",`tableId: ${a} | null, rowId: IdOrNull, cellId: ${q(v(((e,a)=>a[3]))," | ")} | null, ${ie}: ${k}, mutator?: boolean`,"Id",Pe("addCellListener","tableId, rowId, cellId","mutator"),Le("a Cell","a Row")),i("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, ${ie}: ${S}, mutator?: boolean`,"Id",Pe("addInvalidCellListener","tableId, rowId, cellId","mutator"),Ie+" whenever an invalid Cell change was attempted"),j(E,((e,a)=>$(a,`(cell: ${e}${ue}) => ${e}`,`Takes a ${e} Cell value and returns another`))),r(1,C,e,a,t,u,c,w,h,g,p,k,S,...y(E)),r(0,"tinybase","CellChange"),b(R,".setTablesSchema({",H(v(((e,a,t,s)=>[`[${s}]: {`,...L(e,((e,a,t,s)=>`[${s}]: {[${I(X(n),`'${n}'`)}]: ${I(X(a),`'${a}'`)}${V(t)?l:`, [${I(X(d),`'${d}'`)}]: ${m(t)?I(X(t),`'${t}'`):t}`}},`)),"},"]))),"})")}if(!ne(a)){const e=$("Values",`{${q(k(((e,a,t)=>`'${e}'${V(t)?"?":l}: ${a};`))," ")}}`,Te(4,2)),a=$("ValuesWhenSet",`{${q(k(((e,a)=>`'${e}'?: ${a};`))," ")}}`,Te(4,2,1)),t=$("ValueId",q(k((e=>`'${e}'`))," | "),"A Value Id in "+de),o=$("ValueCallback",`(...[valueId, rowCallback]: ${q(k(((e,a)=>`[valueId: '${e}', value: ${a}]`))," | ")})${be}`,pe("a Value Id, and value")),u=$("GetValueChange",`(valueId: ${t}) => ValueChange`,re+" returning information about any Value's changes during a transaction"),c=$("ValuesListener",`(${f}: ${T}, getValueChange: ${u}${ue})`+be,ve(9)),w=$("ValueIdsListener",`(${f}: ${T})${be}`,ve(10)),h=$("ValueListener",`(...[${f}, valueId, newValue, oldValue, getValueChange]: ${q(k(((e,a)=>`[${f}: ${T}, valueId: '${e}', newValue: ${a}${ue}, oldValue: ${a}${ue}, getValueChange: ${u} | undefined]`))," | ")})${be}`,ve(11)),g=$("InvalidValueListener",`(${f}: ${T}, valueId: Id, invalidValues: any[])${be}`,ve(12));i("hasValues",l,s,ze("hasValues"),me("any Value")),i("getValues",l,e,ze("getValues"),Te(0,2)),i("setValues","values: "+a,T,Fe("setValues","values"),Te(1,2)),i("setPartialValues","partialValues: "+a,T,Fe("setPartialValues","partialValues"),Te(2,2)),i("delValues",l,T,Fe("delValues"),Te(3,2)),i("getValueIds",l,t+"[]",ze("getValueIds",l,t+"[]"),Ve("Value",de)),i("forEachValue","valueCallback: "+o,"void",ze("forEachValue","valueCallback as any"),Re("Value",de)),k(((e,a,t,o,n)=>{i(`has${n}Value`,l,s,ze("hasValue",o),me(Je(e))),i(`get${n}Value`,l,a,ze("getValue",o,a),Ae(e)),i(`set${n}Value`,"value: "+a,T,Fe("setValue",o+", value"),Ae(e,1)),i(`del${n}Value`,l,T,Fe("delValue",o),Ae(e,3))})),i("getValuesJson",l,"Json",ze("getValuesJson"),Te(5,2)),i("setValuesJson","valuesJson: Json",T,Fe("setValuesJson","valuesJson"),Te(6,2)),i("addValuesListener",`${ie}: ${c}, mutator?: boolean`,"Id",Pe("addValuesListener",l,"mutator"),Te(7,2)+" changes"),i("addValueIdsListener",`${ie}: ${w}, mutator?: boolean`,"Id",Pe("addValueIdsListener",l,"mutator"),Le("the Value Ids",de,1)),i("addValueListener",`valueId: ${t} | null, ${ie}: ${h}, mutator?: boolean`,"Id",Pe("addValueListener","valueId","mutator"),Le("a Value",de)),i("addInvalidValueListener",`valueId: IdOrNull, ${ie}: ${g}, mutator?: boolean`,"Id",Pe("addInvalidValueListener","valueId","mutator"),Ie+" whenever an invalid Cell change was attempted"),r(1,C,e,t,o,c,w,h,g),r(0,"tinybase","ValueChange"),b(R,".setValuesSchema({",k(((e,a,t,s)=>[`[${s}]: {[${I(X(n),`'${n}'`)}]: ${I(X(a),`'${a}'`)}${V(t)?l:`, [${I(X(d),`'${d}'`)}]: ${m(t)?I(X(t),`'${t}'`):t}`}},`])),"})")}r(0,"tinybase",...Ge);const S=$("TransactionListener",`(${f}: ${T}, cellsTouched: boolean, valuesTouched: boolean)${be}`,re+" listening to the completion of a transaction");return i("getJson",l,"Json",ze("getJson"),Te(5)),i("setJson","json: Json",T,Fe("setJson","json"),Te(6)),i("transaction","actions: () => Return, doRollback?: DoRollback","Return",ze("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),i("startTransaction",l,T,Fe("startTransaction"),"Explicitly starts a transaction"),i("finishTransaction","doRollback?: DoRollback,",T,Fe("finishTransaction","doRollback"),"Explicitly finishes a transaction"),i("addWillFinishTransactionListener",`${ie}: ${S}`,"Id",Pe("addWillFinishTransactionListener"),`${Ie} just before ${we}`),i("addDidFinishTransactionListener",`${ie}: ${S}`,"Id",Pe("addDidFinishTransactionListener"),`${Ie} just after ${we}`),i("callListener",ie+"Id: Id",T,Fe("callListener",ie+"Id"),`Manually provoke a ${ie} to be called`),i("delListener",ie+"Id: Id",T,Fe("delListener",ie+"Id"),`Remove a ${ie} that was previously added to ${de}`),i("getStore",l,"Store","store",Oe[0]+" the underlying Store object"),r(1,"tinybase","createStore",...Ge),r(1,C,T,`create${T} as create${T}Decl`,S),I("store",["createStore()",...R]),u("fluent","actions: () => Store",["actions();",`return ${f};`]),u("proxy",ie+": any",`(_: Store, ...args: any[]) => ${ie}(${f}, ...args)`),I(f,["{",...h(1),"}"]),[o(...c(0),...w(),`${$e} interface ${T} {`,...h(0),"}",l,Y(`Creates a ${T} object`),`${$e} function create${T}(): ${T};`),o(...c(1),`${$e} const create${T}: typeof create${T}Decl = () => {`,...g(),`return Object.freeze(${f});`,"};")]},Me={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},Ze=(e=>{const a=new WeakMap;return l=>(a.has(l)||a.set(l,e(l)),a.get(l))})((e=>{const a=()=>{const a=C(e.getTablesSchemaJson());return!ne(a)||r(e.getTableIds(),(l=>{const t=e.getRowIds(l),s=J();if(r(t,(a=>r(e.getCellIds(l,a),(t=>{const o=e.getCell(l,a,t),n=O(s,t,(()=>[v(o),J(),[0],0])),[d,r,[$]]=n,i=O(r,o,(()=>0))+1;return i>$&&(n[2]=[i,o]),A(r,o,i),n[3]++,d==v(o)})))))return a[l]={},k(s,(([e,,[,s],o],r)=>{a[l][r]={[n]:e,...o==I(t)?{[d]:s}:{}}})),1}))?a:{}},l=()=>{const a=C(e.getValuesSchemaJson());return ne(a)&&e.forEachValue(((e,l)=>{a[e]={[n]:v(l)}})),a},t=e=>We(a(),l(),e),s=async e=>{let a;try{a=(await import("prettier")).format}catch{a=e=>e}return u(t(e),(e=>Q(a(e,Me))))};return te({getStoreStats:a=>{let l=0,t=0,s=0;const o={};return e.forEachTable(((e,n)=>{l++;let d=0,r=0;const $={};n(((e,l)=>{d++;let t=0;l((()=>t++)),r+=t,a&&($[e]={rowCells:t})})),t+=d,s+=r,a&&(o[e]={tableRows:d,tableCells:r,rows:$})})),{totalTables:l,totalRows:t,totalCells:s,totalValues:I(e.getValueIds()),jsonLength:U(e.getJson()),...a?{detail:{tables:o}}:{}}},getStoreTablesSchema:a,getStoreValuesSchema:l,getStoreApi:t,getPrettyStoreApi:s})}));e.createTools=Ze},"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseTools={});
Binary file