UNPKG

normul

Version:

Normul is a tiny TypeScript/JavaScript library for data normalization and transformation

23 lines (22 loc) 1.19 kB
import type { Simplify, ParseContext } from '../../types.js'; import { Schema } from '../Schema.js'; export type Shape = Record<string, Schema>; export type InferShape<S extends Shape> = Simplify<{ [K in keyof S as undefined extends (S[K] extends Schema<infer U> ? U : never) ? K : never]?: Exclude<S[K] extends Schema<infer U> ? U : never, undefined>; } & { [K in keyof S as undefined extends (S[K] extends Schema<infer U> ? U : never) ? never : K]: S[K] extends Schema<infer U> ? U : never; }>; export type ExtractShape<T> = T extends ObjectSchema<infer U> ? U : never; export declare class ObjectSchema<T extends Shape> extends Schema<InferShape<T>> { protected shape: T; protected mode: 'strip' | 'passthrough'; constructor(shape: T); protected _normalize(input: unknown, ctx: ParseContext): InferShape<T>; get strip(): this; get passthrough(): this; extend<U extends Shape>(schemaOrShape: U | ObjectSchema<U>): ObjectSchema<T & U>; pick<K extends keyof T>(keys: K[]): ObjectSchema<Pick<T, K>>; omit<K extends keyof T>(keys: K[]): ObjectSchema<Omit<T, K>>; protected cloneArgs(): T[]; protected cloneProps(target: this): void; }