UNPKG

exstack

Version:

A utility library designed to simplify and enhance express.js applications.

48 lines (47 loc) 1.59 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_errors = require("./errors-CWrfln6s.cjs"); let zod = require("zod"); //#region src/zod.ts var Validator = class { #middleware = (target, schema) => (req, _, next) => { try { if (target === "all") { const schemas = schema; for (const key of Object.keys(schemas)) { const zodSchema = schemas[key]; if (!zodSchema) continue; const result = zodSchema.safeParse(req[key] || {}); if (!result.success) throw new require_errors.HttpError(400, { code: "VALIDATION_ERROR", meta: (0, zod.flattenError)(result.error), cause: (0, zod.prettifyError)(result.error), message: `Invalid data in req.${key}` }); req._valid ??= {}; req._valid[key] = result.data; } } else { const result = schema.safeParse(req[target] || {}); if (!result.success) throw new require_errors.HttpError(400, { code: "VALIDATION_ERROR", meta: (0, zod.flattenError)(result.error), cause: (0, zod.prettifyError)(result.error), message: `Invalid data in req.${target}` }); req._valid ??= {}; req._valid[target] = result.data; } req.valid = (t) => req._valid?.[t]; next(); } catch (error) { next(error); } }; all = (schema) => this.#middleware("all", schema); body = (schema) => this.#middleware("body", schema); query = (schema) => this.#middleware("query", schema); params = (schema) => this.#middleware("params", schema); }; const validator = new Validator(); //#endregion exports.validator = validator;