@sinclair/typebox 0.33.22 → 0.34.1

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 (202) hide show
  1. package/build/cjs/compiler/compiler.d.ts +2 -2
  2. package/build/cjs/compiler/compiler.js +13 -2
  3. package/build/cjs/errors/errors.js +7 -0
  4. package/build/cjs/index.d.ts +1 -2
  5. package/build/cjs/index.js +1 -2
  6. package/build/cjs/syntax/parse.d.ts +14 -15
  7. package/build/cjs/syntax/parse.js +6 -5
  8. package/build/cjs/syntax/runtime.d.ts +20 -4
  9. package/build/cjs/syntax/runtime.js +183 -28
  10. package/build/cjs/syntax/static.d.ts +107 -23
  11. package/build/cjs/type/array/array.d.ts +1 -1
  12. package/build/cjs/type/awaited/awaited.d.ts +8 -3
  13. package/build/cjs/type/awaited/awaited.js +20 -20
  14. package/build/cjs/type/computed/computed.d.ts +9 -0
  15. package/build/cjs/type/computed/computed.js +10 -0
  16. package/build/cjs/type/computed/index.d.ts +1 -0
  17. package/build/cjs/type/{deref → computed}/index.js +1 -1
  18. package/build/cjs/type/guard/kind.d.ts +12 -4
  19. package/build/cjs/type/guard/kind.js +15 -0
  20. package/build/cjs/type/guard/type.d.ts +9 -3
  21. package/build/cjs/type/guard/type.js +19 -0
  22. package/build/cjs/type/index.d.ts +1 -2
  23. package/build/cjs/type/index.js +1 -2
  24. package/build/cjs/type/indexed/indexed-from-mapped-key.d.ts +6 -6
  25. package/build/cjs/type/indexed/indexed-from-mapped-key.js +10 -10
  26. package/build/cjs/type/indexed/indexed-from-mapped-result.d.ts +5 -5
  27. package/build/cjs/type/indexed/indexed-from-mapped-result.js +11 -10
  28. package/build/cjs/type/indexed/indexed-property-keys.d.ts +6 -6
  29. package/build/cjs/type/indexed/indexed-property-keys.js +14 -14
  30. package/build/cjs/type/indexed/indexed.d.ts +34 -20
  31. package/build/cjs/type/indexed/indexed.js +59 -46
  32. package/build/cjs/type/intersect/intersect-evaluated.d.ts +6 -6
  33. package/build/cjs/type/intersect/intersect-evaluated.js +16 -16
  34. package/build/cjs/type/intersect/intersect.d.ts +2 -2
  35. package/build/cjs/type/intersect/intersect.js +6 -6
  36. package/build/cjs/type/keyof/keyof-from-mapped-result.d.ts +6 -6
  37. package/build/cjs/type/keyof/keyof-from-mapped-result.js +10 -10
  38. package/build/cjs/type/keyof/keyof-property-keys.d.ts +7 -7
  39. package/build/cjs/type/keyof/keyof-property-keys.js +22 -22
  40. package/build/cjs/type/keyof/keyof.d.ts +11 -6
  41. package/build/cjs/type/keyof/keyof.js +22 -13
  42. package/build/cjs/type/module/compute.d.ts +54 -0
  43. package/build/cjs/type/module/compute.js +154 -0
  44. package/build/cjs/type/module/index.d.ts +1 -0
  45. package/build/cjs/type/{strict → module}/index.js +1 -1
  46. package/build/cjs/type/module/infer.d.ts +43 -0
  47. package/build/cjs/type/module/infer.js +3 -0
  48. package/build/cjs/type/module/module.d.ts +27 -0
  49. package/build/cjs/type/module/module.js +37 -0
  50. package/build/cjs/type/not/not.d.ts +1 -1
  51. package/build/cjs/type/not/not.js +2 -2
  52. package/build/cjs/type/omit/omit-from-mapped-key.d.ts +6 -6
  53. package/build/cjs/type/omit/omit-from-mapped-key.js +10 -12
  54. package/build/cjs/type/omit/omit-from-mapped-result.d.ts +5 -5
  55. package/build/cjs/type/omit/omit-from-mapped-result.js +10 -10
  56. package/build/cjs/type/omit/omit.d.ts +26 -14
  57. package/build/cjs/type/omit/omit.js +46 -35
  58. package/build/cjs/type/partial/partial.d.ts +11 -7
  59. package/build/cjs/type/partial/partial.js +36 -24
  60. package/build/cjs/type/pick/pick-from-mapped-key.d.ts +6 -6
  61. package/build/cjs/type/pick/pick-from-mapped-key.js +10 -10
  62. package/build/cjs/type/pick/pick-from-mapped-result.d.ts +5 -5
  63. package/build/cjs/type/pick/pick-from-mapped-result.js +10 -10
  64. package/build/cjs/type/pick/pick.d.ts +25 -15
  65. package/build/cjs/type/pick/pick.js +47 -36
  66. package/build/cjs/type/record/record.d.ts +4 -2
  67. package/build/cjs/type/record/record.js +31 -28
  68. package/build/cjs/type/ref/ref.d.ts +4 -7
  69. package/build/cjs/type/ref/ref.js +3 -11
  70. package/build/cjs/type/required/required.d.ts +12 -8
  71. package/build/cjs/type/required/required.js +37 -25
  72. package/build/cjs/type/static/static.d.ts +1 -1
  73. package/build/cjs/type/tuple/tuple.d.ts +1 -1
  74. package/build/cjs/type/tuple/tuple.js +4 -4
  75. package/build/cjs/type/type/javascript.d.ts +10 -10
  76. package/build/cjs/type/type/javascript.js +6 -6
  77. package/build/cjs/type/type/json.d.ts +45 -68
  78. package/build/cjs/type/type/json.js +82 -98
  79. package/build/cjs/type/type/type.d.ts +1 -2
  80. package/build/cjs/type/type/type.js +55 -57
  81. package/build/cjs/type/union/union-evaluated.d.ts +6 -6
  82. package/build/cjs/type/union/union-evaluated.js +11 -10
  83. package/build/cjs/type/union/union.d.ts +1 -1
  84. package/build/cjs/type/union/union.js +4 -4
  85. package/build/cjs/value/cast/cast.js +8 -1
  86. package/build/cjs/value/check/check.js +11 -4
  87. package/build/cjs/value/clean/clean.js +8 -1
  88. package/build/cjs/value/convert/convert.js +7 -0
  89. package/build/cjs/value/create/create.js +7 -0
  90. package/build/cjs/value/default/default.js +7 -0
  91. package/build/cjs/value/transform/decode.js +18 -7
  92. package/build/cjs/value/transform/encode.js +18 -7
  93. package/build/cjs/value/transform/has.js +18 -18
  94. package/build/esm/compiler/compiler.d.mts +2 -2
  95. package/build/esm/compiler/compiler.mjs +13 -2
  96. package/build/esm/errors/errors.mjs +7 -0
  97. package/build/esm/index.d.mts +1 -2
  98. package/build/esm/index.mjs +1 -2
  99. package/build/esm/syntax/parse.d.mts +14 -15
  100. package/build/esm/syntax/parse.mjs +6 -5
  101. package/build/esm/syntax/runtime.d.mts +20 -4
  102. package/build/esm/syntax/runtime.mjs +183 -28
  103. package/build/esm/syntax/static.d.mts +107 -23
  104. package/build/esm/type/array/array.d.mts +1 -1
  105. package/build/esm/type/awaited/awaited.d.mts +8 -3
  106. package/build/esm/type/awaited/awaited.mjs +20 -20
  107. package/build/esm/type/computed/computed.d.mts +9 -0
  108. package/build/esm/type/computed/computed.mjs +6 -0
  109. package/build/esm/type/computed/index.d.mts +1 -0
  110. package/build/esm/type/computed/index.mjs +1 -0
  111. package/build/esm/type/guard/kind.d.mts +12 -4
  112. package/build/esm/type/guard/kind.mjs +12 -0
  113. package/build/esm/type/guard/type.d.mts +9 -3
  114. package/build/esm/type/guard/type.mjs +17 -0
  115. package/build/esm/type/index.d.mts +1 -2
  116. package/build/esm/type/index.mjs +1 -2
  117. package/build/esm/type/indexed/indexed-from-mapped-key.d.mts +6 -6
  118. package/build/esm/type/indexed/indexed-from-mapped-key.mjs +10 -10
  119. package/build/esm/type/indexed/indexed-from-mapped-result.d.mts +5 -5
  120. package/build/esm/type/indexed/indexed-from-mapped-result.mjs +11 -10
  121. package/build/esm/type/indexed/indexed-property-keys.d.mts +6 -6
  122. package/build/esm/type/indexed/indexed-property-keys.mjs +14 -14
  123. package/build/esm/type/indexed/indexed.d.mts +34 -20
  124. package/build/esm/type/indexed/indexed.mjs +55 -42
  125. package/build/esm/type/intersect/intersect-evaluated.d.mts +6 -6
  126. package/build/esm/type/intersect/intersect-evaluated.mjs +16 -16
  127. package/build/esm/type/intersect/intersect.d.mts +2 -2
  128. package/build/esm/type/intersect/intersect.mjs +6 -6
  129. package/build/esm/type/keyof/keyof-from-mapped-result.d.mts +6 -6
  130. package/build/esm/type/keyof/keyof-from-mapped-result.mjs +10 -10
  131. package/build/esm/type/keyof/keyof-property-keys.d.mts +7 -7
  132. package/build/esm/type/keyof/keyof-property-keys.mjs +22 -22
  133. package/build/esm/type/keyof/keyof.d.mts +11 -6
  134. package/build/esm/type/keyof/keyof.mjs +22 -13
  135. package/build/esm/type/module/compute.d.mts +54 -0
  136. package/build/esm/type/module/compute.mjs +148 -0
  137. package/build/esm/type/module/index.d.mts +1 -0
  138. package/build/esm/type/module/index.mjs +1 -0
  139. package/build/esm/type/module/infer.d.mts +43 -0
  140. package/build/esm/type/module/infer.mjs +1 -0
  141. package/build/esm/type/module/module.d.mts +27 -0
  142. package/build/esm/type/module/module.mjs +31 -0
  143. package/build/esm/type/not/not.d.mts +1 -1
  144. package/build/esm/type/not/not.mjs +2 -2
  145. package/build/esm/type/omit/omit-from-mapped-key.d.mts +6 -6
  146. package/build/esm/type/omit/omit-from-mapped-key.mjs +10 -12
  147. package/build/esm/type/omit/omit-from-mapped-result.d.mts +5 -5
  148. package/build/esm/type/omit/omit-from-mapped-result.mjs +10 -10
  149. package/build/esm/type/omit/omit.d.mts +26 -14
  150. package/build/esm/type/omit/omit.mjs +43 -32
  151. package/build/esm/type/partial/partial.d.mts +11 -7
  152. package/build/esm/type/partial/partial.mjs +29 -17
  153. package/build/esm/type/pick/pick-from-mapped-key.d.mts +6 -6
  154. package/build/esm/type/pick/pick-from-mapped-key.mjs +10 -10
  155. package/build/esm/type/pick/pick-from-mapped-result.d.mts +5 -5
  156. package/build/esm/type/pick/pick-from-mapped-result.mjs +10 -10
  157. package/build/esm/type/pick/pick.d.mts +25 -15
  158. package/build/esm/type/pick/pick.mjs +43 -32
  159. package/build/esm/type/record/record.d.mts +4 -2
  160. package/build/esm/type/record/record.mjs +15 -12
  161. package/build/esm/type/ref/ref.d.mts +4 -7
  162. package/build/esm/type/ref/ref.mjs +3 -11
  163. package/build/esm/type/required/required.d.mts +12 -8
  164. package/build/esm/type/required/required.mjs +33 -21
  165. package/build/esm/type/static/static.d.mts +1 -1
  166. package/build/esm/type/tuple/tuple.d.mts +1 -1
  167. package/build/esm/type/tuple/tuple.mjs +4 -4
  168. package/build/esm/type/type/javascript.d.mts +10 -10
  169. package/build/esm/type/type/javascript.mjs +6 -6
  170. package/build/esm/type/type/json.d.mts +45 -68
  171. package/build/esm/type/type/json.mjs +47 -63
  172. package/build/esm/type/type/type.d.mts +1 -2
  173. package/build/esm/type/type/type.mjs +1 -2
  174. package/build/esm/type/union/union-evaluated.d.mts +6 -6
  175. package/build/esm/type/union/union-evaluated.mjs +11 -10
  176. package/build/esm/type/union/union.d.mts +1 -1
  177. package/build/esm/type/union/union.mjs +4 -4
  178. package/build/esm/value/cast/cast.mjs +9 -2
  179. package/build/esm/value/check/check.mjs +11 -4
  180. package/build/esm/value/clean/clean.mjs +9 -2
  181. package/build/esm/value/convert/convert.mjs +7 -0
  182. package/build/esm/value/create/create.mjs +7 -0
  183. package/build/esm/value/default/default.mjs +7 -0
  184. package/build/esm/value/transform/decode.mjs +13 -2
  185. package/build/esm/value/transform/encode.mjs +13 -2
  186. package/build/esm/value/transform/has.mjs +2 -2
  187. package/package.json +1 -1
  188. package/readme.md +230 -97
  189. package/build/cjs/type/deref/deref.d.ts +0 -22
  190. package/build/cjs/type/deref/deref.js +0 -106
  191. package/build/cjs/type/deref/index.d.ts +0 -1
  192. package/build/cjs/type/strict/index.d.ts +0 -1
  193. package/build/cjs/type/strict/strict.d.ts +0 -12
  194. package/build/cjs/type/strict/strict.js +0 -16
  195. package/build/esm/type/deref/deref.d.mts +0 -22
  196. package/build/esm/type/deref/deref.mjs +0 -102
  197. package/build/esm/type/deref/index.d.mts +0 -1
  198. package/build/esm/type/deref/index.mjs +0 -1
  199. package/build/esm/type/strict/index.d.mts +0 -1
  200. package/build/esm/type/strict/index.mjs +0 -1
  201. package/build/esm/type/strict/strict.d.mts +0 -12
  202. package/build/esm/type/strict/strict.mjs +0 -12
