@sinclair/typebox 0.32.0-dev-25 → 0.32.0-dev-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.
Files changed (206) hide show
  1. package/build/import/errors/errors.mjs +2 -2
  2. package/build/import/errors/function.d.mts +13 -3
  3. package/build/import/errors/function.mjs +39 -39
  4. package/build/import/index.d.mts +2 -2
  5. package/build/import/type/awaited/awaited.mjs +2 -6
  6. package/build/import/type/composite/composite.d.mts +1 -2
  7. package/build/import/type/composite/composite.mjs +2 -2
  8. package/build/import/type/const/const.mjs +6 -6
  9. package/build/import/type/constructor/constructor.d.mts +1 -1
  10. package/build/import/type/constructor/constructor.mjs +1 -1
  11. package/build/import/type/deref/deref.mjs +1 -2
  12. package/build/import/type/discard/discard.mjs +2 -2
  13. package/build/import/type/enum/enum.mjs +3 -0
  14. package/build/import/type/exclude/exclude-from-mapped-result.d.mts +5 -5
  15. package/build/import/type/exclude/exclude-from-mapped-result.mjs +7 -7
  16. package/build/import/type/exclude/exclude.mjs +0 -1
  17. package/build/import/type/extends/extends-from-mapped-key.d.mts +1 -1
  18. package/build/import/type/extends/extends-from-mapped-key.mjs +4 -5
  19. package/build/import/type/extends/extends-from-mapped-result.d.mts +5 -5
  20. package/build/import/type/extends/extends-from-mapped-result.mjs +7 -7
  21. package/build/import/type/extends/extends.mjs +0 -1
  22. package/build/import/type/extract/extract-from-mapped-result.d.mts +5 -5
  23. package/build/import/type/extract/extract-from-mapped-result.mjs +7 -7
  24. package/build/import/type/extract/extract.d.mts +1 -2
  25. package/build/import/type/extract/extract.mjs +4 -2
  26. package/build/import/type/index.d.mts +1 -1
  27. package/build/import/type/index.mjs +1 -1
  28. package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
  29. package/build/import/type/indexed/indexed-from-mapped-key.mjs +4 -5
  30. package/build/import/type/indexed/indexed-from-mapped-result.d.mts +2 -2
  31. package/build/import/type/indexed/indexed-from-mapped-result.mjs +1 -1
  32. package/build/import/type/indexed/indexed-property-keys.d.mts +6 -6
  33. package/build/import/type/indexed/indexed-property-keys.mjs +3 -5
  34. package/build/import/type/indexed/indexed.d.mts +1 -1
  35. package/build/import/type/indexed/indexed.mjs +9 -27
  36. package/build/import/type/intersect/intersect-evaluated.mjs +3 -13
  37. package/build/import/type/intrinsic/capitalize.d.mts +2 -2
  38. package/build/import/type/intrinsic/intrinsic-from-mapped-key.d.mts +1 -1
  39. package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -5
  40. package/build/import/type/intrinsic/intrinsic.d.mts +2 -3
  41. package/build/import/type/intrinsic/intrinsic.mjs +2 -5
  42. package/build/import/type/intrinsic/lowercase.d.mts +2 -2
  43. package/build/import/type/intrinsic/uncapitalize.d.mts +2 -2
  44. package/build/import/type/intrinsic/uppercase.d.mts +2 -2
  45. package/build/import/type/iterator/iterator.mjs +1 -1
  46. package/build/import/type/keyof/keyof-from-mapped-result.d.mts +3 -3
  47. package/build/import/type/keyof/keyof-from-mapped-result.mjs +4 -4
  48. package/build/import/type/keyof/keyof-property-keys.d.mts +3 -3
  49. package/build/import/type/keyof/keyof-property-keys.mjs +9 -15
  50. package/build/import/type/keyof/keyof.mjs +2 -8
  51. package/build/import/type/mapped/mapped.d.mts +6 -1
  52. package/build/import/type/mapped/mapped.mjs +21 -14
  53. package/build/import/type/not/not.mjs +1 -1
  54. package/build/import/type/object/object.d.mts +1 -1
  55. package/build/import/type/object/object.mjs +0 -1
  56. package/build/import/type/omit/index.d.mts +1 -0
  57. package/build/import/type/omit/index.mjs +1 -0
  58. package/build/import/type/omit/omit-from-mapped-key.mjs +4 -5
  59. package/build/import/type/omit/omit-from-mapped-result.d.mts +11 -0
  60. package/build/import/type/omit/omit-from-mapped-result.mjs +17 -0
  61. package/build/import/type/omit/omit.d.mts +6 -3
  62. package/build/import/type/omit/omit.mjs +11 -9
  63. package/build/import/type/optional/optional-from-mapped-result.d.mts +5 -5
  64. package/build/import/type/optional/optional-from-mapped-result.mjs +7 -7
  65. package/build/import/type/partial/partial-from-mapped-result.d.mts +5 -5
  66. package/build/import/type/partial/partial-from-mapped-result.mjs +4 -4
  67. package/build/import/type/partial/partial.d.mts +2 -3
  68. package/build/import/type/partial/partial.mjs +8 -21
  69. package/build/import/type/pick/index.d.mts +1 -0
  70. package/build/import/type/pick/index.mjs +1 -0
  71. package/build/import/type/pick/pick-from-mapped-key.mjs +4 -5
  72. package/build/import/type/pick/pick-from-mapped-result.d.mts +11 -0
  73. package/build/import/type/pick/pick-from-mapped-result.mjs +17 -0
  74. package/build/import/type/pick/pick.d.mts +5 -2
  75. package/build/import/type/pick/pick.mjs +11 -10
  76. package/build/import/type/promise/promise.mjs +1 -1
  77. package/build/import/type/readonly/readonly-from-mapped-result.d.mts +5 -5
  78. package/build/import/type/readonly/readonly-from-mapped-result.mjs +4 -4
  79. package/build/import/type/record/record.d.mts +2 -2
  80. package/build/import/type/record/record.mjs +3 -0
  81. package/build/import/type/ref/ref.mjs +1 -1
  82. package/build/import/type/required/required-from-mapped-result.d.mts +5 -5
  83. package/build/import/type/required/required-from-mapped-result.mjs +7 -7
  84. package/build/import/type/required/required.d.mts +2 -3
  85. package/build/import/type/required/required.mjs +4 -14
  86. package/build/import/type/rest/rest.d.mts +2 -2
  87. package/build/import/type/rest/rest.mjs +1 -2
  88. package/build/import/type/sets/index.d.mts +1 -0
  89. package/build/import/type/sets/index.mjs +1 -0
  90. package/build/import/type/sets/set.d.mts +24 -0
  91. package/build/import/type/sets/set.mjs +35 -0
  92. package/build/import/type/strict/strict.d.mts +1 -1
  93. package/build/import/type/strict/strict.mjs +1 -1
  94. package/build/import/type/template-literal/syntax.d.mts +1 -1
  95. package/build/import/type/template-literal/template-literal.d.mts +1 -1
  96. package/build/import/type/transform/transform.mjs +1 -1
  97. package/build/import/type/type/json.d.mts +6 -2
  98. package/build/import/type/union/union-evaluated.mjs +3 -14
  99. package/build/require/errors/errors.js +2 -2
  100. package/build/require/errors/function.d.ts +13 -3
  101. package/build/require/errors/function.js +39 -39
  102. package/build/require/index.d.ts +2 -2
  103. package/build/require/type/awaited/awaited.js +2 -6
  104. package/build/require/type/composite/composite.d.ts +1 -2
  105. package/build/require/type/composite/composite.js +5 -6
  106. package/build/require/type/const/const.js +6 -6
  107. package/build/require/type/constructor/constructor.d.ts +1 -1
  108. package/build/require/type/constructor/constructor.js +1 -1
  109. package/build/require/type/deref/deref.js +0 -1
  110. package/build/require/type/discard/discard.js +2 -2
  111. package/build/require/type/enum/enum.js +3 -0
  112. package/build/require/type/exclude/exclude-from-mapped-result.d.ts +5 -5
  113. package/build/require/type/exclude/exclude-from-mapped-result.js +7 -7
  114. package/build/require/type/exclude/exclude.js +0 -1
  115. package/build/require/type/extends/extends-from-mapped-key.d.ts +1 -1
  116. package/build/require/type/extends/extends-from-mapped-key.js +4 -5
  117. package/build/require/type/extends/extends-from-mapped-result.d.ts +5 -5
  118. package/build/require/type/extends/extends-from-mapped-result.js +7 -7
  119. package/build/require/type/extends/extends.js +0 -1
  120. package/build/require/type/extract/extract-from-mapped-result.d.ts +5 -5
  121. package/build/require/type/extract/extract-from-mapped-result.js +7 -7
  122. package/build/require/type/extract/extract.d.ts +1 -2
  123. package/build/require/type/extract/extract.js +4 -3
  124. package/build/require/type/index.d.ts +1 -1
  125. package/build/require/type/index.js +1 -1
  126. package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
  127. package/build/require/type/indexed/indexed-from-mapped-key.js +4 -5
  128. package/build/require/type/indexed/indexed-from-mapped-result.d.ts +2 -2
  129. package/build/require/type/indexed/indexed-from-mapped-result.js +1 -1
  130. package/build/require/type/indexed/indexed-property-keys.d.ts +6 -6
  131. package/build/require/type/indexed/indexed-property-keys.js +3 -5
  132. package/build/require/type/indexed/indexed.d.ts +1 -1
  133. package/build/require/type/indexed/indexed.js +9 -27
  134. package/build/require/type/intersect/intersect-evaluated.js +3 -13
  135. package/build/require/type/intrinsic/capitalize.d.ts +2 -2
  136. package/build/require/type/intrinsic/intrinsic-from-mapped-key.d.ts +1 -1
  137. package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +4 -5
  138. package/build/require/type/intrinsic/intrinsic.d.ts +2 -3
  139. package/build/require/type/intrinsic/intrinsic.js +2 -5
  140. package/build/require/type/intrinsic/lowercase.d.ts +2 -2
  141. package/build/require/type/intrinsic/uncapitalize.d.ts +2 -2
  142. package/build/require/type/intrinsic/uppercase.d.ts +2 -2
  143. package/build/require/type/iterator/iterator.js +1 -1
  144. package/build/require/type/keyof/keyof-from-mapped-result.d.ts +3 -3
  145. package/build/require/type/keyof/keyof-from-mapped-result.js +4 -4
  146. package/build/require/type/keyof/keyof-property-keys.d.ts +3 -3
  147. package/build/require/type/keyof/keyof-property-keys.js +9 -15
  148. package/build/require/type/keyof/keyof.js +2 -8
  149. package/build/require/type/mapped/mapped.d.ts +6 -1
  150. package/build/require/type/mapped/mapped.js +21 -14
  151. package/build/require/type/not/not.js +1 -1
  152. package/build/require/type/object/object.d.ts +1 -1
  153. package/build/require/type/object/object.js +0 -1
  154. package/build/require/type/omit/index.d.ts +1 -0
  155. package/build/require/type/omit/index.js +1 -0
  156. package/build/require/type/omit/omit-from-mapped-key.js +4 -5
  157. package/build/require/type/omit/omit-from-mapped-result.d.ts +11 -0
  158. package/build/require/type/omit/omit-from-mapped-result.js +22 -0
  159. package/build/require/type/omit/omit.d.ts +6 -3
  160. package/build/require/type/omit/omit.js +10 -8
  161. package/build/require/type/optional/optional-from-mapped-result.d.ts +5 -5
  162. package/build/require/type/optional/optional-from-mapped-result.js +7 -7
  163. package/build/require/type/partial/partial-from-mapped-result.d.ts +5 -5
  164. package/build/require/type/partial/partial-from-mapped-result.js +4 -4
  165. package/build/require/type/partial/partial.d.ts +2 -3
  166. package/build/require/type/partial/partial.js +8 -21
  167. package/build/require/type/pick/index.d.ts +1 -0
  168. package/build/require/type/pick/index.js +1 -0
  169. package/build/require/type/pick/pick-from-mapped-key.js +4 -5
  170. package/build/require/type/pick/pick-from-mapped-result.d.ts +11 -0
  171. package/build/require/type/pick/pick-from-mapped-result.js +22 -0
  172. package/build/require/type/pick/pick.d.ts +5 -2
  173. package/build/require/type/pick/pick.js +10 -9
  174. package/build/require/type/promise/promise.js +1 -1
  175. package/build/require/type/readonly/readonly-from-mapped-result.d.ts +5 -5
  176. package/build/require/type/readonly/readonly-from-mapped-result.js +4 -4
  177. package/build/require/type/record/record.d.ts +2 -2
  178. package/build/require/type/record/record.js +3 -0
  179. package/build/require/type/ref/ref.js +1 -1
  180. package/build/require/type/required/required-from-mapped-result.d.ts +5 -5
  181. package/build/require/type/required/required-from-mapped-result.js +7 -7
  182. package/build/require/type/required/required.d.ts +2 -3
  183. package/build/require/type/required/required.js +4 -14
  184. package/build/require/type/rest/rest.d.ts +2 -2
  185. package/build/require/type/rest/rest.js +1 -3
  186. package/build/require/type/sets/index.d.ts +1 -0
  187. package/build/require/type/{operators → sets}/index.js +1 -1
  188. package/build/require/type/sets/set.d.ts +24 -0
  189. package/build/require/type/sets/set.js +47 -0
  190. package/build/require/type/strict/strict.d.ts +1 -1
  191. package/build/require/type/strict/strict.js +1 -1
  192. package/build/require/type/template-literal/parse.js +1 -1
  193. package/build/require/type/template-literal/syntax.d.ts +1 -1
  194. package/build/require/type/template-literal/template-literal.d.ts +1 -1
  195. package/build/require/type/transform/transform.js +1 -1
  196. package/build/require/type/type/json.d.ts +6 -2
  197. package/build/require/type/union/union-evaluated.js +3 -14
  198. package/package.json +1 -1
  199. package/readme.md +67 -67
  200. package/build/import/type/operators/index.d.mts +0 -1
  201. package/build/import/type/operators/index.mjs +0 -1
  202. package/build/import/type/operators/operators.d.mts +0 -24
  203. package/build/import/type/operators/operators.mjs +0 -77
  204. package/build/require/type/operators/index.d.ts +0 -1
  205. package/build/require/type/operators/operators.d.ts +0 -24
  206. package/build/require/type/operators/operators.js +0 -89
