You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					148 lines
				
				4.0 KiB
			
		
		
			
		
	
	
					148 lines
				
				4.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/// <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'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare namespace Minipass {
							 | 
						||
| 
								 | 
							
								  type Encoding = BufferEncoding | 'buffer' | null
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface Writable extends EventEmitter {
							 | 
						||
| 
								 | 
							
								    end(): any
							 | 
						||
| 
								 | 
							
								    write(chunk: any, ...args: any[]): any
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface Readable extends EventEmitter {
							 | 
						||
| 
								 | 
							
								    pause(): any
							 | 
						||
| 
								 | 
							
								    resume(): any
							 | 
						||
| 
								 | 
							
								    pipe(): any
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  type DualIterable<T> = Iterable<T> & AsyncIterable<T>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  type BufferOrString = Buffer | string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface StringOptions {
							 | 
						||
| 
								 | 
							
								    encoding: BufferEncoding
							 | 
						||
| 
								 | 
							
								    objectMode?: boolean
							 | 
						||
| 
								 | 
							
								    async?: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface BufferOptions {
							 | 
						||
| 
								 | 
							
								    encoding?: null | 'buffer'
							 | 
						||
| 
								 | 
							
								    objectMode?: boolean
							 | 
						||
| 
								 | 
							
								    async?: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface ObjectModeOptions {
							 | 
						||
| 
								 | 
							
								    objectMode: true
							 | 
						||
| 
								 | 
							
								    async?: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface PipeOptions {
							 | 
						||
| 
								 | 
							
								    end?: boolean
							 | 
						||
| 
								 | 
							
								    proxyErrors?: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  type Options<T> = T extends string
							 | 
						||
| 
								 | 
							
								    ? StringOptions
							 | 
						||
| 
								 | 
							
								    : T extends Buffer
							 | 
						||
| 
								 | 
							
								    ? BufferOptions
							 | 
						||
| 
								 | 
							
								    : ObjectModeOptions
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare class Minipass<
							 | 
						||
| 
								 | 
							
								    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
							 | 
						||
| 
								 | 
							
								  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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [Symbol.iterator](): Iterator<RType>
							 | 
						||
| 
								 | 
							
								  [Symbol.asyncIterator](): AsyncIterator<RType>
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export = Minipass
							 |