@@ -2,21 +2,25 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { Evaluate, Ensure } from '../helpers/index.mjs';
3
3
  import type { TMappedResult } from '../mapped/index.mjs';
4
4
  import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
5
+ import { type TComputed } from '../computed/index.mjs';
5
6
  import { type TOptional } from '../optional/index.mjs';
6
7
  import { type TReadonly } from '../readonly/index.mjs';
7
8
  import { type TRecursive } from '../recursive/index.mjs';
9
+ import { type TObject, type TProperties } from '../object/index.mjs';
8
10
  import { type TIntersect } from '../intersect/index.mjs';
9
11
  import { type TUnion } from '../union/index.mjs';
10
- import { type TObject, type TProperties } from '../object/index.mjs';
12
+ import { type TRef } from '../ref/index.mjs';
11
13
  import { type TRequiredFromMappedResult } from './required-from-mapped-result.mjs';
12
- type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Acc, TRequired<L>]> : Acc);
13
- type TFromProperties<T extends TProperties> = Evaluate<{
14
- [K in keyof T]: T[K] extends (TReadonlyOptional<infer S>) ? TReadonly<S> : T[K] extends (TReadonly<infer S>) ? TReadonly<S> : T[K] extends (TOptional<infer S>) ? S : T[K];
14
+ type TFromComputed<Target extends string, Parameters extends TSchema[]> = Ensure<TComputed<'Required', [TComputed<Target, Parameters>]>>;
15
+ type TFromRef<Ref extends string> = Ensure<TComputed<'Required', [TRef<Ref>]>>;
16
+ type TFromProperties<Properties extends TProperties> = Evaluate<{
17
+ [K in keyof Properties]: Properties[K] extends (TReadonlyOptional<infer S>) ? TReadonly<S> : Properties[K] extends (TReadonly<infer S>) ? TReadonly<S> : Properties[K] extends (TOptional<infer S>) ? S : Properties[K];
15
18
  }>;
16
- type TFromObject<T extends TObject, Properties extends TProperties = T['properties']> = Ensure<TObject<(TFromProperties<Properties>)>>;
17
- export type TRequired<T extends TSchema> = (T extends TRecursive<infer S extends TSchema> ? TRecursive<TRequired<S>> : T extends TIntersect<infer S extends TSchema[]> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S extends TSchema[]> ? TUnion<TFromRest<S>> : T extends TObject<infer S extends TProperties> ? TFromObject<TObject<S>> : TObject<{}>);
19
+ type TFromObject<Type extends TObject, Properties extends TProperties = Type['properties']> = Ensure<TObject<(TFromProperties<Properties>)>>;
20
+ type TFromRest<Types extends TSchema[], Result extends TSchema[] = []> = (Types extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Result, TRequired<L>]> : Result);
21
+ export type TRequired<Type extends TSchema> = (Type extends TRecursive<infer Type extends TSchema> ? TRecursive<TRequired<Type>> : Type extends TComputed<infer Target extends string, infer Parameters extends TSchema[]> ? TFromComputed<Target, Parameters> : Type extends TRef<infer Ref extends string> ? TFromRef<Ref> : Type extends TIntersect<infer Types extends TSchema[]> ? TIntersect<TFromRest<Types>> : Type extends TUnion<infer Types extends TSchema[]> ? TUnion<TFromRest<Types>> : Type extends TObject<infer Properties extends TProperties> ? TFromObject<TObject<Properties>> : TObject<{}>);
18
22
  /** `[Json]` Constructs a type where all properties are required */
