@dereekb/util 8.13.3 → 8.13.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,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [8.13.4](https://github.com/dereekb/dbx-components/compare/v8.13.3-dev...v8.13.4) (2022-07-23)
6
+
7
+
8
+
5
9
  ## [8.13.3](https://github.com/dereekb/dbx-components/compare/v8.13.2-dev...v8.13.3) (2022-07-21)
6
10
 
7
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/util",
3
- "version": "8.13.3",
3
+ "version": "8.13.4",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
@@ -25,3 +25,17 @@ export interface NearestDivisibleValues {
25
25
  * @returns
26
26
  */
27
27
  export declare function nearestDivisibleValues(value: number, divisor: number): NearestDivisibleValues;
28
+ /**
29
+ * Returns true if the input is an even number.
30
+ *
31
+ * @param value
32
+ * @returns
33
+ */
34
+ export declare function isEvenNumber(value: number): boolean;
35
+ /**
36
+ * Returns true if the input is an odd number.
37
+ *
38
+ * @param value
39
+ * @returns
40
+ */
41
+ export declare function isOddNumber(value: number): boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nearestDivisibleValues = exports.isNumberDivisibleBy = void 0;
3
+ exports.isOddNumber = exports.isEvenNumber = exports.nearestDivisibleValues = exports.isNumberDivisibleBy = void 0;
4
4
  /**
5
5
  * Returns true if the input value is divisible by the divisor.
6
6
  *
@@ -32,4 +32,24 @@ function nearestDivisibleValues(value, divisor) {
32
32
  };
33
33
  }
34
34
  exports.nearestDivisibleValues = nearestDivisibleValues;
35
+ /**
36
+ * Returns true if the input is an even number.
37
+ *
38
+ * @param value
39
+ * @returns
40
+ */
41
+ function isEvenNumber(value) {
42
+ return value % 2 === 0;
43
+ }
44
+ exports.isEvenNumber = isEvenNumber;
45
+ /**
46
+ * Returns true if the input is an odd number.
47
+ *
48
+ * @param value
49
+ * @returns
50
+ */
51
+ function isOddNumber(value) {
52
+ return value % 2 === 1;
53
+ }
54
+ exports.isOddNumber = isOddNumber;
35
55
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/number.ts"],"names":[],"mappings":";;;AAOA;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,KAAoB,EAAE,OAAe;IACvE,MAAM,SAAS,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,SAAS,KAAK,CAAC,CAAC;AACzB,CAAC;AAHD,kDAGC;AASD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,KAAa,EAAE,OAAe;IACnE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO;QACL,KAAK;QACL,OAAO;QACP,WAAW,EAAE,SAAS,GAAG,OAAO;QAChC,YAAY,EAAE,UAAU,GAAG,OAAO;KACnC,CAAC;AACJ,CAAC;AAXD,wDAWC"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/number/number.ts"],"names":[],"mappings":";;;AAOA;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,KAAoB,EAAE,OAAe;IACvE,MAAM,SAAS,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,SAAS,KAAK,CAAC,CAAC;AACzB,CAAC;AAHD,kDAGC;AASD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,KAAa,EAAE,OAAe;IACnE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO;QACL,KAAK;QACL,OAAO;QACP,WAAW,EAAE,SAAS,GAAG,OAAO;QAChC,YAAY,EAAE,UAAU,GAAG,OAAO;KACnC,CAAC;AACJ,CAAC;AAXD,wDAWC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAFD,oCAEC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAFD,kCAEC"}
@@ -32,3 +32,17 @@ export declare function replaceCharacterAtIndexWith(input: string, index: number
32
32
  * @returns
33
33
  */
34
34
  export declare function splitStringAtIndex(input: string, index: number, inclusive?: boolean): [string, string];
35
+ /**
36
+ * Special UTF-8 character that is the starting character.
37
+ *
38
+ * Example usage is in Firebase string queries to restrict the string search to a specific string.
39
+ */
40
+ export declare const UTF_8_START_CHARACTER = "\0";
41
+ /**
42
+ * Special UTF-8 character that is very high.
43
+ *
44
+ * Example usage is in Firebase string queries as wildcards for searching:
45
+ *
46
+ * https://firebase.google.com/docs/database/rest/retrieve-data#range-queries
47
+ */
48
+ export declare const UTF_PRIVATE_USAGE_AREA_START = "\uF8FF";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.splitStringAtIndex = exports.replaceCharacterAtIndexWith = exports.firstAndLastCharacterOccurrence = void 0;
3
+ exports.UTF_PRIVATE_USAGE_AREA_START = exports.UTF_8_START_CHARACTER = exports.splitStringAtIndex = exports.replaceCharacterAtIndexWith = exports.firstAndLastCharacterOccurrence = void 0;
4
4
  /**
5
5
  * Find the first and last occurence of the input character in the input string.
6
6
  *
@@ -63,4 +63,18 @@ function splitStringAtIndex(input, index, inclusive = false) {
63
63
  return [head, tail];
64
64
  }
65
65
  exports.splitStringAtIndex = splitStringAtIndex;
66
+ /**
67
+ * Special UTF-8 character that is the starting character.
68
+ *
69
+ * Example usage is in Firebase string queries to restrict the string search to a specific string.
70
+ */
71
+ exports.UTF_8_START_CHARACTER = '\u0000';
72
+ /**
73
+ * Special UTF-8 character that is very high.
74
+ *
75
+ * Example usage is in Firebase string queries as wildcards for searching:
76
+ *
77
+ * https://firebase.google.com/docs/database/rest/retrieve-data#range-queries
78
+ */
79
+ exports.UTF_PRIVATE_USAGE_AREA_START = '\uf8ff';
66
80
  //# sourceMappingURL=char.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"char.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/string/char.ts"],"names":[],"mappings":";;;AASA;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAAC,KAAa,EAAE,IAAY;IACzE,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,GAAW,CAAC,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;KAChG;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACrB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM;gBACL,IAAI,GAAG,CAAC,CAAC;aACV;YAED,UAAU,IAAI,CAAC,CAAC;SACjB;KACF;IAED,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;QAC/B,IAAI,GAAG,KAAK,CAAC;KACd;IAED,OAAO;QACL,KAAK;QACL,IAAI;QACJ,UAAU;KACX,CAAC;AACJ,CAAC;AA9BD,0EA8BC;AAED;;;;;;;GAOG;AACH,SAAgB,2BAA2B,CAAC,KAAa,EAAE,KAAa,EAAE,WAAmB;IAC3F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;AACnC,CAAC;AAHD,kEAGC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAa,EAAE,SAAS,GAAG,KAAK;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC;AAJD,gDAIC"}
1
+ {"version":3,"file":"char.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/string/char.ts"],"names":[],"mappings":";;;AASA;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAAC,KAAa,EAAE,IAAY;IACzE,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,GAAW,CAAC,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;KAChG;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACrB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM;gBACL,IAAI,GAAG,CAAC,CAAC;aACV;YAED,UAAU,IAAI,CAAC,CAAC;SACjB;KACF;IAED,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;QAC/B,IAAI,GAAG,KAAK,CAAC;KACd;IAED,OAAO;QACL,KAAK;QACL,IAAI;QACJ,UAAU;KACX,CAAC;AACJ,CAAC;AA9BD,0EA8BC;AAED;;;;;;;GAOG;AACH,SAAgB,2BAA2B,CAAC,KAAa,EAAE,KAAa,EAAE,WAAmB;IAC3F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;AACnC,CAAC;AAHD,kEAGC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAa,EAAE,SAAS,GAAG,KAAK;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC;AAJD,gDAIC;AAED;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AAE9C;;;;;;GAMG;AACU,QAAA,4BAA4B,GAAG,QAAQ,CAAC"}
package/src/lib/type.d.ts CHANGED
@@ -79,6 +79,8 @@ export declare type StringKeyPropertyKeys<T> = keyof StringKeyProperties<T>;
79
79
  export declare type Configurable<T> = Writable<T>;
