UNPKG

@klayr/validator

Version:
71 lines 2.79 kB
"use strict"; 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