@giveback007/util-lib 2.1.3 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ export type Immutable<T> = {
2
+ readonly [K in keyof T]: Immutable<T[K]>;
3
+ };
4
+ export type Action<T extends string, D = undefined> = Readonly<D extends undefined ? {
5
+ type: T;
6
+ } : {
7
+ type: T;
8
+ data: D;
9
+ }>;
10
+ export type stateSubFct<S> = (s: S, prev: S | null) => any;
11
+ export type actSubFct<A extends Action<any, any>, S = any> = (a: A, s: S) => any;
12
+ export type lsOptions<P> = {
13
+ id: string;
14
+ useKeys?: P[];
15
+ ignoreKeys?: P[];
16
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=@state.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"@state.types.js","sourceRoot":"","sources":["../src/@state.types.ts"],"names":[],"mappings":""}
package/dist/@types.d.ts CHANGED
@@ -53,17 +53,16 @@ export type TimeObj = {
53
53
  ms: num;
54
54
  wDay: DayOfWeek;
55
55
  };
56
- export type PartialTimeObj = {
57
- y: num;
58
- m?: num;
59
- d?: num;
60
- h?: num;
61
- min?: num;
62
- sec?: num;
63
- ms?: num;
64
- };
65
- export type TimeArr = [y: num, m?: num, d?: num, h?: num, min?: num, sec?: num, ms?: num];
66
- export type AnyDate = string | number | Date | TimeObj | PartialTimeObj | TimeArr;
56
+ export type TimeArr = [
57
+ y: num,
58
+ m?: num,
59
+ d?: num,
60
+ h?: num,
61
+ min?: num,
62
+ sec?: num,
63
+ ms?: num
64
+ ];
65
+ export type AnyDate = string | number | Date | TimeObj | TimeArr;
67
66
  export type Dict<T> = {
68
67
  [id: string]: T;
69
68
  };
package/dist/general.d.ts CHANGED
@@ -17,8 +17,6 @@ maxTimes?: number) => {
17
17
  /** Stop the interval */
18
18
  stop: () => void;
19
19
  };
20
- /** A promise that waits `ms` amount of milliseconds to execute */
21
- export declare const wait: (ms: number) => Promise<void>;
22
20
  export declare function unsubAll(objOrArr: AnyObj | any[], unsubName?: string): void;
23
21
  /**
24
22
  * Alternative to console.log in that it will clone the obj.
package/dist/general.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debounceById = exports.debounce = exports.randomColorHex = exports.uuid = exports.cloneLog = exports.wait = exports.interval = void 0;
3
+ exports.debounceById = exports.debounce = exports.randomColorHex = exports.uuid = exports.cloneLog = exports.interval = void 0;
4
4
  exports.unsubAll = unsubAll;
5
5
  exports.type = type;
6
6
  exports.assertType = assertType;
@@ -41,9 +41,6 @@ maxTimes = Infinity) => {
41
41
  };
42
42
  };
43
43
  exports.interval = interval;
44
- /** A promise that waits `ms` amount of milliseconds to execute */
45
- const wait = (ms) => new Promise((res) => setTimeout(() => res(), ms));
46
- exports.wait = wait;
47
44
  const usubAllFunct = (x, unsubName = 'unsubscribe') => (0, _1.isType)(x, 'object')
48
45
  &&
