tinybase 3.0.1 → 3.0.2

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 (68) hide show
  1. package/lib/cjs/checkpoints.cjs +1 -0
  2. package/lib/cjs/checkpoints.cjs.gz +0 -0
  3. package/lib/cjs/checkpoints.d.ts +959 -0
  4. package/lib/cjs/common.cjs +1 -0
  5. package/lib/cjs/common.cjs.gz +0 -0
  6. package/lib/cjs/common.d.ts +115 -0
  7. package/lib/cjs/indexes.cjs +1 -0
  8. package/lib/cjs/indexes.cjs.gz +0 -0
  9. package/lib/cjs/indexes.d.ts +966 -0
  10. package/lib/cjs/metrics.cjs +1 -0
  11. package/lib/cjs/metrics.cjs.gz +0 -0
  12. package/lib/cjs/metrics.d.ts +827 -0
  13. package/lib/cjs/persisters.cjs +1 -0
  14. package/lib/cjs/persisters.cjs.gz +0 -0
  15. package/lib/cjs/persisters.d.ts +727 -0
  16. package/lib/cjs/queries.cjs +1 -0
  17. package/lib/cjs/queries.cjs.gz +0 -0
  18. package/lib/cjs/queries.d.ts +3024 -0
  19. package/lib/cjs/relationships.cjs +1 -0
  20. package/lib/cjs/relationships.cjs.gz +0 -0
  21. package/lib/cjs/relationships.d.ts +1201 -0
  22. package/lib/cjs/store.cjs +1 -0
  23. package/lib/cjs/store.cjs.gz +0 -0
  24. package/lib/cjs/store.d.ts +5244 -0
  25. package/lib/cjs/tinybase.cjs +1 -0
  26. package/lib/cjs/tinybase.cjs.gz +0 -0
  27. package/lib/cjs/tinybase.d.ts +14 -0
  28. package/lib/cjs/tools.cjs +1 -0
  29. package/lib/cjs/tools.cjs.gz +0 -0
  30. package/lib/cjs/tools.d.ts +512 -0
  31. package/lib/cjs/ui-react.cjs +1 -0
  32. package/lib/cjs/ui-react.cjs.gz +0 -0
  33. package/lib/cjs/ui-react.d.ts +10921 -0
  34. package/lib/cjs-es6/checkpoints.cjs +1 -0
  35. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  36. package/lib/cjs-es6/checkpoints.d.ts +959 -0
  37. package/lib/cjs-es6/common.cjs +1 -0
  38. package/lib/cjs-es6/common.cjs.gz +0 -0
  39. package/lib/cjs-es6/common.d.ts +115 -0
  40. package/lib/cjs-es6/indexes.cjs +1 -0
  41. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  42. package/lib/cjs-es6/indexes.d.ts +966 -0
  43. package/lib/cjs-es6/metrics.cjs +1 -0
  44. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  45. package/lib/cjs-es6/metrics.d.ts +827 -0
  46. package/lib/cjs-es6/persisters.cjs +1 -0
  47. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  48. package/lib/cjs-es6/persisters.d.ts +727 -0
  49. package/lib/cjs-es6/queries.cjs +1 -0
  50. package/lib/cjs-es6/queries.cjs.gz +0 -0
  51. package/lib/cjs-es6/queries.d.ts +3024 -0
  52. package/lib/cjs-es6/relationships.cjs +1 -0
  53. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  54. package/lib/cjs-es6/relationships.d.ts +1201 -0
  55. package/lib/cjs-es6/store.cjs +1 -0
  56. package/lib/cjs-es6/store.cjs.gz +0 -0
  57. package/lib/cjs-es6/store.d.ts +5244 -0
  58. package/lib/cjs-es6/tinybase.cjs +1 -0
  59. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  60. package/lib/cjs-es6/tinybase.d.ts +14 -0
  61. package/lib/cjs-es6/tools.cjs +1 -0
  62. package/lib/cjs-es6/tools.cjs.gz +0 -0
  63. package/lib/cjs-es6/tools.d.ts +512 -0
  64. package/lib/cjs-es6/ui-react.cjs +1 -0
  65. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  66. package/lib/cjs-es6/ui-react.d.ts +10921 -0
  67. package/package.json +27 -19
  68. package/readme.md +1 -1
