@actdim/utico 0.9.0

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 (99) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +1 -0
  3. package/dist/array.d.ts +2 -0
  4. package/dist/array.d.ts.map +1 -0
  5. package/dist/array.es.js +7 -0
  6. package/dist/array.es.js.map +1 -0
  7. package/dist/arrayExtensions.d.ts +27 -0
  8. package/dist/arrayExtensions.d.ts.map +1 -0
  9. package/dist/arrayExtensions.es.js +67 -0
  10. package/dist/arrayExtensions.es.js.map +1 -0
  11. package/dist/cache/cacheDb.d.ts +30 -0
  12. package/dist/cache/cacheDb.d.ts.map +1 -0
  13. package/dist/cache/cacheDb.es.js +50 -0
  14. package/dist/cache/cacheDb.es.js.map +1 -0
  15. package/dist/cache/memoryCache.d.ts +33 -0
  16. package/dist/cache/memoryCache.d.ts.map +1 -0
  17. package/dist/cache/memoryCache.es.js +54 -0
  18. package/dist/cache/memoryCache.es.js.map +1 -0
  19. package/dist/cache/persistentCache.d.ts +50 -0
  20. package/dist/cache/persistentCache.d.ts.map +1 -0
  21. package/dist/cache/persistentCache.es.js +156 -0
  22. package/dist/cache/persistentCache.es.js.map +1 -0
  23. package/dist/dataFormats.d.ts +5 -0
  24. package/dist/dataFormats.d.ts.map +1 -0
  25. package/dist/dataFormats.es.js +8 -0
  26. package/dist/dataFormats.es.js.map +1 -0
  27. package/dist/dateTimeDataFormat.d.ts +26 -0
  28. package/dist/dateTimeDataFormat.d.ts.map +1 -0
  29. package/dist/dateTimeDataFormat.es.js +97 -0
  30. package/dist/dateTimeDataFormat.es.js.map +1 -0
  31. package/dist/gfx/canvasUtils.d.ts +20 -0
  32. package/dist/gfx/canvasUtils.d.ts.map +1 -0
  33. package/dist/gfx/canvasUtils.es.js +150 -0
  34. package/dist/gfx/canvasUtils.es.js.map +1 -0
  35. package/dist/gfx/color.d.ts +16 -0
  36. package/dist/gfx/color.d.ts.map +1 -0
  37. package/dist/gfx/color.es.js +92 -0
  38. package/dist/gfx/color.es.js.map +1 -0
  39. package/dist/i18n/cultures.d.ts +60 -0
  40. package/dist/i18n/cultures.d.ts.map +1 -0
  41. package/dist/i18n/cultures.es.js +10 -0
  42. package/dist/i18n/cultures.es.js.map +1 -0
  43. package/dist/i18n/enUsCulture.d.ts +30 -0
  44. package/dist/i18n/enUsCulture.d.ts.map +1 -0
  45. package/dist/i18n/enUsCulture.es.js +40 -0
  46. package/dist/i18n/enUsCulture.es.js.map +1 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.es.js +2 -0
  50. package/dist/index.es.js.map +1 -0
  51. package/dist/math.d.ts +2 -0
  52. package/dist/math.d.ts.map +1 -0
  53. package/dist/math.es.js +13 -0
  54. package/dist/math.es.js.map +1 -0
  55. package/dist/metadata.d.ts +7 -0
  56. package/dist/metadata.d.ts.map +1 -0
  57. package/dist/metadata.es.js +29 -0
  58. package/dist/metadata.es.js.map +1 -0
  59. package/dist/mutex.d.ts +8 -0
  60. package/dist/mutex.d.ts.map +1 -0
  61. package/dist/mutex.es.js +27 -0
  62. package/dist/mutex.es.js.map +1 -0
  63. package/dist/patterns.d.ts +2 -0
  64. package/dist/patterns.d.ts.map +1 -0
  65. package/dist/patterns.es.js +6 -0
  66. package/dist/patterns.es.js.map +1 -0
  67. package/dist/storage/persistentStorage.d.ts +11 -0
  68. package/dist/storage/persistentStorage.d.ts.map +1 -0
  69. package/dist/storage/persistentStorage.es.js +28 -0
  70. package/dist/storage/persistentStorage.es.js.map +1 -0
  71. package/dist/storage/storageContracts.d.ts +6 -0
  72. package/dist/storage/storageContracts.d.ts.map +1 -0
  73. package/dist/storage/storageContracts.es.js +2 -0
  74. package/dist/storage/storageContracts.es.js.map +1 -0
  75. package/dist/stringCore.d.ts +9 -0
  76. package/dist/stringCore.d.ts.map +1 -0
  77. package/dist/stringCore.es.js +35 -0
  78. package/dist/stringCore.es.js.map +1 -0
  79. package/dist/structEvent.d.ts +15 -0
  80. package/dist/structEvent.d.ts.map +1 -0
  81. package/dist/structEvent.es.js +34 -0
  82. package/dist/structEvent.es.js.map +1 -0
  83. package/dist/typeCore.d.ts +84 -0
  84. package/dist/typeCore.d.ts.map +1 -0
  85. package/dist/typeCore.es.js +7 -0
  86. package/dist/typeCore.es.js.map +1 -0
  87. package/dist/typeUtils.d.ts +42 -0
  88. package/dist/typeUtils.d.ts.map +1 -0
  89. package/dist/typeUtils.es.js +227 -0
  90. package/dist/typeUtils.es.js.map +1 -0
  91. package/dist/utils.d.ts +12 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.es.js +71 -0
  94. package/dist/utils.es.js.map +1 -0
  95. package/dist/watchable.d.ts +13 -0
  96. package/dist/watchable.d.ts.map +1 -0
  97. package/dist/watchable.es.js +38 -0
  98. package/dist/watchable.es.js.map +1 -0
  99. package/package.json +78 -0
