type ReadableStreamLike = ReadableStream | AsyncIterable | Iterable; declare function streamToAsyncIterable(stream: ReadableStream): AsyncIterable; interface SafeIteratorSourceOptions { signal?: AbortSignal; expectedLength?: number | bigint; } interface BodyReadableStream extends ReadableStream { signal: AbortSignal; } /** Converts an `AsyncIterable` or `Iterable` into a safe `ReadableStream` with a safety `AbortSignal` * @remarks * This helper converts an iterable to a `ReadableStream` with a paired `AbortSignal`. The `AbortSignal` * will abort when the underlying iterable errors. * * A common problem with Fetch Standard implementations is that a `ReaadbleStream` passed to * a request does not propagate its error once the request has started. This prevents the * request from being cancelled and the error from propagating to the response when the input * Readable Stream errors. * This helper provides an AbortSignal to forcefully abort the request when the underlying iterable * errors. * * @param iterable - The AsyncIterable to wrap and catch errors from * @param sourceOptions - An optional `expectedLength` and parent `signal` that may propagate to the output `ReadableStream` * @returns `BodyReadableStream` that is a converted `ReadableStream` of the iterable with a `signal: AbortSignal` property that aborts when the iterable errors. */ declare function iterableToStream( iterable: AsyncIterable | Iterable, sourceOptions?: SafeIteratorSourceOptions ): BodyReadableStream; interface StreamFileOptions { type?: string; lastModified?: number; size?: number; } declare const StreamFile_base: { new (fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File; prototype: File; }; declare class StreamFile extends StreamFile_base implements File { #private; constructor( stream: ReadableStream> | BlobPart[], name: string, options: StreamFileOptions ); get lastModified(): number; get size(): number; get name(): string; set name(name: string); get type(): string; set type(type: string); stream(): ReadableStream>; bytes(): Promise>; arrayBuffer(): Promise; text(): Promise; json(): Promise; slice(): never; } interface MultipartPartOptions extends StreamFileOptions { headers?: MultipartHeaders; } interface MultipartHeaders { 'content-disposition'?: string; 'content-length'?: string; 'content-type'?: string; [headerName: string]: string | undefined; } declare class MultipartPart extends StreamFile { headers: MultipartHeaders; constructor( stream: ReadableStream> | BlobPart[], name: string, options?: MultipartPartOptions ); } interface ParseMultipartParams { /** The `Content-Type` header value */ contentType: string; } /** Provide tar entry iterator */ declare function parseMultipart( stream: ReadableStreamLike, params: ParseMultipartParams ): AsyncGenerator; type FormValue = string | Uint8Array | MultipartPart | Blob | File; type FormEntry = readonly [name: string, value: FormValue]; declare const multipartContentType: string; declare function streamMultipart( entries: ReadableStreamLike ): AsyncGenerator>; declare const enum InternalTypeFlag { OLD_FILE = 0, CONTIGUOUS_FILE = 55, CHAR_DEV = 51, BLOCK_DEV = 52, FIFO = 54, LONG_LINK_NAME = 75, LONG_NAME = 76, OLD_LONG_NAME = 78, TAPE_VOL = 86, GAX = 103, PAX = 120, } declare enum TarTypeFlag { FILE = 48, LINK = 49, SYMLINK = 50, DIRECTORY = 53, } interface TarChunkHeader { name: string; mode: number; uid: number; gid: number; size: number; mtime: number; typeflag: TarTypeFlag | InternalTypeFlag; linkname: string | null; uname: string | null; gname: string | null; devmajor: number; devminor: number; } interface TarHeader extends TarChunkHeader { _prefix?: string; _longName?: string; _longLinkName?: string; _paxName?: string; _paxLinkName?: string; _paxSize?: number; } type TarChunkTypeFlag = Exclude; declare class TarChunk extends StreamFile implements TarChunkHeader { mode: number; uid: number; gid: number; mtime: number; typeflag: TarChunkTypeFlag; linkname: string | null; uname: string | null; gname: string | null; devmajor: number; devminor: number; constructor(stream: ReadableStream> | BlobPart[], header: TarHeader); } declare class TarFile extends StreamFile implements TarChunkHeader { mode: number; uid: number; gid: number; mtime: number; typeflag: TarTypeFlag.FILE; linkname: null; uname: string | null; gname: string | null; devmajor: number; devminor: number; static from( stream: ReadableStream> | BlobPart[], name: string, options: StreamFileOptions ): TarFile; constructor(stream: ReadableStream> | BlobPart[], header: TarHeader); } /** Provide tar entry iterator */ declare function untar(stream: ReadableStreamLike): AsyncGenerator; declare function tar( entries: ReadableStreamLike ): AsyncGenerator>; export { MultipartPart, StreamFile, TarChunk, TarFile, TarTypeFlag, iterableToStream, multipartContentType, parseMultipart, streamMultipart, streamToAsyncIterable, tar, untar, }; export type { FormEntry, FormValue, MultipartHeaders, MultipartPartOptions, StreamFileOptions };