80
80
  /**
81
81
  * StringOrder of all keys of an object.
82
+ *
83
+ * NOTE: Intellisense may not return the correct order.
82
84
  */
83
85
  export declare type CommaSeparatedKeyOrderOfObject<T extends object> = CommaSeparatedKeyOrder<`${KeyCanBeString<keyof T>}`>;
84
86
  export declare type CommaSeparatedKeyOrder<T extends string> = StringOrder<T, ','>;
@@ -88,14 +90,30 @@ export declare type CommaSeparatedKeyOrder<T extends string> = StringOrder<T, ',
88
90
  export declare type CommaSeparatedKeyCombinationsOfObject<T extends object> = CommaSeparatedKeyCombinations<`${KeyCanBeString<keyof T>}`>;
89
91
  export declare type CommaSeparatedKeyCombinations<T extends string> = StringCombination<T, ','>;
90
92
  /**
91
- * StringConcatination of all keys of an object.
93
+ * StringConcatenationApproximation of keys of an object in approximate order.
92
94
  */
93
95
  export declare type CommaSeparatedKeysOfObject<T extends object> = CommaSeparatedKeys<`${KeyCanBeString<keyof T>}`>;
94
- export declare type CommaSeparatedKeys<T extends string> = StringConcatination<T, ','>;
96
+ export declare type CommaSeparatedKeys<T extends string> = StringConcatenationApproximation<T, ','>;
97
+ /**
98
+ * StringConcatenation of all keys of an object in no particular order.
99
+ *
100
+ * May fail for more complex types, requiring the use of CommaSeparatedKeysOfObject.
101
+ */
102
+ export declare type AllCommaSeparatedKeysOfObject<T extends object> = AllCommaSeparatedKeys<`${KeyCanBeString<keyof T>}`>;
103
+ export declare type AllCommaSeparatedKeys<T extends string> = StringConcatenation<T, ','>;
104
+ /**
105
+ * StringConcatenationOrder of all keys of an object in ascending order.
106
+ *
107
+ * NOTE: Intellisense may not return the correct order.
108
+ */
109
+ export declare type OrderedCommaSeparatedKeysOfObject<T extends object> = OrderedCommaSeparatedKeys<`${KeyCanBeString<keyof T>}`>;
110
+ export declare type OrderedCommaSeparatedKeys<T extends string> = StringConcatenationOrder<T, ','>;
95
111
  export declare type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
