| var __defProp = Object.defineProperty;
|
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
| var __getOwnPropNames = Object.getOwnPropertyNames;
|
| var __hasOwnProp = Object.prototype.hasOwnProperty;
|
| var __export = (target, all) => {
|
| for (var name in all)
|
| __defProp(target, name, { get: all[name], enumerable: true });
|
| };
|
| var __copyProps = (to, from, except, desc) => {
|
| if (from && typeof from === "object" || typeof from === "function") {
|
| for (let key of __getOwnPropNames(from))
|
| if (!__hasOwnProp.call(to, key) && key !== except)
|
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
| }
|
| return to;
|
| };
|
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
| var validator_exports = {};
|
| __export(validator_exports, {
|
| validator: () => validator
|
| });
|
| module.exports = __toCommonJS(validator_exports);
|
| var import_cookie = require("../helper/cookie");
|
| var import_http_exception = require("../http-exception");
|
| var import_buffer = require("../utils/buffer");
|
| const jsonRegex = /^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/;
|
| const multipartRegex = /^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/;
|
| const urlencodedRegex = /^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/;
|
| const validator = (target, validationFunc) => {
|
| return async (c, next) => {
|
| let value = {};
|
| const contentType = c.req.header("Content-Type");
|
| switch (target) {
|
| case "json":
|
| if (!contentType || !jsonRegex.test(contentType)) {
|
| break;
|
| }
|
| try {
|
| value = await c.req.json();
|
| } catch {
|
| const message = "Malformed JSON in request body";
|
| throw new import_http_exception.HTTPException(400, { message });
|
| }
|
| break;
|
| case "form": {
|
| if (!contentType || !(multipartRegex.test(contentType) || urlencodedRegex.test(contentType))) {
|
| break;
|
| }
|
| let formData;
|
| if (c.req.bodyCache.formData) {
|
| formData = await c.req.bodyCache.formData;
|
| } else {
|
| try {
|
| const arrayBuffer = await c.req.arrayBuffer();
|
| formData = await (0, import_buffer.bufferToFormData)(arrayBuffer, contentType);
|
| c.req.bodyCache.formData = formData;
|
| } catch (e) {
|
| let message = "Malformed FormData request.";
|
| message += e instanceof Error ? ` ${e.message}` : ` ${String(e)}`;
|
| throw new import_http_exception.HTTPException(400, { message });
|
| }
|
| }
|
| const form = Object.create(null);
|
| formData.forEach((value2, key) => {
|
| if (key.endsWith("[]")) {
|
| ;
|
| (form[key] ??= []).push(value2);
|
| } else if (Array.isArray(form[key])) {
|
| ;
|
| form[key].push(value2);
|
| } else if (Object.hasOwn(form, key)) {
|
| form[key] = [form[key], value2];
|
| } else {
|
| form[key] = value2;
|
| }
|
| });
|
| value = form;
|
| break;
|
| }
|
| case "query":
|
| value = Object.fromEntries(
|
| Object.entries(c.req.queries()).map(([k, v]) => {
|
| return v.length === 1 ? [k, v[0]] : [k, v];
|
| })
|
| );
|
| break;
|
| case "param":
|
| value = c.req.param();
|
| break;
|
| case "header":
|
| value = c.req.header();
|
| break;
|
| case "cookie":
|
| value = (0, import_cookie.getCookie)(c);
|
| break;
|
| }
|
| const res = await validationFunc(value, c);
|
| if (res instanceof Response) {
|
| return res;
|
| }
|
| c.req.addValidatedData(target, res);
|
| return await next();
|
| };
|
| };
|
|
|
| 0 && (module.exports = {
|
| validator
|
| });
|
|
|