@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
@@ -0,0 +1,16 @@
1
+ import type { SchemaOptions, TSchema } from '../schema/index.mjs';
2
+ import { type TNever } from '../never/index.mjs';
3
+ import { type TOptional } from '../optional/index.mjs';
4
+ import type { TReadonly } from '../readonly/index.mjs';
5
+ import type { TUnion } from './union-type.mjs';
6
+ type IsUnionOptional<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TOptional<TSchema> ? true : IsUnionOptional<R> : false);
7
+ declare function IsUnionOptional<T extends TSchema[]>(T: T): IsUnionOptional<T>;
8
+ type RemoveOptionalFromRest<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TOptional<infer S extends TSchema> ? [RemoveOptionalFromType<S>, ...RemoveOptionalFromRest<R>] : [L, ...RemoveOptionalFromRest<R>] : []);
9
+ declare function RemoveOptionalFromRest<T extends TSchema[]>(T: T): RemoveOptionalFromRest<T>;
10
+ type RemoveOptionalFromType<T extends TSchema> = (T extends TReadonly<infer S extends TSchema> ? TReadonly<RemoveOptionalFromType<S>> : T extends TOptional<infer S extends TSchema> ? RemoveOptionalFromType<S> : T);
11
+ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptionalFromType<T>;
12
+ type ResolveUnion<T extends TSchema[], R extends TSchema[] = RemoveOptionalFromRest<T>> = (IsUnionOptional<T> extends true ? TOptional<TUnion<R>> : TUnion<R>);
13
+ declare function ResolveUnion<T extends TSchema[]>(T: T, options: SchemaOptions): ResolveUnion<T>;
14
+ export type UnionEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveUnion<T>);
15
+ export declare function UnionEvaluated<T extends TSchema[], R = UnionEvaluated<T>>(T: [...T], options?: SchemaOptions): R;
16
+ export {};
@@ -0,0 +1,31 @@
1
+ import { OptionalKind } from '../symbols/index.mjs';
2
+ import { CloneType } from '../clone/type.mjs';
3
+ import { Discard } from '../discard/index.mjs';
4
+ import { Never } from '../never/index.mjs';
5
+ import { Optional } from '../optional/index.mjs';
6
+ import { UnionCreate } from './union-create.mjs';
7
+ import { TOptional as IsOptionalType } from '../guard/type.mjs';
8
+ function IsUnionOptional(T) {
9
+ const [L, ...R] = T;
10
+ return (T.length > 0
11
+ ? IsOptionalType(L)
12
+ ? true
13
+ : IsUnionOptional(R)
14
+ : false);
15
+ }
16
+ function RemoveOptionalFromRest(T) {
17
+ return (T.map(T => RemoveOptionalFromType(T)));
18
+ }
19
+ function RemoveOptionalFromType(T) {
20
+ return (Discard(T, [OptionalKind]));
21
+ }
22
+ function ResolveUnion(T, options) {
23
+ return (IsUnionOptional(T)
24
+ ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))
25
+ : UnionCreate(RemoveOptionalFromRest(T), options));
26
+ }
27
+ export function UnionEvaluated(T, options = {}) {
28
+ return (T.length === 0 ? Never(options) :
29
+ T.length === 1 ? CloneType(T[0], options) :
30
+ ResolveUnion(T, options));
31
+ }
@@ -0,0 +1,12 @@
1
+ import type { TSchema } from '../schema/index.mjs';
2
+ import type { Static } from '../static/index.mjs';
3
+ import { Kind } from '../symbols/index.mjs';
4
+ type UnionStatic<T extends TSchema[], P extends unknown[]> = {
5
+ [K in keyof T]: T[K] extends TSchema ? Static<T[K], P> : never;
6
+ }[number];
7
+ export interface TUnion<T extends TSchema[] = TSchema[]> extends TSchema {
8
+ [Kind]: 'Union';
9
+ static: UnionStatic<T, this['params']>;
10
+ anyOf: T;
11
+ }
12
+ export {};
@@ -0,0 +1 @@
1
+ import { Kind } from '../symbols/index.mjs';
@@ -1,15 +1,5 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
- import type { Static } from '../static/index.mjs';
3
2
  import { type TNever } from '../never/index.mjs';
4
- import { OptionalFromUnion } from '../modifiers/index.mjs';
5
- import { Kind } from '../symbols/index.mjs';
6
- export type UnionResolve<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : OptionalFromUnion<T>);
7
- export declare function UnionResolve<T extends TSchema[]>(T: [...T]): UnionResolve<T>;
8
- export interface TUnion<T extends TSchema[] = TSchema[]> extends TSchema {
9
- [Kind]: 'Union';
10
- static: {
11
- [K in keyof T]: T[K] extends TSchema ? Static<T[K], this['params']> : never;
12
- }[number];
13
- anyOf: T;
14
- }
15
- export declare function Union<T extends TSchema[]>(T: [...T], options?: SchemaOptions): UnionResolve<T>;
3
+ import type { TUnion } from './union-type.mjs';
4
+ export type Union<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TUnion<T>);
5
+ export declare function Union<T extends TSchema[]>(T: [...T], options?: SchemaOptions): Union<T>;
@@ -1,15 +1,8 @@
1
1
  import { Never } from '../never/index.mjs';
2
- import { OptionalFromUnion } from '../modifiers/index.mjs';
3
- import { CloneType, CloneRest } from '../clone/type.mjs';
4
- import { Kind } from '../symbols/index.mjs';
5
- export function UnionResolve(T) {
6
- return (T.length === 0 ? Never() :
7
- T.length === 1 ? T[0] :
8
- OptionalFromUnion(T));
9
- }
2
+ import { CloneType } from '../clone/type.mjs';
3
+ import { UnionCreate } from './union-create.mjs';
10
4
  export function Union(T, options = {}) {
11
5
  return (T.length === 0 ? Never(options) :
12
6
  T.length === 1 ? CloneType(T[0], options) :
13
- { ...options, [Kind]: 'Union', anyOf: CloneRest(T)
14
- });
7
+ UnionCreate(T, options));
15
8
  }
