zod
Version:
TypeScript-first schema declaration and validation library with static type inference
101 lines (100 loc) • 3.48 kB
TypeScript
export type Schema = ObjectSchema | ArraySchema | StringSchema | NumberSchema | IntegerSchema | BooleanSchema | NullSchema;
export interface BaseSchema {
type?: string | undefined;
$id?: string | undefined;
id?: string | undefined;
$schema?: string | undefined;
$ref?: string | undefined;
$anchor?: string | undefined;
$defs?: {
[key: string]: BaseSchema;
} | undefined;
definitions?: {
[key: string]: BaseSchema;
} | undefined;
$comment?: string | undefined;
title?: string | undefined;
description?: string | undefined;
default?: unknown | undefined;
examples?: unknown[] | undefined;
readOnly?: boolean | undefined;
writeOnly?: boolean | undefined;
deprecated?: boolean | undefined;
allOf?: BaseSchema[] | undefined;
anyOf?: BaseSchema[] | undefined;
oneOf?: BaseSchema[] | undefined;
not?: BaseSchema | undefined;
if?: BaseSchema | undefined;
then?: BaseSchema | undefined;
else?: BaseSchema | undefined;
enum?: Array<string | number | boolean | null> | undefined;
const?: string | number | boolean | null | undefined;
[k: string]: unknown;
/** A special key used as an intermediate representation of extends-style relationships. Omitted as a $ref with additional properties. */
_prefault?: unknown | undefined;
}
export interface ObjectSchema extends BaseSchema {
type: "object";
properties?: {
[key: string]: BaseSchema;
} | undefined;
patternProperties?: {
[key: string]: BaseSchema;
} | undefined;
additionalProperties?: BaseSchema | boolean | undefined;
required?: string[] | undefined;
dependentRequired?: {
[key: string]: string[];
} | undefined;
propertyNames?: BaseSchema | undefined;
minProperties?: number | undefined;
maxProperties?: number | undefined;
unevaluatedProperties?: BaseSchema | boolean | undefined;
dependentSchemas?: {
[key: string]: BaseSchema;
} | undefined;
}
export interface ArraySchema extends BaseSchema {
type: "array";
items?: BaseSchema | BaseSchema[] | undefined;
prefixItems?: BaseSchema[] | undefined;
additionalItems?: BaseSchema | boolean;
contains?: BaseSchema | undefined;
minItems?: number | undefined;
maxItems?: number | undefined;
minContains?: number | undefined;
maxContains?: number | undefined;
uniqueItems?: boolean | undefined;
unevaluatedItems?: BaseSchema | boolean | undefined;
}
export interface StringSchema extends BaseSchema {
type: "string";
minLength?: number | undefined;
maxLength?: number | undefined;
pattern?: string | undefined;
format?: string | undefined;
contentEncoding?: string | undefined;
contentMediaType?: string | undefined;
}
export interface NumberSchema extends BaseSchema {
type: "number";
minimum?: number | undefined;
maximum?: number | undefined;
exclusiveMinimum?: number | undefined;
exclusiveMaximum?: number | undefined;
multipleOf?: number | undefined;
}
export interface IntegerSchema extends BaseSchema {
type: "integer";
minimum?: number | undefined;
maximum?: number | undefined;
exclusiveMinimum?: number | undefined;
exclusiveMaximum?: number | undefined;
multipleOf?: number | undefined;
}
export interface BooleanSchema extends BaseSchema {
type: "boolean";
}
export interface NullSchema extends BaseSchema {
type: "null";
}