@avstantso/ts 1.2.1 → 1.3.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.
- package/CHANGELOG.md +7 -0
- package/README.md +77 -4
- package/dist/_global/array/derivative.d.ts +43 -11
- package/dist/_global/ascii.d.ts +8 -0
- package/dist/_global/literal.d.ts +5 -1
- package/dist/_global/string.d.ts +31 -2
- package/dist/_global/type/_register.d.ts +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Advanced TypeScript type system utilities and helpers for creating powerful gene
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
10
|
- **Type-level arithmetic** - Increment, decrement, addition, subtraction, multiplication, division, and power operations on numeric literals
|
|
11
|
-
- **Advanced array types** - Create, manipulate, sort, filter, and transform array types with utilities like `Create`, `Sort`, `
|
|
11
|
+
- **Advanced array types** - Create, manipulate, sort, filter, and transform array types with utilities like `Create`, `Sort`, `Filter`, `Filter.Unique`, `Reverse`, `Join`
|
|
12
12
|
- **String manipulation types** - String length, case conversions (camelCase, PascalCase, snake_case, kebab-case), trimming, replacement, and pattern matching
|
|
13
13
|
- **Union utilities** - Convert unions to intersections, tuples, test for union types, and more
|
|
14
14
|
- **Structure (object) utilities** - Deep type manipulation, key/value extraction, flattening, reversing, splitting, and combining
|
|
@@ -421,7 +421,31 @@ type WithUndefined = TS.Array.MergeUnique<[6, 1, 4], [1, 2, undefined, 1, 4, 2,
|
|
|
421
421
|
// [6, 1, 4, 2, undefined]
|
|
422
422
|
```
|
|
423
423
|
|
|
424
|
-
#### `TS.Array.
|
|
424
|
+
#### `TS.Array.Filter<TArr, TFilter = undefined>`
|
|
425
|
+
|
|
426
|
+
Create array type from array without items matching the filter.
|
|
427
|
+
|
|
428
|
+
**Type Parameters:**
|
|
429
|
+
- `TArr` - Array type to filter
|
|
430
|
+
- `TFilter` - Items to exclude (single item or array of items). Defaults to `undefined`
|
|
431
|
+
|
|
432
|
+
**Example:**
|
|
433
|
+
```typescript
|
|
434
|
+
import { TS } from '@avstantso/ts';
|
|
435
|
+
|
|
436
|
+
// Filter out specific value
|
|
437
|
+
type NoOnes = TS.Array.Filter<[1, 2, 3, 1, 4, 2, 5], 1>; // [2, 3, 4, 2, 5]
|
|
438
|
+
|
|
439
|
+
// Filter out multiple values
|
|
440
|
+
type Filtered = TS.Array.Filter<[1, 2, 3, undefined, 1, 4, undefined, 5], [2, 3, undefined]>;
|
|
441
|
+
// [1, 1, 4, 5]
|
|
442
|
+
|
|
443
|
+
// Default: filter undefined values
|
|
444
|
+
type NoUndefined = TS.Array.Filter<[1, 2, 3, undefined, 1, 4, undefined, 5]>;
|
|
445
|
+
// [1, 2, 3, 1, 4, 5]
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
##### `TS.Array.Filter.Unique<TArr>`
|
|
425
449
|
|
|
426
450
|
Create array type from array without duplicates.
|
|
427
451
|
|
|
@@ -429,8 +453,8 @@ Create array type from array without duplicates.
|
|
|
429
453
|
```typescript
|
|
430
454
|
import { TS } from '@avstantso/ts';
|
|
431
455
|
|
|
432
|
-
type Unique = TS.Array.
|
|
433
|
-
type WithUndefined = TS.Array.
|
|
456
|
+
type Unique = TS.Array.Filter.Unique<[1, 2, 3, 1, 4, 2, 5]>; // [1, 2, 3, 4, 5]
|
|
457
|
+
type WithUndefined = TS.Array.Filter.Unique<[1, 2, 3, undefined, 1, 4, undefined, 5]>;
|
|
434
458
|
// [1, 2, 3, undefined, 4, 5]
|
|
435
459
|
```
|
|
436
460
|
|
|
@@ -700,6 +724,26 @@ English uppercase letters array type: `['A', 'B', 'C', ..., 'Z']`.
|
|
|
700
724
|
|
|
701
725
|
English lowercase letters array type: `['a', 'b', 'c', ..., 'z']`.
|
|
702
726
|
|
|
727
|
+
#### `TS.ASCII.Letter<IsUpper = true>`
|
|
728
|
+
|
|
729
|
+
English letter union type generic by case.
|
|
730
|
+
|
|
731
|
+
**Example:**
|
|
732
|
+
```typescript
|
|
733
|
+
import { TS } from '@avstantso/ts';
|
|
734
|
+
|
|
735
|
+
type Upper = TS.ASCII.Letter<true>; // 'A' | 'B' | ... | 'Z'
|
|
736
|
+
type Lower = TS.ASCII.Letter<false>; // 'a' | 'b' | ... | 'z'
|
|
737
|
+
```
|
|
738
|
+
|
|
739
|
+
##### `TS.ASCII.Letter.Upper`
|
|
740
|
+
|
|
741
|
+
Union of English uppercase letters: `'A' | 'B' | 'C' | ... | 'Z'`.
|
|
742
|
+
|
|
743
|
+
##### `TS.ASCII.Letter.Lower`
|
|
744
|
+
|
|
745
|
+
Union of English lowercase letters: `'a' | 'b' | 'c' | ... | 'z'`.
|
|
746
|
+
|
|
703
747
|
#### `TS.ASCII`
|
|
704
748
|
|
|
705
749
|
Readonly array type of all ASCII characters (character codes 0-255).
|
|
@@ -828,6 +872,29 @@ type StrGreaterEq = TS.Comparisons.GTE<'b', 'b'>; // true
|
|
|
828
872
|
|
|
829
873
|
String type manipulation utilities.
|
|
830
874
|
|
|
875
|
+
### `TS.String<T, D = ''>`
|
|
876
|
+
|
|
877
|
+
Cast a value to string literal type with a default fallback.
|
|
878
|
+
|
|
879
|
+
**Type Parameters:**
|
|
880
|
+
- `T` - Value to convert to string
|
|
881
|
+
- `D` - Default value if `T` cannot be converted to string (default: `''`)
|
|
882
|
+
|
|
883
|
+
**Returns:** String literal type or `D` if conversion not possible
|
|
884
|
+
|
|
885
|
+
**Example:**
|
|
886
|
+
```typescript
|
|
887
|
+
import { TS } from '@avstantso/ts';
|
|
888
|
+
|
|
889
|
+
type FromString = TS.String<'abcd'>; // 'abcd'
|
|
890
|
+
type FromNumber = TS.String<123>; // '123'
|
|
891
|
+
type FromBoolean = TS.String<true>; // 'true'
|
|
892
|
+
type FromFalse = TS.String<false>; // 'false'
|
|
893
|
+
|
|
894
|
+
// With default fallback
|
|
895
|
+
type WithDefault = TS.String<object, 'fallback'>; // 'fallback'
|
|
896
|
+
```
|
|
897
|
+
|
|
831
898
|
### Basic String Types
|
|
832
899
|
|
|
833
900
|
#### `TS.String.Possible`
|
|
@@ -1025,6 +1092,12 @@ type Pascal = TS.String.Case<'p', Phrase>; // 'OhJingleBellsJingleBellsJingleAll
|
|
|
1025
1092
|
type Snake = TS.String.Case<'s', Phrase>; // 'oh_jingle_bells_jingle_bells_jingle_all_the_way'
|
|
1026
1093
|
type SnakeUp = TS.String.Case<'S', Phrase>; // 'OH_JINGLE_BELLS_JINGLE_BELLS_JINGLE_ALL_THE_WAY'
|
|
1027
1094
|
type Kebab = TS.String.Case<'k', Phrase>; // 'oh-jingle-bells-jingle-bells-jingle-all-the-way'
|
|
1095
|
+
|
|
1096
|
+
// Handles consecutive uppercase letters correctly
|
|
1097
|
+
type XMLCamel = TS.String.Case<'c', 'XMLHttpRequest'>; // 'xmlHttpRequest'
|
|
1098
|
+
type XMLPascal = TS.String.Case<'p', 'XMLHttpRequest'>; // 'XmlHttpRequest'
|
|
1099
|
+
type XMLSnake = TS.String.Case<'s', 'XMLHttpRequest'>; // 'xml_http_request'
|
|
1100
|
+
type XMLKebab = TS.String.Case<'k', 'XMLHttpRequest'>; // 'xml-http-request'
|
|
1028
1101
|
```
|
|
1029
1102
|
|
|
1030
1103
|
##### `TS.String.Case.Settings.Removes`
|
|
@@ -40,26 +40,58 @@ declare namespace AVStantso.TS.Array {
|
|
|
40
40
|
* >;
|
|
41
41
|
*/
|
|
42
42
|
export type MergeUnique<TArr1 extends ArrR, TArr2 extends ArrR> = TArr1 extends undefined ? never : TArr2 extends undefined ? never : TArr1 extends ArrN ? TArr2 extends ArrN ? _MergeUnique<TArr1, TArr2> : never : never;
|
|
43
|
-
|
|
43
|
+
export namespace Filter {
|
|
44
|
+
type _Unique<TArr extends ArrR, R extends Arr = []> = TArr extends readonly [infer F, ...infer Rest] ? _Unique<Rest, IfHasItem<R, F> extends true ? R : [...R, F]> : R;
|
|
45
|
+
/**
|
|
46
|
+
* @summary Create array type from array without duplicates.
|
|
47
|
+
* @template TArr Array type
|
|
48
|
+
* @returns New array without duplicates
|
|
49
|
+
* @example
|
|
50
|
+
* type n = CheckType<Filter.Unique<never>, never>;
|
|
51
|
+
* type u = CheckType<Filter.Unique<undefined>,never>;
|
|
52
|
+
*
|
|
53
|
+
* type A = CheckType<Filter.Unique<[1, 2, 3, 1, 4, 2, 5]>, [1, 2, 3, 4, 5]>;
|
|
54
|
+
* type AU = CheckType<
|
|
55
|
+
* Filter.Unique<[1, 2, 3, undefined, 1, 4, undefined, 5]>,
|
|
56
|
+
* [1, 2, 3, undefined, 4, 5]
|
|
57
|
+
* >;
|
|
58
|
+
* type rAU = CheckType<
|
|
59
|
+
* Filter.Unique<readonly [1, 2, 3, undefined, 1, 4, undefined, 5]>,
|
|
60
|
+
* [1, 2, 3, undefined, 4, 5]
|
|
61
|
+
* >;
|
|
62
|
+
*/
|
|
63
|
+
export type Unique<TArr extends ArrR> = TArr extends undefined ? never : TArr extends ArrN ? _Unique<TArr> : never;
|
|
64
|
+
export {};
|
|
65
|
+
}
|
|
66
|
+
type _Filter<TArr extends ArrR, TFArr extends ArrR, R extends Arr = []> = TArr extends readonly [infer F, ...infer Rest] ? _Filter<Rest, TFArr, IfHasItem<TFArr, F> extends true ? R : [...R, F]> : R;
|
|
44
67
|
/**
|
|
45
|
-
* @summary Create array type from array without
|
|
68
|
+
* @summary Create array type from array without items from filter.
|
|
46
69
|
* @template TArr Array type
|
|
47
|
-
* @
|
|
70
|
+
* @template TFilter Array of items or one item to exclude. Default filter `undefined` values
|
|
71
|
+
* @returns New filtered array
|
|
48
72
|
* @example
|
|
49
|
-
* type
|
|
50
|
-
* type
|
|
73
|
+
* type n0 = CheckType<Filter<never, any>, never>;
|
|
74
|
+
* type n1 = CheckType<Filter<any, never>, never>;
|
|
75
|
+
* type u0 = CheckType<Filter<undefined, any>, never>;
|
|
76
|
+
* type u1 = CheckType<Filter<any, undefined>, [] | [unknown]>;
|
|
51
77
|
*
|
|
52
|
-
* type A = CheckType<
|
|
78
|
+
* type A = CheckType<Filter<[1, 2, 3, 1, 4, 2, 5], 1>, [2, 3, 4, 2, 5]>;
|
|
53
79
|
* type AU = CheckType<
|
|
54
|
-
*
|
|
55
|
-
* [1,
|
|
80
|
+
* Filter<[1, 2, 3, undefined, 1, 4, undefined, 5], [2, 3, undefined]>,
|
|
81
|
+
* [1, 1, 4, 5]
|
|
56
82
|
* >;
|
|
57
83
|
* type rAU = CheckType<
|
|
58
|
-
*
|
|
59
|
-
* [1, 2, 3,
|
|
84
|
+
* Filter<readonly [1, 2, 3, undefined, 1, 4, undefined, 5], readonly [4, undefined]>,
|
|
85
|
+
* [1, 2, 3, 1, 5]
|
|
86
|
+
* >;
|
|
87
|
+
* type AUd = CheckType<
|
|
88
|
+
* Filter<[1, 2, 3, undefined, 1, 4, undefined, 5]>,
|
|
89
|
+
* [1, 2, 3, 1, 4, 5]
|
|
60
90
|
* >;
|
|
61
91
|
*/
|
|
62
|
-
export type
|
|
92
|
+
export type Filter<TArr extends ArrR, TFilter = undefined> = TArr extends undefined ? never : TArr extends ArrN ? TFilter extends undefined ? _Filter<TArr, [TFilter]> : TFilter extends ArrN ? _Filter<TArr, TFilter> : _Filter<TArr, [TFilter]> : never;
|
|
93
|
+
export namespace Filter {
|
|
94
|
+
}
|
|
63
95
|
type _Sub<TArr extends ArrR, Start extends number, End extends number, I extends number = 0, R extends Arr = [], Ignore extends boolean = I extends Start ? false : true> = TArr extends readonly [infer F, ...infer Rest] ? I extends End ? R : Ignore extends true ? _Sub<Rest, Start, End, Increment<I>, R> : _Sub<Rest, Start, End, Increment<I>, [...R, F], false> : R;
|
|
64
96
|
type _SubCheck<TArr extends ArrR, Start extends number, End extends number, S extends number = Start extends undefined ? 0 : Numeric.IsNegative<Start, 0, Start>> = End extends undefined ? _Sub<TArr, S, End> : GT<S, Increment<End>> extends true ? never : _Sub<TArr, S, Increment<End>>;
|
|
65
97
|
/**
|
package/dist/_global/ascii.d.ts
CHANGED
|
@@ -13,6 +13,14 @@ declare namespace AVStantso {
|
|
|
13
13
|
type Lower = typeof ASCII_Printable_Characters_Letters_Lower;
|
|
14
14
|
}
|
|
15
15
|
type Letters<IsUpper extends boolean = true> = IsUpper extends true ? Letters.Upper : Letters.Lower;
|
|
16
|
+
/**
|
|
17
|
+
* @summary English letter
|
|
18
|
+
*/
|
|
19
|
+
namespace Letter {
|
|
20
|
+
type Upper = Letters.Upper[number];
|
|
21
|
+
type Lower = Letters.Lower[number];
|
|
22
|
+
}
|
|
23
|
+
type Letter<IsUpper extends boolean = true> = IsUpper extends true ? Letter.Upper : Letter.Lower;
|
|
16
24
|
/**
|
|
17
25
|
* @summary `ASCII` characters
|
|
18
26
|
* @see https://www.ascii-code.com/
|
|
@@ -3,7 +3,7 @@ declare namespace AVStantso {
|
|
|
3
3
|
/**
|
|
4
4
|
* @summary Literal for available types for value
|
|
5
5
|
*/
|
|
6
|
-
type Literal = keyof Literal.Map;
|
|
6
|
+
type Literal = keyof Literal.Map & {};
|
|
7
7
|
namespace Literal {
|
|
8
8
|
/**
|
|
9
9
|
* @summary Map for available builtin types for value
|
|
@@ -18,6 +18,10 @@ declare namespace AVStantso {
|
|
|
18
18
|
object: object;
|
|
19
19
|
function: Function;
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* @summary Union for available builtin types for value
|
|
23
|
+
*/
|
|
24
|
+
type Builtin = keyof Builtins & {};
|
|
21
25
|
/**
|
|
22
26
|
* @summary Map for available types for value
|
|
23
27
|
*/
|
package/dist/_global/string.d.ts
CHANGED
|
@@ -249,6 +249,20 @@ declare namespace AVStantso.TS.String {
|
|
|
249
249
|
* type s = CheckType<Snake<w>, 'oh_jingle_bells_jingle_bells_jingle_all_the_way'>;
|
|
250
250
|
* type S = CheckType<Snake.Up<w>, 'OH_JINGLE_BELLS_JINGLE_BELLS_JINGLE_ALL_THE_WAY'>;
|
|
251
251
|
* type k = CheckType<Kebab<w>, 'oh-jingle-bells-jingle-bells-jingle-all-the-way'>;
|
|
252
|
+
*
|
|
253
|
+
* type user_id = {
|
|
254
|
+
* userId: CheckType<Camel<'user_id'>, 'userId'>;
|
|
255
|
+
* UserId: CheckType<Pascal<'user_id'>, 'UserId'>;
|
|
256
|
+
* user_id: CheckType<Snake<'user_id'>, 'user_id'>;
|
|
257
|
+
* 'user-id': CheckType<Kebab<'user_id'>, 'user-id'>;
|
|
258
|
+
* };
|
|
259
|
+
*
|
|
260
|
+
* type XMLHttpRequest = {
|
|
261
|
+
* xmlHttpRequest: CheckType<Camel<'XMLHttpRequest'>, 'xmlHttpRequest'>;
|
|
262
|
+
* XmlHttpRequest: CheckType<Pascal<'XMLHttpRequest'>, 'XmlHttpRequest'>;
|
|
263
|
+
* xml_http_request: CheckType<Snake<'XMLHttpRequest'>, 'xml_http_request'>;
|
|
264
|
+
* 'xml-http-request': CheckType<Kebab<'XMLHttpRequest'>, 'xml-http-request'>;
|
|
265
|
+
* };
|
|
252
266
|
*/
|
|
253
267
|
export namespace Case {
|
|
254
268
|
/**
|
|
@@ -273,8 +287,9 @@ declare namespace AVStantso.TS.String {
|
|
|
273
287
|
}
|
|
274
288
|
type Removes = keyof Removes.Map;
|
|
275
289
|
}
|
|
276
|
-
type
|
|
277
|
-
type
|
|
290
|
+
type _IsWordStart<C extends string, E extends string, PrevUpper extends boolean> = C extends Uppercase<C> ? PrevUpper extends true ? E extends `${infer Next}${string}` ? Next extends Lowercase<Next> ? true : false : false : true : false;
|
|
291
|
+
type _CamelPascal<S extends string, RM extends string, U extends boolean = false, PrevUpper extends boolean = false, R extends string = ''> = S extends `${infer C}${infer E}` ? C extends RM ? _CamelPascal<E, RM, true, false, R> : _IsWordStart<C, E, PrevUpper> extends true ? _CamelPascal<E, RM, false, C extends Uppercase<C> ? true : false, `${R}${R extends '' ? (U extends true ? Uppercase<C> : Lowercase<C>) : Uppercase<C>}`> : _CamelPascal<E, RM, false, C extends Uppercase<C> ? true : false, `${R}${U extends true ? Uppercase<C> : Lowercase<C>}`> : R;
|
|
292
|
+
type _SnakeKebab<S extends string, Sep extends string, RM extends string, U extends boolean = false, F extends boolean = true, PrevUpper extends boolean = false, R extends string = ''> = S extends `${infer C}${infer E}` ? C extends RM ? _SnakeKebab<E, Sep, RM, true, F, false, R> : _SnakeKebab<E, Sep, RM, false, false, C extends Uppercase<C> ? true : false, `${R}${F extends true ? '' : U extends true ? Sep : _IsWordStart<C, E, PrevUpper> extends true ? Sep : ''}${Lowercase<C>}`> : R;
|
|
278
293
|
/**
|
|
279
294
|
* @summary Camel case
|
|
280
295
|
*/
|
|
@@ -304,3 +319,17 @@ declare namespace AVStantso.TS.String {
|
|
|
304
319
|
}
|
|
305
320
|
export {};
|
|
306
321
|
}
|
|
322
|
+
declare namespace AVStantso.TS {
|
|
323
|
+
/**
|
|
324
|
+
* @example
|
|
325
|
+
* type n0 = CheckType<String<never>, never>;
|
|
326
|
+
* type u0 = CheckType<String<undefined>, 'undefined'>;
|
|
327
|
+
* type a0 = CheckType<String<any>, `${any}`>;
|
|
328
|
+
*
|
|
329
|
+
* type s = CheckType<String<'abcd'>, 'abcd'>;
|
|
330
|
+
* type n = CheckType<String<123>, '123'>;
|
|
331
|
+
* type t = CheckType<String<true>, 'true'>;
|
|
332
|
+
* type f = CheckType<String<false>, 'false'>;
|
|
333
|
+
*/
|
|
334
|
+
type String<T, D extends string = ''> = T extends TS.String.Possible ? `${T}` : D;
|
|
335
|
+
}
|
|
@@ -4,6 +4,12 @@ declare namespace AVStantso {
|
|
|
4
4
|
* @summary Available types for value
|
|
5
5
|
*/
|
|
6
6
|
type Type = Literal.Map[Literal];
|
|
7
|
+
namespace Type {
|
|
8
|
+
/**
|
|
9
|
+
* @summary Union for available builtin types for value
|
|
10
|
+
*/
|
|
11
|
+
type Builtin = Literal.Map[Literal.Builtin];
|
|
12
|
+
}
|
|
7
13
|
}
|
|
8
14
|
namespace Code {
|
|
9
15
|
namespace TS {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/_global/array/_register.ts","../src/_global/ascii.ts","../src/_global/literal.ts","../src/_global/structure/_register.ts","../src/_global/type/_register.ts","../src/_std-ext/object.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n export namespace TS {\n //#region Extends\n /**\n * @summary Check extends T1 to T2. Supports `undefined === undefined`.\n * @template T1 Tested type 1\n * @template T2 Tested type 2\n * @template IfTrue Result, if `T1` extends `T2`\n * @template IfFalse Result, if NOT `T1` extends `T2`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Extends)\n */\n export type Extends<T1, T2, IfTrue = true, IfFalse = false> =\n T1 extends undefined\n ? T2 extends undefined\n ? IfTrue\n : IfFalse\n : T1 extends T2\n ? IfTrue\n : IfFalse;\n\n namespace Extends{\n //#region @TS.Extends — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n0 = CheckType<Extends<never, never>, never>;\n type n1 = CheckType<Extends<undefined, never>, never>;\n type n2 = CheckType<Extends<never, undefined>, never>;\n\n type u0 = CheckType<Extends<unknown, undefined>, false>;\n type u1 = CheckType<Extends<undefined, unknown>, false>;\n type u2 = CheckType<Extends<1, undefined>, false>;\n type u3 = CheckType<Extends<undefined, 2>, false>;\n\n type e0 = CheckType<Extends<undefined, undefined>, true>;\n type e1 = CheckType<Extends<0, 0>, true>;\n type e2 = CheckType<Extends<0, number>, true>;\n type e3 = CheckType<Extends<'a', 'a'>, true>;\n type e4 = CheckType<Extends<'a', string>, true>;\n\n type ne1 = CheckType<Extends<number, 0>, false>;\n type ne2 = CheckType<Extends<string, 'a'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n //#endregion\n\n /**\n * @summary TypeScript helpers for arrays\n */\n export namespace Array {}\n\n /**\n * @summary TypeScript helpers for string\n */\n export namespace String {}\n }\n\n export namespace Code {\n /**\n * @summary TypeScript helpers utility\n */\n export namespace TS {\n /**\n * @summary [O]ne or readonly [L]ist of `T` utility\n */\n export interface OL {\n /**\n * @summary Check `candidate` includes into array or equals value.\\\n * `true` if both `undefined` or `null`\n */\n in<T, O extends T | readonly T[]>(oneOrList: O, candidate: unknown): candidate is T;\n }\n }\n\n export interface TS {\n /**\n * @summary Checks candidate has object key type\n */\n isKey<K extends AVStantso.TS.Key>(candidate: unknown): candidate is K;\n\n /**\n * @summary Flat `structure` into `depth`.\\\n * ⚠ Creates wraps for functions with extended props, `this` context will loss\n * @param structure Structure to flat\n * @param depth Depth of flat. Default `1`\n */\n flat<T extends object, Depth extends number = 1>(\n structure: T,\n depth?: Depth\n ): AVStantso.TS.Flat<T, Depth>;\n\n /**\n * @summary [O]ne or readonly [L]ist of `T` utility\n */\n OL: TS.OL;\n }\n }\n\n export interface Code {\n /**\n * @summary TypeScript helpers utility\n */\n TS: Code.TS;\n }\n\n export const TS: Code.TS = avstantso._reg.TS(({ Func }) => {\n function isLvlOfFlat(structure: unknown) {\n if ('object' === typeof structure)\n return 0;\n\n if ('function' === typeof structure && Func.isExt(structure))\n return 1;\n\n return -1;\n }\n\n function flat(structure: unknown, depth = 1) {\n if (depth <= 0 || isLvlOfFlat(structure) < 0)\n return structure;\n\n return Object.fromEntries(\n Object.entries(structure).reduce((r, [sk, sv]) => {\n const l = isLvlOfFlat(sv);\n if (l < 0) return r.push([sk, sv]) && r;\n\n const c = flat(sv, depth - 1);\n r.push(...Object.entries(c));\n\n if (l) r.push([sk, (...params: TS.Arr) => sv(...params)]);\n\n return r;\n }, [])\n );\n }\n\n function inOneOrList(oneOrList: unknown, candidate: unknown): boolean {\n return Array.isArray(oneOrList) ? oneOrList.includes(candidate) : oneOrList === candidate;\n }\n\n const OL = { in: inOneOrList };\n\n // `isKey` will be registred in `Literal`\n return { isKey: null, flat, OL } as unknown as Code.TS;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace TS {\n /**\n * @summary Array utils\n */\n export interface Array {\n /**\n * @summary Create `Array.ToKey2Key` record\n * @template A Array type\n * @param arr Array\n * @returns `Array.ToKey2Key` record\n * @example\n * const arr = ['x', 'y', 'z'] as const;\n * const rec = TS.Array.ToKey2Key(arr);\n * expect(rec).toStrictEqual({ x: 'x', y: 'y', z: 'z' });\n */\n ToKey2Key<A extends AVStantso.TS.ArrR>(arr: A): AVStantso.TS.Array.ToKey2Key<A>;\n }\n }\n\n export interface TS {\n /**\n * @summary Array utils\n */\n Array: TS.Array;\n }\n }\n\n avstantso._reg.TS.Array(() => {\n function ToKey2Key(arr: readonly unknown[]) {\n return Object.fromEntries(arr.map((k) => [k, k]));\n }\n\n return { ToKey2Key } as Code.TS.Array;\n });\n}\n","namespace AVStantso {\n type Unused<N extends number> = `Unused${N}`;\n function Unused<N extends number>(n: N): Unused<N> {\n return `Unused${n}`;\n }\n\n const ASCII_Control_Characters = [\n '␀',\n '␁',\n '␂',\n '␃',\n '␄',\n '␅',\n '␆',\n '␇',\n '␈',\n '␉',\n '␊',\n '␋',\n '␌',\n '␍',\n '␎',\n '␏',\n '␐',\n '␑',\n '␒',\n '␓',\n '␔',\n '␕',\n '␖',\n '␗',\n '␘',\n '␙',\n '␚',\n '␛',\n '␜',\n '␝',\n '␞',\n '␟'\n ] as const;\n\n const ASCII_Printable_Characters_Digits = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9'\n ] as const;\n\n const ASCII_Printable_Characters_Letters_Upper = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z'\n ] as const;\n\n const ASCII_Printable_Characters_Letters_Lower = [\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z'\n ] as const;\n\n const ASCII_Printable_Characters = [\n ' ',\n '!',\n '\"',\n '#',\n '$',\n '%',\n '&',\n \"'\",\n '(',\n ')',\n '*',\n '+',\n ',',\n '-',\n '.',\n '/',\n ...ASCII_Printable_Characters_Digits,\n ':',\n ';',\n '<',\n '=',\n '>',\n '?',\n '@',\n ...ASCII_Printable_Characters_Letters_Upper,\n '[',\n '\\\\',\n ']',\n '^',\n '_',\n '`',\n ...ASCII_Printable_Characters_Letters_Lower,\n '{',\n '|',\n '}',\n '~',\n '␡'\n ] as const;\n\n const ASCII_Extended_Codes = [\n '€',\n Unused(0),\n '‚',\n 'ƒ',\n '„',\n '…',\n '†',\n '‡',\n 'ˆ',\n '‰',\n 'Š',\n '‹',\n 'Œ',\n Unused(1),\n 'Ž',\n Unused(2),\n Unused(3),\n '‘',\n '’',\n '“',\n '”',\n '•',\n '–',\n '—',\n '˜',\n '™',\n 'š',\n '›',\n 'œ',\n Unused(4),\n 'ž',\n 'Ÿ',\n 'NBSP',\n '¡',\n '¢',\n '£',\n '¤',\n '¥',\n '¦',\n '§',\n '¨',\n '©',\n 'ª',\n '«',\n '¬',\n 'SHY',\n '®',\n '¯',\n '°',\n '±',\n '²',\n '³',\n '´',\n 'µ',\n '¶',\n '·',\n '¸',\n '¹',\n 'º',\n '»',\n '¼',\n '½',\n '¾',\n '¿',\n 'À',\n 'Á',\n 'Â',\n 'Ã',\n 'Ä',\n 'Å',\n 'Æ',\n 'Ç',\n 'È',\n 'É',\n 'Ê',\n 'Ë',\n 'Ì',\n 'Í',\n 'Î',\n 'Ï',\n 'Ð',\n 'Ñ',\n 'Ò',\n 'Ó',\n 'Ô',\n 'Õ',\n 'Ö',\n '×',\n 'Ø',\n 'Ù',\n 'Ú',\n 'Û',\n 'Ü',\n 'Ý',\n 'Þ',\n 'ß',\n 'à',\n 'á',\n 'â',\n 'ã',\n 'ä',\n 'å',\n 'æ',\n 'ç',\n 'è',\n 'é',\n 'ê',\n 'ë',\n 'ì',\n 'í',\n 'î',\n 'ï',\n 'ð',\n 'ñ',\n 'ò',\n 'ó',\n 'ô',\n 'õ',\n 'ö',\n '÷',\n 'ø',\n 'ù',\n 'ú',\n 'û',\n 'ü',\n 'ý',\n 'þ',\n 'ÿ'\n ] as const;\n\n export namespace TS {\n /**\n * @summary English letters\n */\n export namespace Letters {\n export type Upper = typeof ASCII_Printable_Characters_Letters_Upper;\n export type Lower = typeof ASCII_Printable_Characters_Letters_Lower;\n }\n\n export type Letters<IsUpper extends boolean = true> = IsUpper extends true\n ? Letters.Upper\n : Letters.Lower;\n\n /**\n * @summary `ASCII` characters\n * @see https://www.ascii-code.com/\n */\n export type ASCII = readonly [\n ...ASCII.Control,\n ...ASCII.Printable,\n ...ASCII.Extended\n ];\n\n export namespace ASCII {\n /**\n * @summary ASCII control characters (character code `0-31`)\n */\n export type Control = typeof ASCII_Control_Characters;\n\n /**\n * @summary ASCII printable characters (character code `32-127`)\n */\n export type Printable = typeof ASCII_Printable_Characters;\n\n /**\n * @summary The extended ASCII codes (character code `128-255`)\n */\n export type Extended = typeof ASCII_Extended_Codes;\n\n /**\n * @summary ASCII characters map char-code\n */\n export namespace Map {\n /**\n * @summary ASCII control characters (character code `0-31`)\n */\n export type Control = Array.KeyValueMapFrom<ASCII.Control>;\n\n /**\n * @summary ASCII printable characters (character code `32-127`)\n */\n export type Printable = Array.KeyValueMapFrom<\n ASCII.Printable,\n 32\n >;\n\n /**\n * @summary The extended ASCII codes (character code `128-255`)\n */\n export type Extended = Array.KeyValueMapFrom<\n ASCII.Extended,\n 128\n >;\n }\n\n export type Map = Array.KeyValueMapFrom<ASCII>;\n\n export type _Code<\n S extends string,\n R extends number = Extract<ASCII.Map[Extract<S, keyof ASCII.Map>], number>\n > = R;\n\n /**\n * @summary Gets `ASCII` characters code by `S`. `never` if `S` is not a character.\n */\n export type Code<S extends string> = _Code<S>;\n\n /**\n * @summary ASCII character union\n */\n export type Character = Array.ToKey<ASCII>;\n }\n }\n\n export namespace Code {\n export interface TS {\n /**\n * @summary `ASCII` characters array\n */\n ASCII: AVStantso.TS.ASCII;\n }\n }\n\n avstantso._reg.TS.ASCII(\n Object.freeze([\n ...ASCII_Control_Characters,\n ...ASCII_Printable_Characters,\n ...ASCII_Extended_Codes\n ] as const)\n );\n}\n","namespace AVStantso {\n export namespace TS {\n /**\n * @summary Literal for available types for value\n */\n export type Literal = keyof Literal.Map;\n\n export namespace Literal {\n /**\n * @summary Map for available builtin types for value\n */\n export type Builtins = {\n string: string;\n number: number;\n bigint: bigint;\n boolean: boolean;\n symbol: symbol;\n undefined: undefined;\n object: object;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n function: Function;\n };\n\n /**\n * @summary Map for available types for value\n */\n export interface Map extends AtomicObjects, Builtins {\n }\n\n /**\n * @summary Map for number-like types.\n *\n * ⚠ Key is significant, value ignored\n */\n export interface NumberLike {\n number: 0;\n bigint: 0;\n Date: 0;\n }\n\n /**\n * @summary If `L` is number-like returns `IfTrue` else `IfFalse`\n * @template L Tested literal\n * @template IfTrue Result, if `L` is number-like\n * @template IfFalse Result, if `L` NOT is number-like\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Literal.IsNumberLike)\n */\n export type IsNumberLike<\n L extends Literal,\n IfTrue = true,\n IfFalse = false\n > = L extends undefined\n ? undefined\n : [Extract<L, keyof NumberLike>] extends [never]\n ? IfFalse\n : IfTrue;\n\n namespace IsNumberLike {\n //#region @TS.Literal.IsNumberLike — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n = CheckType<IsNumberLike<never>, never>;\n type u = CheckType<IsNumberLike<undefined>, undefined>;\n\n type t = CheckType<IsNumberLike<'number'>, true>;\n type f = CheckType<IsNumberLike<'object'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n\n /**\n * @summary Map for string-like types.\n *\n * ⚠ Key is significant, value ignored\n */\n export interface StringLike {\n string: 0;\n Buffer: 0;\n }\n\n /**\n * @summary If `L` is string-like returns `IfTrue` else `IfFalse`\n * @template L Tested literal\n * @template IfTrue Result, if `L` is string-like\n * @template IfFalse Result, if `L` NOT is string-like\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Literal.IsStringLike)\n */\n export type IsStringLike<\n L extends Literal,\n IfTrue = true,\n IfFalse = false\n > = L extends undefined\n ? undefined\n : [Extract<L, keyof StringLike>] extends [never]\n ? IfFalse\n : IfTrue;\n\n namespace IsStringLike {\n //#region @TS.Literal.IsStringLike — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n = CheckType<IsStringLike<never>, never>;\n type u = CheckType<IsStringLike<undefined>, undefined>;\n\n type t = CheckType<IsStringLike<'string'>, true>;\n type f = CheckType<IsStringLike<'object'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n\n /**\n * @summary Literals array for available types for value\n */\n export type List = Union.ToTuple<Literal>;\n\n export namespace List {\n /**\n * @summary Literals array for available builtin types for value\n */\n export type Builtins = Union.ToTuple<keyof Literal.Builtins>;\n\n /**\n * @summary Literals array for available builtin object key types for value\n */\n export type CanBeObjKey = ['string', 'number', 'symbol'];\n\n /**\n * @summary Literals array for available builtin structural types for value\n */\n export type Structural = ['object', 'function'];\n }\n\n /**\n * @summary Literals key-to-key record\n */\n export type Key2KeyRec = Array._ToKey2Key<List>;\n }\n }\n\n export namespace Code {\n export namespace TS {\n /**\n * @summary Literals key-to-key record + utils\n */\n export interface Literal extends AVStantso.TS.Literal.Key2KeyRec {\n /**\n * @summary Literals array for available builtin types for value\n */\n Builtins: readonly[...AVStantso.TS.Literal.List.Builtins];\n\n /**\n * @summary Literals array for available builtin object key types for value\n */\n CanBeObjKey: readonly [...AVStantso.TS.Literal.List.CanBeObjKey];\n\n /**\n * @summary Literals array for available builtin structural types for value\n */\n Structural: readonly [...AVStantso.TS.Literal.List.Structural];\n\n /**\n * @summary Literals array for available types for value\n */\n List: AVStantso.TS.Literal.List;\n\n /**\n * @summary Empty value for `Literal`\n * @param type Type literal\n * @returns Resolved literal empty value\n */\n Empty: {\n /**\n * @summary Empty value for `Literal`\n * @param type Type literal\n * @returns Resolved literal empty value\n */\n <L extends AVStantso.TS.Literal>(\n type: L\n ): AVStantso.TS.Resolve<L>;\n } & {\n [ K in AVStantso.TS.Literal ]: AVStantso.TS.Resolve<K>\n };\n\n /**\n * @summary Is `value` a resolved `type` of `L`\n * @param type Type literal\n * @param value Tested value\n */\n IsValue: {\n /**\n * @summary Is `value` a resolved `type` of `L`\n * @param type Type literal\n * @param value Tested value\n */\n <L extends AVStantso.TS.Literal>(\n type: L,\n value: unknown\n ): value is AVStantso.TS.Resolve<L>;\n } & {\n [ K in AVStantso.TS.Literal ]: (value: unknown) => value is AVStantso.TS.Resolve<K>\n };\n\n /**\n * @summary Registrate extended literal\n * @template L Literal type\n * @param literal Literal value\n * @example\n * type XYZ = {x: string; y: number; z: boolean; };\n *\n * namespace AVStantso.TS.Literal {\n * export interface Map {\n * xyz: XYZ;\n * }\n * }\n *\n * avstantso.TS.Literal._Register('xyz');\n *\n * ///////////////\n *\n * type t = CheckType<AVStantso.TS.Resolve<'xyz'>, XYZ>;\n *\n * console.log(avstantso.TS.Literal.List.includes('xyz')); // prints true\n */\n _Register<L extends AVStantso.TS.Literal>(\n literal: L,\n empty?: AVStantso.TS.Resolve<L>\n ): void;\n }\n }\n\n export interface TS {\n /**\n * @summary Literals key-to-key record + utils\n */\n Literal: TS.Literal;\n }\n }\n\n avstantso._reg.TS.Literal(({ AtomicObjects, TS: TSRoot }) => {\n const CanBeObjKey = Object.freeze(['string', 'number', 'symbol'] as const);\n const Structural = Object.freeze(['object', 'function'] as const);\n\n /**\n * @see AVStantso.TS.isKey\n */\n function isKey<K extends AVStantso.TS.Key>(candidate: unknown): candidate is K {\n return undefined !== candidate\n && CanBeObjKey.includes(typeof candidate as typeof CanBeObjKey[number]);\n }\n Object.assign(TSRoot, { isKey });\n\n const meta = {\n string: '',\n number: 0,\n bigint: 0,\n boolean: false,\n symbol: Symbol(0),\n undefined: undefined as undefined,\n object: undefined as undefined,\n function: undefined as undefined\n };\n\n const Builtins = Object.freeze(Object.keys(meta));\n\n function Empty(type: string) {\n if (type in meta) return meta[type as keyof typeof meta];\n\n const d = AtomicObjects.descriptor(type);\n return d?.empty?.();\n }\n\n function IsValue(type: string, value: unknown) {\n const t = typeof value;\n if ('object' !== t) return t === type;\n\n const d = AtomicObjects.descriptor(type);\n return !!d && value instanceof d.Class;\n }\n\n const Literal = {\n Builtins,\n CanBeObjKey,\n Structural,\n get List() {\n const r = Object.keys(meta);\n\n for (const Class of AtomicObjects.classes.keys())\n r.push(Class.name);\n\n return r;\n },\n\n Empty,\n IsValue,\n\n _Register(literal: string, empty?: unknown) {\n if (literal in meta)\n throw Error(`Literal named \"${literal}\" already registered`);\n\n if (AtomicObjects.descriptor(literal))\n throw Error(`Atomic object with class named \"${literal}\" already registered`);\n\n Object.assign(meta, { [literal]: empty });\n\n Object.defineProperty(this, literal, { value: literal, writable: false });\n }\n } as unknown as Code.TS.Literal;\n\n for (const literal of Literal.List) {\n Object.defineProperty(Literal, literal, { value: literal, writable: false });\n\n Object.defineProperty(Empty, literal, { get: Empty.bind(null, literal) });\n\n Object.defineProperty(IsValue, literal, {\n value: IsValue.bind(null, literal),\n writable: false\n });\n }\n\n return Literal;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace TS {\n export namespace Structure {\n /**\n * @summary Not strict Structure.\n */\n export type Wildcard = AVStantso.TS.Structure.Wildcard;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n * @param field Sub key of `object` values for extract value\n */\n export interface KeyByValue {\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n <\n T extends Structure.Wildcard,\n V\n >(\n structure: T,\n value: V,\n ): AVStantso.TS.Structure.Reverse<T> extends infer R\n ? V extends keyof R ? R[V] : unknown\n : unknown;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param field Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n <\n T extends Structure.Wildcard,\n V,\n TProviderFiled extends AVStantso.TS.Key = undefined\n >(\n field: TProviderFiled,\n structure: T,\n value: V,\n ): AVStantso.TS.Structure.Reverse<T, TProviderFiled> extends infer R\n ? V extends keyof R ? R[V] : unknown\n : unknown;\n };\n }\n\n /**\n * @summary TypeScript structure helpers utility\n */\n export interface Structure {\n /**\n * @summary Check `candidate` is `Structure` and cast to `T`.\n * @param candidate Tested value\n * @param noSpecialClasses If setted, returns `false` for `Array`, `Map`, `Set` etc.\n */\n is<T extends Structure.Wildcard>(\n candidate: unknown,\n noSpecialClasses?: boolean\n ): candidate is T;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param field Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n keyByValue: Structure.KeyByValue;\n\n /**\n * @summary Reverse structure `object` `T` to map value-key.\\\n * Non keyable values is ignored\\\n * except `object` if defined `TProviderFiled` and it's have this key\n * @template T Structure object for reverse\n * @template TProviderFiled Sub key of `object` values for extract value\n * @EXAMPLE(@TS.Structure.Reverse)\n */\n reverse<\n T extends object,\n TProviderFiled extends AVStantso.TS.Key = undefined\n >(\n structure: T,\n field?: TProviderFiled\n ): AVStantso.TS.Structure.Reverse<T, TProviderFiled>;\n }\n\n }\n\n export interface TS {\n /**\n * @summary TypeScript structure helpers utility\n */\n Structure: TS.Structure;\n }\n }\n\n avstantso._reg.TS.Structure(({ TS: { isKey, Literal } }) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n function isStructure<\n T extends AVStantso.TS.Structure.Wildcard\n >(\n candidate: unknown,\n noSpecialClasses?: boolean\n ): candidate is T {\n if (!candidate) return false;\n\n const i = Literal.Structural.indexOf(typeof candidate as any);\n switch (i) {\n case -1:\n return false;\n\n case 1:\n return true;\n\n default:\n return !noSpecialClasses || Object.getPrototypeOf(candidate) === Object.prototype;\n }\n }\n\n function resolveValue(value: unknown, field?: string) {\n const useFileld = field && (isStructure<any>(value) && field in value);\n return useFileld ? value[field] : value;\n }\n\n function keyByValue(...params: AVStantso.TS.Arr) {\n const field = params.length > 2 ? params.shift() : undefined;\n const [structure, value] = params as [object, unknown];\n if (!isStructure(structure))\n return null;\n\n const rv = resolveValue(value, field);\n for (const [k, v] of Object.entries(structure))\n if (rv === resolveValue(v, field))\n return k;\n\n return null;\n }\n\n function reverse(structure: object, field?: string): object {\n if (!isStructure(structure))\n return null;\n\n const r: any = {};\n for (const [k, v] of Object.entries(structure)) {\n const vv = resolveValue(v, field);\n if (isKey(vv))\n r[vv] = k;\n }\n\n return r;\n }\n\n return {\n is: isStructure,\n keyByValue,\n reverse\n } as Code.TS.Structure;\n });\n}\n","namespace AVStantso {\n export namespace TS {\n /**\n * @summary Available types for value\n */\n export type Type = Literal.Map[Literal];\n }\n\n export namespace Code {\n export namespace TS {\n export namespace Type {\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n */\n export type KLD = {\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n * @template K Key constraint\n * @template L Literal constraint\n * @template D Default constraint\n * @param key Key value\n * @param type Literal type value\n * @param def Resolved type default value\n */\n <\n K extends AVStantso.TS.Key,\n L extends AVStantso.TS.Literal,\n D extends AVStantso.TS.Resolve<L> = undefined\n >(\n key: K,\n type: L,\n def?: D\n ): AVStantso.TS.Type.KLD<K, L, D>;\n\n /**\n * @summary Parse params like `[K, L]` or `[[K, L]]`\n *\n * `⚠ Without strict control`\n */\n Parse(params: AVStantso.TS.Arr): AVStantso.TS.Type.KLD;\n };\n }\n\n /**\n * @summary `AVStantso.TS.Type` utility\n */\n export interface Type {\n /**\n * @summary Create keyed type definition structure\n * @template K Key constraint\n * @template L Literal constraint\n * @param key Key value\n * @param type Literal type value\n */\n KeyDef<K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type: L\n ): AVStantso.TS.Type.KeyDef.Make<K, L>;\n\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n * @template K Key constraint\n * @template L Literal constraint\n * @template D Default constraint\n * @param key Key value\n * @param type Literal type value\n * @param def Resolved type default value\n */\n KLD: Type.KLD;\n }\n }\n\n export interface TS {\n /**\n * @summary `AVStantso.TS.Type` utility\n */\n Type: TS.Type;\n }\n }\n\n avstantso._reg.TS.Type(() => {\n function KeyDef(key: string, type: string){\n return { K: key, L: type };\n };\n\n const KLD = Object.assign(\n function KLD(key: string, type: string, def?: unknown) {\n return [key, type, def];\n },\n {\n Parse: function KLDParse(params: TS.Arr) {\n return Array.isArray(params[0]) ? params[0] : params;\n }\n }\n );\n\n return { KeyDef, KLD } as Code.TS.Type;\n });\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare interface ObjectConstructor {\n /**\n * Returns typed the names of the enumerable string properties and methods of an object.\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n keysEx<O extends object>(o: O): AVStantso.TS.Structure.ToKeysArray<O>;\n\n /**\n * Returns an array of typed values of the enumerable own properties of an object\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n valuesEx<O extends object>(o: O): AVStantso.TS.Structure.ToValuesArray<O>;\n\n /**\n * Returns an array of typed key/values of the enumerable own properties of an object\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n entriesEx<O extends object>(o: O): AVStantso.TS.Structure.ToEntriesArray<O>;\n}\n\nObject.definePropertiesOnce(Object, {\n keysEx: { value: Object.keys, writable: false },\n valuesEx: { value: Object.values, writable: false },\n entriesEx: { value: Object.entries, writable: false }\n});\n","import TS = AVStantso.TS;\nexport { TS };\n"],"names":["AVStantso"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/_global/array/_register.ts","../src/_global/ascii.ts","../src/_global/literal.ts","../src/_global/structure/_register.ts","../src/_global/type/_register.ts","../src/_std-ext/object.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n export namespace TS {\n //#region Extends\n /**\n * @summary Check extends T1 to T2. Supports `undefined === undefined`.\n * @template T1 Tested type 1\n * @template T2 Tested type 2\n * @template IfTrue Result, if `T1` extends `T2`\n * @template IfFalse Result, if NOT `T1` extends `T2`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Extends)\n */\n export type Extends<T1, T2, IfTrue = true, IfFalse = false> =\n T1 extends undefined\n ? T2 extends undefined\n ? IfTrue\n : IfFalse\n : T1 extends T2\n ? IfTrue\n : IfFalse;\n\n namespace Extends{\n //#region @TS.Extends — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n0 = CheckType<Extends<never, never>, never>;\n type n1 = CheckType<Extends<undefined, never>, never>;\n type n2 = CheckType<Extends<never, undefined>, never>;\n\n type u0 = CheckType<Extends<unknown, undefined>, false>;\n type u1 = CheckType<Extends<undefined, unknown>, false>;\n type u2 = CheckType<Extends<1, undefined>, false>;\n type u3 = CheckType<Extends<undefined, 2>, false>;\n\n type e0 = CheckType<Extends<undefined, undefined>, true>;\n type e1 = CheckType<Extends<0, 0>, true>;\n type e2 = CheckType<Extends<0, number>, true>;\n type e3 = CheckType<Extends<'a', 'a'>, true>;\n type e4 = CheckType<Extends<'a', string>, true>;\n\n type ne1 = CheckType<Extends<number, 0>, false>;\n type ne2 = CheckType<Extends<string, 'a'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n //#endregion\n\n /**\n * @summary TypeScript helpers for arrays\n */\n export namespace Array {}\n\n /**\n * @summary TypeScript helpers for string\n */\n export namespace String {}\n }\n\n export namespace Code {\n /**\n * @summary TypeScript helpers utility\n */\n export namespace TS {\n /**\n * @summary [O]ne or readonly [L]ist of `T` utility\n */\n export interface OL {\n /**\n * @summary Check `candidate` includes into array or equals value.\\\n * `true` if both `undefined` or `null`\n */\n in<T, O extends T | readonly T[]>(oneOrList: O, candidate: unknown): candidate is T;\n }\n }\n\n export interface TS {\n /**\n * @summary Checks candidate has object key type\n */\n isKey<K extends AVStantso.TS.Key>(candidate: unknown): candidate is K;\n\n /**\n * @summary Flat `structure` into `depth`.\\\n * ⚠ Creates wraps for functions with extended props, `this` context will loss\n * @param structure Structure to flat\n * @param depth Depth of flat. Default `1`\n */\n flat<T extends object, Depth extends number = 1>(\n structure: T,\n depth?: Depth\n ): AVStantso.TS.Flat<T, Depth>;\n\n /**\n * @summary [O]ne or readonly [L]ist of `T` utility\n */\n OL: TS.OL;\n }\n }\n\n export interface Code {\n /**\n * @summary TypeScript helpers utility\n */\n TS: Code.TS;\n }\n\n export const TS: Code.TS = avstantso._reg.TS(({ Func }) => {\n function isLvlOfFlat(structure: unknown) {\n if ('object' === typeof structure)\n return 0;\n\n if ('function' === typeof structure && Func.isExt(structure))\n return 1;\n\n return -1;\n }\n\n function flat(structure: unknown, depth = 1) {\n if (depth <= 0 || isLvlOfFlat(structure) < 0)\n return structure;\n\n return Object.fromEntries(\n Object.entries(structure).reduce((r, [sk, sv]) => {\n const l = isLvlOfFlat(sv);\n if (l < 0) return r.push([sk, sv]) && r;\n\n const c = flat(sv, depth - 1);\n r.push(...Object.entries(c));\n\n if (l) r.push([sk, (...params: TS.Arr) => sv(...params)]);\n\n return r;\n }, [])\n );\n }\n\n function inOneOrList(oneOrList: unknown, candidate: unknown): boolean {\n return Array.isArray(oneOrList) ? oneOrList.includes(candidate) : oneOrList === candidate;\n }\n\n const OL = { in: inOneOrList };\n\n // `isKey` will be registred in `Literal`\n return { isKey: null, flat, OL } as unknown as Code.TS;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace TS {\n /**\n * @summary Array utils\n */\n export interface Array {\n /**\n * @summary Create `Array.ToKey2Key` record\n * @template A Array type\n * @param arr Array\n * @returns `Array.ToKey2Key` record\n * @example\n * const arr = ['x', 'y', 'z'] as const;\n * const rec = TS.Array.ToKey2Key(arr);\n * expect(rec).toStrictEqual({ x: 'x', y: 'y', z: 'z' });\n */\n ToKey2Key<A extends AVStantso.TS.ArrR>(arr: A): AVStantso.TS.Array.ToKey2Key<A>;\n }\n }\n\n export interface TS {\n /**\n * @summary Array utils\n */\n Array: TS.Array;\n }\n }\n\n avstantso._reg.TS.Array(() => {\n function ToKey2Key(arr: readonly unknown[]) {\n return Object.fromEntries(arr.map((k) => [k, k]));\n }\n\n return { ToKey2Key } as Code.TS.Array;\n });\n}\n","namespace AVStantso {\n type Unused<N extends number> = `Unused${N}`;\n function Unused<N extends number>(n: N): Unused<N> {\n return `Unused${n}`;\n }\n\n const ASCII_Control_Characters = [\n '␀',\n '␁',\n '␂',\n '␃',\n '␄',\n '␅',\n '␆',\n '␇',\n '␈',\n '␉',\n '␊',\n '␋',\n '␌',\n '␍',\n '␎',\n '␏',\n '␐',\n '␑',\n '␒',\n '␓',\n '␔',\n '␕',\n '␖',\n '␗',\n '␘',\n '␙',\n '␚',\n '␛',\n '␜',\n '␝',\n '␞',\n '␟'\n ] as const;\n\n const ASCII_Printable_Characters_Digits = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9'\n ] as const;\n\n const ASCII_Printable_Characters_Letters_Upper = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z'\n ] as const;\n\n const ASCII_Printable_Characters_Letters_Lower = [\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z'\n ] as const;\n\n const ASCII_Printable_Characters = [\n ' ',\n '!',\n '\"',\n '#',\n '$',\n '%',\n '&',\n \"'\",\n '(',\n ')',\n '*',\n '+',\n ',',\n '-',\n '.',\n '/',\n ...ASCII_Printable_Characters_Digits,\n ':',\n ';',\n '<',\n '=',\n '>',\n '?',\n '@',\n ...ASCII_Printable_Characters_Letters_Upper,\n '[',\n '\\\\',\n ']',\n '^',\n '_',\n '`',\n ...ASCII_Printable_Characters_Letters_Lower,\n '{',\n '|',\n '}',\n '~',\n '␡'\n ] as const;\n\n const ASCII_Extended_Codes = [\n '€',\n Unused(0),\n '‚',\n 'ƒ',\n '„',\n '…',\n '†',\n '‡',\n 'ˆ',\n '‰',\n 'Š',\n '‹',\n 'Œ',\n Unused(1),\n 'Ž',\n Unused(2),\n Unused(3),\n '‘',\n '’',\n '“',\n '”',\n '•',\n '–',\n '—',\n '˜',\n '™',\n 'š',\n '›',\n 'œ',\n Unused(4),\n 'ž',\n 'Ÿ',\n 'NBSP',\n '¡',\n '¢',\n '£',\n '¤',\n '¥',\n '¦',\n '§',\n '¨',\n '©',\n 'ª',\n '«',\n '¬',\n 'SHY',\n '®',\n '¯',\n '°',\n '±',\n '²',\n '³',\n '´',\n 'µ',\n '¶',\n '·',\n '¸',\n '¹',\n 'º',\n '»',\n '¼',\n '½',\n '¾',\n '¿',\n 'À',\n 'Á',\n 'Â',\n 'Ã',\n 'Ä',\n 'Å',\n 'Æ',\n 'Ç',\n 'È',\n 'É',\n 'Ê',\n 'Ë',\n 'Ì',\n 'Í',\n 'Î',\n 'Ï',\n 'Ð',\n 'Ñ',\n 'Ò',\n 'Ó',\n 'Ô',\n 'Õ',\n 'Ö',\n '×',\n 'Ø',\n 'Ù',\n 'Ú',\n 'Û',\n 'Ü',\n 'Ý',\n 'Þ',\n 'ß',\n 'à',\n 'á',\n 'â',\n 'ã',\n 'ä',\n 'å',\n 'æ',\n 'ç',\n 'è',\n 'é',\n 'ê',\n 'ë',\n 'ì',\n 'í',\n 'î',\n 'ï',\n 'ð',\n 'ñ',\n 'ò',\n 'ó',\n 'ô',\n 'õ',\n 'ö',\n '÷',\n 'ø',\n 'ù',\n 'ú',\n 'û',\n 'ü',\n 'ý',\n 'þ',\n 'ÿ'\n ] as const;\n\n export namespace TS {\n /**\n * @summary English letters\n */\n export namespace Letters {\n export type Upper = typeof ASCII_Printable_Characters_Letters_Upper;\n export type Lower = typeof ASCII_Printable_Characters_Letters_Lower;\n }\n\n export type Letters<IsUpper extends boolean = true> = IsUpper extends true\n ? Letters.Upper\n : Letters.Lower;\n\n /**\n * @summary English letter\n */\n export namespace Letter {\n export type Upper = Letters.Upper[number];\n export type Lower = Letters.Lower[number];\n }\n\n export type Letter<IsUpper extends boolean = true> = IsUpper extends true\n ? Letter.Upper\n : Letter.Lower;\n\n /**\n * @summary `ASCII` characters\n * @see https://www.ascii-code.com/\n */\n export type ASCII = readonly [\n ...ASCII.Control,\n ...ASCII.Printable,\n ...ASCII.Extended\n ];\n\n export namespace ASCII {\n /**\n * @summary ASCII control characters (character code `0-31`)\n */\n export type Control = typeof ASCII_Control_Characters;\n\n /**\n * @summary ASCII printable characters (character code `32-127`)\n */\n export type Printable = typeof ASCII_Printable_Characters;\n\n /**\n * @summary The extended ASCII codes (character code `128-255`)\n */\n export type Extended = typeof ASCII_Extended_Codes;\n\n /**\n * @summary ASCII characters map char-code\n */\n export namespace Map {\n /**\n * @summary ASCII control characters (character code `0-31`)\n */\n export type Control = Array.KeyValueMapFrom<ASCII.Control>;\n\n /**\n * @summary ASCII printable characters (character code `32-127`)\n */\n export type Printable = Array.KeyValueMapFrom<\n ASCII.Printable,\n 32\n >;\n\n /**\n * @summary The extended ASCII codes (character code `128-255`)\n */\n export type Extended = Array.KeyValueMapFrom<\n ASCII.Extended,\n 128\n >;\n }\n\n export type Map = Array.KeyValueMapFrom<ASCII>;\n\n export type _Code<\n S extends string,\n R extends number = Extract<ASCII.Map[Extract<S, keyof ASCII.Map>], number>\n > = R;\n\n /**\n * @summary Gets `ASCII` characters code by `S`. `never` if `S` is not a character.\n */\n export type Code<S extends string> = _Code<S>;\n\n /**\n * @summary ASCII character union\n */\n export type Character = Array.ToKey<ASCII>;\n }\n }\n\n export namespace Code {\n export interface TS {\n /**\n * @summary `ASCII` characters array\n */\n ASCII: AVStantso.TS.ASCII;\n }\n }\n\n avstantso._reg.TS.ASCII(\n Object.freeze([\n ...ASCII_Control_Characters,\n ...ASCII_Printable_Characters,\n ...ASCII_Extended_Codes\n ] as const)\n );\n}\n","namespace AVStantso {\n export namespace TS {\n /**\n * @summary Literal for available types for value\n */\n export type Literal = keyof Literal.Map & {};\n\n export namespace Literal {\n /**\n * @summary Map for available builtin types for value\n */\n export type Builtins = {\n string: string;\n number: number;\n bigint: bigint;\n boolean: boolean;\n symbol: symbol;\n undefined: undefined;\n object: object;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n function: Function;\n };\n\n /**\n * @summary Union for available builtin types for value\n */\n export type Builtin = keyof Builtins & {};\n\n /**\n * @summary Map for available types for value\n */\n export interface Map extends AtomicObjects, Builtins {\n }\n\n /**\n * @summary Map for number-like types.\n *\n * ⚠ Key is significant, value ignored\n */\n export interface NumberLike {\n number: 0;\n bigint: 0;\n Date: 0;\n }\n\n /**\n * @summary If `L` is number-like returns `IfTrue` else `IfFalse`\n * @template L Tested literal\n * @template IfTrue Result, if `L` is number-like\n * @template IfFalse Result, if `L` NOT is number-like\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Literal.IsNumberLike)\n */\n export type IsNumberLike<\n L extends Literal,\n IfTrue = true,\n IfFalse = false\n > = L extends undefined\n ? undefined\n : [Extract<L, keyof NumberLike>] extends [never]\n ? IfFalse\n : IfTrue;\n\n namespace IsNumberLike {\n //#region @TS.Literal.IsNumberLike — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n = CheckType<IsNumberLike<never>, never>;\n type u = CheckType<IsNumberLike<undefined>, undefined>;\n\n type t = CheckType<IsNumberLike<'number'>, true>;\n type f = CheckType<IsNumberLike<'object'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n\n /**\n * @summary Map for string-like types.\n *\n * ⚠ Key is significant, value ignored\n */\n export interface StringLike {\n string: 0;\n Buffer: 0;\n }\n\n /**\n * @summary If `L` is string-like returns `IfTrue` else `IfFalse`\n * @template L Tested literal\n * @template IfTrue Result, if `L` is string-like\n * @template IfFalse Result, if `L` NOT is string-like\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@TS.Literal.IsStringLike)\n */\n export type IsStringLike<\n L extends Literal,\n IfTrue = true,\n IfFalse = false\n > = L extends undefined\n ? undefined\n : [Extract<L, keyof StringLike>] extends [never]\n ? IfFalse\n : IfTrue;\n\n namespace IsStringLike {\n //#region @TS.Literal.IsStringLike — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n type n = CheckType<IsStringLike<never>, never>;\n type u = CheckType<IsStringLike<undefined>, undefined>;\n\n type t = CheckType<IsStringLike<'string'>, true>;\n type f = CheckType<IsStringLike<'object'>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n\n /**\n * @summary Literals array for available types for value\n */\n export type List = Union.ToTuple<Literal>;\n\n export namespace List {\n /**\n * @summary Literals array for available builtin types for value\n */\n export type Builtins = Union.ToTuple<keyof Literal.Builtins>;\n\n /**\n * @summary Literals array for available builtin object key types for value\n */\n export type CanBeObjKey = ['string', 'number', 'symbol'];\n\n /**\n * @summary Literals array for available builtin structural types for value\n */\n export type Structural = ['object', 'function'];\n }\n\n /**\n * @summary Literals key-to-key record\n */\n export type Key2KeyRec = Array._ToKey2Key<List>;\n }\n }\n\n export namespace Code {\n export namespace TS {\n /**\n * @summary Literals key-to-key record + utils\n */\n export interface Literal extends AVStantso.TS.Literal.Key2KeyRec {\n /**\n * @summary Literals array for available builtin types for value\n */\n Builtins: readonly[...AVStantso.TS.Literal.List.Builtins];\n\n /**\n * @summary Literals array for available builtin object key types for value\n */\n CanBeObjKey: readonly [...AVStantso.TS.Literal.List.CanBeObjKey];\n\n /**\n * @summary Literals array for available builtin structural types for value\n */\n Structural: readonly [...AVStantso.TS.Literal.List.Structural];\n\n /**\n * @summary Literals array for available types for value\n */\n List: AVStantso.TS.Literal.List;\n\n /**\n * @summary Empty value for `Literal`\n * @param type Type literal\n * @returns Resolved literal empty value\n */\n Empty: {\n /**\n * @summary Empty value for `Literal`\n * @param type Type literal\n * @returns Resolved literal empty value\n */\n <L extends AVStantso.TS.Literal>(\n type: L\n ): AVStantso.TS.Resolve<L>;\n } & {\n [ K in AVStantso.TS.Literal ]: AVStantso.TS.Resolve<K>\n };\n\n /**\n * @summary Is `value` a resolved `type` of `L`\n * @param type Type literal\n * @param value Tested value\n */\n IsValue: {\n /**\n * @summary Is `value` a resolved `type` of `L`\n * @param type Type literal\n * @param value Tested value\n */\n <L extends AVStantso.TS.Literal>(\n type: L,\n value: unknown\n ): value is AVStantso.TS.Resolve<L>;\n } & {\n [ K in AVStantso.TS.Literal ]: (value: unknown) => value is AVStantso.TS.Resolve<K>\n };\n\n /**\n * @summary Registrate extended literal\n * @template L Literal type\n * @param literal Literal value\n * @example\n * type XYZ = {x: string; y: number; z: boolean; };\n *\n * namespace AVStantso.TS.Literal {\n * export interface Map {\n * xyz: XYZ;\n * }\n * }\n *\n * avstantso.TS.Literal._Register('xyz');\n *\n * ///////////////\n *\n * type t = CheckType<AVStantso.TS.Resolve<'xyz'>, XYZ>;\n *\n * console.log(avstantso.TS.Literal.List.includes('xyz')); // prints true\n */\n _Register<L extends AVStantso.TS.Literal>(\n literal: L,\n empty?: AVStantso.TS.Resolve<L>\n ): void;\n }\n }\n\n export interface TS {\n /**\n * @summary Literals key-to-key record + utils\n */\n Literal: TS.Literal;\n }\n }\n\n avstantso._reg.TS.Literal(({ AtomicObjects, TS: TSRoot }) => {\n const CanBeObjKey = Object.freeze(['string', 'number', 'symbol'] as const);\n const Structural = Object.freeze(['object', 'function'] as const);\n\n /**\n * @see AVStantso.TS.isKey\n */\n function isKey<K extends AVStantso.TS.Key>(candidate: unknown): candidate is K {\n return undefined !== candidate\n && CanBeObjKey.includes(typeof candidate as typeof CanBeObjKey[number]);\n }\n Object.assign(TSRoot, { isKey });\n\n const meta = {\n string: '',\n number: 0,\n bigint: 0,\n boolean: false,\n symbol: Symbol(0),\n undefined: undefined as undefined,\n object: undefined as undefined,\n function: undefined as undefined\n };\n\n const Builtins = Object.freeze(Object.keys(meta));\n\n function Empty(type: string) {\n if (type in meta) return meta[type as keyof typeof meta];\n\n const d = AtomicObjects.descriptor(type);\n return d?.empty?.();\n }\n\n function IsValue(type: string, value: unknown) {\n const t = typeof value;\n if ('object' !== t) return t === type;\n\n const d = AtomicObjects.descriptor(type);\n return !!d && value instanceof d.Class;\n }\n\n const Literal = {\n Builtins,\n CanBeObjKey,\n Structural,\n get List() {\n const r = Object.keys(meta);\n\n for (const Class of AtomicObjects.classes.keys())\n r.push(Class.name);\n\n return r;\n },\n\n Empty,\n IsValue,\n\n _Register(literal: string, empty?: unknown) {\n if (literal in meta)\n throw Error(`Literal named \"${literal}\" already registered`);\n\n if (AtomicObjects.descriptor(literal))\n throw Error(`Atomic object with class named \"${literal}\" already registered`);\n\n Object.assign(meta, { [literal]: empty });\n\n Object.defineProperty(this, literal, { value: literal, writable: false });\n }\n } as unknown as Code.TS.Literal;\n\n for (const literal of Literal.List) {\n Object.defineProperty(Literal, literal, { value: literal, writable: false });\n\n Object.defineProperty(Empty, literal, { get: Empty.bind(null, literal) });\n\n Object.defineProperty(IsValue, literal, {\n value: IsValue.bind(null, literal),\n writable: false\n });\n }\n\n return Literal;\n });\n}\n","namespace AVStantso {\n export namespace Code {\n export namespace TS {\n export namespace Structure {\n /**\n * @summary Not strict Structure.\n */\n export type Wildcard = AVStantso.TS.Structure.Wildcard;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n * @param field Sub key of `object` values for extract value\n */\n export interface KeyByValue {\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n <\n T extends Structure.Wildcard,\n V\n >(\n structure: T,\n value: V,\n ): AVStantso.TS.Structure.Reverse<T> extends infer R\n ? V extends keyof R ? R[V] : unknown\n : unknown;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param field Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n <\n T extends Structure.Wildcard,\n V,\n TProviderFiled extends AVStantso.TS.Key = undefined\n >(\n field: TProviderFiled,\n structure: T,\n value: V,\n ): AVStantso.TS.Structure.Reverse<T, TProviderFiled> extends infer R\n ? V extends keyof R ? R[V] : unknown\n : unknown;\n };\n }\n\n /**\n * @summary TypeScript structure helpers utility\n */\n export interface Structure {\n /**\n * @summary Check `candidate` is `Structure` and cast to `T`.\n * @param candidate Tested value\n * @param noSpecialClasses If setted, returns `false` for `Array`, `Map`, `Set` etc.\n */\n is<T extends Structure.Wildcard>(\n candidate: unknown,\n noSpecialClasses?: boolean\n ): candidate is T;\n\n /**\n * @summary Find structure `object` `T` key by `value` `V`\n * @template T Structure\n * @template V Structure value or provider subvalue\n * @template TProviderFiled Sub key of `object` values for extract value\n * @param field Sub key of `object` values for extract value\n * @param structure Structure for search\n * @param value Structure value or provider subvalue\n */\n keyByValue: Structure.KeyByValue;\n\n /**\n * @summary Reverse structure `object` `T` to map value-key.\\\n * Non keyable values is ignored\\\n * except `object` if defined `TProviderFiled` and it's have this key\n * @template T Structure object for reverse\n * @template TProviderFiled Sub key of `object` values for extract value\n * @EXAMPLE(@TS.Structure.Reverse)\n */\n reverse<\n T extends object,\n TProviderFiled extends AVStantso.TS.Key = undefined\n >(\n structure: T,\n field?: TProviderFiled\n ): AVStantso.TS.Structure.Reverse<T, TProviderFiled>;\n }\n\n }\n\n export interface TS {\n /**\n * @summary TypeScript structure helpers utility\n */\n Structure: TS.Structure;\n }\n }\n\n avstantso._reg.TS.Structure(({ TS: { isKey, Literal } }) => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n function isStructure<\n T extends AVStantso.TS.Structure.Wildcard\n >(\n candidate: unknown,\n noSpecialClasses?: boolean\n ): candidate is T {\n if (!candidate) return false;\n\n const i = Literal.Structural.indexOf(typeof candidate as any);\n switch (i) {\n case -1:\n return false;\n\n case 1:\n return true;\n\n default:\n return !noSpecialClasses || Object.getPrototypeOf(candidate) === Object.prototype;\n }\n }\n\n function resolveValue(value: unknown, field?: string) {\n const useFileld = field && (isStructure<any>(value) && field in value);\n return useFileld ? value[field] : value;\n }\n\n function keyByValue(...params: AVStantso.TS.Arr) {\n const field = params.length > 2 ? params.shift() : undefined;\n const [structure, value] = params as [object, unknown];\n if (!isStructure(structure))\n return null;\n\n const rv = resolveValue(value, field);\n for (const [k, v] of Object.entries(structure))\n if (rv === resolveValue(v, field))\n return k;\n\n return null;\n }\n\n function reverse(structure: object, field?: string): object {\n if (!isStructure(structure))\n return null;\n\n const r: any = {};\n for (const [k, v] of Object.entries(structure)) {\n const vv = resolveValue(v, field);\n if (isKey(vv))\n r[vv] = k;\n }\n\n return r;\n }\n\n return {\n is: isStructure,\n keyByValue,\n reverse\n } as Code.TS.Structure;\n });\n}\n","namespace AVStantso {\n export namespace TS {\n /**\n * @summary Available types for value\n */\n export type Type = Literal.Map[Literal];\n\n export namespace Type {\n /**\n * @summary Union for available builtin types for value\n */\n export type Builtin = Literal.Map[Literal.Builtin];\n }\n }\n\n export namespace Code {\n export namespace TS {\n export namespace Type {\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n */\n export type KLD = {\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n * @template K Key constraint\n * @template L Literal constraint\n * @template D Default constraint\n * @param key Key value\n * @param type Literal type value\n * @param def Resolved type default value\n */\n <\n K extends AVStantso.TS.Key,\n L extends AVStantso.TS.Literal,\n D extends AVStantso.TS.Resolve<L> = undefined\n >(\n key: K,\n type: L,\n def?: D\n ): AVStantso.TS.Type.KLD<K, L, D>;\n\n /**\n * @summary Parse params like `[K, L]` or `[[K, L]]`\n *\n * `⚠ Without strict control`\n */\n Parse(params: AVStantso.TS.Arr): AVStantso.TS.Type.KLD;\n };\n }\n\n /**\n * @summary `AVStantso.TS.Type` utility\n */\n export interface Type {\n /**\n * @summary Create keyed type definition structure\n * @template K Key constraint\n * @template L Literal constraint\n * @param key Key value\n * @param type Literal type value\n */\n KeyDef<K extends AVStantso.TS.Key, L extends AVStantso.TS.Literal>(\n key: K,\n type: L\n ): AVStantso.TS.Type.KeyDef.Make<K, L>;\n\n /**\n * @summary Create type definition array `[<key>, <type literal>, <default value>?]`\n * @template K Key constraint\n * @template L Literal constraint\n * @template D Default constraint\n * @param key Key value\n * @param type Literal type value\n * @param def Resolved type default value\n */\n KLD: Type.KLD;\n }\n }\n\n export interface TS {\n /**\n * @summary `AVStantso.TS.Type` utility\n */\n Type: TS.Type;\n }\n }\n\n avstantso._reg.TS.Type(() => {\n function KeyDef(key: string, type: string){\n return { K: key, L: type };\n };\n\n const KLD = Object.assign(\n function KLD(key: string, type: string, def?: unknown) {\n return [key, type, def];\n },\n {\n Parse: function KLDParse(params: TS.Arr) {\n return Array.isArray(params[0]) ? params[0] : params;\n }\n }\n );\n\n return { KeyDef, KLD } as Code.TS.Type;\n });\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare interface ObjectConstructor {\n /**\n * Returns typed the names of the enumerable string properties and methods of an object.\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n keysEx<O extends object>(o: O): AVStantso.TS.Structure.ToKeysArray<O>;\n\n /**\n * Returns an array of typed values of the enumerable own properties of an object\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n valuesEx<O extends object>(o: O): AVStantso.TS.Structure.ToValuesArray<O>;\n\n /**\n * Returns an array of typed key/values of the enumerable own properties of an object\n * @param o — Object that contains the properties and methods.\n * This can be an object that you created\n * or an existing Document Object Model (DOM) object.\n */\n entriesEx<O extends object>(o: O): AVStantso.TS.Structure.ToEntriesArray<O>;\n}\n\nObject.definePropertiesOnce(Object, {\n keysEx: { value: Object.keys, writable: false },\n valuesEx: { value: Object.values, writable: false },\n entriesEx: { value: Object.entries, writable: false }\n});\n","import TS = AVStantso.TS;\nexport { TS };\n"],"names":["AVStantso"],"mappings":"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"}
|