@actdim/utico 1.1.2 → 1.1.3

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 (59) hide show
  1. package/README.md +832 -5
  2. package/dist/array.es.js.map +1 -1
  3. package/dist/arrayExtensions.es.js.map +1 -1
  4. package/dist/asyncMutex.d.ts +1 -1
  5. package/dist/asyncMutex.d.ts.map +1 -1
  6. package/dist/asyncMutex.es.js +17 -17
  7. package/dist/asyncMutex.es.js.map +1 -1
  8. package/dist/cache/cacheContracts.es.js.map +1 -1
  9. package/dist/cache/memoryCache.es.js.map +1 -1
  10. package/dist/cache/persistentCache.d.ts.map +1 -1
  11. package/dist/cache/persistentCache.es.js +20 -18
  12. package/dist/cache/persistentCache.es.js.map +1 -1
  13. package/dist/dataFormats.es.js.map +1 -1
  14. package/dist/dateTimeDataFormat.es.js.map +1 -1
  15. package/dist/decorators.d.ts +2 -0
  16. package/dist/decorators.d.ts.map +1 -0
  17. package/dist/decorators.es.js +20 -0
  18. package/dist/decorators.es.js.map +1 -0
  19. package/dist/gfx/canvasUtils.es.js.map +1 -1
  20. package/dist/gfx/color.es.js.map +1 -1
  21. package/dist/i18n/cultures.es.js.map +1 -1
  22. package/dist/i18n/enUsCulture.es.js.map +1 -1
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/math.es.js.map +1 -1
  25. package/dist/metadata.d.ts +3 -3
  26. package/dist/metadata.d.ts.map +1 -1
  27. package/dist/metadata.es.js +8 -8
  28. package/dist/metadata.es.js.map +1 -1
  29. package/dist/patterns.es.js.map +1 -1
  30. package/dist/store/dataStore.d.ts +17 -43
  31. package/dist/store/dataStore.d.ts.map +1 -1
  32. package/dist/store/dataStore.es.js +98 -92
  33. package/dist/store/dataStore.es.js.map +1 -1
  34. package/dist/store/persistentStore.d.ts +5 -4
  35. package/dist/store/persistentStore.d.ts.map +1 -1
  36. package/dist/store/persistentStore.es.js +12 -11
  37. package/dist/store/persistentStore.es.js.map +1 -1
  38. package/dist/store/storeContracts.d.ts +37 -9
  39. package/dist/store/storeContracts.d.ts.map +1 -1
  40. package/dist/store/storeContracts.es.js +2 -2
  41. package/dist/store/storeContracts.es.js.map +1 -1
  42. package/dist/store/storeDb.es.js +11 -11
  43. package/dist/store/storeDb.es.js.map +1 -1
  44. package/dist/stringCore.d.ts +1 -1
  45. package/dist/stringCore.d.ts.map +1 -1
  46. package/dist/stringCore.es.js +5 -5
  47. package/dist/stringCore.es.js.map +1 -1
  48. package/dist/structEvent.d.ts +4 -3
  49. package/dist/structEvent.d.ts.map +1 -1
  50. package/dist/structEvent.es.js +16 -9
  51. package/dist/structEvent.es.js.map +1 -1
  52. package/dist/typeCore.es.js.map +1 -1
  53. package/dist/typeUtils.d.ts +7 -6
  54. package/dist/typeUtils.d.ts.map +1 -1
  55. package/dist/typeUtils.es.js +38 -34
  56. package/dist/typeUtils.es.js.map +1 -1
  57. package/dist/utils.es.js.map +1 -1
  58. package/dist/watchable.es.js.map +1 -1
  59. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"array.es.js","sources":["D:/Src/my/actdim/public/utico/src/array.ts"],"sourcesContent":["export function copyArray(src: any[], dst: any[], srcIndex = 0, dstIndex = 0, length?: number) { \r\n return dst.copy(src, srcIndex, dstIndex, length);\r\n}"],"names":["copyArray","src","dst","srcIndex","dstIndex","length"],"mappings":"AAAO,SAASA,EAAUC,GAAYC,GAAYC,IAAW,GAAGC,IAAW,GAAGC,GAAiB;AAC3F,SAAOH,EAAI,KAAKD,GAAKE,GAAUC,GAAUC,CAAM;AACnD;"}
1
+ {"version":3,"file":"array.es.js","sources":["D:/Src/my/actdim/public/utico/src/array.ts"],"sourcesContent":null,"names":["copyArray","src","dst","srcIndex","dstIndex","length"],"mappings":"AAAO,SAASA,EAAUC,GAAYC,GAAYC,IAAW,GAAGC,IAAW,GAAGC,GAAiB;AAC3F,SAAOH,EAAI,KAAKD,GAAKE,GAAUC,GAAUC,CAAM;AACnD;"}
@@ -1 +1 @@
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// Comparers\r\nclass Sorters {\r\n static asc(a: any, b: any) {\r\n // comparison\r\n return (a === b) ? 0\r\n : (a > b) ? 1\r\n : -1;\r\n // if (a < b) {\r\n // return -1;\r\n // }\r\n // if (a > b) {\r\n // return 1;\r\n // }\r\n // // a must be equal to b\r\n // return 0;\r\n // localeCompare?\r\n // numeric: a - b\r\n }\r\n\r\n static desc(a: any, b: any) {\r\n return -Sorters.asc(a, b);\r\n // return Sorters.asc(b, a);\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.map(selector).sort(Sorters.desc)[0];\r\n\r\n // return this.reduce((x, el) => {\r\n // let order = el.Order();\r\n // return x == undefined ? order : (order > x ? order : o);\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.map(selector).sort(Sorters.asc)[0];\r\n};\r\n\r\nArray.prototype.orderBy = function (selector: (element: any) => any): any[] {\r\n return this.slice(0).sort((a, b) => Sorters.asc(selector(a), selector(b)));\r\n};\r\n\r\nArray.prototype.orderByDesc = function (selector: (element: any) => any): any[] {\r\n return this.slice(0).sort((a, b) => Sorters.desc(selector(a), selector(b)));\r\n};\r\n\r\n// Array.prototype.groupBy = function (key: string): { [key: string]: any[] } {\r\n// \treturn this.reduce((result, item) => {\r\n// \t\tconst value = item[key].toString();\r\n// \t\t(result[item[key]] = result[item[key]] || []).push(item);\r\n// \t\treturn result;\r\n// \t}, {});\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); //.toString()\r\n (result[value] = result[value] || []).push(item);\r\n return result;\r\n }, {});\r\n};\r\n\r\nclass Filters {\r\n static notNull(element: any): boolean {\r\n return element != null;\r\n }\r\n\r\n static notUndefined(element: any): boolean { // notMissing\r\n return element != undefined;\r\n }\r\n\r\n static notEmpty(element: any): boolean {\r\n return element !== '';\r\n }\r\n\r\n // unique\r\n static distinct(element, index, self) {\r\n return self.indexOf(element) === index;\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 this.filter(Filters.distinct);\r\n // return this.sort().filter(function (element, index, self) {\r\n // return !index || element != self[index - 1];\r\n // });\r\n }\r\n\r\n // let keys = {}; // elements/items\r\n // return this.filter(function (element) {\r\n // const key = selector(element);\r\n // return keys.hasOwnProperty(key) ? false : (keys[key] = true);\r\n // });\r\n\r\n let keys = []; // elements/items\r\n return this.filter(function (element) {\r\n const key = selector(element);\r\n return keys.indexOf(key) >= 0 ? false : keys.push(key);\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 == undefined || srcIndex < 0) {\r\n srcIndex = 0;\r\n }\r\n if (dstIndex == undefined || dstIndex < 0) {\r\n dstIndex = 0;\r\n }\r\n if (length == undefined) {\r\n length = Math.min(src.length, src.length - srcIndex);\r\n }\r\n let j = dstIndex;\r\n for (let i = srcIndex; i < length; i++) {\r\n dst[j] = src[i];\r\n j++;\r\n }\r\n return dst;\r\n}"],"names":["Sorters","a","b","callback","res","element","selector","defaultValue","result","item","value","Filters","index","self","keys","key","src","srcIndex","dstIndex","length","copyArray","dst","j","i"],"mappings":"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"}
1
+ {"version":3,"file":"arrayExtensions.es.js","sources":["D:/Src/my/actdim/public/utico/src/arrayExtensions.ts"],"sourcesContent":null,"names":["Sorters","a","b","callback","res","element","selector","defaultValue","result","item","value","Filters","index","self","keys","key","src","srcIndex","dstIndex","length","copyArray","dst","j","i"],"mappings":"AAmBA,MAAMA,EAAQ;AAAA,EACV,OAAO,IAAIC,GAAQC,GAAQ;AAEvB,WAAQD,MAAMC,IAAK,IACZD,IAAIC,IAAK,IACN;AAAA,EAWd;AAAA,EAEA,OAAO,KAAKD,GAAQC,GAAQ;AACxB,WAAO,CAACF,EAAQ,IAAIC,GAAGC,CAAC;AAAA,EAE5B;AACJ;AAEA,MAAM,UAAU,SAAS,SAAUC,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,IAAID,CAAQ,EAAE,KAAKN,EAAQ,IAAI,EAAE,CAAC;AAMlD;AAEA,MAAM,UAAU,MAAM,SAAUM,GAAiCC,GAAyB;AACtF,SAAI,KAAK,UAAU,IACRA,IAEJ,KAAK,IAAID,CAAQ,EAAE,KAAKN,EAAQ,GAAG,EAAE,CAAC;AACjD;AAEA,MAAM,UAAU,UAAU,SAAUM,GAAwC;AACxE,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAACL,GAAGC,MAAMF,EAAQ,IAAIM,EAASL,CAAC,GAAGK,EAASJ,CAAC,CAAC,CAAC;AAC7E;AAEA,MAAM,UAAU,cAAc,SAAUI,GAAwC;AAC5E,SAAO,KAAK,MAAM,CAAC,EAAE,KAAK,CAACL,GAAGC,MAAMF,EAAQ,KAAKM,EAASL,CAAC,GAAGK,EAASJ,CAAC,CAAC,CAAC;AAC9E;AAUA,MAAM,UAAU,UAAU,SAAUI,GAA8D;AAC9F,SAAO,KAAK,OAAO,CAACE,GAAQC,MAAS;AACjC,UAAMC,IAAQJ,EAASG,CAAI;AAC3B,YAACD,EAAOE,CAAK,IAAIF,EAAOE,CAAK,KAAK,CAAA,GAAI,KAAKD,CAAI,GACxCD;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAEA,MAAMG,EAAQ;AAAA,EACV,OAAO,QAAQN,GAAuB;AAClC,WAAOA,KAAW;AAAA,EACtB;AAAA,EAEA,OAAO,aAAaA,GAAuB;AACvC,WAAOA,KAAW;AAAA,EACtB;AAAA,EAEA,OAAO,SAASA,GAAuB;AACnC,WAAOA,MAAY;AAAA,EACvB;AAAA;AAAA,EAGA,OAAO,SAASA,GAASO,GAAOC,GAAM;AAClC,WAAOA,EAAK,QAAQR,CAAO,MAAMO;AAAA,EACrC;AACJ;AAGA,MAAM,UAAU,WAAW,SAAUN,GAAyC;AAC1E,MAAI,CAACA;AACD,WAAO,KAAK,OAAOK,EAAQ,QAAQ;AAYvC,MAAIG,IAAO,CAAA;AACX,SAAO,KAAK,OAAO,SAAUT,GAAS;AAClC,UAAMU,IAAMT,EAASD,CAAO;AAC5B,WAAOS,EAAK,QAAQC,CAAG,KAAK,IAAI,KAAQD,EAAK,KAAKC,CAAG;AAAA,EACzD,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,GAAIF,KAAY,QAAaA,IAAW,OACpCA,IAAW,KAEXC,KAAY,QAAaA,IAAW,OACpCA,IAAW,IAEXC,KAAU,SACVA,IAAS,KAAK,IAAIH,EAAI,QAAQA,EAAI,SAASC,CAAQ;AAEvD,MAAIK,IAAIJ;AACR,WAASK,IAAIN,GAAUM,IAAIJ,GAAQI;AAC/B,IAAAF,EAAIC,CAAC,IAAIN,EAAIO,CAAC,GACdD;AAEJ,SAAOD;AACX;"}
@@ -3,7 +3,7 @@ declare class AsyncMutex {
3
3
  private mutex;
4
4
  private locked;
5
5
  lock(timeoutMs?: number): Promise<() => void>;
6
- tryLock(): () => void | null;
6
+ tryLock(): (() => void) | null;
7
7
  dispatch<T>(fn: Executor<T>, timeoutMs?: number): Promise<T>;
8
8
  }
