@sinclair/typebox 0.32.0-dev-14 → 0.32.0-dev-16

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 (236) hide show
  1. package/build/import/index.d.mts +12 -12
  2. package/build/import/index.mjs +5 -5
  3. package/build/import/type/array/array.d.mts +1 -1
  4. package/build/import/type/constructor/constructor.d.mts +4 -4
  5. package/build/import/type/exclude/exclude-from-mapped-result.d.mts +13 -0
  6. package/build/import/type/exclude/exclude-from-mapped-result.mjs +14 -0
  7. package/build/import/type/exclude/exclude.d.mts +7 -4
  8. package/build/import/type/exclude/exclude.mjs +10 -4
  9. package/build/import/type/exclude/index.d.mts +1 -0
  10. package/build/import/type/exclude/index.mjs +1 -0
  11. package/build/import/type/extends/extends-from-mapped-key.d.mts +17 -0
  12. package/build/import/type/extends/extends-from-mapped-key.mjs +21 -0
  13. package/build/import/type/extends/extends-from-mapped-result.d.mts +13 -0
  14. package/build/import/type/extends/extends-from-mapped-result.mjs +14 -0
  15. package/build/import/type/extends/extends.d.mts +4 -4
  16. package/build/import/type/extends/extends.mjs +5 -5
  17. package/build/import/type/extends/index.d.mts +2 -2
  18. package/build/import/type/extends/index.mjs +2 -2
  19. package/build/import/type/extract/extract-from-mapped-result.d.mts +13 -0
  20. package/build/import/type/extract/extract-from-mapped-result.mjs +14 -0
  21. package/build/import/type/extract/extract.d.mts +6 -3
  22. package/build/import/type/extract/extract.mjs +9 -3
  23. package/build/import/type/extract/index.d.mts +1 -0
  24. package/build/import/type/extract/index.mjs +1 -0
  25. package/build/import/type/function/function.d.mts +4 -4
  26. package/build/import/type/indexed/index.d.mts +1 -1
  27. package/build/import/type/indexed/index.mjs +1 -1
  28. package/build/import/type/indexed/{indexed-mapped-result.d.mts → indexed-from-mapped-key.d.mts} +6 -6
  29. package/build/import/type/indexed/indexed-from-mapped-key.mjs +18 -0
  30. package/build/import/type/indexed/indexed-result.d.mts +8 -8
  31. package/build/import/type/indexed/indexed-result.mjs +9 -8
  32. package/build/import/type/indexed/indexed.d.mts +2 -2
  33. package/build/import/type/indexed/indexed.mjs +5 -5
  34. package/build/import/type/intersect/index.d.mts +2 -0
  35. package/build/import/type/intersect/index.mjs +2 -0
  36. package/build/import/type/intersect/intersect-create.d.mts +3 -0
  37. package/build/import/type/intersect/intersect-create.mjs +12 -0
  38. package/build/import/type/intersect/intersect-evaluated.d.mts +16 -0
  39. package/build/import/type/intersect/intersect-evaluated.mjs +35 -0
  40. package/build/import/type/intersect/intersect-type.d.mts +15 -0
  41. package/build/import/type/intersect/intersect-type.mjs +1 -0
  42. package/build/import/type/intersect/intersect.d.mts +4 -20
  43. package/build/import/type/intersect/intersect.mjs +5 -17
  44. package/build/import/type/intrinsic/capitalize.mjs +1 -2
  45. package/build/import/type/intrinsic/index.d.mts +1 -1
  46. package/build/import/type/intrinsic/index.mjs +1 -1
  47. package/build/import/type/intrinsic/{intrinsic-mapped-result.d.mts → intrinsic-from-mapped-key.d.mts} +6 -5
  48. package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +21 -0
  49. package/build/import/type/intrinsic/intrinsic.d.mts +6 -6
  50. package/build/import/type/intrinsic/intrinsic.mjs +8 -8
  51. package/build/import/type/intrinsic/lowercase.mjs +1 -2
  52. package/build/import/type/intrinsic/uncapitalize.mjs +1 -2
  53. package/build/import/type/intrinsic/uppercase.mjs +1 -2
  54. package/build/import/type/keyof/index.d.mts +1 -0
  55. package/build/import/type/keyof/index.mjs +1 -0
  56. package/build/import/type/keyof/keyof-from-mapped-result.d.mts +13 -0
  57. package/build/import/type/keyof/keyof-from-mapped-result.mjs +14 -0
  58. package/build/import/type/keyof/keyof.d.mts +5 -2
  59. package/build/import/type/keyof/keyof.mjs +10 -3
  60. package/build/import/type/mapped/mapped.mjs +1 -2
  61. package/build/import/type/object/object.d.mts +5 -5
  62. package/build/import/type/omit/index.d.mts +1 -1
  63. package/build/import/type/omit/index.mjs +1 -1
  64. package/build/import/type/omit/omit-from-mapped-key.d.mts +15 -0
  65. package/build/import/type/omit/omit-from-mapped-key.mjs +20 -0
  66. package/build/import/type/omit/omit.d.mts +2 -2
  67. package/build/import/type/omit/omit.mjs +2 -2
  68. package/build/import/type/partial/index.d.mts +1 -0
  69. package/build/import/type/partial/index.mjs +1 -0
  70. package/build/import/type/partial/partial-from-mapped-result.d.mts +13 -0
  71. package/build/import/type/partial/partial-from-mapped-result.mjs +14 -0
  72. package/build/import/type/partial/partial.d.mts +5 -2
  73. package/build/import/type/partial/partial.mjs +11 -5
  74. package/build/import/type/pick/index.d.mts +1 -1
  75. package/build/import/type/pick/index.mjs +1 -1
  76. package/build/import/type/pick/pick-from-mapped-key.d.mts +15 -0
  77. package/build/import/type/pick/pick-from-mapped-key.mjs +20 -0
  78. package/build/import/type/pick/pick.d.mts +2 -2
  79. package/build/import/type/pick/pick.mjs +2 -2
  80. package/build/import/type/record/record.d.mts +0 -1
  81. package/build/import/type/record/record.mjs +1 -1
  82. package/build/import/type/recursive/recursive.d.mts +3 -2
  83. package/build/import/type/recursive/recursive.mjs +1 -5
  84. package/build/import/type/required/index.d.mts +1 -0
  85. package/build/import/type/required/index.mjs +1 -0
  86. package/build/import/type/required/required-from-mapped-result.d.mts +13 -0
  87. package/build/import/type/required/required-from-mapped-result.mjs +14 -0
  88. package/build/import/type/required/required.d.mts +5 -2
  89. package/build/import/type/required/required.mjs +11 -5
  90. package/build/import/type/template-literal/syntax.d.mts +4 -4
  91. package/build/import/type/template-literal/template-literal.d.mts +4 -4
  92. package/build/import/type/transform/transform.d.mts +3 -2
  93. package/build/import/type/transform/transform.mjs +1 -1
  94. package/build/import/type/tuple/tuple.d.mts +3 -3
  95. package/build/import/type/type/json.d.mts +25 -20
  96. package/build/import/type/type/json.mjs +3 -3
  97. package/build/import/type/union/index.d.mts +2 -0
  98. package/build/import/type/union/index.mjs +2 -0
  99. package/build/import/type/union/union-create.d.mts +3 -0
  100. package/build/import/type/union/union-create.mjs +5 -0
  101. package/build/import/type/union/union-evaluated.d.mts +16 -0
  102. package/build/import/type/union/union-evaluated.mjs +31 -0
  103. package/build/import/type/union/union-type.d.mts +12 -0
  104. package/build/import/type/union/union-type.mjs +1 -0
  105. package/build/import/type/union/union.d.mts +3 -13
  106. package/build/import/type/union/union.mjs +3 -10
  107. package/build/import/value/delta/delta.d.mts +1 -1
  108. package/build/require/index.d.ts +12 -12
  109. package/build/require/index.js +8 -3
  110. package/build/require/type/array/array.d.ts +1 -1
  111. package/build/require/type/constructor/constructor.d.ts +4 -4
  112. package/build/require/type/exclude/exclude-from-mapped-result.d.ts +13 -0
  113. package/build/require/type/exclude/exclude-from-mapped-result.js +18 -0
  114. package/build/require/type/exclude/exclude.d.ts +7 -4
  115. package/build/require/type/exclude/exclude.js +9 -4
  116. package/build/require/type/exclude/index.d.ts +1 -0
  117. package/build/require/type/exclude/index.js +1 -0
  118. package/build/require/type/extends/extends-from-mapped-key.d.ts +17 -0
  119. package/build/require/type/extends/extends-from-mapped-key.js +25 -0
  120. package/build/require/type/extends/extends-from-mapped-result.d.ts +13 -0
  121. package/build/require/type/extends/extends-from-mapped-result.js +18 -0
  122. package/build/require/type/extends/extends.d.ts +4 -4
  123. package/build/require/type/extends/extends.js +7 -7
  124. package/build/require/type/extends/index.d.ts +2 -2
  125. package/build/require/type/extends/index.js +2 -2
  126. package/build/require/type/extract/extract-from-mapped-result.d.ts +13 -0
  127. package/build/require/type/extract/extract-from-mapped-result.js +18 -0
  128. package/build/require/type/extract/extract.d.ts +6 -3
  129. package/build/require/type/extract/extract.js +8 -2
  130. package/build/require/type/extract/index.d.ts +1 -0
  131. package/build/require/type/extract/index.js +1 -0
  132. package/build/require/type/function/function.d.ts +4 -4
  133. package/build/require/type/indexed/index.d.ts +1 -1
  134. package/build/require/type/indexed/index.js +1 -1
  135. package/build/require/type/indexed/{indexed-mapped-result.d.ts → indexed-from-mapped-key.d.ts} +6 -6
  136. package/build/require/type/indexed/indexed-from-mapped-key.js +22 -0
  137. package/build/require/type/indexed/indexed-result.d.ts +8 -8
  138. package/build/require/type/indexed/indexed-result.js +14 -13
  139. package/build/require/type/indexed/indexed.d.ts +2 -2
  140. package/build/require/type/indexed/indexed.js +6 -6
  141. package/build/require/type/intersect/index.d.ts +2 -0
  142. package/build/require/type/intersect/index.js +2 -0
  143. package/build/require/type/intersect/intersect-create.d.ts +3 -0
  144. package/build/require/type/intersect/intersect-create.js +16 -0
  145. package/build/require/type/intersect/intersect-evaluated.d.ts +16 -0
  146. package/build/require/type/intersect/intersect-evaluated.js +39 -0
  147. package/build/require/type/intersect/intersect-type.d.ts +15 -0
  148. package/build/require/type/intersect/intersect-type.js +3 -0
  149. package/build/require/type/intersect/intersect.d.ts +4 -20
  150. package/build/require/type/intersect/intersect.js +5 -18
  151. package/build/require/type/intrinsic/capitalize.js +1 -2
  152. package/build/require/type/intrinsic/index.d.ts +1 -1
  153. package/build/require/type/intrinsic/index.js +1 -1
  154. package/build/require/type/intrinsic/{intrinsic-mapped-result.d.ts → intrinsic-from-mapped-key.d.ts} +6 -5
  155. package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +25 -0
  156. package/build/require/type/intrinsic/intrinsic.d.ts +6 -6
  157. package/build/require/type/intrinsic/intrinsic.js +8 -8
  158. package/build/require/type/intrinsic/lowercase.js +1 -2
  159. package/build/require/type/intrinsic/uncapitalize.js +1 -2
  160. package/build/require/type/intrinsic/uppercase.js +1 -2
  161. package/build/require/type/keyof/index.d.ts +1 -0
  162. package/build/require/type/keyof/index.js +1 -0
  163. package/build/require/type/keyof/keyof-from-mapped-result.d.ts +13 -0
  164. package/build/require/type/keyof/keyof-from-mapped-result.js +18 -0
  165. package/build/require/type/keyof/keyof.d.ts +5 -2
  166. package/build/require/type/keyof/keyof.js +9 -2
  167. package/build/require/type/mapped/mapped.js +18 -19
  168. package/build/require/type/object/object.d.ts +5 -5
  169. package/build/require/type/omit/index.d.ts +1 -1
  170. package/build/require/type/omit/index.js +1 -1
  171. package/build/require/type/omit/omit-from-mapped-key.d.ts +15 -0
  172. package/build/require/type/omit/omit-from-mapped-key.js +24 -0
  173. package/build/require/type/omit/omit.d.ts +2 -2
  174. package/build/require/type/omit/omit.js +2 -2
  175. package/build/require/type/partial/index.d.ts +1 -0
  176. package/build/require/type/partial/index.js +1 -0
  177. package/build/require/type/partial/partial-from-mapped-result.d.ts +13 -0
  178. package/build/require/type/partial/partial-from-mapped-result.js +18 -0
  179. package/build/require/type/partial/partial.d.ts +5 -2
  180. package/build/require/type/partial/partial.js +10 -5
  181. package/build/require/type/pick/index.d.ts +1 -1
  182. package/build/require/type/pick/index.js +1 -1
  183. package/build/require/type/pick/pick-from-mapped-key.d.ts +15 -0
  184. package/build/require/type/pick/pick-from-mapped-key.js +24 -0
  185. package/build/require/type/pick/pick.d.ts +2 -2
  186. package/build/require/type/pick/pick.js +2 -2
  187. package/build/require/type/record/record.d.ts +0 -1
  188. package/build/require/type/record/record.js +1 -2
  189. package/build/require/type/recursive/recursive.d.ts +3 -2
  190. package/build/require/type/recursive/recursive.js +1 -5
  191. package/build/require/type/required/index.d.ts +1 -0
  192. package/build/require/type/required/index.js +1 -0
  193. package/build/require/type/required/required-from-mapped-result.d.ts +13 -0
  194. package/build/require/type/required/required-from-mapped-result.js +18 -0
  195. package/build/require/type/required/required.d.ts +5 -2
  196. package/build/require/type/required/required.js +10 -5
  197. package/build/require/type/template-literal/syntax.d.ts +4 -4
  198. package/build/require/type/template-literal/template-literal.d.ts +4 -4
  199. package/build/require/type/transform/transform.d.ts +3 -2
  200. package/build/require/type/transform/transform.js +4 -4
  201. package/build/require/type/tuple/tuple.d.ts +3 -3
  202. package/build/require/type/type/json.d.ts +25 -20
  203. package/build/require/type/type/json.js +3 -3
  204. package/build/require/type/union/index.d.ts +2 -0
  205. package/build/require/type/union/index.js +2 -0
  206. package/build/require/type/union/union-create.d.ts +3 -0
  207. package/build/require/type/union/union-create.js +9 -0
  208. package/build/require/type/union/union-evaluated.d.ts +16 -0
  209. package/build/require/type/union/union-evaluated.js +35 -0
  210. package/build/require/type/union/union-type.d.ts +12 -0
  211. package/build/require/type/union/union-type.js +3 -0
  212. package/build/require/type/union/union.d.ts +3 -13
  213. package/build/require/type/union/union.js +3 -11
  214. package/build/require/value/delta/delta.d.ts +1 -1
  215. package/package.json +1 -1
  216. package/readme.md +97 -101
  217. package/build/import/type/extends/extends-mapped-result-from-result.d.mts +0 -13
  218. package/build/import/type/extends/extends-mapped-result-from-result.mjs +0 -14
  219. package/build/import/type/extends/extends-mapped-result.d.mts +0 -17
  220. package/build/import/type/extends/extends-mapped-result.mjs +0 -21
  221. package/build/import/type/indexed/indexed-mapped-result.mjs +0 -18
  222. package/build/import/type/intrinsic/intrinsic-mapped-result.mjs +0 -21
  223. package/build/import/type/omit/omit-mapped-result.d.mts +0 -15
  224. package/build/import/type/omit/omit-mapped-result.mjs +0 -20
  225. package/build/import/type/pick/pick-mapped-result.d.mts +0 -15
  226. package/build/import/type/pick/pick-mapped-result.mjs +0 -20
  227. package/build/require/type/extends/extends-mapped-result-from-result.d.ts +0 -13
  228. package/build/require/type/extends/extends-mapped-result-from-result.js +0 -18
  229. package/build/require/type/extends/extends-mapped-result.d.ts +0 -17
  230. package/build/require/type/extends/extends-mapped-result.js +0 -25
  231. package/build/require/type/indexed/indexed-mapped-result.js +0 -22
  232. package/build/require/type/intrinsic/intrinsic-mapped-result.js +0 -25
  233. package/build/require/type/omit/omit-mapped-result.d.ts +0 -15
  234. package/build/require/type/omit/omit-mapped-result.js +0 -24
  235. package/build/require/type/pick/pick-mapped-result.d.ts +0 -15
  236. package/build/require/type/pick/pick-mapped-result.js +0 -24
