UNPKG

@mini2/core

Version:

Mini Express Framework - Lightweight and modular Express.js framework with TypeScript support

62 lines 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = validationMiddleware; const class_transformer_1 = require("class-transformer"); const class_validator_1 = require("class-validator"); /** * validationMiddleware(ValidationClass, 'body' | 'query' | 'params') * - Orijinal kaynakları (req.body/query/params) ÜZERİNE YAZMAZ. * - Doğrulanmış veriyi şu alanlara koyar: req.validatedBody / req.validatedQuery / req.validatedParams * - Hata varsa 400 döner. */ function validationMiddleware(ValidationClass, type) { const handler = async (req, res, next) => { try { const source = type === 'body' ? req.body : type === 'query' ? req.query : req.params; // class-transformer const instance = (0, class_transformer_1.plainToInstance)(ValidationClass, source, { enableImplicitConversion: true, exposeDefaultValues: true, }); // class-validator const errors = await (0, class_validator_1.validate)(instance, { whitelist: true, forbidNonWhitelisted: false, skipMissingProperties: false, validationError: { target: false, value: false }, }); if (errors.length > 0) { res.status(400).json({ ok: false, message: 'Validation error', errors: errors.map(e => ({ property: e.property, constraints: e.constraints, })), }); return; // <-- explicit return } // validated* alanlarına yaz if (type === 'body') req.validatedBody = instance; if (type === 'query') req.validatedQuery = instance; if (type === 'params') req.validatedParams = instance; next(); return; // <-- explicit return } catch (err) { res.status(400).json({ ok: false, message: 'Validation middleware failed', error: err?.message ?? String(err), }); return; // <-- explicit return } }; return handler; // <-- handler'ı açıkça döndür } //# sourceMappingURL=validation.middleware.js.map