UNPKG

asyncapi-sub-middleware

Version:

Create routes and validation for an express-like async server

42 lines (37 loc) 933 B
/*! * asyncapi-middleware * Copyright(c) 2023 MFT * MIT Licensed */ /** * Module dependencies. * @private */ const Ajv = require('ajv'); const addFormats = require('ajv-formats'); const ValidationError = require('../validationError'); const ajv = new Ajv({ coerceTypes: true }); addFormats(ajv); function validateParams(paramsSchema) { const validate = ajv.compile(paramsSchema); return (req, res, next) => { const { 0: ignoreIfExists, ...myParams } = req.params; const valid = validate(myParams); if (valid) { req.api = { ...req.api, params: myParams, }; next(); } else { const [err] = validate.errors; const invalid = new ValidationError( ValidationError.PARAMS_VALIDATION_FAILURE, `Parameter validation error on ${err.schemaPath}: ${err.message}`, err, ); next(invalid); } }; } module.exports = validateParams;