@@ -5,7 +5,7 @@ import { IndexPropertyKeys } from '../indexed/index.mjs';
5
5
  import { Discard } from '../discard/index.mjs';
6
6
  import { TransformKind } from '../symbols/index.mjs';
7
7
  import { CloneType } from '../clone/type.mjs';
8
- import { OmitMappedResult } from './omit-mapped-result.mjs';
8
+ import { OmitFromMappedKey } from './omit-from-mapped-key.mjs';
9
9
  import { TMappedKey as IsMappedKeyType, TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType, TSchema as IsSchemaType } from '../guard/type.mjs';
10
10
  function FromIntersect(T, K) {
11
11
  return T.map((T) => OmitResolve(T, K));
@@ -30,7 +30,7 @@ export function OmitResolve(T, K) {
30
30
  }
31
31
  export function Omit(T, K, options = {}) {
32
32
  if (IsMappedKeyType(K)) {
33
- return OmitMappedResult(T, K);
33
+ return OmitFromMappedKey(T, K, options);
34
34
  }
35
35
  else {
36
36
  const I = IsSchemaType(K) ? IndexPropertyKeys(K) : K;
@@ -1 +1,2 @@
1
+ export * from './partial-from-mapped-result.mjs';
1
2
  export * from './partial.mjs';
@@ -1 +1,2 @@
1
+ export * from './partial-from-mapped-result.mjs';
1
2
  export * from './partial.mjs';
@@ -0,0 +1,13 @@
1
+ import type { SchemaOptions } from '../schema/index.mjs';
2
+ import type { TProperties } from '../object/index.mjs';
3
+ import { type TMappedResult } from '../mapped/index.mjs';
4
+ import { type TPartial } from './partial.mjs';
5
+ type FromProperties<K extends TProperties> = ({
6
+ [K2 in keyof K]: TPartial<K[K2]>;
7
+ });
8
+ declare function FromProperties<K extends TProperties>(K: K, options: SchemaOptions): FromProperties<K>;
9
+ type FromMappedResult<K extends TMappedResult> = (FromProperties<K['properties']>);
10
+ declare function FromMappedResult<K extends TMappedResult>(K: K, options: SchemaOptions): FromMappedResult<K>;
11
+ export type TPartialFromMappedResult<T extends TMappedResult, P extends TProperties = FromMappedResult<T>> = (TMappedResult<P>);
12
+ export declare function PartialFromMappedResult<T extends TMappedResult, P extends TProperties = FromMappedResult<T>>(T: T, options: SchemaOptions): TMappedResult<P>;
13
+ export {};
@@ -0,0 +1,14 @@
1
+ import { MappedResult } from '../mapped/index.mjs';
2
+ import { Partial } from './partial.mjs';
3
+ function FromProperties(K, options) {
4
+ return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
5
+ return { ...Acc, [K2]: Partial(K[K2], options) };
6
+ }, {});
7
+ }
8
+ function FromMappedResult(K, options) {
9
+ return FromProperties(K.properties, options);
10
+ }
11
+ export function PartialFromMappedResult(T, options) {
12
+ const P = FromMappedResult(T, options);
13
+ return MappedResult(P);
14
+ }
@@ -1,5 +1,6 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { Evaluate } from '../helpers/index.mjs';
3
+ import type { TMappedResult } from '../mapped/index.mjs';
3
4
  import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
4
5
  import { type TOptional } from '../optional/index.mjs';
5
6
  import { type TReadonly } from '../readonly/index.mjs';
@@ -7,6 +8,7 @@ import { type TRecursive } from '../recursive/index.mjs';
7
8
  import { type TObject, type TProperties } from '../object/index.mjs';
8
9
  import { type TIntersect } from '../intersect/index.mjs';
9
10
  import { type TUnion } from '../union/index.mjs';
11
+ import { type TPartialFromMappedResult } from './partial-from-mapped-result.mjs';
10
12
  type FromIntersect<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [PartialResolve<L>, ...FromIntersect<R>] : []);
