/// import * as SafeBuffer from "safe-buffer"; import type * as NodeStream from "stream"; declare class StringDecoder { constructor(encoding?: BufferEncoding | string); write(buffer: Buffer): string; end(buffer?: Buffer): string; } type Is = T; declare var NoAsyncDispose: { new( ...arguments: any[] ): typeof globalThis.Symbol extends { readonly asyncDispose: Is } ? symbol extends S ? {} : { [P in S]: never } : {}; }; type ComposeFnParam = (source: any) => void; interface _IEventEmitter { addListener(event: string | symbol, listener: (...args: any[]) => void): this; emit(event: string | symbol, ...args: any[]): boolean; on(event: string | symbol, listener: (...args: any[]) => void): this; once(event: string | symbol, listener: (...args: any[]) => void): this; prependListener(event: string | symbol, listener: (...args: any[]) => void): this; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; removeListener(event: string | symbol, listener: (...args: any[]) => void): this; removeAllListeners(event?: string | symbol): this; off(eventName: string | symbol, listener: (...args: any[]) => void): this; setMaxListeners(n: number): this; getMaxListeners(): number; // eslint-disable-next-line @typescript-eslint/ban-types listeners(eventName: string | symbol): Function[]; // eslint-disable-next-line @typescript-eslint/ban-types rawListeners(eventName: string | symbol): Function[]; listenerCount(eventName: string | symbol): number; eventNames(): Array; } interface SignalOption { signal?: AbortSignal; } interface ArrayOptions extends SignalOption { concurrency?: number; } interface _IReadable extends _IEventEmitter { _read(size: number): void; read(size?: number): any; setEncoding(encoding: string): this; pause(): this; resume(): this; isPaused(): boolean; unpipe(destination?: _Readable.Writable): this; unshift(chunk: any): void; wrap(oldStream: _Readable.Readable): this; push(chunk: any, encoding?: string): boolean; iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator; map(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): _Readable.Readable; filter( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): _Readable.Readable; forEach(fn: (data: any, options?: SignalOption) => void | Promise, options?: ArrayOptions): Promise; toArray(options?: SignalOption): Promise; some( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; find(fn: (data: any, options?: SignalOption) => data is T, options?: ArrayOptions): Promise; find(fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions): Promise; every( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; flatMap(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): _Readable.Readable; drop(limit: number, options?: SignalOption): _Readable.Readable; take(limit: number, options?: SignalOption): _Readable.Readable; asIndexedPairs(options?: SignalOption): _Readable.Readable; reduce( fn: (previous: any, data: any, options?: Pick) => T, initial?: undefined, options?: Pick, ): Promise; reduce( fn: (previous: T, data: any, options?: Pick) => T, initial: T, options?: Pick, ): Promise; _destroy(error: Error | null, callback: (error?: Error | null) => void): void; destroy(error?: Error): this; } declare class _Readable extends NoAsyncDispose implements _IReadable { readable: boolean; readonly readableFlowing: boolean | null; readonly readableHighWaterMark: number; readonly readableLength: number; readonly closed: boolean; readonly errored: Error | null; static from(iterable: Iterable | AsyncIterable, options?: _Readable.ReadableOptions): _Readable.Readable; _read(size: number): void; read(size?: number): any; setEncoding(encoding: string): this; pause(): this; resume(): this; isPaused(): boolean; unpipe(destination?: _Readable.Writable): this; unshift(chunk: any): void; wrap(oldStream: _Readable.Readable): this; push(chunk: any, encoding?: string): boolean; map(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): _Readable.Readable; filter( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): _Readable.Readable; forEach(fn: (data: any, options?: SignalOption) => void | Promise, options?: ArrayOptions): Promise; toArray(options?: SignalOption): Promise; some( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; find(fn: (data: any, options?: SignalOption) => data is T, options?: ArrayOptions): Promise; find(fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions): Promise; every( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; flatMap(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): _Readable.Readable; drop(limit: number, options?: SignalOption): _Readable.Readable; take(limit: number, options?: SignalOption): _Readable.Readable; asIndexedPairs(options?: SignalOption): _Readable.Readable; reduce( fn: (previous: any, data: any, options?: Pick) => T, initial?: undefined, options?: Pick, ): Promise; reduce( fn: (previous: T, data: any, options?: Pick) => T, initial: T, options?: Pick, ): Promise; _destroy(error: Error | null, callback: (error?: Error | null) => void): void; destroy(error?: Error): this; /** * Event emitter * The defined events on documents including: * 1. close * 2. data * 3. end * 4. readable * 5. error */ addListener(event: "close", listener: () => void): this; addListener(event: "data", listener: (chunk: any) => void): this; addListener(event: "end", listener: () => void): this; addListener(event: "readable", listener: () => void): this; addListener(event: "error", listener: (err: Error) => void): this; addListener(event: string | symbol, listener: (...args: any[]) => void): this; emit(event: "close"): boolean; emit(event: "data", chunk: any): boolean; emit(event: "end"): boolean; emit(event: "readable"): boolean; emit(event: "error", err: Error): boolean; emit(event: string | symbol, ...args: any[]): boolean; on(event: "close", listener: () => void): this; on(event: "data", listener: (chunk: any) => void): this; on(event: "end", listener: () => void): this; on(event: "readable", listener: () => void): this; on(event: "error", listener: (err: Error) => void): this; on(event: string | symbol, listener: (...args: any[]) => void): this; once(event: "close", listener: () => void): this; once(event: "data", listener: (chunk: any) => void): this; once(event: "end", listener: () => void): this; once(event: "readable", listener: () => void): this; once(event: "error", listener: (err: Error) => void): this; once(event: string | symbol, listener: (...args: any[]) => void): this; prependListener(event: "close", listener: () => void): this; prependListener(event: "data", listener: (chunk: any) => void): this; prependListener(event: "end", listener: () => void): this; prependListener(event: "readable", listener: () => void): this; prependListener(event: "error", listener: (err: Error) => void): this; prependListener(event: string | symbol, listener: (...args: any[]) => void): this; prependOnceListener(event: "close", listener: () => void): this; prependOnceListener(event: "data", listener: (chunk: any) => void): this; prependOnceListener(event: "end", listener: () => void): this; prependOnceListener(event: "readable", listener: () => void): this; prependOnceListener(event: "error", listener: (err: Error) => void): this; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; removeListener(event: "close", listener: () => void): this; removeListener(event: "data", listener: (chunk: any) => void): this; removeListener(event: "end", listener: () => void): this; removeListener(event: "readable", listener: () => void): this; removeListener(event: "error", listener: (err: Error) => void): this; removeListener(event: string | symbol, listener: (...args: any[]) => void): this; removeAllListeners(event?: string | symbol): this; off(eventName: string | symbol, listener: (...args: any[]) => void): this; setMaxListeners(n: number): this; getMaxListeners(): number; // eslint-disable-next-line @typescript-eslint/ban-types listeners(eventName: string | symbol): Function[]; // eslint-disable-next-line @typescript-eslint/ban-types rawListeners(eventName: string | symbol): Function[]; listenerCount(eventName: string | symbol): number; eventNames(): Array; iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator; [Symbol.asyncIterator](): AsyncIterableIterator; // static ReadableState: _Readable.ReadableState; _readableState: _Readable.ReadableState; destroyed: boolean; constructor(options?: _Readable.ReadableOptions); _undestroy(): void; } declare namespace _Readable { // ==== BufferList ==== interface Entry { data: D; next: Entry | null; } interface BufferList { head: Entry; tail: Entry; length: number; push(v: D): void; unshift(v: D): void; shift(): D; clear(): void; join(s: any): string; concat(n: number): D; } // ==== destroy ==== interface Destroy { destroy( this: Readable | Writable, error: Error | null, callback?: (error: Error | null) => void, ): Readable | Writable; undestroy(this: Readable | Writable): void; } // ==== _stream_duplex ==== type DuplexOptions = ReadableOptions & WritableOptions & { allowHalfOpen?: boolean | undefined; readable?: boolean | undefined; writable?: boolean | undefined; read?(this: Duplex, size: number): void; write?(this: Duplex, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; writev?( this: Duplex, chunks: Array<{ chunk: any; encoding: BufferEncoding }>, callback: (error?: Error | null) => void, ): void; final?(this: Duplex, callback: (error?: Error | null) => void): void; destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void; }; type _IDuplex = _IReadable & _IWritable; class Duplex extends _Writable implements _IDuplex, /*extends*/ _Readable, Duplex { static from( src: | Stream | Blob | ArrayBuffer | string | Iterable | AsyncIterable | AsyncGeneratorFunction | Promise | { writable?: Writable; readable?: _Readable }, ): Duplex; allowHalfOpen: boolean; destroyed: boolean; // Readable readable: boolean; readonly readableEncoding: BufferEncoding | null; readonly readableEnded: boolean; readonly readableFlowing: boolean | null; readonly readableHighWaterMark: number; readonly readableLength: number; readonly readableObjectMode: boolean; readonly writableObjectMode: boolean; readonly readableAborted: boolean; readonly readableDidRead: boolean; readonly writableEnded: boolean; readonly writableFinished: boolean; readonly writableCorked: number; _readableState: ReadableState; _read(size?: number): void; read(size?: number): any; setEncoding(enc: BufferEncoding): this; resume(): this; pause(): this; isPaused(): boolean; unpipe(dest?: Writable): this; unshift(chunk: any): boolean; wrap(oldStream: Readable): this; push(chunk: any, encoding?: BufferEncoding): boolean; map(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): Readable; filter(fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions): Readable; forEach(fn: (data: any, options?: SignalOption) => void | Promise, options?: ArrayOptions): Promise; toArray(options?: SignalOption): Promise; some( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; find(fn: (data: any, options?: SignalOption) => data is T, options?: ArrayOptions): Promise; find( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; every( fn: (data: any, options?: SignalOption) => boolean | Promise, options?: ArrayOptions, ): Promise; flatMap(fn: (data: any, options?: SignalOption) => any, options?: ArrayOptions): Readable; drop(limit: number, options?: SignalOption): Readable; take(limit: number, options?: SignalOption): Readable; asIndexedPairs(options?: SignalOption): Readable; reduce( fn: (previous: any, data: any, options?: Pick) => T, initial?: undefined, options?: Pick, ): Promise; reduce( fn: (previous: T, data: any, options?: Pick) => T, initial: T, options?: Pick, ): Promise; _destroy(err: Error | null, callback: (error: Error | null) => void): void; destroy(err?: Error, callback?: (error: Error | null) => void): this; pipe(dest: S, pipeOpts?: { end?: boolean | undefined }): S; addListener(ev: string | symbol, fn: (...args: any[]) => void): this; on(ev: string | symbol, fn: (...args: any[]) => void): this; _undestroy(): void; iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator; [Symbol.asyncIterator](): AsyncIterableIterator; // end-Readable constructor(options?: DuplexOptions); } // ==== _stream_passthrough ==== class PassThrough extends Transform { constructor(options?: TransformOptions); _transform( chunk: T, encoding: BufferEncoding | string | null | undefined, callback: (error?: Error, data?: T) => void, ): void; } // ==== _stream_readable ==== interface ReadableStateOptions { defaultEncoding?: BufferEncoding | undefined; encoding?: BufferEncoding | undefined; highWaterMark?: number | undefined; objectMode?: boolean | undefined; readableObjectMode?: boolean | undefined; readableHighWaterMark?: number | undefined; } interface ReadableState { objectMode: boolean; highWaterMark: number; buffer: BufferList; length: number; pipes: any; pipesCount: number; flowing: any; ended: boolean; endEmitted: boolean; reading: boolean; sync: boolean; needReadable: boolean; emittedReadable: boolean; readableListening: boolean; resumeScheduled: boolean; destroyed: boolean; awaitDrain: number; defaultEncoding: BufferEncoding; readingMore: boolean; decoder: StringDecoder | null; encoding: BufferEncoding | null; // new (options: ReadableStateOptions, stream: _Readable): ReadableState; } type ReadableOptions = ReadableStateOptions & { read?(this: _IReadable, size: number): void; destroy?(this: _IReadable, error: Error | null, callback: (error: Error | null) => void): void; }; class Readable extends _Readable implements NodeJS.ReadableStream { readonly readableAborted: boolean; readonly readableDidRead: boolean; readonly readableEncoding: BufferEncoding | null; readonly readableEnded: boolean; readonly readableObjectMode: boolean; constructor(options?: ReadableOptions); pipe(destination: T, options?: { end?: boolean | undefined }): T; compose( stream: T | ComposeFnParam | Iterable | AsyncIterable, options?: { signal: AbortSignal }, ): T; } // ==== _stream_transform ==== type TransformOptions = ReadableOptions & WritableOptions & { read?(this: _ITransform, size: number): void; write?(this: _ITransform, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; writev?( this: _ITransform, chunks: Array<{ chunk: any; encoding: BufferEncoding }>, callback: (error?: Error | null) => void, ): void; final?(this: _ITransform, callback: (error?: Error | null) => void): void; destroy?(this: _ITransform, error: Error | null, callback: (error: Error | null) => void): void; transform?( this: _ITransform, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void, ): void; flush?(callback: (error?: Error | null, data?: any) => void): void; }; interface _ITransform extends _IDuplex { _transform(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void; _flush(callback: (error?: Error | null, data?: any) => void): void; } class Transform extends Duplex { _transformState: { // eslint-disable-next-line @typescript-eslint/no-invalid-void-type afterTransform: (this: Transform, er: any, data: any) => void | boolean; needTransform: boolean; transforming: boolean; writecb: ((err: any) => any) | null; writechunk: any; // TODO writeencoding: BufferEncoding | null; }; constructor(options?: TransformOptions); _transform(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void; _flush(callback: (error?: Error | null, data?: any) => void): void; } // ==== _stream_writable ==== interface CorkedRequest { next: any; entry: any; finish(): void; } interface BufferRequest { chunk: any; // TODO encoding: BufferEncoding; isBuf: boolean; callback: (error?: Error | null) => void; next: BufferRequest | null; } interface WritableStateOptions { decodeStrings?: boolean | undefined; defaultEncoding?: BufferEncoding | undefined; highWaterMark?: number | undefined; objectMode?: boolean | undefined; writableObjectMode?: boolean | undefined; writableHighWaterMark?: number | undefined; } interface WritableState { buffer: BufferRequest[]; objectMode: boolean; highWaterMark: number; finalCalled: boolean; needDrain: boolean; ending: boolean; ended: boolean; finished: boolean; destroyed: boolean; decodeStrings: boolean; defaultEncoding: BufferEncoding; length: number; writing: boolean; corked: number; sync: boolean; bufferProcessing: boolean; writelen: number; pendingcb: number; prefinished: boolean; errorEmitted: boolean; bufferedRequestCount: number; writecb: ((err?: Error | null) => void) | null; onwrite: (er?: Error | null) => any; bufferedRequest: BufferRequest | null; lastBufferedRequest: BufferRequest | null; corkedRequestsFree: CorkedRequest; // new (options: WritableStateOptions, stream: Writable): WritableState; getBuffer(): BufferRequest[]; } type WritableOptions = WritableStateOptions & { write?( this: _IWritable, chunk: any, encoding: BufferEncoding | string, callback: (error?: Error | null) => void, ): void; writev?( this: _IWritable, chunk: ArrayLike<{ chunk: any; encoding: BufferEncoding | string }>, callback: (error?: Error | null) => void, ): void; destroy?(this: _IWritable, error: Error | null, callback: (error?: Error | null) => void): void; final?(this: _IWritable, callback: (error?: Error | null) => void): void; }; interface _IWritable extends _IEventEmitter { writable: boolean; write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; write(chunk: any, encoding?: string, cb?: (error: Error | null | undefined) => void): boolean; end(cb?: () => void): this; end(data: string | Uint8Array, cb?: () => void): this; end(str: string, encoding?: BufferEncoding, cb?: () => void): this; } class _Writable extends Stream implements _IWritable, NodeJS.WritableStream { writable: boolean; readonly writableHighWaterMark: number; readonly writableLength: number; readonly closed: boolean; readonly errored: Error | null; readonly writableNeedDrain: boolean; constructor(opts?: WritableOptions); _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void; _writev?(chunks: Array<{ chunk: any; encoding: string }>, callback: (error?: Error | null) => void): void; _destroy(error: Error | null, callback: (error: Error | null) => void): void; _final(callback: (error?: Error | null) => void): void; write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; write(chunk: any, encoding?: string, cb?: (error: Error | null | undefined) => void): boolean; setDefaultEncoding(encoding: string): this; end(cb?: () => void): this; end(chunk: any, cb?: () => void): this; end(chunk: any, encoding?: string, cb?: () => void): this; cork(): void; uncork(): void; destroy(error?: Error): this; /** * Event emitter * The defined events on documents including: * 1. close * 2. drain * 3. error * 4. finish * 5. pipe * 6. unpipe */ addListener(event: "close", listener: () => void): this; addListener(event: "drain", listener: () => void): this; addListener(event: "error", listener: (err: Error) => void): this; addListener(event: "finish", listener: () => void): this; addListener(event: "pipe", listener: (src: Readable) => void): this; addListener(event: "unpipe", listener: (src: Readable) => void): this; addListener(event: string | symbol, listener: (...args: any[]) => void): this; emit(event: "close"): boolean; emit(event: "drain"): boolean; emit(event: "error", err: Error): boolean; emit(event: "finish"): boolean; emit(event: "pipe", src: Readable): boolean; emit(event: "unpipe", src: Readable): boolean; emit(event: string | symbol, ...args: any[]): boolean; on(event: "close", listener: () => void): this; on(event: "drain", listener: () => void): this; on(event: "error", listener: (err: Error) => void): this; on(event: "finish", listener: () => void): this; on(event: "pipe", listener: (src: Readable) => void): this; on(event: "unpipe", listener: (src: Readable) => void): this; on(event: string | symbol, listener: (...args: any[]) => void): this; once(event: "close", listener: () => void): this; once(event: "drain", listener: () => void): this; once(event: "error", listener: (err: Error) => void): this; once(event: "finish", listener: () => void): this; once(event: "pipe", listener: (src: Readable) => void): this; once(event: "unpipe", listener: (src: Readable) => void): this; once(event: string | symbol, listener: (...args: any[]) => void): this; prependListener(event: "close", listener: () => void): this; prependListener(event: "drain", listener: () => void): this; prependListener(event: "error", listener: (err: Error) => void): this; prependListener(event: "finish", listener: () => void): this; prependListener(event: "pipe", listener: (src: Readable) => void): this; prependListener(event: "unpipe", listener: (src: Readable) => void): this; prependListener(event: string | symbol, listener: (...args: any[]) => void): this; prependOnceListener(event: "close", listener: () => void): this; prependOnceListener(event: "drain", listener: () => void): this; prependOnceListener(event: "error", listener: (err: Error) => void): this; prependOnceListener(event: "finish", listener: () => void): this; prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; removeListener(event: "close", listener: () => void): this; removeListener(event: "drain", listener: () => void): this; removeListener(event: "error", listener: (err: Error) => void): this; removeListener(event: "finish", listener: () => void): this; removeListener(event: "pipe", listener: (src: Readable) => void): this; removeListener(event: "unpipe", listener: (src: Readable) => void): this; removeListener(event: string | symbol, listener: (...args: any[]) => void): this; // static WritableState: WritableState; // private static realHasInstance: (obj: any) => boolean; destroyed: boolean; _writableState: WritableState; _undestroy(): void; } class Writable extends _Writable { readonly writableEnded: boolean; readonly writableFinished: boolean; readonly writableObjectMode: boolean; readonly writableCorked: number; constructor(opts?: WritableOptions); } class Stream extends _Readable { constructor(options?: ReadableOptions); pipe(destination: T, options?: { end?: boolean | undefined }): T; compose( stream: T | ComposeFnParam | Iterable | AsyncIterable, options?: { signal: AbortSignal }, ): T; } const finished: typeof NodeStream.finished; const pipeline: typeof NodeStream.pipeline; } export = _Readable; export as namespace _Readable;