UNPKG

@message-in-the-middle/core

Version:

Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.

47 lines 1.79 kB
import { ValidateInboundMiddleware } from '../middlewares/validation.middleware'; export function createAjvValidator(schema, options = {}) { let ajv; let validate; const validator = async (data) => { if (!validate) { if (options.ajvInstance) { ajv = options.ajvInstance; } else { try { const AjvModule = require('ajv'); const AjvClass = AjvModule.default || AjvModule; const ajvOptions = { allErrors: true, ...options.ajvOptions, }; ajv = new AjvClass(ajvOptions); try { const addFormats = require('ajv-formats'); addFormats.default ? addFormats.default(ajv) : addFormats(ajv); } catch { } } catch (error) { throw new Error('AJV is not installed. Please install it: npm install ajv ajv-formats'); } } validate = ajv.compile(schema); } const valid = validate(data); if (!valid) { const errors = validate.errors || []; if (options.errorFormatter) { throw options.errorFormatter(errors); } const messages = errors.map((err) => `${err.instancePath || '/'}: ${err.message}`); throw new Error(`JSON Schema validation failed: ${messages.join(', ')}`); } return data; }; return new ValidateInboundMiddleware(validator, { throwOnError: !options.passthrough, }); } //# sourceMappingURL=ajv.validator.js.map