@@ -17,7 +17,7 @@ export declare const Delete: import("../../type/object/object.mjs").TObject<{
17
17
  path: import("../../type/string/string.mjs").TString;
18
18
  }>;
19
19
  export type Edit = Static<typeof Edit>;
20
- export declare const Edit: import("../../type/union/union.mjs").TUnion<[import("../../type/object/object.mjs").TObject<{
20
+ export declare const Edit: import("../../type/union/union-type.mjs").TUnion<[import("../../type/object/object.mjs").TObject<{
21
21
  type: import("../../type/literal/literal.mjs").TLiteral<"insert">;
22
22
  path: import("../../type/string/string.mjs").TString;
23
23
  value: import("../../type/unknown/unknown.mjs").TUnknown;
@@ -16,18 +16,18 @@ export { ConstructorParameters, type TConstructorParameters } from './type/const
16
16
  export { Date, type TDate, type DateOptions } from './type/date/index';
17
17
  export { Deref, type TDeref } from './type/deref/index';
18
18
  export { Enum, type TEnum } from './type/enum/index';
19
- export { Exclude, type TExclude } from './type/exclude/index';
20
- export { Extends, type TExtends, ExtendsCheck, ExtendsResult, ExtendsUndefinedCheck } from './type/extends/index';
21
- export { Extract, type TExtract } from './type/extract/index';
19
+ export { Exclude, type TExclude, type TExcludeFromMappedResult } from './type/exclude/index';
20
+ export { Extends, type TExtends, type ExtendsFromMappedResult, type ExtendsFromMappedKey, ExtendsCheck, ExtendsResult, ExtendsUndefinedCheck } from './type/extends/index';
21
+ export { Extract, type TExtract, type TExtractFromMappedResult } from './type/extract/index';
22
22
  export { Function, type TFunction } from './type/function/index';
23
23
  export { Increment, type Assert, type AssertType, type AssertRest, type AssertProperties, type Ensure, type Evaluate, type TupleToIntersect, type TupleToUnion, type UnionToTuple } from './type/helpers/index';
24
- export { Index, IndexPropertyKeys, IndexMappedResult, type TIndex, type TIndexPropertyKeys, type TIndexMappedResult } from './type/indexed/index';
24
+ export { Index, IndexPropertyKeys, IndexFromMappedKey, type TIndex, type TIndexPropertyKeys, type TIndexFromMappedKey } from './type/indexed/index';
25
25
  export { InstanceType, type TInstanceType } from './type/instance-type/index';
26
26
  export { Integer, type TInteger, type IntegerOptions } from './type/integer/index';
27
- export { Intersect, type TIntersect, type IntersectOptions } from './type/intersect/index';
27
+ export { Intersect, IntersectEvaluated, type TIntersect, type IntersectOptions } from './type/intersect/index';
28
28
  export { Iterator, type TIterator } from './type/iterator/index';
29
- export { Intrinsic, type TIntrinsic, Capitalize, type TCapitalize, Lowercase, type TLowercase, Uncapitalize, type TUncapitalize, Uppercase, type TUppercase } from './type/intrinsic/index';
30
- export { KeyOf, type TKeyOf, KeyOfPropertyKeys, KeyOfPattern } from './type/keyof/index';
29
+ export { Intrinsic, IntrinsicFromMappedKey, type TIntrinsic, Capitalize, type TCapitalize, Lowercase, type TLowercase, Uncapitalize, type TUncapitalize, Uppercase, type TUppercase } from './type/intrinsic/index';
30
+ export { KeyOf, type TKeyOf, type KeyOfFromMappedResult, KeyOfPropertyKeys, KeyOfPattern } from './type/keyof/index';
31
31
  export { Literal, type TLiteral } from './type/literal/index';
32
32
  export { Mapped, MappedKey, MappedResult, type TMapped, type TMappedKey, type TMappedResult, type TMappedFunction } from './type/mapped/index';
33
33
  export { Never, type TNever } from './type/never/index';
@@ -35,11 +35,11 @@ export { Not, type TNot } from './type/not/index';
35
35
  export { Null, type TNull } from './type/null/index';
36
36
  export { Number, type TNumber, type NumberOptions } from './type/number/index';
37
37
  export { Object, type TObject, type TProperties, type ObjectOptions } from './type/object/index';
38
- export { Omit, type TOmit, type TOmitMappedResult } from './type/omit/index';
38
+ export { Omit, type TOmit, type TOmitFromMappedKey } from './type/omit/index';
39
39
  export { Optional, type TOptional } from './type/optional/index';
40
40
  export { Parameters, type TParameters } from './type/parameters/index';
41
- export { Partial, type TPartial } from './type/partial/index';
42
- export { Pick, type TPick, type TPickMappedResult } from './type/pick/index';
41
+ export { Partial, PartialFromMappedResult, type TPartial, type TPartialFromMappedResult } from './type/partial/index';
42
+ export { Pick, type TPick, type TPickFromMappedKey } from './type/pick/index';
43
43
  export { Promise, type TPromise } from './type/promise/index';
44
44
  export { Readonly, type TReadonly } from './type/readonly/index';
45
45
  export { ReadonlyOptional, type TReadonlyOptional } from './type/readonly-optional/index';
@@ -47,7 +47,7 @@ export { Record, type TRecord } from './type/record/index';
47
47
  export { Recursive, type TRecursive, type TThis } from './type/recursive/index';
48
48
  export { Ref, type TRef } from './type/ref/index';
49
49
  export { RegExp, type TRegExp } from './type/regexp/index';
50
- export { Required, type TRequired } from './type/required/index';
50
+ export { Required, type TRequired, type TRequiredFromMappedResult } from './type/required/index';
51
51
  export { Rest, type TRest } from './type/rest/index';
52
52
  export { ReturnType, type TReturnType } from './type/return-type/index';
53
53
  export { type TSchema, type TKind, type SchemaOptions, type TAnySchema } from './type/schema/index';
@@ -60,7 +60,7 @@ export { Transform, type TTransform, type TransformOptions, type TransformFuncti
60
60
  export { Tuple, type TTuple } from './type/tuple/index';
61
61
  export { Uint8Array, type TUint8Array, type Uint8ArrayOptions } from './type/uint8array/index';
62
62
  export { Undefined, type TUndefined } from './type/undefined/index';
63
- export { Union, type TUnion } from './type/union/index';
63
+ export { Union, UnionEvaluated, type TUnion } from './type/union/index';
64
64
  export { Unknown, type TUnknown } from './type/unknown/index';
65
65
  export { Unsafe, type TUnsafe } from './type/unsafe/index';
66
66
  export { Void, type TVoid } from './type/void/index';
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Uppercase = exports.Uncapitalize = exports.Lowercase = exports.Capitalize = exports.Intrinsic = exports.Iterator = exports.Intersect = exports.Integer = exports.InstanceType = exports.IndexMappedResult = exports.IndexPropertyKeys = exports.Index = exports.Increment = exports.Function = exports.Extract = exports.ExtendsUndefinedCheck = exports.ExtendsResult = exports.ExtendsCheck = exports.Extends = exports.Exclude = exports.Enum = exports.Deref = exports.Date = exports.ConstructorParameters = exports.Constructor = exports.Const = exports.Composite = exports.Boolean = exports.BigInt = exports.Awaited = exports.AsyncIterator = exports.Array = exports.Any = exports.CloneRest = exports.CloneType = exports.ValueGuard = exports.TypeGuard = exports.FormatRegistry = exports.TypeRegistry = exports.PatternStringExact = exports.PatternString = exports.PatternNumberExact = exports.PatternNumber = exports.PatternBooleanExact = exports.PatternBoolean = exports.TransformKind = exports.OptionalKind = exports.ReadonlyKind = exports.Hint = exports.Kind = void 0;
4
- exports.JavaScriptTypeBuilder = exports.JsonTypeBuilder = exports.Type = exports.Void = exports.Unsafe = exports.Unknown = exports.Union = exports.Undefined = exports.Uint8Array = exports.Tuple = exports.TransformEncodeBuilder = exports.TransformDecodeBuilder = exports.Transform = exports.TemplateLiteralGenerate = exports.TemplateLiteralParseExact = exports.TemplateLiteralParse = exports.IsTemplateLiteralFinite = exports.TemplateLiteral = exports.Symbol = exports.String = exports.Strict = exports.ReturnType = exports.Rest = exports.Required = exports.RegExp = exports.Ref = exports.Recursive = exports.Record = exports.ReadonlyOptional = exports.Readonly = exports.Promise = exports.Pick = exports.Partial = exports.Parameters = exports.Optional = exports.Omit = exports.Object = exports.Number = exports.Null = exports.Not = exports.Never = exports.MappedResult = exports.MappedKey = exports.Mapped = exports.Literal = exports.KeyOfPattern = exports.KeyOfPropertyKeys = exports.KeyOf = void 0;
3
+ exports.Lowercase = exports.Capitalize = exports.IntrinsicFromMappedKey = exports.Intrinsic = exports.Iterator = exports.IntersectEvaluated = exports.Intersect = exports.Integer = exports.InstanceType = exports.IndexFromMappedKey = exports.IndexPropertyKeys = exports.Index = exports.Increment = exports.Function = exports.Extract = exports.ExtendsUndefinedCheck = exports.ExtendsResult = exports.ExtendsCheck = exports.Extends = exports.Exclude = exports.Enum = exports.Deref = exports.Date = exports.ConstructorParameters = exports.Constructor = exports.Const = exports.Composite = exports.Boolean = exports.BigInt = exports.Awaited = exports.AsyncIterator = exports.Array = exports.Any = exports.CloneRest = exports.CloneType = exports.ValueGuard = exports.TypeGuard = exports.FormatRegistry = exports.TypeRegistry = exports.PatternStringExact = exports.PatternString = exports.PatternNumberExact = exports.PatternNumber = exports.PatternBooleanExact = exports.PatternBoolean = exports.TransformKind = exports.OptionalKind = exports.ReadonlyKind = exports.Hint = exports.Kind = void 0;
4
+ exports.Type = exports.Void = exports.Unsafe = exports.Unknown = exports.UnionEvaluated = exports.Union = exports.Undefined = exports.Uint8Array = exports.Tuple = exports.TransformEncodeBuilder = exports.TransformDecodeBuilder = exports.Transform = exports.TemplateLiteralGenerate = exports.TemplateLiteralParseExact = exports.TemplateLiteralParse = exports.IsTemplateLiteralFinite = exports.TemplateLiteral = exports.Symbol = exports.String = exports.Strict = exports.ReturnType = exports.Rest = exports.Required = exports.RegExp = exports.Ref = exports.Recursive = exports.Record = exports.ReadonlyOptional = exports.Readonly = exports.Promise = exports.Pick = exports.PartialFromMappedResult = exports.Partial = exports.Parameters = exports.Optional = exports.Omit = exports.Object = exports.Number = exports.Null = exports.Not = exports.Never = exports.MappedResult = exports.MappedKey = exports.Mapped = exports.Literal = exports.KeyOfPattern = exports.KeyOfPropertyKeys = exports.KeyOf = exports.Uppercase = exports.Uncapitalize = void 0;
5
+ exports.JavaScriptTypeBuilder = exports.JsonTypeBuilder = void 0;
5
6
  var index_1 = require("./type/symbols/index");
6
7
  Object.defineProperty(exports, "Kind", { enumerable: true, get: function () { return index_1.Kind; } });
7
8
  Object.defineProperty(exports, "Hint", { enumerable: true, get: function () { return index_1.Hint; } });
@@ -66,17 +67,19 @@ Object.defineProperty(exports, "Increment", { enumerable: true, get: function ()
66
67
  var index_23 = require("./type/indexed/index");
67
68
  Object.defineProperty(exports, "Index", { enumerable: true, get: function () { return index_23.Index; } });
68
69
  Object.defineProperty(exports, "IndexPropertyKeys", { enumerable: true, get: function () { return index_23.IndexPropertyKeys; } });
69
- Object.defineProperty(exports, "IndexMappedResult", { enumerable: true, get: function () { return index_23.IndexMappedResult; } });
70
+ Object.defineProperty(exports, "IndexFromMappedKey", { enumerable: true, get: function () { return index_23.IndexFromMappedKey; } });
70
71
  var index_24 = require("./type/instance-type/index");
71
72
  Object.defineProperty(exports, "InstanceType", { enumerable: true, get: function () { return index_24.InstanceType; } });
72
73
  var index_25 = require("./type/integer/index");
73
74
  Object.defineProperty(exports, "Integer", { enumerable: true, get: function () { return index_25.Integer; } });
74
75
  var index_26 = require("./type/intersect/index");
75
76
  Object.defineProperty(exports, "Intersect", { enumerable: true, get: function () { return index_26.Intersect; } });
77
+ Object.defineProperty(exports, "IntersectEvaluated", { enumerable: true, get: function () { return index_26.IntersectEvaluated; } });
76
78
  var index_27 = require("./type/iterator/index");
77
79
  Object.defineProperty(exports, "Iterator", { enumerable: true, get: function () { return index_27.Iterator; } });
78
80
  var index_28 = require("./type/intrinsic/index");
79
81
  Object.defineProperty(exports, "Intrinsic", { enumerable: true, get: function () { return index_28.Intrinsic; } });
82
+ Object.defineProperty(exports, "IntrinsicFromMappedKey", { enumerable: true, get: function () { return index_28.IntrinsicFromMappedKey; } });
80
83
  Object.defineProperty(exports, "Capitalize", { enumerable: true, get: function () { return index_28.Capitalize; } });
81
84
  Object.defineProperty(exports, "Lowercase", { enumerable: true, get: function () { return index_28.Lowercase; } });
82
85
  Object.defineProperty(exports, "Uncapitalize", { enumerable: true, get: function () { return index_28.Uncapitalize; } });
@@ -109,6 +112,7 @@ var index_39 = require("./type/parameters/index");
109
112
  Object.defineProperty(exports, "Parameters", { enumerable: true, get: function () { return index_39.Parameters; } });
110
113
  var index_40 = require("./type/partial/index");
111
114
  Object.defineProperty(exports, "Partial", { enumerable: true, get: function () { return index_40.Partial; } });
115
+ Object.defineProperty(exports, "PartialFromMappedResult", { enumerable: true, get: function () { return index_40.PartialFromMappedResult; } });
112
116
  var index_41 = require("./type/pick/index");
113
117
  Object.defineProperty(exports, "Pick", { enumerable: true, get: function () { return index_41.Pick; } });
114
118
  var index_42 = require("./type/promise/index");
@@ -155,6 +159,7 @@ var index_59 = require("./type/undefined/index");
155
159
  Object.defineProperty(exports, "Undefined", { enumerable: true, get: function () { return index_59.Undefined; } });
156
160
  var index_60 = require("./type/union/index");
157
161
  Object.defineProperty(exports, "Union", { enumerable: true, get: function () { return index_60.Union; } });
162
+ Object.defineProperty(exports, "UnionEvaluated", { enumerable: true, get: function () { return index_60.UnionEvaluated; } });
158
163
  var index_61 = require("./type/unknown/index");
159
164
  Object.defineProperty(exports, "Unknown", { enumerable: true, get: function () { return index_61.Unknown; } });
160
165
  var index_62 = require("./type/unsafe/index");
@@ -11,7 +11,7 @@ export interface ArrayOptions extends SchemaOptions {
11
11
  }
12
12
  export interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptions {
13
13
  [Kind]: 'Array';
14
- static: Static<T, this['params']>[];
14
+ static: Array<Static<T, this['params']>>;
15
15
  type: 'array';
16
16
  items: T;
17
17
  }
@@ -2,12 +2,12 @@ import type { TSchema, SchemaOptions } from '../schema/index';
2
2
  import type { Static } from '../static/index';
3
3
  import type { Ensure } from '../helpers/index';
4
4
  import { Kind } from '../symbols/index';
5
- type TConstructorReturnTypeResolve<T extends TSchema, P extends unknown[]> = Static<T, P>;
6
- type TConstructorParametersResolve<T extends TSchema[], P extends unknown[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [Static<L, P>, ...TConstructorParametersResolve<R, P>] : [];
7
- export type TConstructorResolve<T extends TSchema[], U extends TSchema, P extends unknown[]> = (Ensure<new (...param: TConstructorParametersResolve<T, P>) => TConstructorReturnTypeResolve<U, P>>);
5
+ type TConstructorStaticReturnType<T extends TSchema, P extends unknown[]> = Static<T, P>;
6
+ type TConstructorStaticParameters<T extends TSchema[], P extends unknown[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [Static<L, P>, ...TConstructorStaticParameters<R, P>] : [];
7
+ export type TConstructorStatic<T extends TSchema[], U extends TSchema, P extends unknown[]> = (Ensure<new (...param: TConstructorStaticParameters<T, P>) => TConstructorStaticReturnType<U, P>>);
8
8
  export interface TConstructor<T extends TSchema[] = TSchema[], U extends TSchema = TSchema> extends TSchema {
9
9
  [Kind]: 'Constructor';
10
- static: TConstructorResolve<T, U, this['params']>;
10
+ static: TConstructorStatic<T, U, this['params']>;
11
11
  type: 'Constructor';
12
12
  parameters: T;
13
13
  returns: U;
@@ -0,0 +1,13 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import { type TMappedResult } from '../mapped/index';
4
+ import { type TExclude } from './exclude';
5
+ type FromProperties<K extends TProperties, U extends TSchema> = ({
6
+ [K2 in keyof K]: TExclude<K[K2], U>;
7
+ });
8
+ declare function FromProperties<K extends TProperties, U extends TSchema>(K: K, U: U, options: SchemaOptions): FromProperties<K, U>;
9
+ type FromMappedResult<K extends TMappedResult, U extends TSchema> = (FromProperties<K['properties'], U>);
10
+ declare function FromMappedResult<K extends TMappedResult, U extends TSchema>(K: K, U: U, options: SchemaOptions): FromMappedResult<K, U>;
11
+ export type TExcludeFromMappedResult<T extends TMappedResult, U extends TSchema, P extends TProperties = FromMappedResult<T, U>> = (TMappedResult<P>);
12
+ export declare function ExcludeFromMappedResult<T extends TMappedResult, U extends TSchema, P extends TProperties = FromMappedResult<T, U>>(T: T, U: U, options: SchemaOptions): TMappedResult<P>;
13
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcludeFromMappedResult = void 0;
4
+ const index_1 = require("../mapped/index");
5
+ const exclude_1 = require("./exclude");
6
+ function FromProperties(K, U, options) {
7
+ return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
8
+ return { ...Acc, [K2]: (0, exclude_1.Exclude)(K[K2], U, options) };
9
+ }, {});
10
+ }
11
+ function FromMappedResult(K, U, options) {
12
+ return FromProperties(K.properties, U, options);
13
+ }
14
+ function ExcludeFromMappedResult(T, U, options) {
15
+ const P = FromMappedResult(T, U, options);
16
+ return (0, index_1.MappedResult)(P);
17
+ }
18
+ exports.ExcludeFromMappedResult = ExcludeFromMappedResult;
@@ -1,20 +1,23 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index';
2
2
  import type { UnionToTuple, AssertRest, AssertType, Assert } from '../helpers/index';
3
+ import type { TMappedResult } from '../mapped/index';
3
4
  import { type TTemplateLiteral } from '../template-literal/index';
4
5
  import { type TUnion } from '../union/index';
5
6
  import { type TNever } from '../never/index';
6
7
  import { type TLiteral } from '../literal/index';
7
8
  import { type Static } from '../static/index';
8
- import { UnionResolve } from '../union/index';
9
- type ExcludeTemplateLiteralResult<T extends string> = UnionResolve<AssertRest<UnionToTuple<{
9
+ import { UnionEvaluated } from '../union/index';
10
+ import { type TExcludeFromMappedResult } from './exclude-from-mapped-result';
11
+ type ExcludeTemplateLiteralResult<T extends string> = UnionEvaluated<AssertRest<UnionToTuple<{
10
12
  [K in T]: TLiteral<K>;
11
13
  }[T]>>>;
12
14
  type ExcludeTemplateLiteral<T extends TTemplateLiteral, U extends TSchema> = (Exclude<Static<T>, Static<U>> extends infer S ? ExcludeTemplateLiteralResult<Assert<S, string>> : never);
13
15
  type ExcludeArray<T extends TSchema[], U extends TSchema> = AssertRest<UnionToTuple<{
14
16
  [K in keyof T]: Static<AssertType<T[K]>> extends Static<U> ? never : T[K];
15
- }[number]>> extends infer R extends TSchema[] ? UnionResolve<R> : never;
17
+ }[number]>> extends infer R extends TSchema[] ? UnionEvaluated<R> : never;
16
18
  type ExcludeResolve<T extends TSchema, U extends TSchema> = T extends TTemplateLiteral ? ExcludeTemplateLiteral<T, U> : T extends TUnion<infer S> ? ExcludeArray<S, U> : T extends U ? TNever : T;
17
- export declare function ExcludeResolve<L extends TSchema, R extends TSchema>(L: L, R: R): ExcludeResolve<L, R>;
19
+ declare function ExcludeResolve<L extends TSchema, R extends TSchema>(L: L, R: R): ExcludeResolve<L, R>;
18
20
  export type TExclude<T extends TSchema, U extends TSchema> = ExcludeResolve<T, U>;
21
+ export declare function Exclude<L extends TMappedResult, R extends TSchema>(unionType: L, excludedMembers: R, options?: SchemaOptions): TExcludeFromMappedResult<L, R>;
19
22
  export declare function Exclude<L extends TSchema, R extends TSchema>(unionType: L, excludedMembers: R, options?: SchemaOptions): TExclude<L, R>;
20
23
  export {};
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exclude = exports.ExcludeResolve = void 0;
3
+ exports.Exclude = void 0;
4
4
  const index_1 = require("../template-literal/index");
5
5
  const index_2 = require("../union/index");
6
6
  const index_3 = require("../never/index");
7
7
  const index_4 = require("../extends/index");
8
8
  const type_1 = require("../clone/type");
9
+ const exclude_from_mapped_result_1 = require("./exclude-from-mapped-result");
9
10
  const type_2 = require("../guard/type");
10
11
  function ExcludeResolve(L, R) {
11
12
  return ((0, type_2.TTemplateLiteral)(L) ? ExcludeResolve((0, index_1.TemplateLiteralToUnion)(L), R) :
@@ -17,9 +18,13 @@ function ExcludeResolve(L, R) {
17
18
  (0, index_4.ExtendsCheck)(L, R) !== index_4.ExtendsResult.False ? (0, index_3.Never)() :
18
19
  L);
19
20
  }
20
- exports.ExcludeResolve = ExcludeResolve;
21
21
  function Exclude(unionType, excludedMembers, options = {}) {
22
- const E = ExcludeResolve(unionType, excludedMembers);
23
- return (0, type_1.CloneType)(E, options);
22
+ if ((0, type_2.TMappedResult)(unionType)) {
23
+ return (0, exclude_from_mapped_result_1.ExcludeFromMappedResult)(unionType, excludedMembers, options);
24
+ }
25
+ else {
26
+ const E = ExcludeResolve(unionType, excludedMembers);
27
+ return (0, type_1.CloneType)(E, options);
28
+ }
24
29
  }
25
30
  exports.Exclude = Exclude;
@@ -1 +1,2 @@
1
+ export * from './exclude-from-mapped-result';
1
2
  export * from './exclude';
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./exclude-from-mapped-result"), exports);
17
18
  __exportStar(require("./exclude"), exports);
@@ -0,0 +1,17 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import type { Assert } from '../helpers/index';
4
+ import { type TMappedResult, type TMappedKey } from '../mapped/index';
5
+ import { TLiteral, TLiteralValue } from '../literal/index';
6
+ import { type TExtends } from './extends';
7
+ type FromPropertyKey<K extends PropertyKey, U extends TSchema, L extends TSchema, R extends TSchema> = {
8
+ [_ in K]: TExtends<TLiteral<Assert<K, TLiteralValue>>, U, L, R>;
9
+ };
10
+ declare function FromPropertyKey<K extends PropertyKey, U extends TSchema, L extends TSchema, R extends TSchema>(K: K, U: U, L: L, R: R, options: SchemaOptions): FromPropertyKey<K, U, L, R>;
11
+ type FromPropertyKeys<K extends PropertyKey[], U extends TSchema, L extends TSchema, R extends TSchema> = (K extends [infer LK extends PropertyKey, ...infer RK extends PropertyKey[]] ? FromPropertyKey<LK, U, L, R> & FromPropertyKeys<RK, U, L, R> : {});
12
+ declare function FromPropertyKeys<K extends PropertyKey[], U extends TSchema, L extends TSchema, R extends TSchema>(K: [...K], U: U, L: L, R: R, options: SchemaOptions): FromPropertyKeys<K, U, L, R>;
13
+ type FromMappedKey<K extends TMappedKey, U extends TSchema, L extends TSchema, R extends TSchema> = (FromPropertyKeys<K['keys'], U, L, R>);
14
+ declare function FromMappedKey<K extends TMappedKey, U extends TSchema, L extends TSchema, R extends TSchema>(K: K, U: U, L: L, R: R, options: SchemaOptions): FromMappedKey<K, U, L, R>;
15
+ export type TExtendsFromMappedKey<T extends TMappedKey, U extends TSchema, L extends TSchema, R extends TSchema, P extends TProperties = FromMappedKey<T, U, L, R>> = (TMappedResult<P>);
16
+ export declare function ExtendsFromMappedKey<T extends TMappedKey, U extends TSchema, L extends TSchema, R extends TSchema, P extends TProperties = FromMappedKey<T, U, L, R>>(T: T, U: U, L: L, R: R, options: SchemaOptions): TMappedResult<P>;
17
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtendsFromMappedKey = void 0;
4
+ const index_1 = require("../mapped/index");
5
+ const index_2 = require("../literal/index");
6
+ const extends_1 = require("./extends");
7
+ function FromPropertyKey(K, U, L, R, options) {
8
+ return {
9
+ [K]: (0, extends_1.Extends)((0, index_2.Literal)(K), U, L, R, options)
10
+ };
11
+ }
12
+ function FromPropertyKeys(K, U, L, R, options) {
13
+ const [LK, ...RK] = K;
14
+ return (K.length > 0
15
+ ? { ...FromPropertyKey(LK, U, L, R, options), ...FromPropertyKeys(RK, U, L, R, options) }
16
+ : {});
17
+ }
18
+ function FromMappedKey(K, U, L, R, options) {
19
+ return FromPropertyKeys(K.keys, U, L, R, options);
20
+ }
21
+ function ExtendsFromMappedKey(T, U, L, R, options) {
22
+ const P = FromMappedKey(T, U, L, R, options);
23
+ return (0, index_1.MappedResult)(P);
24
+ }
25
+ exports.ExtendsFromMappedKey = ExtendsFromMappedKey;
@@ -0,0 +1,13 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import { type TMappedResult } from '../mapped/index';
4
+ import { type TExtends } from './extends';
5
+ type FromProperties<K extends TProperties, U extends TSchema, L extends TSchema, R extends TSchema> = ({
6
+ [K2 in keyof K]: TExtends<K[K2], U, L, R>;
7
+ });
8
+ declare function FromProperties<K extends TProperties, U extends TSchema, L extends TSchema, R extends TSchema>(K: K, U: U, L: L, R: R, options: SchemaOptions): FromProperties<K, U, L, R>;
9
+ type FromMappedResult<K extends TMappedResult, U extends TSchema, L extends TSchema, R extends TSchema> = (FromProperties<K['properties'], U, L, R>);
10
+ declare function FromMappedResult<K extends TMappedResult, U extends TSchema, L extends TSchema, R extends TSchema>(K: K, U: U, L: L, R: R, options: SchemaOptions): FromMappedResult<K, U, L, R>;
11
+ export type TExtendsFromMappedResult<T extends TMappedResult, U extends TSchema, L extends TSchema, R extends TSchema, P extends TProperties = FromMappedResult<T, U, L, R>> = (TMappedResult<P>);
12
+ export declare function ExtendsFromMappedResult<T extends TMappedResult, U extends TSchema, L extends TSchema, R extends TSchema, P extends TProperties = FromMappedResult<T, U, L, R>>(T: T, U: U, L: L, R: R, options: SchemaOptions): TMappedResult<P>;
13
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtendsFromMappedResult = void 0;
4
+ const index_1 = require("../mapped/index");
5
+ const extends_1 = require("./extends");
6
+ function FromProperties(K, U, L, R, options) {
7
+ return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
8
+ return { ...Acc, [K2]: (0, extends_1.Extends)(K[K2], U, L, R, options) };
9
+ }, {});
10
+ }
11
+ function FromMappedResult(K, U, L, R, options) {
12
+ return FromProperties(K.properties, U, L, R, options);
13
+ }
14
+ function ExtendsFromMappedResult(T, U, L, R, options) {
15
+ const P = FromMappedResult(T, U, L, R, options);
16
+ return (0, index_1.MappedResult)(P);
17
+ }
18
+ exports.ExtendsFromMappedResult = ExtendsFromMappedResult;
@@ -3,12 +3,12 @@ import type { Static } from '../static/index';
3
3
  import { type TUnion } from '../union/index';
4
4
  import { TMappedKey, TMappedResult } from '../mapped/index';
5
5
  import { UnionToTuple } from '../helpers/index';
6
- import { type TExtendsMappedResult } from './extends-mapped-result';
7
- import { type TExtendsMappedResultFromResult } from './extends-mapped-result-from-result';
6
+ import { type TExtendsFromMappedKey } from './extends-from-mapped-key';
7
+ import { type TExtendsFromMappedResult } from './extends-from-mapped-result';
8
8
  type ExtendsResolve<L extends TSchema, R extends TSchema, T extends TSchema, U extends TSchema> = ((Static<L> extends Static<R> ? T : U) extends infer O extends TSchema ? UnionToTuple<O> extends [infer X extends TSchema, infer Y extends TSchema] ? TUnion<[X, Y]> : O : never);
9
9
  declare function ExtendsResolve<L extends TSchema, R extends TSchema, T extends TSchema, U extends TSchema>(left: L, right: R, trueType: T, falseType: U): ExtendsResolve<L, R, T, U>;
10
10
  export type TExtends<L extends TSchema, R extends TSchema, T extends TSchema, F extends TSchema> = ExtendsResolve<L, R, T, F>;
11
- export declare function 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>;
12
- export declare function 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>;
11
+ export declare function 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>;
12
+ export declare function 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>;
13
13
  export declare function 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>;
14
14
  export {};
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Extends = void 0;
4
- const type_1 = require("../guard/type");
5
4
  const index_1 = require("../union/index");
6
5
  const extends_check_1 = require("./extends-check");
7
- const type_2 = require("../clone/type");
8
- const extends_mapped_result_1 = require("./extends-mapped-result");
9
- const extends_mapped_result_from_result_1 = require("./extends-mapped-result-from-result");
6
+ const type_1 = require("../clone/type");
7
+ const extends_from_mapped_key_1 = require("./extends-from-mapped-key");
8
+ const extends_from_mapped_result_1 = require("./extends-from-mapped-result");
9
+ const type_2 = require("../guard/type");
10
10
  function ExtendsResolve(left, right, trueType, falseType) {
11
11
  const R = (0, extends_check_1.ExtendsCheck)(left, right);
12
12
  return (R === extends_check_1.ExtendsResult.Union ? (0, index_1.Union)([trueType, falseType]) :
@@ -14,8 +14,8 @@ function ExtendsResolve(left, right, trueType, falseType) {
14
14
  falseType);
15
15
  }
16
16
  function Extends(L, R, T, F, options = {}) {
17
- return ((0, type_1.TMappedResult)(L) ? (0, type_2.CloneType)((0, extends_mapped_result_from_result_1.ExtendsMappedResultFromResult)(L, R, T, F), options) :
18
- (0, type_1.TMappedKey)(L) ? (0, type_2.CloneType)((0, extends_mapped_result_1.ExtendsMappedResult)(L, R, T, F), options) :
19
- (0, type_2.CloneType)(ExtendsResolve(L, R, T, F), options));
17
+ return ((0, type_2.TMappedResult)(L) ? (0, extends_from_mapped_result_1.ExtendsFromMappedResult)(L, R, T, F, options) :
18
+ (0, type_2.TMappedKey)(L) ? (0, type_1.CloneType)((0, extends_from_mapped_key_1.ExtendsFromMappedKey)(L, R, T, F, options)) :
19
+ (0, type_1.CloneType)(ExtendsResolve(L, R, T, F), options));
20
20
  }
21
21
  exports.Extends = Extends;
@@ -1,5 +1,5 @@
1
1
  export * from './extends-check';
2
- export * from './extends-mapped-result-from-result';
3
- export * from './extends-mapped-result';
2
+ export * from './extends-from-mapped-key';
3
+ export * from './extends-from-mapped-result';
4
4
  export * from './extends-undefined';
5
5
  export * from './extends';
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./extends-check"), exports);
18
- __exportStar(require("./extends-mapped-result-from-result"), exports);
19
- __exportStar(require("./extends-mapped-result"), exports);
18
+ __exportStar(require("./extends-from-mapped-key"), exports);
19
+ __exportStar(require("./extends-from-mapped-result"), exports);
20
20
  __exportStar(require("./extends-undefined"), exports);
21
21
  __exportStar(require("./extends"), exports);
@@ -0,0 +1,13 @@
1
+ import type { TSchema, SchemaOptions } from '../schema/index';
2
+ import type { TProperties } from '../object/index';
3
+ import { type TMappedResult } from '../mapped/index';
4
+ import { type TExtract } from './extract';
5
+ type FromProperties<K extends TProperties, U extends TSchema> = ({
6
+ [K2 in keyof K]: TExtract<K[K2], U>;
7
+ });
8
+ declare function FromProperties<K extends TProperties, U extends TSchema>(K: K, U: U, options: SchemaOptions): FromProperties<K, U>;
9
+ type FromMappedResult<K extends TMappedResult, U extends TSchema> = (FromProperties<K['properties'], U>);
10
+ declare function FromMappedResult<K extends TMappedResult, U extends TSchema>(K: K, U: U, options: SchemaOptions): FromMappedResult<K, U>;
11
+ export type TExtractFromMappedResult<T extends TMappedResult, U extends TSchema, P extends TProperties = FromMappedResult<T, U>> = (TMappedResult<P>);
12
+ export declare function ExtractFromMappedResult<T extends TMappedResult, U extends TSchema, P extends TProperties = FromMappedResult<T, U>>(T: T, U: U, options: SchemaOptions): TMappedResult<P>;
13
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtractFromMappedResult = void 0;
4
+ const index_1 = require("../mapped/index");
5
+ const extract_1 = require("./extract");
6
+ function FromProperties(K, U, options) {
7
+ return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
8
+ return { ...Acc, [K2]: (0, extract_1.Extract)(K[K2], U, options) };
9
+ }, {});
10
+ }
11
+ function FromMappedResult(K, U, options) {
12
+ return FromProperties(K.properties, U, options);
13
+ }
14
+ function ExtractFromMappedResult(T, U, options) {
15
+ const P = FromMappedResult(T, U, options);
16
+ return (0, index_1.MappedResult)(P);
17
+ }
18
+ exports.ExtractFromMappedResult = ExtractFromMappedResult;
@@ -1,19 +1,22 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index';
2
2
  import type { Assert, AssertRest, AssertType, UnionToTuple } from '../helpers/index';
3
+ import type { TMappedResult } from '../mapped/index';
3
4
  import { type TTemplateLiteral } from '../template-literal/index';
4
5
  import { type TLiteral } from '../literal/index';
5
6
  import { type TUnion } from '../union/index';
6
7
  import { type Static } from '../static/index';
7
- import { UnionResolve } from '../union/index';
8
- type FromTemplateLiteralResult<T extends string> = UnionResolve<AssertRest<UnionToTuple<{
8
+ import { UnionEvaluated } from '../union/index';
9
+ import { type TExtractFromMappedResult } from './extract-from-mapped-result';
10
+ type FromTemplateLiteralResult<T extends string> = UnionEvaluated<AssertRest<UnionToTuple<{
9
11
  [K in T]: TLiteral<K>;
10
12
  }[T]>>>;
11
13
  type FromTemplateLiteral<T extends TTemplateLiteral, U extends TSchema> = Extract<Static<T>, Static<U>> extends infer S ? FromTemplateLiteralResult<Assert<S, string>> : never;
12
14
  type FromArray<T extends TSchema[], U extends TSchema> = AssertRest<UnionToTuple<{
13
15
  [K in keyof T]: Static<AssertType<T[K]>> extends Static<U> ? T[K] : never;
14
- }[number]>> extends infer R extends TSchema[] ? UnionResolve<R> : never;
16
+ }[number]>> extends infer R extends TSchema[] ? UnionEvaluated<R> : never;
15
17
  export type ExtractResolve<T extends TSchema, U extends TSchema> = (T extends TTemplateLiteral ? FromTemplateLiteral<T, U> : T extends TUnion<infer S> ? FromArray<S, U> : T extends U ? T : T);
16
18
  export declare function ExtractResolve<L extends TSchema, R extends TSchema>(L: L, R: R): ExtractResolve<L, R>;
17
19
  export type TExtract<T extends TSchema, U extends TSchema> = ExtractResolve<T, U>;
20
+ export declare function Extract<L extends TMappedResult, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtractFromMappedResult<L, R>;
18
21
  export declare function Extract<L extends TSchema, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtract<L, R>;
19
22
  export {};
@@ -6,6 +6,7 @@ const index_2 = require("../union/index");
6
6
  const index_3 = require("../never/index");
7
7
  const index_4 = require("../extends/index");
8
8
  const type_1 = require("../clone/type");
9
+ const extract_from_mapped_result_1 = require("./extract-from-mapped-result");
9
10
  const type_2 = require("../guard/type");
10
11
  function ExtractResolve(L, R) {
11
12
  return ((0, type_2.TTemplateLiteral)(L) ? ExtractResolve((0, index_1.TemplateLiteralToUnion)(L), R) :
@@ -19,7 +20,12 @@ function ExtractResolve(L, R) {
19
20
  }
20
21
  exports.ExtractResolve = ExtractResolve;
21
22
  function Extract(type, union, options = {}) {
22
- const E = ExtractResolve(type, union);
23
- return (0, type_1.CloneType)(E, options);
23
+ if ((0, type_2.TMappedResult)(type)) {
24
+ return (0, extract_from_mapped_result_1.ExtractFromMappedResult)(type, union, options);
25
+ }
26
+ else {
27
+ const E = ExtractResolve(type, union);
28
+ return (0, type_1.CloneType)(E, options);
29
+ }
24
30
  }
25
31
  exports.Extract = Extract;