/// import * as dntShim from "./_dnt.shims.js"; import type { ServerRequest } from "./types.js"; type JsonReviver = (key: string, value: unknown) => unknown; export type BodyType = "binary" | "form" | "form-data" | "json" | "text" | "unknown"; /** An object which encapsulates information around a request body. */ export declare class Body { #private; constructor(serverRequest: Pick, reviver?: JsonReviver); /** Is `true` if the request might have a body, otherwise `false`. * * **WARNING** this is an unreliable API. In HTTP/2 in many situations you * cannot determine if a request has a body or not unless you attempt to read * the body, due to the streaming nature of HTTP/2. As of Deno 1.16.1, for * HTTP/1.1, Deno also reflects that behavior. The only reliable way to * determine if a request has a body or not is to attempt to read the body. */ get has(): boolean; /** Exposes the "raw" `ReadableStream` of the body. */ get stream(): ReadableStream | null; /** Returns `true` if the body has been consumed yet, otherwise `false`. */ get used(): boolean; /** Reads a body to the end and resolves with the value as an * {@linkcode ArrayBuffer} */ arrayBuffer(): Promise; /** Reads a body to the end and resolves with the value as a * {@linkcode Blob}. */ blob(): Promise; /** Reads a body as a URL encoded form, resolving the value as * {@linkcode URLSearchParams}. */ form(): Promise; /** Reads a body to the end attempting to parse the body as a set of * {@linkcode FormData}. */ formData(): Promise; /** Reads a body to the end attempting to parse the body as a JSON value. * * If a JSON reviver has been assigned, it will be used to parse the body. */ json(): Promise; /** Reads the body to the end resolving with a string. */ text(): Promise; /** Attempts to determine what type of the body is to help determine how best * to attempt to decode the body. This performs analysis on the supplied * `Content-Type` header of the request. * * **Note** these are not authoritative and should only be used as guidance. * * There is the ability to provide custom types when attempting to discern * the type. Custom types are provided in the format of an object where the * key is on of {@linkcode BodyType} and the value is an array of media types * to attempt to match. Values supplied will be additive to known media types. * * The returned value is one of the following: * * - `"binary"` - The body appears to be binary data and should be consumed as * an array buffer, readable stream or blob. * - `"form"` - The value appears to be an URL encoded form and should be * consumed as a form (`URLSearchParams`). * - `"form-data"` - The value appears to be multipart form data and should be * consumed as form data. * - `"json"` - The value appears to be JSON data and should be consumed as * decoded JSON. * - `"text"` - The value appears to be text data and should be consumed as * text. * - `"unknown"` - Either there is no body or the body type could not be * determined. */ type(customMediaTypes?: Partial>): BodyType; } export {};