UNPKG

@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
"use strict"; 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