UNPKG

@dvsa/appdev-api-common

Version:

Utils library for common API functionality

29 lines (28 loc) 1.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateJsonSchema = validateJsonSchema; const ajv_1 = __importDefault(require("ajv")); const ajv_formats_1 = __importDefault(require("ajv-formats")); const http_status_codes_1 = require("../api/http-status-codes"); const validation_error_1 = require("./validation-error"); const ajv = new ajv_1.default({ removeAdditional: true, allErrors: true }); (0, ajv_formats_1.default)(ajv); ajv.addKeyword("tsEnumNames"); const validatorCache = new WeakMap(); function getValidator(schema) { let validator = validatorCache.get(schema); if (!validator) { validator = ajv.compile(schema); validatorCache.set(schema, validator); } return validator; } function validateJsonSchema(schema, data) { const validateFunction = getValidator(schema); if (!validateFunction(data)) { throw new validation_error_1.ValidationError(http_status_codes_1.HttpStatus.BAD_REQUEST, "Validation failed", [...(validateFunction.errors ?? [])]); } }