You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
397 lines
13 KiB
397 lines
13 KiB
declare var ajv: { |
|
(options?: ajv.Options): ajv.Ajv; |
|
new(options?: ajv.Options): ajv.Ajv; |
|
ValidationError: typeof AjvErrors.ValidationError; |
|
MissingRefError: typeof AjvErrors.MissingRefError; |
|
$dataMetaSchema: object; |
|
} |
|
|
|
declare namespace AjvErrors { |
|
class ValidationError extends Error { |
|
constructor(errors: Array<ajv.ErrorObject>); |
|
|
|
message: string; |
|
errors: Array<ajv.ErrorObject>; |
|
ajv: true; |
|
validation: true; |
|
} |
|
|
|
class MissingRefError extends Error { |
|
constructor(baseId: string, ref: string, message?: string); |
|
static message: (baseId: string, ref: string) => string; |
|
|
|
message: string; |
|
missingRef: string; |
|
missingSchema: string; |
|
} |
|
} |
|
|
|
declare namespace ajv { |
|
type ValidationError = AjvErrors.ValidationError; |
|
|
|
type MissingRefError = AjvErrors.MissingRefError; |
|
|
|
interface Ajv { |
|
/** |
|
* Validate data using schema |
|
* Schema will be compiled and cached (using serialized JSON as key, [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize by default). |
|
* @param {string|object|Boolean} schemaKeyRef key, ref or schema object |
|
* @param {Any} data to be validated |
|
* @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). |
|
*/ |
|
validate(schemaKeyRef: object | string | boolean, data: any): boolean | PromiseLike<any>; |
|
/** |
|
* Create validating function for passed schema. |
|
* @param {object|Boolean} schema schema object |
|
* @return {Function} validating function |
|
*/ |
|
compile(schema: object | boolean): ValidateFunction; |
|
/** |
|
* Creates validating function for passed schema with asynchronous loading of missing schemas. |
|
* `loadSchema` option should be a function that accepts schema uri and node-style callback. |
|
* @this Ajv |
|
* @param {object|Boolean} schema schema object |
|
* @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped |
|
* @param {Function} callback optional node-style callback, it is always called with 2 parameters: error (or null) and validating function. |
|
* @return {PromiseLike<ValidateFunction>} validating function |
|
*/ |
|
compileAsync(schema: object | boolean, meta?: Boolean, callback?: (err: Error, validate: ValidateFunction) => any): PromiseLike<ValidateFunction>; |
|
/** |
|
* Adds schema to the instance. |
|
* @param {object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. |
|
* @param {string} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
addSchema(schema: Array<object> | object, key?: string): Ajv; |
|
/** |
|
* Add schema that will be used to validate other schemas |
|
* options in META_IGNORE_OPTIONS are alway set to false |
|
* @param {object} schema schema object |
|
* @param {string} key optional schema key |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
addMetaSchema(schema: object, key?: string): Ajv; |
|
/** |
|
* Validate schema |
|
* @param {object|Boolean} schema schema to validate |
|
* @return {Boolean} true if schema is valid |
|
*/ |
|
validateSchema(schema: object | boolean): boolean; |
|
/** |
|
* Get compiled schema from the instance by `key` or `ref`. |
|
* @param {string} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id). |
|
* @return {Function} schema validating function (with property `schema`). Returns undefined if keyRef can't be resolved to an existing schema. |
|
*/ |
|
getSchema(keyRef: string): ValidateFunction | undefined; |
|
/** |
|
* Remove cached schema(s). |
|
* If no parameter is passed all schemas but meta-schemas are removed. |
|
* If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. |
|
* Even if schema is referenced by other schemas it still can be removed as other schemas have local references. |
|
* @param {string|object|RegExp|Boolean} schemaKeyRef key, ref, pattern to match key/ref or schema object |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
removeSchema(schemaKeyRef?: object | string | RegExp | boolean): Ajv; |
|
/** |
|
* Add custom format |
|
* @param {string} name format name |
|
* @param {string|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid) |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
addFormat(name: string, format: FormatValidator | FormatDefinition): Ajv; |
|
/** |
|
* Define custom keyword |
|
* @this Ajv |
|
* @param {string} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. |
|
* @param {object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
addKeyword(keyword: string, definition: KeywordDefinition): Ajv; |
|
/** |
|
* Get keyword definition |
|
* @this Ajv |
|
* @param {string} keyword pre-defined or custom keyword. |
|
* @return {object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise. |
|
*/ |
|
getKeyword(keyword: string): object | boolean; |
|
/** |
|
* Remove keyword |
|
* @this Ajv |
|
* @param {string} keyword pre-defined or custom keyword. |
|
* @return {Ajv} this for method chaining |
|
*/ |
|
removeKeyword(keyword: string): Ajv; |
|
/** |
|
* Validate keyword |
|
* @this Ajv |
|
* @param {object} definition keyword definition object |
|
* @param {boolean} throwError true to throw exception if definition is invalid |
|
* @return {boolean} validation result |
|
*/ |
|
validateKeyword(definition: KeywordDefinition, throwError: boolean): boolean; |
|
/** |
|
* Convert array of error message objects to string |
|
* @param {Array<object>} errors optional array of validation errors, if not passed errors from the instance are used. |
|
* @param {object} options optional options with properties `separator` and `dataVar`. |
|
* @return {string} human readable string with all errors descriptions |
|
*/ |
|
errorsText(errors?: Array<ErrorObject> | null, options?: ErrorsTextOptions): string; |
|
errors?: Array<ErrorObject> | null; |
|
_opts: Options; |
|
} |
|
|
|
interface CustomLogger { |
|
log(...args: any[]): any; |
|
warn(...args: any[]): any; |
|
error(...args: any[]): any; |
|
} |
|
|
|
interface ValidateFunction { |
|
( |
|
data: any, |
|
dataPath?: string, |
|
parentData?: object | Array<any>, |
|
parentDataProperty?: string | number, |
|
rootData?: object | Array<any> |
|
): boolean | PromiseLike<any>; |
|
schema?: object | boolean; |
|
errors?: null | Array<ErrorObject>; |
|
refs?: object; |
|
refVal?: Array<any>; |
|
root?: ValidateFunction | object; |
|
$async?: true; |
|
source?: object; |
|
} |
|
|
|
interface Options { |
|
$data?: boolean; |
|
allErrors?: boolean; |
|
verbose?: boolean; |
|
jsonPointers?: boolean; |
|
uniqueItems?: boolean; |
|
unicode?: boolean; |
|
format?: false | string; |
|
formats?: object; |
|
keywords?: object; |
|
unknownFormats?: true | string[] | 'ignore'; |
|
schemas?: Array<object> | object; |
|
schemaId?: '$id' | 'id' | 'auto'; |
|
missingRefs?: true | 'ignore' | 'fail'; |
|
extendRefs?: true | 'ignore' | 'fail'; |
|
loadSchema?: (uri: string, cb?: (err: Error, schema: object) => void) => PromiseLike<object | boolean>; |
|
removeAdditional?: boolean | 'all' | 'failing'; |
|
useDefaults?: boolean | 'empty' | 'shared'; |
|
coerceTypes?: boolean | 'array'; |
|
strictDefaults?: boolean | 'log'; |
|
strictKeywords?: boolean | 'log'; |
|
strictNumbers?: boolean; |
|
async?: boolean | string; |
|
transpile?: string | ((code: string) => string); |
|
meta?: boolean | object; |
|
validateSchema?: boolean | 'log'; |
|
addUsedSchema?: boolean; |
|
inlineRefs?: boolean | number; |
|
passContext?: boolean; |
|
loopRequired?: number; |
|
ownProperties?: boolean; |
|
multipleOfPrecision?: boolean | number; |
|
errorDataPath?: string, |
|
messages?: boolean; |
|
sourceCode?: boolean; |
|
processCode?: (code: string, schema: object) => string; |
|
cache?: object; |
|
logger?: CustomLogger | false; |
|
nullable?: boolean; |
|
serialize?: ((schema: object | boolean) => any) | false; |
|
} |
|
|
|
type FormatValidator = string | RegExp | ((data: string) => boolean | PromiseLike<any>); |
|
type NumberFormatValidator = ((data: number) => boolean | PromiseLike<any>); |
|
|
|
interface NumberFormatDefinition { |
|
type: "number", |
|
validate: NumberFormatValidator; |
|
compare?: (data1: number, data2: number) => number; |
|
async?: boolean; |
|
} |
|
|
|
interface StringFormatDefinition { |
|
type?: "string", |
|
validate: FormatValidator; |
|
compare?: (data1: string, data2: string) => number; |
|
async?: boolean; |
|
} |
|
|
|
type FormatDefinition = NumberFormatDefinition | StringFormatDefinition; |
|
|
|
interface KeywordDefinition { |
|
type?: string | Array<string>; |
|
async?: boolean; |
|
$data?: boolean; |
|
errors?: boolean | string; |
|
metaSchema?: object; |
|
// schema: false makes validate not to expect schema (ValidateFunction) |
|
schema?: boolean; |
|
statements?: boolean; |
|
dependencies?: Array<string>; |
|
modifying?: boolean; |
|
valid?: boolean; |
|
// one and only one of the following properties should be present |
|
validate?: SchemaValidateFunction | ValidateFunction; |
|
compile?: (schema: any, parentSchema: object, it: CompilationContext) => ValidateFunction; |
|
macro?: (schema: any, parentSchema: object, it: CompilationContext) => object | boolean; |
|
inline?: (it: CompilationContext, keyword: string, schema: any, parentSchema: object) => string; |
|
} |
|
|
|
interface CompilationContext { |
|
level: number; |
|
dataLevel: number; |
|
dataPathArr: string[]; |
|
schema: any; |
|
schemaPath: string; |
|
baseId: string; |
|
async: boolean; |
|
opts: Options; |
|
formats: { |
|
[index: string]: FormatDefinition | undefined; |
|
}; |
|
keywords: { |
|
[index: string]: KeywordDefinition | undefined; |
|
}; |
|
compositeRule: boolean; |
|
validate: (schema: object) => boolean; |
|
util: { |
|
copy(obj: any, target?: any): any; |
|
toHash(source: string[]): { [index: string]: true | undefined }; |
|
equal(obj: any, target: any): boolean; |
|
getProperty(str: string): string; |
|
schemaHasRules(schema: object, rules: any): string; |
|
escapeQuotes(str: string): string; |
|
toQuotedString(str: string): string; |
|
getData(jsonPointer: string, dataLevel: number, paths: string[]): string; |
|
escapeJsonPointer(str: string): string; |
|
unescapeJsonPointer(str: string): string; |
|
escapeFragment(str: string): string; |
|
unescapeFragment(str: string): string; |
|
}; |
|
self: Ajv; |
|
} |
|
|
|
interface SchemaValidateFunction { |
|
( |
|
schema: any, |
|
data: any, |
|
parentSchema?: object, |
|
dataPath?: string, |
|
parentData?: object | Array<any>, |
|
parentDataProperty?: string | number, |
|
rootData?: object | Array<any> |
|
): boolean | PromiseLike<any>; |
|
errors?: Array<ErrorObject>; |
|
} |
|
|
|
interface ErrorsTextOptions { |
|
separator?: string; |
|
dataVar?: string; |
|
} |
|
|
|
interface ErrorObject { |
|
keyword: string; |
|
dataPath: string; |
|
schemaPath: string; |
|
params: ErrorParameters; |
|
// Added to validation errors of propertyNames keyword schema |
|
propertyName?: string; |
|
// Excluded if messages set to false. |
|
message?: string; |
|
// These are added with the `verbose` option. |
|
schema?: any; |
|
parentSchema?: object; |
|
data?: any; |
|
} |
|
|
|
type ErrorParameters = RefParams | LimitParams | AdditionalPropertiesParams | |
|
DependenciesParams | FormatParams | ComparisonParams | |
|
MultipleOfParams | PatternParams | RequiredParams | |
|
TypeParams | UniqueItemsParams | CustomParams | |
|
PatternRequiredParams | PropertyNamesParams | |
|
IfParams | SwitchParams | NoParams | EnumParams; |
|
|
|
interface RefParams { |
|
ref: string; |
|
} |
|
|
|
interface LimitParams { |
|
limit: number; |
|
} |
|
|
|
interface AdditionalPropertiesParams { |
|
additionalProperty: string; |
|
} |
|
|
|
interface DependenciesParams { |
|
property: string; |
|
missingProperty: string; |
|
depsCount: number; |
|
deps: string; |
|
} |
|
|
|
interface FormatParams { |
|
format: string |
|
} |
|
|
|
interface ComparisonParams { |
|
comparison: string; |
|
limit: number | string; |
|
exclusive: boolean; |
|
} |
|
|
|
interface MultipleOfParams { |
|
multipleOf: number; |
|
} |
|
|
|
interface PatternParams { |
|
pattern: string; |
|
} |
|
|
|
interface RequiredParams { |
|
missingProperty: string; |
|
} |
|
|
|
interface TypeParams { |
|
type: string; |
|
} |
|
|
|
interface UniqueItemsParams { |
|
i: number; |
|
j: number; |
|
} |
|
|
|
interface CustomParams { |
|
keyword: string; |
|
} |
|
|
|
interface PatternRequiredParams { |
|
missingPattern: string; |
|
} |
|
|
|
interface PropertyNamesParams { |
|
propertyName: string; |
|
} |
|
|
|
interface IfParams { |
|
failingKeyword: string; |
|
} |
|
|
|
interface SwitchParams { |
|
caseIndex: number; |
|
} |
|
|
|
interface NoParams { } |
|
|
|
interface EnumParams { |
|
allowedValues: Array<any>; |
|
} |
|
} |
|
|
|
export = ajv;
|
|
|