@typeofweb/schema
Version:
`@typeofweb/schema` is a lightweight and extensible library for data validation with full TypeScript support!
46 lines • 10.2 kB
TypeScript
import type { SomeSchema } from '../types';
export interface ObjectSchemaOptions {
readonly allowUnknownKeys?: boolean;
}
export declare const object: <U extends Record<string, SomeSchema<any>>>(schemasObject: U, options?: ObjectSchemaOptions | undefined) => <S extends SomeSchema<unknown>>(schema?: S | undefined) => SomeSchema<import("../types").Pretty<import("../types").If<true, unknown extends ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) ? false : ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) extends never ? false : {} extends ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) ? true : true, S["__type"] extends readonly (infer TypeOfSchemaElement)[] ? ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) extends readonly [...infer _] ? { readonly [Index in keyof (readonly [..._] & ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }))]: TypeOfSchemaElement; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, never>> | import("../types").Pretty<import("../types").If<false, unknown extends ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) ? false : ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) extends never ? false : {} extends ({ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends {
readonly [name: string]: any;
} ? {} extends { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } ? { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } extends Date | readonly unknown[] ? (Date | readonly unknown[]) & {
readonly [name: string]: any;
} & { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; } : import("../types").Pretty<import("../types").Required<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }> & Partial<Pick<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, import("../types").KeysOfType<{ readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }, undefined>>>> : { readonly [K in keyof U]: import("../types").Pretty<U[K]["__type"]>; }) ? true : true, S["__type"], never>>>;
//# sourceMappingURL=object.d.ts.map