@kakasoo/deep-strict-types 1.0.25 → 1.0.27
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/README.md +61 -45
- package/bin/src/index.d.ts +1 -1
- package/bin/src/index.d.ts.map +1 -1
- package/bin/src/index.js +1 -1
- package/bin/src/index.js.map +1 -1
- package/bin/src/types/DeepStrictObjectKeys.d.ts +10 -8
- package/bin/src/types/DeepStrictObjectKeys.d.ts.map +1 -1
- package/bin/src/types/{GetStrictObjectLastKeys.d.ts → DeepStrictObjectLastKeys.d.ts} +11 -9
- package/bin/src/types/DeepStrictObjectLastKeys.d.ts.map +1 -0
- package/bin/src/types/{GetStrictObjectLastKeys.js → DeepStrictObjectLastKeys.js} +1 -1
- package/bin/src/types/DeepStrictObjectLastKeys.js.map +1 -0
- package/bin/src/types/DeepStrictOmit.d.ts +6 -6
- package/bin/src/types/DeepStrictOmit.d.ts.map +1 -1
- package/bin/src/types/DeepStrictPick.d.ts +3 -1
- package/bin/src/types/DeepStrictPick.d.ts.map +1 -1
- package/bin/src/types/DeepStrictUnbrand.d.ts +5 -3
- package/bin/src/types/DeepStrictUnbrand.d.ts.map +1 -1
- package/package.json +5 -5
- package/bin/src/types/GetStrictObjectLastKeys.d.ts.map +0 -1
- package/bin/src/types/GetStrictObjectLastKeys.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# How To Use
|
|
2
|
+
|
|
2
3
|

