@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.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SchemaValidationMiddleware = void 0;
const ddd_toolkit_1 = require("@piggly/ddd-toolkit");
const utils_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 {ZodSchema} schemas.body - The schema to validate the request body against.
* @param {ZodSchema} schemas.headers - The schema to validate the request headers against.
* @param {ZodSchema} schemas.params - The schema to validate the request params against.
* @param {ZodSchema} 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, utils_1.getBody)(request), schemas.body);
if (result.isFailure) {
return (0, utils_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, utils_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, utils_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, utils_1.replyError)(reply, result);
}
request.query = result.data;
}
done();
};
exports.SchemaValidationMiddleware = SchemaValidationMiddleware;
//# sourceMappingURL=SchemaValidationMiddleware.js.map