19
- export declare function Required<T extends TMappedResult>(T: T, options?: SchemaOptions): TRequiredFromMappedResult<T>;
23
+ export declare function Required<MappedResult extends TMappedResult>(type: MappedResult, options?: SchemaOptions): TRequiredFromMappedResult<MappedResult>;
20
24
  /** `[Json]` Constructs a type where all properties are required */
21
- export declare function Required<T extends TSchema>(T: T, options?: SchemaOptions): TRequired<T>;
25
+ export declare function Required<Type extends TSchema>(type: Type, options?: SchemaOptions): TRequired<Type>;
22
26
  export {};
@@ -1,48 +1,60 @@
1
1
  import { CreateType } from '../create/type.mjs';
2
+ import { Computed } from '../computed/index.mjs';
3
+ import { Object } from '../object/index.mjs';
2
4
  import { Intersect } from '../intersect/index.mjs';
3
5
  import { Union } from '../union/index.mjs';
4
- import { Object } from '../object/index.mjs';
6
+ import { Ref } from '../ref/index.mjs';
5
7
  import { OptionalKind, TransformKind } from '../symbols/index.mjs';
6
8
  import { Discard } from '../discard/index.mjs';
7
9
  import { RequiredFromMappedResult } from './required-from-mapped-result.mjs';
8
10
  // ------------------------------------------------------------------
9
11
  // TypeGuard
10
12
  // ------------------------------------------------------------------
