2017-05-03 15:35:00 +02:00
declare var ajv : {
( options? : ajv.Options ) : ajv . Ajv ;
new ( options? : ajv.Options ) : ajv . Ajv ;
2017-12-10 21:51:33 +01:00
ValidationError : ValidationError ;
MissingRefError : MissingRefError ;
$dataMetaSchema : Object ;
2017-05-03 15:35:00 +02:00
}
declare namespace ajv {
interface Ajv {
/ * *
* Validate data using schema
2017-12-10 21:51:33 +01:00
* 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).
2017-08-14 05:01:11 +02:00
* @param { String | Object | Boolean } schemaKeyRef key , ref or schema object
2017-05-03 15:35:00 +02:00
* @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 ` ) .
* /
2017-08-14 05:01:11 +02:00
validate ( schemaKeyRef : Object | string | boolean , data : any ) : boolean | Thenable < any > ;
2017-05-03 15:35:00 +02:00
/ * *
* Create validating function for passed schema .
2017-08-14 05:01:11 +02:00
* @param { Object | Boolean } schema schema object
2017-05-03 15:35:00 +02:00
* @return { Function } validating function
* /
2017-08-14 05:01:11 +02:00
compile ( schema : Object | boolean ) : ValidateFunction ;
2017-05-03 15:35:00 +02:00
/ * *
* 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
2017-08-14 05:01:11 +02:00
* @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 { Thenable < ValidateFunction > } validating function
2017-05-03 15:35:00 +02:00
* /
2017-08-14 05:01:11 +02:00
compileAsync ( schema : Object | boolean , meta? : Boolean , callback ? : ( err : Error , validate : ValidateFunction ) = > any ) : Thenable < ValidateFunction > ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 ` .
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
addSchema ( schema : Array < Object > | Object , key? : string ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* 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
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
addMetaSchema ( schema : Object , key? : string ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* Validate schema
2017-08-14 05:01:11 +02:00
* @param { Object | Boolean } schema schema to validate
2017-05-03 15:35:00 +02:00
* @return { Boolean } true if schema is valid
* /
2017-08-14 05:01:11 +02:00
validateSchema ( schema : Object | boolean ) : boolean ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 ` ) .
* /
getSchema ( keyRef : string ) : ValidateFunction ;
/ * *
* 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 .
2017-08-14 05:01:11 +02:00
* @param { String | Object | RegExp | Boolean } schemaKeyRef key , ref , pattern to match key / ref or schema object
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
removeSchema ( schemaKeyRef? : Object | string | RegExp | boolean ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 )
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
addFormat ( name : string , format : FormatValidator | FormatDefinition ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 ` .
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
addKeyword ( keyword : string , definition : KeywordDefinition ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 .
2017-12-10 21:51:33 +01:00
* @return { Ajv } this for method chaining
2017-05-03 15:35:00 +02:00
* /
2017-12-10 21:51:33 +01:00
removeKeyword ( keyword : string ) : Ajv ;
2017-05-03 15:35:00 +02:00
/ * *
* 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 > , options? : ErrorsTextOptions ) : string ;
errors? : Array < ErrorObject > ;
}
interface Thenable < R > {
then < U > ( onFulfilled ? : ( value : R ) = > U | Thenable < U > , onRejected ? : ( error : any ) = > U | Thenable < U > ) : Thenable < U > ;
}
interface ValidateFunction {
(
data : any ,
dataPath? : string ,
parentData? : Object | Array < any > ,
parentDataProperty? : string | number ,
rootData? : Object | Array < any >
2017-08-14 05:01:11 +02:00
) : boolean | Thenable < any > ;
schema? : Object | boolean ;
2017-12-10 21:51:33 +01:00
errors? : null | Array < ErrorObject > ;
refs? : Object ;
refVal? : Array < any > ;
root? : ValidateFunction | Object ;
$async? : true ;
source? : Object ;
2017-05-03 15:35:00 +02:00
}
interface Options {
2017-08-14 05:01:11 +02:00
$data? : boolean ;
2017-05-03 15:35:00 +02:00
allErrors? : boolean ;
verbose? : boolean ;
jsonPointers? : boolean ;
uniqueItems? : boolean ;
unicode? : boolean ;
format? : string ;
formats? : Object ;
2017-08-14 05:01:11 +02:00
unknownFormats? : true | string [ ] | 'ignore' ;
2017-05-03 15:35:00 +02:00
schemas? : Array < Object > | Object ;
2017-08-14 05:01:11 +02:00
schemaId ? : '$id' | 'id' ;
missingRefs? : true | 'ignore' | 'fail' ;
extendRefs? : true | 'ignore' | 'fail' ;
loadSchema ? : ( uri : string , cb ? : ( err : Error , schema : Object ) = > void ) = > Thenable < Object | boolean > ;
removeAdditional? : boolean | 'all' | 'failing' ;
useDefaults? : boolean | 'shared' ;
coerceTypes? : boolean | 'array' ;
2017-05-03 15:35:00 +02:00
async ? : boolean | string ;
transpile? : string | ( ( code : string ) = > string ) ;
meta? : boolean | Object ;
2017-08-14 05:01:11 +02:00
validateSchema? : boolean | 'log' ;
2017-05-03 15:35:00 +02:00
addUsedSchema? : boolean ;
inlineRefs? : boolean | number ;
passContext? : boolean ;
loopRequired? : number ;
2017-08-14 05:01:11 +02:00
ownProperties? : boolean ;
multipleOfPrecision? : boolean | number ;
errorDataPath? : string ,
2017-05-03 15:35:00 +02:00
messages? : boolean ;
sourceCode? : boolean ;
2017-08-14 05:01:11 +02:00
processCode ? : ( code : string ) = > string ;
2017-05-03 15:35:00 +02:00
cache? : Object ;
}
2017-12-10 21:51:33 +01:00
type FormatValidator = string | RegExp | ( ( data : string ) = > boolean | Thenable < any > ) ;
2017-05-03 15:35:00 +02:00
interface FormatDefinition {
validate : FormatValidator ;
compare : ( data1 : string , data2 : string ) = > number ;
async ? : boolean ;
}
interface KeywordDefinition {
type ? : string | Array < string > ;
async ? : boolean ;
2017-08-14 05:01:11 +02:00
$data? : boolean ;
2017-05-03 15:35:00 +02:00
errors? : boolean | string ;
2017-08-14 05:01:11 +02:00
metaSchema? : Object ;
2017-05-03 15:35:00 +02:00
// schema: false makes validate not to expect schema (ValidateFunction)
schema? : boolean ;
modifying? : boolean ;
valid? : boolean ;
// one and only one of the following properties should be present
2017-08-14 05:01:11 +02:00
validate? : SchemaValidateFunction | ValidateFunction ;
compile ? : ( schema : any , parentSchema : Object ) = > ValidateFunction ;
macro ? : ( schema : any , parentSchema : Object ) = > Object | boolean ;
inline ? : ( it : Object , keyword : string , schema : any , parentSchema : Object ) = > string ;
2017-05-03 15:35:00 +02:00
}
interface SchemaValidateFunction {
(
2017-08-14 05:01:11 +02:00
schema : any ,
2017-05-03 15:35:00 +02:00
data : any ,
parentSchema? : Object ,
dataPath? : string ,
parentData? : Object | Array < any > ,
2017-08-14 05:01:11 +02:00
parentDataProperty? : string | number ,
rootData? : Object | Array < any >
) : boolean | Thenable < any > ;
2017-05-03 15:35:00 +02:00
errors? : Array < ErrorObject > ;
}
interface ErrorsTextOptions {
separator? : string ;
dataVar? : string ;
}
interface ErrorObject {
keyword : string ;
dataPath : string ;
schemaPath : string ;
params : ErrorParameters ;
2017-08-14 05:01:11 +02:00
// Added to validation errors of propertyNames keyword schema
propertyName? : string ;
2017-05-03 15:35:00 +02:00
// Excluded if messages set to false.
message? : string ;
// These are added with the `verbose` option.
2017-08-14 05:01:11 +02:00
schema? : any ;
2017-05-03 15:35:00 +02:00
parentSchema? : Object ;
data? : any ;
}
type ErrorParameters = RefParams | LimitParams | AdditionalPropertiesParams |
DependenciesParams | FormatParams | ComparisonParams |
MultipleOfParams | PatternParams | RequiredParams |
TypeParams | UniqueItemsParams | CustomParams |
PatternGroupsParams | PatternRequiredParams |
2017-08-14 05:01:11 +02:00
PropertyNamesParams | SwitchParams | NoParams | EnumParams ;
2017-05-03 15:35:00 +02:00
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 PatternGroupsParams {
reason : string ;
limit : number ;
pattern : string ;
}
interface PatternRequiredParams {
missingPattern : string ;
}
2017-08-14 05:01:11 +02:00
interface PropertyNamesParams {
propertyName : string ;
}
2017-05-03 15:35:00 +02:00
interface SwitchParams {
caseIndex : number ;
}
interface NoParams { }
interface EnumParams {
allowedValues : Array < any > ;
}
}
2017-12-10 21:51:33 +01:00
declare class ValidationError extends Error {
constructor ( errors : Array < ajv.ErrorObject > ) ;
message : string ;
errors : Array < ajv.ErrorObject > ;
ajv : true ;
validation : true ;
}
declare class MissingRefError extends Error {
constructor ( baseId : string , ref : string , message? : string ) ;
static message : ( baseId : string , ref : string ) = > string ;
message : string ;
missingRef : string ;
missingSchema : string ;
}
2017-05-03 15:35:00 +02:00
export = ajv ;