@@ -15,7 +15,7 @@ type OptionalPropertyKeys<T extends TProperties> = {
15
15
  }[keyof T];
16
16
  type RequiredPropertyKeys<T extends TProperties> = keyof Omit<T, ReadonlyOptionalPropertyKeys<T> | ReadonlyPropertyKeys<T> | OptionalPropertyKeys<T>>;
17
17
  type ObjectStaticProperties<T extends TProperties, R extends Record<keyof any, unknown>> = Evaluate<(Readonly<Partial<Pick<R, ReadonlyOptionalPropertyKeys<T>>>> & Readonly<Pick<R, ReadonlyPropertyKeys<T>>> & Partial<Pick<R, OptionalPropertyKeys<T>>> & Required<Pick<R, RequiredPropertyKeys<T>>>)>;
18
- export type ObjectStatic<T extends TProperties, P extends unknown[]> = ObjectStaticProperties<T, {
18
+ type ObjectStatic<T extends TProperties, P extends unknown[]> = ObjectStaticProperties<T, {
19
19
  [K in keyof T]: Static<T[K], P>;
20
20
  }>;
21
21
  export type TPropertyKey = string | number;
@@ -7,7 +7,6 @@ const index_1 = require("../symbols/index");
7
7
  // ------------------------------------------------------------------
8
8
  // TypeGuard
9
9
  // ------------------------------------------------------------------
10
- // prettier-ignore
11
10
  const type_2 = require("../guard/type");
12
11
  /** `[Json]` Creates an Object type */
13
12
  function _Object(properties, options = {}) {
@@ -1,2 +1,3 @@
1
1
  export * from './omit-from-mapped-key';
2
+ export * from './omit-from-mapped-result';
2
3
  export * from './omit';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./omit-from-mapped-key"), exports);
19
+ __exportStar(require("./omit-from-mapped-result"), exports);
19
20
  __exportStar(require("./omit"), exports);
@@ -11,11 +11,10 @@ function FromPropertyKey(T, K, options) {
11
11
  };
12
12
  }
13
13
  // prettier-ignore
14
- function FromPropertyKeys(T, K, options, Acc = {}) {
15
- const [LK, ...RK] = K;
16
- return (K.length > 0
17
- ? FromPropertyKeys(T, RK, options, { ...Acc, ...FromPropertyKey(T, LK, options) })
18
- : Acc);
14
+ function FromPropertyKeys(T, K, options) {
15
+ return K.reduce((Acc, LK) => {
16
+ return { ...Acc, ...FromPropertyKey(T, LK, options) };
17
+ }, {});
19
18
  }
20
19
  // prettier-ignore
21
20
  function FromMappedKey(T, K, options) {
@@ -0,0 +1,11 @@
1
+ import type { SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import { type TMappedResult } from '../mapped/index';
4
+ import { type TOmit } from './omit';
5
+ type TFromProperties<P extends TProperties, K extends PropertyKey[]> = ({
6
+ [K2 in keyof P]: TOmit<P[K2], K>;
7
+ });
8
+ type TFromMappedResult<R extends TMappedResult, K extends PropertyKey[]> = (TFromProperties<R['properties'], K>);
9
+ export type TOmitFromMappedResult<T extends TMappedResult, K extends PropertyKey[], P extends TProperties = TFromMappedResult<T, K>> = (TMappedResult<P>);
10
+ export declare function OmitFromMappedResult<R extends TMappedResult, K extends PropertyKey[], P extends TProperties = TFromMappedResult<R, K>>(R: R, K: [...K], options: SchemaOptions): TMappedResult<P>;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OmitFromMappedResult = void 0;
5
+ const index_1 = require("../mapped/index");
6
+ const omit_1 = require("./omit");
7
+ // prettier-ignore
8
+ function FromProperties(P, K, options) {
9
+ return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
10
+ return { ...Acc, [K2]: (0, omit_1.Omit)(P[K2], K, options) };
11
+ }, {});
12
+ }
13
+ // prettier-ignore
14
+ function FromMappedResult(R, K, options) {
15
+ return FromProperties(R.properties, K, options);
16
+ }
17
+ // prettier-ignore
18
+ function OmitFromMappedResult(R, K, options) {
19
+ const P = FromMappedResult(R, K, options);
20
+ return (0, index_1.MappedResult)(P);
21
+ }
22
+ exports.OmitFromMappedResult = OmitFromMappedResult;
@@ -1,20 +1,23 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index';
2
2
  import type { TupleToUnion, Evaluate } from '../helpers/index';
3
3
  import { type TRecursive } from '../recursive/index';
4
+ import type { TMappedKey, TMappedResult } from '../mapped/index';
4
5
  import { type TIntersect } from '../intersect/index';
5
6
  import { type TUnion } from '../union/index';
6
7
  import { type TObject, type TProperties } from '../object/index';
7
8
  import { type TIndexPropertyKeys } from '../indexed/index';
8
- import { TMappedKey } from '../mapped/index';
9
9
  import { type TOmitFromMappedKey } from './omit-from-mapped-key';
10
+ import { type TOmitFromMappedResult } from './omit-from-mapped-result';
10
11
  type TFromIntersect<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromIntersect<R, K, [...Acc, TOmitResolve<L, K>]> : Acc);
11
12
  type TFromUnion<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromUnion<R, K, [...Acc, TOmitResolve<L, K>]> : Acc);
