UNPKG

@piggly/fastify-chassis

Version:

An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.

55 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaValidationMiddleware = void 0; const ddd_toolkit_1 = require("@piggly/ddd-toolkit"); const index_js_1 = require("../utils/index.js"); /** * SchemaValidationMiddleware is a middleware that validates the request * body, headers, params and querystring against the provided Zod schemas. * * It will replace the request body, headers, params and querystring with * the validated data. * * @param {Object} schemas - The schemas to validate the request against. * @param {z.ZodType} schemas.body - The schema to validate the request body against. * @param {z.ZodType} schemas.headers - The schema to validate the request headers against. * @param {z.ZodType} schemas.params - The schema to validate the request params against. * @param {z.ZodType} schemas.querystring - The schema to validate the request querystring against. * @returns The middleware function. * @since 1.0.0 * @author Caique Araujo <caique@piggly.com.br> */ const SchemaValidationMiddleware = (schemas) => (request, reply, done) => { let result = ddd_toolkit_1.Result.ok(true); if (schemas.body) { result = (0, ddd_toolkit_1.evaluateSchema)('body', (0, index_js_1.getBody)(request), schemas.body); if (result.isFailure) { return (0, index_js_1.replyError)(reply, result); } request.body = result.data; } if (schemas.headers) { result = (0, ddd_toolkit_1.evaluateSchema)('headers', request.headers, schemas.headers); if (result.isFailure) { return (0, index_js_1.replyError)(reply, result); } request.headers = result.data; } if (schemas.params) { result = (0, ddd_toolkit_1.evaluateSchema)('params', request.params, schemas.params); if (result.isFailure) { return (0, index_js_1.replyError)(reply, result); } request.params = result.data; } if (schemas.querystring) { result = (0, ddd_toolkit_1.evaluateSchema)('querystring', request.query, schemas.querystring); if (result.isFailure) { return (0, index_js_1.replyError)(reply, result); } request.query = result.data; } done(); }; exports.SchemaValidationMiddleware = SchemaValidationMiddleware; //# sourceMappingURL=SchemaValidationMiddleware.js.map