normul
Version:
Normul is a tiny TypeScript/JavaScript library for data normalization and transformation
32 lines (31 loc) • 1.34 kB
TypeScript
import type { Issue, ParseContext, ParseResult } from '../types.js';
export declare abstract class Schema<T = unknown> {
protected modifiers: ((input: unknown, ctx: ParseContext, next: (input: unknown, ctx: ParseContext) => unknown) => unknown)[];
normalize(input: unknown): ParseResult<T>;
protected abstract _normalize(input: unknown, ctx: ParseContext): T;
protected invokeNormalize<U>(schema: Schema<U>, input: unknown, ctx: ParseContext): U;
protected makeIssue(options: {
ctx: ParseContext;
} & Omit<Issue, 'path'>): void;
get optional(): Schema<T | undefined>;
get nullable(): Schema<T | null>;
default(value: T): this;
preprocess(fn: (input: unknown) => unknown): this;
transform<U>(fn: (value: T) => U): Schema<U>;
type<T>(): TypeSchema<T>;
get any(): AnySchema;
get unknown(): UnknownSchema;
fallback(value: T): this;
protected clone(): this;
protected cloneArgs(): unknown[];
protected cloneProps(target: this): void;
}
export declare class TypeSchema<T> extends Schema<T> {
protected inner?: Schema | undefined;
constructor(inner?: Schema | undefined);
protected _normalize(input: unknown, ctx: ParseContext): T;
}
export declare class AnySchema extends TypeSchema<any> {
}
export declare class UnknownSchema extends TypeSchema<unknown> {
}