UNPKG

covid-certificate

Version:

Parse and verify a european digital covid certificate (dcc)

59 lines (58 loc) 1.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const AbstractValidator_1 = __importDefault(require("./AbstractValidator")); const ValidatorResult_1 = require("./ValidatorResult"); const ajv_1 = __importDefault(require("ajv")); /** * Validate data by a JSON schema * * @example * ``` * const validator = new JsonSchemaValidator({ * type: "object", * properties: { * foo: {type: "integer"}, * bar: {type: "string"} * }, * required: ["foo"], * additionalProperties: false * }); * * const validatorResult = validator.validate({foo: "3"}, bar: "bar"}); // error * ``` * */ class JsonSchemaValidator extends AbstractValidator_1.default { /** * Create a JsonSchemaValidator * * @param schema */ constructor(schema) { super(); this.schema = schema; } /** * Validate data * * @param data - the data to validate */ validate(data) { const ajv = new ajv_1.default({ strict: false, }); const validate = ajv.compile(this.schema); const valid = validate(data); if (!valid) { const errorMessage = validate.errors .map((error) => error.message) .join(", "); return new ValidatorResult_1.ValidationError("Payload not valid: " + errorMessage); } return new ValidatorResult_1.Valid(); } } exports.default = JsonSchemaValidator;