bridgets
Version:
<p align="center"> <a href="https://bridgets.co"> <img src="http://bridgets.co/assets/logo-short.svg" height="48" /> <h1 align="center">BridgeTS</h1> </a> </p>
47 lines • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataValidator = exports.isZodParser = void 0;
// This code was strongly inspired from @trpc/server
const Errors_1 = require("../../Errors");
const handler_1 = require("../handler");
const isZodParser = (parser) => typeof parser?.safeParse === 'function';
exports.isZodParser = isZodParser;
/**
*
*/
class DataValidator extends handler_1.AbstractHandler {
parser;
dataToValidate;
output;
constructor(parser, dataToValidate) {
super();
this.parser = parser;
this.dataToValidate = dataToValidate;
}
isYupParser = (parser) => typeof parser.validateSync === 'function';
isSuperstructParser = (parser) => typeof parser.create === 'function';
isZodParser = (parser) => typeof parser.safeParse === 'function';
handle = async (data) => {
try {
if (this.isYupParser(this.parser))
this.parser.validateSync(data[this.dataToValidate]);
else if (this.isZodParser(this.parser))
this.parser.parse(data[this.dataToValidate]);
else if (this.isSuperstructParser(this.parser))
this.parser.create(data[this.dataToValidate]);
return super.handle(data);
}
catch (error) {
switch (this.dataToValidate) {
case 'body':
return (0, Errors_1.httpError)('Unprocessable entity', `Body schema validation error`, error);
case 'query':
return (0, Errors_1.httpError)('Unprocessable entity', `Query schema validation error`, error);
case 'headers':
return (0, Errors_1.httpError)('Unprocessable entity', `Headers schema validation error`, error);
}
}
};
}
exports.DataValidator = DataValidator;
//# sourceMappingURL=dataValidator.js.map