UNPKG

@zhengxs/http

Version:

A lightweight cross-platform http request library

62 lines (61 loc) 2.31 kB
/// <reference types="node" /> export type Bytes = string | ArrayBuffer | Uint8Array | Buffer | null | undefined; export type ServerSentEvent = { event: string | null; data: string; raw: string[]; }; export declare class Stream<Item> implements AsyncIterable<Item> { private iterator; controller: AbortController; constructor(iterator: () => AsyncIterator<Item>, controller: AbortController); static fromSSEResponse<Item>(response: Response, controller: AbortController): Stream<Item>; /** * Generates a Stream from a newline-separated ReadableStream * where each item is a JSON value. */ static fromReadableStream<Item>(readableStream: globalThis.ReadableStream, controller: AbortController): Stream<Item>; [Symbol.asyncIterator](): AsyncIterator<Item>; /** * Splits the stream into two streams which can be * independently read from at different speeds. */ tee(): [Stream<Item>, Stream<Item>]; /** * Converts this stream to a newline-separated ReadableStream of * JSON stringified values in the stream * which can be turned back into a Stream with `Stream.fromReadableStream()`. */ toReadableStream(): globalThis.ReadableStream; } export declare class SSEDecoder { private data; private event; private chunks; constructor(); decode(line: string): ServerSentEvent | null; } /** * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally * reading lines from text. * * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258 */ export declare class LineDecoder { static NEWLINE_CHARS: Set<string>; static NEWLINE_REGEXP: RegExp; buffer: string[]; trailingCR: boolean; textDecoder: any; constructor(); decode(chunk: Bytes): string[]; decodeText(bytes: Bytes): string; flush(): string[]; } /** * Most browsers don't yet have async iterable support for ReadableStream, * and Node has a very different way of reading bytes from its "ReadableStream". * * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490 */ export declare function readableStreamAsyncIterable<T>(stream: any): AsyncIterableIterator<T>;