shelving
Version:
Toolkit for using data in JavaScript.
26 lines (25 loc) • 1.15 kB
TypeScript
import type { Data, Database } from "../util/data.js";
import type { Validators } from "../util/validate.js";
import type { OptionalSchema } from "./OptionalSchema.js";
import type { SchemaOptions } from "./Schema.js";
import { Schema } from "./Schema.js";
/** Allowed options for `DataSchema` */
export interface DataSchemaOptions<T extends Data> extends SchemaOptions {
readonly props: Validators<T>;
readonly value?: Partial<T> | undefined;
}
/** Validate a data object. */
export declare class DataSchema<T extends Data> extends Schema<T> {
readonly value: Partial<T>;
readonly props: Validators<T>;
constructor({ props, title, value, ...options }: DataSchemaOptions<T>);
validate(unsafeValue?: unknown): T;
}
/** Set of named data schemas. */
export type DataSchemas<T extends Database> = {
[K in keyof T]: DataSchema<T[K]>;
};
/** Valid data object with specifed properties. */
export declare const DATA: <T extends Data>(props: Validators<T>) => DataSchema<T>;
/** Valid data object with specifed properties, or `null` */
export declare const OPTIONAL_DATA: <T extends Data>(props: Validators<T>) => OptionalSchema<T>;