tynder
Version:
TypeScript friendly Data validator for JavaScript.
101 lines (100 loc) • 4.22 kB
TypeScript
export interface JsonSchemaObjectPropertyAssertion {
[propName: string]: JsonSchemaAssertion;
}
export interface JsonSchemaAssertionBase {
description?: string;
}
export interface JsonSchemaNullAssertion extends JsonSchemaAssertionBase {
type: 'null';
}
export interface JsonSchemaAnyAssertion extends JsonSchemaAssertionBase {
type: Array<'null' | 'number' | 'integer' | 'string' | 'boolean' | 'array' | 'object'>;
}
export declare type JsonSchemaUnknownAssertion = JsonSchemaAnyAssertion;
interface JsonSchemaNumberAssertionConstraints {
multipleOf?: number;
maximum?: number;
exclusiveMaximum?: number;
minimum?: number;
exclusiveMinimum?: number;
}
export interface JsonSchemaNumberAssertion extends JsonSchemaAssertionBase, JsonSchemaNumberAssertionConstraints {
type: 'number' | 'integer' | Array<'number' | 'integer' | 'null'>;
}
export interface JsonSchemaBigIntAssertion extends JsonSchemaAssertionBase, JsonSchemaNumberAssertionConstraints {
type: Array<'integer' | 'string'>;
}
export interface JsonSchemaNumberValueAssertion extends JsonSchemaAssertionBase {
type: 'number';
enum: number[];
}
export interface JsonSchemaBigIntNumberValueAssertion extends JsonSchemaAssertionBase {
type: Array<'integer' | 'string'>;
enum: Array<number | string>;
}
export interface JsonSchemaStringAssertion extends JsonSchemaAssertionBase {
type: 'string' | Array<'string' | 'null'>;
maxLength?: number;
minLength?: number;
pattern?: string;
}
export interface JsonSchemaStringValueAssertion extends JsonSchemaAssertionBase {
type: 'string';
enum: string[];
}
export interface JsonSchemaBooleanAssertion extends JsonSchemaAssertionBase {
type: 'boolean' | Array<'boolean' | 'null'>;
}
export interface JsonSchemaBooleanValueAssertion extends JsonSchemaAssertionBase {
type: 'boolean';
enum: boolean[];
}
export interface JsonSchemaArrayAssertion extends JsonSchemaAssertionBase {
type: 'array' | Array<'array' | 'null'>;
items: JsonSchemaAssertion;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
maxContains?: number;
minContains?: number;
}
export interface JsonSchemaObjectAssertion extends JsonSchemaAssertionBase {
type: 'object' | Array<'object' | 'null'>;
properties?: JsonSchemaObjectPropertyAssertion;
maxProperties?: number;
minProperties?: number;
required?: string[];
dependentRequired?: {};
additionalProperties?: boolean;
patternProperties?: JsonSchemaObjectPropertyAssertion;
anyOf?: JsonSchemaAssertion[];
oneOf?: JsonSchemaAssertion[];
allOf?: JsonSchemaAssertion[];
}
export interface JsonSchemaTsEnumAssertion extends JsonSchemaAssertionBase {
type: Array<'string' | 'number'>;
enum: Array<string | number>;
}
export interface JsonSchemaAnyOfAssertion extends JsonSchemaAssertionBase {
anyOf: JsonSchemaAssertion[];
}
export interface JsonSchemaOneOfAssertion extends JsonSchemaAssertionBase {
oneOf: JsonSchemaAssertion[];
}
export interface JsonSchemaAllOfAssertion extends JsonSchemaAssertionBase {
allOf: JsonSchemaAssertion[];
}
export interface JsonSchemaNotAssertion extends JsonSchemaAssertionBase {
not: JsonSchemaAssertion;
}
export interface JsonSchemaRefAssertion extends JsonSchemaAssertionBase {
$ref: string;
}
export declare type JsonSchemaAssertion = JsonSchemaNullAssertion | JsonSchemaAnyAssertion | JsonSchemaUnknownAssertion | JsonSchemaNumberAssertion | JsonSchemaBigIntAssertion | JsonSchemaNumberValueAssertion | JsonSchemaBigIntNumberValueAssertion | JsonSchemaStringAssertion | JsonSchemaStringValueAssertion | JsonSchemaBooleanAssertion | JsonSchemaBooleanValueAssertion | JsonSchemaArrayAssertion | JsonSchemaObjectAssertion | JsonSchemaTsEnumAssertion | JsonSchemaAnyOfAssertion | JsonSchemaOneOfAssertion | JsonSchemaAllOfAssertion | JsonSchemaRefAssertion;
export interface JsonSchemaRootAssertion extends Partial<JsonSchemaObjectAssertion> {
$schema?: string;
$id?: string;
title?: string;
definitions?: JsonSchemaObjectPropertyAssertion;
}
export {};