wallet-core/node_modules/ajv/lib/ajv.d.ts

329 lines
11 KiB
TypeScript
Raw Normal View History

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;