@tomisakae/syosetu-api
Version:
Enterprise-grade Fastify TypeScript API for Syosetu.com data extraction using official API and web scraping. Run instantly with 'npx @tomisakae/syosetu-api'
75 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateBody = exports.validateQuery = exports.validateParams = exports.validateSchema = void 0;
const zod_1 = require("zod");
const utils_1 = require("@/utils");
const validateSchema = (schema) => {
return async (request, reply) => {
try {
const dataToValidate = {
...request.params,
...request.query,
...request.body,
};
schema.parse(dataToValidate);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
(0, utils_1.sendValidationError)(reply, errors);
return;
}
(0, utils_1.sendValidationError)(reply, ['Validation failed']);
}
};
};
exports.validateSchema = validateSchema;
const validateParams = (schema) => {
return async (request, reply) => {
try {
schema.parse(request.params);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
(0, utils_1.sendValidationError)(reply, errors);
return;
}
(0, utils_1.sendValidationError)(reply, ['Parameter validation failed']);
}
};
};
exports.validateParams = validateParams;
const validateQuery = (schema) => {
return async (request, reply) => {
try {
schema.parse(request.query);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
(0, utils_1.sendValidationError)(reply, errors);
return;
}
(0, utils_1.sendValidationError)(reply, ['Query validation failed']);
}
};
};
exports.validateQuery = validateQuery;
const validateBody = (schema) => {
return async (request, reply) => {
try {
schema.parse(request.body);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
(0, utils_1.sendValidationError)(reply, errors);
return;
}
(0, utils_1.sendValidationError)(reply, ['Body validation failed']);
}
};
};
exports.validateBody = validateBody;
//# sourceMappingURL=validation.js.map