11
13
  declare function FromIntersect<T extends TSchema[]>(T: [...T]): FromIntersect<T>;
12
14
  type FromUnion<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [PartialResolve<L>, ...FromUnion<R>] : []);
@@ -15,8 +17,9 @@ type FromProperties<T extends TProperties> = Evaluate<{
15
17
  [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
18
  }>;
17
19
  declare function FromProperties<T extends TProperties>(T: T): TProperties;
18
- export type PartialResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<PartialResolve<S>> : T extends TIntersect<infer S> ? TIntersect<FromIntersect<S>> : T extends TUnion<infer S> ? TUnion<FromUnion<S>> : T extends TObject<infer S> ? TObject<FromProperties<S>> : TObject<{}>);
19
- export declare function PartialResolve<T extends TSchema>(T: T): PartialResolve<T>;
20
+ type PartialResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<PartialResolve<S>> : T extends TIntersect<infer S> ? TIntersect<FromIntersect<S>> : T extends TUnion<infer S> ? TUnion<FromUnion<S>> : T extends TObject<infer S> ? TObject<FromProperties<S>> : TObject<{}>);
21
+ declare function PartialResolve<T extends TSchema>(T: T): PartialResolve<T>;
20
22
  export type TPartial<T extends TSchema> = PartialResolve<T>;
