@kakasoo/deep-strict-types 1.0.1 → 1.0.3

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.
Files changed (46) hide show
  1. package/README.md +6 -0
  2. package/package.json +30 -28
  3. package/bin/src/index.d.ts +0 -11
  4. package/bin/src/index.d.ts.map +0 -1
  5. package/bin/src/index.js +0 -27
  6. package/bin/src/index.js.map +0 -1
  7. package/bin/src/types/DeepDateToString.d.ts +0 -4
  8. package/bin/src/types/DeepDateToString.d.ts.map +0 -1
  9. package/bin/src/types/DeepDateToString.js +0 -3
  10. package/bin/src/types/DeepDateToString.js.map +0 -1
  11. package/bin/src/types/DeepStrictObjectKeys.d.ts +0 -18
  12. package/bin/src/types/DeepStrictObjectKeys.d.ts.map +0 -1
  13. package/bin/src/types/DeepStrictObjectKeys.js +0 -3
  14. package/bin/src/types/DeepStrictObjectKeys.js.map +0 -1
  15. package/bin/src/types/DeepStrictOmit.d.ts +0 -20
  16. package/bin/src/types/DeepStrictOmit.d.ts.map +0 -1
  17. package/bin/src/types/DeepStrictOmit.js +0 -3
  18. package/bin/src/types/DeepStrictOmit.js.map +0 -1
  19. package/bin/src/types/DeepStrictPick.d.ts +0 -19
  20. package/bin/src/types/DeepStrictPick.d.ts.map +0 -1
  21. package/bin/src/types/DeepStrictPick.js +0 -3
  22. package/bin/src/types/DeepStrictPick.js.map +0 -1
  23. package/bin/src/types/DeepStrictUnbrand.d.ts +0 -7
  24. package/bin/src/types/DeepStrictUnbrand.d.ts.map +0 -1
  25. package/bin/src/types/DeepStrictUnbrand.js +0 -3
  26. package/bin/src/types/DeepStrictUnbrand.js.map +0 -1
  27. package/bin/src/types/ElementOf.d.ts +0 -5
  28. package/bin/src/types/ElementOf.d.ts.map +0 -1
  29. package/bin/src/types/ElementOf.js +0 -3
  30. package/bin/src/types/ElementOf.js.map +0 -1
  31. package/bin/src/types/Equal.d.ts +0 -10
  32. package/bin/src/types/Equal.d.ts.map +0 -1
  33. package/bin/src/types/Equal.js +0 -3
  34. package/bin/src/types/Equal.js.map +0 -1
  35. package/bin/src/types/GetMember.d.ts +0 -14
  36. package/bin/src/types/GetMember.d.ts.map +0 -1
  37. package/bin/src/types/GetMember.js +0 -3
  38. package/bin/src/types/GetMember.js.map +0 -1
  39. package/bin/src/types/IsAny.d.ts +0 -5
  40. package/bin/src/types/IsAny.d.ts.map +0 -1
  41. package/bin/src/types/IsAny.js +0 -3
  42. package/bin/src/types/IsAny.js.map +0 -1
  43. package/bin/src/types/IsUnion.d.ts +0 -11
  44. package/bin/src/types/IsUnion.d.ts.map +0 -1
  45. package/bin/src/types/IsUnion.js +0 -3
  46. package/bin/src/types/IsUnion.js.map +0 -1
package/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ # How To Use
2
+
3
+ ```bash
4
+ npm i @kakasoo/deep-strict-types
5
+ ```
6
+
1
7
  # DeepStrictTypes
2
8
 
3
9
  **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.