96
112
  export declare type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ? A : never;
97
113
  /**
98
- * A type that merges all combinations of strings together using a separator, but restricts a certain order.
114
+ * A type that merges all combinations of strings together using a separator, but restricts the result to ascending lexigraphical order.
115
+ *
116
+ * NOTE: Intellisense may not display the correct order, but Typescript will enforce the expected order.
99
117
  *
100
118
  * Example:
101
119
  * 'a' | 'b' | 'c' w/ ',' -> 'a' | 'b' | 'c' | 'a,b' | 'a,c' | 'a,b,c' | etc...
@@ -104,7 +122,8 @@ export declare type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ?
104
122
  *
105
123
  * https://stackoverflow.com/a/65157132
106
124
  */
107
- 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;
125
+ export declare type StringOrder<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? SELF : // This works because the values of S are always sorted and interpreted in an ascending order
126
+ `${StringOrder<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | StringOrder<Exclude<S, SELF>, SEPARATOR> | SELF : never : never;
108
127
  /**
109
128
  * A type that merges all combinations of strings together using a separator.
110
129
  *
@@ -112,13 +131,48 @@ export declare type StringOrder<S extends string, SEPARATOR extends string> = Po
112
131
  * 'a' | 'b' | 'c' w/ ',' -> 'a' | 'b' | 'c' | 'a,b' | 'b,a' | 'c,a,b' | etc...
113
132
  */
114
133
  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;
134
+ /**
135
+ * A type that merges all the input strings together and requires them sorted and interpreted in an ascending order
136
+ *
137
+ * NOTE: Intellisense may not display the correct order, but Typescript will enforce the expected order.
138
+ *
139
+ * Example:
140
+ * 'a' | 'c' | 'b' w/ ',' -> 'a,b,c'
141
+ */
142
+ export declare type StringConcatenationOrder<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? `${SELF}` : `${StringConcatenationOrder<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` : never : never;
115
143
  /**
116
144
  * A type that merges all the input strings together using a separator.
117
145
  *
118
146
  * Example:
119
- * 'a' | 'b' | 'c' w/ ',' -> 'a,b,c' | 'a,c,b'
147
+ * 'a' | 'b' | 'c' w/ ',' -> 'a,b,c' | 'a,c,b' | 'b,a,c' | etc...
120
148
  */
121
- 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;
149
+ export declare type StringConcatenation<S extends string, SEPARATOR extends string> = StringConcatenationMany<S, SEPARATOR>;
150
+ /**
151
+ * Used to "approximate" larger concatenations. In reality, this just excludes the earlier types from being present in the middle.
152
+ */
153
+ export declare type StringConcatenationApproximation<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer SELF ? SELF extends string ? Exclude<S, SELF> extends never ? `${SELF}` : `${StringConcatenationApproximation<Exclude<S, SELF>, SEPARATOR>}${SEPARATOR}${SELF}` | `${SELF}${SEPARATOR}${StringConcatenationApproximation<Exclude<S, SELF>, SEPARATOR>}` : never : never;
154
+ /**
155
+ * Creates the concatenations for the input.
156
+ *
157
+ * Total number of concatenations is equal to n!.
158
+ *
159
+ * The max number of strings allowed is 7. If there are more than 7 strings passed, this function will use StringConcatenationApproximation.
160
+ */
161
+ export declare type StringConcatenationMany<S extends string, SEPARATOR extends string> = PopUnion<S> extends infer ONE ? ONE extends string ? PopUnion<Exclude<S, ONE>> extends infer TWO ? TWO extends string ? Exclude<S, ONE | TWO> extends never ? StringConcatinateTwo<ONE, TWO, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO>> extends infer THREE ? THREE extends string ? Exclude<S, ONE | TWO | THREE> extends never ? StringConcatinateThree<ONE, TWO, THREE, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO | THREE>> extends infer FOUR ? FOUR extends string ? Exclude<S, ONE | TWO | THREE | FOUR> extends never ? StringConcatinateFour<ONE, TWO, THREE, FOUR, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO | THREE | FOUR>> extends infer FIVE ? FIVE extends string ? Exclude<S, ONE | TWO | THREE | FOUR | FIVE> extends never ? StringConcatinateFive<ONE, TWO, THREE, FOUR, FIVE, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO | THREE | FOUR | FIVE>> extends infer SIX ? SIX extends string ? Exclude<S, ONE | TWO | THREE | FOUR | FIVE | SIX> extends never ? StringConcatinateSix<ONE, TWO, THREE, FOUR, FIVE, SIX, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO | THREE | FOUR | FIVE | SIX>> extends infer SEVEN ? SEVEN extends string ? Exclude<S, ONE | TWO | THREE | FOUR | FIVE | SIX | SEVEN> extends never ? StringConcatinateSeven<ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, SEPARATOR> : PopUnion<Exclude<S, ONE | TWO | THREE | FOUR | FIVE | SIX | SEVEN>> extends infer EIGHT ? EIGHT extends string ? StringConcatenationApproximation<S, SEPARATOR> : never : StringConcatinateSeven<ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, SEPARATOR> : never : StringConcatinateSix<ONE, TWO, THREE, FOUR, FIVE, SIX, SEPARATOR> : never : StringConcatinateFive<ONE, TWO, THREE, FOUR, FIVE, SEPARATOR> : never : StringConcatinateFour<ONE, TWO, THREE, FOUR, SEPARATOR> : never : StringConcatinateThree<ONE, TWO, THREE, SEPARATOR> : StringConcatinateTwo<ONE, TWO, SEPARATOR> : StringConcatinateTwo<ONE, TWO, SEPARATOR> : never : ONE : never : never;
162
+ export declare type StringConcatinateTwo<LEFT extends string, SELF extends string, SEPARATOR extends string> = `${LEFT}${SEPARATOR}${SELF}` | `${SELF}${SEPARATOR}${LEFT}`;
163
+ export declare type StringConcatinateThree<LEFT extends string, RIGHT extends string, SELF extends string, SEPARATOR extends string> = `${LEFT}${SEPARATOR}${SELF}${SEPARATOR}${RIGHT}` | `${LEFT}${SEPARATOR}${RIGHT}${SEPARATOR}${SELF}` | `${SELF}${SEPARATOR}${RIGHT}${SEPARATOR}${LEFT}` | `${SELF}${SEPARATOR}${LEFT}${SEPARATOR}${RIGHT}` | `${RIGHT}${SEPARATOR}${LEFT}${SEPARATOR}${SELF}` | `${RIGHT}${SEPARATOR}${SELF}${SEPARATOR}${LEFT}`;
164
+ export declare type StringConcatinateFour<ONE extends string, TWO extends string, THREE extends string, FOUR extends string, SEPARATOR extends string> = `${StringConcatinateThree<ONE, TWO, THREE, SEPARATOR>}${SEPARATOR}${FOUR}` | `${StringConcatinateThree<TWO, THREE, FOUR, SEPARATOR>}${SEPARATOR}${ONE}` | `${StringConcatinateThree<THREE, FOUR, ONE, SEPARATOR>}${SEPARATOR}${TWO}` | `${StringConcatinateThree<FOUR, ONE, TWO, SEPARATOR>}${SEPARATOR}${THREE}`;
165
+ export declare type StringConcatinateFive<ONE extends string, TWO extends string, THREE extends string, FOUR extends string, FIVE extends string, SEPARATOR extends string> = `${StringConcatinateFour<ONE, TWO, THREE, FOUR, SEPARATOR>}${SEPARATOR}${FIVE}` | `${StringConcatinateFour<TWO, THREE, FOUR, FIVE, SEPARATOR>}${SEPARATOR}${ONE}` | `${StringConcatinateFour<THREE, FOUR, FIVE, ONE, SEPARATOR>}${SEPARATOR}${TWO}` | `${StringConcatinateFour<FOUR, FIVE, ONE, TWO, SEPARATOR>}${SEPARATOR}${THREE}` | `${StringConcatinateFour<FIVE, ONE, TWO, THREE, SEPARATOR>}${SEPARATOR}${FOUR}`;
166
+ export declare type StringConcatinateSix<ONE extends string, TWO extends string, THREE extends string, FOUR extends string, FIVE extends string, SIX extends string, SEPARATOR extends string> = `${StringConcatinateFive<ONE, TWO, THREE, FOUR, FIVE, SEPARATOR>}${SEPARATOR}${SIX}` | `${StringConcatinateFive<TWO, THREE, FOUR, FIVE, SIX, SEPARATOR>}${SEPARATOR}${ONE}` | `${StringConcatinateFive<THREE, FOUR, FIVE, SIX, ONE, SEPARATOR>}${SEPARATOR}${TWO}` | `${StringConcatinateFive<FOUR, FIVE, SIX, ONE, TWO, SEPARATOR>}${SEPARATOR}${THREE}` | `${StringConcatinateFive<FIVE, SIX, ONE, TWO, THREE, SEPARATOR>}${SEPARATOR}${FOUR}` | `${StringConcatinateFive<SIX, ONE, TWO, THREE, FOUR, SEPARATOR>}${SEPARATOR}${FIVE}`;
167
+ export declare type StringConcatinateSeven<ONE extends string, TWO extends string, THREE extends string, FOUR extends string, FIVE extends string, SIX extends string, SEVEN extends string, SEPARATOR extends string> = `${StringConcatinateSix<SEVEN, ONE, TWO, THREE, FOUR, FIVE, SEPARATOR>}${SEPARATOR}${SIX}` | `${StringConcatinateSix<TWO, THREE, FOUR, FIVE, SIX, SEVEN, SEPARATOR>}${SEPARATOR}${ONE}` | `${StringConcatinateSix<THREE, FOUR, FIVE, SIX, SEVEN, ONE, SEPARATOR>}${SEPARATOR}${TWO}` | `${StringConcatinateSix<FOUR, FIVE, SIX, SEVEN, ONE, TWO, SEPARATOR>}${SEPARATOR}${THREE}` | `${StringConcatinateSix<FIVE, SIX, SEVEN, ONE, TWO, THREE, SEPARATOR>}${SEPARATOR}${FOUR}` | `${StringConcatinateSix<SIX, SEVEN, ONE, TWO, THREE, FOUR, SEPARATOR>}${SEPARATOR}${FIVE}`;
168
+ export declare type IsSingleCharacter<S extends string> = PopUnion<S> extends infer SELF ? (Exclude<S, SELF> extends never ? S : never) : never;
169
+ export declare type HasTwoOrMoreCharacters<S extends string> = PopUnion<S> extends infer FIRST ? FIRST extends string ? PopUnion<Exclude<S, FIRST>> extends infer SECOND ? SECOND extends string ? S : never : never : never : never;
170
+ export declare type HasThreeCharacters<S extends string> = PopUnion<S> extends infer FIRST ? FIRST extends string ? PopUnion<Exclude<S, FIRST>> extends infer SECOND ? SECOND extends string ? PopUnion<Exclude<S, FIRST | SECOND>> extends infer THIRD ? THIRD extends string ? Exclude<S, FIRST | SECOND | THIRD> extends never ? S : never : never : never : never : never : never : never;
171
+ export declare type HasThreeOrMoreCharacters<S extends string> = PopUnion<S> extends infer FIRST ? FIRST extends string ? PopUnion<Exclude<S, FIRST>> extends infer SECOND ? SECOND extends string ? PopUnion<Exclude<S, FIRST | SECOND>> extends infer THIRD ? THIRD extends string ? S : never : never : never : never : never : never;
172
+ /**
173
+ * @deprecated use StringConcatenation
174
+ */
175
+ export declare type StringConcatination<S extends string, SEPARATOR extends string> = StringConcatenation<S, SEPARATOR>;
122
176
  /**
123
177
  * @deprecated use StringCombination
124
178
  */
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [8.13.4](https://github.com/dereekb/dbx-components/compare/v8.13.3-dev...v8.13.4) (2022-07-23)
6
+
7
+
8
+
5
9
  ## [8.13.3](https://github.com/dereekb/dbx-components/compare/v8.13.2-dev...v8.13.3) (2022-07-21)
6
10
 
7
11
 
package/test/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/util/test",
3
- "version": "8.13.3",
3
+ "version": "8.13.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.13.3",
9
+ "@dereekb/util": "8.13.4",
10
10
  "make-error": "^1.3.0",
11
11
  "ts-essentials": "^9.1.2",
12
12
  "extra-set": "^2.2.11",