49
46
  (0, _1.hasKey)(x, unsubName) ? x[unsubName]() : null;
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":";;;AAkDA,4BAOC;AAWD,oBAUC;AAGD,gCAQC;AAuCD,0CASC;AAYD,gCAcC;AAED,0CAiBC;AAED,oBAMC;AA7LD,wBAAkD;AAElD;;;;;;;;;;;GAWG;AACI,MAAM,QAAQ,GAAG,CACpB,IAA0C,EAC1C,KAAa,CAAC;AAEd,kCAAkC;AAClC,WAAmB,QAAQ,EAC7B,EAAE;IACA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACd,CAAC,EAAE,CAAC;QAEJ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ;YAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,wBAAwB;QACxB,IAAI;KACP,CAAC;AACN,CAAC,CAAA;AAxBY,QAAA,QAAQ,YAwBpB;AAED,kEAAkE;AAC3D,MAAM,IAAI,GAAG,CAAC,EAAU,EAAiB,EAAE,CAC9C,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AADzC,QAAA,IAAI,QACqC;AAEtD,MAAM,YAAY,GAAG,CAAC,CAAM,EAAE,SAAS,GAAG,aAAa,EAAE,EAAE,CACvD,IAAA,SAAM,EAAC,CAAC,EAAE,QAAQ,CAAC;;QAEnB,IAAA,SAAM,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAEjD,SAAgB,QAAQ,CAAC,QAAwB,EAAE,SAAS,GAAG,aAAa;IACxE,IAAI,IAAA,SAAM,EAAC,QAAQ,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;SACjD,IAAI,IAAA,SAAM,EAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/B,IAAA,SAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;;QAE5D,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,QAAK,EAAC,CAAC,CAAC,CAAC,CAAC;AAA7C,QAAA,QAAQ,YAAqC;AAE1D,6CAA6C;AAC7C,SAAgB,IAAI,CAAC,GAAQ;IAEzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;aAClC,IAAI,GAAG,KAAK,IAAI;YAAG,OAAO,MAAM,CAAC;;YACd,OAAO,QAAQ,CAAC;IAC5C,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,KAAK,GAAG;YAAS,OAAO,KAAK,CAAC;;YACb,OAAO,OAAO,GAAG,CAAC;IAC9C,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,SAAgB,UAAU,CACtB,GAAQ,EACR,KAAc;IAEd,IAAI,CAAC,IAAA,SAAM,EAAC,KAAK,EAAE,OAAO,CAAC;QAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,IAAA,SAAM,EAAC,GAAG,EAAE,CAAC,CAAC;YAAE,OAAO;IAElD,MAAM,KAAK,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACnE,CAAC;AAEM,MAAM,IAAI,GAAG,GAAG,EAAE;IAErB,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,EAAE,GAAG,CACL,WAAW;;YAEX,WAAW,CAAC,GAAG;;YAEf,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAC7B,IAAI,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,sCAAsC,CAAC;IACnD,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACR,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;YACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;YACpB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAA;AAxBY,QAAA,IAAI,QAwBhB;AAEM,MAAM,cAAc,GAAG,GAAG,EAAE,CAC/B,GAAG,GAAG,CAAC,CAAC,CAAC,IAAE,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AADtC,QAAA,cAAc,kBACwB;AAE5C,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAO,EAAE,EAAE;IAC5C,IAAI,SAAwC,CAAC;IAC7C,OAAO,UAAqB,GAAG,IAAW;QACtC,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;AACN,CAAC,CAAC;AANW,QAAA,QAAQ,YAMnB;AAEF,SAAgB,eAAe;IAC3B,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,OAAO,CAAC,GAAwB,EAAE,EAAW,EAAE,EAAE;QAC7C,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,GAAG,KAAK,QAAQ;YAChB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAQ,CAAC;IACpD,CAAC,CAAA;AACL,CAAC;AAEY,QAAA,YAAY,GAAG,CAAC,GAAG,EAAE;IAC9B,MAAM,YAAY,GAAc,EAAE,CAAC;IACnC,OAAO,CAAC,EAAU,EAAE,EAAO,EAAE,EAAa,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,GAAG;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAE3B,YAAY,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAQ,CAAC;IACjD,CAAC,CAAA;AACL,CAAC,CAAC,EAAE,CAAC;AAEL,SAAgB,UAAU;IACtB,IAAI,OAAY,CAAC;IACjB,IAAI,KAAU,CAAC;IAEf,MAAM,OAAO,GAAe,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,OAAO,GAAG,GAAG,CAAC;QACd,KAAK,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,KAAK,EAAE,KAA+B;QACtC,OAAO,EAAE,OAA6B;QACtC,OAAO;KACV,CAAC;AACN,CAAC;AAEM,KAAK,UAAU,eAAe,CACjC,GAAQ,EACR,EAA6C,EAC7C,kBAAkB,GAAG,CAAC;IAEtB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/D,IAAI,IAAmB,CAAC;QACxB,OAAO,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,GAAG,CAAC;YACd,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,IAAI,CAAC,GAAW;IAC5B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAC/B,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;IAE1E,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  export * from './@types';
2
+ export * from './@state.types';
2
3
  export * from './array';
