@actdim/utico 1.2.6 → 1.2.7

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 (56) hide show
  1. package/dist/arrayExtensions.es.js +64 -38
  2. package/dist/arrayExtensions.es.js.map +1 -1
  3. package/dist/asyncLock.es.js +45 -30
  4. package/dist/asyncLock.es.js.map +1 -1
  5. package/dist/cache/cacheContracts.es.js +8 -4
  6. package/dist/cache/cacheContracts.es.js.map +1 -1
  7. package/dist/cache/memoryCache.es.js +28 -13
  8. package/dist/cache/memoryCache.es.js.map +1 -1
  9. package/dist/cache/persistentCache.es.js +174 -97
  10. package/dist/cache/persistentCache.es.js.map +1 -1
  11. package/dist/dataFormats.es.js +4 -4
  12. package/dist/dataFormats.es.js.map +1 -1
  13. package/dist/dateTimeDataFormat.es.js +211 -130
  14. package/dist/dateTimeDataFormat.es.js.map +1 -1
  15. package/dist/decorators.es.js +15 -11
  16. package/dist/decorators.es.js.map +1 -1
  17. package/dist/gfx/canvasUtils.es.js +197 -114
  18. package/dist/gfx/canvasUtils.es.js.map +1 -1
  19. package/dist/gfx/color.es.js +134 -68
  20. package/dist/gfx/color.es.js.map +1 -1
  21. package/dist/i18n/cultures.es.js +8 -8
  22. package/dist/i18n/cultures.es.js.map +1 -1
  23. package/dist/i18n/enUsCulture.es.js +2 -2
  24. package/dist/i18n/enUsCulture.es.js.map +1 -1
  25. package/dist/i18n/euCulture.es.js +2 -2
  26. package/dist/i18n/euCulture.es.js.map +1 -1
  27. package/dist/i18n/invariantCulture.es.js +2 -2
  28. package/dist/i18n/invariantCulture.es.js.map +1 -1
  29. package/dist/index.es.js.map +1 -1
  30. package/dist/math.es.js +14 -8
  31. package/dist/math.es.js.map +1 -1
  32. package/dist/metadata.es.js +53 -25
  33. package/dist/metadata.es.js.map +1 -1
  34. package/dist/patterns.es.js +5 -3
  35. package/dist/patterns.es.js.map +1 -1
  36. package/dist/store/dataStore.es.js +241 -157
  37. package/dist/store/dataStore.es.js.map +1 -1
  38. package/dist/store/persistentStore.es.js +23 -17
  39. package/dist/store/persistentStore.es.js.map +1 -1
  40. package/dist/store/storeContracts.es.js +7 -3
  41. package/dist/store/storeContracts.es.js.map +1 -1
  42. package/dist/store/storeDb.es.js +87 -50
  43. package/dist/store/storeDb.es.js.map +1 -1
  44. package/dist/stringCore.es.js +60 -22
  45. package/dist/stringCore.es.js.map +1 -1
  46. package/dist/structEvent.es.js +30 -17
  47. package/dist/structEvent.es.js.map +1 -1
  48. package/dist/typeCore.es.js +25 -11
  49. package/dist/typeCore.es.js.map +1 -1
  50. package/dist/typeUtils.es.js +292 -182
  51. package/dist/typeUtils.es.js.map +1 -1
  52. package/dist/utils.es.js +138 -84
  53. package/dist/utils.es.js.map +1 -1
  54. package/dist/watchable.es.js +50 -27
  55. package/dist/watchable.es.js.map +1 -1
  56. package/package.json +2 -2