package/package.json CHANGED
@@ -1,30 +1,32 @@
1
1
  {
2
- "name": "@kakasoo/deep-strict-types",
3
- "version": "1.0.1",
4
- "description": "",
5
- "private": false,
6
- "publishConfig": {
7
- "access": "public"
8
- },
9
- "files": [
10
- "./bin/src"
11
- ],
12
- "main": "bin/src/index.js",
13
- "types": "bin/src/index.d.ts",
14
- "scripts": {
15
- "build": "rimraf dist && tsc",
16
- "build:test": "rimraf bin && tsc -p test/tsconfig.json --watch",
17
- "prepare": "ts-patch install && typia patch",
18
- "test": "node bin/test/index.js"
19
- },
20
- "keywords": [],
21
- "author": "",
22
- "license": "ISC",
23
- "devDependencies": {
24
- "@types/node": "^22.5.0",
25
- "rimraf": "^6.0.1",
26
- "ts-patch": "^3.2.1",
27
- "typescript": "^5.5.2",
28
- "typia": "^6.9.0"
29
- }
2
+ "name": "@kakasoo/deep-strict-types",
3
+ "version": "1.0.3",
4
+ "description": "",
5
+ "private": false,
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "files": [
10
+ "./bin/src"
11
+ ],
12
+ "main": "bin/src/index.js",
13
+ "types": "bin/src/index.d.ts",
14
+ "scripts": {
15
+ "build": "rimraf dist && tsc",
16
+ "build:test": "rimraf bin && tsc -p test/tsconfig.json --watch",
17
+ "prepare": "ts-patch install && typia patch",
18
+ "test": "node bin/test/index.js",
19
+ "prettier": "prettier src --write && prettier test --write"
20
+ },
21
+ "keywords": [],
22
+ "author": "",
23
+ "license": "ISC",
24
+ "devDependencies": {
25
+ "@types/node": "^22.10.2",
26
+ "prettier": "^3.4.2",
27
+ "rimraf": "^6.0.1",
28
+ "ts-patch": "^3.3.0",
29
+ "typescript": "^5.7.2",
30
+ "typia": "^7.5.1"
31
+ }
30
32
  }
