ccc-tnt-psd2ui/npm-packages/mac-v3.4.+/minipass/index.d.ts

153 lines
4.2 KiB
TypeScript
Raw Permalink Normal View History

2023-07-24 03:13:08 +00:00
/// <reference types="node" />
// Note: marking anything protected or private in the exported
// class will limit Minipass's ability to be used as the base
// for mixin classes.
import { EventEmitter } from 'events'
import { Stream } from 'stream'
2023-09-06 01:51:55 +00:00
export namespace Minipass {
export type Encoding = BufferEncoding | 'buffer' | null
2023-07-24 03:13:08 +00:00
2023-09-06 01:51:55 +00:00
export interface Writable extends EventEmitter {
2023-07-24 03:13:08 +00:00
end(): any
write(chunk: any, ...args: any[]): any
}
2023-09-06 01:51:55 +00:00
export interface Readable extends EventEmitter {
2023-07-24 03:13:08 +00:00
pause(): any
resume(): any
pipe(): any
}
2023-09-06 01:51:55 +00:00
export type DualIterable<T> = Iterable<T> & AsyncIterable<T>
2023-07-24 03:13:08 +00:00
2023-09-06 01:51:55 +00:00
export type ContiguousData =
| Buffer
| ArrayBufferLike
| ArrayBufferView
| string
2023-07-24 03:13:08 +00:00
2023-09-06 01:51:55 +00:00
export type BufferOrString = Buffer | string
2023-07-24 03:13:08 +00:00
2023-09-06 01:51:55 +00:00
export interface SharedOptions {
async?: boolean
signal?: AbortSignal
}
export interface StringOptions extends SharedOptions {
2023-07-24 03:13:08 +00:00
encoding: BufferEncoding
objectMode?: boolean
}
2023-09-06 01:51:55 +00:00
export interface BufferOptions extends SharedOptions {
2023-07-24 03:13:08 +00:00
encoding?: null | 'buffer'
objectMode?: boolean
}
2023-09-06 01:51:55 +00:00
export interface ObjectModeOptions extends SharedOptions {
2023-07-24 03:13:08 +00:00
objectMode: true
}
2023-09-06 01:51:55 +00:00
export interface PipeOptions {
2023-07-24 03:13:08 +00:00
end?: boolean
proxyErrors?: boolean
}
2023-09-06 01:51:55 +00:00
export type Options<T> = T extends string
2023-07-24 03:13:08 +00:00
? StringOptions
: T extends Buffer
? BufferOptions
: ObjectModeOptions
}
2023-09-06 01:51:55 +00:00
export class Minipass<
2023-07-24 03:13:08 +00:00
RType extends any = Buffer,
WType extends any = RType extends Minipass.BufferOrString
? Minipass.ContiguousData
: RType
>
extends Stream
implements Minipass.DualIterable<RType>
{
static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
readonly bufferLength: number
readonly flowing: boolean
readonly writable: boolean
readonly readable: boolean
2023-09-06 01:51:55 +00:00
readonly aborted: boolean
2023-07-24 03:13:08 +00:00
readonly paused: boolean
readonly emittedEnd: boolean
readonly destroyed: boolean
/**
* Technically writable, but mutating it can change the type,
* so is not safe to do in TypeScript.
*/
readonly objectMode: boolean
async: boolean
/**
* Note: encoding is not actually read-only, and setEncoding(enc)
* exists. However, this type definition will insist that TypeScript
* programs declare the type of a Minipass stream up front, and if
* that type is string, then an encoding MUST be set in the ctor. If
* the type is Buffer, then the encoding must be missing, or set to
* 'buffer' or null. If the type is anything else, then objectMode
* must be set in the constructor options. So there is effectively
* no allowed way that a TS program can set the encoding after
* construction, as doing so will destroy any hope of type safety.
* TypeScript does not provide many options for changing the type of
* an object at run-time, which is what changing the encoding does.
*/
readonly encoding: Minipass.Encoding
// setEncoding(encoding: Encoding): void
// Options required if not reading buffers
constructor(
...args: RType extends Buffer
? [] | [Minipass.Options<RType>]
: [Minipass.Options<RType>]
)
write(chunk: WType, cb?: () => void): boolean
write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
read(size?: number): RType
end(cb?: () => void): this
end(chunk: any, cb?: () => void): this
end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
pause(): void
resume(): void
promise(): Promise<void>
collect(): Promise<RType[]>
concat(): RType extends Minipass.BufferOrString ? Promise<RType> : never
destroy(er?: any): void
pipe<W extends Minipass.Writable>(dest: W, opts?: Minipass.PipeOptions): W
unpipe<W extends Minipass.Writable>(dest: W): void
/**
* alias for on()
*/
addEventHandler(event: string, listener: (...args: any[]) => any): this
on(event: string, listener: (...args: any[]) => any): this
on(event: 'data', listener: (chunk: RType) => any): this
on(event: 'error', listener: (error: any) => any): this
on(
event:
| 'readable'
| 'drain'
| 'resume'
| 'end'
| 'prefinish'
| 'finish'
| 'close',
listener: () => any
): this
2023-09-06 01:51:55 +00:00
[Symbol.iterator](): Generator<RType, void, void>
[Symbol.asyncIterator](): AsyncGenerator<RType, void, void>
2023-07-24 03:13:08 +00:00
}