···2233import type { Result } from '../../types/misc.ts';
4455+/**
66+ * checks whether a request has a meaningful body.
77+ *
88+ * Node.js HTTP-to-fetch adapters always provide a `ReadableStream` for
99+ * `request.body`, even when no body content was sent. this function
1010+ * uses `content-length` to handle that case while still respecting the
1111+ * web `Request` API where `body === null` signals no body.
1212+ *
1313+ * @param request incoming request to check
1414+ * @returns whether the request has body content
1515+ */
1616+export const hasRequestBody = (request: Request): boolean => {
1717+ if (request.body === null) {
1818+ return false;
1919+ }
2020+2121+ // Node.js adapters set content-length: 0 for bodiless requests while
2222+ // still providing a ReadableStream body; treat this as no body.
2323+ if (request.headers.get('content-length') === '0') {
2424+ return false;
2525+ }
2626+2727+ return true;
2828+};
2929+530const jsonMimeValidator = (() => {
631 const JSON_RE = /^\s*application\/json\s*(?:$|;)/;
732