UNPKG

json-schema-to-decoders

Version:

A utility for converting JSON schema definition to decoders

101 lines (100 loc) 3.39 kB
interface BaseSchema { example?: string; examples?: string[]; description?: string; title?: string; allOf?: Partial<Schema>[]; anyOf?: Partial<Schema>[]; oneOf?: Partial<Schema>[]; } export interface EnumSchema extends BaseSchema { enum: Array<string | number | null>; } export interface ConstSchema extends BaseSchema { const: string | number | null; } interface ImplicitObjectSchemaDef extends BaseSchema { additionalProperties?: boolean | Schema; maxProperties?: number; minProperties?: number; patternProperties?: Record<string, Schema>; properties?: Record<string, Schema>; propertyNames?: { pattern: string; }; required?: Array<string>; } interface ObjectSchemaDef extends ImplicitObjectSchemaDef { type: "object"; } export declare type ObjectSchema = ImplicitObjectSchemaDef | ObjectSchemaDef; export declare type ObjectLike = ObjectSchema | "object"; export interface IntegerSchemaDef extends BaseSchema { type: "integer"; multipleOf?: number; minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; } export interface NumberSchemaDef extends BaseSchema { type: "number"; multipleOf?: number; minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; } export declare type NumericSchema = IntegerSchemaDef | NumberSchemaDef; export declare type NumericLike = NumericSchema | "integer" | "number"; interface ArraySchemaDef extends BaseSchema { type: "array"; items?: Schema; maxItems?: number; minItems?: number; prefixItems?: Schema[]; uniqueItems?: boolean; } export declare type ArraySchema = ArraySchemaDef; export declare type ArrayLike = ArraySchema | "array"; export interface StringSchemaDef extends BaseSchema { type: "string"; minLength?: number; maxLength?: number; pattern?: string; format?: string; } export declare type StringSchema = StringSchemaDef; export declare type StringLike = StringSchema | "string"; export interface BooleanSchemaDef extends BaseSchema { type: "boolean"; } export declare type BooleanSchema = BooleanSchemaDef; export declare type BooleanLike = StringSchema | "boolean"; export interface NullSchemaDef extends BaseSchema { type: "null"; } export declare type NullSchema = NullSchemaDef; export declare type NullLike = NullSchema | "null"; export interface AnySchemaDef extends BaseSchema { type: "any"; } export declare type AnySchema = AnySchemaDef; export declare type AnyLike = AnySchema | "any"; export declare type AllOfLikeSchema = Omit<SchemaDef, "allOf"> & { allOf: Partial<Schema>[]; }; export declare type OneOfLikeSchema = Omit<SchemaDef, "oneOf"> & { oneOf: Partial<Schema>[]; }; export declare type AnyOfShorthandDef = Schema[]; export declare type AnyOfLikeSchema = AnyOfShorthandDef | (Omit<SchemaDef, "anyOf"> & { anyOf: Partial<Schema>[]; }); export declare type RefSchema = { $ref: string; }; export declare type SchemaStr = "object" | "array" | "integer" | "number" | "string" | "boolean" | "null" | "any"; export declare type SchemaDef = ObjectSchema | ArraySchema | StringSchema | NumericSchema | AnySchema | BooleanSchema | NullSchema | EnumSchema | ConstSchema; export declare type Schema = SchemaDef | AnyOfShorthandDef | SchemaStr | RefSchema; export {};