23
+ export declare function Partial<T extends TMappedResult>(T: T, options?: SchemaOptions): TPartialFromMappedResult<T>;
21
24
  export declare function Partial<T extends TSchema>(T: T, options?: SchemaOptions): TPartial<T>;
22
25
  export {};
@@ -5,7 +5,8 @@ import { Union } from '../union/index.mjs';
5
5
  import { Discard } from '../discard/index.mjs';
6
6
  import { TransformKind } from '../symbols/index.mjs';
7
7
  import { CloneType } from '../clone/type.mjs';
8
- import { TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType } from '../guard/type.mjs';
8
+ import { PartialFromMappedResult } from './partial-from-mapped-result.mjs';
9
+ import { TMappedResult as IsMappedResultType, TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType } from '../guard/type.mjs';
9
10
  function FromIntersect(T) {
10
11
  const [L, ...R] = T;
11
12
  return (T.length > 0
@@ -23,14 +24,19 @@ function FromProperties(T) {
23
24
  return { ...Acc, [K]: Optional(T[K]) };
24
25
  }, {});
25
26
  }
26
- export function PartialResolve(T) {
27
+ function PartialResolve(T) {
27
28
  return (IsIntersectType(T) ? Intersect(FromIntersect(T.allOf)) :
28
29
  IsUnionType(T) ? Union(FromUnion(T.anyOf)) :
29
30
  IsObjectType(T) ? Object(FromProperties(T.properties)) :
30
31
  Object({}));
31
32
  }
32
33
  export function Partial(T, options = {}) {
33
- const D = Discard(T, [TransformKind, '$id', 'required']);
34
- const R = CloneType(PartialResolve(T), options);
35
- return { ...D, ...R };
34
+ if (IsMappedResultType(T)) {
35
+ return PartialFromMappedResult(T, options);
36
+ }
37
+ else {
38
+ const D = Discard(T, [TransformKind, '$id', 'required']);
39
+ const R = CloneType(PartialResolve(T), options);
40
+ return { ...D, ...R };
41
+ }
36
42
  }
@@ -1,2 +1,2 @@
1
- export * from './pick-mapped-result.mjs';
1
+ export * from './pick-from-mapped-key.mjs';
2
2
  export * from './pick.mjs';
@@ -1,2 +1,2 @@
1
- export * from './pick-mapped-result.mjs';
1
+ export * from './pick-from-mapped-key.mjs';
2
2
  export * from './pick.mjs';
@@ -0,0 +1,15 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import type { TProperties } from '../object/index.mjs';
3
+ import { type TMappedResult, type TMappedKey } from '../mapped/index.mjs';
4
+ import { type TPick } from './pick.mjs';
5
+ type FromPropertyKey<T extends TSchema, K extends PropertyKey> = {
6
+ [_ in K]: TPick<T, [K]>;
7
+ };
8
+ declare function FromPropertyKey<T extends TSchema, K extends PropertyKey>(T: T, K: K, options: SchemaOptions): FromPropertyKey<T, K>;
9
+ type FromPropertyKeys<T extends TSchema, K extends PropertyKey[]> = (K extends [infer LK extends PropertyKey, ...infer RK extends PropertyKey[]] ? FromPropertyKey<T, LK> & FromPropertyKeys<T, RK> : {});
10
+ declare function FromPropertyKeys<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K], options: SchemaOptions): FromPropertyKeys<T, K>;
11
+ type FromMappedKey<T extends TSchema, K extends TMappedKey> = (FromPropertyKeys<T, K['keys']>);
12
+ declare function FromMappedKey<T extends TSchema, K extends TMappedKey>(T: T, K: K, options: SchemaOptions): FromMappedKey<T, K>;
13
+ export type TPickFromMappedKey<T extends TSchema, K extends TMappedKey, P extends TProperties = FromMappedKey<T, K>> = (TMappedResult<P>);
14
+ export declare function PickFromMappedKey<T extends TSchema, K extends TMappedKey, P extends TProperties = FromMappedKey<T, K>>(T: T, K: K, options: SchemaOptions): TMappedResult<P>;
15
+ export {};
@@ -0,0 +1,20 @@
1
+ import { MappedResult } from '../mapped/index.mjs';
2
+ import { Pick } from './pick.mjs';
3
+ function FromPropertyKey(T, K, options) {
4
+ return {
5
+ [K]: Pick(T, [K], options)
6
+ };
7
+ }
8
+ function FromPropertyKeys(T, K, options) {
9
+ const [LK, ...RK] = K;
10
+ return (K.length > 0
11
+ ? { ...FromPropertyKey(T, LK, options), ...FromPropertyKeys(T, RK, options) }
12
+ : {});
13
+ }
14
+ function FromMappedKey(T, K, options) {
15
+ return FromPropertyKeys(T, K.keys, options);
16
+ }
17
+ export function PickFromMappedKey(T, K, options) {
18
+ const P = FromMappedKey(T, K, options);
19
+ return MappedResult(P);
20
+ }
@@ -6,7 +6,7 @@ import { type TUnion } from '../union/index.mjs';
6
6
  import { type TObject, type TProperties } from '../object/index.mjs';
7
7
  import { type TIndexPropertyKeys } from '../indexed/index.mjs';
8
8
  import { TMappedKey } from '../mapped/index.mjs';