@@ -1,56 +1,82 @@
1
- Array.prototype.unfold = function(n) {
2
- return this.reduce((t, r) => (Array.prototype.push.apply(t, n(r)), t), []);
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ Array.prototype.unfold = function(callback) {
4
+ return this.reduce((res, element) => {
5
+ Array.prototype.push.apply(res, callback(element));
6
+ return res;
7
+ }, []);
3
8
  };
4
- Array.prototype.max = function(n, t) {
5
- return this.length == 0 ? t : this.reduce((r, o) => {
6
- const i = n(o);
7
- return r === void 0 || i > r ? i : r;
9
+ Array.prototype.max = function(selector, defaultValue) {
10
+ if (this.length == 0) {
11
+ return defaultValue;
12
+ }
13
+ return this.reduce((best, el) => {
14
+ const v = selector(el);
15
+ return best === void 0 || v > best ? v : best;
8
16
  }, void 0);
9
17
  };
10
- Array.prototype.min = function(n, t) {
11
- return this.length == 0 ? t : this.reduce((r, o) => {
12
- const i = n(o);
13
- return r === void 0 || i < r ? i : r;
18
+ Array.prototype.min = function(selector, defaultValue) {
19
+ if (this.length == 0) {
20
+ return defaultValue;
21
+ }
22
+ return this.reduce((best, el) => {
23
+ const v = selector(el);
24
+ return best === void 0 || v < best ? v : best;
14
25
  }, void 0);
15
26
  };
16
- Array.prototype.orderBy = function(n) {
17
- return this.slice(0).sort((t, r) => {
18
- const o = n(t), i = n(r);
19
- return o === i ? 0 : o > i ? 1 : -1;
27
+ Array.prototype.orderBy = function(selector) {
28
+ return this.slice(0).sort((a, b) => {
29
+ const va = selector(a), vb = selector(b);
30
+ return va === vb ? 0 : va > vb ? 1 : -1;
20
31
  });
21
32
  };
22
- Array.prototype.orderByDesc = function(n) {
23
- return this.slice(0).sort((t, r) => {
24
- const o = n(t), i = n(r);
25
- return o === i ? 0 : o > i ? -1 : 1;
33
+ Array.prototype.orderByDesc = function(selector) {
34
+ return this.slice(0).sort((a, b) => {
35
+ const va = selector(a), vb = selector(b);
36
+ return va === vb ? 0 : va > vb ? -1 : 1;
26
37
  });
27
38
  };
28
- Array.prototype.groupBy = function(n) {
29
- return this.reduce((t, r) => {
30
- const o = n(r);
31
- return (t[o] = t[o] || []).push(r), t;
39
+ Array.prototype.groupBy = function(selector) {
40
+ return this.reduce((result, item) => {
41
+ const value = selector(item);
42
+ (result[value] = result[value] || []).push(item);
43
+ return result;
32
44
  }, {});
33
45
  };
34
- Array.prototype.distinct = function(n) {
35
- if (!n)
46
+ Array.prototype.distinct = function(selector) {
47
+ if (!selector) {
36
48
  return [...new Set(this)];
37
- const t = /* @__PURE__ */ new Set();
38
- return this.filter(function(r) {
39
- const o = n(r);
40
- return t.has(o) ? !1 : (t.add(o), !0);
49
+ }
50
+ const seen = /* @__PURE__ */ new Set();
51
+ return this.filter(function(element) {
52
+ const key = selector(element);
53
+ if (seen.has(key)) return false;
54
+ seen.add(key);
55
+ return true;
41
56
  });
42
57
  };
43
- Array.prototype.copy = function(n, t = 0, r = 0, o) {
44
- return y(n, this, t, r, o);
58
+ Array.prototype.copy = function(src, srcIndex = 0, dstIndex = 0, length) {
59
+ return copyArray(src, this, srcIndex, dstIndex, length);
45
60
  };
46
- Array.prototype.copyTo = function(n, t = 0, r = 0, o) {
47
- return y(this, n, t, r, o);
61
+ Array.prototype.copyTo = function(dst, srcIndex = 0, dstIndex = 0, length) {
62
+ return copyArray(this, dst, srcIndex, dstIndex, length);
48
63
  };
49
- function y(n, t, r = 0, o = 0, i) {
50
- r < 0 && (r = 0), o < 0 && (o = 0), i == null && (i = n.length - r);
51
- let e = o;
52
- for (let u = r; u < r + i; u++)
53
- t[e] = n[u], e++;
54
- return t;
64
+ function copyArray(src, dst, srcIndex = 0, dstIndex = 0, length) {
65
+ if (srcIndex < 0) {
66
+ srcIndex = 0;
67
+ }
68
+ if (dstIndex < 0) {
69
+ dstIndex = 0;
70
+ }
71
+ if (length == void 0) {
72
+ length = src.length - srcIndex;
73
+ }
74
+ let j = dstIndex;
75
+ for (let i = srcIndex; i < srcIndex + length; i++) {
76
+ dst[j] = src[i];
77
+ j++;
78
+ }
79
+ return dst;
55
80
  }
81
+ __name(copyArray, "copyArray");
56
82
  //# sourceMappingURL=arrayExtensions.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrayExtensions.es.js","sources":["D:/Src/my/actdim/public/utico/src/arrayExtensions.ts"],"sourcesContent":null,"names":["callback","res","element","selector","defaultValue","best","el","v","a","b","va","vb","result","item","value","seen","key","src","srcIndex","dstIndex","length","copyArray","dst","j","i"],"mappings":"AAmBA,MAAM,UAAU,SAAS,SAAUA,GAA0C;AACzE,SAAO,KAAK,OAAO,CAACC,GAAKC,OACrB,MAAM,UAAU,KAAK,MAAMD,GAAKD,EAASE,CAAO,CAAC,GAC1CD,IACR,CAAA,CAAE;AACT;AAEA,MAAM,UAAU,MAAM,SAAUE,GAAiCC,GAAyB;AACtF,SAAI,KAAK,UAAU,IACRA,IAEJ,KAAK,OAAO,CAACC,GAAWC,MAAY;AACvC,UAAMC,IAAIJ,EAASG,CAAE;AACrB,WAAOD,MAAS,UAAaE,IAAIF,IAAOE,IAAIF;AAAA,EAChD,GAAG,MAAS;AAChB;AAEA,MAAM,UAAU,MAAM,SAAUF,GAAiCC,GAAyB;AACtF,SAAI,KAAK,UAAU,IACRA,IAEJ,KAAK,OAAO,CAACC,GAAWC,MAAY;AACvC,UAAMC,IAAIJ,EAASG,CAAE;AACrB,WAAOD,MAAS,UAAaE,IAAIF,IAAOE,IAAIF;AAAA,EAChD,GAAG,MAAS;AAChB;AAEA,MAAM,UAAU,UAAU,SAAUF,GAAwC;AACxE,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAACK,GAAGC,MAAM;AAChC,UAAMC,IAAKP,EAASK,CAAC,GAAGG,IAAKR,EAASM,CAAC;AACvC,WAAOC,MAAOC,IAAK,IAAID,IAAKC,IAAK,IAAI;AAAA,EACzC,CAAC;AACL;AAEA,MAAM,UAAU,cAAc,SAAUR,GAAwC;AAC5E,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAACK,GAAGC,MAAM;AAChC,UAAMC,IAAKP,EAASK,CAAC,GAAGG,IAAKR,EAASM,CAAC;AACvC,WAAOC,MAAOC,IAAK,IAAID,IAAKC,IAAK,KAAK;AAAA,EAC1C,CAAC;AACL;AAEA,MAAM,UAAU,UAAU,SAAUR,GAA8D;AAC9F,SAAO,KAAK,OAAO,CAACS,GAAQC,MAAS;AACjC,UAAMC,IAAQX,EAASU,CAAI;AAC3B,YAACD,EAAOE,CAAK,IAAIF,EAAOE,CAAK,KAAK,CAAA,GAAI,KAAKD,CAAI,GACxCD;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAGA,MAAM,UAAU,WAAW,SAAUT,GAAyC;AAC1E,MAAI,CAACA;AACD,WAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AAE5B,QAAMY,wBAAW,IAAA;AACjB,SAAO,KAAK,OAAO,SAAUb,GAAS;AAClC,UAAMc,IAAMb,EAASD,CAAO;AAC5B,WAAIa,EAAK,IAAIC,CAAG,IAAU,MAC1BD,EAAK,IAAIC,CAAG,GACL;AAAA,EACX,CAAC;AACL;AAGA,MAAM,UAAU,OAAO,SAAUC,GAAYC,IAAW,GAAGC,IAAW,GAAGC,GAAiB;AACtF,SAAOC,EAAUJ,GAAK,MAAMC,GAAUC,GAAUC,CAAM;AAC1D;AAEA,MAAM,UAAU,SAAS,SAAUE,GAAYJ,IAAW,GAAGC,IAAW,GAAGC,GAAiB;AACxF,SAAOC,EAAU,MAAMC,GAAKJ,GAAUC,GAAUC,CAAM;AAC1D;AAEA,SAASC,EAAUJ,GAAYK,GAAYJ,IAAW,GAAGC,IAAW,GAAGC,GAAiB;AACpF,EAAIF,IAAW,MACXA,IAAW,IAEXC,IAAW,MACXA,IAAW,IAEXC,KAAU,SACVA,IAASH,EAAI,SAASC;AAE1B,MAAIK,IAAIJ;AACR,WAASK,IAAIN,GAAUM,IAAIN,IAAWE,GAAQI;AAC1C,IAAAF,EAAIC,CAAC,IAAIN,EAAIO,CAAC,GACdD;AAEJ,SAAOD;AACX;"}
1
+ {"version":3,"file":"arrayExtensions.es.js","sources":["D:/Src/my/actdim/public/utico/src/arrayExtensions.ts"],"sourcesContent":["\r\ninterface Array<T> {\r\n find(callback: (element: T, index: number, array: Array<T>) => boolean): T; // aka firstOrDefault\r\n unfold<TItem>(callback: (element: T) => Array<TItem>): Array<TItem>; // aka selectMany\r\n max<TItem>(selector: (element: T) => TItem, defaultValue?: any): TItem;\r\n min<TItem>(selector: (element: T) => TItem, defaultValue?: any): TItem;\r\n orderBy<TItem>(selector: (element: T) => TItem): Array<T>;\r\n groupBy(selector: (element: T) => string): { [key: string]: Array<T> };\r\n // groupBy(key: string): { [key: string]: Array<T> };\t\r\n orderByDesc<TItem>(selector: (element: T) => TItem): Array<T>;\r\n distinct(): Array<T>; // unique\r\n distinct<TItem>(selector: (element: T) => TItem): Array<T>; // distinctBy/uniqueBy\r\n // TODO: pushMany aka addRange\r\n /** NOTE: there is no native array copy method (all existing methods rely on spread) */\r\n copy(src: any[], srcIndex?: number, dstIndex?: number, length?: number): this; // copyFrom\r\n copyTo(dst: any[], srcIndex?: number, dstIndex?: number, length?: number): this;\r\n}\r\n\r\n\r\nArray.prototype.unfold = function (callback: (element: any) => any[]): any[] {\r\n return this.reduce((res, element) => {\r\n Array.prototype.push.apply(res, callback(element));\r\n return res;\r\n }, []);\r\n};\r\n\r\nArray.prototype.max = function (selector: (element: any) => any, defaultValue?: any): any {\r\n if (this.length == 0) {\r\n return defaultValue;\r\n }\r\n return this.reduce((best: any, el: any) => {\r\n const v = selector(el);\r\n return best === undefined || v > best ? v : best;\r\n }, undefined);\r\n};\r\n\r\nArray.prototype.min = function (selector: (element: any) => any, defaultValue?: any): any {\r\n if (this.length == 0) {\r\n return defaultValue;\r\n }\r\n return this.reduce((best: any, el: any) => {\r\n const v = selector(el);\r\n return best === undefined || v < best ? v : best;\r\n }, undefined);\r\n};\r\n\r\nArray.prototype.orderBy = function (selector: (element: any) => any): any[] {\r\n return this.slice(0).sort((a, b) => {\r\n const va = selector(a), vb = selector(b);\r\n return va === vb ? 0 : va > vb ? 1 : -1;\r\n });\r\n};\r\n\r\nArray.prototype.orderByDesc = function (selector: (element: any) => any): any[] {\r\n return this.slice(0).sort((a, b) => {\r\n const va = selector(a), vb = selector(b);\r\n return va === vb ? 0 : va > vb ? -1 : 1;\r\n });\r\n};\r\n\r\nArray.prototype.groupBy = function (selector: (element: any) => string): { [key: string]: any[] } {\r\n return this.reduce((result, item) => {\r\n const value = selector(item);\r\n (result[value] = result[value] || []).push(item);\r\n return result;\r\n }, {});\r\n};\r\n\r\n// distinctBy/uniqueBy\r\nArray.prototype.distinct = function (selector?: (element: any) => any): any[] {\r\n if (!selector) {\r\n return [...new Set(this)];\r\n }\r\n const seen = new Set();\r\n return this.filter(function (element) {\r\n const key = selector(element);\r\n if (seen.has(key)) return false;\r\n seen.add(key);\r\n return true;\r\n });\r\n};\r\n\r\n// copyFrom\r\nArray.prototype.copy = function (src: any[], srcIndex = 0, dstIndex = 0, length?: number) {\r\n return copyArray(src, this, srcIndex, dstIndex, length);\r\n}\r\n\r\nArray.prototype.copyTo = function (dst: any[], srcIndex = 0, dstIndex = 0, length?: number) {\r\n return copyArray(this, dst, srcIndex, dstIndex, length);\r\n}\r\n\r\nfunction copyArray(src: any[], dst: any[], srcIndex = 0, dstIndex = 0, length?: number) {\r\n if (srcIndex < 0) {\r\n srcIndex = 0;\r\n }\r\n if (dstIndex < 0) {\r\n dstIndex = 0;\r\n }\r\n if (length == undefined) {\r\n length = src.length - srcIndex;\r\n }\r\n let j = dstIndex;\r\n for (let i = srcIndex; i < srcIndex + length; i++) {\r\n dst[j] = src[i];\r\n j++;\r\n }\r\n return dst;\r\n}"],"names":[],"mappings":";;AAmBA,MAAM,UAAU,SAAS,SAAU,UAA0C;AACzE,SAAO,KAAK,OAAO,CAAC,KAAK,YAAY;AACjC,UAAM,UAAU,KAAK,MAAM,KAAK,SAAS,OAAO,CAAC;AACjD,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAEA,MAAM,UAAU,MAAM,SAAU,UAAiC,cAAyB;AACtF,MAAI,KAAK,UAAU,GAAG;AAClB,WAAO;AAAA,EACX;AACA,SAAO,KAAK,OAAO,CAAC,MAAW,OAAY;AACvC,UAAM,IAAI,SAAS,EAAE;AACrB,WAAO,SAAS,UAAa,IAAI,OAAO,IAAI;AAAA,EAChD,GAAG,MAAS;AAChB;AAEA,MAAM,UAAU,MAAM,SAAU,UAAiC,cAAyB;AACtF,MAAI,KAAK,UAAU,GAAG;AAClB,WAAO;AAAA,EACX;AACA,SAAO,KAAK,OAAO,CAAC,MAAW,OAAY;AACvC,UAAM,IAAI,SAAS,EAAE;AACrB,WAAO,SAAS,UAAa,IAAI,OAAO,IAAI;AAAA,EAChD,GAAG,MAAS;AAChB;AAEA,MAAM,UAAU,UAAU,SAAU,UAAwC;AACxE,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;AAChC,UAAM,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC;AACvC,WAAO,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI;AAAA,EACzC,CAAC;AACL;AAEA,MAAM,UAAU,cAAc,SAAU,UAAwC;AAC5E,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;AAChC,UAAM,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC;AACvC,WAAO,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA,EAC1C,CAAC;AACL;AAEA,MAAM,UAAU,UAAU,SAAU,UAA8D;AAC9F,SAAO,KAAK,OAAO,CAAC,QAAQ,SAAS;AACjC,UAAM,QAAQ,SAAS,IAAI;AAC3B,KAAC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,CAAA,GAAI,KAAK,IAAI;AAC/C,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAGA,MAAM,UAAU,WAAW,SAAU,UAAyC;AAC1E,MAAI,CAAC,UAAU;AACX,WAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AAAA,EAC5B;AACA,QAAM,2BAAW,IAAA;AACjB,SAAO,KAAK,OAAO,SAAU,SAAS;AAClC,UAAM,MAAM,SAAS,OAAO;AAC5B,QAAI,KAAK,IAAI,GAAG,EAAG,QAAO;AAC1B,SAAK,IAAI,GAAG;AACZ,WAAO;AAAA,EACX,CAAC;AACL;AAGA,MAAM,UAAU,OAAO,SAAU,KAAY,WAAW,GAAG,WAAW,GAAG,QAAiB;AACtF,SAAO,UAAU,KAAK,MAAM,UAAU,UAAU,MAAM;AAC1D;AAEA,MAAM,UAAU,SAAS,SAAU,KAAY,WAAW,GAAG,WAAW,GAAG,QAAiB;AACxF,SAAO,UAAU,MAAM,KAAK,UAAU,UAAU,MAAM;AAC1D;AAEA,SAAS,UAAU,KAAY,KAAY,WAAW,GAAG,WAAW,GAAG,QAAiB;AACpF,MAAI,WAAW,GAAG;AACd,eAAW;AAAA,EACf;AACA,MAAI,WAAW,GAAG;AACd,eAAW;AAAA,EACf;AACA,MAAI,UAAU,QAAW;AACrB,aAAS,IAAI,SAAS;AAAA,EAC1B;AACA,MAAI,IAAI;AACR,WAAS,IAAI,UAAU,IAAI,WAAW,QAAQ,KAAK;AAC/C,QAAI,CAAC,IAAI,IAAI,CAAC;AACd;AAAA,EACJ;AACA,SAAO;AACX;AAhBS;"}
@@ -1,48 +1,63 @@
1
- let i = 5e3;
2
- class n {
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ let defaultLockTimeout = 1e3 * 5;
4
+ const _AsyncLock = class _AsyncLock {
3
5
  queue = Promise.resolve();
4
- locked = !1;
5
- async lock(e = i) {
6
- let t = () => {
7
- }, s;
8
- const r = this.queue;
9
- this.queue = this.queue.then(() => new Promise(t)), this.locked = !0;
10
- const c = new Promise((o, l) => {
11
- t = o, e && (s = setTimeout(() => {
12
- l(new Error("Lock timeout"));
13
- }, e));
6
+ locked = false;
7
+ async lock(timeoutMs = defaultLockTimeout) {
8
+ let begin = /* @__PURE__ */ __name(() => {
9
+ }, "begin");
10
+ let timer;
11
+ const previous = this.queue;
12
+ this.queue = this.queue.then(() => new Promise(begin));
13
+ this.locked = true;
14
+ const lockPromise = new Promise((resolve, reject) => {
15
+ begin = resolve;
16
+ if (timeoutMs) {
17
+ timer = setTimeout(() => {
18
+ reject(new Error("Lock timeout"));
19
+ }, timeoutMs);
20
+ }
14
21
  });
15
22
  try {
16
- const o = await c;
17
- return clearTimeout(s), () => {
18
- this.locked = !1, o();
23
+ const unlock = await lockPromise;
24
+ clearTimeout(timer);
25
+ return () => {
26
+ this.locked = false;
27
+ unlock();
19
28
  };
20
- } catch (o) {
21
- throw this.queue = r, this.locked = !1, o;
29
+ } catch (err) {
30
+ this.queue = previous;
31
+ this.locked = false;
32
+ throw err;
22
33
  }
23
34
  }
24
35
  tryLock() {
25
36
  if (this.locked) return null;
26
- this.locked = !0;
27
- let e;
28
- const t = new Promise((s) => {
29
- e = s;
37
+ this.locked = true;
38
+ let resolve;
39
+ const promise = new Promise((res) => {
40
+ resolve = res;
30
41
  });
31
- return this.queue = this.queue.then(() => t), () => {
32
- this.locked = !1, e();
42
+ this.queue = this.queue.then(() => promise);
43
+ return () => {
44
+ this.locked = false;
45
+ resolve();
33
46
  };
34
47
  }
35
- async dispatch(e, t = i) {
36
- const s = await this.lock(t);
48
+ async dispatch(fn, timeoutMs = defaultLockTimeout) {
49
+ const unlock = await this.lock(timeoutMs);
37
50
  try {
38
- return await e();
51
+ return await fn();
39
52
  } finally {
40
- s();
53
+ unlock();
41
54
  }
42
55
  }
43
- }
56
+ };
57
+ __name(_AsyncLock, "AsyncLock");
58
+ let AsyncLock = _AsyncLock;
44
59
  export {
45
- n as AsyncLock,
46
- i as defaultLockTimeout
60
+ AsyncLock,
61
+ defaultLockTimeout
47
62
  };
48
63
  //# sourceMappingURL=asyncLock.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncLock.es.js","sources":["D:/Src/my/actdim/public/utico/src/asyncLock.ts"],"sourcesContent":null,"names":["defaultLockTimeout","AsyncLock","timeoutMs","begin","timer","previous","lockPromise","resolve","reject","unlock","err","promise","res","fn"],"mappings":"AAOO,IAAIA,IAAqB;AAEhC,MAAMC,EAAU;AAAA,EACJ,QAAQ,QAAQ,QAAA;AAAA,EAEhB,SAAS;AAAA,EAEjB,MAAM,KAAKC,IAAYF,GAAyC;AAC5D,QAAIG,IAAsC,MAAM;AAAA,IAAE,GAC9CC;AAEJ,UAAMC,IAAW,KAAK;AACtB,SAAK,QAAQ,KAAK,MAAM,KAAK,MAAM,IAAI,QAAQF,CAAK,CAAC,GACrD,KAAK,SAAS;AAEd,UAAMG,IAAc,IAAI,QAAoB,CAACC,GAASC,MAAW;AAC7D,MAAAL,IAAQI,GAEJL,MACAE,IAAQ,WAAW,MAAM;AACrB,QAAAI,EAAO,IAAI,MAAM,cAAc,CAAC;AAAA,MACpC,GAAGN,CAAS;AAAA,IAEpB,CAAC;AAED,QAAI;AACA,YAAMO,IAAS,MAAMH;AACrB,0BAAaF,CAAK,GACX,MAAM;AACT,aAAK,SAAS,IACdK,EAAA;AAAA,MACJ;AAAA,IACJ,SAASC,GAAK;AACV,iBAAK,QAAQL,GACb,KAAK,SAAS,IACRK;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,UAA+B;AAC3B,QAAI,KAAK,OAAQ,QAAO;AAExB,SAAK,SAAS;AACd,QAAIH;AACJ,UAAMI,IAAU,IAAI,QAAc,CAAAC,MAAO;AAAE,MAAAL,IAAUK;AAAA,IAAK,CAAC;AAC3D,gBAAK,QAAQ,KAAK,MAAM,KAAK,MAAMD,CAAO,GACnC,MAAM;AACT,WAAK,SAAS,IACdJ,EAAA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,SAAYM,GAAiBX,IAAYF,GAAgC;AAC3E,UAAMS,IAAS,MAAM,KAAK,KAAKP,CAAS;AACxC,QAAI;AACA,aAAO,MAAMW,EAAA;AAAA,IACjB,UAAA;AACI,MAAAJ,EAAA;AAAA,IACJ;AAAA,EACJ;AACJ;"}
1
+ {"version":3,"file":"asyncLock.es.js","sources":["D:/Src/my/actdim/public/utico/src/asyncLock.ts"],"sourcesContent":["import { Executor } from './typeCore';\n/**\n * Example:\n * const lock = new AsyncLock();\n * await lock.dispatch(async () => {...});\n */\n\nexport let defaultLockTimeout = 1000 * 5; // 5 seconds\n\nclass AsyncLock {\n private queue = Promise.resolve();\n\n private locked = false;\n\n async lock(timeoutMs = defaultLockTimeout): Promise<() => void> {\n let begin: (unlock: () => void) => void = () => { };\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const previous = this.queue;\n this.queue = this.queue.then(() => new Promise(begin));\n this.locked = true;\n\n const lockPromise = new Promise<() => void>((resolve, reject) => {\n begin = resolve;\n\n if (timeoutMs) {\n timer = setTimeout(() => {\n reject(new Error(\"Lock timeout\"));\n }, timeoutMs);\n }\n });\n\n try {\n const unlock = await lockPromise;\n clearTimeout(timer);\n return () => {\n this.locked = false;\n unlock();\n };\n } catch (err) {\n this.queue = previous;\n this.locked = false;\n throw err;\n }\n }\n\n tryLock(): (() => void) | null {\n if (this.locked) return null;\n\n this.locked = true;\n let resolve!: () => void;\n const promise = new Promise<void>(res => { resolve = res; });\n this.queue = this.queue.then(() => promise);\n return () => {\n this.locked = false;\n resolve();\n };\n }\n\n async dispatch<T>(fn: Executor<T>, timeoutMs = defaultLockTimeout): Promise<T> {\n const unlock = await this.lock(timeoutMs);\n try {\n return await fn();\n } finally {\n unlock();\n }\n }\n}\n\n\nexport {\n AsyncLock\n};\n"],"names":[],"mappings":";;AAOO,IAAI,qBAAqB,MAAO;AAEvC,MAAM,aAAN,MAAM,WAAU;AAAA,EACJ,QAAQ,QAAQ,QAAA;AAAA,EAEhB,SAAS;AAAA,EAEjB,MAAM,KAAK,YAAY,oBAAyC;AAC5D,QAAI,QAAsC,6BAAM;AAAA,IAAE,GAAR;AAC1C,QAAI;AAEJ,UAAM,WAAW,KAAK;AACtB,SAAK,QAAQ,KAAK,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,CAAC;AACrD,SAAK,SAAS;AAEd,UAAM,cAAc,IAAI,QAAoB,CAAC,SAAS,WAAW;AAC7D,cAAQ;AAER,UAAI,WAAW;AACX,gBAAQ,WAAW,MAAM;AACrB,iBAAO,IAAI,MAAM,cAAc,CAAC;AAAA,QACpC,GAAG,SAAS;AAAA,MAChB;AAAA,IACJ,CAAC;AAED,QAAI;AACA,YAAM,SAAS,MAAM;AACrB,mBAAa,KAAK;AAClB,aAAO,MAAM;AACT,aAAK,SAAS;AACd,eAAA;AAAA,MACJ;AAAA,IACJ,SAAS,KAAK;AACV,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,UAA+B;AAC3B,QAAI,KAAK,OAAQ,QAAO;AAExB,SAAK,SAAS;AACd,QAAI;AACJ,UAAM,UAAU,IAAI,QAAc,CAAA,QAAO;AAAE,gBAAU;AAAA,IAAK,CAAC;AAC3D,SAAK,QAAQ,KAAK,MAAM,KAAK,MAAM,OAAO;AAC1C,WAAO,MAAM;AACT,WAAK,SAAS;AACd,cAAA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,SAAY,IAAiB,YAAY,oBAAgC;AAC3E,UAAM,SAAS,MAAM,KAAK,KAAK,SAAS;AACxC,QAAI;AACA,aAAO,MAAM,GAAA;AAAA,IACjB,UAAA;AACI,aAAA;AAAA,IACJ;AAAA,EACJ;AACJ;AA1DgB;AAAhB,IAAM,YAAN;"}
@@ -1,13 +1,17 @@
1
- import { MetadataRecord as e } from "../store/storeContracts.es.js";
2
- class i extends e {
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { MetadataRecord } from "../store/storeContracts.es.js";
4
+ const _CacheMetadataRecord = class _CacheMetadataRecord extends MetadataRecord {
3
5
  accessedAt;
4
6
  // lastAccessed/lastAccessTime
5
7
  slidingExpiration;
6
8
  absoluteExpiration;
7
9
  expiresAt;
8
10
  // expiryTime
9
- }
11
+ };
12
+ __name(_CacheMetadataRecord, "CacheMetadataRecord");
13
+ let CacheMetadataRecord = _CacheMetadataRecord;
10
14
  export {
11
- i as CacheMetadataRecord
15
+ CacheMetadataRecord
12
16
  };
13
17
  //# sourceMappingURL=cacheContracts.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cacheContracts.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/cacheContracts.ts"],"sourcesContent":null,"names":["CacheMetadataRecord","MetadataRecord"],"mappings":";AAGO,MAAMA,UAA4BC,EAAe;AAAA,EACpD;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AACJ;"}
1
+ {"version":3,"file":"cacheContracts.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/cacheContracts.ts"],"sourcesContent":["import { DataRecord, MetadataRecord, StoreItem } from \"@/store/storeContracts\";\r\n\r\n// CacheMetadataEntry\r\nexport class CacheMetadataRecord extends MetadataRecord {\r\n accessedAt?: number; // lastAccessed/lastAccessTime\r\n slidingExpiration?: number;\r\n absoluteExpiration?: number;\r\n expiresAt?: number; // expiryTime\r\n}\r\n\r\nexport interface IPersistentCache<T extends CacheMetadataRecord = CacheMetadataRecord> {\r\n\r\n open(): Promise<void>;\r\n\r\n getKeys(): Promise<string[]>;\r\n\r\n contains(key: string): Promise<boolean>;\r\n\r\n delete(key: string): Promise<void>;\r\n\r\n bulkDelete(keys: string[]): Promise<void>;\r\n\r\n clear(): Promise<void>;\r\n\r\n get<TValue = any>(key: string): Promise<StoreItem<T, TValue>>;\r\n\r\n set<TValue = any>(metadataRecord: T, value: TValue): Promise<string>;\r\n\r\n getOrSet<TValue = any>(metadataRecord: T, factory: (metadataRecord: T) => TValue): Promise<StoreItem<T, TValue>>\r\n\r\n bulkGet<TValue = any>(keys: string[]): Promise<StoreItem<T, TValue>[]>;\r\n\r\n bulkSet<TValue = any>(metadataRecords: T[], dataRecords: DataRecord<TValue>[]): Promise<string[]>;\r\n}"],"names":[],"mappings":";;;AAGO,MAAM,uBAAN,MAAM,6BAA4B,eAAe;AAAA,EACpD;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AACJ;AALwD;AAAjD,IAAM,sBAAN;"}
@@ -1,4 +1,6 @@
1
- class i {
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const _MemoryCache = class _MemoryCache {
2
4
  map;
3
5
  constructor() {
4
6
  this.map = /* @__PURE__ */ new Map();
@@ -9,17 +11,21 @@ class i {
9
11
  getKeys() {
10
12
  return this.keys;
11
13
  }
12
- get(t) {
13
- return this.map.get(t);
14
+ get(key) {
15
+ return this.map.get(key);
14
16
  }
15
- contains(t) {
16
- return this.map.has(t);
17
+ contains(key) {
18
+ return this.map.has(key);
17
19
  }
18
- remove(t) {
19
- this.map.delete(t);
20
+ remove(key) {
21
+ this.map.delete(key);
20
22
  }
21
- set(t, e) {
22
- e instanceof Function ? this.map.set(t, e()) : this.map.set(t, e);
23
+ set(key, valueOrValueFactory) {
24
+ if (valueOrValueFactory instanceof Function) {
25
+ this.map.set(key, valueOrValueFactory());
26
+ } else {
27
+ this.map.set(key, valueOrValueFactory);
28
+ }
23
29
  }
24
30
  get values() {
25
31
  return this.getValues();
@@ -27,8 +33,15 @@ class i {
27
33
  getValues() {
28
34
  return this.map.values();
29
35
  }
30
- getOrSet(t, e) {
31
- return this.contains(t) || (e instanceof Function ? this.map.set(t, e()) : this.map.set(t, e)), this.get(t);
36
+ getOrSet(key, valueOrValueFactory) {
37
+ if (!this.contains(key)) {
38
+ if (valueOrValueFactory instanceof Function) {
39
+ this.map.set(key, valueOrValueFactory());
40
+ } else {
41
+ this.map.set(key, valueOrValueFactory);
42
+ }
43
+ }
44
+ return this.get(key);
32
45
  }
33
46
  clear() {
34
47
  this.map.clear();
@@ -42,8 +55,10 @@ class i {
42
55
  get entries() {
43
56
  return this.map.entries();
44
57
  }
45
- }
58
+ };
59
+ __name(_MemoryCache, "MemoryCache");
60
+ let MemoryCache = _MemoryCache;
46
61
  export {
47
- i as MemoryCache
62
+ MemoryCache
48
63
  };
49
64
  //# sourceMappingURL=memoryCache.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoryCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/memoryCache.ts"],"sourcesContent":null,"names":["MemoryCache","key","valueOrValueFactory"],"mappings":"AAeO,MAAMA,EAA8D;AAAA,EAC/D;AAAA,EAER,cAAc;AACV,SAAK,0BAAU,IAAA;AAAA,EACnB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI,KAAA;AAAA,EACpB;AAAA,EAEA,UAAU;AACN,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAIC,GAAW;AACX,WAAO,KAAK,IAAI,IAAIA,CAAG;AAAA,EAC3B;AAAA,EAEA,SAASA,GAAW;AAChB,WAAO,KAAK,IAAI,IAAIA,CAAG;AAAA,EAC3B;AAAA,EAEA,OAAOA,GAAW;AACd,SAAK,IAAI,OAAOA,CAAG;AAAA,EACvB;AAAA,EAEA,IAAIA,GAAWC,GAA8C;AACzD,IAAIA,aAA+B,WAC/B,KAAK,IAAI,IAAID,GAAKC,EAAA,CAAqB,IAEvC,KAAK,IAAI,IAAID,GAAKC,CAAmB;AAAA,EAE7C;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,UAAA;AAAA,EAChB;AAAA,EAEA,YAAY;AACR,WAAO,KAAK,IAAI,OAAA;AAAA,EACpB;AAAA,EAEA,SAASD,GAAWC,GAA8C;AAC9D,WAAK,KAAK,SAASD,CAAG,MAEdC,aAA+B,WAE/B,KAAK,IAAI,IAAID,GAAKC,EAAA,CAAqB,IAEvC,KAAK,IAAI,IAAID,GAAKC,CAAmB,IAGtC,KAAK,IAAID,CAAG;AAAA,EACvB;AAAA,EAEA,QAAQ;AACJ,SAAK,IAAI,MAAA;AAAA,EACb;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EAEA,aAAa;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,IAAI,QAAA;AAAA,EACpB;AACJ;"}
1
+ {"version":3,"file":"memoryCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/memoryCache.ts"],"sourcesContent":["export type IMemoryCache<TKey = any, TValue = any> = {\r\n get keys(): Iterable<TKey>;\r\n getKeys: () => Iterable<TKey>;\r\n get: (key: TKey) => TValue;\r\n contains: (key: TKey) => boolean;\r\n remove: (key: TKey) => void;\r\n set: (key: TKey, valueOrValueFactory: TValue | (() => TValue)) => void;\r\n get values(): Iterable<TValue>;\r\n getValues: () => Iterable<TValue>;\r\n getOrSet: (key: TKey, valueOrValueFactory: TValue | (() => TValue)) => TValue;\r\n clear: () => void;\r\n get entries(): Iterable<[TKey, TValue]>;\r\n getEntries: () => Iterable<[TKey, TValue]>;\r\n};\r\n\r\nexport class MemoryCache<TKey = any, TValue = any> implements IMemoryCache {\r\n private map: Map<TKey, TValue>;\r\n\r\n constructor() {\r\n this.map = new Map<TKey, TValue>();\r\n }\r\n\r\n get keys() {\r\n return this.map.keys();\r\n }\r\n\r\n getKeys() {\r\n return this.keys;\r\n }\r\n\r\n get(key: TKey) {\r\n return this.map.get(key);\r\n }\r\n\r\n contains(key: TKey) {\r\n return this.map.has(key);\r\n }\r\n\r\n remove(key: TKey) {\r\n this.map.delete(key);\r\n }\r\n\r\n set(key: TKey, valueOrValueFactory: TValue | (() => TValue)) {\r\n if (valueOrValueFactory instanceof Function) {\r\n this.map.set(key, valueOrValueFactory());\r\n } else {\r\n this.map.set(key, valueOrValueFactory);\r\n }\r\n }\r\n\r\n get values() {\r\n return this.getValues();\r\n }\r\n\r\n getValues() {\r\n return this.map.values();\r\n }\r\n\r\n getOrSet(key: TKey, valueOrValueFactory: TValue | (() => TValue)) {\r\n if (!this.contains(key)) {\r\n // this.set(key, valueOrValueFactory);\r\n if (valueOrValueFactory instanceof Function) {\r\n // typeof valueOrValueFactory === \"function\"\r\n this.map.set(key, valueOrValueFactory());\r\n } else {\r\n this.map.set(key, valueOrValueFactory);\r\n }\r\n }\r\n return this.get(key);\r\n }\r\n\r\n clear() {\r\n this.map.clear();\r\n }\r\n\r\n get size() {\r\n return this.map.size;\r\n }\r\n\r\n getEntries() {\r\n return this.entries;\r\n }\r\n\r\n get entries() {\r\n return this.map.entries();\r\n }\r\n}"],"names":[],"mappings":";;AAeO,MAAM,eAAN,MAAM,aAA8D;AAAA,EAC/D;AAAA,EAER,cAAc;AACV,SAAK,0BAAU,IAAA;AAAA,EACnB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI,KAAA;AAAA,EACpB;AAAA,EAEA,UAAU;AACN,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,KAAW;AACX,WAAO,KAAK,IAAI,IAAI,GAAG;AAAA,EAC3B;AAAA,EAEA,SAAS,KAAW;AAChB,WAAO,KAAK,IAAI,IAAI,GAAG;AAAA,EAC3B;AAAA,EAEA,OAAO,KAAW;AACd,SAAK,IAAI,OAAO,GAAG;AAAA,EACvB;AAAA,EAEA,IAAI,KAAW,qBAA8C;AACzD,QAAI,+BAA+B,UAAU;AACzC,WAAK,IAAI,IAAI,KAAK,oBAAA,CAAqB;AAAA,IAC3C,OAAO;AACH,WAAK,IAAI,IAAI,KAAK,mBAAmB;AAAA,IACzC;AAAA,EACJ;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,UAAA;AAAA,EAChB;AAAA,EAEA,YAAY;AACR,WAAO,KAAK,IAAI,OAAA;AAAA,EACpB;AAAA,EAEA,SAAS,KAAW,qBAA8C;AAC9D,QAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AAErB,UAAI,+BAA+B,UAAU;AAEzC,aAAK,IAAI,IAAI,KAAK,oBAAA,CAAqB;AAAA,MAC3C,OAAO;AACH,aAAK,IAAI,IAAI,KAAK,mBAAmB;AAAA,MACzC;AAAA,IACJ;AACA,WAAO,KAAK,IAAI,GAAG;AAAA,EACvB;AAAA,EAEA,QAAQ;AACJ,SAAK,IAAI,MAAA;AAAA,EACb;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EAEA,aAAa;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,IAAI,QAAA;AAAA,EACpB;AACJ;AAvE2E;AAApE,IAAM,cAAN;"}