@kakasoo/deep-strict-types 1.0.22 → 1.0.24
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/bin/src/types/DeepDateToString.d.ts +7 -0
- package/bin/src/types/DeepDateToString.d.ts.map +1 -1
- package/bin/src/types/DeepStrictObjectKeys.d.ts +6 -4
- package/bin/src/types/DeepStrictObjectKeys.d.ts.map +1 -1
- package/bin/src/types/DeepStrictOmit.d.ts +12 -5
- package/bin/src/types/DeepStrictOmit.d.ts.map +1 -1
- package/bin/src/types/DeepStrictPick.d.ts +12 -5
- package/bin/src/types/DeepStrictPick.d.ts.map +1 -1
- package/bin/src/types/DeepStrictUnbrand.d.ts +24 -0
- package/bin/src/types/DeepStrictUnbrand.d.ts.map +1 -1
- package/bin/src/types/ElementOf.d.ts +1 -1
- package/bin/src/types/Equal.d.ts +6 -2
- package/bin/src/types/Equal.d.ts.map +1 -1
- package/bin/src/types/GetMember.d.ts +18 -4
- package/bin/src/types/GetMember.d.ts.map +1 -1
- package/bin/src/types/GetStrictObjectLastKeys.d.ts +15 -0
- package/bin/src/types/GetStrictObjectLastKeys.d.ts.map +1 -1
- package/bin/src/types/GetType.d.ts +13 -3
- package/bin/src/types/GetType.d.ts.map +1 -1
- package/bin/src/types/IsAny.d.ts +11 -1
- package/bin/src/types/IsAny.d.ts.map +1 -1
- package/bin/src/types/IsUnion.d.ts +11 -1
- package/bin/src/types/IsUnion.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A utility type that recursively converts all `Date` types within a nested object or array to `string`.
|
|
3
|
+
*
|
|
4
|
+
* - If `T` is an array of objects, the type processes each element recursively.
|
|
5
|
+
* - If `T` is a `Date`, it is converted to `string`.
|
|
6
|
+
* - If `T` is an object, each key is checked recursively for `Date` types or nested objects.
|
|
7
|
+
*/
|
|
1
8
|
export type DeepDateToString<T> = T extends Array<infer I extends object> ? Array<DeepDateToString<I>> : T extends Date ? string : {
|
|
2
9
|
[K in keyof T]: T[K] extends infer I ? I extends Date ? string : I extends object ? DeepDateToString<I> : I : never;
|
|
3
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepDateToString.d.ts","sourceRoot":"","sources":["../../../src/types/DeepDateToString.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC5B,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACnC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,IAAI,GACZ,MAAM,GACN;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAChC,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,MAAM,GACd,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,GACL,KAAK;CACV,CAAC"}
|
|
1
|
+
{"version":3,"file":"DeepDateToString.d.ts","sourceRoot":"","sources":["../../../src/types/DeepDateToString.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC5B,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACnC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,IAAI,GACZ,MAAM,GACN;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAChC,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,MAAM,GACd,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,GACL,KAAK;CACV,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
1
2
|
import type { IsAny } from './IsAny';
|
|
2
3
|
import type { IsUnion } from './IsUnion';
|
|
3
4
|
import type { ValueType } from './ValueType';
|
|
@@ -9,10 +10,11 @@ type __DeepStrictObjectKeys<T extends object, Joiner extends {
|
|
|
9
10
|
object: '.';
|
|
10
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;
|
|
11
12
|
/**
|
|
12
|
-
* @title
|
|
13
|
+
* @title Type for Listing All Keys of Nested Objects or Arrays.
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
15
|
+
* A type that extracts all keys of a nested object. If the object contains nested properties,
|
|
16
|
+
* the keys are represented using dot notation. For arrays, the keys are represented using
|
|
17
|
+
* the `[*]` symbol.
|
|
16
18
|
*
|
|
17
19
|
* ```ts
|
|
18
20
|
* type Example1 = DeepStrictObjectKeys<{ a: { b: 1; c: 2 } }>; // "a" | "a.b" | "a.c"
|
|
@@ -25,6 +27,6 @@ export type DeepStrictObjectKeys<T extends object, Joiner extends {
|
|
|
25
27
|
} = {
|
|
26
28
|
array: '[*]';
|
|
27
29
|
object: '.';
|
|
28
|
-
}, P extends keyof T = keyof T> = T extends Array<infer Element> ? Element extends object ? `${Joiner['array']}.${DeepStrictObjectKeys<Element, Joiner>}` : `${Joiner['array']}.${keyof Element extends string ? keyof Element : never}` : __DeepStrictObjectKeys<T
|
|
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>>>;
|
|
29
31
|
export {};
|
|
30
32
|
//# sourceMappingURL=DeepStrictObjectKeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,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
|
|
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"}
|
|
@@ -6,13 +6,20 @@ type ____DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<T>> = [
|
|
|
6
6
|
};
|
|
7
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>;
|
|
8
8
|
/**
|
|
9
|
-
* @title
|
|
10
|
-
* {@link DeepStrictObjectKeys} 을 이용해서 제거할 키를 고를 수 있다.
|
|
9
|
+
* @title Type for Removing Specific Keys from an Interface.
|
|
11
10
|
*
|
|
11
|
+
* The `DeepStrictOmit<T, K>` type creates a new type by excluding properties
|
|
12
|
+
* corresponding to the key `K` from the object `T`, while preserving the nested structure.
|
|
13
|
+
* It enables precise omission of keys even in deeply nested objects or arrays.
|
|
14
|
+
*
|
|
15
|
+
* {@link DeepStrictObjectKeys} can be used to determine valid keys for omission,
|
|
16
|
+
* including nested keys represented with dot notation (`.`) and array indices represented with `[*]`.
|
|
17
|
+
*
|
|
18
|
+
* Example Usage:
|
|
12
19
|
* ```ts
|
|
13
|
-
* type Example1 = DeepStrictOmit<{ a: { b: 1; c: 2 } }, "a.b">;
|
|
14
|
-
* type Example2 = DeepStrictOmit<{ a: { b: 1; c: { d: number }[] } }, "a.c[*].d">;
|
|
15
|
-
* type Example3 = DeepStrictOmit<{ a: 1 }[], "[*].a">;
|
|
20
|
+
* type Example1 = DeepStrictOmit<{ a: { b: 1; c: 2 } }, "a.b">; // { a: { c: 2 } }
|
|
21
|
+
* type Example2 = DeepStrictOmit<{ a: { b: 1; c: { d: number }[] } }, "a.c[*].d">; // { a: { b: 1; c: {}[] } }
|
|
22
|
+
* type Example3 = DeepStrictOmit<{ a: 1 }[], "[*].a">; // {}[]
|
|
16
23
|
* ```
|
|
17
24
|
*/
|
|
18
25
|
export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<DeepStrictUnbrand<T>>> = _DeepStrictOmit<T, Extract<K, DeepStrictObjectKeys<T>>>;
|
|
@@ -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
|
|
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"}
|
|
@@ -4,13 +4,20 @@ import type { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
|
4
4
|
import type { RemoveAfterDot } from './RemoveAfterDot';
|
|
5
5
|
import type { RemoveLastProperty } from './RemoveLastProperty';
|
|
6
6
|
/**
|
|
7
|
-
* @title
|
|
8
|
-
* {@link DeepStrictObjectKeys} 을 이용해서 뽑을 키를 고를 수 있다.
|
|
7
|
+
* @title Type for Selecting Specific Keys from an Interface.
|
|
9
8
|
*
|
|
9
|
+
* The `DeepStrictPick<T, K>` type creates a new type by selecting only the properties
|
|
10
|
+
* corresponding to the key `K` from the object `T`, while preserving the nested structure.
|
|
11
|
+
* This type allows safely selecting specific keys, even from deeply nested objects or arrays.
|
|
12
|
+
*
|
|
13
|
+
* {@link DeepStrictObjectKeys} can be used to determine valid keys for selection,
|
|
14
|
+
* including nested keys represented with dot notation (`.`) and array indices represented with `[*]`.
|
|
15
|
+
*
|
|
16
|
+
* Example Usage:
|
|
10
17
|
* ```ts
|
|
11
|
-
* type Example1 = DeepStrictPick<{ a: { b: 1; c: 2 } }, "a.b">;
|
|
12
|
-
* type Example2 = DeepStrictPick<{ a: { b: 1; c: { d: number }[] } }, "a.c[*].d">;
|
|
13
|
-
* type Example3 = DeepStrictPick<{ a: 1 }[], "[*].a">;
|
|
18
|
+
* type Example1 = DeepStrictPick<{ a: { b: 1; c: 2 } }, "a.b">; // { a: { b: 1 } }
|
|
19
|
+
* type Example2 = DeepStrictPick<{ a: { b: 1; c: { d: number }[] } }, "a.c[*].d">; // { a: { c: { d: number }[] } }
|
|
20
|
+
* type Example3 = DeepStrictPick<{ a: 1 }[], "[*].a">; // { a: 1 }[]
|
|
14
21
|
* ```
|
|
15
22
|
*/
|
|
16
23
|
export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = DeepStrictOmit<T, Exclude<DeepStrictObjectKeys<DeepStrictUnbrand<T>>, K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K>>>;
|
|
@@ -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;;;;;;;;;;;;;;;;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,5 +1,29 @@
|
|
|
1
1
|
type Primitive = string | number | boolean | symbol | null | undefined;
|
|
2
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;
|
|
3
|
+
/**
|
|
4
|
+
* @title Type for Recursively Removing Branding Types.
|
|
5
|
+
*
|
|
6
|
+
* The `DeepStrictUnbrand<T>` type recursively processes the type `T` to remove any branding
|
|
7
|
+
* that may have been added to primitive types or object properties. Branding often occurs when
|
|
8
|
+
* extending or augmenting primitive types for type safety, and this type "unbrands" them, restoring
|
|
9
|
+
* the original primitive type (e.g., `string`, `number`, `boolean`, etc.).
|
|
10
|
+
*
|
|
11
|
+
* The helper type `Unbrand<T>` is used to handle primitive types and their respective branding,
|
|
12
|
+
* by stripping off any additional properties that may have been added to them.
|
|
13
|
+
*
|
|
14
|
+
* The recursion goes through:
|
|
15
|
+
* - Arrays: It recursively processes elements of the array, maintaining deep unbranding.
|
|
16
|
+
* - Objects: It recursively processes each key in the object, unbranding any branded properties.
|
|
17
|
+
* - Primitives: It removes branding from primitive types (`string`, `number`, `boolean`, `symbol`, `null`, `undefined`).
|
|
18
|
+
* - Dates: The `Date` type is preserved as it is.
|
|
19
|
+
*
|
|
20
|
+
* Example Usage:
|
|
21
|
+
* ```ts
|
|
22
|
+
* type Example1 = DeepStrictUnbrand<{ a: string & { __brand: 'unique' } }>; // { a: string }
|
|
23
|
+
* type Example2 = DeepStrictUnbrand<{ a: { b: number & { __brand: 'id' } } }>; // { a: { b: number } }
|
|
24
|
+
* type Example3 = DeepStrictUnbrand<Array<string & { __brand: 'email' }>>; // Array<string>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
3
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 : {
|
|
4
28
|
[K in keyof T]: T[K] extends object ? DeepStrictUnbrand<T[K]> : T[K];
|
|
5
29
|
};
|
|
@@ -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,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,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"}
|
package/bin/src/types/Equal.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Implementation method
|
|
3
3
|
*/
|
|
4
4
|
type Expression<X> = <T>() => T extends X ? 1 : 2;
|
|
5
5
|
/**
|
|
6
|
-
* @title
|
|
6
|
+
* @title Type for Checking if Two Types are Equal.
|
|
7
|
+
*
|
|
8
|
+
* The `Equal<X, Y>` type uses conditional types and a helper type `Expression<X>`
|
|
9
|
+
* to determine if two types `X` and `Y` are the same. It returns `true` if they are
|
|
10
|
+
* equal, and `false` otherwise.
|
|
7
11
|
*/
|
|
8
12
|
export type Equal<X, Y> = Expression<X> extends Expression<Y> ? true : false;
|
|
9
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../../src/types/Equal.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../../src/types/Equal.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC"}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @title
|
|
2
|
+
* @title Type for Retrieving Members from a Specific Key.
|
|
3
3
|
*
|
|
4
|
+
* The `GetMember<T, O>` type extracts the part of the key `T` after the given prefix key `O`.
|
|
5
|
+
* If `T` starts with `O`, it returns the remaining portion of the key after `O`.
|
|
6
|
+
*
|
|
7
|
+
* Example Usage:
|
|
4
8
|
* ```ts
|
|
5
|
-
* type b = GetMember<"a.b", "a">;
|
|
6
|
-
* type b_c = GetMember<"a.b.c", "a">;
|
|
9
|
+
* type b = GetMember<"a.b", "a">; // "b"
|
|
10
|
+
* type b_c = GetMember<"a.b.c", "a">; // "b.c"
|
|
7
11
|
* ```
|
|
8
12
|
*/
|
|
9
13
|
export type GetMember<T extends string, O extends string> = T extends `${O}.${infer Rest}` ? Rest : never;
|
|
10
14
|
/**
|
|
11
|
-
* @title
|
|
15
|
+
* @title Type for Retrieving the Key of an Element Member from a Specific Key.
|
|
16
|
+
*
|
|
17
|
+
* The `GetElementMember<T, First>` type handles both regular keys and array element keys.
|
|
18
|
+
* If the key `T` represents an array element (denoted by `[*]`), it returns the key after the array element.
|
|
19
|
+
* Otherwise, it falls back to using `GetMember<T, First>` to retrieve the remaining portion of the key.
|
|
20
|
+
*
|
|
21
|
+
* Example Usage:
|
|
22
|
+
* ```ts
|
|
23
|
+
* type ElementKey = GetElementMember<"a[*].b", "a">; // "b"
|
|
24
|
+
* type NestedKey = GetElementMember<"a.b.c", "a">; // "b.c"
|
|
25
|
+
* ```
|
|
12
26
|
*/
|
|
13
27
|
export type GetElementMember<T extends string, First extends string> = T extends `${First}[*].${infer Rest}` ? Rest : GetMember<T, First>;
|
|
14
28
|
//# sourceMappingURL=GetMember.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetMember.d.ts","sourceRoot":"","sources":["../../../src/types/GetMember.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"GetMember.d.ts","sourceRoot":"","sources":["../../../src/types/GetMember.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAE1G;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,OAAO,MAAM,IAAI,EAAE,GACxG,IAAI,GACJ,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -8,6 +8,21 @@ type __DeepStrictObjectKeys<T extends object, Joiner extends {
|
|
|
8
8
|
array: '[*]';
|
|
9
9
|
object: '.';
|
|
10
10
|
}, 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;
|
|
11
|
+
/**
|
|
12
|
+
* @title Type for Extracting the Last Level Keys from Nested Objects, Including Array Elements.
|
|
13
|
+
*
|
|
14
|
+
* The `DeepStrictObjectLastKeys<T, Joiner, P>` type extracts the keys from the last level of a nested object `T`,
|
|
15
|
+
* with support for arrays. It returns keys with array indices (`[*]`) and object keys using a custom separator defined
|
|
16
|
+
* by the `Joiner` object.
|
|
17
|
+
* - For arrays, it appends array indices (`[*]`) followed by the key of the element.
|
|
18
|
+
* - For objects, it recursively traverses the nested structure and appends the last level keys.
|
|
19
|
+
*
|
|
20
|
+
* Example Usage:
|
|
21
|
+
* ```ts
|
|
22
|
+
* type Example1 = DeepStrictObjectLastKeys<{ a: { b: { c: number[] } } }>; // "a.b.c"
|
|
23
|
+
* type Example2 = DeepStrictObjectLastKeys<{ a: { b: number[]; c: { d: string }[] } }>; // "a.b" | "a.c" | "a.c[*].d"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
11
26
|
export type DeepStrictObjectLastKeys<T extends object, Joiner extends {
|
|
12
27
|
array: string;
|
|
13
28
|
object: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetStrictObjectLastKeys.d.ts","sourceRoot":"","sources":["../../../src/types/GetStrictObjectLastKeys.ts"],"names":[],"mappings":"AAAA,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,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,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC1B,OAAO,SAAS,MAAM,GACpB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACjE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,SAAS,MAAM,GAAG,MAAM,OAAO,GAAG,KAAK,EAAE,GAC9E,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"GetStrictObjectLastKeys.d.ts","sourceRoot":"","sources":["../../../src/types/GetStrictObjectLastKeys.ts"],"names":[],"mappings":"AAAA,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,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC1B,OAAO,SAAS,MAAM,GACpB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GACjE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,SAAS,MAAM,GAAG,MAAM,OAAO,GAAG,KAAK,EAAE,GAC9E,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -13,12 +13,22 @@ type Allow<A, B> = A extends B ? A : never;
|
|
|
13
13
|
type ToObject<T> = Allow<T, object>;
|
|
14
14
|
/**
|
|
15
15
|
* @title The type that pulls out the type of a particular key on an interface.
|
|
16
|
-
* @template {T}
|
|
17
|
-
* @template {K}
|
|
18
16
|
*
|
|
17
|
+
* This type extracts the type of a specific key from a nested object,
|
|
18
|
+
* supporting arrays and deeply nested keys. It uses `DeepStrictObjectKeys`
|
|
19
|
+
* to handle the extraction of keys and correctly resolves the type for the given key.
|
|
20
|
+
*
|
|
21
|
+
* - If the key points to a primitive value, the type is returned directly.
|
|
22
|
+
* - If the key points to an array, the type of the array elements is resolved.
|
|
23
|
+
* - It supports nested keys using `.` notation to handle deep objects and arrays.
|
|
24
|
+
*
|
|
25
|
+
* @template T The interface type.
|
|
26
|
+
* @template K The key string, which can represent a nested key path.
|
|
27
|
+
*
|
|
28
|
+
* Example usage:
|
|
19
29
|
* ```ts
|
|
20
30
|
* type Example1 = GetType<{ a: { b: { c: number } } }, "a.b">; // { c: number }
|
|
21
|
-
* type
|
|
31
|
+
* type Example2 = GetType<{ a: { b: { c: number } } }, "a.b.c">; // number
|
|
22
32
|
* ```
|
|
23
33
|
*/
|
|
24
34
|
export type GetType<T extends object, K extends DeepStrictObjectKeys<T>> = StringType.Split<K, '.'> extends [infer First extends keyof T] ? ValueOf<ToObject<Pick<T, First>>> : StringType.Split<K, '.'> extends [infer First extends string, ...infer Rest extends string[]] ? RemoveArraySymbol<First> extends keyof T ? ValueOf<ToObject<Pick<T, RemoveArraySymbol<First>>>> extends object ? ValueOf<ToObject<Pick<T, RemoveArraySymbol<First>>>> extends Array<infer E> ? E extends object ? GetType<E, Allow<ArrayType.Join<Rest, '.'>, DeepStrictObjectKeys<E>>> : E : GetType<ValueOf<ToObject<Pick<T, RemoveArraySymbol<First>>>>, Allow<ArrayType.Join<Rest, '.'>, DeepStrictObjectKeys<ValueOf<ToObject<Pick<T, RemoveArraySymbol<First>>>>>>> : never : T extends any[] ? RemoveArraySymbol<First> extends '' ? GetType<ElementOf<T>, Allow<ArrayType.Join<Rest, '.'>, DeepStrictObjectKeys<ElementOf<T>>>> : never : never : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetType.d.ts","sourceRoot":"","sources":["../../../src/types/GetType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3C,KAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpC
|
|
1
|
+
{"version":3,"file":"GetType.d.ts","sourceRoot":"","sources":["../../../src/types/GetType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3C,KAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IACrE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,MAAM,CAAC,CAAC,GAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GACjC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,GAC3F,iBAAiB,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,GACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACzE,CAAC,SAAS,MAAM,GACd,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrE,CAAC,GACH,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACpD,KAAK,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EACzB,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3E,CACF,GACH,KAAK,GACP,CAAC,SAAS,GAAG,EAAE,GACb,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,GACjC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3F,KAAK,GACP,KAAK,GACT,KAAK,CAAC"}
|
package/bin/src/types/IsAny.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @title
|
|
2
|
+
* @title Type for checking if a type is `any`.
|
|
3
|
+
*
|
|
4
|
+
* This type uses a conditional check to determine if the provided type `T` is `any`.
|
|
5
|
+
* - It works by checking if the type `T` extends from a condition that results in `true` when `T` is `any`, and `false` otherwise.
|
|
6
|
+
* - If `T` is `any`, it resolves to `true`, otherwise it resolves to `false`.
|
|
7
|
+
*
|
|
8
|
+
* Example usage:
|
|
9
|
+
* ```ts
|
|
10
|
+
* type Test1 = IsAny<any>; // true
|
|
11
|
+
* type Test2 = IsAny<string>; // false
|
|
12
|
+
* ```
|
|
3
13
|
*/
|
|
4
14
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
5
15
|
//# sourceMappingURL=IsAny.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsAny.d.ts","sourceRoot":"","sources":["../../../src/types/IsAny.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IsAny.d.ts","sourceRoot":"","sources":["../../../src/types/IsAny.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC"}
|
|
@@ -4,7 +4,17 @@ import type { Equal } from './Equal';
|
|
|
4
4
|
*/
|
|
5
5
|
type IsPartitionSameEntire<T, P = T> = T extends any ? P extends T ? false : true : never;
|
|
6
6
|
/**
|
|
7
|
-
* @title
|
|
7
|
+
* @title Type for checking if a type is a union type.
|
|
8
|
+
*
|
|
9
|
+
* This type uses the `IsPartitionSameEntire` type to check whether the provided type `T` is a union type.
|
|
10
|
+
* - It works by partitioning the type `T` and checking if the type consists of multiple distinct elements.
|
|
11
|
+
* - If the type `T` is a union type, the result will be `true`, otherwise `false`.
|
|
12
|
+
*
|
|
13
|
+
* Example usage:
|
|
14
|
+
* ```ts
|
|
15
|
+
* type Test1 = IsUnion<string | number>; // true
|
|
16
|
+
* type Test2 = IsUnion<string>; // false
|
|
17
|
+
* ```
|
|
8
18
|
*/
|
|
9
19
|
export type IsUnion<T> = Equal<IsPartitionSameEntire<T>, boolean> extends true ? true : false;
|
|
10
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsUnion.d.ts","sourceRoot":"","sources":["../../../src/types/IsUnion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,KAAK,qBAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,GAChD,CAAC,SAAS,CAAC,GACT,KAAK,GACL,IAAI,GACN,KAAK,CAAC;AAEV
|
|
1
|
+
{"version":3,"file":"IsUnion.d.ts","sourceRoot":"","sources":["../../../src/types/IsUnion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,KAAK,qBAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,GAChD,CAAC,SAAS,CAAC,GACT,KAAK,GACL,IAAI,GACN,KAAK,CAAC;AAEV;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC"}
|