one-link/node_modules/hono/dist/utils/body.js

44 lines
1.3 KiB
JavaScript

// src/utils/body.ts
import { HonoRequest } from "../request.js";
var parseBody = async (request, options = { all: false }) => {
const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;
const contentType = headers.get("Content-Type");
if (contentType !== null && contentType.startsWith("multipart/form-data") || contentType !== null && contentType.startsWith("application/x-www-form-urlencoded")) {
return parseFormData(request, options);
}
return {};
};
async function parseFormData(request, options) {
const formData = await request.formData();
if (formData) {
return convertFormDataToBodyData(formData, options);
}
return {};
}
function convertFormDataToBodyData(formData, options) {
const form = {};
formData.forEach((value, key) => {
const shouldParseAllValues = options.all || key.endsWith("[]");
if (!shouldParseAllValues) {
form[key] = value;
} else {
handleParsingAllValues(form, key, value);
}
});
return form;
}
var handleParsingAllValues = (form, key, value) => {
const formKey = form[key];
if (formKey && Array.isArray(formKey)) {
;
form[key].push(value);
} else if (formKey) {
form[key] = [formKey, value];
} else {
form[key] = value;
}
};
export {
parseBody
};