@@ -1,11 +0,0 @@
1
- export * from "./types/DeepDateToString";
2
- export * from "./types/DeepStrictObjectKeys";
3
- export * from "./types/DeepStrictOmit";
4
- export * from "./types/DeepStrictPick";
5
- export * from "./types/DeepStrictUnbrand";
6
- export * from "./types/ElementOf";
7
- export * from "./types/Equal";
8
- export * from "./types/GetMember";
9
- export * from "./types/IsAny";
10
- export * from "./types/IsUnion";
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,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,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
package/bin/src/index.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types/DeepDateToString"), exports);
18
- __exportStar(require("./types/DeepStrictObjectKeys"), exports);
19
- __exportStar(require("./types/DeepStrictOmit"), exports);
20
- __exportStar(require("./types/DeepStrictPick"), exports);
21
- __exportStar(require("./types/DeepStrictUnbrand"), exports);
22
- __exportStar(require("./types/ElementOf"), exports);
23
- __exportStar(require("./types/Equal"), exports);
24
- __exportStar(require("./types/GetMember"), exports);
25
- __exportStar(require("./types/IsAny"), exports);
26
- __exportStar(require("./types/IsUnion"), exports);
27
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,+DAA6C;AAC7C,yDAAuC;AACvC,yDAAuC;AACvC,4DAA0C;AAC1C,oDAAkC;AAClC,gDAA8B;AAC9B,oDAAkC;AAClC,gDAA8B;AAC9B,kDAAgC"}
@@ -1,4 +0,0 @@
1
- export type DeepDateToString<T> = T extends Array<infer I extends object> ? Array<DeepDateToString<I>> : T extends Date ? string : {
2
- [K in keyof T]: T[K] extends infer I ? I extends Date ? string : I extends object ? DeepDateToString<I> : I : never;
3
- };
4
- //# sourceMappingURL=DeepDateToString.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepDateToString.d.ts","sourceRoot":"","sources":["../../../src/types/DeepDateToString.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACnE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,IAAI,GACd,MAAM,GACN;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAC9B,CAAC,SAAS,IAAI,GACV,MAAM,GACN,CAAC,SAAS,MAAM,GAChB,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,GACL,KAAK;CACd,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DeepDateToString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepDateToString.js","sourceRoot":"","sources":["../../../src/types/DeepDateToString.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import type { IsAny } from "./IsAny";
2
- import type { IsUnion } from "./IsUnion";
3
- type __ValueType = number | boolean | string | null | undefined | symbol | bigint | Date;
4
- type __DeepStrictObjectKeys<T extends object, 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}[*].${__DeepStrictObjectKeys<Element>}` : 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}.${__DeepStrictObjectKeys<T[P]>}` : never : never;
5
- /**
6
- * @title 중첩된 객체 혹은 배열의 모든 키를 표기하는 타입.
7
- *
8
- * 중첩된 객체의 모든 키를 뽑는 타입으로, 만약 중첩된 객체가 있을 경우 점 기호를 기준으로 객체를 표현한다.
9
- * 배열인 경우에는 `[*]` 기호를 이용하여 표기한다.
10
- *
11
- * ```ts
12
- * type Example1 = DeepStrictObjectKeys<{ a: { b: 1; c: 2 } }>; // "a" | "a.b" | "a.c"
13
- * type Example2 = DeepStrictObjectKeys<{ a: { b: 1; c: { d: number }[] } }>; // "a" | "a.b" | "a.c" | "a.c[*].d"
14
- * ```
15
- */
16
- export type DeepStrictObjectKeys<T extends object, P extends keyof T = keyof T> = T extends Array<infer Element> ? Element extends object ? `[*].${DeepStrictObjectKeys<Element>}` : `[*].${keyof Element extends string ? keyof Element : never}` : __DeepStrictObjectKeys<T, P>;
17
- export {};
18
- //# sourceMappingURL=DeepStrictObjectKeys.d.ts.map
@@ -1 +0,0 @@
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;AAEzC,KAAK,WAAW,GACV,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AAEX,KAAK,sBAAsB,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAC3B,CAAC,SAAS,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAChD,CAAC,GAAG,GAAG,CAAC,OAAO,sBAAsB,CAAC,OAAO,CAAC,EAAE,GAChD,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,GACxB,CAAC,GACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACnB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAC9B,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAClC,GAAG,CAAC,EAAE,GACN,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GACnD,KAAK,GACT,KAAK,CAAC;AAEZ;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,CAC5B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAC3B,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GAC5B,OAAO,SAAS,MAAM,GAClB,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAAE,GACtC,OAAO,MAAM,OAAO,SAAS,MAAM,GAAG,MAAM,OAAO,GAAG,KAAK,EAAE,GACjE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DeepStrictObjectKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepStrictObjectKeys.js","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":""}
@@ -1,20 +0,0 @@
1
- import type { DeepStrictObjectKeys } from "./DeepStrictObjectKeys";
2
- import type { DeepStrictUnbrand } from "./DeepStrictUnbrand";
3
- import type { GetElementMember } from "./GetMember";
4
- type __DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<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> : Array<__DeepStrictOmit<Element, GetElementMember<K, key> extends DeepStrictObjectKeys<Element> ? GetElementMember<K, key> : never>> : never : T[key] extends Array<infer Element> ? Array<Element> : T[key] extends object ? key extends string ? T[key] extends Date ? T[key] : __DeepStrictOmit<T[key], GetElementMember<K, key> extends DeepStrictObjectKeys<T[key]> ? GetElementMember<K, key> : never> : never : T[key];
6
- };
7
- 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<T, K>;
8
- /**
9
- * @title 인터페이스에서 특정 키를 제거하는 타입.
10
- * {@link DeepStrictObjectKeys} 을 이용해서 제거할 키를 고를 수 있다.
11
- *
12
- * ```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">;
16
- * ```
17
- */
18
- export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<DeepStrictUnbrand<T>>> = _DeepStrictOmit<DeepStrictUnbrand<T>, K>;
19
- export {};
20
- //# sourceMappingURL=DeepStrictOmit.d.ts.map
@@ -1 +0,0 @@
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,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI;KACxE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CACjE,MAAM,OAAO,SAAS,MAAM,CAC/B,GACK,GAAG,SAAS,MAAM,GACd,OAAO,SAAS,IAAI,GAChB,KAAK,CAAC,OAAO,CAAC,GACd,KAAK,CACD,gBAAgB,CACZ,OAAO,EACP,gBAAgB,CACZ,CAAC,EACD,GAAG,CACN,SAAS,oBAAoB,CAAC,OAAO,CAAC,GACjC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,GACxB,KAAK,CACd,CACJ,GACL,KAAK,GACT,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GACnC,KAAK,CAAC,OAAO,CAAC,GACd,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,GACrB,GAAG,SAAS,MAAM,GACd,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GACf,CAAC,CAAC,GAAG,CAAC,GACN,gBAAgB,CACZ,CAAC,CAAC,GAAG,CAAC,EACN,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,oBAAoB,CACjD,CAAC,CAAC,GAAG,CAAC,CACT,GACK,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,GACxB,KAAK,CACd,GACL,KAAK,GACT,CAAC,CAAC,GAAG,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IACjC,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC3C,KAAK,CACD,eAAe,CACX,OAAO,EACP,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,oBAAoB,CAAC,OAAO,CAAC,GACvD,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GACvB,KAAK,CACd,CACJ,GACD,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IACpD,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DeepStrictOmit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepStrictOmit.js","sourceRoot":"","sources":["../../../src/types/DeepStrictOmit.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- import type { DeepStrictObjectKeys } from "./DeepStrictObjectKeys";
2
- import type { DeepStrictOmit } from "./DeepStrictOmit";
3
- import type { DeepStrictUnbrand } from "./DeepStrictUnbrand";
4
- import type { ElementOf } from "./ElementOf";
5
- type RemoveLastProperty<S extends string> = S extends `${infer First}.${infer Last}` ? First extends `${infer ObjectPart}[*]` ? ObjectPart | `${First}.${RemoveLastProperty<Last>}` : `${First}` | `${First}.${RemoveLastProperty<Last>}` : never;
6
- type RemoveAfterDot<T extends object, K extends string> = K extends `${infer First}.${infer Last}` ? First extends keyof T ? T[First] extends Array<any> ? `${First}[*].${string}` : T[First] extends object ? `${First}.${RemoveAfterDot<T[First], Last>}` : never : First extends "[*]" ? T extends Array<any> ? RemoveAfterDot<ElementOf<T>, Last> : never : First extends `${infer Second extends string}[*]` ? Second extends keyof T ? T[Second] extends object ? RemoveAfterDot<T[Second], Last> : never : never : never : K extends keyof T ? T[K] extends Array<any> ? `${K}[*].${string}` : `${K}.${string}` : never;
7
- /**
8
- * @title 인터페이스에서 특정 키만을 뽑는 타입.
9
- * {@link DeepStrictObjectKeys} 을 이용해서 뽑을 키를 고를 수 있다.
10
- *
11
- * ```ts
12
- * type Example1 = DeepStrictPick<{ a: { b: 1; c: 2 } }, "a.b">;
13
- * type Example2 = DeepStrictPick<{ a: { b: 1; c: { d: number }[] } }, "a.c[*].d">;
14
- * type Example3 = DeepStrictPick<{ a: 1 }[], "[*].a">;
15
- * ```
16
- */
17
- export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = DeepStrictOmit<T, Exclude<DeepStrictObjectKeys<DeepStrictUnbrand<T>>, K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K>>>;
18
- export {};
19
- //# sourceMappingURL=DeepStrictPick.d.ts.map
@@ -1 +0,0 @@
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,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IACpC,CAAC,SAAS,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GAClC,KAAK,SAAS,GAAG,MAAM,UAAU,KAAK,GAClC,UAAU,GAAG,GAAG,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,GACnD,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,GACvD,KAAK,CAAC;AAEhB,KAAK,cAAc,CACf,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,IAChB,CAAC,SAAS,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GACtC,KAAK,SAAS,MAAM,CAAC,GACjB,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GACvB,GAAG,KAAK,OAAO,MAAM,EAAE,GACvB,CAAC,CAAC,KAAK,CAAC,SAAS,MAAM,GACvB,GAAG,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,GAC5C,KAAK,GACT,KAAK,SAAS,KAAK,GACnB,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAChB,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAClC,KAAK,GACT,KAAK,SAAS,GAAG,MAAM,MAAM,SAAS,MAAM,KAAK,GACjD,MAAM,SAAS,MAAM,CAAC,GAClB,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GACpB,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAC/B,KAAK,GACT,KAAK,GACT,KAAK,GACT,CAAC,SAAS,MAAM,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GACnB,GAAG,CAAC,OAAO,MAAM,EAAE,GACnB,GAAG,CAAC,IAAI,MAAM,EAAE,GACpB,KAAK,CAAC;AAEZ;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IACjC,cAAc,CACd,CAAC,EACD,OAAO,CACH,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACtE,CACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DeepStrictPick.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepStrictPick.js","sourceRoot":"","sources":["../../../src/types/DeepStrictPick.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
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;
3
- 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
- [K in keyof T]: T[K] extends object ? DeepStrictUnbrand<T[K]> : T[K];
5
- };
6
- export {};
7
- //# sourceMappingURL=DeepStrictUnbrand.d.ts.map
@@ -1 +0,0 @@
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,GACnE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACd,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACnC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC9B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACnC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC7B,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACjC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAC3B,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACtC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAChC,CAAC,CAAC;AAER,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,GAClD,KAAK,CAAC,IAAI,CAAC,GACX,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACvC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC3B,CAAC,SAAS,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,SAAS,IAAI,GACd,CAAC,GACD;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvE,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DeepStrictUnbrand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeepStrictUnbrand.js","sourceRoot":"","sources":["../../../src/types/DeepStrictUnbrand.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- /**
2
- * @title 배열의 요소 타입을 추론하는 타입.
3
- */
4
- export type ElementOf<T extends Array<any>> = T extends Array<infer Element> ? Element : never;
5
- //# sourceMappingURL=ElementOf.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ElementOf.d.ts","sourceRoot":"","sources":["../../../src/types/ElementOf.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GACtE,OAAO,GACP,KAAK,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ElementOf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ElementOf.js","sourceRoot":"","sources":["../../../src/types/ElementOf.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- /**
2
- * 구현 방법
3
- */
4
- type Expression<X> = <T>() => T extends X ? 1 : 2;
5
- /**
6
- * @title 두 타입이 동일한 타입인지 확인하기 위한 타입
7
- */
8
- export type Equal<X, Y> = Expression<X> extends Expression<Y> ? true : false;
9
- export {};
10
- //# sourceMappingURL=Equal.d.ts.map
@@ -1 +0,0 @@
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;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=Equal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Equal.js","sourceRoot":"","sources":["../../../src/types/Equal.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- /**
2
- * @title 어떤 키로부터 멤버만을 조회하는 타입.
3
- *
4
- * ```ts
5
- * type b = GetMember<"a.b", "a">;
6
- * type b_c = GetMember<"a.b.c", "a">;
7
- * ```
8
- */
9
- export type GetMember<T extends string, O extends string> = T extends `${O}.${infer Rest}` ? Rest : never;
10
- /**
11
- * @title 어떤 키로부터 요소 멤버의 키를 조회하는 타입.
12
- */
13
- export type GetElementMember<T extends string, First extends string> = T extends `${First}[*].${infer Rest}` ? Rest : GetMember<T, First>;
14
- //# sourceMappingURL=GetMember.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GetMember.d.ts","sourceRoot":"","sources":["../../../src/types/GetMember.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CACjB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,IAChB,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,CACxB,CAAC,SAAS,MAAM,EAChB,KAAK,SAAS,MAAM,IACpB,CAAC,SAAS,GAAG,KAAK,OAAO,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=GetMember.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GetMember.js","sourceRoot":"","sources":["../../../src/types/GetMember.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- /**
2
- * @title `any` 타입을 검증하는 타입.
3
- */
4
- export type IsAny<T> = 0 extends 1 & T ? true : false;
5
- //# sourceMappingURL=IsAny.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IsAny.d.ts","sourceRoot":"","sources":["../../../src/types/IsAny.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IsAny.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IsAny.js","sourceRoot":"","sources":["../../../src/types/IsAny.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import type { Equal } from "./Equal";
2
- /**
3
- * 제네릭 타입 `T`가 자기 자신의 요소와 동일한지를 검증한다.
4
- */
5
- type IsPartitionSameEntire<T, P = T> = T extends any ? P extends T ? false : true : never;
6
- /**
7
- * @title 유니온 타입을 검증하는 타입.
8
- */
9
- export type IsUnion<T> = Equal<IsPartitionSameEntire<T>, boolean> extends true ? true : false;
10
- export {};
11
- //# sourceMappingURL=IsUnion.d.ts.map
@@ -1 +0,0 @@
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,GAC9C,CAAC,SAAS,CAAC,GACP,KAAK,GACL,IAAI,GACR,KAAK,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,GACxE,IAAI,GACJ,KAAK,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IsUnion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IsUnion.js","sourceRoot":"","sources":["../../../src/types/IsUnion.ts"],"names":[],"mappings":""}