3
4
  export * from './clone';
4
5
  export * from './equality';
5
6
  export * from './general';
7
+ export * from './http';
6
8
  export * from './iterate';
7
9
  export * from './number';
8
10
  export * from './object';
11
+ export * from './state-manager';
9
12
  export * from './string';
10
13
  export * from './test';
11
14
  export * from './time';
12
- export * from './http';
package/dist/index.js CHANGED
@@ -15,15 +15,17 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./@types"), exports);
18
+ __exportStar(require("./@state.types"), exports);
18
19
  __exportStar(require("./array"), exports);
19
20
  __exportStar(require("./clone"), exports);
20
21
  __exportStar(require("./equality"), exports);
21
22
  __exportStar(require("./general"), exports);
23
+ __exportStar(require("./http"), exports);
22
24
  __exportStar(require("./iterate"), exports);
23
25
  __exportStar(require("./number"), exports);
24
26
  __exportStar(require("./object"), exports);
27
+ __exportStar(require("./state-manager"), exports);
25
28
  __exportStar(require("./string"), exports);
26
29
  __exportStar(require("./test"), exports);
27
30
  __exportStar(require("./time"), exports);
28
- __exportStar(require("./http"), exports);
29
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,iDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,kDAAgC;AAChC,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB"}
package/dist/number.d.ts CHANGED
@@ -18,14 +18,7 @@ export declare const average: (nArr: number[]) => number;
18
18
  * decPlaces(1.1276, 2) //=> 1.13
19
19
  * ```
20
20
  */
21
- export declare const decPlace: (n: number, places: number) => number;
22
- /**
23
- * @example
24
- * ```js
25
- * numberWithCommas(1000000) //=> '1,000,000'
26
- * ```
27
- */
28
- export declare const numberWithCommas: (n: number | string) => string;
21
+ export declare const numFixed: (n: number, fractionDigits: number) => number;
29
22
  /**
30
23
  * Takes a number || number[] and min & max, will generate a
31
24
  * new random number.
package/dist/number.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.numberWithCommas = exports.decPlace = exports.average = exports.rand = exports.randInt = void 0;
3
+ exports.numFixed = exports.average = exports.rand = exports.randInt = void 0;
4
4
  exports.newNum = newNum;
5
5
  const _1 = require(".");
6
6
  /**
@@ -26,16 +26,8 @@ exports.average = average;
26
26
  * decPlaces(1.1276, 2) //=> 1.13
27
27
  * ```
28
28
  */
