myzod
Version:
Schema Validation with typescript type inference.
95 lines (94 loc) • 6 kB
TypeScript
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>;