UNPKG

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