Download node_modules/hono/dist/validator/validator.js from Snapkitty/agentscope-sift: direct link, hf CLI and curl.
- Browser
- Download file 2.88 kB
-
https://huggingface.co/Snapkitty/agentscope-sift/resolve/main/node_modules/hono/dist/validator/validator.js
- Command line
-
hf download hf://Snapkitty/agentscope-sift/node_modules/hono/dist/validator/validator.js
-
curl -L -o validator.js https://huggingface.co/Snapkitty/agentscope-sift/resolve/main/node_modules/hono/dist/validator/validator.js
2.88 kB
| // src/validator/validator.ts | |
| import { getCookie } from "../helper/cookie/index.js"; | |
| import { HTTPException } from "../http-exception.js"; | |
| import { bufferToFormData } from "../utils/buffer.js"; | |
| var jsonRegex = /^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/; | |
| var multipartRegex = /^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/; | |
| var urlencodedRegex = /^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/; | |
| var 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 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 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 HTTPException(400, { message }); | |
| } | |
| } | |
| const form = /* @__PURE__ */ 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 = getCookie(c); | |
| break; | |
| } | |
| const res = await validationFunc(value, c); | |
| if (res instanceof Response) { | |
| return res; | |
| } | |
| c.req.addValidatedData(target, res); | |
| return await next(); | |
| }; | |
| }; | |
| export { | |
| validator | |
| }; | |