covid-certificate
Version:
Parse and verify a european digital covid certificate (dcc)
59 lines (58 loc) • 1.62 kB
JavaScript
;
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;