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.

49 lines
1.3 KiB

4 years ago
'use strict';
module.exports = function (ajv, options) {
if (!ajv._opts.allErrors) throw new Error('ajv-errors: Ajv option allErrors must be true');
if (!ajv._opts.jsonPointers) {
console.warn('ajv-errors: Ajv option jsonPointers changed to true');
ajv._opts.jsonPointers = true;
}
ajv.addKeyword('errorMessage', {
inline: require('./lib/dotjs/errorMessage'),
statements: true,
valid: true,
errors: 'full',
config: {
KEYWORD_PROPERTY_PARAMS: {
required: 'missingProperty',
dependencies: 'property'
},
options: options || {}
},
metaSchema: {
'type': ['string', 'object'],
properties: {
properties: {$ref: '#/definitions/stringMap'},
items: {$ref: '#/definitions/stringList'},
required: {$ref: '#/definitions/stringOrMap'},
dependencies: {$ref: '#/definitions/stringOrMap'}
},
additionalProperties: {'type': 'string'},
definitions: {
stringMap: {
'type': ['object'],
additionalProperties: {'type': 'string'}
},
stringOrMap: {
'type': ['string', 'object'],
additionalProperties: {'type': 'string'}
},
stringList: {
'type': ['array'],
items: {'type': 'string'}
}
}
}
});
return ajv;
};