11
- import { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';
13
+ import { IsMappedResult, IsIntersect, IsUnion, IsObject, IsRef, IsComputed } from '../guard/kind.mjs';
14
+ // prettier-ignore
15
+ function FromComputed(target, parameters) {
16
+ return Computed('Required', [Computed(target, parameters)]);
17
+ }
12
18
  // prettier-ignore
13
- function FromRest(T) {
14
- return T.map(L => RequiredResolve(L));
19
+ function FromRef($ref) {
20
+ return Computed('Required', [Ref($ref)]);
15
21
  }
16
22
  // prettier-ignore
17
- function FromProperties(T) {
18
- const Acc = {};
19
- for (const K of globalThis.Object.getOwnPropertyNames(T))
20
- Acc[K] = Discard(T[K], [OptionalKind]);
21
- return Acc;
23
+ function FromProperties(properties) {
24
+ const requiredProperties = {};
25
+ for (const K of globalThis.Object.getOwnPropertyNames(properties))
26
+ requiredProperties[K] = Discard(properties[K], [OptionalKind]);
27
+ return requiredProperties;
22
28
  }
23
29
  // prettier-ignore
24
- function FromObject(T) {
25
- const options = Discard(T, [TransformKind, '$id', 'required', 'properties']);
26
- const properties = FromProperties(T['properties']);
30
+ function FromObject(type) {
31
+ const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);
32
+ const properties = FromProperties(type['properties']);
27
33
  return Object(properties, options);
28
34
  }
35
+ // prettier-ignore
36
+ function FromRest(types) {
37
+ return types.map(type => RequiredResolve(type));
38
+ }
29
39
  // ------------------------------------------------------------------
30
40
  // RequiredResolve
31
41
  // ------------------------------------------------------------------
32
42
  // prettier-ignore
33
- function RequiredResolve(T) {
34
- return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :
35
- IsUnion(T) ? Union(FromRest(T.anyOf)) :
36
- IsObject(T) ? FromObject(T) :
37
- Object({}));
43
+ function RequiredResolve(type) {
44
+ return (IsComputed(type) ? FromComputed(type.target, type.parameters) :
45
+ IsRef(type) ? FromRef(type.$ref) :
46
+ IsIntersect(type) ? Intersect(FromRest(type.allOf)) :
47
+ IsUnion(type) ? Union(FromRest(type.anyOf)) :
48
+ IsObject(type) ? FromObject(type) :
49
+ Object({}));
38
50
  }
39
51
  /** `[Json]` Constructs a type where all properties are required */
40
- export function Required(T, options) {
41
- if (IsMappedResult(T)) {
42
- return RequiredFromMappedResult(T, options);
52
+ export function Required(type, options) {
53
+ if (IsMappedResult(type)) {
54
+ return RequiredFromMappedResult(type, options);
43
55
  }
44
56
  else {
45
57
  // special: mapping types require overridable options
46
- return CreateType({ ...RequiredResolve(T), ...options });
58
+ return CreateType({ ...RequiredResolve(type), ...options });
47
59
  }
48
60
  }
@@ -23,7 +23,7 @@ export type TDecodeProperties<T extends TProperties> = {
23
23
  [K in keyof T]: TDecodeType<T[K]>;
24
24
  };
25
25
  export type TDecodeRest<T extends TSchema[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TDecodeRest<R, [...Acc, TDecodeType<L>]> : Acc;
26
- export type TDecodeType<T extends TSchema> = (T extends TOptional<infer S extends TSchema> ? TOptional<TDecodeType<S>> : T extends TReadonly<infer S extends TSchema> ? TReadonly<TDecodeType<S>> : T extends TTransform<infer _, infer R> ? TUnsafe<R> : T extends TArray<infer S extends TSchema> ? TArray<TDecodeType<S>> : T extends TAsyncIterator<infer S extends TSchema> ? TAsyncIterator<TDecodeType<S>> : T extends TConstructor<infer P extends TSchema[], infer R extends TSchema> ? TConstructor<TDecodeRest<P>, TDecodeType<R>> : T extends TEnum<infer S> ? TEnum<S> : T extends TFunction<infer P extends TSchema[], infer R extends TSchema> ? TFunction<TDecodeRest<P>, TDecodeType<R>> : T extends TIntersect<infer S extends TSchema[]> ? TIntersect<TDecodeRest<S>> : T extends TIterator<infer S extends TSchema> ? TIterator<TDecodeType<S>> : T extends TNot<infer S extends TSchema> ? TNot<TDecodeType<S>> : T extends TObject<infer S> ? TObject<Evaluate<TDecodeProperties<S>>> : T extends TPromise<infer S extends TSchema> ? TPromise<TDecodeType<S>> : T extends TRecord<infer K, infer S> ? TRecord<K, TDecodeType<S>> : T extends TRecursive<infer S extends TSchema> ? TRecursive<TDecodeType<S>> : T extends TRef<infer S extends TSchema> ? TRef<TDecodeType<S>> : T extends TTuple<infer S extends TSchema[]> ? TTuple<TDecodeRest<S>> : T extends TUnion<infer S extends TSchema[]> ? TUnion<TDecodeRest<S>> : T);
26
+ export type TDecodeType<T extends TSchema> = (T extends TOptional<infer S extends TSchema> ? TOptional<TDecodeType<S>> : T extends TReadonly<infer S extends TSchema> ? TReadonly<TDecodeType<S>> : T extends TTransform<infer _, infer R> ? TUnsafe<R> : T extends TArray<infer S extends TSchema> ? TArray<TDecodeType<S>> : T extends TAsyncIterator<infer S extends TSchema> ? TAsyncIterator<TDecodeType<S>> : T extends TConstructor<infer P extends TSchema[], infer R extends TSchema> ? TConstructor<TDecodeRest<P>, TDecodeType<R>> : T extends TEnum<infer S> ? TEnum<S> : T extends TFunction<infer P extends TSchema[], infer R extends TSchema> ? TFunction<TDecodeRest<P>, TDecodeType<R>> : T extends TIntersect<infer S extends TSchema[]> ? TIntersect<TDecodeRest<S>> : T extends TIterator<infer S extends TSchema> ? TIterator<TDecodeType<S>> : T extends TNot<infer S extends TSchema> ? TNot<TDecodeType<S>> : T extends TObject<infer S> ? TObject<Evaluate<TDecodeProperties<S>>> : T extends TPromise<infer S extends TSchema> ? TPromise<TDecodeType<S>> : T extends TRecord<infer K, infer S> ? TRecord<K, TDecodeType<S>> : T extends TRecursive<infer S extends TSchema> ? TRecursive<TDecodeType<S>> : T extends TRef<infer S extends string> ? TRef<S> : T extends TTuple<infer S extends TSchema[]> ? TTuple<TDecodeRest<S>> : T extends TUnion<infer S extends TSchema[]> ? TUnion<TDecodeRest<S>> : T);
27
27
  export type StaticDecodeIsAny<T> = boolean extends (T extends TSchema ? true : false) ? true : false;
28
28
  /** Creates an decoded static type from a TypeBox type */
29
29
  export type StaticDecode<T extends TSchema, P extends unknown[] = []> = StaticDecodeIsAny<T> extends true ? unknown : Static<TDecodeType<T>, P>;
@@ -12,5 +12,5 @@ export interface TTuple<T extends TSchema[] = TSchema[]> extends TSchema {
12
12
  maxItems: number;
13
13
  }
14
14
  /** `[Json]` Creates a Tuple type */
15
- export declare function Tuple<T extends TSchema[]>(items: [...T], options?: SchemaOptions): TTuple<T>;
15
+ export declare function Tuple<Types extends TSchema[]>(types: [...Types], options?: SchemaOptions): TTuple<Types>;
16
16
  export {};
@@ -1,9 +1,9 @@
1
1
  import { CreateType } from '../create/type.mjs';
2
2
  import { Kind } from '../symbols/index.mjs';
3
3
  /** `[Json]` Creates a Tuple type */
4
- export function Tuple(items, options) {
4
+ export function Tuple(types, options) {
5
5
  // prettier-ignore
6
- return CreateType(items.length > 0 ?
7
- { [Kind]: 'Tuple', type: 'array', items, additionalItems: false, minItems: items.length, maxItems: items.length } :
8
- { [Kind]: 'Tuple', type: 'array', minItems: items.length, maxItems: items.length }, options);
6
+ return CreateType(types.length > 0 ?
7
+ { [Kind]: 'Tuple', type: 'array', items: types, additionalItems: false, minItems: types.length, maxItems: types.length } :
8
+ { [Kind]: 'Tuple', type: 'array', minItems: types.length, maxItems: types.length }, options);
9
9
  }
@@ -20,33 +20,33 @@ import { type TVoid } from '../void/index.mjs';
20
20
  /** JavaScript Type Builder with Static Resolution for TypeScript */
21
21
  export declare class JavaScriptTypeBuilder extends JsonTypeBuilder {
22
22
  /** `[JavaScript]` Creates a AsyncIterator type */
23
- AsyncIterator<T extends TSchema>(items: T, options?: SchemaOptions): TAsyncIterator<T>;
23
+ AsyncIterator<Type extends TSchema>(items: Type, options?: SchemaOptions): TAsyncIterator<Type>;
24
24
  /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
25
- Awaited<T extends TSchema>(schema: T, options?: SchemaOptions): TAwaited<T>;
25
+ Awaited<Type extends TSchema>(schema: Type, options?: SchemaOptions): TAwaited<Type>;
26
26
  /** `[JavaScript]` Creates a BigInt type */
27
27
  BigInt(options?: BigIntOptions): TBigInt;
28
28
  /** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */
29
- ConstructorParameters<T extends TConstructor<TSchema[], TSchema>>(schema: T, options?: SchemaOptions): TConstructorParameters<T>;
29
+ ConstructorParameters<Type extends TConstructor>(schema: Type, options?: SchemaOptions): TConstructorParameters<Type>;
30
30
  /** `[JavaScript]` Creates a Constructor type */
31
- Constructor<T extends TSchema[], U extends TSchema>(parameters: [...T], returns: U, options?: SchemaOptions): TConstructor<T, U>;
31
+ Constructor<Parameters extends TSchema[], InstanceType extends TSchema>(parameters: [...Parameters], instanceType: InstanceType, options?: SchemaOptions): TConstructor<Parameters, InstanceType>;
32
32
  /** `[JavaScript]` Creates a Date type */
33
33
  Date(options?: DateOptions): TDate;
34
34
  /** `[JavaScript]` Creates a Function type */
35
- Function<T extends TSchema[], U extends TSchema>(parameters: [...T], returns: U, options?: SchemaOptions): TFunction<T, U>;
35
+ Function<Parameters extends TSchema[], ReturnType extends TSchema>(parameters: [...Parameters], returnType: ReturnType, options?: SchemaOptions): TFunction<Parameters, ReturnType>;
36
36
  /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */
37
- InstanceType<T extends TConstructor<any[], any>>(schema: T, options?: SchemaOptions): TInstanceType<T>;
37
+ InstanceType<Type extends TConstructor>(schema: Type, options?: SchemaOptions): TInstanceType<Type>;
38
38
  /** `[JavaScript]` Creates an Iterator type */
39
- Iterator<T extends TSchema>(items: T, options?: SchemaOptions): TIterator<T>;
39
+ Iterator<Type extends TSchema>(items: Type, options?: SchemaOptions): TIterator<Type>;
40
40
  /** `[JavaScript]` Extracts the Parameters from the given Function type */
41
- Parameters<T extends TFunction<TSchema[], TSchema>>(schema: T, options?: SchemaOptions): TParameters<T>;
41
+ Parameters<Type extends TFunction>(schema: Type, options?: SchemaOptions): TParameters<Type>;
42
42
  /** `[JavaScript]` Creates a Promise type */
43
- Promise<T extends TSchema>(item: T, options?: SchemaOptions): TPromise<T>;
43
+ Promise<Type extends TSchema>(item: Type, options?: SchemaOptions): TPromise<Type>;
44
44
  /** `[JavaScript]` Creates a RegExp type */
45
45
  RegExp(pattern: string, options?: RegExpOptions): TRegExp;
46
46
  /** `[JavaScript]` Creates a RegExp type */
47
47
  RegExp(regex: RegExp, options?: RegExpOptions): TRegExp;
48
48
  /** `[JavaScript]` Extracts the ReturnType from the given Function type */
49
- ReturnType<T extends TFunction<any[], any>>(schema: T, options?: SchemaOptions): TReturnType<T>;
49
+ ReturnType<Type extends TFunction>(type: Type, options?: SchemaOptions): TReturnType<Type>;
50
50
  /** `[JavaScript]` Creates a Symbol type */
51
51
  Symbol(options?: SchemaOptions): TSymbol;
52
52
  /** `[JavaScript]` Creates a Undefined type */
@@ -35,16 +35,16 @@ export class JavaScriptTypeBuilder extends JsonTypeBuilder {
35
35
  return ConstructorParameters(schema, options);
36
36
  }
37
37
  /** `[JavaScript]` Creates a Constructor type */
38
- Constructor(parameters, returns, options) {
39
- return Constructor(parameters, returns, options);
38
+ Constructor(parameters, instanceType, options) {
39
+ return Constructor(parameters, instanceType, options);
40
40
  }
41
41
  /** `[JavaScript]` Creates a Date type */
42
42
  Date(options = {}) {
43
43
  return Date(options);
44
44
  }
45
45
  /** `[JavaScript]` Creates a Function type */
46
- Function(parameters, returns, options) {
47
- return FunctionType(parameters, returns, options);
46
+ Function(parameters, returnType, options) {
47
+ return FunctionType(parameters, returnType, options);
48
48
  }
49
49
  /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */
50
50
  InstanceType(schema, options) {
@@ -67,8 +67,8 @@ export class JavaScriptTypeBuilder extends JsonTypeBuilder {
67
67
  return RegExp(unresolved, options);
68
68
  }
69
69
  /** `[JavaScript]` Extracts the ReturnType from the given Function type */
70
- ReturnType(schema, options) {
71
- return ReturnType(schema, options);
70
+ ReturnType(type, options) {
71
+ return ReturnType(type, options);
72
72
  }
73
73
  /** `[JavaScript]` Creates a Symbol type */
74
74
  Symbol(options) {
@@ -3,28 +3,28 @@ import { type TArray, type ArrayOptions } from '../array/index.mjs';
3
3
  import { type TBoolean } from '../boolean/index.mjs';
4
4
  import { type TComposite } from '../composite/index.mjs';
5
5
  import { type TConst } from '../const/index.mjs';
6
- import { type TDeref } from '../deref/index.mjs';
7
6
  import { type TEnum, type TEnumKey, type TEnumValue } from '../enum/index.mjs';
8
7
  import { type TExclude, type TExcludeFromMappedResult, type TExcludeFromTemplateLiteral } from '../exclude/index.mjs';
9
8
  import { type TExtends, type TExtendsFromMappedKey, type TExtendsFromMappedResult } from '../extends/index.mjs';
10
9
  import { type TExtract, type TExtractFromMappedResult, type TExtractFromTemplateLiteral } from '../extract/index.mjs';
11
- import { TIndex, type TIndexPropertyKeys, type TIndexFromMappedKey, type TIndexFromMappedResult } from '../indexed/index.mjs';
10
+ import { TIndex, type TIndexPropertyKeys } from '../indexed/index.mjs';
12
11
  import { type IntegerOptions, type TInteger } from '../integer/index.mjs';
13
12
  import { Intersect, type IntersectOptions } from '../intersect/index.mjs';
14
13
  import { type TCapitalize, type TUncapitalize, type TLowercase, type TUppercase } from '../intrinsic/index.mjs';
15
- import { type TKeyOf, type TKeyOfFromMappedResult } from '../keyof/index.mjs';
14
+ import { type TKeyOf } from '../keyof/index.mjs';
16
15
  import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
17
16
  import { type TMappedFunction, type TMapped, type TMappedResult } from '../mapped/index.mjs';
18
17
  import { type TNever } from '../never/index.mjs';
19
18
  import { type TNot } from '../not/index.mjs';
20
19
  import { type TNull } from '../null/index.mjs';
21
20
  import { type TMappedKey } from '../mapped/index.mjs';
21
+ import { TModule } from '../module/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 TOmitFromMappedKey, type TOmitFromMappedResult } from '../omit/index.mjs';
24
+ import { type TOmit } from '../omit/index.mjs';
25
25
  import { type TOptionalWithFlag, type TOptionalFromMappedResult } from '../optional/index.mjs';
26
26
  import { type TPartial, type TPartialFromMappedResult } from '../partial/index.mjs';
27
- import { type TPick, type TPickFromMappedKey, type TPickFromMappedResult } from '../pick/index.mjs';
27
+ import { type TPick } from '../pick/index.mjs';
28
28
  import { type TReadonlyWithFlag, type TReadonlyFromMappedResult } from '../readonly/index.mjs';
29
29
  import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
30
30
  import { type TRecordOrObject } from '../record/index.mjs';
@@ -33,7 +33,6 @@ import { type TRef } from '../ref/index.mjs';
33
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
- import { type TStrict } from '../strict/index.mjs';
37
36
  import { type TString, type StringOptions } from '../string/index.mjs';
38
37
  import { type TTemplateLiteral, type TTemplateLiteralKind, type TTemplateLiteralSyntax } from '../template-literal/index.mjs';
39
38
  import { TransformDecodeBuilder } from '../transform/index.mjs';
@@ -43,38 +42,28 @@ import { type TUnknown } from '../unknown/index.mjs';
43
42
  import { type TUnsafe, type UnsafeOptions } from '../unsafe/index.mjs';
44
43
  /** Json Type Builder with Static Resolution for TypeScript */
45
44
  export declare class JsonTypeBuilder {
46
- /**
47
- * @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended
48
- * to use the JSON parse/stringify to remove compositing symbols if needed. This
49
- * is how Strict works internally.
50
- *
51
- * ```typescript
52
- * JSON.parse(JSON.stringify(Type.String()))
53
- * ```
54
- */
55
- Strict<T extends TSchema>(schema: T): TStrict<T>;
56
45
  /** `[Json]` Creates a Readonly and Optional property */
57
- ReadonlyOptional<T extends TSchema>(schema: T): TReadonlyOptional<T>;
46
+ ReadonlyOptional<Type extends TSchema>(type: Type): TReadonlyOptional<Type>;
58
47
  /** `[Json]` Creates a Readonly property */
59
- Readonly<T extends TMappedResult, F extends boolean>(schema: T, enable: F): TReadonlyFromMappedResult<T, F>;
48
+ Readonly<Type extends TMappedResult, Flag extends boolean>(type: Type, enable: Flag): TReadonlyFromMappedResult<Type, Flag>;
60
49
  /** `[Json]` Creates a Readonly property */
61
- Readonly<T extends TSchema, F extends boolean>(schema: T, enable: F): TReadonlyWithFlag<T, F>;
50
+ Readonly<Type extends TSchema, Flag extends boolean>(type: Type, enable: Flag): TReadonlyWithFlag<Type, Flag>;
62
51
  /** `[Json]` Creates a Optional property */
63
- Readonly<T extends TMappedResult>(schema: T): TReadonlyFromMappedResult<T, true>;
52
+ Readonly<Type extends TMappedResult>(type: Type): TReadonlyFromMappedResult<Type, true>;
64
53
  /** `[Json]` Creates a Readonly property */
65
- Readonly<T extends TSchema>(schema: T): TReadonlyWithFlag<T, true>;
54
+ Readonly<Type extends TSchema>(type: Type): TReadonlyWithFlag<Type, true>;
66
55
  /** `[Json]` Creates a Optional property */
67
- Optional<T extends TMappedResult, F extends boolean>(schema: T, enable: F): TOptionalFromMappedResult<T, F>;
56
+ Optional<Type extends TMappedResult, Flag extends boolean>(type: Type, enable: Flag): TOptionalFromMappedResult<Type, Flag>;
68
57
  /** `[Json]` Creates a Optional property */
69
- Optional<T extends TSchema, F extends boolean>(schema: T, enable: F): TOptionalWithFlag<T, F>;
58
+ Optional<Type extends TSchema, Flag extends boolean>(type: Type, enable: Flag): TOptionalWithFlag<Type, Flag>;
70
59
  /** `[Json]` Creates a Optional property */
71
- Optional<T extends TMappedResult>(schema: T): TOptionalFromMappedResult<T, true>;
60
+ Optional<Type extends TMappedResult>(type: Type): TOptionalFromMappedResult<Type, true>;
72
61
  /** `[Json]` Creates a Optional property */
73
- Optional<T extends TSchema>(schema: T): TOptionalWithFlag<T, true>;
62
+ Optional<Type extends TSchema>(type: Type): TOptionalWithFlag<Type, true>;
74
63
  /** `[Json]` Creates an Any type */
75
64
  Any(options?: SchemaOptions): TAny;
76
65
  /** `[Json]` Creates an Array type */
77
- Array<T extends TSchema>(schema: T, options?: ArrayOptions): TArray<T>;
66
+ Array<Type extends TSchema>(items: Type, options?: ArrayOptions): TArray<Type>;
78
67
  /** `[Json]` Creates a Boolean type */
79
68
  Boolean(options?: SchemaOptions): TBoolean;
80
69
  /** `[Json]` Intrinsic function to Capitalize LiteralString types */
@@ -83,8 +72,6 @@ export declare class JsonTypeBuilder {
83
72
  Composite<T extends TSchema[]>(schemas: [...T], options?: ObjectOptions): TComposite<T>;
84
73
  /** `[JavaScript]` Creates a readonly const type from the given value. */
85
74
  Const</* const (not supported in 4.0) */ T>(value: T, options?: SchemaOptions): TConst<T>;
86
- /** `[Json]` Creates a dereferenced type */
87
- Deref<T extends TSchema>(schema: T, references: TSchema[]): TDeref<T>;
88
75
  /** `[Json]` Creates a Enum type */
89
76
  Enum<V extends TEnumValue, T extends Record<TEnumKey, V>>(item: T, options?: SchemaOptions): TEnum<T>;
90
77
  /** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */
@@ -106,87 +93,77 @@ export declare class JsonTypeBuilder {
106
93
  /** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */
107
94
  Extract<L extends TSchema, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtract<L, R>;
108
95
  /** `[Json]` Returns an Indexed property type for the given keys */
109
- Index<T extends TSchema, K extends TMappedResult>(T: T, K: K, options?: SchemaOptions): TIndexFromMappedResult<T, K>;
96
+ Index<Type extends TSchema, PropertyKeys extends PropertyKey[]>(type: Type, key: readonly [...PropertyKeys], options?: SchemaOptions): TIndex<Type, PropertyKeys>;
110
97
  /** `[Json]` Returns an Indexed property type for the given keys */
111
- Index<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TIndexFromMappedKey<T, K>;
98
+ Index<Type extends TSchema, Key extends TMappedKey>(type: Type, key: Key, options?: SchemaOptions): TIndex<Type, Key>;
112
99
  /** `[Json]` Returns an Indexed property type for the given keys */
113
- Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
100
+ Index<Type extends TSchema, Key extends TMappedResult>(type: Type, key: Key, options?: SchemaOptions): TIndex<Type, Key>;
114
101
  /** `[Json]` Returns an Indexed property type for the given keys */
115
- Index<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TIndex<T, K>;
102
+ Index<Type extends TSchema, Key extends TSchema>(type: Type, key: Key, options?: SchemaOptions): TIndex<Type, Key>;
116
103
  /** `[Json]` Creates an Integer type */
117
104
  Integer(options?: IntegerOptions): TInteger;
118
105
  /** `[Json]` Creates an Intersect type */
119
- Intersect<T extends TSchema[]>(T: [...T], options?: IntersectOptions): Intersect<T>;
106
+ Intersect<Types extends TSchema[]>(types: [...Types], options?: IntersectOptions): Intersect<Types>;
120
107
  /** `[Json]` Creates a KeyOf type */
121
- KeyOf<T extends TMappedResult>(schema: T, options?: SchemaOptions): TKeyOfFromMappedResult<T>;
122
- /** `[Json]` Creates a KeyOf type */
123
- KeyOf<T extends TSchema>(schema: T, options?: SchemaOptions): TKeyOf<T>;
108
+ KeyOf<Type extends TSchema>(type: Type, options?: SchemaOptions): TKeyOf<Type>;
124
109
  /** `[Json]` Creates a Literal type */
125
- Literal<T extends TLiteralValue>(value: T, options?: SchemaOptions): TLiteral<T>;
110
+ Literal<LiteralValue extends TLiteralValue>(literalValue: LiteralValue, options?: SchemaOptions): TLiteral<LiteralValue>;
126
111
  /** `[Json]` Intrinsic function to Lowercase LiteralString types */
127
- Lowercase<T extends TSchema>(schema: T, options?: SchemaOptions): TLowercase<T>;
112
+ Lowercase<Type extends TSchema>(type: Type, options?: SchemaOptions): TLowercase<Type>;
128
113
  /** `[Json]` Creates a Mapped object type */
129
114
  Mapped<K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>, F extends TMappedFunction<I> = TMappedFunction<I>, R extends TMapped<I, F> = TMapped<I, F>>(key: K, map: F, options?: ObjectOptions): R;
130
115
  /** `[Json]` Creates a Mapped object type */
131
116
  Mapped<K extends PropertyKey[], F extends TMappedFunction<K> = TMappedFunction<K>, R extends TMapped<K, F> = TMapped<K, F>>(key: [...K], map: F, options?: ObjectOptions): R;
117
+ /** `[Json]` Creates a Type Definition Module. */
118
+ Module<Properties extends TProperties>(properties: Properties): TModule<Properties>;
132
119
  /** `[Json]` Creates a Never type */
133
120
  Never(options?: SchemaOptions): TNever;
134
121
  /** `[Json]` Creates a Not type */
135
- Not<T extends TSchema>(schema: T, options?: SchemaOptions): TNot<T>;
122
+ Not<T extends TSchema>(type: T, options?: SchemaOptions): TNot<T>;
136
123
  /** `[Json]` Creates a Null type */
137
124
  Null(options?: SchemaOptions): TNull;
138
125
  /** `[Json]` Creates a Number type */
139
126
  Number(options?: NumberOptions): TNumber;
140
127
  /** `[Json]` Creates an Object type */
141
128
  Object<T extends TProperties>(properties: T, options?: ObjectOptions): TObject<T>;
142
- /** `[Json]` Constructs a type whose keys are omitted from the given type */
143
- Omit<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TOmitFromMappedResult<T, K>;
144
- /** `[Json]` Constructs a type whose keys are omitted from the given type */
145
- Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TOmitFromMappedKey<T, K>;
146
- /** `[Json]` Constructs a type whose keys are omitted from the given type */
147
- Omit<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TOmit<T, I>;
148
- /** `[Json]` Constructs a type whose keys are omitted from the given type */
149
- Omit<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TOmit<T, K>;
150
- /** `[Json]` Constructs a type where all properties are optional */
151
- Partial<T extends TMappedResult>(T: T, options?: SchemaOptions): TPartialFromMappedResult<T>;
152
- /** `[Json]` Constructs a type where all properties are optional */
153
- Partial<T extends TSchema>(schema: T, options?: SchemaOptions): TPartial<T>;
154
129
  /** `[Json]` Constructs a type whose keys are picked from the given type */
155
- Pick<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TPickFromMappedResult<T, K>;
130
+ Omit<Type extends TSchema, Key extends PropertyKey[]>(type: Type, key: readonly [...Key], options?: SchemaOptions): TOmit<Type, Key>;
156
131
  /** `[Json]` Constructs a type whose keys are picked from the given type */
157
- Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TPickFromMappedKey<T, K>;
132
+ Omit<Type extends TSchema, Key extends TSchema>(type: Type, key: Key, options?: SchemaOptions): TOmit<Type, Key>;
133
+ /** `[Json]` Constructs a type where all properties are optional */
134
+ Partial<MappedResult extends TMappedResult>(type: MappedResult, options?: SchemaOptions): TPartialFromMappedResult<MappedResult>;
135
+ /** `[Json]` Constructs a type where all properties are optional */
136
+ Partial<Type extends TSchema>(type: Type, options?: SchemaOptions): TPartial<Type>;
158
137
  /** `[Json]` Constructs a type whose keys are picked from the given type */
159
- Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
138
+ Pick<Type extends TSchema, Key extends PropertyKey[]>(type: Type, key: readonly [...Key], options?: SchemaOptions): TPick<Type, Key>;
160
139
  /** `[Json]` Constructs a type whose keys are picked from the given type */
161
- Pick<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TPick<T, K>;
140
+ Pick<Type extends TSchema, Key extends TSchema>(type: Type, key: Key, options?: SchemaOptions): TPick<Type, Key>;
162
141
  /** `[Json]` Creates a Record type */
163
- Record<K extends TSchema, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): TRecordOrObject<K, T>;
142
+ Record<Key extends TSchema, Value extends TSchema>(key: Key, value: Value, options?: ObjectOptions): TRecordOrObject<Key, Value>;
164
143
  /** `[Json]` Creates a Recursive type */
165
144
  Recursive<T extends TSchema>(callback: (thisType: TThis) => T, options?: SchemaOptions): TRecursive<T>;
166
- /** `[Json]` Creates a Ref type. The referenced type must contain a $id */
167
- Ref<T extends TSchema>(schema: T, options?: SchemaOptions): TRef<T>;
168
145
  /** `[Json]` Creates a Ref type. */
169
- Ref<T extends TSchema>($ref: string, options?: SchemaOptions): TRef<T>;
146
+ Ref<Ref extends string>($ref: Ref, options?: SchemaOptions): TRef<Ref>;
170
147
  /** `[Json]` Constructs a type where all properties are required */
171
- Required<T extends TMappedResult>(T: T, options?: SchemaOptions): TRequiredFromMappedResult<T>;
148
+ Required<MappedResult extends TMappedResult>(type: MappedResult, options?: SchemaOptions): TRequiredFromMappedResult<MappedResult>;
172
149
  /** `[Json]` Constructs a type where all properties are required */
173
- Required<T extends TSchema>(schema: T, options?: SchemaOptions): TRequired<T>;
150
+ Required<Type extends TSchema>(type: Type, options?: SchemaOptions): TRequired<Type>;
174
151
  /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */
175
- Rest<T extends TSchema>(schema: T): TRest<T>;
152
+ Rest<Type extends TSchema>(type: Type): TRest<Type>;
176
153
  /** `[Json]` Creates a String type */
177
154
  String(options?: StringOptions): TString;
178
155
  /** `[Json]` Creates a TemplateLiteral type from template dsl string */
179
- TemplateLiteral<T extends string>(syntax: T, options?: SchemaOptions): TTemplateLiteralSyntax<T>;
156
+ TemplateLiteral<Syntax extends string>(syntax: Syntax, options?: SchemaOptions): TTemplateLiteralSyntax<Syntax>;
180
157
  /** `[Json]` Creates a TemplateLiteral type */
181
- TemplateLiteral<T extends TTemplateLiteralKind[]>(kinds: [...T], options?: SchemaOptions): TTemplateLiteral<T>;
158
+ TemplateLiteral<Kinds extends TTemplateLiteralKind[]>(kinds: [...Kinds], options?: SchemaOptions): TTemplateLiteral<Kinds>;
182
159
  /** `[Json]` Creates a Transform type */
183
- Transform<I extends TSchema>(schema: I): TransformDecodeBuilder<I>;
160
+ Transform<Type extends TSchema>(type: Type): TransformDecodeBuilder<Type>;
184
161
  /** `[Json]` Creates a Tuple type */
185
- Tuple<T extends TSchema[]>(items: [...T], options?: SchemaOptions): TTuple<T>;
162
+ Tuple<Types extends TSchema[]>(types: [...Types], options?: SchemaOptions): TTuple<Types>;
186
163
  /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
187
- Uncapitalize<T extends TSchema>(schema: T, options?: SchemaOptions): TUncapitalize<T>;
164
+ Uncapitalize<Type extends TSchema>(type: Type, options?: SchemaOptions): TUncapitalize<Type>;
188
165
  /** `[Json]` Creates a Union type */
189
- Union<T extends TSchema[]>(schemas: [...T], options?: SchemaOptions): Union<T>;
166
+ Union<Types extends TSchema[]>(types: [...Types], options?: SchemaOptions): Union<Types>;
190
167
  /** `[Json]` Creates an Unknown type */
191
168
  Unknown(options?: SchemaOptions): TUnknown;
192
169
  /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */