UNPKG

@typeofweb/schema

Version:

`@typeofweb/schema` is a lightweight and extensible library for data validation with full TypeScript support!

46 lines 10.2 kB
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