exstack
Version:
A utility library designed to simplify and enhance express.js applications.
48 lines (47 loc) • 1.59 kB
JavaScript
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;