@klayr/validator
Version:
Validation library according to the Klayr protocol
71 lines • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validator = exports.KlayrValidator = exports.klayrschemaIdentifier = void 0;
const ajv_1 = require("ajv");
const ajv_formats_1 = require("ajv-formats");
const formats = require("./formats");
const errors_1 = require("./errors");
const field_number_1 = require("./keywords/field_number");
const data_type_1 = require("./keywords/data_type");
const klayr_meta_schema_1 = require("./klayr_meta_schema");
exports.klayrschemaIdentifier = klayr_meta_schema_1.klayrmetaSchema.$id;
class KlayrValidator {
constructor() {
this._validator = new ajv_1.default({
strict: true,
strictSchema: true,
allErrors: true,
addUsedSchema: false,
strictTypes: false,
});
(0, ajv_formats_1.default)(this._validator);
for (const [formatName, format] of Object.entries(formats)) {
this._validator.addFormat(formatName, format);
}
this._validator.addKeyword({
keyword: 'uniqueSignedPublicKeys',
type: 'array',
compile: () => (data) => new Set(data.filter(datum => typeof datum === 'string').map((key) => key.slice(1)))
.size === data.length,
});
this._validator.compile(klayr_meta_schema_1.klayrmetaSchema);
this._validator.addMetaSchema(klayr_meta_schema_1.klayrmetaSchema);
this._validator.addKeyword(field_number_1.fieldNumberKeyword);
this._validator.addKeyword(data_type_1.dataTypeKeyword);
}
validate(schema, data) {
if (!this._validator.validate(schema, data)) {
throw new errors_1.KlayrvalidationError((0, errors_1.convertErrorsToLegacyFormat)(this._validator.errors));
}
}
validateSchema(schema) {
if (!this._validator.validateSchema(schema)) {
throw new errors_1.KlayrvalidationError((0, errors_1.convertErrorsToLegacyFormat)(this._validator.errors));
}
}
compile(schema) {
try {
return this._validator.compile(schema);
}
catch (error) {
if (error instanceof errors_1.KlayrvalidationError) {
throw error;
}
throw new errors_1.KlayrvalidationError([
{
message: error.message.toString(),
dataPath: '',
keyword: '',
schemaPath: '',
params: {},
},
]);
}
}
removeSchema(schemaKeyRef) {
return this._validator.removeSchema(schemaKeyRef);
}
}
exports.KlayrValidator = KlayrValidator;
exports.validator = new KlayrValidator();
//# sourceMappingURL=klayr_validator.js.map