|
|
3
4
|
|
|
4
5
|
```bash
|
|
@@ -7,11 +8,13 @@ npm i @kakasoo/deep-strict-types
|
|
|
7
8
|
|
|
8
9
|
# DeepStrictTypes
|
|
9
10
|
|
|
10
|
-
**DeepStrictTypes** extends TypeScript utility types, enabling safe operations like `Omit` and `Pick` on nested objects or arrays by specifying
|
|
11
|
+
**DeepStrictTypes** extends TypeScript utility types, enabling safe operations like `Omit` and `Pick` on deeply nested objects or arrays by specifying keys to be inferred. It provides strict and accurate type checks, simplifying tasks like removing a single key from a nested object without recombining multiple types. Quickly and precisely omit or pick the internal keys you need!
|
|
12
|
+
|
|
13
|
+
## Key Features
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
### `DeepStrictObjectKeys`
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
Extract all nested keys from an object `T`, preserving its structure. Useful for safely handling specific keys at deeper levels of an object.
|
|
15
18
|
|
|
16
19
|
```typescript
|
|
17
20
|
type Example = {
|
|
@@ -28,13 +31,13 @@ type Example = {
|
|
|
28
31
|
type Keys = DeepStrictObjectKeys<Example>;
|
|
29
32
|
```
|
|
30
33
|
|
|
31
|
-
In
|
|
34
|
+
In arrays, elements are represented with the `[*]` symbol, ensuring perfect inference even for nested structures.
|
|
32
35
|
|
|
33
|
-
|
|
36
|
+
### `DeepStrictOmit`
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
Create a new type by excluding properties corresponding to key `K` from object `T`, preserving the nested structure.
|
|
36
39
|
|
|
37
|
-
```
|
|
40
|
+
```typescript
|
|
38
41
|
type Example = {
|
|
39
42
|
user: {
|
|
40
43
|
name: string;
|
|
@@ -46,42 +49,30 @@ type Example = {
|
|
|
46
49
|
type Omitted = DeepStrictOmit<Example, 'user.name'>;
|
|
47
50
|
```
|
|
48
51
|
|
|
49
|
-
This is
|
|
52
|
+
This is particularly effective for branded types. Below is an example using the `typia` library:
|
|
50
53
|
|
|
51
|
-
```
|
|
52
|
-
test('
|
|
54
|
+
```typescript
|
|
55
|
+
test('Apply DeepStrictOmit to branding types', () => {
|
|
53
56
|
type TestInterface = {
|
|
54
57
|
id: string;
|
|
55
|
-
title: string;
|
|
56
58
|
thumbnails: {
|
|
57
|
-
name:
|
|
58
|
-
extension: null | (string & MinLength<1> & MaxLength<8>);
|
|
59
|
+
name: string & MinLength<1> & MaxLength<255>;
|
|
59
60
|
url: string;
|
|
60
61
|
}[];
|
|
61
62
|
};
|
|
62
63
|
|
|
63
64
|
type Question = DeepStrictOmit<TestInterface, 'id'>;
|
|
64
|
-
type IsAnswer = Equal<
|
|
65
|
-
Question,
|
|
66
|
-
{
|
|
67
|
-
title: string;
|
|
68
|
-
thumbnails: {
|
|
69
|
-
name: null | (string & MinLength<1> & MaxLength<255>);
|
|
70
|
-
extension: null | (string & MinLength<1> & MaxLength<8>);
|
|
71
|
-
url: string;
|
|
72
|
-
}[];
|
|
73
|
-
}
|
|
74
|
-
>;
|
|
65
|
+
type IsAnswer = Equal<Question, { thumbnails: { name: string & MinLength<1> & MaxLength<255>; url: string }[] }>;
|
|
75
66
|
|
|
76
67
|
ok(typia.random<IsAnswer>());
|
|
77
68
|
});
|
|
78
69
|
```
|
|
79
70
|
|
|
80
|
-
|
|
71
|
+
### `DeepStrictPick`
|
|
81
72
|
|
|
82
|
-
|
|
73
|
+
Select properties corresponding to key `K` from object `T`, preserving the nested structure.
|
|
83
74
|
|
|
84
|
-
```
|
|
75
|
+
```typescript
|
|
85
76
|
type Example = {
|
|
86
77
|
user: {
|
|
87
78
|
name: string;
|
|
@@ -93,38 +84,63 @@ type Example = {
|
|
|
93
84
|
type Picked = DeepStrictPick<Example, 'user.name'>;
|
|
94
85
|
```
|
|
95
86
|
|
|
96
|
-
|
|
87
|
+
### `DeepStrictUnbrand`
|
|
97
88
|
|
|
98
|
-
|
|
89
|
+
Remove branding from type `T`, even in deeply nested objects, simplifying the handling of branded types.
|
|
99
90
|
|
|
100
|
-
```
|
|
101
|
-
type BrandedType = {
|
|
91
|
+
```typescript
|
|
92
|
+
type BrandedType = { value: number & { unit: 'dollar' } };
|
|
102
93
|
|
|
103
94
|
// Result: { value: number; }
|
|
104
95
|
type Unbranded = DeepStrictUnbrand<BrandedType>;
|
|
105
96
|
```
|
|
106
97
|
|
|
107
|
-
|
|
98
|
+
### `GetType`
|
|
108
99
|
|
|
109
|
-
|
|
100
|
+
Get the type of a specific key path from a nested object type `T`. This is useful for extracting the type of deeply nested properties safely.
|
|
110
101
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
102
|
+
```typescript
|
|
103
|
+
type Example = {
|
|
104
|
+
user: {
|
|
105
|
+
name: string;
|
|
106
|
+
address: {
|
|
107
|
+
city: string;
|
|
108
|
+
zip: number;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
};
|
|
115
112
|
|
|
116
113
|
// Result: string
|
|
117
|
-
type
|
|
114
|
+
type CityType = GetType<Example, 'user.address.city'>;
|
|
115
|
+
|
|
116
|
+
// Result: { city: string; zip: number; }
|
|
117
|
+
type AddressType = GetType<Example, 'user.address'>;
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
## Utility functions (Experimental)
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
### `DeepStrictAssert`
|
|
123
123
|
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
```typescript
|
|
125
|
+
interface Example {
|
|
126
|
+
a: number;
|
|
127
|
+
b: number;
|
|
128
|
+
c: {
|
|
129
|
+
d: string;
|
|
130
|
+
e: string;
|
|
131
|
+
f: {
|
|
132
|
+
g: boolean;
|
|
133
|
+
h: boolean;
|
|
134
|
+
}[];
|
|
135
|
+
}[];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
declare const E: Example;
|
|
127
139
|
|
|
128
|
-
//
|
|
129
|
-
|
|
140
|
+
// Expected: { c: Array<{ d: string }> }
|
|
141
|
+
const answer = deepStrictAssert(E)('c[*].d');
|
|
130
142
|
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
This is just a part of the features provided by **DeepStrictTypes**, designed to enhance TypeScript's type manipulation capabilities and improve developer productivity. For more details, check out the library's full documentation.
|
package/bin/src/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export * from './DeepStrictAssert';
|
|
2
2
|
export * from './types/DeepDateToString';
|
|
3
3
|
export * from './types/DeepStrictObjectKeys';
|
|
4
|
+
export * from './types/DeepStrictObjectLastKeys';
|
|
4
5
|
export * from './types/DeepStrictOmit';
|
|
5
6
|
export * from './types/DeepStrictPick';
|
|
6
7
|
export * from './types/DeepStrictUnbrand';
|
|
7
8
|
export * from './types/ElementOf';
|
|
8
9
|
export * from './types/Equal';
|
|
9
10
|
export * from './types/GetMember';
|
|
10
|
-
export * from './types/GetStrictObjectLastKeys';
|
|
11
11
|
export * from './types/GetType';
|
|
12
12
|
export * from './types/IsAny';
|
|
13
13
|
export * from './types/IsUnion';
|
package/bin/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC"}
|
package/bin/src/index.js
CHANGED
|
@@ -17,13 +17,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./DeepStrictAssert"), exports);
|
|
18
18
|
__exportStar(require("./types/DeepDateToString"), exports);
|
|
19
19
|
__exportStar(require("./types/DeepStrictObjectKeys"), exports);
|
|
20
|
+
__exportStar(require("./types/DeepStrictObjectLastKeys"), exports);
|
|
20
21
|
__exportStar(require("./types/DeepStrictOmit"), exports);
|
|
21
22
|
__exportStar(require("./types/DeepStrictPick"), exports);
|
|
22
23
|
__exportStar(require("./types/DeepStrictUnbrand"), exports);
|
|
23
24
|
__exportStar(require("./types/ElementOf"), exports);
|
|
24
25
|
__exportStar(require("./types/Equal"), exports);
|
|
25
26
|
__exportStar(require("./types/GetMember"), exports);
|
|
26
|
-
__exportStar(require("./types/GetStrictObjectLastKeys"), exports);
|
|
27
27
|
__exportStar(require("./types/GetType"), exports);
|
|
28
28
|
__exportStar(require("./types/IsAny"), exports);
|
|
29
29
|
__exportStar(require("./types/IsUnion"), exports);
|
package/bin/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,+DAA6C;AAC7C,yDAAuC;AACvC,yDAAuC;AACvC,4DAA0C;AAC1C,oDAAkC;AAClC,gDAA8B;AAC9B,oDAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,+DAA6C;AAC7C,mEAAiD;AACjD,yDAAuC;AACvC,yDAAuC;AACvC,4DAA0C;AAC1C,oDAAkC;AAClC,gDAA8B;AAC9B,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B;AAC9B,kDAAgC;AAChC,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
|
|
@@ -2,13 +2,15 @@ import { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
|
2
2
|
import type { IsAny } from './IsAny';
|
|
3
3
|
import type { IsUnion } from './IsUnion';
|
|
4
4
|
import type { ValueType } from './ValueType';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
declare namespace DeepStrictObjectKeys {
|
|
6
|
+
type Infer<T extends object, Joiner extends {
|
|
7
|
+
array: string;
|
|
8
|
+
object: string;
|
|
9
|
+
} = {
|
|
10
|
+
array: '[*]';
|
|
11
|
+
object: '.';
|
|
12
|
+
}, P extends keyof T = keyof T> = P extends string ? IsUnion<T[P]> extends true ? P : T[P] extends Array<infer Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<Element, Joiner>}` : T[P] extends ValueType ? P : IsAny<T[P]> extends true ? P : T[P] extends object ? T[P] extends Array<infer _Element> ? P : T[P] extends Record<string, never> ? `${P}` : `${P}` | `${P}${Joiner['object']}${Infer<T[P], Joiner>}` : never : never;
|
|
13
|
+
}
|
|
12
14
|
/**
|
|
13
15
|
* @title Type for Listing All Keys of Nested Objects or Arrays.
|
|
14
16
|
*
|
|
@@ -27,6 +29,6 @@ export type DeepStrictObjectKeys<T extends object, Joiner extends {
|
|
|
27
29
|
} = {
|
|
28
30
|
array: '[*]';
|
|
29
31
|
object: '.';
|
|
30
|
-
}, P extends keyof T = keyof T> = DeepStrictUnbrand<T> extends Array<infer Element> ? Element extends object ? `${Joiner['array']}.${DeepStrictObjectKeys<Element, Joiner>}` : `${Joiner['array']}.${keyof Element extends string ? keyof Element : never}` :
|
|
32
|
+
}, P extends keyof T = keyof T> = DeepStrictUnbrand<T> extends Array<infer Element> ? Element extends object ? `${Joiner['array']}.${DeepStrictObjectKeys<Element, Joiner>}` : `${Joiner['array']}.${keyof Element extends string ? keyof Element : never}` : DeepStrictObjectKeys.Infer<DeepStrictUnbrand<T>, Joiner, Extract<P, keyof DeepStrictUnbrand<T>>>;
|
|
31
33
|
export {};
|
|
32
34
|
//# sourceMappingURL=DeepStrictObjectKeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,kBAAU,oBAAoB,CAAC;IAC7B,KAAY,KAAK,CACf,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG;QACF,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,GAAG,CAAC;KACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACzB,CAAC,SAAS,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC9C,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACxE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACpB,CAAC,GACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAChC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,GAAG,CAAC,EAAE,GACN,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAC5D,KAAK,GACf,KAAK,CAAC;CACX;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IACjD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAE3B,iBAAiB,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC7C,OAAO,SAAS,MAAM,GACpB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GAC7D,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,SAAS,MAAM,GAAG,MAAM,OAAO,GAAG,KAAK,EAAE,GAC9E,oBAAoB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -2,13 +2,15 @@ import { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
|
2
2
|
import type { IsAny } from './IsAny';
|
|
3
3
|
import type { IsUnion } from './IsUnion';
|
|
4
4
|
import type { ValueType } from './ValueType';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
declare namespace DeepStrictObjectLastKeys {
|
|
6
|
+
type Infer<T extends object, Joiner extends {
|
|
7
|
+
array: string;
|
|
8
|
+
object: string;
|
|
9
|
+
} = {
|
|
10
|
+
array: '[*]';
|
|
11
|
+
object: '.';
|
|
12
|
+
}, P extends keyof T = keyof T> = P extends string ? IsUnion<T[P]> extends true ? P : T[P] extends Array<infer Element extends object> ? `${P}${Joiner['array']}${Joiner['object']}${Infer<Element, Joiner>}` : T[P] extends ValueType ? P : IsAny<T[P]> extends true ? P : T[P] extends object ? T[P] extends Array<infer _Element> ? P : T[P] extends Record<string, never> ? never : `${P}${Joiner['object']}${Infer<T[P], Joiner>}` : never : never;
|
|
13
|
+
}
|
|
12
14
|
/**
|
|
13
15
|
* @title Type for Extracting the Last Level Keys from Nested Objects, Including Array Elements.
|
|
14
16
|
*
|
|
@@ -30,6 +32,6 @@ export type DeepStrictObjectLastKeys<T extends object, Joiner extends {
|
|
|
30
32
|
} = {
|
|
31
33
|
array: '[*]';
|
|
32
34
|
object: '.';
|
|
33
|
-
}, P extends keyof T = keyof T> = DeepStrictUnbrand<T> extends Array<infer Element> ? Element extends object ? `${Joiner['array']}.${DeepStrictObjectLastKeys<
|
|
35
|
+
}, P extends keyof T = keyof T> = DeepStrictUnbrand<T> extends Array<infer Element> ? Element extends object ? `${Joiner['array']}.${DeepStrictObjectLastKeys<Element, Joiner>}` : Extract<keyof T, string> : DeepStrictObjectLastKeys.Infer<DeepStrictUnbrand<T>, Joiner, Extract<P, keyof DeepStrictUnbrand<T>>>;
|
|
34
36
|
export {};
|
|
35
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=DeepStrictObjectLastKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectLastKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectLastKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,kBAAU,wBAAwB,CAAC;IACjC,KAAY,KAAK,CACf,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG;QACF,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,GAAG,CAAC;KACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACzB,CAAC,SAAS,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC9C,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACpE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACpB,CAAC,GACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAChC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,KAAK,GACL,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GACnD,KAAK,GACf,KAAK,CAAC;CACX;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IACjD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAE3B,iBAAiB,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC7C,OAAO,SAAS,MAAM,GACpB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACjE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAC1B,wBAAwB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectLastKeys.js","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectLastKeys.ts"],"names":[],"mappings":""}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { DeepStrictObjectKeys } from './DeepStrictObjectKeys';
|
|
2
|
-
import type { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
3
2
|
import type { GetElementMember } from './GetMember';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
declare namespace DeepStrictOmit {
|
|
4
|
+
type Infer<T extends object, K extends DeepStrictObjectKeys<T>> = [K] extends [never] ? T : {
|
|
5
|
+
[key in keyof T as key extends K ? never : key]: T[key] extends Array<infer Element extends object> ? key extends string ? Element extends Date ? Array<Element> : GetElementMember<K, key> extends DeepStrictObjectKeys<Element> ? Array<Infer<Element, GetElementMember<K, key>>> : Array<Element> : never : T[key] extends Array<infer Element> ? Array<Element> : T[key] extends object ? key extends string ? T[key] extends Date ? T[key] : GetElementMember<K, key> extends DeepStrictObjectKeys<T[key]> ? Infer<T[key], GetElementMember<K, key>> : T[key] : never : T[key];
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
8
|
/**
|
|
9
9
|
* @title Type for Removing Specific Keys from an Interface.
|
|
10
10
|
*
|
|
@@ -22,6 +22,6 @@ type _DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<T>> = T ex
|
|
|
22
22
|
* type Example3 = DeepStrictOmit<{ a: 1 }[], "[*].a">; // {}[]
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
|
-
export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<
|
|
25
|
+
export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<T>> = T extends Array<infer Element extends object> ? Array<DeepStrictOmit<Element, GetElementMember<K, ''> extends DeepStrictObjectKeys<Element> ? GetElementMember<K, ''> : never>> : DeepStrictOmit.Infer<T, K>;
|
|
26
26
|
export {};
|
|
27
27
|
//# sourceMappingURL=DeepStrictOmit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictOmit.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictOmit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DeepStrictOmit.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictOmit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,kBAAU,cAAc,CAAC;IACvB,KAAY,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACxF,CAAC,GACD;SACG,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC/F,GAAG,SAAS,MAAM,GAChB,OAAO,SAAS,IAAI,GAClB,KAAK,CAAC,OAAO,CAAC,GACd,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,oBAAoB,CAAC,OAAO,CAAC,GAC5D,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAC/C,KAAK,CAAC,OAAO,CAAC,GAClB,KAAK,GACP,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GACjC,KAAK,CAAC,OAAO,CAAC,GACd,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,GACnB,GAAG,SAAS,MAAM,GAChB,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GACjB,CAAC,CAAC,GAAG,CAAC,GACN,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAC3D,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACvC,CAAC,CAAC,GAAG,CAAC,GACV,KAAK,GACP,CAAC,CAAC,GAAG,CAAC;KACf,CAAC;CACP;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAC5E,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GACzC,KAAK,CACH,cAAc,CACZ,OAAO,EACP,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,oBAAoB,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAChG,CACF,GACD,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -9,6 +9,8 @@ import type { RemoveLastProperty } from './RemoveLastProperty';
|
|
|
9
9
|
* The `DeepStrictPick<T, K>` type creates a new type by selecting only the properties
|
|
10
10
|
* corresponding to the key `K` from the object `T`, while preserving the nested structure.
|
|
11
11
|
* This type allows safely selecting specific keys, even from deeply nested objects or arrays.
|
|
12
|
+
* `DeepStrictPick` is a type created with the idea of omit all but the selected key.
|
|
13
|
+
* Therefore, we use {@link DeepStrictOmit}.
|
|
12
14
|
*
|
|
13
15
|
* {@link DeepStrictObjectKeys} can be used to determine valid keys for selection,
|
|
14
16
|
* including nested keys represented with dot notation (`.`) and array indices represented with `[*]`.
|
|
@@ -20,5 +22,5 @@ import type { RemoveLastProperty } from './RemoveLastProperty';
|
|
|
20
22
|
* type Example3 = DeepStrictPick<{ a: 1 }[], "[*].a">; // { a: 1 }[]
|
|
21
23
|
* ```
|
|
22
24
|
*/
|
|
23
|
-
export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = DeepStrictOmit<T, Exclude<DeepStrictObjectKeys<
|
|
25
|
+
export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = DeepStrictOmit<T, Exclude<DeepStrictObjectKeys<T>, K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K>>>;
|
|
24
26
|
//# sourceMappingURL=DeepStrictPick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictPick.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictPick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"DeepStrictPick.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictPick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,cAAc,CAC9F,CAAC,EACD,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACtG,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
type
|
|
1
|
+
declare namespace DeepStrictUnbrand {
|
|
2
|
+
type Primitive = string | number | boolean | symbol | null | undefined;
|
|
3
|
+
type Infer<T extends Primitive & Record<any, any>> = T extends string & Record<any, any> ? string : T extends number & Record<any, any> ? number : T extends boolean & Record<any, any> ? boolean : T extends symbol & Record<any, any> ? symbol : T extends null & Record<any, any> ? null : T extends undefined & Record<any, any> ? undefined : T;
|
|
4
|
+
}
|
|
3
5
|
/**
|
|
4
6
|
* @title Type for Recursively Removing Branding Types.
|
|
5
7
|
*
|
|
@@ -24,7 +26,7 @@ type Unbrand<T extends Primitive & Record<any, any>> = T extends string & Record
|
|
|
24
26
|
* type Example3 = DeepStrictUnbrand<Array<string & { __brand: 'email' }>>; // Array<string>
|
|
25
27
|
* ```
|
|
26
28
|
*/
|
|
27
|
-
export type DeepStrictUnbrand<T> = T extends Array<Date> ? Array<Date> : T extends Array<infer I extends object> ? Array<DeepStrictUnbrand<I>> : T extends Primitive & NonNullable<unknown> ?
|
|
29
|
+
export type DeepStrictUnbrand<T> = T extends Array<Date> ? Array<Date> : T extends Array<infer I extends object> ? Array<DeepStrictUnbrand<I>> : T extends DeepStrictUnbrand.Primitive & NonNullable<unknown> ? DeepStrictUnbrand.Infer<T> : T extends Date ? T : {
|
|
28
30
|
[K in keyof T]: T[K] extends object ? DeepStrictUnbrand<T[K]> : T[K];
|
|
29
31
|
};
|
|
30
32
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictUnbrand.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictUnbrand.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"DeepStrictUnbrand.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictUnbrand.ts"],"names":[],"mappings":"AAAA,kBAAU,iBAAiB,CAAC;IAC1B,KAAY,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9E,KAAY,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAC3F,MAAM,GACN,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACjC,MAAM,GACN,CAAC,SAAS,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAClC,OAAO,GACP,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACjC,MAAM,GACN,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAC/B,IAAI,GACJ,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,SAAS,GACT,CAAC,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC7B,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,GACjB,KAAK,CAAC,IAAI,CAAC,GACX,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACrC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC3B,CAAC,SAAS,iBAAiB,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAC1D,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,IAAI,GACZ,CAAC,GACD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,CAAC,CAAC,CAAC;CACT,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kakasoo/deep-strict-types",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.27",
|
|
4
4
|
"description": "",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
"author": "kakasoo",
|
|
48
48
|
"license": "ISC",
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@samchon/shopping-api": "^0.
|
|
51
|
-
"@types/node": "^22.10.
|
|
50
|
+
"@samchon/shopping-api": "^0.14.1",
|
|
51
|
+
"@types/node": "^22.10.10",
|
|
52
52
|
"prettier": "^3.4.2",
|
|
53
53
|
"rimraf": "^6.0.1",
|
|
54
54
|
"ts-patch": "^3.3.0",
|
|
55
|
-
"typescript": "^5.7.
|
|
56
|
-
"typia": "^7.
|
|
55
|
+
"typescript": "^5.7.3",
|
|
56
|
+
"typia": "^7.6.0"
|
|
57
57
|
},
|
|
58
58
|
"repository": {
|
|
59
59
|
"type": "git",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetStrictObjectLastKeys.d.ts","sourceRoot":"","sources":["../../../src/types/GetStrictObjectLastKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,sBAAsB,CACzB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IACzB,CAAC,SAAS,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC9C,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACzF,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACpB,CAAC,GACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAChC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,KAAK,GACL,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GACpE,KAAK,GACf,KAAK,CAAC;AAEV;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IACjD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACb,EACD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAE3B,iBAAiB,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC7C,OAAO,SAAS,MAAM,GACpB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,GACpF,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,SAAS,MAAM,GAAG,MAAM,OAAO,GAAG,KAAK,EAAE,GAC9E,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetStrictObjectLastKeys.js","sourceRoot":"","sources":["../../../src/types/GetStrictObjectLastKeys.ts"],"names":[],"mappings":""}
|