29
- const decPlace = (n, places) => parseFloat(n.toFixed(places));
30
- exports.decPlace = decPlace;
31
- /**
32
- * @example
33
- * ```js
34
- * numberWithCommas(1000000) //=> '1,000,000'
35
- * ```
36
- */
37
- const numberWithCommas = (n) => n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
38
- exports.numberWithCommas = numberWithCommas;
29
+ const numFixed = (n, fractionDigits) => parseFloat(n.toFixed(fractionDigits));
30
+ exports.numFixed = numFixed;
39
31
  /**
40
32
  * Takes a number || number[] and min & max, will generate a
41
33
  * new random number.
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AA4CA,wBAmBC;AA/DD,wBAAgD;AAEhD;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAD3C,QAAA,OAAO,WACoC;AAEjD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AADzB,QAAA,IAAI,QACqB;AAEtC,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAD7C,QAAA,OAAO,WACsC;AAE1D;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,MAAc,EAAE,EAAE,CAClD,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AADrB,QAAA,QAAQ,YACa;AAElC;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,CAAkB,EAAE,EAAE,CACnD,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAD1C,QAAA,gBAAgB,oBAC0B;AAEvD;;;GAGG;AACH,SAAgB,MAAM,CAClB,OAA0B,EAAE,GAAW,EAAE,GAAW;IAEpD,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAkB,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,GAAG,CAAC;QACA,GAAG,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC;QAEP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AAmCA,wBAmBC;AAtDD,wBAAgD;AAEhD;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAD3C,QAAA,OAAO,WACoC;AAEjD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AADzB,QAAA,IAAI,QACqB;AAEtC,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAD7C,QAAA,OAAO,WACsC;AAE1D;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,cAAsB,EAAE,EAAE,CAC1D,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAD7B,QAAA,QAAQ,YACqB;AAE1C;;;GAGG;AACH,SAAgB,MAAM,CAClB,OAA0B,EAAE,GAAW,EAAE,GAAW;IAEpD,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAkB,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,GAAG,CAAC;QACA,GAAG,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC;QAEP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { Action, actSubFct, lsOptions, stateSubFct } from './@state.types';
2
+ import { KeysOfValueType } from '.';
3
+ export declare class StateManager<State extends {}, Act extends Action<any, any> = Action<any, any>, Key extends Extract<keyof State, string> = Extract<keyof State, string>> {
4
+ private prevState;
5
+ private emittedState;
6
+ private state;
7
+ private readonly useLS;
8
+ private stateSubDict;
9
+ private actionSubDict;
10
+ private stateWasUpdated;
11
+ private keysChanged;
12
+ private throttledState;
13
+ private throttlersRunning;
14
+ /**
15
+ * The local storage takes an id, this id
16
+ * should be unique in order to ensure that the
17
+ * storage is unique to the given state object
18
+ */
19
+ constructor(initialState: State, useLocalStorage?: lsOptions<Key>);
20
+ getState: () => State;
21
+ setState: (updateState: Partial<State>) => Promise<State>;
22
+ action: <A extends Act = Act>(action: A | A["type"]) => A | A["type"];
23
+ /**
24
+ * Aggregates state updates by this method over the course of
25
+ * `msCycle` time and sets the state only once per `msCycle` time.
26
+ *
27
+ * Different `msCycle` timings run on separate loops, therefore can
28
+ * run multiple `msCycle` at the same time.
29
+ *
30
+ * To keep state consistent and to prevent bugs, any key run-ins set
31
+ * in previous `msCycle`(s) will be overwritten by latest
32
+ * `throttledSetState()` call.
33
+ *
34
+ * Will wait the full designated time in `msCycle` on first run.
35
+ */
36
+ throttledSetState: (msCycle: number, updateState: Partial<State>) => Promise<void>;
37
+ private throttledStateSetter;
38
+ /**
39
+ * Will execute the given function on state change. Subscribe to
40
+ * specific key(s) changes in state by setting keys to the desired
41
+ * key(s) to sub to. Set `keys: true` to sub to all state changes.
42
+ */
43
+ stateSub: <K extends Key = Key>(keys: true | K[] | K, fct: stateSubFct<State>, fireOnInitSub?: boolean) => {
44
+ unsubscribe: () => boolean;
45
+ };
46
+ /** set `true` if to subscribe to all actions */
47
+ actionSub: <T extends Act["type"] = Act["type"], A extends Extract<Act, {
48
+ type: T;
49
+ }> = Extract<Act, {
50
+ type: T;
51
+ }>>(actions: true | T | T[], fct: actSubFct<A, State>) => {
52
+ unsubscribe: () => boolean;
53
+ };
54
+ /**
55
+ * Allows you to toggle any key with a boolean value true/false.
56
+ */
57
+ toggle: (key: KeysOfValueType<State, boolean>) => Promise<State>;
58
+ /**
59
+ * Erases local storage managed by this instance of StateManager,
60
+ * & removes all properties/methods on the object. (This way any
61
+ * attempts of accessing the object should return an error);
62
+ *
63
+ * (For debugging purposes):
64
+ * Object will have this appearance afterwards:
65
+ * ```js
66
+ * { type: 'StateManager', destroyed: true }
67
+ * ```
68
+ */
69
+ destroy: () => void;
70
+ cloneKey: <K extends Key>(key: K) => State[K];
71
+ private stateChanged;
72
+ private stateFromLS;
73
+ private updateLocalStorage;
74
+ }
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StateManager = void 0;
4
+ const _1 = require(".");
5
+ class StateManager {
6
+ prevState = null;
7
+ emittedState = null;
8
+ state;
9
+ useLS = false;
10
+ stateSubDict = {};
11
+ actionSubDict = {};
12
+ stateWasUpdated = true;
13
+ keysChanged = {};
14
+ throttledState = {};
15
+ throttlersRunning = {};
16
+ /**
17
+ * The local storage takes an id, this id
18
+ * should be unique in order to ensure that the
19
+ * storage is unique to the given state object
20
+ */
21
+ constructor(initialState, useLocalStorage) {
22
+ let state = {};
23
+ if (useLocalStorage) {
24
+ const { useKeys, ignoreKeys, id } = useLocalStorage;
25
+ if (useKeys && ignoreKeys)
26
+ throw Error('"useKeys" & "ignoreKeys" are mutually '
27
+ + 'exclusive, only use one or the other.');
28
+ this.useLS = useLocalStorage;
29
+ const lsId = this.useLS.id = id + '-utilStateManager';
30
+ state = {
31
+ ...initialState,
32
+ ...this.stateFromLS(),
33
+ };
34
+ addEventListener('storage', (e) => {
35
+ if (e.key !== lsId)
36
+ return;
37
+ let fromLS = this.stateFromLS();
38
+ if (useKeys)
39
+ fromLS = (0, _1.objExtract)(fromLS, useKeys);
40
+ else if (ignoreKeys)
41
+ ignoreKeys.forEach((key) => delete fromLS[key]);
42
+ if ((0, _1.equal)(this.state, { ...this.state, ...fromLS }))
43
+ return;
44
+ this.setState(fromLS);
45
+ });
46
+ }
47
+ else {
48
+ state = initialState;
49
+ }
50
+ this.state = state;
51
+ this.setState(state);
52
+ }
53
+ getState = () => this.state;
54
+ setState = async (updateState) => {
55
+ // Do this, otherwise you are mutating the value.
56
+ // (Would make bugs in this case)
57
+ this.state = { ...this.state, ...updateState };
58
+ this.stateWasUpdated = true;
59
+ await this.stateChanged();
60
+ return this.getState();
61
+ };
62
+ action = (action) => {
63
+ if ((0, _1.isType)(action, 'string'))
64
+ action = { type: action };
65
+ const state = this.getState();
66
+ for (const k in this.actionSubDict)
67
+ this.actionSubDict[k]?.(action, state);
68
+ return action;
69
+ };
70
+ // -- State Set Throttler -- //
71
+ /**
72
+ * Aggregates state updates by this method over the course of
73
+ * `msCycle` time and sets the state only once per `msCycle` time.
74
+ *
75
+ * Different `msCycle` timings run on separate loops, therefore can
76
+ * run multiple `msCycle` at the same time.
77
+ *
78
+ * To keep state consistent and to prevent bugs, any key run-ins set
79
+ * in previous `msCycle`(s) will be overwritten by latest
80
+ * `throttledSetState()` call.
81
+ *
82
+ * Will wait the full designated time in `msCycle` on first run.
83
+ */
84
+ throttledSetState = async (msCycle, updateState) => {
85
+ if (!this.throttledState[msCycle])
86
+ this.throttledState[msCycle] = {};
87
+ const tsKeys = (0, _1.objKeys)(this.throttledState);
88
+ for (const k in updateState) {
89
+ this.throttledState[msCycle][k] = updateState[k];
90
+ tsKeys.forEach((tsKey) => // To keep state consistent
91
+ this.throttledState[tsKey][k] = updateState[k]);
92
+ }
93
+ this.throttledStateSetter(msCycle);
94
+ };
95
+ throttledStateSetter = async (msCycle) => {
96
+ if (this.throttlersRunning[msCycle])
97
+ return;
98
+ this.throttlersRunning[msCycle] = true;
99
+ await (0, _1.wait)(msCycle);
100
+ while (this.throttledState[msCycle]) {
101
+ this.setState(this.throttledState[msCycle]);
102
+ delete this.throttledState[msCycle];
103
+ await (0, _1.wait)(msCycle);
104
+ }
105
+ this.throttlersRunning[msCycle] = false;
106
+ };
107
+ // -- State Set Throttler -- //
108
+ /**
109
+ * Will execute the given function on state change. Subscribe to
110
+ * specific key(s) changes in state by setting keys to the desired
111
+ * key(s) to sub to. Set `keys: true` to sub to all state changes.
112
+ */
113
+ stateSub = (keys, fct, fireOnInitSub = false) => {
114
+ if ((0, _1.isType)(keys, 'array') && keys.length === 1)
115
+ keys = keys[0];
116
+ let f = fct;
117
+ if ((0, _1.isType)(keys, 'string'))
118
+ f = (s, prev) => {
119
+ if (this.keysChanged[keys])
120
+ return fct(s, prev);
121
+ };
122
+ else if ((0, _1.isType)(keys, 'array'))
123
+ f = (s, prev) => {
124
+ for (const k of keys)
125
+ if (this.keysChanged[k])
126
+ return fct(s, prev);
127
+ };
128
+ if (fireOnInitSub)
129
+ (0, _1.wait)(0).then(() => fct(this.state, this.prevState));
130
+ const id = Math.random();
131
+ this.stateSubDict[id] = f;
132
+ return { unsubscribe: () => delete this.stateSubDict[id] };
133
+ };
134
+ /** set `true` if to subscribe to all actions */
135
+ actionSub = (actions, fct) => {
136
+ if ((0, _1.isType)(actions, 'array') && actions.length === 1)
137
+ actions = actions[0];
138
+ let f = fct;
139
+ if ((0, _1.isType)(actions, 'string'))
140
+ f = (a, s) => {
141
+ if (a.type === actions)
142
+ return fct(a, s);
143
+ };
144
+ else if ((0, _1.isType)(actions, 'array'))
145
+ f = (a, s) => {
146
+ for (const act of actions)
147
+ if (a.type === act)
148
+ return fct(a, s);
149
+ };
150
+ const id = Math.random();
151
+ this.actionSubDict[id] = f;
152
+ return { unsubscribe: () => delete this.actionSubDict[id] };
153
+ };
154
+ /**
155
+ * Allows you to toggle any key with a boolean value true/false.
156
+ */
157
+ toggle = (key) => this.setState({ [key]: (!this.getState()[key]) });
158
+ /**
159
+ * Erases local storage managed by this instance of StateManager,
160
+ * & removes all properties/methods on the object. (This way any
161
+ * attempts of accessing the object should return an error);
162
+ *
163
+ * (For debugging purposes):
164
+ * Object will have this appearance afterwards:
165
+ * ```js
166
+ * { type: 'StateManager', destroyed: true }
167
+ * ```
168
+ */
169
+ destroy = () => {
170
+ if (this.useLS)
171
+ localStorage.removeItem(this.useLS.id);
172
+ (0, _1.objKeys)(this).forEach(k => delete this[k]);
173
+ this.type = 'StateManager';
174
+ this.destroyed = true;
175
+ };
176
+ cloneKey = (key) => (0, _1.clone)(this.state[key]);
177
+ stateChanged = async () => {
178
+ // Ensures to run only after all sync code updates the state.
179
+ await (0, _1.wait)(0);
180
+ if (!this.stateWasUpdated)
181
+ return false;
182
+ let stateDidNotChange = true;
183
+ (0, _1.objKeys)(this.state).forEach((k) => {
184
+ const em = this.emittedState || {};
185
+ if ( // only check equality if not already changed.
186
+ !this.keysChanged[k] && (0, _1.equal)(this.state[k], em[k]))
187
+ return;
188
+ stateDidNotChange = false;
189
+ this.keysChanged[k] = true;
190
+ });
191
+ if (stateDidNotChange)
192
+ return this.stateWasUpdated = false;
193
+ this.updateLocalStorage();
194
+ // these 3 need to be set before iterating over subs
195
+ // else prevState wont be accurately emitted
196
+ this.prevState = this.emittedState;
197
+ this.emittedState = this.state;
198
+ this.state = { ...this.state }; // use obj spread (or get bugs)!
199
+ for (const k in this.stateSubDict)
200
+ this.stateSubDict[k]?.(this.state, this.prevState);
201
+ this.keysChanged = {};
202
+ this.stateWasUpdated = false;
203
+ return true;
204
+ };
205
+ stateFromLS = () => {
206
+ if (!this.useLS)
207
+ return;
208
+ const { id } = this.useLS;
209
+ const strState = localStorage.getItem(id);
210
+ if (!strState)
211
+ return {};
212
+ return JSON.parse(strState);
213
+ };
214
+ updateLocalStorage = () => {
215
+ if (!this.useLS)
216
+ return;
217
+ const { id, ignoreKeys, useKeys } = this.useLS;
218
+ let state = { ...this.state };
219
+ if (ignoreKeys)
220
+ ignoreKeys.forEach((key) => delete state[key]);
221
+ else if (useKeys)
222
+ state = (0, _1.objExtract)(state, useKeys);
223
+ localStorage.setItem(id, JSON.stringify(state));
224
+ };
225
+ }
226
+ exports.StateManager = StateManager;
227
+ //# sourceMappingURL=state-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../src/state-manager.ts"],"names":[],"mappings":";;;AAQA,wBAGW;AAEX,MAAa,YAAY;IAMb,SAAS,GAAiB,IAAI,CAAC;IAC/B,YAAY,GAAiB,IAAI,CAAC;IAClC,KAAK,CAAQ;IAEJ,KAAK,GAA2B,KAAK,CAAC;IAE/C,YAAY,GAA6B,EAAE,CAAC;IAC5C,aAAa,GAAyB,EAAE,CAAC;IAEzC,eAAe,GAAG,IAAI,CAAC;IACvB,WAAW,GAA0B,EAAE,CAAC;IAExC,cAAc,GAAyB,EAAE,CAAC;IAC1C,iBAAiB,GAAkB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,YACI,YAAmB,EACnB,eAAgC;QAEhC,IAAI,KAAK,GAAG,EAAW,CAAC;QAExB,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;YAEpD,IAAI,OAAO,IAAI,UAAU;gBAAE,MAAM,KAAK,CAClC,wCAAwC;sBACtC,uCAAuC,CAC5C,CAAC;YAEF,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC;YAEtD,KAAK,GAAG;gBACJ,GAAG,YAAY;gBACf,GAAG,IAAI,CAAC,WAAW,EAAE;aACxB,CAAC;YAEF,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAe,EAAE,EAAE;gBAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;oBAAE,OAAO;gBAE3B,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEhC,IAAI,OAAO;oBACP,MAAM,GAAG,IAAA,aAAU,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;qBACpC,IAAI,UAAU;oBACf,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEpD,IAAI,IAAA,QAAK,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;oBAAE,OAAO;gBAE5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,YAAY,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAE5B,QAAQ,GAAG,KAAK,EAAE,WAA2B,EAAE,EAAE;QAC7C,iDAAiD;QACjD,iCAAiC;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAE/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAA;IAED,MAAM,GAAG,CAAsB,MAAqB,EAAE,EAAE;QACpD,IAAI,IAAA,SAAM,EAAC,MAAM,EAAE,QAAQ,CAAC;YAAE,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAO,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa;YAC9B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAA;IAED,+BAA+B;IAC/B;;;;;;;;;;;;OAYG;IACH,iBAAiB,GAAG,KAAK,EACrB,OAAe,EACf,WAA2B,EAC7B,EAAE;QACA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAA,UAAO,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAEjD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,2BAA2B;aACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAA;IAEO,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QACrD,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAEvC,MAAM,IAAA,OAAI,EAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,IAAA,OAAI,EAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC,CAAA;IACD,+BAA+B;IAE/B;;;;OAIG;IACH,QAAQ,GAAG,CACP,IAAoB,EACpB,GAAuB,EACvB,aAAa,GAAG,KAAK,EACvB,EAAE;QACA,IAAI,IAAA,SAAM,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QAEpB,IAAI,CAAC,GAAG,GAAG,CAAC;QAEZ,IAAI,IAAA,SAAM,EAAC,IAAI,EAAE,QAAQ,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAS,CAAC;oBAAE,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC,CAAA;aAEI,IAAI,IAAA,SAAM,EAAC,IAAI,EAAE,OAAO,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBAC5C,KAAK,MAAM,CAAC,IAAI,IAAW;oBACvB,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wBAAE,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAA;QAED,IAAI,aAAa;YACb,IAAA,OAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAExD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAQ,CAAC;QACjC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/D,CAAC,CAAA;IAED,gDAAgD;IAChD,SAAS,GAAG,CAIR,OAAuB,EACvB,GAAwB,EAC1B,EAAE;QACA,IAAI,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAChD,OAAO,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAE1B,IAAI,CAAC,GAAG,GAAG,CAAC;QAEZ,IAAI,IAAA,SAAM,EAAC,OAAO,EAAE,QAAQ,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAA;aAEI,IAAI,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5C,KAAK,MAAM,GAAG,IAAI,OAAsB;oBACpC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;wBAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAA;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAQ,CAAC;QAClC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,GAAG,CAAC,GAAoC,EAAE,EAAE,CAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAS,CAAC,CAAC;IAE7D;;;;;;;;;;OAUG;IACH,OAAO,GAAG,GAAG,EAAE;QACX,IAAI,IAAI,CAAC,KAAK;YACV,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAA,UAAO,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAY,CAAC,IAAI,GAAG,cAAc,CAAC;QACnC,IAAY,CAAC,SAAS,GAAG,IAAI,CAAC;IACnC,CAAC,CAAA;IAED,QAAQ,GACJ,CAAgB,GAAM,EAAY,EAAE,CAAC,IAAA,QAAK,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,YAAY,GAAG,KAAK,IAAI,EAAE;QAC9B,6DAA6D;QAC7D,MAAM,IAAA,OAAI,EAAC,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAExC,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAE7B,IAAA,UAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,EAAoB,CAAC;YAErD,KAAI,8CAA8C;YAC9C,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,CAAC,IAAI,IAAA,QAAK,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO;YAET,iBAAiB,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,CAAQ,CAAC,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB;YACjB,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAExC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,oDAAoD;QACpD,4CAA4C;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,gCAAgC;QAEhE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY;YAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAkB,CAAC,CAAC;QAEhE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAA;IAEO,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAA;IAEO,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/C,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,UAAU;YACV,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aAC9C,IAAI,OAAO;YACZ,KAAK,GAAG,IAAA,aAAU,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEvC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CAAA;CACJ;AA/RD,oCA+RC"}