@mini2/core
Version:
Mini Express Framework - Lightweight and modular Express.js framework with TypeScript support
62 lines • 2.46 kB
JavaScript
;
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