@@ -0,0 +1 @@
1
+ "use strict";exports.defaultSorter=(t,e)=>t<e?-1:1;
Binary file
@@ -0,0 +1,115 @@
1
+ /**
2
+ * The common module of the TinyBase project provides a small collection of
3
+ * common types used across other modules.
4
+ *
5
+ * @packageDocumentation
6
+ * @module common
7
+ */
8
+
9
+ /**
10
+ * The Json type is a simple alias for a string, but is used to indicate that
11
+ * the string should be considered to be a JSON serialization of an object.
12
+ *
13
+ * @category General
14
+ */
15
+ export type Json = string;
16
+
17
+ /**
18
+ * The Ids type is a simple alias for an array of strings, but is used to
19
+ * indicate that the strings should be considered to be the keys of objects
20
+ * (such as the Row Id strings used in a Table).
21
+ *
22
+ * @category Identity
23
+ */
24
+ export type Ids = Id[];
25
+
26
+ /**
27
+ * The Id type is a simple alias for a string, but is used to indicate that the
28
+ * string should be considered to be the key of an object (such as a Row Id
29
+ * string used in a Table).
30
+ *
31
+ * @category Identity
32
+ */
33
+ export type Id = string;
34
+
35
+ /**
36
+ * The Id type is a simple alias for the union of a string or `null` value,
37
+ * where the string should be considered to be the key of an objects (such as a
38
+ * Row Id string used in a Table), and typically `null` indicates a wildcard -
39
+ * such as when used in the Store addRowListener method.
40
+ *
41
+ * @category Identity
42
+ */
43
+ export type IdOrNull = Id | null;
44
+
45
+ /**
46
+ * The ParameterizedCallback type represents a generic function that will take
47
+ * an optional parameter - such as the handler of a DOM event.
48
+ *
49
+ * @category Callback
50
+ */
51
+ export type ParameterizedCallback<Parameter> = (parameter?: Parameter) => void;
52
+
53
+ /**
54
+ * The Callback type represents a function that is used as a callback and which
55
+ * does not take a parameter.
56
+ *
57
+ * @category Callback
58
+ */
59
+ export type Callback = () => void;
60
+
61
+ /**
62
+ * The SortKey type represents a value that can be used by a sort function.
63
+ *
64
+ * @category Parameter
65
+ */
66
+ export type SortKey = string | number | boolean;
67
+
68
+ /**
69
+ * The defaultSorter function is provided as a convenience to sort keys
70
+ * alphanumerically, and can be provided to the `sliceIdSorter` and
71
+ * `rowIdSorter` parameters of the setIndexDefinition method in the indexes
72
+ * module, for example.
73
+ *
74
+ * @param sortKey1 The first item of the pair to compare.
75
+ * @param sortKey2 The second item of the pair to compare.
76
+ * @returns A number indicating how to sort the pair.
77
+ * @example
78
+ * This example creates an Indexes object.
79
+ *
80
+ * ```js
81
+ * const store = createStore();
82
+ * const indexes = createIndexes(store);
83
+ * console.log(indexes.getIndexIds());
84
+ * // -> []
85
+ * ```
86
+ * @example
87
+ * This example creates a Store, creates an Indexes object, and defines an
88
+ * Index based on the first letter of the pets' names. The Slice Ids (and Row
89
+ * Ids within them) are alphabetically sorted using the defaultSorter function.
90
+ *
91
+ * ```js
92
+ * const store = createStore().setTable('pets', {
93
+ * fido: {species: 'dog'},
94
+ * felix: {species: 'cat'},
95
+ * cujo: {species: 'dog'},
96
+ * });
97
+ *
98
+ * const indexes = createIndexes(store);
99
+ * indexes.setIndexDefinition(
100
+ * 'byFirst', // indexId
101
+ * 'pets', // tableId
102
+ * (_, rowId) => rowId[0], // each Row's Slice Id
103
+ * (_, rowId) => rowId, // each Row's sort key
104
+ * defaultSorter, // sort Slice Ids
105
+ * defaultSorter, // sort Row Ids by sort key
106
+ * );
107
+ *
108
+ * console.log(indexes.getSliceIds('byFirst'));
109
+ * // -> ['c', 'f']
110
+ * console.log(indexes.getSliceRowIds('byFirst', 'f'));
111
+ * // -> ['felix', 'fido']
112
+ * ```
113
+ * @category Convenience
114
+ */
115
+ export function defaultSorter(sortKey1: SortKey, sortKey2: SortKey): number;
@@ -0,0 +1 @@
1
+ "use strict";const e=e=>typeof e,n=e(""),t=e=>""+e,l=(e,n)=>e.every(n),r=(e,n)=>l(e,((t,l)=>0==l||n(e[l-1],t)<=0)),s=(e,n)=>e.sort(n),o=(e,n)=>e.forEach(n),u=e=>e.length,d=(e,...n)=>e.push(...n),i=e=>null==e,a=(e,n,t)=>i(e)?null==t?void 0:t():n(e),c=e=>Array.isArray(e),v=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},h=e=>i(e)||0==(e=>e.size)(e),f=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},I=e=>e.clear(),g=(e,n)=>null==e?void 0:e.forEach(n),S=(e,n)=>null==e?void 0:e.delete(n),w=e=>new Map(e),L=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},x=(e,n)=>null==e?void 0:e.get(n),p=(e,n)=>g(e,((e,t)=>n(t,e))),y=(e,n,t)=>i(t)?(S(e,n),e):null==e?void 0:e.set(n,t),E=(e,n,t)=>(v(e,n)||y(e,n,t()),x(e,n)),R=(e,n,t,l,r=0)=>a((t?E:x)(e,n[r],r>u(n)-2?t:w),(s=>{if(r>u(n)-2)return(null==l?void 0:l(s))&&y(e,n[r]),s;const o=R(s,n,t,l,r+1);return h(s)&&y(e,n[r]),o})),b=e=>new Set(c(e)||i(e)?e:[e]),T=(e,n)=>null==e?void 0:e.add(n),k=(t,l)=>e(t)==n?e=>e(t):null!=t?t:()=>null!=l?l:"",z=(e,n)=>e<n?-1:1,A=/^\d+$/,C=Object.freeze,D=(e=>{const n=new WeakMap;return e=>(n.has(e)||n.set(e,(e=>{const n=w(),D=w(),[M,j,m,O,W,$,q,,B,F,G]=((e,n,t)=>{const r=e.hasRow,s=w(),d=w(),R=w(),k=w(),z=w(),A=(n,t,...l)=>{const r=E(z,n,b);return o(l,(n=>T(r,n)&&t&&e.callListener(n))),l},C=(n,...t)=>a(x(z,n),(l=>{o(0==u(t)?f(l):t,(n=>{e.delListener(n),S(l,n)})),h(l)&&y(z,n)})),D=(e,t)=>{y(s,e,t),v(d,e)||(y(d,e,n()),y(R,e,w()),y(k,e,w()))},M=e=>{y(s,e),y(d,e),y(R,e),y(k,e),C(e)};return[()=>e,()=>L(s),e=>p(d,e),e=>v(d,e),e=>x(s,e),e=>x(d,e),(e,n)=>y(d,e,n),D,(n,s,d,a,h)=>{D(n,s);const f=w(),S=w(),L=x(R,n),E=x(k,n),b=n=>{const o=t=>e.getCell(s,n,t),d=x(L,n),v=r(s,n)?t(a(o,n)):void 0;var I,g;if(d===v||c(d)&&c(v)&&(g=v,u(I=d)===u(g)&&l(I,((e,n)=>g[n]===e)))||y(f,n,[d,v]),!i(h)){const e=x(E,n),t=r(s,n)?h(o,n):void 0;e!=t&&y(S,n,t)}},T=e=>{d((()=>{g(f,(([,e],n)=>y(L,n,e))),g(S,((e,n)=>y(E,n,e)))}),f,S,L,E,e),I(f),I(S)};p(L,b),e.hasTable(s)&&o(e.getRowIds(s),(e=>{v(L,e)||b(e)})),T(!0),C(n),A(n,0,e.addRowListener(s,null,((e,n,t)=>b(t))),e.addTableListener(s,(()=>T())))},M,()=>p(z,M),A,C]})(e,w,(e=>{return i(e)?"":c(e)?(n=t,e.map(n)):t(e);var n})),[H,J,K]=(e=>{let n;const[t,l]=(()=>{const e=[];let n=0;return[()=>{var t;return null!=(t=e.shift())?t:""+n++},n=>{A.test(n)&&u(e)<1e3&&d(e,n)}]})(),r=w();return[(e,l,s,o=[],u=(()=>[]))=>{null!=n||(n=P);const d=t();return y(r,d,[e,l,s,o,u]),T(R(l,null!=s?s:[""],b),d),d},(e,t,...l)=>o(((e,n=[""])=>{const t=[],l=(e,r)=>r==u(n)?d(t,e):null===n[r]?g(e,(e=>l(e,r+1))):o([n[r],null],(n=>l(x(e,n),r+1)));return l(e,0),t})(e,t),(e=>g(e,(e=>x(r,e)[0](n,...null!=t?t:[],...l))))),e=>a(x(r,e),(([,n,t])=>(R(n,null!=t?t:[""],void 0,(n=>(S(n,e),h(n)?1:0))),y(r,e),l(e),t))),e=>a(x(r,e),(([e,,t=[],l,r])=>{const s=(...d)=>{var a,c;const v=u(d);v==u(t)?e(n,...d,...r(d)):i(t[v])?o(null!=(c=null==(a=l[v])?void 0:a.call(l,...d))?c:[],(e=>s(...d,e))):s(...d,t[v])};s()}))]})(),N=(n,t,l)=>{const r=W(n);g(l,((n,l)=>t(l,(t=>g(n,(n=>t(n,(t=>e.forEachCell(r,n,t)))))))))},P={setIndexDefinition:(e,t,l,o,u,d=z)=>{const c=i(u)?void 0:([e],[n])=>u(e,n);return B(e,t,((t,l,u,f,I,L)=>{let E=0;const R=b(),k=b(),z=$(e);if(g(l,(([e,n],t)=>{const l=b(e),r=b(n);g(l,(e=>S(r,e)?S(l,e):0)),g(l,(e=>{T(R,e),a(x(z,e),(n=>{S(n,t),h(n)&&(y(z,e),E=1)}))})),g(r,(e=>{T(R,e),v(z,e)||(y(z,e,b()),E=1),T(x(z,e),t),i(o)||T(k,e)}))})),t(),h(I)||(L?p(z,(e=>T(k,e))):p(u,(e=>a(x(f,e),(e=>T(k,e))))),g(k,(e=>{const n=(n,t)=>d(x(I,n),x(I,t),e),t=[...x(z,e)];r(t,n)||(y(z,e,b(s(t,n))),T(R,e))}))),(E||L)&&!i(c)){const n=[...z];r(n,c)||(q(e,w(s(n,c))),E=1)}E&&J(n,[e]),g(R,(n=>J(D,[e,n])))}),k(l),a(o,k)),P},delIndexDefinition:e=>(F(e),P),getStore:M,getIndexIds:j,forEachIndex:e=>m(((n,t)=>e(n,(e=>N(n,e,t))))),forEachSlice:(e,n)=>N(e,n,$(e)),hasIndex:O,hasSlice:(e,n)=>v($(e),n),getTableId:W,getSliceIds:e=>L($(e)),getSliceRowIds:(e,n)=>f(x($(e),n)),addSliceIdsListener:(e,t)=>H(t,n,[e]),addSliceRowIdsListener:(e,n,t)=>H(t,D,[e,n]),delListener:e=>(K(e),P),destroy:G,getListenerStats:()=>({})};return C(P)})(e)),n.get(e))})();exports.createIndexes=D;
Binary file