12
13
  type TFromProperties<T extends TProperties, K extends PropertyKey[], I extends PropertyKey = TupleToUnion<K>> = Evaluate<Omit<T, I>>;
13
14
  export type TOmitResolve<T extends TProperties, K extends PropertyKey[]> = T extends TRecursive<infer S> ? TRecursive<TOmitResolve<S, K>> : T extends TIntersect<infer S> ? TIntersect<TFromIntersect<S, K>> : T extends TUnion<infer S> ? TUnion<TFromUnion<S, K>> : T extends TObject<infer S> ? TObject<TFromProperties<S, K>> : TObject<{}>;
14
15
  export declare function OmitResolve<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): TOmitResolve<T, K>;
15
16
  export type TOmit<T extends TSchema, K extends PropertyKey[]> = TOmitResolve<T, K>;
16
- /** `[Json]` Constructs a type whose keys are picked from the given type */
17
- export declare function Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K): TOmitFromMappedKey<T, K>;
17
+ /** `[Json]` Constructs a type whose keys are omitted from the given type */
18
+ export declare function Omit<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TOmitFromMappedResult<T, K>;
19
+ /** `[Json]` Constructs a type whose keys are omitted from the given type */
20
+ export declare function Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TOmitFromMappedKey<T, K>;
18
21
  /** `[Json]` Constructs a type whose keys are omitted from the given type */
