@dereekb/util 8.12.1 → 8.12.4

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [8.12.4](https://github.com/dereekb/dbx-components/compare/v8.12.3-dev...v8.12.4) (2022-07-10)
6
+
7
+
8
+
9
+ ## [8.12.3](https://github.com/dereekb/dbx-components/compare/v8.12.2-dev...v8.12.3) (2022-07-09)
10
+
11
+
12
+
13
+ ## [8.12.2](https://github.com/dereekb/dbx-components/compare/v8.12.1-dev...v8.12.2) (2022-07-08)
14
+
15
+
16
+
5
17
  ## [8.12.1](https://github.com/dereekb/dbx-components/compare/v8.12.0-dev...v8.12.1) (2022-07-08)
6
18
 
7
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/util",
3
- "version": "8.12.1",
3
+ "version": "8.12.4",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
package/src/lib/sort.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare type SortingOrder = 'desc' | 'asc';
1
+ export declare type SortingOrder = 'asc' | 'desc';
2
2
  export declare const SORT_VALUE_LESS_THAN: SortComparisonNumber;
3
3
  export declare const SORT_VALUE_GREATER_THAN: SortComparisonNumber;
4
4
  export declare const SORT_VALUE_EQUAL: SortComparisonNumber;
@@ -9,8 +9,10 @@ export declare const SORT_VALUE_EQUAL: SortComparisonNumber;
9
9
  * - smaller than another will return -1 (or less).
10
10
  * - equal to another will return 0
11
11
  * - greater than another will return 1 (or more).
12
+ * - Example: a - b
12
13
  *
13
14
  * In "descending" order, this returns the opposite values as "ascending".
15
+ * - Example: b - a
14
16
  */
15
17
  export declare type SortComparisonNumber = number;
16
18
  /**
@@ -19,14 +21,10 @@ export declare type SortComparisonNumber = number;
19
21
  export declare type SortCompareFunction<T> = (a: T, b: T) => SortComparisonNumber;
20
22
  /**
21
23
  * Comparison function that sorts in ascending order.
22
- *
23
- * This is the logical normal return order, where if an item is less than another, it should return SORT_VALUE_LESS_THAN (-1), etc.
24
24
  */
25
25
  export declare type AscendingSortCompareFunction<T> = SortCompareFunction<T>;
26
26
  /**
27
27
  * Comparison function that sorts in descending order.
28
- *
29
- * This is the logical normal return order, where if an item is less than another, it should return SORT_VALUE_LESS_THAN (-1), etc.
30
28
  */
31
29
  export declare type SortDescendingCompareFunction<T> = SortCompareFunction<T>;
32
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/sort.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAyB,CAAC,CAAC,CAAC;AAChD,QAAA,uBAAuB,GAAyB,CAAC,CAAC;AAClD,QAAA,gBAAgB,GAAyB,CAAC,CAAC;AAsCxD,SAAgB,gBAAgB,CAAI,SAAiC;IACnE,OAAO,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAI,kBAAmD,EAAE,QAAsB,KAAK;IAChH,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACrF,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/sort.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAyB,CAAC,CAAC,CAAC;AAChD,QAAA,uBAAuB,GAAyB,CAAC,CAAC;AAClD,QAAA,gBAAgB,GAAyB,CAAC,CAAC;AAoCxD,SAAgB,gBAAgB,CAAI,SAAiC;IACnE,OAAO,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAI,kBAAmD,EAAE,QAAsB,KAAK;IAChH,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACrF,CAAC;AAFD,wCAEC"}
@@ -28,3 +28,10 @@ export declare function addPlusPrefixToNumber(value?: Maybe<number>, prefix?: st
28
28
  * @returns
29
29
  */
30
30
  export declare function capitalizeFirstLetter(value: string): string;
31
+ /**
32
+ * Lowercases the first letter of the input.
33
+ *
34
+ * @param value
35
+ * @returns
36
+ */
37
+ export declare function lowercaseFirstLetter(value: string): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitalizeFirstLetter = exports.addPlusPrefixToNumber = exports.splitCommaSeparatedStringToSet = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
3
+ exports.lowercaseFirstLetter = exports.capitalizeFirstLetter = exports.addPlusPrefixToNumber = exports.splitCommaSeparatedStringToSet = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
4
4
  function caseInsensitiveString(input) {
5
5
  return input === null || input === void 0 ? void 0 : input.toLocaleLowerCase();
6
6
  }
@@ -38,4 +38,14 @@ function capitalizeFirstLetter(value) {
38
38
  return value.charAt(0).toUpperCase() + value.slice(1);
39
39
  }
40
40
  exports.capitalizeFirstLetter = capitalizeFirstLetter;
41
+ /**
42
+ * Lowercases the first letter of the input.
43
+ *
44
+ * @param value
45
+ * @returns
46
+ */
47
+ function lowercaseFirstLetter(value) {
48
+ return value.charAt(0).toLowerCase() + value.slice(1);
49
+ }
50
+ exports.lowercaseFirstLetter = lowercaseFirstLetter;
41
51
  //# sourceMappingURL=string.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/string/string.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,qBAAqB,CAAC,KAAoB;IACxD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAFD,sDAEC;AAID,SAAgB,yBAAyB,CAAc,KAA8B,EAAE,QAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAiB;IAC3I,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAHD,8DAGC;AAED,SAAgB,8BAA8B,CAAC,KAAkC;IAC/E,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAFD,wEAEC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAqB,EAAE,MAAM,GAAG,GAAG;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;KACrD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,sDAMC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAFD,sDAEC"}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/string/string.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,qBAAqB,CAAC,KAAoB;IACxD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAFD,sDAEC;AAID,SAAgB,yBAAyB,CAAc,KAA8B,EAAE,QAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAiB;IAC3I,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAHD,8DAGC;AAED,SAAgB,8BAA8B,CAAC,KAAkC;IAC/E,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAFD,wEAEC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAqB,EAAE,MAAM,GAAG,GAAG;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;KACrD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,sDAMC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAFD,sDAEC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAFD,oDAEC"}
package/src/lib/type.d.ts CHANGED
@@ -69,17 +69,25 @@ export declare type StringKeyPropertyKeys<T> = keyof StringKeyProperties<T>;
69
69
  * Makes a readonly type able to be configured. Useful for configurating readonly types before they are used.
70
70
  */
71
71
  export declare type Configurable<T> = Writable<T>;
72
+ /**
73
+ * StringOrder of all keys of an object.
74
+ */
75
+ export declare type CommaSeparatedKeyOrderOfObject<T extends object> = CommaSeparatedKeyOrder<`${KeyCanBeString<keyof T>}`>;
76
+ export declare type CommaSeparatedKeyOrder<T extends string> = StringOrder<T, ','>;
77
+ /**
78
+ * StringCombinations of all keys of an object.
79
+ */
80
+ export declare type CommaSeparatedKeyCombinationsOfObject<T extends object> = CommaSeparatedKeyCombinations<`${KeyCanBeString<keyof T>}`>;
81
+ export declare type CommaSeparatedKeyCombinations<T extends string> = StringCombination<T, ','>;
72
82
  /**
73
83
  * StringConcatination of all keys of an object.
74
84
  */
75
85
  export declare type CommaSeparatedKeysOfObject<T extends object> = CommaSeparatedKeys<`${KeyCanBeString<keyof T>}`>;
76
86
  export declare type CommaSeparatedKeys<T extends string> = StringConcatination<T, ','>;
77
- export declare type CommaSeparatedKeyCombinationsOfObject<T extends object> = CommaSeparatedKeyCombinations<`${KeyCanBeString<keyof T>}`>;
78
- export declare type CommaSeparatedKeyCombinations<T extends string> = StringCombinations<T, ','>;
79
87
  export declare type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
80
88
  export declare type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ? A : never;
81
89
  /**
82
- * A type that merges all combinations of strings together using a separator.
90
+ * A type that merges all combinations of strings together using a separator, but restricts a certain order.
83
91
  *
84
92
  * Example:
85
93
  * 'a' | 'b' | 'c' w/ ',' -> 'a' | 'b' | 'c' | 'a,b' | 'a,c' | 'a,b,c' | etc...
@@ -88,7 +96,14 @@ export declare type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ?
88
96
  *
89
97
  * https://stackoverflow.com/a/65157132
90
98
  */
91
- export declare type StringCombinations<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? SELF : `${StringCombinations<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | StringCombinations<Exclude<S, SELF>, SEPARATOR> | SELF : never : never;
99
+ export declare type StringOrder<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? SELF : `${StringOrder<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | StringOrder<Exclude<S, SELF>, SEPARATOR> | SELF : never : never;
100
+ /**
101
+ * A type that merges all combinations of strings together using a separator.
102
+ *
103
+ * Example:
104
+ * 'a' | 'b' | 'c' w/ ',' -> 'a' | 'b' | 'c' | 'a,b' | 'b,a' | 'c,a,b' | etc...
105
+ */
106
+ export declare type StringCombination<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? SELF : `${StringCombination<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | `${SELF}${SEPARATOR}${StringCombination<Exclude<S, SELF>, SEPARATOR>}` | StringCombination<Exclude<S, SELF>, SEPARATOR> | SELF : never : never;
92
107
  /**
93
108
  * A type that merges all the input strings together using a separator.
94
109
  *
@@ -96,3 +111,7 @@ export declare type StringCombinations<S extends string, SEPARATOR extends strin
96
111
  * 'a' | 'b' | 'c' w/ ',' -> 'a,b,c' | 'a,c,b'
97
112
  */
98
113
  export declare type StringConcatination<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? SELF : `${StringConcatination<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | `${SELF}${SEPARATOR}${StringConcatination<Exclude<S, SELF>, SEPARATOR>}` : never : never;
114
+ /**
115
+ * @deprecated use StringCombination
116
+ */
117
+ export declare type StringCombinations<S extends string, SEPARATOR extends string> = StringCombination<S, SEPARATOR>;
@@ -1,3 +1,4 @@
1
+ import { SortCompareFunction } from '../sort';
1
2
  /**
2
3
  * A number that denotes which index an item is at.
3
4
  */
@@ -11,10 +12,24 @@ export interface IndexRef {
11
12
  */
12
13
  i: IndexNumber;
13
14
  }
15
+ /**
16
+ * Creates a SortCompareFunction<T> that sorts by index on IndexRef values.
17
+ *
18
+ * @param input
19
+ * @returns
20
+ */
21
+ export declare function sortAscendingIndexNumberRefFunction<T extends IndexRef>(): SortCompareFunction<T>;
14
22
  /**
15
23
  * Returns an item's IndexNumber.
16
24
  */
17
25
  export declare type ReadIndexFunction<T> = (value: T) => IndexNumber;
26
+ /**
27
+ * Creates a SortCompareFunction<T> that sorts by the read index.
28
+ *
29
+ * @param input
30
+ * @returns
31
+ */
32
+ export declare function sortByIndexAscendingCompareFunction<T>(readIndex: ReadIndexFunction<T>): SortCompareFunction<T>;
18
33
  /**
19
34
  * A min and max value that denote the maximum edges of a range of index values.
20
35
  */
@@ -1,6 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.indexRangeCheckFunction = exports.indexRangeCheckReaderFunction = void 0;
3
+ exports.indexRangeCheckFunction = exports.indexRangeCheckReaderFunction = exports.sortByIndexAscendingCompareFunction = exports.sortAscendingIndexNumberRefFunction = void 0;
4
+ /**
5
+ * Creates a SortCompareFunction<T> that sorts by index on IndexRef values.
6
+ *
7
+ * @param input
8
+ * @returns
9
+ */
10
+ function sortAscendingIndexNumberRefFunction() {
11
+ return (a, b) => a.i - b.i;
12
+ }
13
+ exports.sortAscendingIndexNumberRefFunction = sortAscendingIndexNumberRefFunction;
14
+ /**
15
+ * Creates a SortCompareFunction<T> that sorts by the read index.
16
+ *
17
+ * @param input
18
+ * @returns
19
+ */
20
+ function sortByIndexAscendingCompareFunction(readIndex) {
21
+ return (a, b) => readIndex(a) - readIndex(b);
22
+ }
23
+ exports.sortByIndexAscendingCompareFunction = sortByIndexAscendingCompareFunction;
4
24
  function indexRangeCheckReaderFunction(range, read = (x) => x.i) {
5
25
  const rangeCheck = indexRangeCheckFunction(range);
6
26
  return (value) => rangeCheck(read(value));
@@ -1 +1 @@
1
- {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/indexed.ts"],"names":[],"mappings":";;;AA+CA,SAAgB,6BAA6B,CAAI,KAAiB,EAAE,OAA6B,CAAC,CAAI,EAAE,EAAE,CAAE,CAAyB,CAAC,CAAC;IACrI,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAHD,sEAGC;AAOD;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAiB;IACvD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC9C,CAAC;AAHD,0DAGC"}
1
+ {"version":3,"file":"indexed.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/value/indexed.ts"],"names":[],"mappings":";;;AAiBA;;;;;GAKG;AACH,SAAgB,mCAAmC;IACjD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAFD,kFAEC;AAOD;;;;;GAKG;AACH,SAAgB,mCAAmC,CAAI,SAA+B;IACpF,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,kFAEC;AA6BD,SAAgB,6BAA6B,CAAI,KAAiB,EAAE,OAA6B,CAAC,CAAI,EAAE,EAAE,CAAE,CAAyB,CAAC,CAAC;IACrI,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAHD,sEAGC;AAOD;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAiB;IACvD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC9C,CAAC;AAHD,0DAGC"}
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [8.12.4](https://github.com/dereekb/dbx-components/compare/v8.12.3-dev...v8.12.4) (2022-07-10)
6
+
7
+
8
+
9
+ ## [8.12.3](https://github.com/dereekb/dbx-components/compare/v8.12.2-dev...v8.12.3) (2022-07-09)
10
+
11
+
12
+
13
+ ## [8.12.2](https://github.com/dereekb/dbx-components/compare/v8.12.1-dev...v8.12.2) (2022-07-08)
14
+
15
+
16
+
5
17
  ## [8.12.1](https://github.com/dereekb/dbx-components/compare/v8.12.0-dev...v8.12.1) (2022-07-08)
6
18
 
7
19
 
package/test/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/util/test",
3
- "version": "8.12.1",
3
+ "version": "8.12.4",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
7
7
  "dependencies": {},
8
8
  "peerDependencies": {
9
- "@dereekb/util": "8.12.1",
9
+ "@dereekb/util": "8.12.4",
10
10
  "make-error": "^1.3.0",
11
11
  "ts-essentials": "^9.1.2",
12
12
  "extra-set": "^2.2.11",