@sinclair/typebox
Advanced tools
Comparing version 0.10.1 to 0.11.0
{ | ||
"name": "@sinclair/typebox", | ||
"version": "0.10.1", | ||
"version": "0.11.0", | ||
"description": "JSONSchema Type Builder with Static Type Resolution for TypeScript", | ||
@@ -33,5 +33,5 @@ "keywords": [ | ||
"smoke-task": "^1.1.2", | ||
"typescript": "^3.9.2", | ||
"typescript": "^4.0.2", | ||
"typescript-bundle": "^1.0.16" | ||
} | ||
} |
@@ -30,3 +30,3 @@ <div align='center'> | ||
Requires TypeScript 3.8.3 and above. | ||
Requires TypeScript 4.0.3 and above. | ||
@@ -33,0 +33,0 @@ License MIT |
299
typebox.d.ts
export interface UserDefinedOptions { | ||
[prop: string]: any; | ||
} | ||
export declare type TFunction8<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema, U extends TSchema> = { | ||
export declare type TFunction<U extends TSchema = TSchema, T extends TSchema[] = []> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2, T3, T4, T5, T6, T7]; | ||
arguments: [...T]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction7<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2, T3, T4, T5, T6]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction6<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2, T3, T4, T5]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction5<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2, T3, T4]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction4<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2, T3]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction3<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1, T2]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction2<T0 extends TSchema, T1 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0, T1]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction1<T0 extends TSchema, U extends TSchema> = { | ||
type: 'function'; | ||
arguments: [T0]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction0<U extends TSchema> = { | ||
type: 'function'; | ||
arguments: []; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TFunction = TFunction8<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TFunction7<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TFunction6<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TFunction5<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TFunction4<TSchema, TSchema, TSchema, TSchema, TSchema> | TFunction3<TSchema, TSchema, TSchema, TSchema> | TFunction2<TSchema, TSchema, TSchema> | TFunction1<TSchema, TSchema> | TFunction0<TSchema>; | ||
export declare type TConstructor8<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema, U extends TSchema> = { | ||
export declare type TConstructor<U extends TSchema = TSchema, T extends TSchema[] = []> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2, T3, T4, T5, T6, T7]; | ||
arguments: [...T]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor7<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2, T3, T4, T5, T6]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor6<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2, T3, T4, T5]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor5<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2, T3, T4]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor4<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2, T3]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor3<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1, T2]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor2<T0 extends TSchema, T1 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0, T1]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor1<T0 extends TSchema, U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: [T0]; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor0<U extends TSchema> = { | ||
type: 'constructor'; | ||
arguments: []; | ||
returns: U; | ||
} & UserDefinedOptions; | ||
export declare type TConstructor = TConstructor8<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TConstructor7<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TConstructor6<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TConstructor5<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TConstructor4<TSchema, TSchema, TSchema, TSchema, TSchema> | TConstructor3<TSchema, TSchema, TSchema, TSchema> | TConstructor2<TSchema, TSchema, TSchema> | TConstructor1<TSchema, TSchema> | TConstructor0<TSchema>; | ||
declare type TContract = TConstructor | TFunction; | ||
export declare type TIntersect8<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema> = { | ||
allOf: [T0, T1, T2, T3, T4, T5, T6, T7]; | ||
export declare type TIntersect<T extends TSchema[] = any> = { | ||
allOf: [...T]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect7<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema> = { | ||
allOf: [T0, T1, T2, T3, T4, T5, T6]; | ||
export declare type TUnion<T extends TSchema[] = any> = { | ||
oneOf: [...T]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect6<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema> = { | ||
allOf: [T0, T1, T2, T3, T4, T5]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect5<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema> = { | ||
allOf: [T0, T1, T2, T3, T4]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect4<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema> = { | ||
allOf: [T0, T1, T2, T3]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect3<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema> = { | ||
allOf: [T0, T1, T2]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect2<T0 extends TSchema, T1 extends TSchema> = { | ||
allOf: [T0, T1]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect1<T0 extends TSchema> = { | ||
allOf: [T0]; | ||
} & UserDefinedOptions; | ||
export declare type TIntersect = TIntersect8<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TIntersect7<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TIntersect6<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TIntersect5<TSchema, TSchema, TSchema, TSchema, TSchema> | TIntersect4<TSchema, TSchema, TSchema, TSchema> | TIntersect3<TSchema, TSchema, TSchema> | TIntersect2<TSchema, TSchema> | TIntersect1<TSchema>; | ||
export declare type TUnion8<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema> = { | ||
oneOf: [T0, T1, T2, T3, T4, T5, T6, T7]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion7<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema> = { | ||
oneOf: [T0, T1, T2, T3, T4, T5, T6]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion6<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema> = { | ||
oneOf: [T0, T1, T2, T3, T4, T5]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion5<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema> = { | ||
oneOf: [T0, T1, T2, T3, T4]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion4<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema> = { | ||
oneOf: [T0, T1, T2, T3]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion3<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema> = { | ||
oneOf: [T0, T1, T2]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion2<T0 extends TSchema, T1 extends TSchema> = { | ||
oneOf: [T0, T1]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion1<T0 extends TSchema> = { | ||
oneOf: [T0]; | ||
} & UserDefinedOptions; | ||
export declare type TUnion = TUnion8<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TUnion7<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TUnion6<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TUnion5<TSchema, TSchema, TSchema, TSchema, TSchema> | TUnion4<TSchema, TSchema, TSchema, TSchema> | TUnion3<TSchema, TSchema, TSchema> | TUnion2<TSchema, TSchema> | TUnion1<TSchema>; | ||
export declare type TTuple8<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema> = { | ||
export declare type TTuple<T extends TSchema[] = any> = { | ||
type: 'array'; | ||
items: [T0, T1, T2, T3, T4, T5, T6, T7]; | ||
items: [...T]; | ||
additionalItems: false; | ||
minItems: 8; | ||
maxItems: 8; | ||
minItems: number; | ||
maxItems: number; | ||
} & UserDefinedOptions; | ||
export declare type TTuple7<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1, T2, T3, T4, T5, T6]; | ||
additionalItems: false; | ||
minItems: 7; | ||
maxItems: 7; | ||
} & UserDefinedOptions; | ||
export declare type TTuple6<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1, T2, T3, T4, T5]; | ||
additionalItems: false; | ||
minItems: 6; | ||
maxItems: 6; | ||
} & UserDefinedOptions; | ||
export declare type TTuple5<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1, T2, T3, T4]; | ||
additionalItems: false; | ||
minItems: 5; | ||
maxItems: 5; | ||
} & UserDefinedOptions; | ||
export declare type TTuple4<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1, T2, T3]; | ||
additionalItems: false; | ||
minItems: 4; | ||
maxItems: 4; | ||
} & UserDefinedOptions; | ||
export declare type TTuple3<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1, T2]; | ||
additionalItems: false; | ||
minItems: 3; | ||
maxItems: 3; | ||
} & UserDefinedOptions; | ||
export declare type TTuple2<T0 extends TSchema, T1 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0, T1]; | ||
additionalItems: false; | ||
minItems: 2; | ||
maxItems: 2; | ||
} & UserDefinedOptions; | ||
export declare type TTuple1<T0 extends TSchema> = { | ||
type: 'array'; | ||
items: [T0]; | ||
additionalItems: false; | ||
minItems: 1; | ||
maxItems: 1; | ||
} & UserDefinedOptions; | ||
export declare type TTuple = TTuple8<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TTuple7<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TTuple6<TSchema, TSchema, TSchema, TSchema, TSchema, TSchema> | TTuple5<TSchema, TSchema, TSchema, TSchema, TSchema> | TTuple4<TSchema, TSchema, TSchema, TSchema> | TTuple3<TSchema, TSchema, TSchema> | TTuple2<TSchema, TSchema> | TTuple1<TSchema>; | ||
export declare type TComposite = TIntersect | TUnion | TTuple; | ||
@@ -213,3 +37,3 @@ export declare const OptionalModifier: unique symbol; | ||
}; | ||
export declare type TModifier = TOptional<any> | TReadonly<any>; | ||
export declare type TModifier = TOptional<TSchema | TComposite> | TReadonly<TSchema | TComposite>; | ||
export declare type FormatOption = 'date-time' | 'time' | 'date' | 'email' | 'idn-email' | 'hostname' | 'idn-hostname' | 'ipv4' | 'ipv6' | 'uri' | 'uri-reference' | 'iri' | 'uuid' | 'iri-reference' | 'uri-template' | 'json-pointer' | 'relative-json-pointer' | 'regex'; | ||
@@ -296,8 +120,11 @@ export declare type ArrayOptions = { | ||
export declare type TSchema = TLiteral | TNumber | TInteger | TBoolean | TString | TObject<any> | TArray<any> | TEnum<any> | TMap<any> | TNull | TAny | TPromise<any> | TUndefined | TVoid; | ||
declare type StaticFunction<T> = T extends TFunction8<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>, arg6: Static<U6>, arg7: Static<U7>) => Static<R> : T extends TFunction7<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>, arg6: Static<U6>) => Static<R> : T extends TFunction6<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>) => Static<R> : T extends TFunction5<infer U0, infer U1, infer U2, infer U3, infer U4, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>) => Static<R> : T extends TFunction4<infer U0, infer U1, infer U2, infer U3, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>) => Static<R> : T extends TFunction3<infer U0, infer U1, infer U2, infer R> ? (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>) => Static<R> : T extends TFunction2<infer U0, infer U1, infer R> ? (arg0: Static<U0>, arg1: Static<U1>) => Static<R> : T extends TFunction1<infer U0, infer R> ? (arg0: Static<U0>) => Static<R> : T extends TFunction0<infer R> ? () => Static<R> : never; | ||
declare type StaticConstructor<T> = T extends TConstructor8<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>, arg6: Static<U6>, arg7: Static<U7>) => Static<R> : T extends TConstructor7<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>, arg6: Static<U6>) => Static<R> : T extends TConstructor6<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>, arg5: Static<U5>) => Static<R> : T extends TConstructor5<infer U0, infer U1, infer U2, infer U3, infer U4, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>, arg4: Static<U4>) => Static<R> : T extends TConstructor4<infer U0, infer U1, infer U2, infer U3, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>, arg3: Static<U3>) => Static<R> : T extends TConstructor3<infer U0, infer U1, infer U2, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>, arg2: Static<U2>) => Static<R> : T extends TConstructor2<infer U0, infer U1, infer R> ? new (arg0: Static<U0>, arg1: Static<U1>) => Static<R> : T extends TConstructor1<infer U0, infer R> ? new (arg0: Static<U0>) => Static<R> : T extends TConstructor0<infer R> ? new () => Static<R> : never; | ||
declare type StaticFunction<T> = T extends TFunction<infer R, infer U> ? (args: [...Static<U>]) => Static<R> : never; | ||
declare type StaticConstructor<T> = T extends TConstructor<infer R, infer U> ? new (args: [...Static<U>]) => Static<R> : never; | ||
declare type StaticContract<T extends TSchema> = T extends TFunction ? StaticFunction<T> : T extends TConstructor ? StaticConstructor<T> : never; | ||
declare type StaticIntersect<T> = T extends TIntersect8<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> & StaticSchema<U3> & StaticSchema<U4> & StaticSchema<U5> & StaticSchema<U6> & StaticSchema<U7> : T extends TIntersect7<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> & StaticSchema<U3> & StaticSchema<U4> & StaticSchema<U5> & StaticSchema<U6> : T extends TIntersect6<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> & StaticSchema<U3> & StaticSchema<U4> & StaticSchema<U5> : T extends TIntersect5<infer U0, infer U1, infer U2, infer U3, infer U4> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> & StaticSchema<U3> & StaticSchema<U4> : T extends TIntersect4<infer U0, infer U1, infer U2, infer U3> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> & StaticSchema<U3> : T extends TIntersect3<infer U0, infer U1, infer U2> ? StaticSchema<U0> & StaticSchema<U1> & StaticSchema<U2> : T extends TIntersect2<infer U0, infer U1> ? StaticSchema<U1> & StaticSchema<U0> : T extends TIntersect1<infer U0> ? StaticSchema<U0> : never; | ||
declare type StaticUnion<T> = T extends TUnion8<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> | StaticSchema<U3> | StaticSchema<U4> | StaticSchema<U5> | StaticSchema<U6> | StaticSchema<U7> : T extends TUnion7<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> | StaticSchema<U3> | StaticSchema<U4> | StaticSchema<U5> | StaticSchema<U6> : T extends TUnion6<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> | StaticSchema<U3> | StaticSchema<U4> | StaticSchema<U5> : T extends TUnion5<infer U0, infer U1, infer U2, infer U3, infer U4> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> | StaticSchema<U3> | StaticSchema<U4> : T extends TUnion4<infer U0, infer U1, infer U2, infer U3> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> | StaticSchema<U3> : T extends TUnion3<infer U0, infer U1, infer U2> ? StaticSchema<U0> | StaticSchema<U1> | StaticSchema<U2> : T extends TUnion2<infer U0, infer U1> ? StaticSchema<U0> | StaticSchema<U1> : T extends TUnion1<infer U0> ? StaticSchema<U0> : never; | ||
declare type StaticTuple<T> = T extends TTuple8<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7> ? [Static<U0>, Static<U1>, Static<U2>, Static<U3>, Static<U4>, Static<U5>, Static<U6>, Static<U7>] : T extends TTuple7<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5, infer U6> ? [Static<U0>, Static<U1>, Static<U2>, Static<U3>, Static<U4>, Static<U5>, Static<U6>] : T extends TTuple6<infer U0, infer U1, infer U2, infer U3, infer U4, infer U5> ? [Static<U0>, Static<U1>, Static<U2>, Static<U3>, Static<U4>, Static<U5>] : T extends TTuple5<infer U0, infer U1, infer U2, infer U3, infer U4> ? [Static<U0>, Static<U1>, Static<U2>, Static<U3>, Static<U4>] : T extends TTuple4<infer U0, infer U1, infer U2, infer U3> ? [Static<U0>, Static<U1>, Static<U2>, Static<U3>] : T extends TTuple3<infer U0, infer U1, infer U2> ? [Static<U0>, Static<U1>, Static<U2>] : T extends TTuple2<infer U0, infer U1> ? [Static<U0>, Static<U1>] : T extends TTuple1<infer U0> ? [Static<U0>] : never; | ||
declare type MapStatic<T> = { | ||
[P in keyof T]: Static<T[P]>; | ||
}; | ||
declare type StaticIntersect<T> = T extends TIntersect<infer U> ? UnionToIntersection<MapStatic<U>[number]> : never; | ||
declare type StaticUnion<T> = T extends TUnion<infer U> ? MapStatic<U>[number] : never; | ||
declare type StaticTuple<T> = T extends TTuple<infer U> ? MapStatic<U> : never; | ||
declare type StaticComposite<T extends TComposite> = T extends TIntersect ? StaticIntersect<T> : T extends TUnion ? StaticUnion<T> : T extends TTuple ? StaticTuple<T> : never; | ||
@@ -330,85 +157,11 @@ declare type StaticLiteral<T> = T extends TStringLiteral<infer U> ? U : T extends TNumberLiteral<infer U> ? U : T extends TBooleanLiteral<infer U> ? U : never; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6, T7], options?: UserDefinedOptions): TUnion8<T0, T1, T2, T3, T4, T5, T6, T7>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6], options?: UserDefinedOptions): TUnion7<T0, T1, T2, T3, T4, T5, T6>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema>(items: [T0, T1, T2, T3, T4, T5], options?: UserDefinedOptions): TUnion6<T0, T1, T2, T3, T4, T5>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema>(items: [T0, T1, T2, T3, T4], options?: UserDefinedOptions): TUnion5<T0, T1, T2, T3, T4>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema>(items: [T0, T1, T2, T3], options?: UserDefinedOptions): TUnion4<T0, T1, T2, T3>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema>(items: [T0, T1, T2], options?: UserDefinedOptions): TUnion3<T0, T1, T2>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema, T1 extends TSchema>(items: [T0, T1], options?: UserDefinedOptions): TUnion2<T0, T1>; | ||
/** Creates a Union type for the given arguments. */ | ||
static Union<T0 extends TSchema>(items: [T0], options?: UserDefinedOptions): TUnion1<T0>; | ||
static Union<T extends TSchema[]>(items: [...T], options?: UserDefinedOptions): TUnion<T>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6, T7], options?: UserDefinedOptions): TIntersect8<T0, T1, T2, T3, T4, T5, T6, T7>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6], options?: UserDefinedOptions): TIntersect7<T0, T1, T2, T3, T4, T5, T6>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema>(items: [T0, T1, T2, T3, T4, T5], options?: UserDefinedOptions): TIntersect6<T0, T1, T2, T3, T4, T5>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema>(items: [T0, T1, T2, T3, T4], options?: UserDefinedOptions): TIntersect5<T0, T1, T2, T3, T4>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema>(items: [T0, T1, T2, T3], options?: UserDefinedOptions): TIntersect4<T0, T1, T2, T3>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema>(items: [T0, T1, T2], options?: UserDefinedOptions): TIntersect3<T0, T1, T2>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema, T1 extends TSchema>(items: [T0, T1], options?: UserDefinedOptions): TIntersect2<T0, T1>; | ||
/** Creates an Intersect type for the given arguments. */ | ||
static Intersect<T0 extends TSchema>(items: [T0], options?: UserDefinedOptions): TIntersect1<T0>; | ||
static Intersect<T extends TSchema[]>(items: [...T], options?: UserDefinedOptions): TIntersect<T>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6, T7], options?: UserDefinedOptions): TTuple8<T0, T1, T2, T3, T4, T5, T6, T7>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema>(items: [T0, T1, T2, T3, T4, T5, T6], options?: UserDefinedOptions): TTuple7<T0, T1, T2, T3, T4, T5, T6>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema>(items: [T0, T1, T2, T3, T4, T5], options?: UserDefinedOptions): TTuple6<T0, T1, T2, T3, T4, T5>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema>(items: [T0, T1, T2, T3, T4], options?: UserDefinedOptions): TTuple5<T0, T1, T2, T3, T4>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema>(items: [T0, T1, T2, T3], options?: UserDefinedOptions): TTuple4<T0, T1, T2, T3>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema>(items: [T0, T1, T2], options?: UserDefinedOptions): TTuple3<T0, T1, T2>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema, T1 extends TSchema>(items: [T0, T1], options?: UserDefinedOptions): TTuple2<T0, T1>; | ||
/** Creates a Tuple type for the given arguments. */ | ||
static Tuple<T0 extends TSchema>(items: [T0], options?: UserDefinedOptions): TTuple1<T0>; | ||
static Tuple<T extends TSchema[]>(items: [...T], options?: UserDefinedOptions): TTuple<T>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5, T6, T7], returns: U, options?: UserDefinedOptions): TFunction8<T0, T1, T2, T3, T4, T5, T6, T7, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5, T6], returns: U, options?: UserDefinedOptions): TFunction7<T0, T1, T2, T3, T4, T5, T6, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5], returns: U, options?: UserDefinedOptions): TFunction6<T0, T1, T2, T3, T4, T5, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4], returns: U, options?: UserDefinedOptions): TFunction5<T0, T1, T2, T3, T4, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3], returns: U, options?: UserDefinedOptions): TFunction4<T0, T1, T2, T3, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, U extends TSchema>(args: [T0, T1, T2], returns: U, options?: UserDefinedOptions): TFunction3<T0, T1, T2, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, T1 extends TSchema, U extends TSchema>(args: [T0, T1], returns: U, options?: UserDefinedOptions): TFunction2<T0, T1, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<T0 extends TSchema, U extends TSchema>(args: [T0], returns: U, options?: UserDefinedOptions): TFunction1<T0, U>; | ||
/** Creates a `function` type for the given arguments. */ | ||
static Function<U extends TSchema>(args: [], returns: U, options?: UserDefinedOptions): TFunction0<U>; | ||
static Function<U extends TSchema, T extends TSchema[] = []>(args: T, returns: U, options?: UserDefinedOptions): TFunction<U, T>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, T7 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5, T6, T7], returns: U, options?: UserDefinedOptions): TConstructor8<T0, T1, T2, T3, T4, T5, T6, T7, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, T6 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5, T6], returns: U, options?: UserDefinedOptions): TConstructor7<T0, T1, T2, T3, T4, T5, T6, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, T5 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4, T5], returns: U, options?: UserDefinedOptions): TConstructor6<T0, T1, T2, T3, T4, T5, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, T4 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3, T4], returns: U, options?: UserDefinedOptions): TConstructor5<T0, T1, T2, T3, T4, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, T3 extends TSchema, U extends TSchema>(args: [T0, T1, T2, T3], returns: U, options?: UserDefinedOptions): TConstructor4<T0, T1, T2, T3, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, T2 extends TSchema, U extends TSchema>(args: [T0, T1, T2], returns: U, options?: UserDefinedOptions): TConstructor3<T0, T1, T2, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, T1 extends TSchema, U extends TSchema>(args: [T0, T1], returns: U, options?: UserDefinedOptions): TConstructor2<T0, T1, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<T0 extends TSchema, U extends TSchema>(args: [T0], returns: U, options?: UserDefinedOptions): TConstructor1<T0, U>; | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor<U extends TSchema>(args: [], returns: U, options?: UserDefinedOptions): TConstructor0<U>; | ||
static Constructor<U extends TSchema, T extends TSchema[] = []>(args: T, returns: U, options?: UserDefinedOptions): TConstructor<U, T>; | ||
/** Creates a `Promise<T>` type. */ | ||
@@ -415,0 +168,0 @@ static Promise<T extends TSchema>(item: T, options?: UserDefinedOptions): TPromise<T>; |
@@ -53,2 +53,4 @@ "use strict"; | ||
} | ||
// #endregion | ||
// #region TComposite | ||
/** Creates a Union type for the given arguments. */ | ||
@@ -70,2 +72,4 @@ static Union(items, options = {}) { | ||
} | ||
// #endregion | ||
// #region TContract | ||
/** Creates a `function` type for the given arguments. */ | ||
@@ -76,3 +80,3 @@ static Function(args, returns, options = {}) { | ||
/** Creates a `constructor` type for the given arguments. */ | ||
static Constructor(args, returns, options = {}) { | ||
static Constructor(args, returns, options) { | ||
return { ...options, type: 'constructor', arguments: args, returns }; | ||
@@ -121,4 +125,4 @@ } | ||
static Enum(item, options) { | ||
// We explicitly want to ignore reverse-lookup entries for number enums hence we are | ||
// getting only keys which are non-numeric and retrieve their value. Credits to | ||
// We explicitly want to ignore reverse-lookup entries for number enums hence we are | ||
// getting only keys which are non-numeric and retrieve their value. Credits to | ||
// https://github.com/UselessPickles/ts-enum-util (Jeff Lau) for inspiration. | ||
@@ -125,0 +129,0 @@ const values = Object.keys(item).filter(key => isNaN(key)).map(key => item[key]); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
38412
367