@typeofweb/schema
Version:
`@typeofweb/schema` is a lightweight and extensible library for data validation with full TypeScript support!
12 lines • 1.82 kB
TypeScript
import type { Either, If, Next, Pretty, SomeSchema } from './types';
declare type Refinement<NextResult, Input, ExitEarlyResult> = (this: SomeSchema<any>, value: Input, t: RefinementToolkit) => Either<ExitEarlyResult, any> | Next<NextResult>;
declare const refinementToolkit: {
readonly right: <R>(value: R) => Either<R, never>;
readonly left: <L>(value: L) => Either<never, L>;
readonly nextValid: <Output>(value: Output) => Next<Output>;
readonly nextNotValid: <Output_1>(value: Output_1) => Next<Output_1>;
};
declare type RefinementToolkit = typeof refinementToolkit;
export declare const refine: <Output, Input, ExitEarlyResult = never>(refinement: Refinement<Output, Input, ExitEarlyResult>, toString?: (() => string) | undefined) => <S extends SomeSchema<Input>>(schema?: S | undefined) => SomeSchema<Pretty<If<true, unknown extends ExitEarlyResult ? false : ExitEarlyResult extends never ? false : readonly unknown[] extends ExitEarlyResult ? false : true, ExitEarlyResult, never>> | Pretty<If<true, unknown extends Output ? false : Output extends never ? false : {} extends Output ? true : true, S["__type"] extends readonly (infer TypeOfSchemaElement)[] ? Output extends readonly [...infer _] ? { readonly [Index in keyof Output]: TypeOfSchemaElement; } : Output : Output, never>> | Pretty<If<false, unknown extends ExitEarlyResult ? false : ExitEarlyResult extends never ? false : readonly unknown[] extends ExitEarlyResult ? false : true, S["__type"], never>> | Pretty<If<false, (unknown extends ExitEarlyResult ? false : ExitEarlyResult extends never ? false : readonly unknown[] extends ExitEarlyResult ? false : true) | (unknown extends Output ? false : Output extends never ? false : {} extends Output ? true : true), S["__type"], never>>>;
export {};
//# sourceMappingURL=refine.d.ts.map