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/ui-react.js CHANGED
@@ -1 +1 @@
1
- import e,{useContext as o}from"react";const t=e=>typeof e,s=t(""),d=(e,o)=>e.map(o),r=e=>null==e,n=(e,o,t)=>r(e)?t?.():o(e),l=()=>{},{createContext:I,useContext:u}=e,i=I([]),c=(e,o)=>{const t=u(i);return r(e)?t[o]:((e,o)=>n(e,(e=>e[o])))(t[o+1],e)},a=(e,o)=>{const d=c(e,o);return r(e)||(e=>t(e)==s)(e)?d:e},p=e=>c(e,0),b=e=>c(e,2),w=e=>c(e,4),R=e=>c(e,6),g=e=>c(e,8),C=e=>c(e,10),m=e=>a(e,0),k=e=>a(e,2),y=e=>a(e,4),h=e=>a(e,6),T=e=>a(e,8),q=e=>a(e,10),{useCallback:v,useEffect:x,useMemo:P,useRef:S,useState:f}=e,B=(e,o,t=[])=>{const s=P((()=>o(e)),[e,...t]);return x((()=>()=>s.destroy()),[s]),s},L=(e,o,t,s=[],d)=>{const[,n]=f(),l=v((()=>o?.["get"+e]?.(...s)??t),[o,...s]),[I]=f(l),u=S(I);return P((()=>u.current=l()),[l]),M(e,o,((...e)=>{u.current=r(d)?l():e[d],n([])}),[],s),u.current},M=(e,o,t,s=[],d=[],...r)=>x((()=>{const s=o?.["add"+e+"Listener"]?.(...d,t,...r);return()=>o?.delListener(s)}),[o,...d,...s,...r]),A=(e,o,t,s=[],d=l,r=[],...I)=>{const u=m(e);return v((e=>n(u,(s=>n(t(e,s),(e=>d(s["set"+o](...I,e),e)))))),[u,o,...s,...r,...I])},E=(e,o,t=l,s=[],...d)=>{const r=m(e);return v((()=>t(r?.["del"+o](...d))),[r,o,...s,...d])},F=(e,o,t)=>{const s=q(e);return v((()=>s?.[o](t)),[s,o,t])},j=(e,o=[])=>P(e,o),z=e=>L("Tables",m(e),{}),D=e=>L("TableIds",m(e),[],[]),G=(e,o)=>L("Table",m(o),{},[e]),H=(e,o)=>L("RowIds",m(o),[],[e]),J=(e,o,t,s=0,d,r)=>L("SortedRowIds",m(r),[],[e,o,t,s,d],6),K=(e,o,t)=>L("Row",m(t),{},[e,o]),N=(e,o,t)=>L("CellIds",m(t),[],[e,o]),O=(e,o,t,s)=>L("Cell",m(s),void 0,[e,o,t],4),Q=(e,o,t,s,d)=>A(t,"Tables",e,o,s,d),U=(e,o,t,s,d,r)=>A(s,"Table",o,t,d,r,e),V=(e,o,t,s,d,r,n)=>A(d,"Row",t,s,r,n,e,o),W=(e,o,t=[],s,d=l,r=[])=>{const I=m(s);return v((t=>n(I,(s=>n(o(t,s),(o=>d(s.addRow(e,o),s,o)))))),[I,e,...t,...r])},X=(e,o,t,s,d,r,n)=>A(d,"PartialRow",t,s,r,n,e,o),Y=(e,o,t,s,d,r,n,l)=>A(r,"Cell",s,d,n,l,e,o,t),Z=(e,o,t)=>E(e,"Tables",o,t),$=(e,o,t,s)=>E(o,"Table",t,s,e),_=(e,o,t,s,d)=>E(t,"Row",s,d,e,o),ee=(e,o,t,s,d,r,n)=>E(d,"Cell",r,n,e,o,t,s),oe=(e,o,t,s)=>M("Tables",m(s),e,o,[],t),te=(e,o,t,s)=>M("TableIds",m(s),e,o,[],t),se=(e,o,t,s,d)=>M("Table",m(d),o,t,[e],s),de=(e,o,t,s,d)=>M("RowIds",m(d),o,t,[e],s),re=(e,o,t,s,d,r,n,l,I)=>M("SortedRowIds",m(I),r,n,[e,o,t,s,d],l),ne=(e,o,t,s,d,r)=>M("Row",m(r),t,s,[e,o],d),le=(e,o,t,s,d,r)=>M("CellIds",m(r),t,s,[e,o],d),Ie=(e,o,t,s,d,r,n)=>M("Cell",m(n),s,d,[e,o,t],r),ue=(e,o,t)=>B(e,o,t),ie=(e,o)=>L("Metric",k(o),void 0,[e]),ce=(e,o,t,s)=>M("Metric",k(s),o,t,[e]),ae=(e,o,t)=>B(e,o,t),pe=(e,o)=>L("SliceIds",y(o),[],[e]),be=(e,o,t)=>L("SliceRowIds",y(t),[],[e,o]),we=(e,o,t,s)=>M("SliceIds",y(s),o,t,[e]),Re=(e,o,t,s,d)=>M("SliceRowIds",y(d),t,s,[e,o]),ge=(e,o,t)=>B(e,o,t),Ce=(e,o,t)=>L("RemoteRowId",h(t),void 0,[e,o]),me=(e,o,t)=>L("LocalRowIds",h(t),[],[e,o]),ke=(e,o,t)=>L("LinkedRowIds",h(t),[],[e,o]),ye=(e,o,t,s,d)=>M("RemoteRowId",h(d),t,s,[e,o]),he=(e,o,t,s,d)=>M("LocalRowIds",h(d),t,s,[e,o]),Te=(e,o,t,s,d)=>M("LinkedRowIds",h(d),t,s,[e,o]),qe=(e,o,t)=>B(e,o,t),ve=(e,o)=>L("ResultTable",T(o),{},[e]),xe=(e,o)=>L("ResultRowIds",T(o),[],[e]),Pe=(e,o,t,s=0,d,r)=>L("ResultSortedRowIds",T(r),[],[e,o,t,s,d],6),Se=(e,o,t)=>L("ResultRow",T(t),{},[e,o]),fe=(e,o,t)=>L("ResultCellIds",T(t),[],[e,o]),Be=(e,o,t,s)=>L("ResultCell",T(s),void 0,[e,o,t]),Le=(e,o,t,s)=>M("ResultTable",T(s),o,t,[e]),Me=(e,o,t,s)=>M("ResultRowIds",T(s),o,t,[e]),Ae=(e,o,t,s,d,r,n,l)=>M("ResultSortedRowIds",T(l),r,n,[e,o,t,s,d]),Ee=(e,o,t,s,d)=>M("ResultRow",T(d),t,s,[e,o]),Fe=(e,o,t,s,d)=>M("ResultCellIds",T(d),t,s,[e,o]),je=(e,o,t,s,d,r)=>M("ResultCell",T(r),s,d,[e,o,t]),ze=(e,o,t)=>B(e,o,t),De=e=>L("CheckpointIds",q(e),[[],void 0,[]]),Ge=(e,o)=>L("Checkpoint",q(o),void 0,[e]),He=(e=l,o=[],t,s=l,d=[])=>{const r=q(t);return v((o=>n(r,(t=>{const d=e(o);s(t.addCheckpoint(d),t,d)}))),[r,...o,...d])},Je=e=>F(e,"goBackward"),Ke=e=>F(e,"goForward"),Ne=(e,o=[],t,s=l,d=[])=>{const r=q(t);return v((o=>n(r,(t=>n(e(o),(e=>s(t.goTo(e),e)))))),[r,...o,...d])},Oe=e=>{const o=q(e),[t,s]=De(o);return[(d=t,!(0==(e=>e.length)(d))),Je(o),s,n(s,(e=>o?.getCheckpoint(e)))??""];var d},Qe=e=>{const o=q(e),[,,[t]]=De(o);return[!r(t),Ke(o),t,n(t,(e=>o?.getCheckpoint(e)))??""]},Ue=(e,o,t)=>M("CheckpointIds",q(t),e,o),Ve=(e,o,t,s)=>M("Checkpoint",q(s),o,t,[e]),We=(e,o,t=[],s,d=[])=>{const[,r]=f(),n=P((()=>o(e)),[e,...t]);return x((()=>((async()=>{await(s?.(n)),r(1)})(),()=>{n.destroy()})),[n,...d]),n},{createElement:Xe,useMemo:Ye}=e,Ze=({tableId:e,store:o,rowComponent:t=lo,getRowComponentProps:s,separator:r,debugIds:n},l)=>ro(d(l,(d=>Xe(t,{...to(s,d),key:d,tableId:e,rowId:d,store:o,debugIds:n}))),r,n,e),$e=({queryId:e,queries:o,resultRowComponent:t=Co,getResultRowComponentProps:s,separator:r,debugIds:n},l)=>ro(d(l,(d=>Xe(t,{...to(s,d),key:d,queryId:e,rowId:d,queries:o,debugIds:n}))),r,n,e),_e=e=>{const o=h(e);return[o,o?.getStore()]},eo=({relationshipId:e,relationships:o,rowComponent:t=lo,getRowComponentProps:s,separator:r,debugIds:n},l,I)=>{const[u,i]=_e(o),c=u?.getLocalTableId(e),a=l(e,I,u);return ro(d(a,(e=>Xe(t,{...to(s,e),key:e,tableId:c,rowId:e,store:i,debugIds:n}))),r,n,I)},oo=e=>({checkpoints:o,checkpointComponent:t=yo,getCheckpointComponentProps:s,separator:r,debugIds:n})=>{const l=q(o);return ro(d(e(De(l)),(e=>Xe(t,{...to(s,e),key:e,checkpoints:l,checkpointId:e,debugIds:n}))),r)},to=(e,o)=>r(e)?{}:e(o),so=({store:e,storesById:t,metrics:s,metricsById:d,indexes:r,indexesById:n,relationships:l,relationshipsById:I,queries:u,queriesById:c,checkpoints:a,checkpointsById:p,children:b})=>{const w=o(i);return Xe(i.Provider,{value:Ye((()=>[e??w[0],{...w[1],...t},s??w[2],{...w[3],...d},r??w[4],{...w[5],...n},l??w[6],{...w[7],...I},u??w[8],{...w[9],...c},a??w[10],{...w[11],...p}]),[e,t,s,d,r,n,l,I,u,c,a,p,w])},b)},ro=(e,o,t,s)=>{const n=r(o)||!Array.isArray(e)?e:d(e,((e,t)=>t>0?[o,e]:e));return t?[s,":{",n,"}"]:n},no=({tableId:e,rowId:o,cellId:t,store:s,debugIds:d})=>ro(""+(O(e,o,t,s)??""),void 0,d,t),lo=({tableId:e,rowId:o,store:t,cellComponent:s=no,getCellComponentProps:r,separator:n,debugIds:l})=>ro(d(N(e,o,t),(d=>Xe(s,{...to(r,d),key:d,tableId:e,rowId:o,cellId:d,store:t,debugIds:l}))),n,l,o),Io=e=>Ze(e,H(e.tableId,e.store)),uo=({cellId:e,descending:o,offset:t,limit:s,...d})=>Ze(d,J(d.tableId,e,o,t,s,d.store)),io=({store:e,tableComponent:o=Io,getTableComponentProps:t,separator:s,debugIds:r})=>ro(d(D(e),(s=>Xe(o,{...to(t,s),key:s,tableId:s,store:e,debugIds:r}))),s),co=({metricId:e,metrics:o,debugIds:t})=>ro(ie(e,o)??"",void 0,t,e),ao=({indexId:e,sliceId:o,indexes:t,rowComponent:s=lo,getRowComponentProps:r,separator:n,debugIds:l})=>{const I=y(t),u=I?.getStore(),i=I?.getTableId(e),c=be(e,o,I);return ro(d(c,(e=>Xe(s,{...to(r,e),key:e,tableId:i,rowId:e,store:u,debugIds:l}))),n,l,o)},po=({indexId:e,indexes:o,sliceComponent:t=ao,getSliceComponentProps:s,separator:r,debugIds:n})=>ro(d(pe(e,o),(d=>Xe(t,{...to(s,d),key:d,indexId:e,sliceId:d,indexes:o,debugIds:n}))),r,n,e),bo=({relationshipId:e,localRowId:o,relationships:t,rowComponent:s=lo,getRowComponentProps:d,debugIds:n})=>{const[l,I]=_e(t),u=l?.getRemoteTableId(e),i=Ce(e,o,l);return ro(r(u)||r(i)?null:Xe(s,{...to(d,i),key:i,tableId:u,rowId:i,store:I,debugIds:n}),void 0,n,o)},wo=e=>eo(e,me,e.remoteRowId),Ro=e=>eo(e,ke,e.firstRowId),go=({queryId:e,rowId:o,cellId:t,queries:s,debugIds:d})=>ro(""+(Be(e,o,t,s)??""),void 0,d,t),Co=({queryId:e,rowId:o,queries:t,resultCellComponent:s=go,getResultCellComponentProps:r,separator:n,debugIds:l})=>ro(d(fe(e,o,t),(d=>Xe(s,{...to(r,d),key:d,queryId:e,rowId:o,cellId:d,queries:t,debugIds:l}))),n,l,o),mo=e=>$e(e,xe(e.queryId,e.queries)),ko=({cellId:e,descending:o,offset:t,limit:s,...d})=>$e(d,Pe(d.queryId,e,o,t,s,d.queries)),yo=({checkpoints:e,checkpointId:o,debugIds:t})=>ro(Ge(o,e)??"",void 0,t,o),ho=oo((e=>e[0])),To=oo((e=>r(e[1])?[]:[e[1]])),qo=oo((e=>e[2]));export{ho as BackwardCheckpointsView,no as CellView,yo as CheckpointView,To as CurrentCheckpointView,qo as ForwardCheckpointsView,po as IndexView,Ro as LinkedRowsView,wo as LocalRowsView,co as MetricView,so as Provider,bo as RemoteRowView,go as ResultCellView,Co as ResultRowView,ko as ResultSortedTableView,mo as ResultTableView,lo as RowView,ao as SliceView,uo as SortedTableView,Io as TableView,io as TablesView,Ze as tableView,W as useAddRowCallback,O as useCell,N as useCellIds,le as useCellIdsListener,Ie as useCellListener,Ge as useCheckpoint,De as useCheckpointIds,Ue as useCheckpointIdsListener,Ve as useCheckpointListener,C as useCheckpoints,ze as useCreateCheckpoints,ae as useCreateIndexes,ue as useCreateMetrics,We as useCreatePersister,qe as useCreateQueries,ge as useCreateRelationships,j as useCreateStore,ee as useDelCellCallback,_ as useDelRowCallback,$ as useDelTableCallback,Z as useDelTablesCallback,Je as useGoBackwardCallback,Ke as useGoForwardCallback,Ne as useGoToCallback,w as useIndexes,ke as useLinkedRowIds,Te as useLinkedRowIdsListener,me as useLocalRowIds,he as useLocalRowIdsListener,ie as useMetric,ce as useMetricListener,b as useMetrics,g as useQueries,Qe as useRedoInformation,R as useRelationships,Ce as useRemoteRowId,ye as useRemoteRowIdListener,Be as useResultCell,fe as useResultCellIds,Fe as useResultCellIdsListener,je as useResultCellListener,Se as useResultRow,xe as useResultRowIds,Me as useResultRowIdsListener,Ee as useResultRowListener,Pe as useResultSortedRowIds,Ae as useResultSortedRowIdsListener,ve as useResultTable,Le as useResultTableListener,K as useRow,H as useRowIds,de as useRowIdsListener,ne as useRowListener,Y as useSetCellCallback,He as useSetCheckpointCallback,X as useSetPartialRowCallback,V as useSetRowCallback,U as useSetTableCallback,Q as useSetTablesCallback,pe as useSliceIds,we as useSliceIdsListener,be as useSliceRowIds,Re as useSliceRowIdsListener,J as useSortedRowIds,re as useSortedRowIdsListener,p as useStore,G as useTable,D as useTableIds,te as useTableIdsListener,se as useTableListener,z as useTables,oe as useTablesListener,Oe as useUndoInformation};
1
+ import e,{useContext as o}from"react";const t=e=>typeof e,s=t(""),d=(e,o)=>e.map(o),r=e=>null==e,n=(e,o,t)=>r(e)?t?.():o(e),l=()=>{},{createContext:I,useContext:u}=e,a=I([]),i=(e,o)=>{const t=u(a);return r(e)?t[o]:((e,o)=>n(e,(e=>e[o])))(t[o+1],e)},c=(e,o)=>{const d=i(e,o);return r(e)||(e=>t(e)==s)(e)?d:e},p=e=>i(e,0),b=e=>i(e,2),g=e=>i(e,4),w=e=>i(e,6),R=e=>i(e,8),C=e=>i(e,10),m=e=>c(e,0),k=e=>c(e,2),y=e=>c(e,4),h=e=>c(e,6),v=e=>c(e,8),T=e=>c(e,10),{useCallback:q,useEffect:P,useMemo:x,useRef:S,useState:V}=e,f=(e,o,t=[])=>{const s=x((()=>o(e)),[e,...t]);return P((()=>()=>s.destroy()),[s]),s},B=(e,o,t,s=[],d)=>{const[,n]=V(),l=q((()=>o?.["get"+e]?.(...s)??t),[o,...s]),[I]=V(l),u=S(I);return x((()=>u.current=l()),[l]),L(e,o,((...e)=>{u.current=r(d)?l():e[d],n([])}),[],s),u.current},L=(e,o,t,s=[],d=[],...r)=>P((()=>{const s=o?.["add"+e+"Listener"]?.(...d,t,...r);return()=>o?.delListener(s)}),[o,...d,...s,...r]),M=(e,o,t,s=[],d=l,r=[],...I)=>{const u=m(e);return q((e=>n(u,(s=>n(t(e,s),(e=>d(s["set"+o](...I,e),e)))))),[u,o,...s,...r,...I])},A=(e,o,t=l,s=[],...d)=>{const r=m(e);return q((()=>t(r?.["del"+o](...d))),[r,o,...s,...d])},E=(e,o,t)=>{const s=T(e);return q((()=>s?.[o](t)),[s,o,t])},F=(e,o=[])=>x(e,o),j=e=>B("Tables",m(e),{}),z=e=>B("TableIds",m(e),[],[]),D=(e,o)=>B("Table",m(o),{},[e]),G=(e,o)=>B("RowIds",m(o),[],[e]),H=(e,o,t,s=0,d,r)=>B("SortedRowIds",m(r),[],[e,o,t,s,d],6),J=(e,o,t)=>B("Row",m(t),{},[e,o]),K=(e,o,t)=>B("CellIds",m(t),[],[e,o]),N=(e,o,t,s)=>B("Cell",m(s),void 0,[e,o,t],4),O=e=>B("Values",m(e),{}),Q=e=>B("ValueIds",m(e),[],[]),U=(e,o)=>B("Value",m(o),void 0,[e]),W=(e,o,t,s,d)=>M(t,"Tables",e,o,s,d),X=(e,o,t,s,d,r)=>M(s,"Table",o,t,d,r,e),Y=(e,o,t,s,d,r,n)=>M(d,"Row",t,s,r,n,e,o),Z=(e,o,t=[],s,d=l,r=[])=>{const I=m(s);return q((t=>n(I,(s=>n(o(t,s),(o=>d(s.addRow(e,o),s,o)))))),[I,e,...t,...r])},$=(e,o,t,s,d,r,n)=>M(d,"PartialRow",t,s,r,n,e,o),_=(e,o,t,s,d,r,n,l)=>M(r,"Cell",s,d,n,l,e,o,t),ee=(e,o,t,s,d)=>M(t,"Values",e,o,s,d),oe=(e,o,t,s,d)=>M(t,"PartialValues",e,o,s,d),te=(e,o,t,s,d,r)=>M(s,"Value",o,t,d,r,e),se=(e,o,t)=>A(e,"Tables",o,t),de=(e,o,t,s)=>A(o,"Table",t,s,e),re=(e,o,t,s,d)=>A(t,"Row",s,d,e,o),ne=(e,o,t,s,d,r,n)=>A(d,"Cell",r,n,e,o,t,s),le=(e,o,t)=>A(e,"Values",o,t),Ie=(e,o,t,s)=>A(o,"Value",t,s,e),ue=(e,o,t,s)=>L("Tables",m(s),e,o,[],t),ae=(e,o,t,s)=>L("TableIds",m(s),e,o,[],t),ie=(e,o,t,s,d)=>L("Table",m(d),o,t,[e],s),ce=(e,o,t,s,d)=>L("RowIds",m(d),o,t,[e],s),pe=(e,o,t,s,d,r,n,l,I)=>L("SortedRowIds",m(I),r,n,[e,o,t,s,d],l),be=(e,o,t,s,d,r)=>L("Row",m(r),t,s,[e,o],d),ge=(e,o,t,s,d,r)=>L("CellIds",m(r),t,s,[e,o],d),we=(e,o,t,s,d,r,n)=>L("Cell",m(n),s,d,[e,o,t],r),Re=(e,o,t,s)=>L("Values",m(s),e,o,[],t),Ce=(e,o,t,s)=>L("ValueIds",m(s),e,o,[],t),me=(e,o,t,s,d)=>L("Value",m(d),o,t,[e],s),ke=(e,o,t)=>f(e,o,t),ye=(e,o)=>B("Metric",k(o),void 0,[e]),he=(e,o,t,s)=>L("Metric",k(s),o,t,[e]),ve=(e,o,t)=>f(e,o,t),Te=(e,o)=>B("SliceIds",y(o),[],[e]),qe=(e,o,t)=>B("SliceRowIds",y(t),[],[e,o]),Pe=(e,o,t,s)=>L("SliceIds",y(s),o,t,[e]),xe=(e,o,t,s,d)=>L("SliceRowIds",y(d),t,s,[e,o]),Se=(e,o,t)=>f(e,o,t),Ve=(e,o,t)=>B("RemoteRowId",h(t),void 0,[e,o]),fe=(e,o,t)=>B("LocalRowIds",h(t),[],[e,o]),Be=(e,o,t)=>B("LinkedRowIds",h(t),[],[e,o]),Le=(e,o,t,s,d)=>L("RemoteRowId",h(d),t,s,[e,o]),Me=(e,o,t,s,d)=>L("LocalRowIds",h(d),t,s,[e,o]),Ae=(e,o,t,s,d)=>L("LinkedRowIds",h(d),t,s,[e,o]),Ee=(e,o,t)=>f(e,o,t),Fe=(e,o)=>B("ResultTable",v(o),{},[e]),je=(e,o)=>B("ResultRowIds",v(o),[],[e]),ze=(e,o,t,s=0,d,r)=>B("ResultSortedRowIds",v(r),[],[e,o,t,s,d],6),De=(e,o,t)=>B("ResultRow",v(t),{},[e,o]),Ge=(e,o,t)=>B("ResultCellIds",v(t),[],[e,o]),He=(e,o,t,s)=>B("ResultCell",v(s),void 0,[e,o,t]),Je=(e,o,t,s)=>L("ResultTable",v(s),o,t,[e]),Ke=(e,o,t,s)=>L("ResultRowIds",v(s),o,t,[e]),Ne=(e,o,t,s,d,r,n,l)=>L("ResultSortedRowIds",v(l),r,n,[e,o,t,s,d]),Oe=(e,o,t,s,d)=>L("ResultRow",v(d),t,s,[e,o]),Qe=(e,o,t,s,d)=>L("ResultCellIds",v(d),t,s,[e,o]),Ue=(e,o,t,s,d,r)=>L("ResultCell",v(r),s,d,[e,o,t]),We=(e,o,t)=>f(e,o,t),Xe=e=>B("CheckpointIds",T(e),[[],void 0,[]]),Ye=(e,o)=>B("Checkpoint",T(o),void 0,[e]),Ze=(e=l,o=[],t,s=l,d=[])=>{const r=T(t);return q((o=>n(r,(t=>{const d=e(o);s(t.addCheckpoint(d),t,d)}))),[r,...o,...d])},$e=e=>E(e,"goBackward"),_e=e=>E(e,"goForward"),eo=(e,o=[],t,s=l,d=[])=>{const r=T(t);return q((o=>n(r,(t=>n(e(o),(e=>s(t.goTo(e),e)))))),[r,...o,...d])},oo=e=>{const o=T(e),[t,s]=Xe(o);return[(d=t,!(0==(e=>e.length)(d))),$e(o),s,n(s,(e=>o?.getCheckpoint(e)))??""];var d},to=e=>{const o=T(e),[,,[t]]=Xe(o);return[!r(t),_e(o),t,n(t,(e=>o?.getCheckpoint(e)))??""]},so=(e,o,t)=>L("CheckpointIds",T(t),e,o),ro=(e,o,t,s)=>L("Checkpoint",T(s),o,t,[e]),no=(e,o,t=[],s,d=[])=>{const[,r]=V(),n=x((()=>o(e)),[e,...t]);return P((()=>((async()=>{await(s?.(n)),r(1)})(),()=>{n.destroy()})),[n,...d]),n},{createElement:lo,useMemo:Io}=e,uo=({tableId:e,store:o,rowComponent:t=Co,getRowComponentProps:s,separator:r,debugIds:n},l)=>wo(d(l,(d=>lo(t,{...bo(s,d),key:d,tableId:e,rowId:d,store:o,debugIds:n}))),r,n,e),ao=({queryId:e,queries:o,resultRowComponent:t=Bo,getResultRowComponentProps:s,separator:r,debugIds:n},l)=>wo(d(l,(d=>lo(t,{...bo(s,d),key:d,queryId:e,rowId:d,queries:o,debugIds:n}))),r,n,e),io=e=>{const o=h(e);return[o,o?.getStore()]},co=({relationshipId:e,relationships:o,rowComponent:t=Co,getRowComponentProps:s,separator:r,debugIds:n},l,I)=>{const[u,a]=io(o),i=u?.getLocalTableId(e),c=l(e,I,u);return wo(d(c,(e=>lo(t,{...bo(s,e),key:e,tableId:i,rowId:e,store:a,debugIds:n}))),r,n,I)},po=e=>({checkpoints:o,checkpointComponent:t=Ao,getCheckpointComponentProps:s,separator:r,debugIds:n})=>{const l=T(o);return wo(d(e(Xe(l)),(e=>lo(t,{...bo(s,e),key:e,checkpoints:l,checkpointId:e,debugIds:n}))),r)},bo=(e,o)=>r(e)?{}:e(o),go=({store:e,storesById:t,metrics:s,metricsById:d,indexes:r,indexesById:n,relationships:l,relationshipsById:I,queries:u,queriesById:i,checkpoints:c,checkpointsById:p,children:b})=>{const g=o(a);return lo(a.Provider,{value:Io((()=>[e??g[0],{...g[1],...t},s??g[2],{...g[3],...d},r??g[4],{...g[5],...n},l??g[6],{...g[7],...I},u??g[8],{...g[9],...i},c??g[10],{...g[11],...p}]),[e,t,s,d,r,n,l,I,u,i,c,p,g])},b)},wo=(e,o,t,s)=>{const n=r(o)||!Array.isArray(e)?e:d(e,((e,t)=>t>0?[o,e]:e));return t?[s,":{",n,"}"]:n},Ro=({tableId:e,rowId:o,cellId:t,store:s,debugIds:d})=>wo(""+(N(e,o,t,s)??""),void 0,d,t),Co=({tableId:e,rowId:o,store:t,cellComponent:s=Ro,getCellComponentProps:r,separator:n,debugIds:l})=>wo(d(K(e,o,t),(d=>lo(s,{...bo(r,d),key:d,tableId:e,rowId:o,cellId:d,store:t,debugIds:l}))),n,l,o),mo=e=>uo(e,G(e.tableId,e.store)),ko=({cellId:e,descending:o,offset:t,limit:s,...d})=>uo(d,H(d.tableId,e,o,t,s,d.store)),yo=({store:e,tableComponent:o=mo,getTableComponentProps:t,separator:s,debugIds:r})=>wo(d(z(e),(s=>lo(o,{...bo(t,s),key:s,tableId:s,store:e,debugIds:r}))),s),ho=({valueId:e,store:o,debugIds:t})=>wo(""+(U(e,o)??""),void 0,t,e),vo=({store:e,valueComponent:o=ho,getValueComponentProps:t,separator:s,debugIds:r})=>wo(d(Q(e),(s=>lo(o,{...bo(t,s),key:s,valueId:s,store:e,debugIds:r}))),s),To=({metricId:e,metrics:o,debugIds:t})=>wo(ye(e,o)??"",void 0,t,e),qo=({indexId:e,sliceId:o,indexes:t,rowComponent:s=Co,getRowComponentProps:r,separator:n,debugIds:l})=>{const I=y(t),u=I?.getStore(),a=I?.getTableId(e),i=qe(e,o,I);return wo(d(i,(e=>lo(s,{...bo(r,e),key:e,tableId:a,rowId:e,store:u,debugIds:l}))),n,l,o)},Po=({indexId:e,indexes:o,sliceComponent:t=qo,getSliceComponentProps:s,separator:r,debugIds:n})=>wo(d(Te(e,o),(d=>lo(t,{...bo(s,d),key:d,indexId:e,sliceId:d,indexes:o,debugIds:n}))),r,n,e),xo=({relationshipId:e,localRowId:o,relationships:t,rowComponent:s=Co,getRowComponentProps:d,debugIds:n})=>{const[l,I]=io(t),u=l?.getRemoteTableId(e),a=Ve(e,o,l);return wo(r(u)||r(a)?null:lo(s,{...bo(d,a),key:a,tableId:u,rowId:a,store:I,debugIds:n}),void 0,n,o)},So=e=>co(e,fe,e.remoteRowId),Vo=e=>co(e,Be,e.firstRowId),fo=({queryId:e,rowId:o,cellId:t,queries:s,debugIds:d})=>wo(""+(He(e,o,t,s)??""),void 0,d,t),Bo=({queryId:e,rowId:o,queries:t,resultCellComponent:s=fo,getResultCellComponentProps:r,separator:n,debugIds:l})=>wo(d(Ge(e,o,t),(d=>lo(s,{...bo(r,d),key:d,queryId:e,rowId:o,cellId:d,queries:t,debugIds:l}))),n,l,o),Lo=e=>ao(e,je(e.queryId,e.queries)),Mo=({cellId:e,descending:o,offset:t,limit:s,...d})=>ao(d,ze(d.queryId,e,o,t,s,d.queries)),Ao=({checkpoints:e,checkpointId:o,debugIds:t})=>wo(Ye(o,e)??"",void 0,t,o),Eo=po((e=>e[0])),Fo=po((e=>r(e[1])?[]:[e[1]])),jo=po((e=>e[2]));export{Eo as BackwardCheckpointsView,Ro as CellView,Ao as CheckpointView,Fo as CurrentCheckpointView,jo as ForwardCheckpointsView,Po as IndexView,Vo as LinkedRowsView,So as LocalRowsView,To as MetricView,go as Provider,xo as RemoteRowView,fo as ResultCellView,Bo as ResultRowView,Mo as ResultSortedTableView,Lo as ResultTableView,Co as RowView,qo as SliceView,ko as SortedTableView,mo as TableView,yo as TablesView,ho as ValueView,vo as ValuesView,uo as tableView,Z as useAddRowCallback,N as useCell,K as useCellIds,ge as useCellIdsListener,we as useCellListener,Ye as useCheckpoint,Xe as useCheckpointIds,so as useCheckpointIdsListener,ro as useCheckpointListener,C as useCheckpoints,We as useCreateCheckpoints,ve as useCreateIndexes,ke as useCreateMetrics,no as useCreatePersister,Ee as useCreateQueries,Se as useCreateRelationships,F as useCreateStore,ne as useDelCellCallback,re as useDelRowCallback,de as useDelTableCallback,se as useDelTablesCallback,Ie as useDelValueCallback,le as useDelValuesCallback,$e as useGoBackwardCallback,_e as useGoForwardCallback,eo as useGoToCallback,g as useIndexes,Be as useLinkedRowIds,Ae as useLinkedRowIdsListener,fe as useLocalRowIds,Me as useLocalRowIdsListener,ye as useMetric,he as useMetricListener,b as useMetrics,R as useQueries,to as useRedoInformation,w as useRelationships,Ve as useRemoteRowId,Le as useRemoteRowIdListener,He as useResultCell,Ge as useResultCellIds,Qe as useResultCellIdsListener,Ue as useResultCellListener,De as useResultRow,je as useResultRowIds,Ke as useResultRowIdsListener,Oe as useResultRowListener,ze as useResultSortedRowIds,Ne as useResultSortedRowIdsListener,Fe as useResultTable,Je as useResultTableListener,J as useRow,G as useRowIds,ce as useRowIdsListener,be as useRowListener,_ as useSetCellCallback,Ze as useSetCheckpointCallback,$ as useSetPartialRowCallback,oe as useSetPartialValuesCallback,Y as useSetRowCallback,X as useSetTableCallback,W as useSetTablesCallback,te as useSetValueCallback,ee as useSetValuesCallback,Te as useSliceIds,Pe as useSliceIdsListener,qe as useSliceRowIds,xe as useSliceRowIdsListener,H as useSortedRowIds,pe as useSortedRowIdsListener,p as useStore,D as useTable,z as useTableIds,ae as useTableIdsListener,ie as useTableListener,j as useTables,ue as useTablesListener,oo as useUndoInformation,U as useValue,Q as useValueIds,Ce as useValueIdsListener,me as useValueListener,O as useValues,Re as useValuesListener};
Binary file
@@ -115,6 +115,8 @@ export type CheckpointsListenerStats = {
115
115
  * method), and add listeners for when the list checkpoints changes (with the
116
116
  * addCheckpointIdsListener method).