9
9
  export { AsyncMutex };
@@ -1 +1 @@
1
- {"version":3,"file":"asyncMutex.d.ts","sourceRoot":"","sources":["../src/asyncMutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,cAAM,UAAU;IACZ,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,MAAM,CAAS;IAEjB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgCnD,OAAO,IAAI,MAAM,IAAI,GAAG,IAAI;IAiBtB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAQrE;AAGD,OAAO,EACH,UAAU,EACb,CAAC"}
1
+ {"version":3,"file":"asyncMutex.d.ts","sourceRoot":"","sources":["../src/asyncMutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,cAAM,UAAU;IACZ,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,MAAM,CAAS;IAEjB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgCnD,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;IAaxB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAQrE;AAGD,OAAO,EACH,UAAU,EACb,CAAC"}
@@ -4,40 +4,40 @@ class n {
4
4
  locked = !1;
5
5
  async lock(e) {
6
6
  let t = () => {
7
- }, o;
7
+ }, s;
8
8
  const i = this.mutex;
9
9
  this.mutex = this.mutex.then(() => new Promise(t)), this.locked = !0;
10
- const r = new Promise((s, l) => {
11
- t = s, e && (o = setTimeout(() => {
10
+ const r = new Promise((o, l) => {
11
+ t = o, e && (s = setTimeout(() => {
12
12
  l(new Error("Mutex lock timeout"));
13
13
  }, e));
14
14
  });
15
15
  try {
16
- const s = await r;
17
- return clearTimeout(o), () => {
18
- this.locked = !1, s();
16
+ const o = await r;
17
+ return clearTimeout(s), () => {
18
+ this.locked = !1, o();
19
19
  };
20
- } catch (s) {
21
- throw this.mutex = i, this.locked = !1, s;
20
+ } catch (o) {
21
+ throw this.mutex = i, this.locked = !1, o;
22
22
  }
23
23
  }
24
24
  tryLock() {
25
25
  if (this.locked) return null;
26
+ this.locked = !0;
26
27
  let e;
27
- return this.locked = !0, this.mutex = this.mutex.then(
28
- () => new Promise((t) => {
29
- e = () => {
30
- this.locked = !1, t();
31
- };
32
- })
33
- ), e;
28
+ const t = new Promise((s) => {
29
+ e = s;
30
+ });
31
+ return this.mutex = this.mutex.then(() => t), () => {
32
+ this.locked = !1, e();
33
+ };
34
34
  }
35
35
  async dispatch(e, t) {
36
- const o = await this.lock(t);
36
+ const s = await this.lock(t);
37
37
  try {
38
38
  return await e();
39
39
  } finally {
40
- o();
40
+ s();
41
41
  }
42
42
  }
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asyncMutex.es.js","sources":["D:/Src/my/actdim/public/utico/src/asyncMutex.ts"],"sourcesContent":["import { Executor } from './typeCore';\r\n/**\r\n * Example:\r\n * const mutex = new Mutex();\r\n * await mutex.dispatch(async () => {...});\r\n */\r\n// type Executor<T> = () => Promise<T> | T;\r\n\r\nclass AsyncMutex { // or Mutex\r\n private mutex = Promise.resolve();\r\n\r\n private locked = false;\r\n\r\n async lock(timeoutMs?: number): Promise<() => void> {\r\n let begin: (unlock: () => void) => void = () => { };\r\n let timer: ReturnType<typeof setTimeout> | undefined;\r\n\r\n const previous = this.mutex;\r\n this.mutex = this.mutex.then(() => new Promise(begin));\r\n this.locked = true;\r\n\r\n const lockPromise = new Promise<() => void>((resolve, reject) => {\r\n begin = resolve;\r\n\r\n if (timeoutMs) {\r\n timer = setTimeout(() => {\r\n reject(new Error(\"Mutex lock timeout\"));\r\n }, timeoutMs);\r\n }\r\n });\r\n\r\n try {\r\n const unlock = await lockPromise;\r\n clearTimeout(timer);\r\n return () => {\r\n this.locked = false;\r\n unlock();\r\n };\r\n } catch (err) {\r\n this.mutex = previous;\r\n this.locked = false;\r\n throw err;\r\n }\r\n }\r\n\r\n tryLock(): () => void | null {\r\n if (this.locked) return null;\r\n\r\n let unlock!: () => void;\r\n this.locked = true;\r\n this.mutex = this.mutex.then(\r\n () =>\r\n new Promise<void>(res => {\r\n unlock = () => {\r\n this.locked = false;\r\n res();\r\n };\r\n })\r\n );\r\n return unlock;\r\n }\r\n\r\n async dispatch<T>(fn: Executor<T>, timeoutMs?: number): Promise<T> {\r\n const unlock = await this.lock(timeoutMs);\r\n try {\r\n return await fn();\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n}\r\n\r\n\r\nexport {\r\n AsyncMutex\r\n};"],"names":["AsyncMutex","timeoutMs","begin","timer","previous","lockPromise","resolve","reject","unlock","err","res","fn"],"mappings":"AAQA,MAAMA,EAAW;AAAA;AAAA,EACL,QAAQ,QAAQ,QAAA;AAAA,EAEhB,SAAS;AAAA,EAEjB,MAAM,KAAKC,GAAyC;AAChD,QAAIC,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,oBAAoB,CAAC;AAAA,MAC1C,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,UAA6B;AACzB,QAAI,KAAK,OAAQ,QAAO;AAExB,QAAID;AACJ,gBAAK,SAAS,IACd,KAAK,QAAQ,KAAK,MAAM;AAAA,MACpB,MACI,IAAI,QAAc,CAAAE,MAAO;AACrB,QAAAF,IAAS,MAAM;AACX,eAAK,SAAS,IACdE,EAAA;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IAAA,GAEFF;AAAA,EACX;AAAA,EAEA,MAAM,SAAYG,GAAiBV,GAAgC;AAC/D,UAAMO,IAAS,MAAM,KAAK,KAAKP,CAAS;AACxC,QAAI;AACA,aAAO,MAAMU,EAAA;AAAA,IACjB,UAAA;AACI,MAAAH,EAAA;AAAA,IACJ;AAAA,EACJ;AACJ;"}
1
+ {"version":3,"file":"asyncMutex.es.js","sources":["D:/Src/my/actdim/public/utico/src/asyncMutex.ts"],"sourcesContent":null,"names":["AsyncMutex","timeoutMs","begin","timer","previous","lockPromise","resolve","reject","unlock","err","promise","res","fn"],"mappings":"AAQA,MAAMA,EAAW;AAAA;AAAA,EACL,QAAQ,QAAQ,QAAA;AAAA,EAEhB,SAAS;AAAA,EAEjB,MAAM,KAAKC,GAAyC;AAChD,QAAIC,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,oBAAoB,CAAC;AAAA,MAC1C,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,GAAgC;AAC/D,UAAMO,IAAS,MAAM,KAAK,KAAKP,CAAS;AACxC,QAAI;AACA,aAAO,MAAMW,EAAA;AAAA,IACjB,UAAA;AACI,MAAAJ,EAAA;AAAA,IACJ;AAAA,EACJ;AACJ;"}
@@ -1 +1 @@
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":["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":null,"names":["CacheMetadataRecord","MetadataRecord"],"mappings":";AAGO,MAAMA,UAA4BC,EAAe;AAAA,EACpD;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AACJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"memoryCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/memoryCache.ts"],"sourcesContent":["export interface IMemoryCache<TKey = any, TValue = any> {\r\n get keys(): Iterable<TKey>;\r\n\tgetKeys: () => Iterable<TKey>;\r\n\r\n get: (key: TKey) => TValue;\r\n\r\n contains: (key: TKey) => boolean;\r\n\r\n remove: (key: TKey) => void;\r\n\r\n set: (key: TKey, valueOrValueFactory: TValue | (() => TValue)) => void;\r\n\r\n\tget values(): Iterable<TValue>;\r\n getValues: () => Iterable<TValue>;\r\n\r\n getOrSet: (key: TKey, valueOrValueFactory: TValue | (() => TValue)) => TValue;\r\n\r\n clear: () => void;\r\n\r\n\tget entries(): Iterable<[TKey, TValue]>;\r\n getEntries: () => Iterable<[TKey, TValue]>;\r\n}\r\n\r\n// TODO: remove class, create factory method\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.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\t\t\tif (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}\r\n\r\nexport const globalMemoryCache = new MemoryCache();"],"names":["MemoryCache","key","valueOrValueFactory","globalMemoryCache"],"mappings":"AAwBO,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;AAAA,EAChB;AAAA,EAEA,SAASD,GAAWC,GAA8C;AAC9D,WAAK,KAAK,SAASD,CAAG,MAEvBC,aAA+B,WAEtB,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;AAEO,MAAME,IAAoB,IAAIH,EAAA;"}
1
+ {"version":3,"file":"memoryCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/memoryCache.ts"],"sourcesContent":null,"names":["MemoryCache","key","valueOrValueFactory","globalMemoryCache"],"mappings":"AAwBO,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;AAAA,EAChB;AAAA,EAEA,SAASD,GAAWC,GAA8C;AAC9D,WAAK,KAAK,SAASD,CAAG,MAEvBC,aAA+B,WAEtB,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;AAEO,MAAME,IAAoB,IAAIH,EAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"persistentCache.d.ts","sourceRoot":"","sources":["../../src/cache/persistentCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAY,cAAc,EAAE,SAAS,EAAmB,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,KAAK,QAAQ,GAAG,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG;IACvB,kBAAkB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAC9B,KAAK,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAOF,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,0BAA0B,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAElD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBAK9C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAezD,CAAC,MAAM,CAAC,OAAO,CAAC;IAWhB,IAAI;IAIJ,OAAO,CAAC,IAAI;IAMZ,OAAO;IAIP,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,MAAM;IAKlB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAKzB,KAAK;IAIL,OAAO,CAAC,aAAa;IAqBrB,kBAAkB;IAiBZ,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM;IAwB/B,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAa/E,OAAO,CAAC,gBAAgB;IAwBxB,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAqB3F,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,KAAK,MAAM,EAAE,OAAO,EAAE,YAAY;IAe3I,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;IAqBpC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,YAAY;CA4B7J"}
1
+ {"version":3,"file":"persistentCache.d.ts","sourceRoot":"","sources":["../../src/cache/persistentCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAY,cAAc,EAAE,SAAS,EAAmB,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,KAAK,QAAQ,GAAG,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG;IACvB,kBAAkB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAC9B,KAAK,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAuBF,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,0BAA0B,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE5C,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAElD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBAK9C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAezD,CAAC,MAAM,CAAC,OAAO,CAAC;IAWhB,IAAI;IAIJ,OAAO,CAAC,IAAI;IAMZ,OAAO;IAIP,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,MAAM;IAKlB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAKzB,KAAK;IAIL,OAAO,CAAC,aAAa;IAqBrB,kBAAkB;IAiBZ,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM;IAyB/B,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAa/E,OAAO,CAAC,gBAAgB;IAwBlB,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAqB3F,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,KAAK,MAAM,EAAE,OAAO,EAAE,YAAY;IAejJ,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;IAwB9B,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,YAAY;CA4BnK"}
@@ -1,11 +1,11 @@
1
- import { keyOf as l } from "../typeUtils.es.js";
2
- import { StructEventTarget as u, StructEvent as d } from "../structEvent.es.js";
3
- import { v4 as r } from "uuid";
1
+ import { keyOf as u, typed as d } from "../typeUtils.es.js";
2
+ import { StructEventTarget as h, StructEvent as b } from "../structEvent.es.js";
3
+ import { v4 as o } from "uuid";
4
4
  import { StoreDb as n } from "../store/storeDb.es.js";
5
- const b = {
5
+ const p = {
6
6
  cleanupTimeout: 1e3
7
- }, h = ["&key", "createdAt", "updatedAt", "tags", "accessedAt", "expiresAt"];
8
- class o extends u {
7
+ }, c = ["&key", "createdAt", "updatedAt", "tags", "accessedAt", "expiresAt"], w = d(b);
8
+ class l extends h {
9
9
  _db;
10
10
  _isDisposed;
11
11
  _jobTimerId;
@@ -17,13 +17,13 @@ class o extends u {
17
17
  return n.exists(t);
18
18
  }
19
19
  static open(t, e) {
20
- return n.open(t, () => new o(t, e));
20
+ return n.open(t, () => new l(t, e));
21
21
  }
22
22
  // cleanupTimeout - serviceJobTimeout
23
23
  constructor(t, e) {
24
24
  if (super(), !t)
25
25
  throw new Error("Name cannot be empty.");
26
- this._options = { ...e, ...b }, this._db = new n(t, h), this._jobTimerId = null, this.scheduleServiceJob();
26
+ this._options = { ...e, ...p }, this._db = new n(t, c), this._jobTimerId = null, this.scheduleServiceJob();
27
27
  }
28
28
  [Symbol.dispose]() {
29
29
  this._isDisposed || this._jobTimerId && (window.clearTimeout(this._jobTimerId), this._jobTimerId = null), this._db?.[Symbol.dispose](), this._db = null;
@@ -77,11 +77,11 @@ class o extends u {
77
77
  t || (t = Date.now());
78
78
  let i;
79
79
  if (await this.exec(async () => {
80
- i = await this._db.metadata.where(l("expiresAt")).below(t).toArray();
80
+ i = await this._db.metadata.where(u("expiresAt")).below(t).toArray();
81
81
  const s = i.map((a) => a.key);
82
82
  await this.bulkDelete(s);
83
83
  }, "rw"), i?.length) {
84
- const s = new d("evict", {
84
+ const s = new w("evict", {
85
85
  detail: {
86
86
  records: i
87
87
  },
@@ -108,10 +108,10 @@ class o extends u {
108
108
  t.createdAt = i, t.updatedAt = i, t.accessedAt = i, t.slidingExpiration = e.slidingExpiration, typeof e.absoluteExpiration == "number" ? t.absoluteExpiration = e.absoluteExpiration : e.absoluteExpiration instanceof Date && (t.absoluteExpiration = e.absoluteExpiration.getTime()), typeof e.ttl == "number" && (t.absoluteExpiration = i + e.ttl), t.absoluteExpiration == null && (t.absoluteExpiration = 1 / 0), this.onGetMetadata(t);
109
109
  }
110
110
  // upsert
111
- set(t, e, i) {
111
+ async set(t, e, i) {
112
112
  if (e === void 0)
113
113
  throw new Error('Invalid parameter: "value".');
114
- return t.key || (t.key = r()), this.onCreateMetadata(t, i), this.exec(async () => {
114
+ return t.key || (t.key = o()), this.onCreateMetadata(t, i), this.exec(async () => {
115
115
  const s = await this._db.metadata.put(t);
116
116
  return await this._db.data.put({
117
117
  key: t.key,
@@ -120,7 +120,7 @@ class o extends u {
120
120
  }, "rw");
121
121
  }
122
122
  // getOrAdd
123
- getOrSet(t, e, i) {
123
+ async getOrSet(t, e, i) {
124
124
  if (!t.key)
125
125
  throw new Error('Key cannot be empty. Parameter: "metadataRecord".');
126
126
  return this.exec(async () => {
@@ -139,13 +139,15 @@ class o extends u {
139
139
  });
140
140
  await this._db.metadata.bulkPut(i);
141
141
  const s = await this._db.data.bulkGet(t);
142
- for (const a of s)
143
- e.get(a.key).data = a;
142
+ for (const a of s) {
143
+ const r = e.get(a.key);
144
+ r && (r.data = a);
145
+ }
144
146
  return [...e.values()];
145
147
  }, "rw");
146
148
  }
147
149
  // setMeny
148
- bulkSet(t, e, i) {
150
+ async bulkSet(t, e, i) {
149
151
  let s;
150
152
  if (t && (s = t.findIndex((a) => !a)) >= 0)
151
153
  throw new Error(`Invalid metadata record. Parameter: "metadataRecords". Index: ${s}.`);
@@ -154,7 +156,7 @@ class o extends u {
154
156
  if (!t && !e)
155
157
  throw new Error("No data provided.");
156
158
  for (const a of t)
157
- a.key || (a.key = r()), this.onCreateMetadata(a, i(a));
159
+ a.key || (a.key = o()), this.onCreateMetadata(a, i(a));
158
160
  return this.exec(async () => {
159
161
  let a;
160
162
  return t && (a = await this._db.metadata.bulkPut(t, void 0, { allKeys: !0 })), e && await this._db.data.bulkPut(e, void 0, { allKeys: !0 }), a;
@@ -162,6 +164,6 @@ class o extends u {
162
164
  }
163
165
  }
164
166
  export {
165
- o as PersistentCache
167
+ l as PersistentCache
166
168
  };
167
169
  //# sourceMappingURL=persistentCache.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/persistentCache.ts"],"sourcesContent":["import { keyOf } from \"@/typeUtils\";\r\nimport { StructEvent, StructEventTarget } from \"@/structEvent\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { DataRecord, FieldDef, MetadataRecord, StoreItem, TransactionMode } from \"@/store/storeContracts\";\r\nimport { CacheMetadataRecord } from \"./cacheContracts\";\r\nimport { StoreDb } from \"@/store/storeDb\";\r\n\r\ntype Duration = number | { seconds?: number; minutes?: number; hours?: number };\r\n\r\nexport type PersistentCacheOptions = {\r\n cleanupTimeout: number;\r\n};\r\n\r\nconst defaultPersistentCacheOptions = {\r\n cleanupTimeout: 1000\r\n} satisfies PersistentCacheOptions;\r\n\r\nexport type CacheOptions = {\r\n absoluteExpiration?: Date | number;\r\n ttl?: Duration;\r\n slidingExpiration?: number; // \"autoRenewOnUse\" pattern\r\n};\r\n\r\n// CacheEntryEvictionEvent\r\nexport type CacheEvictionEvent = {\r\n records: CacheMetadataRecord[];\r\n};\r\n\r\ntype PersistentCacheEventStruct = {\r\n evict: CacheEvictionEvent;\r\n};\r\n\r\n// (registry/catalog)fieldNames\r\nconst metadataFieldDefTemplate = [\"&key\", \"createdAt\", \"updatedAt\", \"tags\", \"accessedAt\", \"expiresAt\"] satisfies (FieldDef<keyof CacheMetadataRecord>)[];\r\n\r\n// implements Struct<StructEventTarget<PersistentCacheEventStruct>>\r\n// PersistentCacheManager\r\nexport class PersistentCache extends StructEventTarget<PersistentCacheEventStruct> {\r\n\r\n protected _db: StoreDb<CacheMetadataRecord>;\r\n\r\n protected _isDisposed: boolean;\r\n\r\n private _jobTimerId: number;\r\n\r\n private readonly _options: PersistentCacheOptions;\r\n\r\n static delete(name: string) {\r\n return StoreDb.delete(name);\r\n }\r\n\r\n static exists(name: string) {\r\n return StoreDb.exists(name);\r\n }\r\n\r\n static open(name: string, options?: PersistentCacheOptions) {\r\n return StoreDb.open(name, () => new PersistentCache(name, options));\r\n }\r\n\r\n // cleanupTimeout - serviceJobTimeout\r\n constructor(name: string, options: PersistentCacheOptions) {\r\n super();\r\n if (!name) {\r\n throw new Error(\"Name cannot be empty.\");\r\n }\r\n this._options = { ...options, ...defaultPersistentCacheOptions };\r\n\r\n this._db = new StoreDb<CacheMetadataRecord>(name, metadataFieldDefTemplate);\r\n\r\n this._jobTimerId = null;\r\n\r\n // https://docs.nestjs.com/techniques/task-scheduling\r\n this.scheduleServiceJob();\r\n }\r\n\r\n [Symbol.dispose]() {\r\n if (!this._isDisposed) {\r\n if (this._jobTimerId) {\r\n window.clearTimeout(this._jobTimerId);\r\n this._jobTimerId = null;\r\n }\r\n }\r\n this._db?.[Symbol.dispose]();\r\n this._db = null;\r\n }\r\n\r\n open() {\r\n return this._db.open()\r\n }\r\n\r\n private exec<T>(\r\n action: () => Promise<T>, // scope\r\n transactionMode: TransactionMode = \"r!\") {\r\n return this._db.exec(action, transactionMode);\r\n }\r\n\r\n getKeys() {\r\n return this._db.getKeys();\r\n }\r\n\r\n contains(key: string) {\r\n return this._db.contains(key);\r\n }\r\n\r\n delete(key: string) {\r\n return this._db.deleteOne(key);\r\n }\r\n\r\n // deleteMany\r\n bulkDelete(keys: string[]) {\r\n return this._db.bulkDelete(keys);\r\n }\r\n\r\n // clearAllAsync\r\n clear() {\r\n return this._db.clear();\r\n }\r\n\r\n private onGetMetadata(record: CacheMetadataRecord) {\r\n const now = Date.now();\r\n record.accessedAt = now;\r\n\r\n let newExpiresAt = record.expiresAt ?? now;\r\n\r\n if (typeof record.slidingExpiration === 'number' && record.slidingExpiration > 0) {\r\n newExpiresAt = now + record.slidingExpiration;\r\n }\r\n\r\n if (\r\n typeof record.absoluteExpiration === 'number' &&\r\n record.absoluteExpiration > 0 &&\r\n newExpiresAt > record.absoluteExpiration\r\n ) {\r\n newExpiresAt = record.absoluteExpiration;\r\n }\r\n\r\n record.expiresAt = newExpiresAt;\r\n }\r\n\r\n scheduleServiceJob() {\r\n if (this._options.cleanupTimeout) {\r\n const doWork = async () => {\r\n try {\r\n // purge expired entries\r\n await this.deleteExpired();\r\n } catch (err) {\r\n console.error(\"Cache cleanup failed:\", err);\r\n } finally {\r\n setTimeout(doWork, this._options.cleanupTimeout);\r\n }\r\n };\r\n setTimeout(doWork, this._options.cleanupTimeout);\r\n }\r\n }\r\n\r\n // evictExpiredAsync/clearExpiredAsync\r\n async deleteExpired(ts?: number) {\r\n const result: string[] = []; // output keys\r\n if (!ts) {\r\n ts = Date.now();\r\n }\r\n let metadataRecords: MetadataRecord[];\r\n await this.exec(async () => {\r\n metadataRecords = await this._db.metadata.where(keyOf<CacheMetadataRecord>(\"expiresAt\")).below(ts).toArray();\r\n const keys = metadataRecords.map(x => x.key);\r\n await this.bulkDelete(keys);\r\n }, \"rw\");\r\n if (metadataRecords?.length) {\r\n const evt = new StructEvent<PersistentCacheEventStruct, this>(\"evict\", {\r\n detail: {\r\n records: metadataRecords\r\n },\r\n target: this,\r\n cancelable: true\r\n });\r\n this.dispatchEvent(evt);\r\n }\r\n return result;\r\n }\r\n\r\n get<TValue = any>(key: string): Promise<StoreItem<CacheMetadataRecord, TValue>> {\r\n return this.exec(async () => {\r\n const metadataRecord = await this._db.metadata.get(key);\r\n this.onGetMetadata(metadataRecord);\r\n await this._db.metadata.put(metadataRecord);\r\n const dataRecord = await this._db.data.get(key);\r\n return {\r\n metadata: metadataRecord,\r\n data: dataRecord\r\n } as StoreItem<CacheMetadataRecord, TValue>;\r\n }, \"rw\");\r\n }\r\n\r\n private onCreateMetadata(record: CacheMetadataRecord, options: CacheOptions) {\r\n const now = Date.now();\r\n\r\n record.createdAt = now;\r\n record.updatedAt = now;\r\n record.accessedAt = now;\r\n\r\n record.slidingExpiration = options.slidingExpiration;\r\n if (typeof options.absoluteExpiration === \"number\") {\r\n record.absoluteExpiration = options.absoluteExpiration;\r\n } else if (options.absoluteExpiration instanceof Date) {\r\n record.absoluteExpiration = options.absoluteExpiration.getTime();\r\n }\r\n if (typeof options.ttl === \"number\") {\r\n record.absoluteExpiration = now + options.ttl;\r\n }\r\n if (record.absoluteExpiration == undefined) {\r\n record.absoluteExpiration = Infinity\r\n }\r\n\r\n this.onGetMetadata(record);\r\n\r\n }\r\n // upsert\r\n set<TValue = any>(metadataRecord: CacheMetadataRecord, value: TValue, options: CacheOptions) {\r\n if (value === undefined) {\r\n throw new Error('Invalid parameter: \"value\".');\r\n }\r\n if (!metadataRecord.key) {\r\n metadataRecord.key = uuid();\r\n }\r\n\r\n this.onCreateMetadata(metadataRecord, options);\r\n\r\n return this.exec(async () => {\r\n const result = await this._db.metadata.put(metadataRecord);\r\n await this._db.data.put({\r\n key: metadataRecord.key,\r\n value: value\r\n });\r\n return result;\r\n }, \"rw\");\r\n }\r\n\r\n // getOrAdd\r\n getOrSet<TValue = any>(metadataRecord: CacheMetadataRecord, factory: (metadataRecord: CacheMetadataRecord) => TValue, options: CacheOptions) {\r\n if (!metadataRecord.key) {\r\n throw new Error(`Key cannot be empty. Parameter: \"metadataRecord\".`);\r\n }\r\n return this.exec(async () => {\r\n const existingStoreItem = await this.get(metadataRecord.key);\r\n if (existingStoreItem) {\r\n return existingStoreItem;\r\n }\r\n await this.set(metadataRecord, factory(metadataRecord), options);\r\n return this.get(metadataRecord.key);\r\n }, \"rw\");\r\n }\r\n\r\n // getMany\r\n bulkGet<TValue = any>(keys: string[]) {\r\n return this.exec(async () => {\r\n const map = new Map<string, StoreItem<CacheMetadataRecord, TValue>>();\r\n const metadataRecords = await this._db.metadata.bulkGet(keys);\r\n for (const metadataRecord of metadataRecords) {\r\n this.onGetMetadata(metadataRecord);\r\n map.set(metadataRecord.key, {\r\n metadata: metadataRecord,\r\n // data: undefined\r\n });\r\n }\r\n await this._db.metadata.bulkPut(metadataRecords);\r\n const dataRecords = await this._db.data.bulkGet(keys);\r\n for (const dataRecord of dataRecords) {\r\n map.get(dataRecord.key).data = dataRecord;\r\n }\r\n return [...map.values()];\r\n }, \"rw\");\r\n }\r\n\r\n // setMeny\r\n bulkSet<TValue = any>(metadataRecords: CacheMetadataRecord[], dataRecords: DataRecord<TValue>[], optionsProvider: (record: MetadataRecord) => CacheOptions) {\r\n let index: number;\r\n if (metadataRecords && (index = metadataRecords.findIndex(x => !x)) >= 0) {\r\n throw new Error(`Invalid metadata record. Parameter: \"metadataRecords\". Index: ${index}.`);\r\n }\r\n if (dataRecords && (index = dataRecords.findIndex(x => (!x || !x.key || x.value === undefined))) >= 0) {\r\n throw new Error(`Invalid data record. Parameter: \"dataRecords\". Index: ${index}.`);\r\n }\r\n if (!metadataRecords && !dataRecords) {\r\n throw new Error(\"No data provided.\");\r\n }\r\n for (const metadataRecord of metadataRecords) {\r\n if (!metadataRecord.key) {\r\n metadataRecord.key = uuid();\r\n }\r\n this.onCreateMetadata(metadataRecord, optionsProvider(metadataRecord));\r\n }\r\n return this.exec(async () => {\r\n let mKeys: string[], dKeys: string[];\r\n if (metadataRecords) {\r\n mKeys = await this._db.metadata.bulkPut(metadataRecords, undefined, { allKeys: true });\r\n }\r\n if (dataRecords) {\r\n dKeys = await this._db.data.bulkPut(dataRecords, undefined, { allKeys: true });\r\n }\r\n return mKeys;\r\n }, \"rw\");\r\n }\r\n}\r\n\r\n// extra links:\r\n// https://demo.agektmr.com/storage/\r\n// https://www.html5rocks.com/en/tutorials/offline/quota-research/\r\n// https://www.raymondcamden.com/2015/04/17/indexeddb-and-limits\r\n// https://github.com/jonnysmith1981/getIndexedDbSize/blob/master/getIndexedDbSize.js\r\n// https://developer.chrome.com/apps/offline_storage#query\r\n// https://golb.hplar.ch/2018/01/IndexedDB-programming-with-Dexie-js.html\r\n// http://www.forerunnerdb.com/licensing.html\r\n// https://github.com/ignasbernotas/dexie-relationships\r\n// https://medium.com/square-corner-blog/useful-tools-headless-chrome-puppeteer-for-browser-automation-testing-1ac7707bad40\r\n// https://developers.google.com/web/updates/2017/06/headless-karma-mocha-chai?hl=ru\r\n// https://github.com/puppeteer/puppeteer\r\n// https://medium.com/web-standards/puppeteer-crawl-to-markdown-7752dff36b68\r\n\r\n/*\r\n(async () => {\r\n const alreadyPersisted = await window.navigator.storage?.persisted()\r\n\r\n if (alreadyPersisted) {\r\n return;\r\n }\r\n\r\n const persistentModeEnabled = await window.navigator.storage?.persist()\r\n\r\n if (!persistentModeEnabled) { \r\n // Storage may be cleared by the UA under storage pressure\r\n } else {\r\n // Storage will be persistent\r\n // Storage will not be cleared except by explicit user action\r\n }\r\n})();\r\n*/\r\n"],"names":["defaultPersistentCacheOptions","metadataFieldDefTemplate","PersistentCache","StructEventTarget","name","StoreDb","options","action","transactionMode","key","keys","record","now","newExpiresAt","doWork","err","ts","result","metadataRecords","keyOf","x","evt","StructEvent","metadataRecord","dataRecord","value","uuid","factory","existingStoreItem","map","dataRecords","optionsProvider","index","mKeys"],"mappings":"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"}
1
+ {"version":3,"file":"persistentCache.es.js","sources":["D:/Src/my/actdim/public/utico/src/cache/persistentCache.ts"],"sourcesContent":null,"names":["defaultPersistentCacheOptions","metadataFieldDefTemplate","PersistentCacheEvent","typed","StructEvent","PersistentCache","StructEventTarget","name","StoreDb","options","action","transactionMode","key","keys","record","now","newExpiresAt","doWork","err","ts","result","metadataRecords","keyOf","x","evt","metadataRecord","dataRecord","value","uuid","factory","existingStoreItem","map","dataRecords","item","optionsProvider","index","mKeys"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataFormats.es.js","sources":["D:/Src/my/actdim/public/utico/src/dataFormats.ts"],"sourcesContent":["import dateTimeDataFormat from './dateTimeDataFormat';\r\nexport default {\r\n dateTime: dateTimeDataFormat\r\n};"],"names":["dataFormats","dateTimeDataFormat"],"mappings":";AACA,MAAAA,IAAe;AAAA,EACX,UAAUC;AACd;"}
1
+ {"version":3,"file":"dataFormats.es.js","sources":["D:/Src/my/actdim/public/utico/src/dataFormats.ts"],"sourcesContent":null,"names":["dataFormats","dateTimeDataFormat"],"mappings":";AACA,MAAAA,IAAe;AAAA,EACX,UAAUC;AACd;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dateTimeDataFormat.es.js","sources":["D:/Src/my/actdim/public/utico/src/dateTimeDataFormat.ts"],"sourcesContent":["import { Moment } from \"moment\";\r\nimport moment from \"moment\";\r\nimport cultures from \"./i18n/cultures\";\r\n\r\n// TODO: use Luxon\r\nconst dtFormats = cultures.invariant.dateTime.formats;\r\n\r\nexport interface IDateTimeDataFormat {\r\n serializationFormat: string;\r\n normalize: (source: string | number | Date) => Date;\r\n serialize: (source: string | number | Date | Moment) => string;\r\n deserialize: (value: string) => Moment;\r\n tryDeserialize: (value: string) => Moment;\r\n isValid: (source: string | number | Date) => boolean;\r\n}\r\n\r\nexport enum DateNumberFormat {\r\n UnixTimeMilliseconds,\r\n UnixTimeSeconds,\r\n OADate // OLE Automation Date\r\n}\r\n\r\nconst USE_LOCAL_TIME = false; // invariant dates\r\n\r\n// dotnet: \"yyyy-MM-ddTHH:mm:ss.FFF\"\r\nconst invariantFormat = \"YYYY-MM-DDTHH:mm:ss.SSS\";\r\nconst s11nFormat = \"YYYY-MM-DDTHH:mm:ss.SSS\"; // TODO: support USE_LOCAL_TIME\r\n\r\nconst m = USE_LOCAL_TIME ? moment : moment.utc;\r\nconst toDate = USE_LOCAL_TIME ? (m: Moment) => m.toDate() : (m: Moment) => new Date(m.format(invariantFormat));\r\n\r\n// https://stackoverflow.com/questions/15549823/oadate-to-milliseconds-timestamp-in-javascript\r\n/* Convert a Microsoft OADate to ECMAScript Date\r\n ** Treat all values as local.\r\n ** @param {string|number} oaDate - OADate value\r\n ** @returns {Date}\r\n */\r\nexport function getDateFromOADate(oaDate: number) {\r\n // Treat integer part is whole days\r\n const days = Math.floor(oaDate); // parseInt(oaDate + \"\")\r\n // Treat decimal part as part of 24hr day, always +ve\r\n const ms = Math.abs((oaDate - days) * 8.64e7); // +oaDate\r\n // Add days and add ms\r\n return new Date(1899, 11, 30 + days, 0, 0, 0, ms);\r\n}\r\n\r\n/* Convert an ECMAScript Date to a Microsoft OADate\r\n ** Treat all dates as local.\r\n ** @param {Date} date - Date to convert\r\n ** @returns {Date}\r\n */\r\nexport function getOADateFromDate(date: Date) {\r\n const temp = new Date(date);\r\n // Set temp to start of day and get whole days between dates\r\n const stDate = new Date(1899, 11, 30);\r\n const days = Math.round((temp.setHours(0, 0, 0, 0) - stDate.getTime()) / 8.64e7);\r\n // Get decimal part of day, OADate always assumes 24 hours in day\r\n const partDay = (Math.abs((date.getTime() - temp.getTime()) % 8.64e7) / 8.64e7).toFixed(10);\r\n return days + partDay.substr(1);\r\n}\r\n\r\nexport function getDateFromNumber(value: number, dateNumberFormat = DateNumberFormat.UnixTimeMilliseconds) {\r\n if (value == undefined) {\r\n return null;\r\n }\r\n switch (dateNumberFormat) {\r\n case DateNumberFormat.UnixTimeMilliseconds:\r\n return new Date(value);\r\n case DateNumberFormat.UnixTimeSeconds:\r\n return new Date(value * 1000);\r\n case DateNumberFormat.OADate:\r\n return getDateFromOADate(value);\r\n }\r\n}\r\n\r\nexport type DateValueFormats = {\r\n string?: string;\r\n number?: DateNumberFormat;\r\n};\r\n\r\nexport function toMoment(source: any, formats?: DateValueFormats) {\r\n if (source == undefined) {\r\n return null;\r\n }\r\n let md: Moment;\r\n if (typeof source === \"string\") {\r\n md = parse(source, formats?.string);\r\n } else if (typeof source === \"number\") {\r\n md = moment(getDateFromNumber(source, formats?.number));\r\n } else if (source instanceof Date) {\r\n // moment.isDate?\r\n md = moment(source);\r\n } else {\r\n if (!moment.isMoment(source)) {\r\n // Invalid\r\n throw new Error(\"Unsupported Moment Source\");\r\n }\r\n md = source;\r\n }\r\n return md;\r\n}\r\n\r\nfunction parse(value: string, format?: string) {\r\n if (value == undefined) {\r\n return null;\r\n }\r\n if (format == undefined) {\r\n format = s11nFormat;\r\n }\r\n let md: Moment;\r\n if (format) {\r\n md = m(value, format, true);\r\n } else {\r\n md = m(value);\r\n // md = m(value, format, true); // ?\r\n }\r\n\r\n // assertInvariant?\r\n // !md.isSame(m(value))\r\n if (md.format(s11nFormat) !== m(value).format(s11nFormat)) {\r\n const errMsg = `Invalid date transport value: ${value}`;\r\n console.warn(errMsg);\r\n // throw new Error(errMsg);\r\n }\r\n if (!md.isValid()) {\r\n throw new Error(`Assertion. Invalid datetime format: ${value}. Expected format: ${format || s11nFormat}.`);\r\n }\r\n return md;\r\n}\r\n\r\n// dtFormats.dateTimeShort\r\nexport function formatDate(date: Date | moment.Moment, format?: string) {\r\n if (date == undefined) {\r\n return \"\";\r\n }\r\n const md = toMoment(date);\r\n if (format == undefined) {\r\n if (!md.hours() && !md.minutes() && !md.seconds()) {\r\n format = dtFormats.dateShort;\r\n } else if (md.milliseconds()) {\r\n // dtFormats.dateTime?\r\n format = dtFormats.dateTime24;\r\n } else {\r\n // dtFormats.dateTimeShort?\r\n format = dtFormats.dateTime24Short;\r\n }\r\n }\r\n return md.format(format);\r\n}\r\n\r\nconst dateTimeFormat = {\r\n serializationFormat: s11nFormat,\r\n isValid: (source: any) => {\r\n if (source == null) {\r\n return true; // no value, it is OK\r\n }\r\n if (typeof source === \"string\") {\r\n return !!parse(source, s11nFormat);\r\n }\r\n // if (typeof source === 'number') {\r\n // return true;\r\n // }\r\n if (source instanceof Date) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n normalize: (source: string | number | Date | Moment) => {\r\n if (source == undefined) {\r\n return null;\r\n }\r\n if (typeof source === \"string\") {\r\n const md = parse(source);\r\n // const md = parse(source, s11nFormat);\r\n source = md;\r\n } else if (typeof source === \"number\") {\r\n // source = getMomentFromUnixTime(source); // ?\r\n source = m(source);\r\n } else if (source instanceof Date) {\r\n // return source;\r\n // not moment.utc(source)!\r\n source = moment(source);\r\n } else {\r\n if (!moment.isMoment(source)) {\r\n // Invalid\r\n throw new Error(\"Unsupported source\");\r\n }\r\n }\r\n return toDate(source);\r\n },\r\n serialize: (source: string | number | Date | Moment, formats?: DateValueFormats) => {\r\n if (source == undefined) {\r\n return null;\r\n }\r\n const md = toMoment(source, formats);\r\n return md.format(s11nFormat);\r\n },\r\n deserialize: (value: string) => {\r\n return parse(value);\r\n },\r\n tryDeserialize: (value: string) => {\r\n try {\r\n return dateTimeFormat.deserialize(value);\r\n } catch (err) {\r\n console.error(err);\r\n return null;\r\n }\r\n }\r\n} as IDateTimeDataFormat;\r\n\r\nexport default dateTimeFormat;\r\n"],"names":["dtFormats","cultures","DateNumberFormat","invariantFormat","s11nFormat","m","moment","toDate","getDateFromOADate","oaDate","days","ms","getOADateFromDate","date","temp","stDate","partDay","getDateFromNumber","value","dateNumberFormat","toMoment","source","formats","md","parse","format","errMsg","formatDate","dateTimeFormat","err"],"mappings":"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"}
1
+ {"version":3,"file":"dateTimeDataFormat.es.js","sources":["D:/Src/my/actdim/public/utico/src/dateTimeDataFormat.ts"],"sourcesContent":null,"names":["dtFormats","cultures","DateNumberFormat","invariantFormat","s11nFormat","m","moment","toDate","getDateFromOADate","oaDate","days","ms","getOADateFromDate","date","temp","stDate","partDay","getDateFromNumber","value","dateNumberFormat","toMoment","source","formats","md","parse","format","errMsg","formatDate","dateTimeFormat","err"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function nonEnumerable(target: any, propertyKey: string | symbol): void;
2
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,QAiBtE"}
@@ -0,0 +1,20 @@
1
+ function n(r, e) {
2
+ Object.defineProperty(r, e, {
3
+ get() {
4
+ },
5
+ set(t) {
6
+ Object.defineProperty(this, e, {
7
+ value: t,
8
+ writable: !0,
9
+ enumerable: !1,
10
+ configurable: !0
11
+ });
12
+ },
13
+ enumerable: !1,
14
+ configurable: !0
15
+ });
16
+ }
17
+ export {
18
+ n as nonEnumerable
19
+ };
20
+ //# sourceMappingURL=decorators.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.es.js","sources":["D:/Src/my/actdim/public/utico/src/decorators.ts"],"sourcesContent":null,"names":["nonEnumerable","target","propertyKey","value"],"mappings":"AAAO,SAASA,EAAcC,GAAaC,GAA8B;AAErE,SAAO,eAAeD,GAAQC,GAAa;AAAA,IACvC,MAAM;AAAA,IAEN;AAAA,IACA,IAAIC,GAAY;AACZ,aAAO,eAAe,MAAMD,GAAa;AAAA,QACrC,OAAAC;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA,CACjB;AAAA,IACL;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAAA,CACjB;AACL;"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasUtils.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/canvasUtils.ts"],"sourcesContent":["const DOMURL = window.URL || window.webkitURL;\r\n\r\nexport function createCanvas(w: number, h: number /*, dpi?: number*/) {\r\n const canvas = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"canvas\") as HTMLCanvasElement;\r\n // if (!dpi) {\r\n // dpi = window.devicePixelRatio;\r\n // }\r\n // context2d\r\n const context = canvas.getContext(\"2d\");\r\n if (context) {\r\n // context.imageSmoothingEnabled = true;\r\n // context.mozImageSmoothingEnabled = true;\r\n // context.oImageSmoothingEnabled = true;\r\n // context.webkitImageSmoothingEnabled = true;\r\n context[\"imageSmoothingQuality\"] = \"high\";\r\n }\r\n canvas.width = w;\r\n // canvas.width = w * dpi;\r\n canvas.height = h;\r\n // canvas.height = h * dpi;\r\n\r\n // canvas.style.width = w + \"px\";\r\n // context.scale(dpi, dpi);\r\n return { canvas, context };\r\n}\r\n\r\nconst supportExtendedMetrics = \"actualBoundingBoxRight\" in TextMetrics.prototype;\r\n\r\nexport type TextSizeProvider = (fontSize: number) => [number, number];\r\n\r\nexport function fitText(\r\n ctx: CanvasRenderingContext2D,\r\n text = \"\",\r\n sizeProvider: TextSizeProvider,\r\n targetWidth = ctx.canvas.width,\r\n fontFamily = \"Arial\"\r\n) {\r\n let fontSize = 1;\r\n const updateFont = () => {\r\n ctx.font = fontSize + \"px \" + fontFamily;\r\n };\r\n updateFont();\r\n let width = getBBOxWidth(text);\r\n // first pass width increment = 1\r\n while (width && width <= targetWidth) {\r\n fontSize++;\r\n updateFont();\r\n width = getBBOxWidth(text);\r\n }\r\n // second pass, the other way around, with increment = -0.1\r\n while (width && width > targetWidth) {\r\n fontSize -= 0.1;\r\n updateFont();\r\n width = getBBOxWidth(text);\r\n }\r\n // revert to last valid step\r\n fontSize += 0.1;\r\n updateFont();\r\n\r\n // we need to measure where our bounding box actually starts\r\n const offsetLeft = ctx.measureText(text).actualBoundingBoxLeft || 0;\r\n const [x, y] = sizeProvider(fontSize);\r\n ctx.fillText(text, x + offsetLeft, y);\r\n\r\n function getBBOxWidth(text) {\r\n const measure = ctx.measureText(text);\r\n\r\n return supportExtendedMetrics ? measure.actualBoundingBoxLeft + measure.actualBoundingBoxRight : measure.width;\r\n }\r\n}\r\n\r\nfunction encodeUnicode(str: any) {\r\n // +(\"0x\" + s)\r\n return window.encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (_, s) => String.fromCharCode(parseInt(s, 16)));\r\n // old way\r\n // return window.unescape(window.encodeURIComponent(str))\r\n}\r\n\r\nexport const html2Svg = (() => {\r\n const xmlSerializer = new XMLSerializer();\r\n return async (elements: HTMLElement[], viewBoxSize: number[], css: string) => {\r\n const w = viewBoxSize[0];\r\n const h = viewBoxSize[1];\r\n\r\n let html = elements\r\n .map(\r\n (el) => `<foreignObject width=\"${w}\" height=\"${h}\">\r\n <body xmlns=\"http://www.w3.org/1999/xhtml\">\r\n ${el.outerHTML}\r\n </body>\r\n </foreignObject>`\r\n )\r\n .join(\"\");\r\n html = `<style>${css}</style>${html}`;\r\n\r\n var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\r\n svgElement.setAttributeNS(null, \"viewBox\", `0 0 ${w} ${h}`);\r\n svgElement.setAttributeNS(null, \"width\", w + \"\");\r\n svgElement.setAttributeNS(null, \"height\", h + \"\");\r\n svgElement.innerHTML = html;\r\n\r\n return xmlSerializer.serializeToString(svgElement); // svg string\r\n };\r\n})();\r\n\r\nexport function getSvgImageObjectUrl(svgData: string) {\r\n const svgBlob = new Blob([svgData], { type: \"image/svg+xml;charset=utf-8\" });\r\n return DOMURL.createObjectURL(svgBlob);\r\n}\r\n\r\nexport function getSvgImageDataUrl(svgData: string) {\r\n const svgBase64 = window.btoa(encodeUnicode(svgData));\r\n return \"data:image/svg+xml;base64,\" + svgBase64;\r\n // without base64 encoding (ok for simple SVGs):\r\n // return \"data:image/svg+xml;charset=utf-8,\" + window.encodeURIComponent(svgData); // \"data:image/svg+xml;utf8,\"; - incorrect!\r\n}\r\n\r\n// querySvgDataUrl\r\nexport const querySvgData = (() => {\r\n const xmlSerializer = new XMLSerializer();\r\n return (selector: string) => {\r\n const svg = document.querySelector(selector);\r\n const svgData = xmlSerializer.serializeToString(svg);\r\n return svgData;\r\n };\r\n})();\r\n\r\nexport function toObjectUrl(canvas: HTMLCanvasElement, mimeType = \"image/png\", quality?: number) {\r\n // 'image/jpeg', 'image/webp'\r\n return new Promise<string>((res, rej) => {\r\n try {\r\n canvas.toBlob(\r\n (blob) => {\r\n res(URL.createObjectURL(blob));\r\n },\r\n mimeType,\r\n quality\r\n );\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport function drawImage(src: string, context: CanvasRenderingContext2D) {\r\n return new Promise<void>((res, rej) => {\r\n try {\r\n const image = new Image();\r\n // const image = document.createElement('img');\r\n image.crossOrigin = \"anonymous\";\r\n image.onload = () => {\r\n // image.naturalWidth, image.naturalHeight\r\n context.drawImage(image, 0, 0, image.width, image.height, 0, 0, context.canvas.width, context.canvas.height);\r\n res();\r\n };\r\n image.src = src;\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport const drawSvg = (svgData: string, context: CanvasRenderingContext2D, useDataUrl = false) => {\r\n const imageSrc = useDataUrl ? getSvgImageDataUrl(svgData) : getSvgImageObjectUrl(svgData);\r\n return drawImage(imageSrc, context).finally(() => DOMURL.revokeObjectURL(imageSrc));\r\n};\r\n\r\n/*\r\nexport function canvasToImage(canvas: HTMLCanvasElement, size?: number[], mimeType = \"image/png\", quality?: number) {\r\n // const image = document.createElement(\"img\")\r\n const image = new Image();\r\n image.crossOrigin = \"anonymous\";\r\n if (size) {\r\n if (size[0]) {\r\n image.width = size[0];\r\n }\r\n if (size[1]) {\r\n image.height = size[1];\r\n }\r\n }\r\n const imageSrc = canvas.toDataURL(mimeType, quality);\r\n image.src = imageSrc;\r\n return image;\r\n}\r\n*/\r\n\r\nexport async function canvasToImage(canvas: HTMLCanvasElement, size?: number[], mimeType = \"image/png\", quality?: number) {\r\n // document.createElement(\"img\")\r\n const image = new Image();\r\n image.crossOrigin = \"anonymous\";\r\n if (size) {\r\n if (size[0]) {\r\n image.width = size[0];\r\n }\r\n if (size[1]) {\r\n image.height = size[1];\r\n }\r\n }\r\n const imageSrc = await toObjectUrl(canvas, mimeType, quality);\r\n image.onload = () => DOMURL.revokeObjectURL(imageSrc);\r\n image.src = imageSrc;\r\n return image;\r\n}\r\n\r\nexport async function objectUrlToDataURL(objectUrl: string): Promise<string> {\r\n const response = await fetch(objectUrl);\r\n const blob = await response.blob();\r\n\r\n return new Promise((res, rej) => {\r\n try {\r\n const reader = new FileReader();\r\n reader.onloadend = () => res(reader.result as string);\r\n reader.readAsDataURL(blob);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport const getSvgSize = (() => {\r\n const domParser = new DOMParser();\r\n return (svg: string) => {\r\n const svgDom = domParser.parseFromString(svg, \"text/xml\");\r\n // svgElement/svgNode\r\n // const svgDoc = svgDom.documentElement;\r\n const svgDoc = svgDom.querySelector(\"svg\");\r\n return getSvgElementSize(svgDoc);\r\n };\r\n})();\r\n\r\nexport function getSvgElementSize(svgDoc: SVGSVGElement): [number, number] {\r\n let w = 0;\r\n if (svgDoc.width.baseVal.unitType === 5) {\r\n // units - pixels\r\n w = svgDoc.width.baseVal.value;\r\n }\r\n if (!w) {\r\n w = svgDoc.width.baseVal.value;\r\n }\r\n if (!w) {\r\n w = svgDoc.viewBox.baseVal.width;\r\n }\r\n\r\n let h = 0;\r\n if (svgDoc.height.baseVal.unitType === 5) {\r\n // units - pixels\r\n h = svgDoc.height.baseVal.value;\r\n }\r\n if (!h) {\r\n h = svgDoc.height.baseVal.value;\r\n }\r\n if (!h) {\r\n h = svgDoc.viewBox.baseVal.height;\r\n }\r\n\r\n // const attributes = svgDoc.attributes;\r\n // see also:\r\n // attributes.getNamedItem(\"viewBox\").value\r\n // attributes.getNamedItem('width').value - with units\r\n // attributes.getNamedItem('height').value - with units\r\n\r\n return [w, h];\r\n}\r\n\r\nexport const refineSvg = (() => {\r\n const domParser = new DOMParser();\r\n return (data: string) => {\r\n const svgDom = domParser.parseFromString(data, \"text/xml\");\r\n // const svgDoc = svgDom.documentElement;\r\n const svgDoc = svgDom.querySelector(\"svg\");\r\n const size = getSvgElementSize(svgDoc);\r\n // workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=700533#c39\r\n svgDoc.setAttribute(\"width\", `${size[0]}px`);\r\n svgDoc.setAttribute(\"height\", `${size[1]}px`);\r\n return svgDoc.outerHTML;\r\n };\r\n})();\r\n\r\nexport function drawRoundedRect(\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n r:\r\n | number\r\n | {\r\n tl: number;\r\n tr: number;\r\n br: number;\r\n bl: number;\r\n }\r\n) {\r\n if (typeof r === \"number\") {\r\n r = { tl: r, tr: r, br: r, bl: r };\r\n } else {\r\n const defaultRadius = { tl: 0, tr: 0, br: 0, bl: 0 };\r\n for (let side in defaultRadius) {\r\n r[side] = r[side] || defaultRadius[side];\r\n }\r\n }\r\n context.beginPath();\r\n context.moveTo(x + r.tl, y);\r\n context.lineTo(x + w - r.tr, y);\r\n context.quadraticCurveTo(x + w, y, x + w, y + r.tr);\r\n context.lineTo(x + w, y + h - r.br);\r\n context.quadraticCurveTo(x + w, y + h, x + w - r.br, y + h);\r\n context.lineTo(x + r.bl, y + h);\r\n context.quadraticCurveTo(x, y + h, x, y + h - r.bl);\r\n context.lineTo(x, y + r.tl);\r\n context.quadraticCurveTo(x, y, x + r.tl, y);\r\n context.closePath();\r\n\r\n // context.fill();\r\n // context.stroke();\r\n\r\n // simple but less accurate\r\n // if (w < 2 * r) {\r\n // r = w / 2;\r\n // }\r\n // if (h < 2 * r) {\r\n // r = h / 2;\r\n // }\r\n // context.beginPath();\r\n // context.moveTo(x + r, y);\r\n // context.arcTo(x + w, y, x + w, y + h, r);\r\n // context.arcTo(x + w, y + h, x, y + h, r);\r\n // context.arcTo(x, y + h, x, y, r);\r\n // context.arcTo(x, y, x + w, y, r);\r\n // context.closePath();\r\n\r\n // https://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas\r\n // + other: https://newfivefour.com/javascript-canvas-rounded-rectangle.html\r\n}\r\n"],"names":["DOMURL","createCanvas","w","h","canvas","context","supportExtendedMetrics","fitText","ctx","text","sizeProvider","targetWidth","fontFamily","fontSize","updateFont","width","getBBOxWidth","offsetLeft","x","y","measure","encodeUnicode","str","_","s","html2Svg","xmlSerializer","elements","viewBoxSize","css","html","el","svgElement","getSvgImageObjectUrl","svgData","svgBlob","getSvgImageDataUrl","querySvgData","selector","svg","toObjectUrl","mimeType","quality","res","rej","blob","err","drawImage","src","image","drawSvg","useDataUrl","imageSrc","canvasToImage","size","objectUrlToDataURL","objectUrl","reader","getSvgSize","domParser","svgDoc","getSvgElementSize","refineSvg","data","drawRoundedRect","defaultRadius","side"],"mappings":"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"}
1
+ {"version":3,"file":"canvasUtils.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/canvasUtils.ts"],"sourcesContent":null,"names":["DOMURL","createCanvas","w","h","canvas","context","supportExtendedMetrics","fitText","ctx","text","sizeProvider","targetWidth","fontFamily","fontSize","updateFont","width","getBBOxWidth","offsetLeft","x","y","measure","encodeUnicode","str","_","s","html2Svg","xmlSerializer","elements","viewBoxSize","css","html","el","svgElement","getSvgImageObjectUrl","svgData","svgBlob","getSvgImageDataUrl","querySvgData","selector","svg","toObjectUrl","mimeType","quality","res","rej","blob","err","drawImage","src","image","drawSvg","useDataUrl","imageSrc","canvasToImage","size","objectUrlToDataURL","objectUrl","reader","getSvgSize","domParser","svgDoc","getSvgElementSize","refineSvg","data","drawRoundedRect","defaultRadius","side"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"color.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/color.ts"],"sourcesContent":["// see also https://css-tricks.com/converting-color-spaces-in-javascript/\r\n\r\n// getRandomColorChannelValue(Number)\r\nfunction getRandomColorChannelNumber(brightness: number) {\r\n const r = 255 - brightness;\r\n return 0 | ((Math.random() * r) + brightness);\r\n}\r\n\r\nexport function getRandomColorChannelString(brightness: number) {\r\n const n = getRandomColorChannelNumber(brightness);\r\n let result = n.toString(16);\r\n // result = ('00' + result).slice(- 2);\r\n if (result.length == 1) {\r\n result = '0' + result;\r\n }\r\n return result;\r\n}\r\n\r\nexport function getRandom32BitColorNumber(alpha: number = null, brightness: number = null) {\r\n // return Math.floor(Math.random() * 0xFFFFFFFF);\r\n\r\n // typeof brightness !== \"number\"\r\n if (brightness == undefined) {\r\n brightness = Math.floor(Math.random() * 0xFF); // 255\r\n }\r\n const r = getRandomColorChannelNumber(brightness);\r\n const g = getRandomColorChannelNumber(brightness);\r\n const b = getRandomColorChannelNumber(brightness);\r\n // typeof alpha !== \"number\"\r\n const a = alpha == undefined ? getRandomColorChannelNumber(brightness) : alpha;\r\n return getColorNumberFromRgba(r, g, b, a);\r\n}\r\n\r\n// getRandom24bitColorNumber\r\nexport function getRandomColorNumber(brightness: number = null) {\r\n // return Math.floor(Math.random() * 0xFFFFFF);\r\n // typeof brightness !== \"number\"\r\n if (brightness == undefined) {\r\n brightness = Math.floor(Math.random() * 0xFF); // 255\r\n }\r\n const r = getRandomColorChannelNumber(brightness);\r\n const g = getRandomColorChannelNumber(brightness);\r\n const b = getRandomColorChannelNumber(brightness);\r\n return getColorNumberFromRgba(r, g, b);\r\n}\r\n\r\nfunction refineColorHexString(colorHexString: string) {\r\n colorHexString = colorHexString.trim().toUpperCase();\r\n let isNegative = false;\r\n\r\n if (colorHexString.startsWith(\"-\")) {\r\n isNegative = true;\r\n colorHexString = colorHexString.slice(1).trimLeft();\r\n }\r\n\r\n if (colorHexString.startsWith(\"0X\")) {\r\n colorHexString = colorHexString.slice(2);\r\n }\r\n\r\n if (colorHexString.startsWith(\"#\")) {\r\n colorHexString = colorHexString.slice(1);\r\n }\r\n\r\n // colorHexString = \"0x\" + colorHexString;\r\n if (isNegative) {\r\n colorHexString = \"-\" + colorHexString;\r\n }\r\n\r\n return colorHexString;\r\n}\r\n\r\n// colorHexStringToNumber\r\nexport function getColorNumberFromHexString(colorHexString: string) {\r\n if (!colorHexString) {\r\n\r\n return 0;\r\n\r\n } else {\r\n // TODO: detect alpha channel\r\n // const { r, g, b, a } = getColorRgbaFromHexString(colorHexString)\r\n // return getColorNumberFromRgba(r, g, b, a);\r\n\r\n colorHexString = refineColorHexString(colorHexString);\r\n\r\n let result =\r\n // new Number(colorHexString).valueOf();\r\n // parseInt(colorHexString);\r\n parseInt(colorHexString, 16);\r\n\r\n // if (isNegative) {\r\n // result = result >>> 0; // convert to unsigned int32\r\n // }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport function getColorRgbaFromHexString(colorHexString: string) {\r\n\r\n if (!colorHexString) {\r\n return {\r\n r: 0,\r\n g: 0,\r\n b: 0,\r\n a: 255\r\n };\r\n } else {\r\n\r\n const colorValue = getColorNumberFromHexString(colorHexString); // >>> 0\r\n if (colorValue > 0xFFFFFF) {\r\n return {\r\n r: colorValue >> 24 & 0xFF, // red\r\n // r: (colorValue & 0xFF000000) >> 24,\r\n g: colorValue >> 16 & 0xFF, // green\r\n // g: (colorValue & 0xFF0000) >> 16,\r\n b: colorValue >> 8 & 0xFF, // blue\r\n // b: (colorValue & 0xFF00) >> 8,\r\n a: colorValue & 0xFF // alpha\r\n };\r\n } else {\r\n return {\r\n r: colorValue >> 16 & 0xFF,\r\n // r: (colorValue & 0xFF0000) >> 16,\r\n g: colorValue >> 8 & 0xFF,\r\n // g: (colorValue & 0xFF00) >> 8,\r\n b: colorValue & 0xFF,\r\n // b: colorValue & 0xFF,\r\n a: 255\r\n };\r\n }\r\n\r\n // TODO: compare performance:\r\n // colorHexString = refineColorHexString(colorHexString);\r\n // // no alpha means opaque (non-transparent)\r\n // return {\r\n // r: parseInt(colorHexString.slice(0, 2), 16), // \"0x\" + ...\r\n // g: parseInt(colorHexString.slice(2, 4), 16),\r\n // b: parseInt(colorHexString.slice(4, 6), 16),\r\n // a: colorHexString.length > 6 ? parseInt(colorHexString.slice(6, 8), 16): 255\r\n // };\r\n\r\n // let hexString = input.replace('#', '');\r\n // if (hexString.length === 3) {\r\n // hexString = `${hexString[0]}${hexString[0]}${hexString[1]}${hexString[1]}${hexString[2]}${hexString[2]}`;\r\n // } \r\n // const r = parseInt(hexString.substring(0, 2), 16);\r\n // const g = parseInt(hexString.substring(2, 4), 16);\r\n // const b = parseInt(hexString.substring(4, 6), 16);\r\n }\r\n}\r\n\r\n// colorNumberToHexString\r\nexport function getColorHexStringFromNumber(color: number) {\r\n color = Math.floor(color);\r\n if (color == null || Number.isNaN(color)) {\r\n // color = 0;\r\n return \"\";\r\n }\r\n return \"#\" + ('000000' + color.toString(16)).slice(-6);\r\n}\r\n\r\nexport function get32BitColorHexStringFromNumber(color: number) {\r\n color = Math.floor(color);\r\n return \"#\" + ('00000000' + color.toString(16)).slice(-8);\r\n}\r\n\r\n// colorRgbaToNumber/colorRgbaToInt(Number)\r\n// { r: number, g: number, b: number, a?: number }\r\n// use24BitDepthForOpaque\r\nexport function getColorNumberFromRgba(r: number, g: number, b: number, a: number = null, use24BitsForOpaque: boolean = true) {\r\n let result: number;\r\n // typeof a !== \"number\"\r\n if (a == undefined || (a === 255 && use24BitsForOpaque)) { // a === 255?\r\n // 24-bit color number\r\n result = (r << 16) + (g << 8) + b << 0; // '+' can be replaced with '^' or '|' \r\n } else {\r\n // 32-bit color number\r\n result = (r << 24) + (g << 16) + (b << 8) + a;\r\n }\r\n return result >>> 0; // convert to unsigned int32\r\n}\r\n\r\n// colorRgbaToHexString\r\n// { r: number, g: number, b: number, a?: number }\r\nexport function getColorHexStringFromRgba(r: number, g: number, b: number, a: number = null) {\r\n const value = getColorNumberFromRgba(r, g, b, a);\r\n return getColorHexStringFromNumber(value);\r\n}\r\n\r\n// getColorNumberFromControlEvent\r\nexport function getColorNumberFromEvent(e: Event) {\r\n const colorHexString = (e.target as HTMLInputElement)?.value;\r\n return getColorNumberFromHexString(colorHexString);\r\n}\r\n\r\n/*\r\nfunction parse(orig: string) {\r\n if (!orig) {\r\n return {};\r\n }\r\n\r\n const result = orig.match(/(?:((hsl|rgb)a? *\\(([\\d.%]+(?:deg|g?rad|turn)?)[ ,]*([\\d.%]+)[ ,]*([\\d.%]+)[ ,/]*([\\d.%]*)\\))|(#((?:[\\d\\w]{3}){1,2})([\\d\\w]{1,2})?))/i);\r\n if (!result) {\r\n return { color: orig, opacity: 1.0 };\r\n } else if (result[7]) {\r\n let opacity = 1.0;\r\n if (result[9]) {\r\n opacity = parseInt(result[9].length == 1 ? `${result[9]}${result[9]}` : result[9], 16) * inv255;\r\n }\r\n return { color: `#${result[8]}`, opacity };\r\n } else if (result[0]) {\r\n return { color: `${result[2]}(${result[3]},${result[4]},${result[5]})`, opacity: (Number(result[6]) || 1.0) };\r\n }\r\n}\r\n*/"],"names":["getRandomColorChannelNumber","brightness","r","getRandomColorChannelString","result","getRandom32BitColorNumber","alpha","g","b","getColorNumberFromRgba","getRandomColorNumber","refineColorHexString","colorHexString","isNegative","getColorNumberFromHexString","getColorRgbaFromHexString","colorValue","getColorHexStringFromNumber","color","get32BitColorHexStringFromNumber","a","use24BitsForOpaque","getColorHexStringFromRgba","value","getColorNumberFromEvent","e"],"mappings":"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"}
1
+ {"version":3,"file":"color.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/color.ts"],"sourcesContent":null,"names":["getRandomColorChannelNumber","brightness","r","getRandomColorChannelString","result","getRandom32BitColorNumber","alpha","g","b","getColorNumberFromRgba","getRandomColorNumber","refineColorHexString","colorHexString","isNegative","getColorNumberFromHexString","getColorRgbaFromHexString","colorValue","getColorHexStringFromNumber","color","get32BitColorHexStringFromNumber","a","use24BitsForOpaque","getColorHexStringFromRgba","value","getColorNumberFromEvent","e"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cultures.es.js","sources":["D:/Src/my/actdim/public/utico/src/i18n/cultures.ts"],"sourcesContent":["import enUsCulture from './enUsCulture';\r\n\r\nconst cultures = {\r\n \"en-US\": enUsCulture,\r\n \"invariant\": enUsCulture // TODO: create invariant culture\r\n};\r\nexport default cultures;\r\n"],"names":["cultures","enUsCulture"],"mappings":";AAEA,MAAMA,IAAW;AAAA,EACb,SAASC;AAAA,EACT,WAAaA;AAAA;AACjB;"}
1
+ {"version":3,"file":"cultures.es.js","sources":["D:/Src/my/actdim/public/utico/src/i18n/cultures.ts"],"sourcesContent":null,"names":["cultures","enUsCulture"],"mappings":";AAEA,MAAMA,IAAW;AAAA,EACb,SAASC;AAAA,EACT,WAAaA;AAAA;AACjB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"enUsCulture.es.js","sources":["D:/Src/my/actdim/public/utico/src/i18n/enUsCulture.ts"],"sourcesContent":["// rename culture to locale?\r\n\r\n/*\r\nTODO:\r\nSorting and String Comparison\r\nString sorting and comparison are language-specific. Even within languages based on the Latin script, there are different composition and sorting rules. Thus do not rely on code points to do proper sorting and string comparison.\r\n\r\nCalendar Differences\r\nThe Gregorian calendar is used in most English speaking countries, but world-ready products should also take into consideration other calendaring systems in use worldwide.\r\n\r\nDate Formatting\r\nDate formatting is not constant through out the world. Although each date basically displays the day, month, and year, their presentation order and separators vary greatly. In fact, there may be many differences between regions within the same country.\r\n\r\nTime Formatting\r\nLike date and calendar formats, time formats are not constant throughout the world.\r\n\r\nCurrency Formatting\r\nCurrency formatting needs to take into consideration the currency symbol and symbol placement, and the number formatting display.\r\n\r\nNumber Formatting\r\nThe number formatting deals with the character used as the decimal and thousands separators.\r\n\r\nAddress Formatting\r\nVarious countries/regions have different address formats.\r\n\r\nTelephone Number Formatting\r\nLike addresses, the format for telephone numbers around the world varies significantly. The input fields and the routines that process information dealing with telephone numbers should be able to handle the variety of formats.\r\n\r\nPaper Size\r\nIt's important to set the paper size correctly if your application supports the print function.\r\n\r\nUnits of Measurement \r\nThroughout the world things are measured using different units and scales. The most popular one used is the metric system (meters, liters, grams, etc). Where as the US still uses the imperial system (feet, inches, pounds, etc).\r\n*/\r\n\r\n// CultureInfo\r\nconst enUsCulture = {\r\n dateTime: {\r\n formats: {\r\n // The leading zero is more commonly used with the 24-hour notation\r\n // especially in computer applications because it can help to maintain column alignment in tables and correct sorting order\r\n\r\n // A -> a?\r\n // YYYY -> YY? (for short formats)\r\n dateTime: \"MM/DD/YYYY hh:mm:ss.SSS A\",\r\n dateTime24: \"MM/DD/YYYY HH:mm:ss.SSS\",\r\n dateTimeShort: \"M/D/YYYY h:mm:ss A\",\r\n dateTime24Short: \"M/D/YYYY HH:mm:ss\",\r\n\r\n dataTimeHM: \"MM/DD/YYYY hh:mm A\",\r\n dataTimeH24M: \"MM/DD/YYYY HH:mm\",\r\n dataTimeHMShort: \"MM/DD/YYYY h:mm A\",\r\n dataTimeH24MShort: \"MM/DD/YYYY H:mm\",\r\n\r\n date: \"MM/DD/YYYY\",\r\n dateShort: \"M/D/YYYY\",\r\n\r\n // timeHMSS\r\n time: \"hh:mm:ss.SSS A\",\r\n // timeH24MSS\r\n time24: \"HH:mm:ss.SSS\",\r\n // timeHMSSShort\r\n timeShort: \"h:mm:ss.SSS A\",\r\n // timeH24MSSShort\r\n time24Short: \"H:mm:ss.SSS\",\r\n\r\n timeHM: \"hh:mm A\",\r\n timeH24M: \"HH:mm\",\r\n timeHMShort: \"h:mm A\",\r\n timeH24MShort: \"H:mm\",\r\n\r\n timeHMS: \"hh:mm:ss A\",\r\n timeH24MS: \"HH:mm:ss\",\r\n timeHMSShort: \"h:mm:ss A\",\r\n timeH24MSShort: \"H:mm:ss\"\r\n }\r\n }\r\n};\r\n\r\nexport default enUsCulture;"],"names":["enUsCulture"],"mappings":"AAoCA,MAAMA,IAAc;AAAA,EAChB,UAAU;AAAA,IACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAML,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,iBAAiB;AAAA,MAEjB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MAEnB,MAAM;AAAA,MACN,WAAW;AAAA;AAAA,MAGX,MAAM;AAAA;AAAA,MAEN,QAAQ;AAAA;AAAA,MAER,WAAW;AAAA;AAAA,MAEX,aAAa;AAAA,MAEb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,MAEf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,cAAc;AAAA,MACd,gBAAgB;AAAA,IAAA;AAAA,EACpB;AAER;"}
1
+ {"version":3,"file":"enUsCulture.es.js","sources":["D:/Src/my/actdim/public/utico/src/i18n/enUsCulture.ts"],"sourcesContent":null,"names":["enUsCulture"],"mappings":"AAoCA,MAAMA,IAAc;AAAA,EAChB,UAAU;AAAA,IACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAML,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,iBAAiB;AAAA,MAEjB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MAEnB,MAAM;AAAA,MACN,WAAW;AAAA;AAAA,MAGX,MAAM;AAAA;AAAA,MAEN,QAAQ;AAAA;AAAA,MAER,WAAW;AAAA;AAAA,MAEX,aAAa;AAAA,MAEb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,MAEf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,cAAc;AAAA,MACd,gBAAgB;AAAA,IAAA;AAAA,EACpB;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":null,"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"math.es.js","sources":["D:/Src/my/actdim/public/utico/src/math.ts"],"sourcesContent":["export function round(number: number, digits = 0): number {\r\n if (digits < 0) {\r\n throw new Error(\"Invalid argument: digits\");\r\n }\r\n const isNegavite = number < 0;\r\n const epsilon = Number.EPSILON * (isNegavite ? -1 : 1);\r\n\r\n if (digits == 0) {\r\n return Math.round(number + epsilon);\r\n }\r\n\r\n const factor = Math.pow(10, digits);\r\n // const _digits = +padEnd(\"1\", digits + 1, \"0\");\r\n return Math.round((number + epsilon) * factor) / factor;\r\n}\r\n\r\n// toPrecision\r\n// function roundToDecimal(string, decimals) {\r\n// \treturn parseFloat(parseFloat(string).toFixed(decimals));\r\n// }"],"names":["round","number","digits","isNegavite","epsilon","factor"],"mappings":"AAAO,SAASA,EAAMC,GAAgBC,IAAS,GAAW;AACtD,MAAIA,IAAS;AACT,UAAM,IAAI,MAAM,0BAA0B;AAE9C,QAAMC,IAAaF,IAAS,GACtBG,IAAU,OAAO,WAAWD,IAAa,KAAK;AAEpD,MAAID,KAAU;AACV,WAAO,KAAK,MAAMD,IAASG,CAAO;AAGtC,QAAMC,IAAS,KAAK,IAAI,IAAIH,CAAM;AAElC,SAAO,KAAK,OAAOD,IAASG,KAAWC,CAAM,IAAIA;AACrD;"}
1
+ {"version":3,"file":"math.es.js","sources":["D:/Src/my/actdim/public/utico/src/math.ts"],"sourcesContent":null,"names":["round","number","digits","isNegavite","epsilon","factor"],"mappings":"AAAO,SAASA,EAAMC,GAAgBC,IAAS,GAAW;AACtD,MAAIA,IAAS;AACT,UAAM,IAAI,MAAM,0BAA0B;AAE9C,QAAMC,IAAaF,IAAS,GACtBG,IAAU,OAAO,WAAWD,IAAa,KAAK;AAEpD,MAAID,KAAU;AACV,WAAO,KAAK,MAAMD,IAASG,CAAO;AAGtC,QAAMC,IAAS,KAAK,IAAI,IAAIH,CAAM;AAElC,SAAO,KAAK,OAAOD,IAASG,KAAWC,CAAM,IAAIA;AACrD;"}
@@ -2,7 +2,7 @@ export type IPropertyMetadataItem = {
2
2
  [propertyKey: PropertyKey]: any;
3
3
  };
4
4
  export declare function updatePropertyMetadata<T extends object>(target: T, propertyName: keyof T, value: any, slotName: string): void;
5
- export declare function getPropertyMetadata<T extends object>(target: T, propertyName: keyof T, slotName?: string): any;
6
- export declare function getPropertyMetadataItem<TMetadataItem>(metadata: WeakMap<any, TMetadataItem>, obj: any): TMetadataItem;
7
- export declare function metadata(value: any, slotName: string): (target: any, propertyKey: PropertyKey) => void;
5
+ export declare function getPropertyMetadata<TInstance, TMetadata = unknown>(target: TInstance, propertyName: keyof TInstance, slotName?: string): TMetadata;
6
+ export declare function getPropertyMetadataItem<TMetadataItem = unknown>(metadata: WeakMap<any, TMetadataItem>, obj: any): TMetadataItem;
7
+ export declare function metadata(value: unknown, slotName: string): (target: any, propertyKey: PropertyKey) => void;
8
8
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAAE,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAA;CAAE,CAAC;AAKxE,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,QAatH;AAGD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,OAmBxG;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,iBAmBrG;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,IAChC,QAAQ,GAAG,EAAE,aAAa,WAAW,UAGzD"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAAE,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAA;CAAE,CAAC;AAKxE,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,QAatH;AAGD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAmBlJ;AAED,wBAAgB,uBAAuB,CAAC,aAAa,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,iBAmB/G;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IACpC,QAAQ,GAAG,EAAE,aAAa,WAAW,UAGzD"}
@@ -1,22 +1,22 @@
1
1
  const p = /* @__PURE__ */ new WeakMap();
2
2
  function i(r, a, e, t) {
3
- let n = p.get(r);
4
- n || (n = {}, p.set(r, n));
5
- const o = a;
6
- n[o] || (n[o] = {}), n[o][t] = e;
3
+ let o = p.get(r);
4
+ o || (o = {}, p.set(r, o));
5
+ const n = a;
6
+ o[n] || (o[n] = {}), o[n][t] = e;
7
7
  }
8
8
  function u(r, a, e) {
9
9
  if (r && a) {
10
10
  const t = f(p, r);
11
11
  if (t) {
12
- const o = t[a];
13
- if (o)
14
- return e ? o[e] : o;
12
+ const n = t[a];
13
+ if (n)
14
+ return e ? n[e] : n;
15
15
  }
16
16
  }
17
17
  }
18
18
  function f(r, a) {
19
- let e = null, t;
19
+ let e, t;
20
20
  for (; t = Object.getPrototypeOf(t || a), !(!t || (e = r.get(t), e)); )
21
21
  ;
22
22
  return e;