9
- import { type TPickMappedResult } from './pick-mapped-result.mjs';
9
+ import { type TPickFromMappedKey } from './pick-from-mapped-key.mjs';
10
10
  type FromIntersect<T extends TSchema[], K extends PropertyKey[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [PickResolve<L, K>, ...FromIntersect<R, K>] : [];
11
11
  declare function FromIntersect<T extends TSchema[], K extends PropertyKey[]>(T: T, K: K): FromIntersect<T, K>;
12
12
  type FromUnion<T extends TSchema[], K extends PropertyKey[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [PickResolve<L, K>, ...FromUnion<R, K>] : [];
@@ -16,7 +16,7 @@ declare function FromProperties<T extends TProperties, K extends PropertyKey[]>(
16
16
  export type PickResolve<T extends TProperties, K extends PropertyKey[]> = T extends TRecursive<infer S> ? TRecursive<PickResolve<S, K>> : T extends TIntersect<infer S> ? TIntersect<FromIntersect<S, K>> : T extends TUnion<infer S> ? TUnion<FromUnion<S, K>> : T extends TObject<infer S> ? TObject<FromProperties<S, K>> : TObject<{}>;
17
17
  export declare function PickResolve<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): PickResolve<T, K>;
18
18
  export type TPick<T extends TSchema, K extends PropertyKey[]> = PickResolve<T, K>;
19
- export declare function Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickMappedResult<T, K>;
19
+ export declare function Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickFromMappedKey<T, K>;
20
20
  export declare function Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
21
21
  export declare function Pick<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TPick<T, K>;
22
22
  export {};
@@ -5,7 +5,7 @@ import { IndexPropertyKeys } from '../indexed/index.mjs';
5
5
  import { Discard } from '../discard/index.mjs';
6
6
  import { TransformKind } from '../symbols/index.mjs';
7
7
  import { CloneType } from '../clone/type.mjs';
8
- import { PickMappedResult } from './pick-mapped-result.mjs';
8
+ import { PickFromMappedKey } from './pick-from-mapped-key.mjs';
9
9
  import { TMappedKey as IsMappedKeyType, TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType, TSchema as IsSchemaType, } from '../guard/type.mjs';
10
10
  function FromIntersect(T, K) {
11
11
  return T.map((T) => PickResolve(T, K));
@@ -26,7 +26,7 @@ export function PickResolve(T, K) {
26
26
  }
27
27
  export function Pick(T, K, options = {}) {
28
28
  if (IsMappedKeyType(K)) {
29
- return PickMappedResult(T, K);
29
+ return PickFromMappedKey(T, K, options);
30
30
  }
31
31
  else {
32
32
  const I = IsSchemaType(K) ? IndexPropertyKeys(K) : K;
@@ -40,7 +40,6 @@ declare function FromIntegerKey<K extends TInteger, T extends TSchema>(_: K, T:
40
40
  type FromNumberKey<_ extends TSchema, T extends TSchema> = (Ensure<TRecord<TNumber, T>>);
41
41
  declare function FromNumberKey<K extends TNumber, T extends TSchema>(_: K, T: T): FromIntegerKey<K, T>;
42
42
  export type RecordResolve<K extends TSchema, T extends TSchema> = K extends TEnum<infer S> ? FromEnumKey<S, T> : K extends TUnion<infer S> ? FromUnionKey<S, T> : K extends TTemplateLiteral ? FromTemplateLiteralKey<K, T> : K extends TLiteral<infer S> ? FromLiteralKey<S, T> : K extends TInteger ? FromIntegerKey<K, T> : K extends TNumber ? FromNumberKey<K, T> : K extends TString ? FromStringKey<K, T> : TNever;
43
- export declare function RecordResolve<K extends TSchema, T extends TSchema>(K: K, T: T): RecordResolve<K, T>;
44
43
  export interface TRecord<K extends TSchema = TSchema, T extends TSchema = TSchema> extends TSchema {
45
44
  [Kind]: 'Record';
46
45
  static: Record<Assert<Static<K>, string | number>, Static<T, this['params']>>;
@@ -37,7 +37,7 @@ function FromIntegerKey(_, T) {
37
37
  function FromNumberKey(_, T) {
38
38
  return FromPattern(PatternNumberExact, T);
39
39
  }
40
- export function RecordResolve(K, T) {
40
+ function RecordResolve(K, T) {
41
41
  return (IsUnionType(K) ? FromUnionKey(K.anyOf, T) :
42
42
  IsTemplateLiteralType(K) ? FromTemplateLiteralKey(K, T) :
43
43
  IsLiteralType(K) ? FromLiteralKey(K.const, T) :
@@ -6,9 +6,10 @@ export interface TThis extends TSchema {
6
6
  static: this['params'][0];
7
7
  $ref: string;
8
8
  }
9
- export type RecursiveResolve<T extends TSchema> = Static<T, [RecursiveResolve<T>]>;
9
+ type RecursiveStatic<T extends TSchema> = Static<T, [RecursiveStatic<T>]>;
10
10
  export interface TRecursive<T extends TSchema> extends TSchema {
11
11
  [Hint]: 'Recursive';
12
- static: RecursiveResolve<T>;
12
+ static: RecursiveStatic<T>;
13
13
  }
14
14
  export declare function Recursive<T extends TSchema>(callback: (thisType: TThis) => T, options?: SchemaOptions): TRecursive<T>;
15
+ export {};
@@ -7,9 +7,5 @@ export function Recursive(callback, options = {}) {
7
7
  options.$id = `T${Ordinal++}`;
8
8
  const thisType = callback({ [Kind]: 'This', $ref: `${options.$id}` });
9
9
  thisType.$id = options.$id;
10
- return CloneType({
11
- ...options,
12
- [Hint]: 'Recursive',
13
- ...thisType,
14
- });
10
+ return CloneType({ ...options, [Hint]: 'Recursive', ...thisType });
15
11
  }
@@ -1 +1,2 @@
1
+ export * from './required-from-mapped-result.mjs';
1
2
  export * from './required.mjs';
@@ -1 +1,2 @@
1
+ export * from './required-from-mapped-result.mjs';
1
2
  export * from './required.mjs';
@@ -0,0 +1,13 @@
1
+ import type { SchemaOptions } from '../schema/index.mjs';
2
+ import type { TProperties } from '../object/index.mjs';
3
+ import { type TMappedResult } from '../mapped/index.mjs';
4
+ import { type TRequired } from './required.mjs';
5
+ type FromProperties<K extends TProperties> = ({
6
+ [K2 in keyof K]: TRequired<K[K2]>;
7
+ });
8
+ declare function FromProperties<K extends TProperties>(K: K, options: SchemaOptions): FromProperties<K>;
9
+ type FromMappedResult<K extends TMappedResult> = (FromProperties<K['properties']>);
10
+ declare function FromMappedResult<K extends TMappedResult>(K: K, options: SchemaOptions): FromMappedResult<K>;
11
+ export type TRequiredFromMappedResult<T extends TMappedResult, P extends TProperties = FromMappedResult<T>> = (TMappedResult<P>);
12
+ export declare function RequiredFromMappedResult<T extends TMappedResult, P extends TProperties = FromMappedResult<T>>(T: T, options: SchemaOptions): TMappedResult<P>;
13
+ export {};
@@ -0,0 +1,14 @@
1
+ import { MappedResult } from '../mapped/index.mjs';
2
+ import { Required } from './required.mjs';
3
+ function FromProperties(K, options) {
4
+ return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
5
+ return { ...Acc, [K2]: Required(K[K2], options) };
6
+ }, {});
7
+ }
8
+ function FromMappedResult(K, options) {
9
+ return FromProperties(K.properties, options);
10
+ }
11
+ export function RequiredFromMappedResult(T, options) {
12
+ const P = FromMappedResult(T, options);
13
+ return MappedResult(P);
14
+ }
@@ -1,5 +1,6 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { Evaluate } from '../helpers/index.mjs';
3
+ import type { TMappedResult } from '../mapped/index.mjs';
3
4
  import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
4
5
  import { type TOptional } from '../optional/index.mjs';
5
6
  import { type TReadonly } from '../readonly/index.mjs';
@@ -7,6 +8,7 @@ import { type TRecursive } from '../recursive/index.mjs';
7
8
  import { type TIntersect } from '../intersect/index.mjs';
8
9
  import { type TUnion } from '../union/index.mjs';
9
10
  import { type TObject, type TProperties } from '../object/index.mjs';
11
+ import { type TRequiredFromMappedResult } from './required-from-mapped-result.mjs';
10
12
  type FromIntersect<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [RequiredResolve<L>, ...FromIntersect<R>] : []);
11
13
  declare function FromIntersect<T extends TSchema[]>(T: [...T]): FromIntersect<T>;
12
14
  type FromUnion<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [RequiredResolve<L>, ...FromUnion<R>] : []);
@@ -15,8 +17,9 @@ type FromProperties<T extends TProperties> = Evaluate<{
15
17
  [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
18
  }>;
17
19
  declare function FromProperties<T extends TProperties>(T: T): TProperties;
18
- export type RequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<RequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<FromIntersect<S>> : T extends TUnion<infer S> ? TUnion<FromUnion<S>> : T extends TObject<infer S> ? TObject<FromProperties<S>> : TObject<{}>);
19
- export declare function RequiredResolve<T extends TSchema>(T: T): RequiredResolve<T>;
20
+ type RequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<RequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<FromIntersect<S>> : T extends TUnion<infer S> ? TUnion<FromUnion<S>> : T extends TObject<infer S> ? TObject<FromProperties<S>> : TObject<{}>);
21
+ declare function RequiredResolve<T extends TSchema>(T: T): RequiredResolve<T>;
20
22
  export type TRequired<T extends TSchema> = RequiredResolve<T>;
23
+ export declare function Required<T extends TMappedResult>(T: T, options?: SchemaOptions): TRequiredFromMappedResult<T>;
21
24
  export declare function Required<T extends TSchema>(T: T, options?: SchemaOptions): TRequired<T>;
22
25
  export {};
@@ -4,7 +4,8 @@ import { Object } from '../object/index.mjs';
4
4
  import { OptionalKind, TransformKind } from '../symbols/index.mjs';
5
5
  import { CloneType } from '../clone/type.mjs';
6
6
  import { Discard } from '../discard/index.mjs';
7
- import { TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType } from '../guard/type.mjs';
7
+ import { RequiredFromMappedResult } from './required-from-mapped-result.mjs';
8
+ import { TMappedResult as IsMappedResultType, TIntersect as IsIntersectType, TUnion as IsUnionType, TObject as IsObjectType } from '../guard/type.mjs';
8
9
  function FromIntersect(T) {
9
10
  const [L, ...R] = T;
10
11
  return (T.length > 0
@@ -22,14 +23,19 @@ function FromProperties(T) {
22
23
  return { ...Acc, [K]: Discard(T[K], [OptionalKind]) };
23
24
  }, {});
24
25
  }
25
- export function RequiredResolve(T) {
26
+ function RequiredResolve(T) {
26
27
  return (IsIntersectType(T) ? Intersect(FromIntersect(T.allOf)) :
27
28
  IsUnionType(T) ? Union(FromUnion(T.anyOf)) :
28
29
  IsObjectType(T) ? Object(FromProperties(T.properties)) :
29
30
  Object({}));
30
31
  }
31
32
  export function Required(T, options = {}) {
32
- const D = Discard(T, [TransformKind, '$id', 'required']);
33
- const R = CloneType(RequiredResolve(T), options);
34
- return { ...D, ...R };
33
+ if (IsMappedResultType(T)) {
34
+ return RequiredFromMappedResult(T, options);
35
+ }
36
+ else {
37
+ const D = Discard(T, [TransformKind, '$id', 'required']);
38
+ const R = CloneType(RequiredResolve(T), options);
39
+ return { ...D, ...R };
40
+ }
35
41
  }
@@ -1,19 +1,19 @@
1
- import type { Ensure, Assert, Trim } from '../helpers/index.mjs';
1
+ import type { Assert, Trim } from '../helpers/index.mjs';
2
2
  import type { TTemplateLiteralKind, TTemplateLiteral } from './index.mjs';
3
3
  import { type TLiteral } from '../literal/index.mjs';
4
4
  import { type TBoolean } from '../boolean/index.mjs';
5
5
  import { type TBigInt } from '../bigint/index.mjs';
6
6
  import { type TNumber } from '../number/index.mjs';
7
7
  import { type TString } from '../string/index.mjs';
8
- import { UnionResolve } from '../union/index.mjs';
8
+ import { UnionEvaluated } from '../union/index.mjs';
9
9
  declare function FromUnion(syntax: string): IterableIterator<TTemplateLiteralKind>;
10
10
  declare function FromTerminal(syntax: string): IterableIterator<TTemplateLiteralKind>;
11
11
  type FromUnionLiteral<T extends string> = T extends `${infer L}|${infer R}` ? [TLiteral<Trim<L>>, ...FromUnionLiteral<R>] : T extends `${infer L}` ? [TLiteral<Trim<L>>] : [
12
12
  ];
13
- type FromUnion<T extends string> = UnionResolve<FromUnionLiteral<T>>;
13
+ type FromUnion<T extends string> = UnionEvaluated<FromUnionLiteral<T>>;
14
14
  type FromTerminal<T extends string> = T extends 'boolean' ? TBoolean : T extends 'bigint' ? TBigInt : T extends 'number' ? TNumber : T extends 'string' ? TString : FromUnion<T>;
15
15
  type FromString<T extends string> = T extends `{${infer L}}${infer R}` ? [FromTerminal<L>, ...FromString<R>] : T extends `${infer L}$${infer R}` ? [TLiteral<L>, ...FromString<R>] : T extends `${infer L}` ? [TLiteral<L>] : [
16
16
  ];
17
- export type TemplateLiteralSyntax<T extends string> = Ensure<TTemplateLiteral<Assert<FromString<T>, TTemplateLiteralKind[]>>>;
17
+ export type TemplateLiteralSyntax<T extends string> = (TTemplateLiteral<Assert<FromString<T>, TTemplateLiteralKind[]>>);
18
18
  export declare function TemplateLiteralSyntax(syntax: string): TTemplateLiteralKind[];
19
19
  export {};
@@ -12,14 +12,14 @@ import type { Static } from '../static/index.mjs';
12
12
  import { TemplateLiteralSyntax } from './syntax.mjs';
13
13
  import { EmptyString } from '../helpers/index.mjs';
14
14
  import { Kind } from '../symbols/index.mjs';
15
- type TemplateLiteralResolveConst<T, Acc extends string> = T extends TUnion<infer U> ? {
16
- [K in keyof U]: TemplateLiteralResolve<Assert<[U[K]], TTemplateLiteralKind[]>, Acc>;
15
+ type TemplateLiteralStaticKind<T, Acc extends string> = T extends TUnion<infer U> ? {
16
+ [K in keyof U]: TemplateLiteralStatic<Assert<[U[K]], TTemplateLiteralKind[]>, Acc>;
17
17
  }[number] : T extends TTemplateLiteral ? `${Static<T>}` : T extends TLiteral<infer U> ? `${U}` : T extends TString ? `${string}` : T extends TNumber ? `${number}` : T extends TBigInt ? `${bigint}` : T extends TBoolean ? `${boolean}` : never;
18
- export type TemplateLiteralResolve<T extends TTemplateLiteralKind[], Acc extends string> = T extends [infer L, ...infer R] ? `${TemplateLiteralResolveConst<L, Acc>}${TemplateLiteralResolve<Assert<R, TTemplateLiteralKind[]>, Acc>}` : Acc;
18
+ type TemplateLiteralStatic<T extends TTemplateLiteralKind[], Acc extends string> = T extends [infer L, ...infer R] ? `${TemplateLiteralStaticKind<L, Acc>}${TemplateLiteralStatic<Assert<R, TTemplateLiteralKind[]>, Acc>}` : Acc;
19
19
  export type TTemplateLiteralKind = TTemplateLiteral | TUnion | TLiteral | TInteger | TNumber | TBigInt | TString | TBoolean | TNever;
20
20
  export interface TTemplateLiteral<T extends TTemplateLiteralKind[] = TTemplateLiteralKind[]> extends TSchema {
21
21
  [Kind]: 'TemplateLiteral';
22
- static: TemplateLiteralResolve<T, EmptyString>;
22
+ static: TemplateLiteralStatic<T, EmptyString>;
23
23
  type: 'string';
24
24
  pattern: string;
25
25
  }
@@ -14,15 +14,16 @@ export declare class TransformEncodeBuilder<T extends TSchema, D extends Transfo
14
14
  private EncodeSchema;
15
15
  Encode<E extends TransformFunction<ReturnType<D>, StaticDecode<T>>>(encode: E): TTransform<T, ReturnType<D>>;
16
16
  }
17
+ type TransformStatic<T extends TSchema, P extends unknown[] = []> = T extends TTransform<infer _, infer S> ? S : Static<T, P>;
17
18
  export type TransformFunction<T = any, U = any> = (value: T) => U;
18
19
  export interface TransformOptions<I extends TSchema = TSchema, O extends unknown = unknown> {
19
20
  Decode: TransformFunction<StaticDecode<I>, O>;
20
21
  Encode: TransformFunction<O, StaticDecode<I>>;
21
22
  }
22
- export type TTransformResolve<T extends TSchema, P extends unknown[] = []> = T extends TTransform<infer _, infer S> ? S : Static<T, P>;
23
23
  export interface TTransform<I extends TSchema = TSchema, O extends unknown = unknown> extends TSchema {
24
- static: TTransformResolve<I, this['params']>;
24
+ static: TransformStatic<I, this['params']>;
25
25
  [TransformKind]: TransformOptions<I, O>;
26
26
  [key: string]: any;
27
27
  }
28
28
  export declare function Transform<I extends TSchema>(schema: I): TransformDecodeBuilder<I>;
29
+ export {};
@@ -1,6 +1,6 @@
1
- import { TTransform as IsTransform } from '../guard/type.mjs';
2
1
  import { CloneType } from '../clone/type.mjs';
3
2
  import { TransformKind } from '../symbols/index.mjs';
3
+ import { TTransform as IsTransform } from '../guard/type.mjs';
4
4
  export class TransformDecodeBuilder {
5
5
  schema;
6
6
  constructor(schema) {
@@ -1,11 +1,11 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { Static } from '../static/index.mjs';
3
3
  import { Kind } from '../symbols/index.mjs';
4
- type FromRest<T extends TSchema[], P extends unknown[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [Static<L, P>, ...FromRest<R, P>] : [];
5
- type TupleResolve<T extends TSchema[], P extends unknown[], R extends unknown[] = FromRest<T, P>> = R;
4
+ type TupleStaticRest<T extends TSchema[], P extends unknown[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [Static<L, P>, ...TupleStaticRest<R, P>] : [];
5
+ type TupleStatic<T extends TSchema[], P extends unknown[], R extends unknown[] = TupleStaticRest<T, P>> = R;
6
6
  export interface TTuple<T extends TSchema[] = TSchema[]> extends TSchema {
7
7
  [Kind]: 'Tuple';
8
- static: TupleResolve<T, this['params']>;
8
+ static: TupleStatic<T, this['params']>;
9
9
  type: 'array';
10
10
  items?: T;
11
11
  additionalItems?: false;
@@ -5,14 +5,14 @@ import { type TComposite } from '../composite/index.mjs';
5
5
  import { type TConst } from '../const/index.mjs';
6
6
  import { type TDeref } from '../deref/index.mjs';
7
7
  import { type TEnum, type TEnumKey, type TEnumValue } from '../enum/index.mjs';
8
- import { type TExclude } from '../exclude/index.mjs';
9
- import { type TExtends, type TExtendsMappedResult, type TExtendsMappedResultFromResult } from '../extends/index.mjs';
10
- import { type TExtract } from '../extract/index.mjs';
11
- import { TIndex, type TIndexPropertyKeys, type TIndexMappedResult } from '../indexed/index.mjs';
8
+ import { type TExclude, type TExcludeFromMappedResult } from '../exclude/index.mjs';
9
+ import { type TExtends, type TExtendsFromMappedKey, type TExtendsFromMappedResult } from '../extends/index.mjs';
10
+ import { type TExtract, type TExtractFromMappedResult } from '../extract/index.mjs';
11
+ import { TIndex, type TIndexPropertyKeys, type TIndexFromMappedKey } from '../indexed/index.mjs';
12
12
  import { type IntegerOptions, type TInteger } from '../integer/index.mjs';
13
- import { type IntersectOptions, type IntersectResolve } from '../intersect/index.mjs';
13
+ import { Intersect, type IntersectOptions } from '../intersect/index.mjs';
14
14
  import { type TCapitalize, type TUncapitalize, type TLowercase, type TUppercase } from '../intrinsic/index.mjs';
15
- import { type TKeyOf } from '../keyof/index.mjs';
15
+ import { type TKeyOf, type TKeyOfFromMappedResult } from '../keyof/index.mjs';
16
16
  import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
17
17
  import { type TMappedFunction, type TMapped, type TMappedResult } from '../mapped/index.mjs';
18
18
  import { type TNever } from '../never/index.mjs';
@@ -21,23 +21,23 @@ import { type TNull } from '../null/index.mjs';
21
21
  import { type TMappedKey } from '../mapped/index.mjs';
22
22
  import { type TNumber, type NumberOptions } from '../number/index.mjs';
23
23
  import { type TObject, type TProperties, type ObjectOptions } from '../object/index.mjs';
24
- import { type TOmit, type TOmitMappedResult } from '../omit/index.mjs';
24
+ import { type TOmit, type TOmitFromMappedKey } from '../omit/index.mjs';
25
25
  import { type TOptional } from '../optional/index.mjs';
26
- import { type TPartial } from '../partial/index.mjs';
27
- import { type TPick, type TPickMappedResult } from '../pick/index.mjs';
26
+ import { type TPartial, type TPartialFromMappedResult } from '../partial/index.mjs';
27
+ import { type TPick, type TPickFromMappedKey } from '../pick/index.mjs';
28
28
  import { type TReadonly } from '../readonly/index.mjs';
29
29
  import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
30
30
  import { type RecordResolve } from '../record/index.mjs';
31
31
  import { type TRecursive, type TThis } from '../recursive/index.mjs';
32
32
  import { type TRef } from '../ref/index.mjs';
33
- import { type TRequired } from '../required/index.mjs';
33
+ import { type TRequired, type TRequiredFromMappedResult } from '../required/index.mjs';
34
34
  import { type TRest } from '../rest/index.mjs';
35
35
  import { type TSchema, type SchemaOptions } from '../schema/index.mjs';
36
36
  import { type TString, type StringOptions } from '../string/index.mjs';
37
37
  import { type TTemplateLiteral, type TTemplateLiteralKind, type TemplateLiteralSyntax } from '../template-literal/index.mjs';
38
38
  import { TransformDecodeBuilder } from '../transform/index.mjs';
39
39
  import { type TTuple } from '../tuple/index.mjs';
40
- import { type UnionResolve } from '../union/index.mjs';
40
+ import { Union } from '../union/index.mjs';
41
41
  import { type TUnknown } from '../unknown/index.mjs';
42
42
  import { type TUnsafe, type UnsafeOptions } from '../unsafe/index.mjs';
43
43
  export declare class JsonTypeBuilder {
@@ -53,16 +53,19 @@ export declare class JsonTypeBuilder {
53
53
  Const<T>(value: T, options?: SchemaOptions): TConst<T>;
54
54
  Deref<T extends TSchema>(schema: T, references: TSchema[]): TDeref<T>;
55
55
  Enum<V extends TEnumValue, T extends Record<TEnumKey, V>>(item: T, options?: SchemaOptions): TEnum<T>;
56
- Extends<L extends TMappedResult, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtendsMappedResultFromResult<L, R, T, F>;
57
- Extends<L extends TMappedKey, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtendsMappedResult<L, R, T, F>;
58
- Extends<L extends TSchema, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtends<L, R, T, F>;
56
+ Exclude<L extends TMappedResult, R extends TSchema>(unionType: L, excludedMembers: R, options?: SchemaOptions): TExcludeFromMappedResult<L, R>;
59
57
  Exclude<L extends TSchema, R extends TSchema>(unionType: L, excludedMembers: R, options?: SchemaOptions): TExclude<L, R>;
58
+ Extends<L extends TMappedResult, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtendsFromMappedResult<L, R, T, F>;
59
+ Extends<L extends TMappedKey, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtendsFromMappedKey<L, R, T, F>;
60
+ Extends<L extends TSchema, R extends TSchema, T extends TSchema, F extends TSchema>(L: L, R: R, T: T, F: F, options?: SchemaOptions): TExtends<L, R, T, F>;
61
+ Extract<L extends TMappedResult, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtractFromMappedResult<L, R>;
60
62
  Extract<L extends TSchema, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtract<L, R>;
61
- Index<T extends TSchema, K extends TMappedKey>(T: T, K: K): TIndexMappedResult<T, K>;
63
+ Index<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TIndexFromMappedKey<T, K>;
62
64
  Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
63
65
  Index<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TIndex<T, K>;
64
66
  Integer(options?: IntegerOptions): TInteger;
65
- Intersect<T extends TSchema[]>(T: [...T], options?: IntersectOptions): IntersectResolve<T>;
67
+ Intersect<T extends TSchema[]>(T: [...T], options?: IntersectOptions): Intersect<T>;
68
+ KeyOf<T extends TMappedResult>(schema: T, options?: SchemaOptions): TKeyOfFromMappedResult<T>;
66
69
  KeyOf<T extends TSchema>(schema: T, options?: SchemaOptions): TKeyOf<T>;
67
70
  Literal<T extends TLiteralValue>(value: T, options?: SchemaOptions): TLiteral<T>;
68
71
  Lowercase<T extends TSchema>(schema: T, options?: SchemaOptions): TLowercase<T>;
@@ -73,18 +76,20 @@ export declare class JsonTypeBuilder {
73
76
  Null(options?: SchemaOptions): TNull;
74
77
  Number(options?: NumberOptions): TNumber;
75
78
  Object<T extends TProperties>(properties: T, options?: ObjectOptions): TObject<T>;
76
- Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K): TOmitMappedResult<T, K>;
79
+ Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K): TOmitFromMappedKey<T, K>;
77
80
  Omit<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TOmit<T, I>;
78
81
  Omit<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TOmit<T, K>;
82
+ Partial<T extends TMappedResult>(T: T, options?: ObjectOptions): TPartialFromMappedResult<T>;
79
83
  Partial<T extends TSchema>(schema: T, options?: ObjectOptions): TPartial<T>;
80
- Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickMappedResult<T, K>;
84
+ Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickFromMappedKey<T, K>;
81
85
  Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
82
86
  Pick<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TPick<T, K>;
83
87
  Record<K extends TSchema, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): RecordResolve<K, T>;
84
88
  Recursive<T extends TSchema>(callback: (thisType: TThis) => T, options?: SchemaOptions): TRecursive<T>;
85
89
  Ref<T extends TSchema>(schema: T, options?: SchemaOptions): TRef<T>;
86
90
  Ref<T extends TSchema>($ref: string, options?: SchemaOptions): TRef<T>;
87
- Required<T extends TSchema>(schema: T, options?: SchemaOptions): TRequired<T>;
91
+ Required<T extends TMappedResult>(T: T, options?: ObjectOptions): TRequiredFromMappedResult<T>;
92
+ Required<T extends TSchema>(schema: T, options?: ObjectOptions): TRequired<T>;
88
93
  Rest<T extends TSchema>(schema: T): TRest<T>;
89
94
  String(options?: StringOptions): TString;
90
95
  TemplateLiteral<T extends string>(syntax: T, options?: SchemaOptions): TemplateLiteralSyntax<T>;
@@ -92,7 +97,7 @@ export declare class JsonTypeBuilder {
92
97
  Transform<I extends TSchema>(schema: I): TransformDecodeBuilder<I>;
93
98
  Tuple<T extends TSchema[]>(items: [...T], options?: SchemaOptions): TTuple<T>;
94
99
  Uncapitalize<T extends TSchema>(schema: T, options?: SchemaOptions): TUncapitalize<T>;
95
- Union<T extends TSchema[]>(schemas: [...T], options?: SchemaOptions): UnionResolve<T>;
100
+ Union<T extends TSchema[]>(schemas: [...T], options?: SchemaOptions): Union<T>;
96
101
  Unknown(options?: SchemaOptions): TUnknown;
97
102
  Unsafe<T>(options?: UnsafeOptions): TUnsafe<T>;
98
103
  Uppercase<T extends TSchema>(schema: T, options?: SchemaOptions): TUppercase<T>;
@@ -76,12 +76,12 @@ export class JsonTypeBuilder {
76
76
  Enum(item, options = {}) {
77
77
  return Enum(item, options);
78
78
  }
79
- Extends(L, R, T, F, options = {}) {
80
- return Extends(L, R, T, F, options);
81
- }
82
79
  Exclude(unionType, excludedMembers, options = {}) {
83
80
  return Exclude(unionType, excludedMembers, options);
84
81
  }
82
+ Extends(L, R, T, F, options = {}) {
83
+ return Extends(L, R, T, F, options);
84
+ }
85
85
  Extract(type, union, options = {}) {
86
86
  return Extract(type, union, options);
87
87
  }
@@ -1 +1,3 @@
1
+ export * from './union-evaluated.mjs';
2
+ export * from './union-type.mjs';
1
3
  export * from './union.mjs';
@@ -1 +1,3 @@
1
+ export * from './union-evaluated.mjs';
2
+ export * from './union-type.mjs';
1
3
  export * from './union.mjs';
@@ -0,0 +1,3 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { TUnion } from './union-type.mjs';
3
+ export declare function UnionCreate<T extends TSchema[]>(T: [...T], options: SchemaOptions): TUnion<T>;
@@ -0,0 +1,5 @@
1
+ import { CloneRest } from '../clone/type.mjs';
2
+ import { Kind } from '../symbols/index.mjs';
3
+ export function UnionCreate(T, options) {
4
+ return { ...options, [Kind]: 'Union', anyOf: CloneRest(T) };
5
+ }