@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 CHANGED
@@ -1,4 +1,5 @@
1
1
  # How To Use
2
+
2
3
  ![example](https://github.com/user-attachments/assets/28316425-8302-453e-b238-0c732606e6a7)
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 the keys to be inferred. This allows for more strict and accurate type checks. **Now, you don't have to recombine numerous types daily to remove a single key from a nested object. You can quickly omit and pick the internal keys you want!**
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
- ## DeepStrictObjectKeys
15
+ ### `DeepStrictObjectKeys`
13
16
 
14
- `DeepStrictObjectKeys<T>` extracts all nested keys from an object `T`, preserving the structure of the nested object and returning the types of the keys. This is useful when you need to handle specific keys safely at deeper levels of an object.
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 the case of an array, the inside is represented by the `[*]` symbol. Of course, the arrangement of the array, the arrangement of objects in the array, and even if the top object is an array, it is perfectly inferred.
34
+ In arrays, elements are represented with the `[*]` symbol, ensuring perfect inference even for nested structures.
32
35
 
33
- ## DeepStrictOmit
36
+ ### `DeepStrictOmit`
34
37
 
35
- `DeepStrictOmit<T, K>` creates a new type by excluding properties corresponding to the key K from object T, while preserving the nested structure. This type allows precise omission of keys even in deeply nested objects.
38
+ Create a new type by excluding properties corresponding to key `K` from object `T`, preserving the nested structure.
36
39
 
37
- ```ts
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 also useful for branding types. Below is an example of defining a branding type using a library called typia, in which DeepStrictOmit can also be safely used.
52
+ This is particularly effective for branded types. Below is an example using the `typia` library:
50
53
 
51
- ```ts
52
- test('TEST 1. apply DeepStrictOmit to primitive property type of branding type', () => {
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: null | (string & MinLength<1> & MaxLength<255>);
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
- ## DeepStrictPick
71
+ ### `DeepStrictPick`
81
72
 
82
- `DeepStrictPick<T, K>` creates a new type by selecting only the properties corresponding to the key K from object T, while preserving the nested structure. It allows safely selecting specific keys even from deep objects.
73
+ Select properties corresponding to key `K` from object `T`, preserving the nested structure.
83
74
 
84
- ```ts
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
- ## DeepStrictUnbrand
87
+ ### `DeepStrictUnbrand`
97
88
 
98
- DeepStrictUnbrand<T> removes branding from type T and applies it even to deeply nested objects. This makes handling complex branded types simpler by removing the branding for more straightforward use.
89
+ Remove branding from type `T`, even in deeply nested objects, simplifying the handling of branded types.
99
90
 
100
- ```ts
101
- type BrandedType = { brand: number & { type: 'won' } };
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
- ## SubTypes for implementation
98
+ ### `GetType`
108
99
 
109
- ### ElementOf
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
- ElementOf<T> extracts the type of elements from an array type T. This is useful to explicitly define the element type of an array and perform operations on that element.
112
-
113
- ```ts
114
- type ArrayExample = string[];
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 ElementType = ElementOf<ArrayExample>;
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
- ### Equal
120
+ ## Utility functions (Experimental)
121
121
 
122
- Equal<A, B> evaluates whether types A and B are the same and returns true or false. This is used to validate whether two types are identical.
122
+ ### `DeepStrictAssert`
123
123
 
124
- ```ts
125
- type A = { a: number };
126
- type B = { a: number };
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
- // Result: true
129
- type AreEqual = Equal<A, B>;
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.
@@ -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';
@@ -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,iCAAiC,CAAC;AAChD,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"}
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);
@@ -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,kEAAgD;AAChD,kDAAgC;AAChC,gDAA8B;AAC9B,kDAAgC;AAChC,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
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
- type __DeepStrictObjectKeys<T extends object, Joiner extends {
6
- array: string;
7
- object: string;
8
- } = {
9
- array: '[*]';
10
- object: '.';
11
- }, 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']}${__DeepStrictObjectKeys<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']}${__DeepStrictObjectKeys<T[P], Joiner>}` : never : never;
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}` : __DeepStrictObjectKeys<DeepStrictUnbrand<T>, Joiner, Extract<P, keyof DeepStrictUnbrand<T>>>;
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,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,GAAG,CAAC,EAAE,GACN,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAC7E,KAAK,GACf,KAAK,CAAC;AAEV;;;;;;;;;;;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,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
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
- type __DeepStrictObjectKeys<T extends object, Joiner extends {
6
- array: string;
7
- object: string;
8
- } = {
9
- array: '[*]';
10
- object: '.';
11
- }, 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']}${__DeepStrictObjectKeys<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']}${__DeepStrictObjectKeys<T[P], Joiner>}` : never : never;
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<DeepStrictUnbrand<Element>, Joiner>}` : `${Joiner['array']}.${keyof Element extends string ? keyof Element : never}` : __DeepStrictObjectKeys<DeepStrictUnbrand<T>, Joiner, Extract<P, keyof DeepStrictUnbrand<T>>>;
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=GetStrictObjectLastKeys.d.ts.map
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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GetStrictObjectLastKeys.js.map
3
+ //# sourceMappingURL=DeepStrictObjectLastKeys.js.map
@@ -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
- type ____DeepStrictOmit<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<____DeepStrictOmit<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]> ? ____DeepStrictOmit<T[key], GetElementMember<K, key>> : T[key] : never : T[key];
6
- };
7
- 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<T, K>;
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<DeepStrictUnbrand<T>>> = _DeepStrictOmit<T, Extract<K, DeepStrictObjectKeys<T>>>;
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,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC9F,CAAC,GACD;KACG,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,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAC5D,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,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACpD,CAAC,CAAC,GAAG,CAAC,GACV,KAAK,GACP,CAAC,CAAC,GAAG,CAAC;CACf,CAAC;AAEN,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IACtE,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GACzC,KAAK,CACH,eAAe,CACb,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,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAClH,CAAC,EACD,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CACpC,CAAC"}
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<DeepStrictUnbrand<T>>, K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K>>>;
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;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,cAAc,CAC9F,CAAC,EACD,OAAO,CACL,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACpE,CACF,CAAC"}
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
- type Primitive = string | number | boolean | symbol | null | undefined;
2
- type Unbrand<T extends Primitive & Record<any, any>> = T extends string & Record<any, any> ? Extract<string, Omit<T, any>> : T extends number & Record<any, any> ? Extract<number, Omit<T, any>> : T extends boolean & Record<any, any> ? Extract<boolean, Omit<T, any>> : T extends symbol & Record<any, any> ? Extract<symbol, Omit<T, any>> : T extends null & Record<any, any> ? Extract<null, Omit<T, any>> : T extends undefined & Record<any, any> ? Extract<undefined, Omit<T, any>> : T;
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> ? Unbrand<T> : T extends Date ? T : {
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,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AACvE,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACtF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAClC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC9B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC3B,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAChC,CAAC,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;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,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,SAAS,IAAI,GACZ,CAAC,GACD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE,CAAC"}
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.25",
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.12.1",
51
- "@types/node": "^22.10.2",
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.2",
56
- "typia": "^7.5.1"
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":""}