117
117
  *
118
+ * Checkpoints work for both changes to tabular data and to keyed value data.
119
+ *
118
120
  * Every checkpoint can be given a label which can be used to describe the
119
121
  * actions that changed the Store before this checkpoint. This can be useful for
120
122
  * interfaces that let users 'Undo [last action]'.
@@ -127,7 +129,9 @@ export type CheckpointsListenerStats = {
127
129
  * registering and removing a listener for them.
128
130
  *
129
131
  * ```js
130
- * const store = createStore().setTables({pets: {fido: {sold: false}}});
132
+ * const store = createStore()
133
+ * .setTables({pets: {fido: {sold: false}}})
134
+ * .setValue('open', true);
131
135
  *
132
136
  * const checkpoints = createCheckpoints(store);
133
137
  * checkpoints.setSize(200);
@@ -145,14 +149,25 @@ export type CheckpointsListenerStats = {
145
149
  * console.log(checkpoints.getCheckpointIds());
146
150
  * // -> [[], '0', ['1']]
147
151
  *
152
+ * store.setValue('open', false);
153
+ * checkpoints.addCheckpoint('closed');
154
+ * console.log(checkpoints.getCheckpointIds());
155
+ * // -> [['0'], '2', []]
156
+ *
157
+ * checkpoints.goBackward();
158
+ * console.log(store.getValue('open'));
159
+ * // -> true
160
+ * console.log(checkpoints.getCheckpointIds());
161
+ * // -> [[], '0', ['2']]
162
+ *
148
163
  * const listenerId = checkpoints.addCheckpointIdsListener(() => {
149
164
  * console.log(checkpoints.getCheckpointIds());
150
165
  * });
151
166
  * store.setCell('pets', 'fido', 'species', 'dog');
152
167
  * // -> [['0'], undefined, []]
153
168
  * checkpoints.addCheckpoint();
154
- * // -> [['0'], '2', []]
155
- * // Previous redo of checkpoint '1' is now not possible.
169
+ * // -> [['0'], '3', []]
170
+ * // Previous redo of checkpoints '1' and '2' are now not possible.
156
171
  *
157
172
  * checkpoints.delListener(listenerId);
158
173
  * checkpoints.destroy();
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),o=e=>e.length,r=e=>0==o(e),s=(e,...t)=>e.push(...t),i=e=>e.pop(),c=e=>e.shift(),l=e=>null==e,d=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),f=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(p(e,t),e):e?.set(t,n),k=(e,t,n)=>(a(e,t)||g(e,t,n()),C(e,t)),y=(e,t,n,r,s=0)=>d((n?k:C)(e,t[s],s>o(t)-2?n:f),(i=>{if(s>o(t)-2)return r?.(i)&&g(e,t[s]),i;const c=y(i,t,n,r,s+1);return u(i)&&g(e,t[s]),c})),v=e=>new Set(Array.isArray(e)||l(e)?e:[e]),L=/^\d+$/,w=Object.freeze,b=(e=>{const b=new WeakMap;return e=>(b.has(e)||b.set(e,(e=>{let b,S,T,x=100,z=f(),E=1;const j=f(),m=f(),[A,B,I]=(e=>{let t;const[r,i]=(()=>{const e=[];let t=0;return[()=>c(e)??""+t++,t=>{L.test(t)&&o(e)<1e3&&s(e,t)}]})(),a=f();return[(e,n,o)=>{t??=V;const s=r();var i;return g(a,s,[e,n,o]),i=s,y(n,o??[""],v)?.add(i),s},(e,r,...i)=>n(((e,t=[""])=>{const r=[],i=(e,c)=>c==o(t)?s(r,e):null===t[c]?h(e,(e=>i(e,c+1))):n([t[c],null],(t=>i(C(e,t),c+1)));return i(e,0),r})(e,r),(e=>h(e,(e=>C(a,e)[0](t,...r??[],...i))))),e=>d(C(a,e),(([,t,n])=>(y(t,n??[""],void 0,(t=>(p(t,e),u(t)?1:0))),g(a,e),i(e),n))),(e,r,s)=>d(C(a,e),(([e,,i=[]])=>{const c=(...d)=>{const a=o(d);a==o(i)?e(t,...d,...s(d)):l(i[a])?n(r[a](...d),(e=>c(...d,e))):c(...d,i[a])};c()}))]})(),M=f(),F=f(),O=[],W=[],$=(t,n)=>{E=0,e.transaction((()=>h(C(M,n),((n,o)=>h(n,((n,r)=>h(n,((n,s)=>((e,t,n,o,r)=>l(r)?e.delCell(t,n,o,!0):e.setCell(t,n,o,r))(e,o,r,s,n[t]))))))))),E=1},q=e=>{g(M,e),g(F,e),B(m,[e])},D=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),q),G=()=>D(O,o(O)-x),H=e.addCellListener(null,null,null,((e,t,n,o,r,c)=>{if(E){d(b,(()=>{s(O,b),G(),D(W),b=void 0,T=1}));const e=k(z,t,f),l=k(e,n,f),a=k(l,o,(()=>[c,void 0]));a[1]=r,a[0]===r&&u(g(l,o))&&u(g(e,n))&&u(g(z,t))&&(b=i(O),T=1),P()}})),J=(e="")=>(l(b)&&(b=""+S++,g(M,b,z),R(b,e),z=f(),T=1),b),K=()=>{r(O)||(((e,...t)=>{e.unshift(...t)})(W,J()),$(0,b),b=i(O),T=1)},N=()=>{r(W)||(s(O,b),b=c(W),$(1,b),T=1)},P=()=>{T&&(B(j),T=0)},Q=e=>{const t=J(e);return P(),t},R=(e,t)=>(U(e)&&C(F,e)!==t&&(g(F,e,t),B(m,[e])),V),U=e=>a(M,e),V={setSize:e=>(x=e,G(),V),addCheckpoint:Q,setCheckpoint:R,getStore:()=>e,getCheckpointIds:()=>[[...O],b,[...W]],forEachCheckpoint:e=>{return t=e,h(F,((e,n)=>t(n,e)));var t},hasCheckpoint:U,getCheckpoint:e=>C(F,e),goBackward:()=>(K(),P(),V),goForward:()=>(N(),P(),V),goTo:e=>{const n=t(O,e)?K:t(W,e)?N:null;for(;!l(n)&&e!=b;)n();return P(),V},addCheckpointIdsListener:e=>A(e,j),addCheckpointListener:(e,t)=>A(t,m,[e]),delListener:e=>(I(e),V),clear:()=>(D(O),D(W),l(b)||q(b),b=void 0,S=0,Q(),V),destroy:()=>{e.delListener(H)},getListenerStats:()=>({})};return w(V.clear())})(e)),b.get(e))})();e.createCheckpoints=b},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),s=e=>e.length,o=e=>0==s(e),r=(e,...t)=>e.push(...t),i=e=>e.pop(),l=e=>e.shift(),c=e=>null==e,d=(e,t,n)=>c(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>c(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),f=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>c(n)?(p(e,t),e):e?.set(t,n),k=(e,t,n)=>(a(e,t)||g(e,t,n()),C(e,t)),v=(e,t,n,o,r=0)=>d((n?k:C)(e,t[r],r>s(t)-2?n:f),(i=>{if(r>s(t)-2)return o?.(i)&&g(e,t[r]),i;const l=v(i,t,n,o,r+1);return u(i)&&g(e,t[r]),l})),y=e=>new Set(Array.isArray(e)||c(e)?e:[e]),L=/^\d+$/,w=Object.freeze,b=(e=>{const b=new WeakMap;return e=>(b.has(e)||b.set(e,(e=>{let b,S,T,x=100,z=f(),E=f(),V=1;const j=f(),m=f(),[A,B,I]=(e=>{let t;const[o,i]=(()=>{const e=[];let t=0;return[()=>l(e)??""+t++,t=>{L.test(t)&&s(e)<1e3&&r(e,t)}]})(),a=f();return[(e,n,s,r=[],i=(()=>[]))=>{t??=_;const l=o();var c;return g(a,l,[e,n,s,r,i]),c=l,v(n,s??[""],y)?.add(c),l},(e,o,...i)=>n(((e,t=[""])=>{const o=[],i=(e,l)=>l==s(t)?r(o,e):null===t[l]?h(e,(e=>i(e,l+1))):n([t[l],null],(t=>i(C(e,t),l+1)));return i(e,0),o})(e,o),(e=>h(e,(e=>C(a,e)[0](t,...o??[],...i))))),e=>d(C(a,e),(([,t,n])=>(v(t,n??[""],void 0,(t=>(p(t,e),u(t)?1:0))),g(a,e),i(e),n))),e=>d(C(a,e),(([e,,o=[],r,i])=>{const l=(...d)=>{const a=s(d);a==s(o)?e(t,...d,...i(d)):c(o[a])?n(r[a]?.(...d)??[],(e=>l(...d,e))):l(...d,o[a])};l()}))]})(),M=f(),F=f(),O=[],W=[],$=(t,n)=>{V=0,e.transaction((()=>{const[s,o]=C(M,n);h(s,((n,s)=>h(n,((n,o)=>h(n,((n,r)=>((e,t,n,s,o)=>c(o)?e.delCell(t,n,s,!0):e.setCell(t,n,s,o))(e,s,o,r,n[t]))))))),h(o,((n,s)=>((e,t,n)=>c(n)?e.delValue(t):e.setValue(t,n))(e,s,n[t])))})),V=1},q=e=>{g(M,e),g(F,e),B(m,[e])},D=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??s(e)),q),G=()=>D(O,s(O)-x),H=()=>d(b,(()=>{r(O,b),G(),D(W),b=void 0,T=1})),J=()=>{b=i(O),T=1},K=e.addCellListener(null,null,null,((e,t,n,s,o,r)=>{if(V){H();const e=k(z,t,f),i=k(e,n,f),l=k(i,s,(()=>[r,void 0]));l[1]=o,l[0]===o&&u(g(i,s))&&u(g(e,n))&&u(g(z,t))&&J(),U()}})),N=e.addValueListener(null,((e,t,n,s)=>{if(V){H();const e=k(E,t,(()=>[s,void 0]));e[1]=n,e[0]===n&&u(g(E,t))&&J(),U()}})),P=(e="")=>(c(b)&&(b=""+S++,g(M,b,[z,E]),Y(b,e),z=f(),E=f(),T=1),b),Q=()=>{o(O)||(((e,...t)=>{e.unshift(...t)})(W,P()),$(0,b),b=i(O),T=1)},R=()=>{o(W)||(r(O,b),b=l(W),$(1,b),T=1)},U=()=>{T&&(B(j),T=0)},X=e=>{const t=P(e);return U(),t},Y=(e,t)=>(Z(e)&&C(F,e)!==t&&(g(F,e,t),B(m,[e])),_),Z=e=>a(M,e),_={setSize:e=>(x=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>e,getCheckpointIds:()=>[[...O],b,[...W]],forEachCheckpoint:e=>{return t=e,h(F,((e,n)=>t(n,e)));var t},hasCheckpoint:Z,getCheckpoint:e=>C(F,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:e=>{const n=t(O,e)?Q:t(W,e)?R:null;for(;!c(n)&&e!=b;)n();return U(),_},addCheckpointIdsListener:e=>A(e,j),addCheckpointListener:(e,t)=>A(t,m,[e]),delListener:e=>(I(e),_),clear:()=>(D(O),D(W),c(b)||q(b),b=void 0,S=0,X(),_),destroy:()=>{e.delListener(K),e.delListener(N)},getListenerStats:()=>({})};return w(_.clear())})(e)),b.get(e))})();e.createCheckpoints=b},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=e=>n+e,o=(e,t)=>e.every(t),d=(e,t)=>o(e,((n,s)=>0==s||t(e[s-1],n)<=0)),i=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),l=e=>e.length,a=(e,...t)=>e.push(...t),f=e=>null==e,u=(e,t,n)=>f(e)?n?.():t(e),h=e=>Array.isArray(e),I=(e,t)=>e?.has(t)??!1,g=e=>f(e)||0==(e=>e.size)(e),p=e=>[...e?.values()??[]],y=e=>e.clear(),x=(e,t)=>e?.forEach(t),v=(e,t)=>e?.delete(t),S=e=>new Map(e),w=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),b=(e,t)=>x(e,((e,n)=>t(n,e))),T=(e,t,n)=>f(n)?(v(e,t),e):e?.set(t,n),E=(e,t,n)=>(I(e,t)||T(e,t,n()),L(e,t)),R=(e,t,n,s,r=0)=>u((n?E:L)(e,t[r],r>l(t)-2?n:S),(o=>{if(r>l(t)-2)return s?.(o)&&T(e,t[r]),o;const d=R(o,t,n,s,r+1);return g(o)&&T(e,t[r]),d})),m=e=>new Set(h(e)||f(e)?e:[e]),j=(e,t)=>e?.add(t),k=(e,r)=>t(e)==s?t=>t(e):e??(()=>r??n),z=(e,t)=>e<t?-1:1,A=/^\d+$/,C=Object.freeze,D=(e=>{const t=new WeakMap;return e=>(t.has(e)||t.set(e,(e=>{const t=S(),s=S(),[D,M,B,O,W,$,q,,F,G,H]=((e,t,n)=>{const s=e.hasRow,r=S(),d=S(),i=S(),a=S(),R=S(),k=(t,n,...s)=>{const r=E(R,t,m);return c(s,(t=>j(r,t)&&n&&e.callListener(t))),s},z=(t,...n)=>u(L(R,t),(s=>{c(0==l(n)?p(s):n,(t=>{e.delListener(t),v(s,t)})),g(s)&&T(R,t)})),A=(e,n)=>{T(r,e,n),I(d,e)||(T(d,e,t()),T(i,e,S()),T(a,e,S()))},C=e=>{T(r,e),T(d,e),T(i,e),T(a,e),z(e)};return[()=>e,()=>w(r),e=>b(d,e),e=>I(d,e),e=>L(r,e),e=>L(d,e),(e,t)=>T(d,e,t),A,(t,r,d,u,g)=>{A(t,r);const p=S(),v=S(),w=L(i,t),E=L(a,t),R=t=>{const d=n=>e.getCell(r,t,n),i=L(w,t),c=s(r,t)?n(u(d,t)):void 0;var a,I;if(i===c||h(i)&&h(c)&&(I=c,l(a=i)===l(I)&&o(a,((e,t)=>I[t]===e)))||T(p,t,[i,c]),!f(g)){const e=L(E,t),n=s(r,t)?g(d,t):void 0;e!=n&&T(v,t,n)}},m=e=>{d((()=>{x(p,(([,e],t)=>T(w,t,e))),x(v,((e,t)=>T(E,t,e)))}),p,v,w,E,e),y(p),y(v)};b(w,R),e.hasTable(r)&&c(e.getRowIds(r),(e=>{I(w,e)||R(e)})),m(!0),z(t),k(t,0,e.addRowListener(r,null,((e,t,n)=>R(n))),e.addTableListener(r,(()=>m())))},C,()=>b(R,C),k,z]})(e,S,(e=>{return f(e)?n:h(e)?(t=r,e.map(t)):r(e);var t})),[J,K,N]=(e=>{let t;const[s,r]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{A.test(t)&&l(e)<1e3&&a(e,t)}]})(),o=S();return[(e,r,d)=>{t??=Q;const i=s();return T(o,i,[e,r,d]),j(R(r,d??[n],m),i),i},(e,s,...r)=>c(((e,t=[n])=>{const s=[],r=(e,n)=>n==l(t)?a(s,e):null===t[n]?x(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(L(e,t),n+1)));return r(e,0),s})(e,s),(e=>x(e,(e=>L(o,e)[0](t,...s??[],...r))))),e=>u(L(o,e),(([,t,s])=>(R(t,s??[n],void 0,(t=>(v(t,e),g(t)?1:0))),T(o,e),r(e),s))),(e,n,s)=>u(L(o,e),(([e,,r=[]])=>{const o=(...d)=>{const i=l(d);i==l(r)?e(t,...d,...s(d)):f(r[i])?c(n[i](...d),(e=>o(...d,e))):o(...d,r[i])};o()}))]})(),P=(t,n,s)=>{const r=W(t);x(s,((t,s)=>n(s,(n=>x(t,(t=>n(t,(n=>e.forEachCell(r,t,n)))))))))},Q={setIndexDefinition:(e,n,r,o,c,l=z)=>{const a=f(c)?void 0:([e],[t])=>c(e,t);return F(e,n,((n,r,c,h,p,y)=>{let w=0;const E=m(),R=m(),k=$(e);if(x(r,(([e,t],n)=>{const s=m(e),r=m(t);x(s,(e=>v(r,e)?v(s,e):0)),x(s,(e=>{j(E,e),u(L(k,e),(t=>{v(t,n),g(t)&&(T(k,e),w=1)}))})),x(r,(e=>{j(E,e),I(k,e)||(T(k,e,m()),w=1),j(L(k,e),n),f(o)||j(R,e)}))})),n(),g(p)||(y?b(k,(e=>j(R,e))):b(c,(e=>u(L(h,e),(e=>j(R,e))))),x(R,(e=>{const t=(t,n)=>l(L(p,t),L(p,n),e),n=[...L(k,e)];d(n,t)||(T(k,e,m(i(n,t))),j(E,e))}))),(w||y)&&!f(a)){const t=[...k];d(t,a)||(q(e,S(i(t,a))),w=1)}w&&K(t,[e]),x(E,(t=>K(s,[e,t])))}),k(r),u(o,k)),Q},delIndexDefinition:e=>(G(e),Q),getStore:D,getIndexIds:M,forEachIndex:e=>B(((t,n)=>e(t,(e=>P(t,e,n))))),forEachSlice:(e,t)=>P(e,t,$(e)),hasIndex:O,hasSlice:(e,t)=>I($(e),t),getTableId:W,getSliceIds:e=>w($(e)),getSliceRowIds:(e,t)=>p(L($(e),t)),addSliceIdsListener:(e,n)=>J(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>J(n,s,[e,t]),delListener:e=>(N(e),Q),destroy:H,getListenerStats:()=>({})};return C(Q)})(e)),t.get(e))})();e.createIndexes=D},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=e=>n+e,o=(e,t)=>e.every(t),d=(e,t)=>o(e,((n,s)=>0==s||t(e[s-1],n)<=0)),i=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),l=e=>e.length,a=(e,...t)=>e.push(...t),f=e=>null==e,u=(e,t,n)=>f(e)?n?.():t(e),h=e=>Array.isArray(e),I=(e,t)=>e?.has(t)??!1,g=e=>f(e)||0==(e=>e.size)(e),p=e=>[...e?.values()??[]],y=e=>e.clear(),x=(e,t)=>e?.forEach(t),v=(e,t)=>e?.delete(t),S=e=>new Map(e),w=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),b=(e,t)=>x(e,((e,n)=>t(n,e))),T=(e,t,n)=>f(n)?(v(e,t),e):e?.set(t,n),E=(e,t,n)=>(I(e,t)||T(e,t,n()),L(e,t)),R=(e,t,n,s,r=0)=>u((n?E:L)(e,t[r],r>l(t)-2?n:S),(o=>{if(r>l(t)-2)return s?.(o)&&T(e,t[r]),o;const d=R(o,t,n,s,r+1);return g(o)&&T(e,t[r]),d})),m=e=>new Set(h(e)||f(e)?e:[e]),j=(e,t)=>e?.add(t),k=(e,r)=>t(e)==s?t=>t(e):e??(()=>r??n),z=(e,t)=>e<t?-1:1,A=/^\d+$/,C=Object.freeze,D=(e=>{const t=new WeakMap;return e=>(t.has(e)||t.set(e,(e=>{const t=S(),s=S(),[D,M,B,O,W,$,q,,F,G,H]=((e,t,n)=>{const s=e.hasRow,r=S(),d=S(),i=S(),a=S(),R=S(),k=(t,n,...s)=>{const r=E(R,t,m);return c(s,(t=>j(r,t)&&n&&e.callListener(t))),s},z=(t,...n)=>u(L(R,t),(s=>{c(0==l(n)?p(s):n,(t=>{e.delListener(t),v(s,t)})),g(s)&&T(R,t)})),A=(e,n)=>{T(r,e,n),I(d,e)||(T(d,e,t()),T(i,e,S()),T(a,e,S()))},C=e=>{T(r,e),T(d,e),T(i,e),T(a,e),z(e)};return[()=>e,()=>w(r),e=>b(d,e),e=>I(d,e),e=>L(r,e),e=>L(d,e),(e,t)=>T(d,e,t),A,(t,r,d,u,g)=>{A(t,r);const p=S(),v=S(),w=L(i,t),E=L(a,t),R=t=>{const d=n=>e.getCell(r,t,n),i=L(w,t),c=s(r,t)?n(u(d,t)):void 0;var a,I;if(i===c||h(i)&&h(c)&&(I=c,l(a=i)===l(I)&&o(a,((e,t)=>I[t]===e)))||T(p,t,[i,c]),!f(g)){const e=L(E,t),n=s(r,t)?g(d,t):void 0;e!=n&&T(v,t,n)}},m=e=>{d((()=>{x(p,(([,e],t)=>T(w,t,e))),x(v,((e,t)=>T(E,t,e)))}),p,v,w,E,e),y(p),y(v)};b(w,R),e.hasTable(r)&&c(e.getRowIds(r),(e=>{I(w,e)||R(e)})),m(!0),z(t),k(t,0,e.addRowListener(r,null,((e,t,n)=>R(n))),e.addTableListener(r,(()=>m())))},C,()=>b(R,C),k,z]})(e,S,(e=>{return f(e)?n:h(e)?(t=r,e.map(t)):r(e);var t})),[J,K,N]=(e=>{let t;const[s,r]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{A.test(t)&&l(e)<1e3&&a(e,t)}]})(),o=S();return[(e,r,d,i=[],c=(()=>[]))=>{t??=Q;const l=s();return T(o,l,[e,r,d,i,c]),j(R(r,d??[n],m),l),l},(e,s,...r)=>c(((e,t=[n])=>{const s=[],r=(e,n)=>n==l(t)?a(s,e):null===t[n]?x(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(L(e,t),n+1)));return r(e,0),s})(e,s),(e=>x(e,(e=>L(o,e)[0](t,...s??[],...r))))),e=>u(L(o,e),(([,t,s])=>(R(t,s??[n],void 0,(t=>(v(t,e),g(t)?1:0))),T(o,e),r(e),s))),e=>u(L(o,e),(([e,,n=[],s,r])=>{const o=(...d)=>{const i=l(d);i==l(n)?e(t,...d,...r(d)):f(n[i])?c(s[i]?.(...d)??[],(e=>o(...d,e))):o(...d,n[i])};o()}))]})(),P=(t,n,s)=>{const r=W(t);x(s,((t,s)=>n(s,(n=>x(t,(t=>n(t,(n=>e.forEachCell(r,t,n)))))))))},Q={setIndexDefinition:(e,n,r,o,c,l=z)=>{const a=f(c)?void 0:([e],[t])=>c(e,t);return F(e,n,((n,r,c,h,p,y)=>{let w=0;const E=m(),R=m(),k=$(e);if(x(r,(([e,t],n)=>{const s=m(e),r=m(t);x(s,(e=>v(r,e)?v(s,e):0)),x(s,(e=>{j(E,e),u(L(k,e),(t=>{v(t,n),g(t)&&(T(k,e),w=1)}))})),x(r,(e=>{j(E,e),I(k,e)||(T(k,e,m()),w=1),j(L(k,e),n),f(o)||j(R,e)}))})),n(),g(p)||(y?b(k,(e=>j(R,e))):b(c,(e=>u(L(h,e),(e=>j(R,e))))),x(R,(e=>{const t=(t,n)=>l(L(p,t),L(p,n),e),n=[...L(k,e)];d(n,t)||(T(k,e,m(i(n,t))),j(E,e))}))),(w||y)&&!f(a)){const t=[...k];d(t,a)||(q(e,S(i(t,a))),w=1)}w&&K(t,[e]),x(E,(t=>K(s,[e,t])))}),k(r),u(o,k)),Q},delIndexDefinition:e=>(G(e),Q),getStore:D,getIndexIds:M,forEachIndex:e=>B(((t,n)=>e(t,(e=>P(t,e,n))))),forEachSlice:(e,t)=>P(e,t,$(e)),hasIndex:O,hasSlice:(e,t)=>I($(e),t),getTableId:W,getSliceIds:e=>w($(e)),getSliceRowIds:(e,t)=>p(L($(e),t)),addSliceIdsListener:(e,n)=>J(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>J(n,s,[e,t]),delListener:e=>(N(e),Q),destroy:H,getListenerStats:()=>({})};return C(Q)})(e)),t.get(e))})();e.createIndexes=D},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",r=t(n),s=t(t),i=(e,t)=>e.forEach(t),o=e=>a(e,((e,t)=>e+t),0),c=e=>e.length,a=(e,t,n)=>e.reduce(t,n),d=(e,...t)=>e.push(...t),l=Math.max,u=Math.min,f=isFinite,h=e=>null==e,v=(e,t,n)=>h(e)?n?.():t(e),g=e=>Array.isArray(e),M=()=>{},p=e=>e.size,y=(e,t)=>e?.has(t)??!1,m=e=>h(e)||0==p(e),b=e=>[...e?.values()??[]],L=e=>e.clear(),w=(e,t)=>e?.forEach(t),T=(e,t)=>e?.delete(t),x=e=>new Map(e),E=(e,t)=>e?.get(t),I=(e,t)=>w(e,((e,n)=>t(n,e))),R=(e,t,n)=>h(n)?(T(e,t),e):e?.set(t,n),S=(e,t,n)=>(y(e,t)||R(e,t,n()),E(e,t)),j=(e,t,n,r,s=0)=>v((n?S:E)(e,t[s],s>c(t)-2?n:x),(i=>{if(s>c(t)-2)return r?.(i)&&R(e,t[s]),i;const o=j(i,t,n,r,s+1);return m(i)&&R(e,t[s]),o})),k=x([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,r)=>e+(t-n)/r]],["max",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:u(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),z=e=>new Set(g(e)||h(e)?e:[e]),A=(e,t)=>e?.add(t),D=/^\d+$/,N=Object.freeze,B=(e=>{const o=new WeakMap;return e=>(o.has(e)||o.set(e,(e=>{const o=x(),[a,l,u,B,C,F,O,,W,$,q]=((e,t,r)=>{const s=e.hasRow,o=x(),a=x(),d=x(),l=x(),u=x(),f=(t,n,...r)=>{const s=S(u,t,z);return i(r,(t=>A(s,t)&&n&&e.callListener(t))),r},M=(t,...n)=>v(E(u,t),(r=>{i(0==c(n)?b(r):n,(t=>{e.delListener(t),T(r,t)})),m(r)&&R(u,t)})),p=(e,n)=>{R(o,e,n),y(a,e)||(R(a,e,t()),R(d,e,x()),R(l,e,x()))},j=e=>{R(o,e),R(a,e),R(d,e),R(l,e),M(e)};return[()=>e,()=>[...o?.keys()??[]],e=>I(a,e),e=>y(a,e),e=>E(o,e),e=>E(a,e),(e,t)=>R(a,e,t),p,(t,r,o,a,u)=>{p(t,r);const v=x(),m=x(),b=E(d,t),T=E(l,t),S=t=>{const i=n=>e.getCell(r,t,n),o=E(b,t),d=s(r,t)?(l=a(i,t),isNaN(l)||h(l)||!0===l||!1===l||l===n?void 0:1*l):void 0;var l,f,M,p;if(o===d||g(o)&&g(d)&&(M=d,c(f=o)===c(M)&&(p=(e,t)=>M[t]===e,f.every(p)))||R(v,t,[o,d]),!h(u)){const e=E(T,t),n=s(r,t)?u(i,t):void 0;e!=n&&R(m,t,n)}},j=e=>{o((()=>{w(v,(([,e],t)=>R(b,t,e))),w(m,((e,t)=>R(T,t,e)))}),v,m,b,T,e),L(v),L(m)};I(b,S),e.hasTable(r)&&i(e.getRowIds(r),(e=>{y(b,e)||S(e)})),j(!0),M(t),f(t,0,e.addRowListener(r,null,((e,t,n)=>S(n))),e.addTableListener(r,(()=>j())))},j,()=>I(u,j),f,M]})(e,M),[G,H,J]=(e=>{let t;const[r,s]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{D.test(t)&&c(e)<1e3&&d(e,t)}]})(),o=x();return[(e,s,i)=>{t??=K;const c=r();return R(o,c,[e,s,i]),A(j(s,i??[n],z),c),c},(e,r,...s)=>i(((e,t=[n])=>{const r=[],s=(e,n)=>n==c(t)?d(r,e):null===t[n]?w(e,(e=>s(e,n+1))):i([t[n],null],(t=>s(E(e,t),n+1)));return s(e,0),r})(e,r),(e=>w(e,(e=>E(o,e)[0](t,...r??[],...s))))),e=>v(E(o,e),(([,t,r])=>(j(t,r??[n],void 0,(t=>(T(t,e),m(t)?1:0))),R(o,e),s(e),r))),(e,n,r)=>v(E(o,e),(([e,,s=[]])=>{const o=(...a)=>{const d=c(a);d==c(s)?e(t,...a,...r(a)):h(s[d])?i(n[d](...a),(e=>o(...a,e))):o(...a,s[d])};o()}))]})(),K={setMetricDefinition:(e,n,i,c,a,d,l)=>{const u=t(i)==s?[i,a,d,l]:E(k,i)??E(k,"sum");return W(e,n,((t,n,r,s,i,c)=>{const a=F(e),d=p(s);c||=h(a),t();let l=((e,t,n,r,s,i=!1)=>{if(m(n))return;const[o,c,a,d]=s;return i||=h(e),w(r,(([n,r])=>{i||(e=h(n)?c?.(e,r,t++):h(r)?a?.(e,n,t--):d?.(e,r,n,t),i||=h(e))})),i?o(b(n),p(n)):e})(a,d,s,n,u,c);f(l)||(l=void 0),l!=a&&(O(e,l),H(o,[e],l,a))}),(1,t(v=c)==r?e=>e(v):v??(()=>1))),K;var v},delMetricDefinition:e=>($(e),K),getStore:a,getMetricIds:l,forEachMetric:u,hasMetric:B,getTableId:C,getMetric:F,addMetricListener:(e,t)=>G(t,o,[e]),delListener:e=>(J(e),K),destroy:q,getListenerStats:()=>({})};return N(K)})(e)),o.get(e))})();e.createMetrics=B},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",r=t(n),s=t(t),i=(e,t)=>e.forEach(t),o=e=>a(e,((e,t)=>e+t),0),c=e=>e.length,a=(e,t,n)=>e.reduce(t,n),d=(e,...t)=>e.push(...t),l=Math.max,u=Math.min,f=isFinite,h=e=>null==e,v=(e,t,n)=>h(e)?n?.():t(e),g=e=>Array.isArray(e),M=()=>{},p=e=>e.size,y=(e,t)=>e?.has(t)??!1,m=e=>h(e)||0==p(e),b=e=>[...e?.values()??[]],L=e=>e.clear(),w=(e,t)=>e?.forEach(t),T=(e,t)=>e?.delete(t),x=e=>new Map(e),E=(e,t)=>e?.get(t),I=(e,t)=>w(e,((e,n)=>t(n,e))),R=(e,t,n)=>h(n)?(T(e,t),e):e?.set(t,n),S=(e,t,n)=>(y(e,t)||R(e,t,n()),E(e,t)),j=(e,t,n,r,s=0)=>v((n?S:E)(e,t[s],s>c(t)-2?n:x),(i=>{if(s>c(t)-2)return r?.(i)&&R(e,t[s]),i;const o=j(i,t,n,r,s+1);return m(i)&&R(e,t[s]),o})),k=x([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,r)=>e+(t-n)/r]],["max",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:u(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),z=e=>new Set(g(e)||h(e)?e:[e]),A=(e,t)=>e?.add(t),D=/^\d+$/,N=Object.freeze,B=(e=>{const o=new WeakMap;return e=>(o.has(e)||o.set(e,(e=>{const o=x(),[a,l,u,B,C,F,O,,W,$,q]=((e,t,r)=>{const s=e.hasRow,o=x(),a=x(),d=x(),l=x(),u=x(),f=(t,n,...r)=>{const s=S(u,t,z);return i(r,(t=>A(s,t)&&n&&e.callListener(t))),r},M=(t,...n)=>v(E(u,t),(r=>{i(0==c(n)?b(r):n,(t=>{e.delListener(t),T(r,t)})),m(r)&&R(u,t)})),p=(e,n)=>{R(o,e,n),y(a,e)||(R(a,e,t()),R(d,e,x()),R(l,e,x()))},j=e=>{R(o,e),R(a,e),R(d,e),R(l,e),M(e)};return[()=>e,()=>[...o?.keys()??[]],e=>I(a,e),e=>y(a,e),e=>E(o,e),e=>E(a,e),(e,t)=>R(a,e,t),p,(t,r,o,a,u)=>{p(t,r);const v=x(),m=x(),b=E(d,t),T=E(l,t),S=t=>{const i=n=>e.getCell(r,t,n),o=E(b,t),d=s(r,t)?(l=a(i,t),isNaN(l)||h(l)||!0===l||!1===l||l===n?void 0:1*l):void 0;var l,f,M,p;if(o===d||g(o)&&g(d)&&(M=d,c(f=o)===c(M)&&(p=(e,t)=>M[t]===e,f.every(p)))||R(v,t,[o,d]),!h(u)){const e=E(T,t),n=s(r,t)?u(i,t):void 0;e!=n&&R(m,t,n)}},j=e=>{o((()=>{w(v,(([,e],t)=>R(b,t,e))),w(m,((e,t)=>R(T,t,e)))}),v,m,b,T,e),L(v),L(m)};I(b,S),e.hasTable(r)&&i(e.getRowIds(r),(e=>{y(b,e)||S(e)})),j(!0),M(t),f(t,0,e.addRowListener(r,null,((e,t,n)=>S(n))),e.addTableListener(r,(()=>j())))},j,()=>I(u,j),f,M]})(e,M),[G,H,J]=(e=>{let t;const[r,s]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{D.test(t)&&c(e)<1e3&&d(e,t)}]})(),o=x();return[(e,s,i,c=[],a=(()=>[]))=>{t??=K;const d=r();return R(o,d,[e,s,i,c,a]),A(j(s,i??[n],z),d),d},(e,r,...s)=>i(((e,t=[n])=>{const r=[],s=(e,n)=>n==c(t)?d(r,e):null===t[n]?w(e,(e=>s(e,n+1))):i([t[n],null],(t=>s(E(e,t),n+1)));return s(e,0),r})(e,r),(e=>w(e,(e=>E(o,e)[0](t,...r??[],...s))))),e=>v(E(o,e),(([,t,r])=>(j(t,r??[n],void 0,(t=>(T(t,e),m(t)?1:0))),R(o,e),s(e),r))),e=>v(E(o,e),(([e,,n=[],r,s])=>{const o=(...a)=>{const d=c(a);d==c(n)?e(t,...a,...s(a)):h(n[d])?i(r[d]?.(...a)??[],(e=>o(...a,e))):o(...a,n[d])};o()}))]})(),K={setMetricDefinition:(e,n,i,c,a,d,l)=>{const u=t(i)==s?[i,a,d,l]:E(k,i)??E(k,"sum");return W(e,n,((t,n,r,s,i,c)=>{const a=F(e),d=p(s);c||=h(a),t();let l=((e,t,n,r,s,i=!1)=>{if(m(n))return;const[o,c,a,d]=s;return i||=h(e),w(r,(([n,r])=>{i||(e=h(n)?c?.(e,r,t++):h(r)?a?.(e,n,t--):d?.(e,r,n,t),i||=h(e))})),i?o(b(n),p(n)):e})(a,d,s,n,u,c);f(l)||(l=void 0),l!=a&&(O(e,l),H(o,[e],l,a))}),(1,t(v=c)==r?e=>e(v):v??(()=>1))),K;var v},delMetricDefinition:e=>($(e),K),getStore:a,getMetricIds:l,forEachMetric:u,hasMetric:B,getTableId:C,getMetric:F,addMetricListener:(e,t)=>G(t,o,[e]),delListener:e=>(J(e),K),destroy:q,getListenerStats:()=>({})};return N(K)})(e)),o.get(e))})();e.createMetrics=B},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
Binary file
@@ -27,7 +27,7 @@
27
27
  * @module persisters
28
28
  */
29
29
 
30
- import {Store, Tables} from './store.d';
30
+ import {Store, Tables, Values} from './store.d';
31
31
  import {Callback} from './common.d';
32
32
 
33
33
  /**
@@ -105,9 +105,9 @@ export type PersisterStats = {
105
105
  *
106
106
  * await persister.save();
107
107
  * console.log(sessionStorage.getItem('pets'));
108
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
108
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
109
109
  *
110
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
110
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
111
111
  * await persister.load();
112
112
  * console.log(store.getTables());
113
113
  * // -> {pets: {toto: {species: 'dog'}}}
@@ -130,10 +130,10 @@ export type PersisterStats = {
130
130
  * store.setTables({pets: {felix: {species: 'cat'}}});
131
131
  * // ...
132
132
  * console.log(sessionStorage.getItem('pets'));
133
- * // -> '{"pets":{"felix":{"species":"cat"}}}'
133
+ * // -> '[{"pets":{"felix":{"species":"cat"}}},{}]'
134
134
  *
135
135
  * // In another browser tab:
136
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
136
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
137
137
  * // -> StorageEvent('storage', {storageArea: sessionStorage, key: 'pets'})
138
138
  *
139
139
  * // ...
@@ -163,6 +163,8 @@ export interface Persister {
163
163
  *
164
164
  * @param initialTables An optional Tables object used when the underlying
165
165
  * storage has not previously been populated.
166
+ * @param initialValues An optional Values object used when the underlying
167
+ * storage has not previously been populated, since v3.0.0.
166
168
  * @returns A Promise containing a reference to the Persister object.
167
169
  * @example
168
170
  * This example creates an empty Store, and loads data into it from the
@@ -170,7 +172,7 @@ export interface Persister {
170
172
  * previously populated.
171
173
  *
172
174
  * ```js
173
- * sessionStorage.setItem('pets', '{"pets":{"fido":{"species":"dog"}}}');
175
+ * sessionStorage.setItem('pets', '[{"pets":{"fido":{"species":"dog"}}},{}]');
174
176
  *
175
177
  * const store = createStore();
176
178
  * const persister = createSessionPersister(store, 'pets');
@@ -195,7 +197,7 @@ export interface Persister {
195
197
  * console.log(store.getTables());
196
198
  * // -> {pets: {fido: {species: 'dog'}}}
197
199
  *
198
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
200
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
199
201
  * await persister.load({pets: {fido: {species: 'dog'}}});
200
202
  * console.log(store.getTables());
201
203
  * // -> {pets: {toto: {species: 'dog'}}}
@@ -204,7 +206,7 @@ export interface Persister {
204
206
  * ```
205
207
  * @category Load
206
208
  */
207
- load(initialTables?: Tables): Promise<Persister>;
209
+ load(initialTables?: Tables, initialValues?: Values): Promise<Persister>;
208
210
 
209
211
  /**
210
212
  * The startAutoLoad method gets persisted data from storage, and loads it
@@ -229,6 +231,8 @@ export interface Persister {
229
231
  *
230
232
  * @param initialTables An optional Tables object used when the underlying
231
233
  * storage has not previously been populated.
234
+ * @param initialValues An optional Values object used when the underlying
235
+ * storage has not previously been populated, since v3.0.0.
232
236
  * @returns A Promise containing a reference to the Persister object.
233
237
  * @example
234
238
  * This example creates an empty Store, and loads data into it from the
@@ -246,7 +250,7 @@ export interface Persister {
246
250
  * // -> {pets: {fido: {species: 'dog'}}}
247
251
  *
248
252
  * // In another browser tab:
249
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
253
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
250
254
  * // -> StorageEvent('storage', {storageArea: sessionStorage, key: 'pets'})
251
255
  *
252
256
  * // ...
@@ -258,7 +262,10 @@ export interface Persister {
258
262
  * ```
259
263
  * @category Load
260
264
  */
261
- startAutoLoad(initialTables?: Tables): Promise<Persister>;
265
+ startAutoLoad(
266
+ initialTables?: Tables,
267
+ initialValues?: Values,
268
+ ): Promise<Persister>;
262
269
 
263
270
  /**
264
271
  * The stopAutoLoad method stops the automatic loading of data from storage
@@ -279,7 +286,7 @@ export interface Persister {
279
286
  * await persister.startAutoLoad();
280
287
  *
281
288
  * // In another browser tab:
282
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
289
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
283
290
  * // -> StorageEvent('storage', {storageArea: sessionStorage, key: 'pets'})
284
291
  * // ...
285
292
  * console.log(store.getTables());
@@ -288,7 +295,10 @@ export interface Persister {
288
295
  * persister.stopAutoLoad();
289
296
  *
290
297
  * // In another browser tab:
291
- * sessionStorage.setItem('pets', '{"pets":{"felix":{"species":"cat"}}}');
298
+ * sessionStorage.setItem(
299
+ * 'pets',
300
+ * '[{"pets":{"felix":{"species":"cat"}}},{}]',
301
+ * );
292
302
  * // -> StorageEvent('storage', {storageArea: sessionStorage, key: 'pets'})
293
303
  * // ...
294
304
  * console.log(store.getTables());
@@ -322,7 +332,7 @@ export interface Persister {
322
332
  *
323
333
  * await persister.save();
324
334
  * console.log(sessionStorage.getItem('pets'));
325
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
335
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
326
336
  *
327
337
  * persister.destroy();
328
338
  * sessionStorage.clear();
@@ -356,12 +366,12 @@ export interface Persister {
356
366
  *
357
367
  * await persister.startAutoSave();
358
368
  * console.log(sessionStorage.getItem('pets'));
359
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
369
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
360
370
  *
361
371
  * store.setTables({pets: {toto: {species: 'dog'}}});
362
372
  * // ...
363
373
  * console.log(sessionStorage.getItem('pets'));
364
- * // -> '{"pets":{"toto":{"species":"dog"}}}'
374
+ * // -> '[{"pets":{"toto":{"species":"dog"}}},{}]'
365
375
  *
366
376
  * sessionStorage.clear();
367
377
  * ```
@@ -391,14 +401,14 @@ export interface Persister {
391
401
  * store.setTables({pets: {toto: {species: 'dog'}}});
392
402
  * // ...
393
403
  * console.log(sessionStorage.getItem('pets'));
394
- * // -> '{"pets":{"toto":{"species":"dog"}}}'
404
+ * // -> '[{"pets":{"toto":{"species":"dog"}}},{}]'
395
405
  *
396
406
  * persister.stopAutoSave();
397
407
  *
398
408
  * store.setTables({pets: {felix: {species: 'cat'}}});
399
409
  * // ...
400
410
  * console.log(sessionStorage.getItem('pets'));
401
- * // -> '{"pets":{"toto":{"species":"dog"}}}'
411
+ * // -> '[{"pets":{"toto":{"species":"dog"}}},{}]'
402
412
  * // Store change has not been automatically saved.
403
413
  *
404
414
  * sessionStorage.clear();
@@ -423,7 +433,7 @@ export interface Persister {
423
433
  * persister.getStore().setTables({pets: {fido: {species: 'dog'}}});
424
434
  * // ...
425
435
  * console.log(sessionStorage.getItem('pets'));
426
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
436
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
427
437
  *
428
438
  * sessionStorage.clear();
429
439
  * ```
@@ -493,7 +503,7 @@ export interface Persister {
493
503
  * store.setTables({pets: {felix: {species: 'cat'}}});
494
504
  * // ...
495
505
  *
496
- * sessionStorage.setItem('pets', '{"pets":{"toto":{"species":"dog"}}}');
506
+ * sessionStorage.setItem('pets', '[{"pets":{"toto":{"species":"dog"}}},{}]');
497
507
  * // -> StorageEvent('storage', {storageArea: sessionStorage, key: 'pets'})
498
508
  * // ...
499
509
  *
@@ -529,7 +539,7 @@ export interface Persister {
529
539
  *
530
540
  * await persister.save();
531
541
  * console.log(sessionStorage.getItem('pets'));
532
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
542
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
533
543
  *
534
544
  * persister.destroy();
535
545
  * sessionStorage.clear();
@@ -562,7 +572,7 @@ export function createSessionPersister(
562
572
  *
563
573
  * await persister.save();
564
574
  * console.log(localStorage.getItem('pets'));
565
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
575
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
566
576
  *
567
577
  * persister.destroy();
568
578
  * localStorage.clear();
@@ -696,9 +706,9 @@ export function createFilePersister(store: Store, filePath: string): Persister;
696
706
  *
697
707
  * await persister.save();
698
708
  * console.log(storeJson);
699
- * // -> '{"pets":{"fido":{"species":"dog"}}}'
709
+ * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
700
710
  *
701
- * storeJson = '{"pets":{"fido":{"species":"dog","color":"brown"}}}';
711
+ * storeJson = '[{"pets":{"fido":{"species":"dog","color":"brown"}}},{}]';
702
712
  * await persister.load();
703
713
  *
704
714
  * console.log(store.getTables());
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t){"use strict";const s="utf8",a=e=>null==e,o=(e,t,s)=>a(e)?s?.():t(e),r=Object.freeze,n=(e,t,s,n,i)=>{let c,d=0;const l={load:async s=>{if(2!=d){d=1;const o=await t();a(o)||""==o?e.setTables(s):e.setJson(o),d=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),n(l.load),l),stopAutoLoad:()=>(i(),l),save:async()=>(1!=d&&(d=2,await s(e.getJson()),d=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),c=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(o(c,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(l)},i="storage",c=globalThis.window,d=(e,t,s)=>{let a;return n(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{a=a=>{a.storageArea===s&&a.key===t&&e()},c.addEventListener(i,a)}),(()=>{c.removeEventListener(i,a),a=void 0}))},l=e=>e.headers.get("ETag");e.createCustomPersister=n,e.createFilePersister=(e,a)=>{let o;return n(e,(async()=>{try{return await t.promises.readFile(a,s)}catch{}}),(async e=>{try{await t.promises.writeFile(a,e,s)}catch{}}),(e=>{o=t.watch(a,e)}),(()=>{o?.close(),o=void 0}))},e.createLocalPersister=(e,t)=>d(e,t,localStorage),e.createRemotePersister=(e,t,s,r)=>{let i,c;return n(e,(async()=>{const e=await fetch(t);return c=l(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{i=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),o=l(s);a(c)||a(o)||o==c||(c=o,e())}),1e3*r)}),(()=>{o(i,clearInterval),i=void 0}))},e.createSessionPersister=(e,t)=>d(e,t,sessionStorage)},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisters={},e.fs);
1
+ var e,t;e=this,t=function(e,t){"use strict";const s="utf8",a=e=>null==e,o=(e,t,s)=>a(e)?s?.():t(e),r=Object.freeze,n=(e,t,s,n,i)=>{let c,d,l=0;const u={load:async(s,o)=>{if(2!=l){l=1;const r=await t();a(r)||""==r?e.transaction((()=>e.setTables(s).setValues(o))):e.setJson(r),l=0}return u},startAutoLoad:async(e,t)=>(u.stopAutoLoad(),await u.load(e,t),n(u.load),u),stopAutoLoad:()=>(i(),u),save:async()=>(1!=l&&(l=2,await s(e.getJson()),l=0),u),startAutoSave:async()=>(await u.stopAutoSave().save(),c=e.addTablesListener(u.save),d=e.addValuesListener(u.save),u),stopAutoSave:()=>(o(c,e.delListener),o(d,e.delListener),u),getStore:()=>e,destroy:()=>u.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(u)},i="storage",c=globalThis.window,d=(e,t,s)=>{let a;return n(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{a=a=>{a.storageArea===s&&a.key===t&&e()},c.addEventListener(i,a)}),(()=>{c.removeEventListener(i,a),a=void 0}))},l=e=>e.headers.get("ETag");e.createCustomPersister=n,e.createFilePersister=(e,a)=>{let o;return n(e,(async()=>{try{return await t.promises.readFile(a,s)}catch{}}),(async e=>{try{await t.promises.writeFile(a,e,s)}catch{}}),(e=>{o=t.watch(a,e)}),(()=>{o?.close(),o=void 0}))},e.createLocalPersister=(e,t)=>d(e,t,localStorage),e.createRemotePersister=(e,t,s,r)=>{let i,c;return n(e,(async()=>{const e=await fetch(t);return c=l(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{i=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),o=l(s);a(c)||a(o)||o==c||(c=o,e())}),1e3*r)}),(()=>{o(i,clearInterval),i=void 0}))},e.createSessionPersister=(e,t)=>d(e,t,sessionStorage)},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisters={},e.fs);
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>e.forEach(t),r=e=>e.length,i=(e,...t)=>e.push(...t),a=e=>null==e,d=(e,t,n)=>a(e)?n?.():t(e),l=e=>Array.isArray(e),c=(e,t)=>e?.has(t)??!1,f=e=>a(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),R=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),g=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,n)=>t(n,e))),y=(e,t,n)=>a(n)?(p(e,t),e):e?.set(t,n),I=(e,t,n)=>(c(e,t)||y(e,t,n()),L(e,t)),v=(e,t,n,s,o=0)=>d((n?I:L)(e,t[o],o>r(t)-2?n:g),(i=>{if(o>r(t)-2)return s?.(i)&&y(e,t[o]),i;const a=v(i,t,n,s,o+1);return f(i)&&y(e,t[o]),a})),b=e=>new Set(l(e)||a(e)?e:[e]),T=(e,t)=>e?.add(t),m=/^\d+$/,k=Object.freeze,E=(e=>{const E=new WeakMap;return e=>(E.has(e)||E.set(e,(e=>{const E=g(),x=g(),S=g(),j=g(),[z,A,D,M,B,C,,,O,W,$]=((e,t,s)=>{const i=e.hasRow,v=g(),m=g(),k=g(),E=g(),x=g(),S=(t,n,...s)=>{const r=I(x,t,b);return o(s,(t=>T(r,t)&&n&&e.callListener(t))),s},j=(t,...n)=>d(L(x,t),(s=>{o(0==r(n)?u(s):n,(t=>{e.delListener(t),p(s,t)})),f(s)&&y(x,t)})),z=(e,t)=>{y(v,e,t),c(m,e)||(y(m,e,[g(),g(),g(),g()]),y(k,e,g()),y(E,e,g()))},A=e=>{y(v,e),y(m,e),y(k,e),y(E,e),j(e)};return[()=>e,()=>[...v?.keys()??[]],e=>w(m,e),e=>c(m,e),e=>L(v,e),e=>L(m,e),(e,t)=>y(m,e,t),z,(t,s,d,f,u)=>{z(t,s);const p=g(),I=g(),v=L(k,t),b=L(E,t),T=t=>{const o=n=>e.getCell(s,t,n),d=L(v,t),c=i(s,t)?(h=f(o,t),a(h)?void 0:h+n):void 0;var h,R,g,w;if(d===c||l(d)&&l(c)&&(g=c,r(R=d)===r(g)&&(w=(e,t)=>g[t]===e,R.every(w)))||y(p,t,[d,c]),!a(u)){const e=L(b,t),n=i(s,t)?u(o,t):void 0;e!=n&&y(I,t,n)}},m=e=>{d((()=>{R(p,(([,e],t)=>y(v,t,e))),R(I,((e,t)=>y(b,t,e)))}),p,I,v,b,e),h(p),h(I)};w(v,T),e.hasTable(s)&&o(e.getRowIds(s),(e=>{c(v,e)||T(e)})),m(!0),j(t),S(t,0,e.addRowListener(s,null,((e,t,n)=>T(n))),e.addTableListener(s,(()=>m())))},A,()=>w(x,A),S,j]})(e),[q,F,G]=(e=>{let t;const[s,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{m.test(t)&&r(e)<1e3&&i(e,t)}]})(),c=g();return[(e,o,r)=>{t??=N;const i=s();return y(c,i,[e,o,r]),T(v(o,r??[n],b),i),i},(e,s,...a)=>o(((e,t=[n])=>{const s=[],a=(e,n)=>n==r(t)?i(s,e):null===t[n]?R(e,(e=>a(e,n+1))):o([t[n],null],(t=>a(L(e,t),n+1)));return a(e,0),s})(e,s),(e=>R(e,(e=>L(c,e)[0](t,...s??[],...a))))),e=>d(L(c,e),(([,t,s])=>(v(t,s??[n],void 0,(t=>(p(t,e),f(t)?1:0))),y(c,e),l(e),s))),(e,n,s)=>d(L(c,e),(([e,,i=[]])=>{const d=(...l)=>{const c=r(l);c==r(i)?e(t,...l,...s(l)):a(i[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,i[c])};d()}))]})(),H=(e,t,n)=>d(C(e),(([s,,o])=>{if(!c(o,t)){const r=b();if(B(e)!=K(e))T(r,t);else{let e=t;for(;!a(e)&&!c(r,e);)T(r,e),e=L(s,e)}if(n)return r;y(o,t,r)}return L(o,t)})),J=(e,t)=>d(C(e),(([,,e])=>y(e,t))),K=e=>L(E,e),N={setRelationshipDefinition:(e,o,r,i)=>{return y(E,e,r),O(e,o,((t,n)=>{const s=b(),o=b(),r=b(),[i,l]=C(e);R(n,(([t,n],u)=>{a(t)||(T(o,t),d(L(l,t),(e=>{p(e,u),f(e)&&y(l,t)}))),a(n)||(T(o,n),c(l,n)||y(l,n,b()),T(L(l,n),u)),T(s,u),y(i,u,n),w(L(j,e),(t=>{c(H(e,t),u)&&T(r,t)}))})),t(),R(s,(t=>F(x,[e,t]))),R(o,(t=>F(S,[e,t]))),R(r,(t=>{J(e,t),F(j,[e,t])}))}),t(l=i)==s?e=>e(l):l??(()=>n)),N;var l},delRelationshipDefinition:e=>(y(E,e),W(e),N),getStore:z,getRelationshipIds:A,forEachRelationship:t=>D((n=>t(n,(t=>e.forEachRow(B(n),t))))),hasRelationship:M,getLocalTableId:B,getRemoteTableId:K,getRemoteRowId:(e,t)=>L(C(e)?.[0],t),getLocalRowIds:(e,t)=>u(L(C(e)?.[1],t)),getLinkedRowIds:(e,t)=>a(C(e))?[t]:u(H(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>q(n,x,[e,t]),addLocalRowIdsListener:(e,t,n)=>q(n,S,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(H(e,t),q(n,j,[e,t])),delListener:e=>(J(...G(e)),N),destroy:$,getListenerStats:()=>({})};return k(N)})(e)),E.get(e))})();e.createRelationships=E},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>e.forEach(t),r=e=>e.length,i=(e,...t)=>e.push(...t),a=e=>null==e,d=(e,t,n)=>a(e)?n?.():t(e),l=e=>Array.isArray(e),c=(e,t)=>e?.has(t)??!1,f=e=>a(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),R=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),g=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,n)=>t(n,e))),y=(e,t,n)=>a(n)?(p(e,t),e):e?.set(t,n),I=(e,t,n)=>(c(e,t)||y(e,t,n()),L(e,t)),v=(e,t,n,s,o=0)=>d((n?I:L)(e,t[o],o>r(t)-2?n:g),(i=>{if(o>r(t)-2)return s?.(i)&&y(e,t[o]),i;const a=v(i,t,n,s,o+1);return f(i)&&y(e,t[o]),a})),b=e=>new Set(l(e)||a(e)?e:[e]),T=(e,t)=>e?.add(t),m=/^\d+$/,k=Object.freeze,E=(e=>{const E=new WeakMap;return e=>(E.has(e)||E.set(e,(e=>{const E=g(),x=g(),S=g(),j=g(),[z,A,D,M,B,C,,,O,W,$]=((e,t,s)=>{const i=e.hasRow,v=g(),m=g(),k=g(),E=g(),x=g(),S=(t,n,...s)=>{const r=I(x,t,b);return o(s,(t=>T(r,t)&&n&&e.callListener(t))),s},j=(t,...n)=>d(L(x,t),(s=>{o(0==r(n)?u(s):n,(t=>{e.delListener(t),p(s,t)})),f(s)&&y(x,t)})),z=(e,t)=>{y(v,e,t),c(m,e)||(y(m,e,[g(),g(),g(),g()]),y(k,e,g()),y(E,e,g()))},A=e=>{y(v,e),y(m,e),y(k,e),y(E,e),j(e)};return[()=>e,()=>[...v?.keys()??[]],e=>w(m,e),e=>c(m,e),e=>L(v,e),e=>L(m,e),(e,t)=>y(m,e,t),z,(t,s,d,f,u)=>{z(t,s);const p=g(),I=g(),v=L(k,t),b=L(E,t),T=t=>{const o=n=>e.getCell(s,t,n),d=L(v,t),c=i(s,t)?(h=f(o,t),a(h)?void 0:h+n):void 0;var h,R,g,w;if(d===c||l(d)&&l(c)&&(g=c,r(R=d)===r(g)&&(w=(e,t)=>g[t]===e,R.every(w)))||y(p,t,[d,c]),!a(u)){const e=L(b,t),n=i(s,t)?u(o,t):void 0;e!=n&&y(I,t,n)}},m=e=>{d((()=>{R(p,(([,e],t)=>y(v,t,e))),R(I,((e,t)=>y(b,t,e)))}),p,I,v,b,e),h(p),h(I)};w(v,T),e.hasTable(s)&&o(e.getRowIds(s),(e=>{c(v,e)||T(e)})),m(!0),j(t),S(t,0,e.addRowListener(s,null,((e,t,n)=>T(n))),e.addTableListener(s,(()=>m())))},A,()=>w(x,A),S,j]})(e),[q,F,G]=(e=>{let t;const[s,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{m.test(t)&&r(e)<1e3&&i(e,t)}]})(),c=g();return[(e,o,r,i=[],a=(()=>[]))=>{t??=N;const d=s();return y(c,d,[e,o,r,i,a]),T(v(o,r??[n],b),d),d},(e,s,...a)=>o(((e,t=[n])=>{const s=[],a=(e,n)=>n==r(t)?i(s,e):null===t[n]?R(e,(e=>a(e,n+1))):o([t[n],null],(t=>a(L(e,t),n+1)));return a(e,0),s})(e,s),(e=>R(e,(e=>L(c,e)[0](t,...s??[],...a))))),e=>d(L(c,e),(([,t,s])=>(v(t,s??[n],void 0,(t=>(p(t,e),f(t)?1:0))),y(c,e),l(e),s))),e=>d(L(c,e),(([e,,n=[],s,i])=>{const d=(...l)=>{const c=r(l);c==r(n)?e(t,...l,...i(l)):a(n[c])?o(s[c]?.(...l)??[],(e=>d(...l,e))):d(...l,n[c])};d()}))]})(),H=(e,t,n)=>d(C(e),(([s,,o])=>{if(!c(o,t)){const r=b();if(B(e)!=K(e))T(r,t);else{let e=t;for(;!a(e)&&!c(r,e);)T(r,e),e=L(s,e)}if(n)return r;y(o,t,r)}return L(o,t)})),J=(e,t)=>d(C(e),(([,,e])=>y(e,t))),K=e=>L(E,e),N={setRelationshipDefinition:(e,o,r,i)=>{return y(E,e,r),O(e,o,((t,n)=>{const s=b(),o=b(),r=b(),[i,l]=C(e);R(n,(([t,n],u)=>{a(t)||(T(o,t),d(L(l,t),(e=>{p(e,u),f(e)&&y(l,t)}))),a(n)||(T(o,n),c(l,n)||y(l,n,b()),T(L(l,n),u)),T(s,u),y(i,u,n),w(L(j,e),(t=>{c(H(e,t),u)&&T(r,t)}))})),t(),R(s,(t=>F(x,[e,t]))),R(o,(t=>F(S,[e,t]))),R(r,(t=>{J(e,t),F(j,[e,t])}))}),t(l=i)==s?e=>e(l):l??(()=>n)),N;var l},delRelationshipDefinition:e=>(y(E,e),W(e),N),getStore:z,getRelationshipIds:A,forEachRelationship:t=>D((n=>t(n,(t=>e.forEachRow(B(n),t))))),hasRelationship:M,getLocalTableId:B,getRemoteTableId:K,getRemoteRowId:(e,t)=>L(C(e)?.[0],t),getLocalRowIds:(e,t)=>u(L(C(e)?.[1],t)),getLinkedRowIds:(e,t)=>a(C(e))?[t]:u(H(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>q(n,x,[e,t]),addLocalRowIdsListener:(e,t,n)=>q(n,S,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(H(e,t),q(n,j,[e,t])),delListener:e=>(J(...G(e)),N),destroy:$,getListenerStats:()=>({})};return k(N)})(e)),E.get(e))})();e.createRelationships=E},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
Binary file