@@ -0,0 +1,40 @@
1
+ const m = {
2
+ dateTime: {
3
+ formats: {
4
+ // The leading zero is more commonly used with the 24-hour notation
5
+ // especially in computer applications because it can help to maintain column alignment in tables and correct sorting order
6
+ // A -> a?
7
+ // YYYY -> YY? (for short formats)
8
+ dateTime: "MM/DD/YYYY hh:mm:ss.SSS A",
9
+ dateTime24: "MM/DD/YYYY HH:mm:ss.SSS",
10
+ dateTimeShort: "M/D/YYYY h:mm:ss A",
11
+ dateTime24Short: "M/D/YYYY HH:mm:ss",
12
+ dataTimeHM: "MM/DD/YYYY hh:mm A",
13
+ dataTimeH24M: "MM/DD/YYYY HH:mm",
14
+ dataTimeHMShort: "MM/DD/YYYY h:mm A",
15
+ dataTimeH24MShort: "MM/DD/YYYY H:mm",
16
+ date: "MM/DD/YYYY",
17
+ dateShort: "M/D/YYYY",
18
+ // timeHMSS
19
+ time: "hh:mm:ss.SSS A",
20
+ // timeH24MSS
21
+ time24: "HH:mm:ss.SSS",
22
+ // timeHMSSShort
23
+ timeShort: "h:mm:ss.SSS A",
24
+ // timeH24MSSShort
25
+ time24Short: "H:mm:ss.SSS",
26
+ timeHM: "hh:mm A",
27
+ timeH24M: "HH:mm",
28
+ timeHMShort: "h:mm A",
29
+ timeH24MShort: "H:mm",
30
+ timeHMS: "hh:mm:ss A",
31
+ timeH24MS: "HH:mm:ss",
32
+ timeHMSShort: "h:mm:ss A",
33
+ timeH24MSShort: "H:mm:ss"
34
+ }
35
+ }
36
+ };
37
+ export {
38
+ m as default
39
+ };
40
+ //# sourceMappingURL=enUsCulture.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enUsCulture.es.js","sources":["../../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,IACpB;AAAA,EACJ;AACJ;"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/math.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function round(number: number, digits?: number): number;
2
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAcxD"}
@@ -0,0 +1,13 @@
1
+ function e(o, r = 0) {
2
+ if (r < 0)
3
+ throw new Error("Invalid argument: digits");
4
+ const a = o < 0, t = Number.EPSILON * (a ? -1 : 1);
5
+ if (r == 0)
6
+ return Math.round(o + t);
7
+ const n = Math.pow(10, r);
8
+ return Math.round((o + t) * n) / n;
9
+ }
10
+ export {
11
+ e as round
12
+ };
13
+ //# sourceMappingURL=math.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.es.js","sources":["../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}"],"names":["round","number","digits","isNegavite","epsilon","factor"],"mappings":"AAAgB,SAAAA,EAAMC,GAAgBC,IAAS,GAAW;AACtD,MAAIA,IAAS;AACH,UAAA,IAAI,MAAM,0BAA0B;AAE9C,QAAMC,IAAaF,IAAS,GACtBG,IAAU,OAAO,WAAWD,IAAa,KAAK;AAEpD,MAAID,KAAU;AACH,WAAA,KAAK,MAAMD,IAASG,CAAO;AAGtC,QAAMC,IAAS,KAAK,IAAI,IAAIH,CAAM;AAElC,SAAO,KAAK,OAAOD,IAASG,KAAWC,CAAM,IAAIA;AACrD;"}
@@ -0,0 +1,7 @@
1
+ export type IPropertyMetadataItem = {
2
+ [propertyKey: PropertyKey]: any;
3
+ };
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
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,29 @@
1
+ const p = /* @__PURE__ */ new WeakMap();
2
+ function f(r, n, e, t) {
3
+ let a = p.get(r);
4
+ a || (a = {}, p.set(r, a));
5
+ const o = n;
6
+ a[o] || (a[o] = {}), a[o][t] = e;
7
+ }
8
+ function y(r, n, e) {
9
+ if (r && n) {
10
+ const t = i(p, r);
11
+ if (t) {
12
+ const o = t[n];
13
+ if (o)
14
+ return e ? o[e] : o;
15
+ }
16
+ }
17
+ }
18
+ function i(r, n) {
19
+ let e = null, t;
20
+ for (; t = Object.getPrototypeOf(t || n), !(!t || (e = r.get(t), e)); )
21
+ ;
22
+ return e;
23
+ }
24
+ export {
25
+ y as getPropertyMetadata,
26
+ i as getPropertyMetadataItem,
27
+ f as updatePropertyMetadata
28
+ };
29
+ //# sourceMappingURL=metadata.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.es.js","sources":["../src/metadata.ts"],"sourcesContent":["export type IPropertyMetadataItem = { [propertyKey: PropertyKey]: any };\r\n\r\nconst propertyMetadataBag = new WeakMap<any, IPropertyMetadataItem>();\r\n\r\n// updateMemberMetadata\r\nexport function updatePropertyMetadata<T extends object>(target: T, propertyName: keyof T, value: any, slotName: string) {\r\n // metadata container\r\n let metadataItem = propertyMetadataBag.get(target);\r\n if (!metadataItem) {\r\n metadataItem = {};\r\n propertyMetadataBag.set(target, metadataItem);\r\n }\r\n const propertyKey = propertyName as PropertyKey;\r\n if (!metadataItem[propertyKey]) {\r\n metadataItem[propertyKey] = {};\r\n }\r\n metadataItem[propertyKey][slotName] = value;\r\n\r\n}\r\n\r\n// getMemberMetadata\r\nexport function getPropertyMetadata<T extends object>(target: T, propertyName: keyof T, slotName?: string) {\r\n // target - obj\r\n if (target && propertyName) {\r\n // metadata container\r\n const metadataItem = getPropertyMetadataItem(propertyMetadataBag, target);\r\n if (metadataItem) {\r\n const propertyKey = propertyName as PropertyKey;\r\n const propertyMetadata = metadataItem[propertyKey];\r\n if (propertyMetadata) {\r\n if (slotName) {\r\n return propertyMetadata[slotName];\r\n } else {\r\n return propertyMetadata;\r\n }\r\n }\r\n }\r\n\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function getPropertyMetadataItem<TMetadataItem>(metadata: WeakMap<any, TMetadataItem>, obj: any) {\r\n\r\n // using prototype chain\r\n\r\n let result: TMetadataItem = null;\r\n let prototype;\r\n while (true) {\r\n prototype = Object.getPrototypeOf(prototype || obj);\r\n // actually for the most cases we can stop traversal when prototype === Object.prototype, but it is possible to set metadata for any lavel in prototype chain\r\n if (!prototype) {\r\n break;\r\n }\r\n result = metadata.get(prototype);\r\n if (result) {\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}"],"names":["propertyMetadataBag","updatePropertyMetadata","target","propertyName","value","slotName","metadataItem","propertyKey","getPropertyMetadata","getPropertyMetadataItem","propertyMetadata","metadata","obj","result","prototype"],"mappings":"AAEA,MAAMA,wBAA0B;AAGzB,SAASC,EAAyCC,GAAWC,GAAuBC,GAAYC,GAAkB;AAEjH,MAAAC,IAAeN,EAAoB,IAAIE,CAAM;AACjD,EAAKI,MACDA,IAAe,CAAA,GACKN,EAAA,IAAIE,GAAQI,CAAY;AAEhD,QAAMC,IAAcJ;AAChB,EAACG,EAAaC,CAAW,MACZD,EAAAC,CAAW,IAAI,KAEnBD,EAAAC,CAAW,EAAEF,CAAQ,IAAID;AAE1C;AAGgB,SAAAI,EAAsCN,GAAWC,GAAuBE,GAAmB;AAEvG,MAAIH,KAAUC,GAAc;AAElB,UAAAG,IAAeG,EAAwBT,GAAqBE,CAAM;AACxE,QAAII,GAAc;AAER,YAAAI,IAAmBJ,EADLH,CAC6B;AACjD,UAAIO;AACA,eAAIL,IACOK,EAAiBL,CAAQ,IAEzBK;AAAA,IAGnB;AAAA,EAEJ;AAEJ;AAEgB,SAAAD,EAAuCE,GAAuCC,GAAU;AAIpG,MAAIC,IAAwB,MACxBC;AACJ,SACgBA,IAAA,OAAO,eAAeA,KAAaF,CAAG,GAE9C,GAACE,MAGID,IAAAF,EAAS,IAAIG,CAAS,GAC3BD;AAAJ;AAKG,SAAAA;AACX;"}
@@ -0,0 +1,8 @@
1
+ import { Executor } from './typeCore';
2
+ declare class Mutex {
3
+ private mutex;
4
+ lock(): PromiseLike<() => void>;
5
+ dispatch<T>(fn: Executor<T>): Promise<T>;
6
+ }
7
+ export { Mutex };
8
+ //# sourceMappingURL=mutex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,cAAM,KAAK;IACP,OAAO,CAAC,KAAK,CAAqB;IAElC,IAAI,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;IAYzB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAQjD;AAED,OAAO,EACH,KAAK,EACR,CAAC"}
@@ -0,0 +1,27 @@
1
+ var i = Object.defineProperty;
2
+ var n = (r, e, t) => e in r ? i(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
+ var s = (r, e, t) => n(r, typeof e != "symbol" ? e + "" : e, t);
4
+ class l {
5
+ constructor() {
6
+ s(this, "mutex", Promise.resolve());
7
+ }
8
+ lock() {
9
+ let e = (t) => {
10
+ };
11
+ return this.mutex = this.mutex.then(() => new Promise(e)), new Promise((t) => {
12
+ e = t;
13
+ });
14
+ }
15
+ async dispatch(e) {
16
+ const t = await this.lock();
17
+ try {
18
+ return await Promise.resolve(e());
19
+ } finally {
20
+ t();
21
+ }
22
+ }
23
+ }
24
+ export {
25
+ l as Mutex
26
+ };
27
+ //# sourceMappingURL=mutex.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.es.js","sources":["../src/mutex.ts"],"sourcesContent":["import { Executor } from \"./typeCore\";\r\n\r\nclass Mutex {\r\n private mutex = Promise.resolve();\r\n\r\n lock(): PromiseLike<() => void> {\r\n let begin: (unlock: () => void) => void = unlock => { };\r\n\r\n this.mutex = this.mutex.then(() => {\r\n return new Promise(begin);\r\n });\r\n\r\n return new Promise(res => {\r\n begin = res;\r\n });\r\n }\r\n\r\n async dispatch<T>(fn: Executor<T>): Promise<T> {\r\n const unlock = await this.lock();\r\n try {\r\n return await Promise.resolve(fn());\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n}\r\n\r\nexport {\r\n Mutex\r\n};"],"names":["Mutex","__publicField","begin","unlock","res","fn"],"mappings":";;;AAEA,MAAMA,EAAM;AAAA,EAAZ;AACY,IAAAC,EAAA,eAAQ,QAAQ;;EAExB,OAAgC;AAC5B,QAAIC,IAAsC,CAAUC,MAAA;AAAA,IAAA;AAEpD,gBAAK,QAAQ,KAAK,MAAM,KAAK,MAClB,IAAI,QAAQD,CAAK,CAC3B,GAEM,IAAI,QAAQ,CAAOE,MAAA;AACd,MAAAF,IAAAE;AAAA,IAAA,CACX;AAAA,EACL;AAAA,EAEA,MAAM,SAAYC,GAA6B;AACrC,UAAAF,IAAS,MAAM,KAAK;AACtB,QAAA;AACA,aAAO,MAAM,QAAQ,QAAQE,EAAI,CAAA;AAAA,IAAA,UACnC;AACS,MAAAF;IACX;AAAA,EACJ;AACJ;"}
@@ -0,0 +1,2 @@
1
+ export declare const noop: () => void;
2
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,YAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ const o = () => {
2
+ };
3
+ export {
4
+ o as noop
5
+ };
6
+ //# sourceMappingURL=patterns.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.es.js","sources":["../src/patterns.ts"],"sourcesContent":["export const noop = () => {};"],"names":["noop"],"mappings":"AAAO,MAAMA,IAAO,MAAM;AAAC;"}
@@ -0,0 +1,11 @@
1
+ import { IPersistentStorage } from './storageContracts';
2
+ export declare class PersistentStorage<T> implements IPersistentStorage {
3
+ private slotName;
4
+ private useEncryption;
5
+ constructor(useEncryption?: boolean, slotName?: string);
6
+ getKeyInSlot(key: string): string;
7
+ get(key: string, useEncryption?: boolean): string;
8
+ set(key: string, value: string, useEncryption?: boolean): void;
9
+ remove(key: string): void;
10
+ }
11
+ //# sourceMappingURL=persistentStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistentStorage.d.ts","sourceRoot":"","sources":["../../src/storage/persistentStorage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAuBxD,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,kBAAkB;IAC3D,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,aAAa,CAAU;gBAEnB,aAAa,UAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM;IAKpD,YAAY,CAAC,GAAG,EAAE,MAAM;IAIxB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,UAAqB,GAAG,MAAM;IAc5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,UAAqB;IASlE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAI5B"}
@@ -0,0 +1,28 @@
1
+ var i = Object.defineProperty;
2
+ var n = (s, t, e) => t in s ? i(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
+ var r = (s, t, e) => n(s, typeof t != "symbol" ? t + "" : t, e);
4
+ class a {
5
+ constructor(t = !1, e) {
6
+ r(this, "slotName");
7
+ r(this, "useEncryption");
8
+ this.useEncryption = t, this.slotName = e || "";
9
+ }
10
+ getKeyInSlot(t) {
11
+ return this.slotName ? `${this.slotName}/${t}` : t;
12
+ }
13
+ get(t, e = this.useEncryption) {
14
+ t = this.getKeyInSlot(t);
15
+ let o = localStorage.getItem(t);
16
+ return o && (e && (o = window.atob(o)), o);
17
+ }
18
+ set(t, e, o = this.useEncryption) {
19
+ t = this.getKeyInSlot(t), o && (e = window.btoa(e)), localStorage.setItem(t, e);
20
+ }
21
+ remove(t) {
22
+ t = this.getKeyInSlot(t), localStorage.removeItem(t);
23
+ }
24
+ }
25
+ export {
26
+ a as PersistentStorage
27
+ };
28
+ //# sourceMappingURL=persistentStorage.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistentStorage.es.js","sources":["../../src/storage/persistentStorage.ts"],"sourcesContent":["// TODO: implement real encryption:\r\n// https://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption\r\n\r\nimport { IPersistentStorage } from \"./storageContracts\";\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\r\n// TODO: remove class, create factory method\r\n// TODO: support Indexed DB\r\nexport class PersistentStorage<T> implements IPersistentStorage {\r\n private slotName: string;\r\n\r\n private useEncryption: boolean;\r\n\r\n constructor(useEncryption = false, slotName?: string) {\r\n this.useEncryption = useEncryption;\r\n this.slotName = slotName || \"\";\r\n }\r\n\r\n getKeyInSlot(key: string) {\r\n return this.slotName ? `${this.slotName}/${key}` : key;\r\n }\r\n\r\n get(key: string, useEncryption = this.useEncryption): string {\r\n key = this.getKeyInSlot(key);\r\n let value = localStorage.getItem(key);\r\n if (!value) {\r\n return value;\r\n }\r\n // localStorage.setItem(key, value);\r\n if (useEncryption) {\r\n // decrypt\r\n value = window.atob(value);\r\n }\r\n return value;\r\n }\r\n\r\n set(key: string, value: string, useEncryption = this.useEncryption) {\r\n key = this.getKeyInSlot(key);\r\n if (useEncryption) {\r\n // encrypt\r\n value = window.btoa(value);\r\n }\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n remove(key: string): void {\r\n key = this.getKeyInSlot(key);\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n"],"names":["PersistentStorage","useEncryption","slotName","__publicField","key","value"],"mappings":";;;AA0BO,MAAMA,EAAmD;AAAA,EAK5D,YAAYC,IAAgB,IAAOC,GAAmB;AAJ9C,IAAAC,EAAA;AAEA,IAAAA,EAAA;AAGJ,SAAK,gBAAgBF,GACrB,KAAK,WAAWC,KAAY;AAAA,EAChC;AAAA,EAEA,aAAaE,GAAa;AACtB,WAAO,KAAK,WAAW,GAAG,KAAK,QAAQ,IAAIA,CAAG,KAAKA;AAAA,EACvD;AAAA,EAEA,IAAIA,GAAaH,IAAgB,KAAK,eAAuB;AACnD,IAAAG,IAAA,KAAK,aAAaA,CAAG;AACvB,QAAAC,IAAQ,aAAa,QAAQD,CAAG;AACpC,WAAKC,MAIDJ,MAEQI,IAAA,OAAO,KAAKA,CAAK,IAEtBA;AAAA,EACX;AAAA,EAEA,IAAID,GAAaC,GAAeJ,IAAgB,KAAK,eAAe;AAC1D,IAAAG,IAAA,KAAK,aAAaA,CAAG,GACvBH,MAEQI,IAAA,OAAO,KAAKA,CAAK,IAEhB,aAAA,QAAQD,GAAKC,CAAK;AAAA,EACnC;AAAA,EAEA,OAAOD,GAAmB;AAChB,IAAAA,IAAA,KAAK,aAAaA,CAAG,GAC3B,aAAa,WAAWA,CAAG;AAAA,EAC/B;AACJ;"}
@@ -0,0 +1,6 @@
1
+ export type IPersistentStorage = {
2
+ get(key: string, useEncryption?: boolean): string;
3
+ set(key: string, value: string, useEncryption?: boolean): void;
4
+ remove(key: string): void;
5
+ };
6
+ //# sourceMappingURL=storageContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageContracts.d.ts","sourceRoot":"","sources":["../../src/storage/storageContracts.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAA"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=storageContracts.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageContracts.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ declare const ciCompare: (strA: string, strB: string, locale?: string) => number;
2
+ declare function compare(strA: string, strB: string, ignoreCase?: boolean, locale?: string): number;
3
+ declare function equals(strA: string, strB: string, ignoreCase?: boolean, locale?: string): boolean;
4
+ declare function ciStartsWith(str: string, searchStr: string, locale?: string): boolean;
5
+ declare function ciEndsWith(str: string, searchStr: string, locale?: string): boolean;
6
+ declare function ciIndexOf(str: string, searchStr: string, locale?: string): number;
7
+ declare function ciIncludes(str: string, searchStr: string, locale?: string): boolean | -1;
8
+ export { equals, compare, ciCompare, ciStartsWith, ciEndsWith, ciIndexOf, ciIncludes };
9
+ //# sourceMappingURL=stringCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringCore.d.ts","sourceRoot":"","sources":["../src/stringCore.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS,SAMwD,MAAM,QAAQ,MAAM,4BAMvF,CAAC;AAEL,iBAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,EAAE,MAAM,SAAqB,UAQ3F;AAGD,iBAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,EAAE,MAAM,SAAqB,WAQ1F;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAqB,WAKhF;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAqB,WAK9E;AAED,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAqB,UAK7E;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAqB,gBAK9E;AAED,OAAO,EACH,MAAM,EACN,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACb,CAAC"}
@@ -0,0 +1,35 @@
1
+ const g = Intl.Collator(), a = (() => {
2
+ const e = {
3
+ sensitivity: "accent"
4
+ // or "base"
5
+ };
6
+ return "A".localeCompare("a", void 0, e) ? (n, t, o = navigator.language) => n.localeCompare(t, o, e) : (n, t, o) => n.toLocaleUpperCase(o).localeCompare(t.toLocaleUpperCase(o), o);
7
+ })();
8
+ function l(e, n, t = !1, o = navigator.language) {
9
+ return typeof e != "string" || typeof n != "string" ? g.compare(e, n) : t ? a(e, n, o) : e.localeCompare(n, o);
10
+ }
11
+ function i(e, n, t = !1, o = navigator.language) {
12
+ return typeof e != "string" || typeof n != "string" ? e === n : t ? a(e, n) === 0 : e.localeCompare(n, o) === 0;
13
+ }
14
+ function u(e, n, t = navigator.language) {
15
+ return typeof e != "string" || typeof n != "string" || e.length < n.length ? !1 : i(e.substring(0, n.length), n, !0, t);
16
+ }
17
+ function r(e, n, t = navigator.language) {
18
+ return typeof e != "string" || typeof n != "string" || e.length < n.length ? !1 : i(e.substring(e.length - n.length), n, !0, t);
19
+ }
20
+ function p(e, n, t = navigator.language) {
21
+ return typeof e != "string" || typeof n != "string" || e.length < n.length ? -1 : e.toLocaleUpperCase(t).indexOf(n.toLocaleUpperCase(t));
22
+ }
23
+ function f(e, n, t = navigator.language) {
24
+ return typeof e != "string" || typeof n != "string" || e.length < n.length ? -1 : e.toLocaleUpperCase(t).includes(n.toLocaleUpperCase(t));
25
+ }
26
+ export {
27
+ a as ciCompare,
28
+ r as ciEndsWith,
29
+ f as ciIncludes,
30
+ p as ciIndexOf,
31
+ u as ciStartsWith,
32
+ l as compare,
33
+ i as equals
34
+ };
35
+ //# sourceMappingURL=stringCore.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringCore.es.js","sources":["../src/stringCore.ts"],"sourcesContent":["// const currentLocale = new Intl.Locale(navigator.language);\r\n// const currentCollator = Intl.Collator(navigator.language);\r\nconst defaulCollator = Intl.Collator();\r\n\r\nconst ciCompare = (() => {\r\n const collatorOptions: Intl.CollatorOptions = {\r\n sensitivity: \"accent\" // or \"base\"\r\n };\r\n ;\r\n // feature detection\r\n return 'A'.localeCompare('a', undefined, collatorOptions) ? (strA: string, strB: string, locale = navigator.language) => {\r\n return strA.localeCompare(strB, locale, collatorOptions)\r\n } : (strA: string, strB: string, locale?: string) => {\r\n // fallback approach\r\n return strA.toLocaleUpperCase(locale).localeCompare(strB.toLocaleUpperCase(locale), locale);\r\n };\r\n})();\r\n\r\nfunction compare(strA: string, strB: string, ignoreCase = false, locale = navigator.language) {\r\n if (typeof strA !== 'string' || typeof strB !== 'string') {\r\n return defaulCollator.compare(strA, strB);\r\n }\r\n if (ignoreCase) {\r\n return ciCompare(strA, strB, locale);\r\n }\r\n return strA.localeCompare(strB, locale);\r\n}\r\n\r\n// isEqual\r\nfunction equals(strA: string, strB: string, ignoreCase = false, locale = navigator.language) {\r\n if (typeof strA !== 'string' || typeof strB !== 'string') {\r\n return strA === strB;\r\n }\r\n if (ignoreCase) {\r\n return ciCompare(strA, strB) === 0;\r\n }\r\n return strA.localeCompare(strB, locale) === 0;\r\n}\r\n\r\nfunction ciStartsWith(str: string, searchStr: string, locale = navigator.language) {\r\n if (typeof str !== 'string' || typeof searchStr !== 'string' || str.length < searchStr.length) {\r\n return false;\r\n }\r\n return equals(str.substring(0, searchStr.length), searchStr, true, locale);\r\n}\r\n\r\nfunction ciEndsWith(str: string, searchStr: string, locale = navigator.language) {\r\n if (typeof str !== 'string' || typeof searchStr !== 'string' || str.length < searchStr.length) {\r\n return false;\r\n }\r\n return equals(str.substring(str.length - searchStr.length), searchStr, true, locale);\r\n}\r\n\r\nfunction ciIndexOf(str: string, searchStr: string, locale = navigator.language) {\r\n if (typeof str !== 'string' || typeof searchStr !== 'string' || str.length < searchStr.length) {\r\n return -1;\r\n }\r\n return str.toLocaleUpperCase(locale).indexOf(searchStr.toLocaleUpperCase(locale));\r\n}\r\n\r\nfunction ciIncludes(str: string, searchStr: string, locale = navigator.language) {\r\n if (typeof str !== 'string' || typeof searchStr !== 'string' || str.length < searchStr.length) {\r\n return -1;\r\n }\r\n return str.toLocaleUpperCase(locale).includes(searchStr.toLocaleUpperCase(locale));\r\n}\r\n\r\nexport {\r\n equals,\r\n compare,\r\n ciCompare,\r\n ciStartsWith,\r\n ciEndsWith,\r\n ciIndexOf,\r\n ciIncludes\r\n};"],"names":["defaulCollator","ciCompare","collatorOptions","strA","strB","locale","compare","ignoreCase","equals","ciStartsWith","str","searchStr","ciEndsWith","ciIndexOf","ciIncludes"],"mappings":"AAEA,MAAMA,IAAiB,KAAK,YAEtBC,KAAa,MAAM;AACrB,QAAMC,IAAwC;AAAA,IAC1C,aAAa;AAAA;AAAA,EAAA;AAIV,SAAA,IAAI,cAAc,KAAK,QAAWA,CAAe,IAAI,CAACC,GAAcC,GAAcC,IAAS,UAAU,aACjGF,EAAK,cAAcC,GAAMC,GAAQH,CAAe,IACvD,CAACC,GAAcC,GAAcC,MAEtBF,EAAK,kBAAkBE,CAAM,EAAE,cAAcD,EAAK,kBAAkBC,CAAM,GAAGA,CAAM;AAElG,GAAG;AAEH,SAASC,EAAQH,GAAcC,GAAcG,IAAa,IAAOF,IAAS,UAAU,UAAU;AAC1F,SAAI,OAAOF,KAAS,YAAY,OAAOC,KAAS,WACrCJ,EAAe,QAAQG,GAAMC,CAAI,IAExCG,IACON,EAAUE,GAAMC,GAAMC,CAAM,IAEhCF,EAAK,cAAcC,GAAMC,CAAM;AAC1C;AAGA,SAASG,EAAOL,GAAcC,GAAcG,IAAa,IAAOF,IAAS,UAAU,UAAU;AACzF,SAAI,OAAOF,KAAS,YAAY,OAAOC,KAAS,WACrCD,MAASC,IAEhBG,IACON,EAAUE,GAAMC,CAAI,MAAM,IAE9BD,EAAK,cAAcC,GAAMC,CAAM,MAAM;AAChD;AAEA,SAASI,EAAaC,GAAaC,GAAmBN,IAAS,UAAU,UAAU;AAC3E,SAAA,OAAOK,KAAQ,YAAY,OAAOC,KAAc,YAAYD,EAAI,SAASC,EAAU,SAC5E,KAEJH,EAAOE,EAAI,UAAU,GAAGC,EAAU,MAAM,GAAGA,GAAW,IAAMN,CAAM;AAC7E;AAEA,SAASO,EAAWF,GAAaC,GAAmBN,IAAS,UAAU,UAAU;AACzE,SAAA,OAAOK,KAAQ,YAAY,OAAOC,KAAc,YAAYD,EAAI,SAASC,EAAU,SAC5E,KAEJH,EAAOE,EAAI,UAAUA,EAAI,SAASC,EAAU,MAAM,GAAGA,GAAW,IAAMN,CAAM;AACvF;AAEA,SAASQ,EAAUH,GAAaC,GAAmBN,IAAS,UAAU,UAAU;AACxE,SAAA,OAAOK,KAAQ,YAAY,OAAOC,KAAc,YAAYD,EAAI,SAASC,EAAU,SAC5E,KAEJD,EAAI,kBAAkBL,CAAM,EAAE,QAAQM,EAAU,kBAAkBN,CAAM,CAAC;AACpF;AAEA,SAASS,EAAWJ,GAAaC,GAAmBN,IAAS,UAAU,UAAU;AACzE,SAAA,OAAOK,KAAQ,YAAY,OAAOC,KAAc,YAAYD,EAAI,SAASC,EAAU,SAC5E,KAEJD,EAAI,kBAAkBL,CAAM,EAAE,SAASM,EAAU,kBAAkBN,CAAM,CAAC;AACrF;"}
@@ -0,0 +1,15 @@
1
+ export declare class StructEvent<TStruct extends Record<string, any>, TTarget extends StructEventTarget<TStruct>, TType extends Extract<keyof TStruct, string> = Extract<keyof TStruct, string>> extends CustomEvent<TStruct[TType]> {
2
+ target: TTarget;
3
+ type: TType;
4
+ constructor(type: TType, eventInitDict?: CustomEventInit<TStruct[TType]> & {
5
+ target: TTarget;
6
+ });
7
+ }
8
+ export declare class StructEventTarget<TStruct extends Record<string, any>> extends EventTarget implements StructEventTarget<TStruct> {
9
+ constructor();
10
+ addEventListener<K extends Extract<keyof TStruct, string>>(type: K, listener: (event: StructEvent<TStruct, this, K>) => void, options?: boolean | AddEventListenerOptions): void;
11
+ removeEventListener<K extends Extract<keyof TStruct, string>>(type: K, listener: (event: StructEvent<TStruct, this, K>) => void, options?: boolean | EventListenerOptions): void;
12
+ dispatchEvent<K extends Extract<keyof TStruct, string>>(event: StructEvent<TStruct, this, K>): boolean;
13
+ hasEventListener<K extends Extract<keyof TStruct, string>>(type: K, listener: (event: StructEvent<TStruct, this, K>) => void): boolean;
14
+ }
15
+ //# sourceMappingURL=structEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structEvent.d.ts","sourceRoot":"","sources":["../src/structEvent.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW,CACpB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,OAAO,SAAS,iBAAiB,CAAC,OAAO,CAAC,EAC1C,KAAK,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAC/E,SAAQ,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC;IAEhB,IAAI,EAAE,KAAK,CAAC;gBACA,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE;CAIjG;AAID,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,WAAY,YAAW,iBAAiB,CAAC,OAAO,CAAC;;IAKzH,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,EACrD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI;IAIP,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,EACxD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI;IAIP,aAAa,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO;IAItG,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO;CAGzI"}
@@ -0,0 +1,34 @@
1
+ var o = Object.defineProperty;
2
+ var a = (r, e, t) => e in r ? o(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
+ var n = (r, e, t) => a(r, typeof e != "symbol" ? e + "" : e, t);
4
+ class v extends CustomEvent {
5
+ constructor(t, s) {
6
+ super(t, s);
7
+ n(this, "target");
8
+ // currentTarget: TTarget;
9
+ n(this, "type");
10
+ this.target = s.target;
11
+ }
12
+ }
13
+ class E extends EventTarget {
14
+ constructor() {
15
+ super();
16
+ }
17
+ addEventListener(e, t, s) {
18
+ super.addEventListener(e, t, s);
19
+ }
20
+ removeEventListener(e, t, s) {
21
+ super.removeEventListener(e, t);
22
+ }
23
+ dispatchEvent(e) {
24
+ return super.dispatchEvent(e);
25
+ }
26
+ hasEventListener(e, t) {
27
+ throw new Error("Method not implemented.");
28
+ }
29
+ }
30
+ export {
31
+ v as StructEvent,
32
+ E as StructEventTarget
33
+ };
34
+ //# sourceMappingURL=structEvent.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structEvent.es.js","sources":["../src/structEvent.ts"],"sourcesContent":["import { Struct } from \"./typeCore\";\r\n\r\nexport class StructEvent<\r\n TStruct extends Record<string, any>,\r\n TTarget extends StructEventTarget<TStruct>,\r\n TType extends Extract<keyof TStruct, string> = Extract<keyof TStruct, string>\r\n> extends CustomEvent<TStruct[TType]> {\r\n target: TTarget;\r\n // currentTarget: TTarget;\r\n type: TType;\r\n constructor(type: TType, eventInitDict?: CustomEventInit<TStruct[TType]> & { target: TTarget }) {\r\n super(type, eventInitDict);\r\n this.target = eventInitDict.target;\r\n }\r\n}\r\n\r\n// TKeys extends Extract<keyof TStruct, string> = Extract<keyof TStruct, string>>\r\n// StructEventDispatcher\r\nexport class StructEventTarget<TStruct extends Record<string, any>> extends EventTarget implements StructEventTarget<TStruct> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n addEventListener<K extends Extract<keyof TStruct, string>>(\r\n type: K,\r\n listener: (event: StructEvent<TStruct, this, K>) => void,\r\n options?: boolean | AddEventListenerOptions\r\n ): void {\r\n super.addEventListener(type, listener, options);\r\n }\r\n\r\n removeEventListener<K extends Extract<keyof TStruct, string>>(\r\n type: K,\r\n listener: (event: StructEvent<TStruct, this, K>) => void,\r\n options?: boolean | EventListenerOptions\r\n ): void {\r\n super.removeEventListener(type, listener);\r\n }\r\n\r\n dispatchEvent<K extends Extract<keyof TStruct, string>>(event: StructEvent<TStruct, this, K>): boolean {\r\n return super.dispatchEvent(event);\r\n }\r\n\r\n hasEventListener<K extends Extract<keyof TStruct, string>>(type: K, listener: (event: StructEvent<TStruct, this, K>) => void): boolean {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n"],"names":["StructEvent","type","eventInitDict","__publicField","StructEventTarget","listener","options","event"],"mappings":";;;AAEO,MAAMA,UAIH,YAA4B;AAAA,EAIlC,YAAYC,GAAaC,GAAuE;AAC5F,UAAMD,GAAMC,CAAa;AAJ7B,IAAAC,EAAA;AAEA;AAAA,IAAAA,EAAA;AAGI,SAAK,SAASD,EAAc;AAAA,EAChC;AACJ;AAIO,MAAME,UAA+D,YAAkD;AAAA,EAC1H,cAAc;AACJ;EACV;AAAA,EAEA,iBACIH,GACAI,GACAC,GACI;AACE,UAAA,iBAAiBL,GAAMI,GAAUC,CAAO;AAAA,EAClD;AAAA,EAEA,oBACIL,GACAI,GACAC,GACI;AACE,UAAA,oBAAoBL,GAAMI,CAAQ;AAAA,EAC5C;AAAA,EAEA,cAAwDE,GAA+C;AAC5F,WAAA,MAAM,cAAcA,CAAK;AAAA,EACpC;AAAA,EAEA,iBAA2DN,GAASI,GAAmE;AAC7H,UAAA,IAAI,MAAM,yBAAyB;AAAA,EAC7C;AACJ;"}
@@ -0,0 +1,84 @@
1
+ export type Skip<T extends object, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
2
+ export type Filter<T extends object, V> = {
3
+ [K in keyof T as T[K] extends V ? K : never]: T[K];
4
+ };
5
+ export type Diff<T, U> = Omit<T, keyof U>;
6
+ export type StrictDiff<T, U> = {
7
+ [K in keyof T as K extends keyof U ? (T[K] extends U[K] ? (U[K] extends T[K] ? never : K) : K) : K]: T[K];
8
+ };
9
+ export type Intersection<T, U> = Pick<T, Extract<keyof T, keyof U>>;
10
+ export type Extend<T extends object, U extends object, K extends keyof U> = T & {
11
+ [P in K]: U[K];
12
+ };
13
+ export type ValueOf<T extends object> = T[keyof T];
14
+ export type OneOnly<T, Key extends keyof T> = {
15
+ [key in Exclude<keyof T, Key>]: null;
16
+ } & Pick<T, Key>;
17
+ export type OneOfByKey<T> = {
18
+ [key in keyof T]: OneOnly<T, key>;
19
+ };
20
+ export type OneOfType<T> = ValueOf<OneOfByKey<T>>;
21
+ export type KeyOfType<FromType extends object, KeepType = any, Include = true> = {
22
+ [K in keyof FromType]: FromType[K] extends KeepType ? (Include extends true ? K : never) : Include extends true ? never : K;
23
+ }[keyof FromType];
24
+ export type Weaken<T, K extends keyof T> = {
25
+ [P in keyof T]: P extends K ? any : T[P];
26
+ };
27
+ export type Mutable<T extends object> = {
28
+ -readonly [K in keyof T]: T[K];
29
+ };
30
+ export type Constructor = new (...args: any[]) => any;
31
+ export type ConstructorClass<TConstructor extends Constructor> = TConstructor extends new (...args: any[]) => infer TClass ? TClass : never;
32
+ export type CallableConstructor<TConstructor extends Constructor> = TConstructor & ((...args: ConstructorParameters<TConstructor>) => ConstructorClass<TConstructor>);
33
+ export type ToUpper<T> = T extends string ? Uppercase<T> : {
34
+ [K in keyof T as K extends string ? Uppercase<K> : K]: T[K];
35
+ };
36
+ export type ToLower<T> = T extends string ? Lowercase<T> : {
37
+ [K in keyof T as K extends string ? Lowercase<K> : K]: T[K];
38
+ };
39
+ export type AddPrefix<T, TPrefix extends string> = T extends string ? `${TPrefix}${T}` : {
40
+ [K in keyof T as AddPrefix<K, TPrefix>]: T[K];
41
+ };
42
+ export type AddSuffix<T, TSuffix extends string> = T extends string ? `${T}${TSuffix}` : {
43
+ [K in keyof T as AddSuffix<K, TSuffix>]: T[K];
44
+ };
45
+ export type RemovePrefix<T, TPrefix extends string> = T extends string ? T extends `${TPrefix}${infer Tail}` ? RemovePrefix<Tail, TPrefix> : T : {
46
+ [K in keyof T as RemovePrefix<K, TPrefix>]: T[K];
47
+ };
48
+ export type RemoveSuffix<T, TSuffix extends string> = T extends string ? T extends `${infer Head}${TSuffix}` ? RemoveSuffix<Head, TSuffix> : T : {
49
+ [K in keyof T as RemoveSuffix<K, TSuffix>]: T[K];
50
+ };
51
+ export declare const getPrefixer: (prefix: string) => (value: string) => string;
52
+ export declare const getValuePrefixer: <T extends {
53
+ [key: string]: string;
54
+ }>(prefix: string) => (dict: T) => T;
55
+ export declare const getKeyPrefixer: <T extends {
56
+ [key: string]: any;
57
+ }>(prefix: string) => (obj: T) => object;
58
+ export type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<T>;
59
+ export type Func<TArgs extends any[] = any[], T = any> = {
60
+ (...args: TArgs): T;
61
+ name?: string;
62
+ };
63
+ export type Action<TArgs extends any[] = any[]> = Func<TArgs, void>;
64
+ export type AsyncFunc<TArgs extends any[] = any[], T = any> = Func<TArgs, PromiseLike<T>>;
65
+ export type AwaitedReturnType<TFunc extends Func> = Awaited<ReturnType<TFunc>>;
66
+ export type Factory<T = any, TArgs extends any[] = []> = Func<TArgs, T>;
67
+ export type IProvider<TFactory = Factory> = {
68
+ get: TFactory;
69
+ };
70
+ export type ParameterType<TFunc, TParamIndex extends number> = TFunc extends Func<infer TArgs extends any[], infer TResult> ? TArgs[TParamIndex] : never;
71
+ export type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T | PromiseLike<T>>;
72
+ export type Overwrite<Base extends object, Overrides extends object> = Omit<Base, keyof Overrides> & Overrides;
73
+ export type Extends<T extends object, TBase extends object> = T extends TBase ? true : false;
74
+ export type RequireExtends<T extends TBase, TBase extends object> = T;
75
+ export type MaybeExtends<T, TShape> = T extends TShape ? T : never;
76
+ export type KeyOf<T extends object, TKey extends keyof T> = TKey;
77
+ export type IsKeyOf<T, TKey extends object> = TKey extends keyof T ? true : false;
78
+ export type KeysOf<T extends object, TKeys extends keyof T | Array<keyof T>> = TKeys extends Array<keyof T> ? TKeys[number] : TKeys;
79
+ export type SafeKey<T extends object, K extends PropertyKey> = K extends keyof T ? K : never;
80
+ export type IsTuple<T> = T extends readonly [...infer Elements] ? (number extends Elements["length"] ? false : true) : false;
81
+ export type Struct<T> = {
82
+ [K in keyof T]: T[K];
83
+ };
84
+ //# sourceMappingURL=typeCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeCore.d.ts","sourceRoot":"","sources":["../src/typeCore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ const n = (r) => (e) => `${r}${e}`, s = (r) => (e) => Object.fromEntries(Object.keys(e).map((t) => [t, `${r}${e[t]}`])), c = (r) => (e) => Object.fromEntries(Object.keys(e).map((t) => [`${r}${t}`, e[t]]));
2
+ export {
3
+ c as getKeyPrefixer,
4
+ n as getPrefixer,
5
+ s as getValuePrefixer
6
+ };
7
+ //# sourceMappingURL=typeCore.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeCore.es.js","sources":["../src/typeCore.ts"],"sourcesContent":["// @filename: typeCore.ts\r\n\r\n// type SplitStringToUnion<T extends string, Separator extends string> = T extends `${infer First}${Separator}${infer Rest}`\r\n// ? First | SplitStringToUnion<Rest, Separator>\r\n// : T;\r\n\r\n// more useful version of Omit\r\n\r\nexport type Skip<T extends object, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; // FilterOut\r\n// export type Skip<T, K extends keyof T> = {\r\n// [P in keyof T as P extends K ? never : P]: T[P];\r\n// };\r\n\r\n// export type PickEx<T extends object, TKeys extends keyof T | Array<keyof T>> = {\r\n// [K in TKeys extends Array<keyof T> ? TKeys[number] : TKeys]: T[K];\r\n// };\r\n\r\nexport type Filter<T extends object, V> = {\r\n [K in keyof T as T[K] extends V ? K : never]: T[K];\r\n};\r\n\r\nexport type Diff<T, U> = Omit<T, keyof U>;\r\nexport type StrictDiff<T, U> = {\r\n [K in keyof T as K extends keyof U ? (T[K] extends U[K] ? (U[K] extends T[K] ? never : K) : K) : K]: T[K];\r\n};\r\n\r\nexport type Intersection<T, U> = Pick<T, Extract<keyof T, keyof U>>;\r\n\r\nexport type Extend<T extends object, U extends object, K extends keyof U> = T & { [P in K]: U[K] };\r\n\r\n// Validation\r\nexport type ValueOf<T extends object> = T[keyof T];\r\nexport type OneOnly<T, Key extends keyof T> = { [key in Exclude<keyof T, Key>]: null } & Pick<T, Key>;\r\nexport type OneOfByKey<T> = { [key in keyof T]: OneOnly<T, key> };\r\nexport type OneOfType<T> = ValueOf<OneOfByKey<T>>;\r\n\r\n// Extract version\r\nexport type KeyOfType<FromType extends object, KeepType = any, Include = true> = {\r\n [K in keyof FromType]: FromType[K] extends KeepType ? (Include extends true ? K : never) : Include extends true ? never : K;\r\n}[keyof FromType];\r\n\r\nexport type Weaken<T, K extends keyof T> = {\r\n [P in keyof T]: P extends K ? any : T[P];\r\n};\r\n\r\nexport type Mutable<T extends object> = {\r\n -readonly [K in keyof T]: T[K];\r\n};\r\n\r\nexport type Constructor = new (...args: any[]) => any;\r\n// export type ConstructorParameters<TConstructor extends Constructor> = TConstructor extends new (...args: infer TArgs) => any ? TArgs : never;\r\n\r\n// Extracts class instance type from class constructor\r\nexport type ConstructorClass<TConstructor extends Constructor> = TConstructor extends new (...args: any[]) => infer TClass ? TClass : never;\r\n\r\n// This is what we want: to be able to create new class instances\r\n// either with or without \"new\" keyword\r\nexport type CallableConstructor<TConstructor extends Constructor> = TConstructor &\r\n ((...args: ConstructorParameters<TConstructor>) => ConstructorClass<TConstructor>);\r\n\r\n// ToUpperCase\r\nexport type ToUpper<T> = T extends string\r\n ? Uppercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Uppercase<K> : K]: T[K];\r\n };\r\n\r\n// ToLowerCase\r\nexport type ToLower<T> = T extends string\r\n ? Lowercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Lowercase<K> : K]: T[K];\r\n };\r\n\r\nexport type AddPrefix<T, TPrefix extends string> = T extends string\r\n ? `${TPrefix}${T}`\r\n : {\r\n [K in keyof T as AddPrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type AddSuffix<T, TSuffix extends string> = T extends string\r\n ? `${T}${TSuffix}`\r\n : {\r\n [K in keyof T as AddSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport type RemovePrefix<T, TPrefix extends string> = T extends string\r\n ? T extends `${TPrefix}${infer Tail}`\r\n ? RemovePrefix<Tail, TPrefix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemovePrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type RemoveSuffix<T, TSuffix extends string> = T extends string\r\n ? T extends `${infer Head}${TSuffix}`\r\n ? RemoveSuffix<Head, TSuffix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemoveSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport const getPrefixer = (prefix: string) => (value: string) => {\r\n return `${prefix}${value}`;\r\n};\r\n\r\nexport const getValuePrefixer =\r\n <T extends { [key: string]: string }>(prefix: string) =>\r\n (dict: T): T => {\r\n return Object.fromEntries(Object.keys(dict).map((k) => [k, `${prefix}${dict[k]}`])) as T;\r\n };\r\n\r\nexport const getKeyPrefixer =\r\n <T extends { [key: string]: any }>(prefix: string) =>\r\n (obj: T): object => {\r\n return Object.fromEntries(Object.keys(obj).map((k) => [`${prefix}${k}`, obj[k]]));\r\n };\r\n\r\n// export type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<Awaited<T>>; // TODO: check\r\nexport type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<T>;\r\n\r\nexport type Func<TArgs extends any[] = any[], T = any> = {\r\n (...args: TArgs): T;\r\n name?: string;\r\n};\r\n\r\nexport type Action<TArgs extends any[] = any[]> = Func<TArgs, void>;\r\n\r\nexport type AsyncFunc<TArgs extends any[] = any[], T = any> = Func<TArgs, PromiseLike<T>>;\r\n\r\n// use built-in ReturnType:\r\n// type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\r\n// my version:\r\n// export type ReturnType<TFunc> = TFunc extends Func<infer TArgs, infer TResult> ? TResult : never;\r\n\r\n// use built-in Awaited type:\r\n/*\r\n// Recursively unwraps the \"awaited type\" of a type. \r\n// Non-promise \"thenables\" should resolve to `never`. \r\n// This emulates the behavior of `await`.\r\ntype Awaited<T> = T extends null | undefined ? T : // special case for `null | undefined` when not in `--strictNullChecks` mode\r\n T extends object & { then(onfulfilled: infer F, ...args: infer _): any; } ? // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\r\n F extends ((value: infer V, ...args: infer _) => any) ? // if the argument to `then` is callable, extracts the first argument\r\n Awaited<V> : // recursively unwrap the value\r\n never : // the argument to `then` was not callable\r\n T; // non-object or non-thenable\r\n*/\r\n\r\n// my simple version (PromiseType):\r\n// export type Awaited<TPromise> = TPromise extends PromiseLike<infer TResult> ? TResult : TPromise;\r\n\r\n// AsyncReturnType\r\nexport type AwaitedReturnType<TFunc extends Func> = Awaited<ReturnType<TFunc>>;\r\n\r\nexport type Factory<T = any, TArgs extends any[] = []> = Func<TArgs, T>;\r\n\r\nexport type IProvider<TFactory = Factory> = {\r\n get: TFactory;\r\n};\r\n\r\n// (Func)ParameterType\r\n// type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;\r\n/** see also built-in Parameters type */\r\nexport type ParameterType<TFunc, TParamIndex extends number> = TFunc extends Func<infer TArgs extends any[], infer TResult>\r\n ? TArgs[TParamIndex]\r\n : never;\r\n\r\n// Lambda?\r\n// export type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T> | AsyncFunc<[], T>;\r\nexport type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T | PromiseLike<T>>;\r\n\r\nexport type Overwrite<Base extends object, Overrides extends object> = Omit<Base, keyof Overrides> & Overrides;\r\n// or\r\n// export type Overwrite<Base extends object, Overrides extends object> = Pick<Base, Exclude<keyof Base, keyof Overrides>> & Overrides;\r\n\r\nexport type Extends<T extends object, TBase extends object> = T extends TBase ? true : false;\r\n\r\n// more strict than Extract\r\nexport type RequireExtends<T extends TBase, TBase extends object> = T;\r\n\r\nexport type MaybeExtends<T, TShape> = T extends TShape ? T : never;\r\n\r\nexport type KeyOf<T extends object, TKey extends keyof T> = TKey;\r\n\r\nexport type IsKeyOf<T, TKey extends object> = TKey extends keyof T ? true : false;\r\n\r\nexport type KeysOf<T extends object, TKeys extends keyof T | Array<keyof T>> = TKeys extends Array<keyof T> ? TKeys[number] : TKeys;\r\n\r\nexport type SafeKey<T extends object, K extends PropertyKey> = K extends keyof T ? K : never;\r\n\r\nexport type IsTuple<T> = T extends readonly [...infer Elements] ? (number extends Elements[\"length\"] ? false : true) : false;\r\n\r\n// for classes only:\r\n// export type ExtractInterface<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R\r\n// ? { [K in keyof R]: R[K] }\r\n// : never;\r\n\r\n// Struct(Copy), Shape, Interface \r\nexport type Struct<T> = { [K in keyof T]: T[K] };\r\n"],"names":["getPrefixer","prefix","value","getValuePrefixer","dict","k","getKeyPrefixer","obj"],"mappings":"AAsGO,MAAMA,IAAc,CAACC,MAAmB,CAACC,MACrC,GAAGD,CAAM,GAAGC,CAAK,IAGfC,IACT,CAAsCF,MACtC,CAACG,MACU,OAAO,YAAY,OAAO,KAAKA,CAAI,EAAE,IAAI,CAACC,MAAM,CAACA,GAAG,GAAGJ,CAAM,GAAGG,EAAKC,CAAC,CAAC,EAAE,CAAC,CAAC,GAG7EC,IACT,CAAmCL,MACnC,CAACM,MACU,OAAO,YAAY,OAAO,KAAKA,CAAG,EAAE,IAAI,CAACF,MAAM,CAAC,GAAGJ,CAAM,GAAGI,CAAC,IAAIE,EAAIF,CAAC,CAAC,CAAC,CAAC;"}
@@ -0,0 +1,42 @@
1
+ import { CallableConstructor, Constructor } from './typeCore';
2
+ export declare function keysOf<T extends object>(obj: T): Array<keyof T>;
3
+ export declare function entry<T extends object, TKey extends keyof T>(obj: T, name: TKey, caseInsensitive?: boolean): [TKey, T[TKey]];
4
+ export declare function satisfies<TShape>(): <T extends TShape>(obj: T) => T;
5
+ export declare const keyOf: <T extends object, TKey extends keyof T = keyof T>(key: TKey, obj?: T) => TKey;
6
+ export declare function nameOf<T extends object>(f: (x: T) => T[keyof T]): keyof T;
7
+ type $KeyMap<T extends object> = {
8
+ [K in keyof T]: K;
9
+ };
10
+ export declare function $keyMap<T extends object>(obj?: T): $KeyMap<T>;
11
+ type $NH<T> = {
12
+ nameOf(f: (x: T) => T[keyof T]): keyof T;
13
+ };
14
+ export declare function $nh<T>(obj?: T): $NH<T>;
15
+ export declare function getPropertyPath<T>(expr: (x: T) => any): (string | number | symbol)[];
16
+ export declare function combinePropertyPath(path?: (string | number | symbol)[]): string;
17
+ export declare function createConstructor<TConstructor extends Constructor>(type: TConstructor): CallableConstructor<TConstructor>;
18
+ export declare function getPrototypes(obj: any): any[];
19
+ export declare function proxify<T extends object>(source: () => T): T;
20
+ export declare function getEnumValue<T>(enumType: T, name: string, defaultValue: T[keyof T]): T[keyof T];
21
+ export declare function getEnumValues<T extends object, K extends keyof T>(enumType: T): Array<T[K]>;
22
+ export declare function getEnumKeys<T extends object, K extends keyof T>(enumType: T): Array<K>;
23
+ export declare function assignWith<T extends object, U extends object>(dst: T, src: U, callback?: (key: keyof U, value: U[keyof U], set: (value: U[keyof U]) => void) => any): T & Partial<U>;
24
+ export declare function update<T extends object, U extends Partial<T>>(dst: T, src: U, props?: [keyof U]): T & Partial<U>;
25
+ export declare function copy<T extends object, U extends object>(src: T, dst: U, props?: [keyof T]): U & Partial<T>;
26
+ export declare function isPlainObject(value: any): boolean;
27
+ export declare const orderedStringify: (obj: any, keyCompareFn?: (a: string, b: string) => number, replacer?: (this: any, key: string, value: any) => any, space?: string | number) => string;
28
+ export declare function jsonEquals<T>(obj1: T, obj2: T): boolean;
29
+ export declare function jsonClone<T extends object>(obj: T): T;
30
+ export declare const lock: unique symbol;
31
+ export type ILockable<T = any> = Readonly<T> & {
32
+ [lock]?: (locked: boolean) => void;
33
+ };
34
+ export declare function toReadOnly<T extends object>(obj: T, throwOnSet?: boolean): ILockable<T>;
35
+ export type DeepPropertyKey = PropertyKey[];
36
+ export interface DeepProxyHandler<T extends object> {
37
+ set?(target: T, p: DeepPropertyKey, value: any, receiver: any): boolean;
38
+ deleteProperty?(target: T, p: DeepPropertyKey): boolean;
39
+ }
40
+ export declare function createDeepProxy<T extends object>(target: T, handler: DeepProxyHandler<T>): any;
41
+ export {};
42
+ //# sourceMappingURL=typeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":"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"}