19
22
  export declare function Omit<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TOmit<T, I>;
20
23
  /** `[Json]` Constructs a type whose keys are omitted from the given type */
@@ -10,6 +10,7 @@ const index_5 = require("../discard/index");
10
10
  const index_6 = require("../symbols/index");
11
11
  const type_1 = require("../clone/type");
12
12
  const omit_from_mapped_key_1 = require("./omit-from-mapped-key");
13
+ const omit_from_mapped_result_1 = require("./omit-from-mapped-result");
13
14
  // ------------------------------------------------------------------
14
15
  // TypeGuard
15
16
  // ------------------------------------------------------------------
@@ -45,14 +46,15 @@ function OmitResolve(T, K) {
45
46
  }
46
47
  exports.OmitResolve = OmitResolve;
47
48
  function Omit(T, K, options = {}) {
48
- if ((0, type_2.IsMappedKey)(K)) {
49
+ // mapped
50
+ if ((0, type_2.IsMappedKey)(K))
49
51
  return (0, omit_from_mapped_key_1.OmitFromMappedKey)(T, K, options);
50
- }
51
- else {
52
- const I = (0, type_2.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;
53
- const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
54
- const R = (0, type_1.CloneType)(OmitResolve(T, I), options);
55
- return { ...D, ...R };
56
- }
52
+ if ((0, type_2.IsMappedResult)(T))
53
+ return (0, omit_from_mapped_result_1.OmitFromMappedResult)(T, K, options);
54
+ // non-mapped
55
+ const I = (0, type_2.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;
56
+ const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
57
+ const R = (0, type_1.CloneType)(OmitResolve(T, I), options);
58
+ return { ...D, ...R };
57
59
  }
58
60
  exports.Omit = Omit;
@@ -1,10 +1,10 @@
1
1
  import type { TProperties } from '../object/index';
2
2
  import { type TMappedResult } from '../mapped/index';
3
3
  import { type TOptionalWithFlag } from './optional';
4
- type TFromProperties<K extends TProperties, F extends boolean> = ({
5
- [K2 in keyof K]: TOptionalWithFlag<K[K2], F>;
4
+ type TFromProperties<P extends TProperties, F extends boolean> = ({
5
+ [K2 in keyof P]: TOptionalWithFlag<P[K2], F>;
6
6
  });
7
- type TFromMappedResult<K extends TMappedResult, F extends boolean> = (TFromProperties<K['properties'], F>);
8
- export type TOptionalFromMappedResult<T extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<T, F>> = (TMappedResult<P>);
9
- export declare function OptionalFromMappedResult<T extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<T, F>>(T: T, F: F): TMappedResult<P>;
7
+ type TFromMappedResult<R extends TMappedResult, F extends boolean> = (TFromProperties<R['properties'], F>);
8
+ export type TOptionalFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>> = (TMappedResult<P>);
9
+ export declare function OptionalFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>>(R: R, F: F): TMappedResult<P>;
10
10
  export {};
@@ -5,18 +5,18 @@ exports.OptionalFromMappedResult = void 0;
5
5
  const index_1 = require("../mapped/index");
6
6
  const optional_1 = require("./optional");
7
7
  // prettier-ignore
8
- function FromProperties(K, F) {
9
- return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
10
- return { ...Acc, [K2]: (0, optional_1.Optional)(K[K2], F) };
8
+ function FromProperties(P, F) {
9
+ return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
10
+ return { ...Acc, [K2]: (0, optional_1.Optional)(P[K2], F) };
11
11
  }, {});
12
12
  }
13
13
  // prettier-ignore
14
- function FromMappedResult(K, F) {
15
- return FromProperties(K.properties, F);
14
+ function FromMappedResult(R, F) {
15
+ return FromProperties(R.properties, F);
16
16
  }
17
17
  // prettier-ignore
18
- function OptionalFromMappedResult(T, F) {
19
- const P = FromMappedResult(T, F);
18
+ function OptionalFromMappedResult(R, F) {
19
+ const P = FromMappedResult(R, F);
20
20
  return (0, index_1.MappedResult)(P);
21
21
  }
22
22
  exports.OptionalFromMappedResult = OptionalFromMappedResult;
@@ -2,10 +2,10 @@ import type { SchemaOptions } from '../schema/index';
2
2
  import type { TProperties } from '../object/index';
3
3
  import { type TMappedResult } from '../mapped/index';
4
4
  import { type TPartial } from './partial';
5
- type TFromProperties<K extends TProperties> = ({
6
- [K2 in keyof K]: TPartial<K[K2]>;
5
+ type TFromProperties<P extends TProperties> = ({
6
+ [K2 in keyof P]: TPartial<P[K2]>;
7
7
  });
8
- type TFromMappedResult<K extends TMappedResult> = (TFromProperties<K['properties']>);
9
- export type TPartialFromMappedResult<T extends TMappedResult, P extends TProperties = TFromMappedResult<T>> = (TMappedResult<P>);
10
- export declare function PartialFromMappedResult<T extends TMappedResult, P extends TProperties = TFromMappedResult<T>>(T: T, options: SchemaOptions): TMappedResult<P>;
8
+ type TFromMappedResult<R extends TMappedResult> = (TFromProperties<R['properties']>);
9
+ export type TPartialFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>> = (TMappedResult<P>);
10
+ export declare function PartialFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>>(R: R, options: SchemaOptions): TMappedResult<P>;
11
11
  export {};
@@ -11,12 +11,12 @@ function FromProperties(K, options) {
11
11
  }, {});
12
12
  }
13
13
  // prettier-ignore
14
- function FromMappedResult(K, options) {
15
- return FromProperties(K.properties, options);
14
+ function FromMappedResult(R, options) {
15
+ return FromProperties(R.properties, options);
16
16
  }
17
17
  // prettier-ignore
18
- function PartialFromMappedResult(T, options) {
19
- const P = FromMappedResult(T, options);
18
+ function PartialFromMappedResult(R, options) {
19
+ const P = FromMappedResult(R, options);
20
20
  return (0, index_1.MappedResult)(P);
21
21
  }
22
22
  exports.PartialFromMappedResult = PartialFromMappedResult;
@@ -9,12 +9,11 @@ import { type TObject, type TProperties } from '../object/index';
9
9
  import { type TIntersect } from '../intersect/index';
10
10
  import { type TUnion } from '../union/index';
11
11
  import { type TPartialFromMappedResult } from './partial-from-mapped-result';
12
- type TFromIntersect<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromIntersect<R, [...Acc, PartialResolve<L>]> : Acc);
13
- type TFromUnion<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromUnion<R, [...Acc, PartialResolve<L>]> : Acc);
12
+ type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Acc, PartialResolve<L>]> : Acc);
14
13
  type TFromProperties<T extends TProperties> = Evaluate<{
15
14
  [K in keyof T]: T[K] extends (TReadonlyOptional<infer S>) ? TReadonlyOptional<S> : T[K] extends (TReadonly<infer S>) ? TReadonlyOptional<S> : T[K] extends (TOptional<infer S>) ? TOptional<S> : TOptional<T[K]>;
16
15
  }>;
17
- type PartialResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<PartialResolve<S>> : T extends TIntersect<infer S> ? TIntersect<TFromIntersect<S>> : T extends TUnion<infer S> ? TUnion<TFromUnion<S>> : T extends TObject<infer S> ? TObject<TFromProperties<S>> : TObject<{}>);
16
+ type PartialResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<PartialResolve<S>> : T extends TIntersect<infer S> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S> ? TUnion<TFromRest<S>> : T extends TObject<infer S> ? TObject<TFromProperties<S>> : TObject<{}>);
18
17
  declare function PartialResolve<T extends TSchema>(T: T): PartialResolve<T>;
19
18
  export type TPartial<T extends TSchema> = PartialResolve<T>;
20
19
  /** `[Json]` Constructs a type where all properties are optional */
@@ -15,18 +15,8 @@ const partial_from_mapped_result_1 = require("./partial-from-mapped-result");
15
15
  // ------------------------------------------------------------------
16
16
  const type_2 = require("../guard/type");
17
17
  // prettier-ignore
18
- function FromIntersect(T, Acc = []) {
19
- const [L, ...R] = T;
20
- return (T.length > 0
21
- ? FromIntersect(R, [...Acc, PartialResolve(L)])
22
- : Acc);
23
- }
24
- // prettier-ignore
25
- function FromUnion(T, Acc = []) {
26
- const [L, ...R] = T;
27
- return (T.length > 0
28
- ? FromUnion(R, [...Acc, PartialResolve(L)])
29
- : Acc);
18
+ function FromRest(T) {
19
+ return T.map(L => PartialResolve(L));
30
20
  }
31
21
  // prettier-ignore
32
22
  function FromProperties(T) {
@@ -36,20 +26,17 @@ function FromProperties(T) {
36
26
  }
37
27
  // prettier-ignore
38
28
  function PartialResolve(T) {
39
- return ((0, type_2.IsIntersect)(T) ? (0, index_3.Intersect)(FromIntersect(T.allOf)) :
40
- (0, type_2.IsUnion)(T) ? (0, index_4.Union)(FromUnion(T.anyOf)) :
29
+ return ((0, type_2.IsIntersect)(T) ? (0, index_3.Intersect)(FromRest(T.allOf)) :
30
+ (0, type_2.IsUnion)(T) ? (0, index_4.Union)(FromRest(T.anyOf)) :
41
31
  (0, type_2.IsObject)(T) ? (0, index_2.Object)(FromProperties(T.properties)) :
42
32
  (0, index_2.Object)({}));
43
33
  }
44
34
  /** `[Json]` Constructs a type where all properties are optional */
45
35
  function Partial(T, options = {}) {
46
- if ((0, type_2.IsMappedResult)(T)) {
36
+ if ((0, type_2.IsMappedResult)(T))
47
37
  return (0, partial_from_mapped_result_1.PartialFromMappedResult)(T, options);
48
- }
49
- else {
50
- const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
51
- const R = (0, type_1.CloneType)(PartialResolve(T), options);
52
- return { ...D, ...R };
53
- }
38
+ const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
39
+ const R = (0, type_1.CloneType)(PartialResolve(T), options);
40
+ return { ...D, ...R };
54
41
  }
55
42
  exports.Partial = Partial;
@@ -1,2 +1,3 @@
1
1
  export * from './pick-from-mapped-key';
2
+ export * from './pick-from-mapped-result';
2
3
  export * from './pick';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./pick-from-mapped-key"), exports);
19
+ __exportStar(require("./pick-from-mapped-result"), exports);
19
20
  __exportStar(require("./pick"), exports);
@@ -11,11 +11,10 @@ function FromPropertyKey(T, K, options) {
11
11
  };
12
12
  }
13
13
  // prettier-ignore
14
- function FromPropertyKeys(T, K, options, Acc = {}) {
15
- const [LK, ...RK] = K;
16
- return (K.length > 0
17
- ? FromPropertyKeys(T, RK, options, { ...Acc, ...FromPropertyKey(T, LK, options) })
18
- : Acc);
14
+ function FromPropertyKeys(T, K, options) {
15
+ return K.reduce((Acc, LK) => {
16
+ return { ...Acc, ...FromPropertyKey(T, LK, options) };
17
+ }, {});
19
18
  }
20
19
  // prettier-ignore
21
20
  function FromMappedKey(T, K, options) {
@@ -0,0 +1,11 @@
1
+ import type { SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import { type TMappedResult } from '../mapped/index';
4
+ import { type TPick } from './pick';
5
+ type TFromProperties<P extends TProperties, K extends PropertyKey[]> = ({
6
+ [K2 in keyof P]: TPick<P[K2], K>;
7
+ });
8
+ type TFromMappedResult<R extends TMappedResult, K extends PropertyKey[]> = (TFromProperties<R['properties'], K>);
9
+ export type TPickFromMappedResult<T extends TMappedResult, K extends PropertyKey[], P extends TProperties = TFromMappedResult<T, K>> = (TMappedResult<P>);
10
+ export declare function PickFromMappedResult<R extends TMappedResult, K extends PropertyKey[], P extends TProperties = TFromMappedResult<R, K>>(R: R, K: [...K], options: SchemaOptions): TMappedResult<P>;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PickFromMappedResult = void 0;
5
+ const index_1 = require("../mapped/index");
6
+ const pick_1 = require("./pick");
7
+ // prettier-ignore
8
+ function FromProperties(P, K, options) {
9
+ return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
10
+ return { ...Acc, [K2]: (0, pick_1.Pick)(P[K2], K, options) };
11
+ }, {});
12
+ }
13
+ // prettier-ignore
14
+ function FromMappedResult(R, K, options) {
15
+ return FromProperties(R.properties, K, options);
16
+ }
17
+ // prettier-ignore
18
+ function PickFromMappedResult(R, K, options) {
19
+ const P = FromMappedResult(R, K, options);
20
+ return (0, index_1.MappedResult)(P);
21
+ }
22
+ exports.PickFromMappedResult = PickFromMappedResult;
@@ -4,9 +4,10 @@ import { type TRecursive } from '../recursive/index';
4
4
  import { type TIntersect } from '../intersect/index';
5
5
  import { type TUnion } from '../union/index';
6
6
  import { type TObject, type TProperties } from '../object/index';
7
+ import type { TMappedKey, TMappedResult } from '../mapped/index';
7
8
  import { type TIndexPropertyKeys } from '../indexed/index';
8
- import { TMappedKey } from '../mapped/index';
9
9
  import { type TPickFromMappedKey } from './pick-from-mapped-key';
10
+ import { type TPickFromMappedResult } from './pick-from-mapped-result';
10
11
  type FromIntersect<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? FromIntersect<R, K, [...Acc, PickResolve<L, K>]> : Acc;
11
12
  declare function FromIntersect<T extends TSchema[], K extends PropertyKey[]>(T: T, K: K): FromIntersect<T, K, []>;
12
13
  type FromUnion<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? FromUnion<R, K, [...Acc, PickResolve<L, K>]> : Acc;
@@ -17,7 +18,9 @@ export type PickResolve<T extends TProperties, K extends PropertyKey[]> = T exte
17
18
  export declare function PickResolve<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): PickResolve<T, K>;
18
19
  export type TPick<T extends TSchema, K extends PropertyKey[]> = PickResolve<T, K>;
19
20
  /** `[Json]` Constructs a type whose keys are picked from the given type */
20
- export declare function Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickFromMappedKey<T, K>;
21
+ export declare function Pick<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TPickFromMappedResult<T, K>;
22
+ /** `[Json]` Constructs a type whose keys are picked from the given type */
23
+ export declare function Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TPickFromMappedKey<T, K>;
21
24
  /** `[Json]` Constructs a type whose keys are picked from the given type */
22
25
  export declare function Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
23
26
  /** `[Json]` Constructs a type whose keys are picked from the given type */
@@ -10,10 +10,10 @@ const index_5 = require("../discard/index");
10
10
  const index_6 = require("../symbols/index");
11
11
  const type_1 = require("../clone/type");
12
12
  const pick_from_mapped_key_1 = require("./pick-from-mapped-key");
13
+ const pick_from_mapped_result_1 = require("./pick-from-mapped-result");
13
14
  // ------------------------------------------------------------------
14
15
  // TypeGuard
15
16
  // ------------------------------------------------------------------
16
- // prettier-ignore
17
17
  const type_2 = require("../guard/type");
18
18
  function FromIntersect(T, K) {
19
19
  return T.map((T) => PickResolve(T, K));
@@ -37,14 +37,15 @@ function PickResolve(T, K) {
37
37
  }
38
38
  exports.PickResolve = PickResolve;
39
39
  function Pick(T, K, options = {}) {
40
- if ((0, type_2.IsMappedKey)(K)) {
40
+ // mapped
41
+ if ((0, type_2.IsMappedKey)(K))
41
42
  return (0, pick_from_mapped_key_1.PickFromMappedKey)(T, K, options);
42
- }
43
- else {
44
- const I = (0, type_2.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;
45
- const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
46
- const R = (0, type_1.CloneType)(PickResolve(T, I), options);
47
- return { ...D, ...R };
48
- }
43
+ if ((0, type_2.IsMappedResult)(T))
44
+ return (0, pick_from_mapped_result_1.PickFromMappedResult)(T, K, options);
45
+ // non-mapped
46
+ const I = (0, type_2.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;
47
+ const D = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required']);
48
+ const R = (0, type_1.CloneType)(PickResolve(T, I), options);
49
+ return { ...D, ...R };
49
50
  }
50
51
  exports.Pick = Pick;
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Promise = void 0;
5
- const index_1 = require("../symbols/index");
6
5
  const type_1 = require("../clone/type");
6
+ const index_1 = require("../symbols/index");
7
7
  /** `[JavaScript]` Creates a Promise type */
8
8
  function Promise(item, options = {}) {
9
9
  return {
@@ -1,10 +1,10 @@
1
1
  import type { TProperties } from '../object/index';
2
2
  import { type TMappedResult } from '../mapped/index';
3
3
  import { type TReadonlyWithFlag } from './readonly';
4
- type TFromProperties<K extends TProperties, F extends boolean> = ({
5
- [K2 in keyof K]: TReadonlyWithFlag<K[K2], F>;
4
+ type TFromProperties<P extends TProperties, F extends boolean> = ({
5
+ [K2 in keyof P]: TReadonlyWithFlag<P[K2], F>;
6
6
  });
7
- type TFromMappedResult<K extends TMappedResult, F extends boolean> = (TFromProperties<K['properties'], F>);
8
- export type TReadonlyFromMappedResult<T extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<T, F>> = (TMappedResult<P>);
9
- export declare function ReadonlyFromMappedResult<T extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<T, F>>(T: T, F: F): TMappedResult<P>;
7
+ type TFromMappedResult<R extends TMappedResult, F extends boolean> = (TFromProperties<R['properties'], F>);
8
+ export type TReadonlyFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>> = (TMappedResult<P>);
9
+ export declare function ReadonlyFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>>(R: R, F: F): TMappedResult<P>;
10
10
  export {};
@@ -11,12 +11,12 @@ function FromProperties(K, F) {
11
11
  }, {});
12
12
  }
13
13
  // prettier-ignore
14
- function FromMappedResult(K, F) {
15
- return FromProperties(K.properties, F);
14
+ function FromMappedResult(R, F) {
15
+ return FromProperties(R.properties, F);
16
16
  }
17
17
  // prettier-ignore
18
- function ReadonlyFromMappedResult(T, F) {
19
- const P = FromMappedResult(T, F);
18
+ function ReadonlyFromMappedResult(R, F) {
19
+ const P = FromMappedResult(R, F);
20
20
  return (0, index_1.MappedResult)(P);
21
21
  }
22
22
  exports.ReadonlyFromMappedResult = ReadonlyFromMappedResult;
@@ -2,14 +2,14 @@ import type { TSchema } from '../schema/index';
2
2
  import type { Static } from '../static/index';
3
3
  import type { Evaluate, Ensure, Assert } from '../helpers/index';
4
4
  import { type TObject, type TProperties, type TAdditionalProperties, type ObjectOptions } from '../object/index';
5
- import { type TLiteral, TLiteralValue } from '../literal/index';
5
+ import { type TLiteral, type TLiteralValue } from '../literal/index';
6
6
  import { type TNever } from '../never/index';
7
7
  import { type TUnion } from '../union/index';
8
8
  import { type TString } from '../string/index';
9
9
  import { type TInteger } from '../integer/index';
10
10
  import { type TNumber } from '../number/index';
11
11
  import { type TEnum } from '../enum/index';
12
- import { TTemplateLiteral, TIsTemplateLiteralFinite } from '../template-literal/index';
12
+ import { TIsTemplateLiteralFinite, type TTemplateLiteral } from '../template-literal/index';
13
13
  import { Kind } from '../symbols/index';
14
14
  type TFromTemplateLiteralKeyInfinite<K extends TTemplateLiteral, T extends TSchema> = Ensure<TRecord<K, T>>;
15
15
  type TFromTemplateLiteralKeyFinite<K extends TTemplateLiteral, T extends TSchema, I extends string = Static<K>> = (Ensure<TObject<Evaluate<{
@@ -10,6 +10,9 @@ const index_5 = require("../patterns/index");
10
10
  const index_6 = require("../indexed/index");
11
11
  const index_7 = require("../symbols/index");
12
12
  const type_1 = require("../clone/type");
13
+ // ------------------------------------------------------------------
14
+ // ValueGuard
15
+ // ------------------------------------------------------------------
13
16
  const value_1 = require("../guard/value");
14
17
  // ------------------------------------------------------------------
15
18
  // TypeGuard
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Ref = void 0;
5
5
  const index_1 = require("../symbols/index");
6
6
  // ------------------------------------------------------------------
7
- // TypeGuard
7
+ // ValueGuard
8
8
  // ------------------------------------------------------------------
9
9
  const value_1 = require("../guard/value");
10
10
  /** `[Json]` Creates a Ref type. */
@@ -2,10 +2,10 @@ import type { SchemaOptions } from '../schema/index';
2
2
  import type { TProperties } from '../object/index';
3
3
  import { type TMappedResult } from '../mapped/index';
4
4
  import { type TRequired } from './required';
5
- type TFromProperties<K extends TProperties> = ({
6
- [K2 in keyof K]: TRequired<K[K2]>;
5
+ type TFromProperties<P extends TProperties> = ({
6
+ [K2 in keyof P]: TRequired<P[K2]>;
7
7
  });
8
- type TFromMappedResult<K extends TMappedResult> = (TFromProperties<K['properties']>);
9
- export type TRequiredFromMappedResult<T extends TMappedResult, P extends TProperties = TFromMappedResult<T>> = (TMappedResult<P>);
10
- export declare function RequiredFromMappedResult<T extends TMappedResult, P extends TProperties = TFromMappedResult<T>>(T: T, options: SchemaOptions): TMappedResult<P>;
8
+ type TFromMappedResult<R extends TMappedResult> = (TFromProperties<R['properties']>);
9
+ export type TRequiredFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>> = (TMappedResult<P>);
10
+ export declare function RequiredFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>>(R: R, options: SchemaOptions): TMappedResult<P>;
11
11
  export {};
@@ -5,18 +5,18 @@ exports.RequiredFromMappedResult = void 0;
5
5
  const index_1 = require("../mapped/index");
6
6
  const required_1 = require("./required");
7
7
  // prettier-ignore
8
- function FromProperties(K, options) {
9
- return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
10
- return { ...Acc, [K2]: (0, required_1.Required)(K[K2], options) };
8
+ function FromProperties(P, options) {
9
+ return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
10
+ return { ...Acc, [K2]: (0, required_1.Required)(P[K2], options) };
11
11
  }, {});
12
12
  }
13
13
  // prettier-ignore
14
- function FromMappedResult(K, options) {
15
- return FromProperties(K.properties, options);
14
+ function FromMappedResult(R, options) {
15
+ return FromProperties(R.properties, options);
16
16
  }
17
17
  // prettier-ignore
18
- function RequiredFromMappedResult(T, options) {
19
- const P = FromMappedResult(T, options);
18
+ function RequiredFromMappedResult(R, options) {
19
+ const P = FromMappedResult(R, options);
20
20
  return (0, index_1.MappedResult)(P);
21
21
  }
22
22
  exports.RequiredFromMappedResult = RequiredFromMappedResult;
@@ -9,12 +9,11 @@ import { type TIntersect } from '../intersect/index';
9
9
  import { type TUnion } from '../union/index';
10
10
  import { type TObject, type TProperties } from '../object/index';
11
11
  import { type TRequiredFromMappedResult } from './required-from-mapped-result';
12
- type TFromIntersect<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromIntersect<R, [...Acc, TRequiredResolve<L>]> : Acc);
13
- type TFromUnion<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromUnion<R, [...Acc, TRequiredResolve<L>]> : Acc);
12
+ type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Acc, TRequiredResolve<L>]> : Acc);
14
13
  type TFromProperties<T extends TProperties> = Evaluate<{
15
14
  [K in keyof T]: T[K] extends (TReadonlyOptional<infer S>) ? TReadonly<S> : T[K] extends (TReadonly<infer S>) ? TReadonly<S> : T[K] extends (TOptional<infer S>) ? S : T[K];
16
15
  }>;
17
- type TRequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<TRequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<TFromIntersect<S>> : T extends TUnion<infer S> ? TUnion<TFromUnion<S>> : T extends TObject<infer S> ? TObject<TFromProperties<S>> : TObject<{}>);
16
+ type TRequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<TRequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S> ? TUnion<TFromRest<S>> : T extends TObject<infer S> ? TObject<TFromProperties<S>> : TObject<{}>);
18
17
  export type TRequired<T extends TSchema> = TRequiredResolve<T>;
19
18
  /** `[Json]` Constructs a type where all properties are required */
20
19
  export declare function Required<T extends TMappedResult>(T: T, options?: SchemaOptions): TRequiredFromMappedResult<T>;
@@ -14,18 +14,8 @@ const required_from_mapped_result_1 = require("./required-from-mapped-result");
14
14
  // ------------------------------------------------------------------
15
15
  const type_2 = require("../guard/type");
16
16
  // prettier-ignore
17
- function FromIntersect(T, Acc = []) {
18
- const [L, ...R] = T;
19
- return (T.length > 0
20
- ? FromIntersect(R, [...Acc, RequiredResolve(L)])
21
- : Acc);
22
- }
23
- // prettier-ignore
24
- function FromUnion(T, Acc = []) {
25
- const [L, ...R] = T;
26
- return (T.length > 0
27
- ? FromUnion(R, [...Acc, RequiredResolve(L)])
28
- : Acc);
17
+ function FromRest(T) {
18
+ return T.map(L => RequiredResolve(L));
29
19
  }
30
20
  // prettier-ignore
31
21
  function FromProperties(T) {
@@ -35,8 +25,8 @@ function FromProperties(T) {
35
25
  }
36
26
  // prettier-ignore
37
27
  function RequiredResolve(T) {
38
- return ((0, type_2.IsIntersect)(T) ? (0, index_1.Intersect)(FromIntersect(T.allOf)) :
39
- (0, type_2.IsUnion)(T) ? (0, index_2.Union)(FromUnion(T.anyOf)) :
28
+ return ((0, type_2.IsIntersect)(T) ? (0, index_1.Intersect)(FromRest(T.allOf)) :
29
+ (0, type_2.IsUnion)(T) ? (0, index_2.Union)(FromRest(T.anyOf)) :
40
30
  (0, type_2.IsObject)(T) ? (0, index_3.Object)(FromProperties(T.properties)) :
41
31
  (0, index_3.Object)({}));
42
32
  }
@@ -2,9 +2,9 @@ import type { TSchema } from '../schema/index';
2
2
  import type { TIntersect } from '../intersect/index';
3
3
  import type { TUnion } from '../union/index';
4
4
  import type { TTuple } from '../tuple/index';
5
- export type TRestResolve<T extends TSchema> = T extends TIntersect<infer S> ? [...S] : T extends TUnion<infer S> ? [...S] : T extends TTuple<infer S> ? [...S] : [
5
+ type TRestResolve<T extends TSchema> = T extends TIntersect<infer S> ? [...S] : T extends TUnion<infer S> ? [...S] : T extends TTuple<infer S> ? [...S] : [
6
6
  ];
7
- export declare function RestResolve<T extends TSchema>(T: T): TRestResolve<T>;
8
7
  export type TRest<T extends TSchema> = TRestResolve<T>;
9
8
  /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */
10
9
  export declare function Rest<T extends TSchema>(T: T): TRest<T>;
10
+ export {};