UNPKG

myzod

Version:

Schema Validation with typescript type inference.

95 lines (94 loc) 6 kB
import { IntersectionType } from './types'; import { keySignature, ValidationError, Type, StringType, NumberType, LiteralType, ObjectType, ArrayType, UnionType, PartialType, TupleType, DateType, LazyType, UndefinedType, NullType, NullableType, EnumType, BooleanType, UnknownType, NumberOptions, Literal, ObjectShape, ObjectOptions, AnyType, ArrayOptions, UnionOptions, PartialOpts, IntersectionResult, DeepPartialShape, PartialShape, Eval, ToUnion, StringTypes, OptionalType, BigIntOptions, BigIntType, StringOptions, EnumOptions } from './types'; export { keySignature, ValidationError, Type, Infer, AnyType, ObjectShape, NumberType, BooleanType, StringType, UndefinedType, NullType, ObjectType, ArrayType, TupleType, NullableType, OptionalType, MappedType, DateType, UnknownType, UnionType, IntersectionType, } from './types'; export declare const string: (opts?: StringOptions) => StringType; export declare const boolean: () => BooleanType; export declare const number: (opts?: NumberOptions) => NumberType; export declare const bigint: (opts?: BigIntOptions) => BigIntType; export declare const unknown: () => UnknownType; export declare const literal: <T extends Literal>(literal: T) => LiteralType<T>; export declare const object: <T extends ObjectShape>(shape: T, opts?: ObjectOptions<T>) => ObjectType<T>; export declare const array: <T extends AnyType>(schema: T, opts?: ArrayOptions<T>) => ArrayType<T>; export declare const union: <T extends AnyType[]>(schemas: T, opts?: UnionOptions<T>) => UnionType<T>; export declare const intersection: <T extends AnyType, K extends AnyType>(l: T, r: K) => IntersectionResult<T, K>; type LiteralWrapper<T extends any> = T extends Literal ? LiteralType<T> : never; type ToLiteralUnion<T extends Literal[]> = { [key in keyof T]: LiteralWrapper<T[key]>; }; export declare const literals: <T extends Literal[]>(...args: T) => UnionType<ToLiteralUnion<T>>; export declare const record: <T extends AnyType>(schema: T) => ObjectType<{ [keySignature]: T; }>; export declare const dictionary: <T extends AnyType>(schema: T) => ObjectType<{ [keySignature]: T extends OptionalType<any> ? T : OptionalType<T>; }>; export declare const tuple: <T extends [AnyType, ...AnyType[]] | []>(schemas: T) => TupleType<T>; export declare const date: () => DateType; export declare const lazy: <T extends () => AnyType>(fn: T) => LazyType<T>; export declare function partial<T extends ObjectType<any>, K extends PartialOpts>(schema: T, opts?: K): T extends ObjectType<infer Shape> ? ObjectType<Eval<K extends { deep: true; } ? DeepPartialShape<Shape> : PartialShape<Shape>>> : never; export declare function partial<T extends AnyType, K extends PartialOpts>(schema: T, opts?: K): PartialType<T, K>; export declare function pick<T extends ObjectType<any>, K extends T extends ObjectType<infer Shape> ? Shape extends { [keySignature]: AnyType; } ? string : StringTypes<keyof Shape> : never>(schema: T, keys: K[]): T extends ObjectType<infer Shape> ? ObjectType<Eval<Pick<Shape, Extract<StringTypes<keyof Shape>, ToUnion<typeof keys>>> & (Shape extends { [keySignature]: AnyType; } ? Shape extends { [keySignature]: infer KeySig; } ? { [key in Exclude<ToUnion<typeof keys>, keyof Shape>]: KeySig; } : {} : {})>> : never; export declare function omit<T extends ObjectType<any>, K extends T extends ObjectType<infer Shape> ? StringTypes<keyof Shape> : never>(schema: T, keys: K[]): T extends ObjectType<infer Shape> ? ObjectType<Eval<Omit<Shape, ToUnion<typeof keys>>>> : never; declare const undefinedValue: () => UndefinedType; declare const nullValue: () => NullType; declare const enumValue: <T>(e: T, opts?: EnumOptions<T>) => EnumType<T>; export { undefinedValue as undefined, nullValue as null, enumValue as enum }; declare const _default: { Type: typeof Type; string: (opts?: StringOptions) => StringType; boolean: () => BooleanType; number: (opts?: NumberOptions) => NumberType; bigint: (opts?: BigIntOptions) => BigIntType; unknown: () => UnknownType; literal: <T extends Literal>(literal: T) => LiteralType<T>; literals: <T extends Literal[]>(...args: T) => UnionType<ToLiteralUnion<T>>; date: () => DateType; object: <T extends ObjectShape>(shape: T, opts?: ObjectOptions<T>) => ObjectType<T>; array: <T extends AnyType>(schema: T, opts?: ArrayOptions<T>) => ArrayType<T>; union: <T extends AnyType[]>(schemas: T, opts?: UnionOptions<T>) => UnionType<T>; intersection: <T extends AnyType, K extends AnyType>(l: T, r: K) => IntersectionResult<T, K>; record: <T extends AnyType>(schema: T) => ObjectType<{ [keySignature]: T; }>; dictionary: <T extends AnyType>(schema: T) => ObjectType<{ [keySignature]: T extends OptionalType<any> ? T : OptionalType<T>; }>; tuple: <T extends [AnyType, ...AnyType[]] | []>(schemas: T) => TupleType<T>; partial: typeof partial; pick: typeof pick; omit: typeof omit; required: typeof required; lazy: <T extends () => AnyType>(fn: T) => LazyType<T>; undefined: () => UndefinedType; null: () => NullType; enum: <T>(e: T, opts?: EnumOptions<T>) => EnumType<T>; ValidationError: typeof ValidationError; keySignature: typeof keySignature; NumberType: typeof NumberType; BooleanType: typeof BooleanType; StringType: typeof StringType; UndefinedType: typeof UndefinedType; NullType: typeof NullType; ObjectType: typeof ObjectType; ArrayType: typeof ArrayType; TupleType: typeof TupleType; NullableType: typeof NullableType; OptionalType: typeof OptionalType; DateType: typeof DateType; UnknownType: typeof UnknownType; UnionType: typeof UnionType; IntersectionType: typeof IntersectionType; }; export default _default; type Require<T extends AnyType> = T extends NullableType<infer S> ? Require<S> : T extends OptionalType<infer S> ? Require<S> : T; export declare function required<T extends AnyType>(schema: T): Require<T>;