// Type definitions for Streams API // Project: https://github.com/whatwg/streams // Definitions by: Kagami Sascha Rosylight // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped interface ReadableStreamSource { start?(controller: ReadableStreamDefaultController): void | Promise; pull?(controller: ReadableStreamDefaultController): void | Promise; cancel?(reason: string): void | Promise; } interface ReadableByteStreamSource { start?(controller: ReadableByteStreamController): void | Promise; pull?(controller: ReadableByteStreamController): void | Promise; cancel?(reason: string): void | Promise; type: "bytes"; } interface QueuingStrategy { highWaterMark?: number; size?(chunk: ArrayBufferView): number; } declare class ReadableStream { constructor(underlyingSource?: ReadableStreamSource, strategy?: QueuingStrategy); constructor(underlyingSource?: ReadableByteStreamSource, strategy?: QueuingStrategy); locked: boolean; cancel(reason: string): Promise; getReader(): ReadableStreamDefaultReader; getReader({ mode }: { mode: "byob" }): ReadableStreamBYOBReader; pipeThrough({ writable, readable }: { writable: WritableStream, readable: T }): T; pipeTo(dest: WritableStream, { preventClose, preventAbort, preventCancel }: { preventClose?: boolean, preventAbort?: boolean, preventCancel?: boolean }): Promise; tee(): [ReadableStream, ReadableStream]; } declare class ReadableStreamDefaultReader { constructor(stream: ReadableStream); closed: Promise; cancel(reason: string): Promise; read(): Promise>; releaseLock(): void; } declare class ReadableStreamBYOBReader { constructor(stream: ReadableStream); closed: Promise; cancel(reason: string): Promise; read(view: ArrayBufferView): Promise>; releaseLock(): void; } declare class ReadableStreamDefaultController { constructor(stream: ReadableStream, underlyingSource: ReadableStreamSource, size: number, highWaterMark: number); desiredSize: number; close(): void; enqueue(chunk: ArrayBufferView): number; error(e: any): void; } declare class ReadableByteStreamController { constructor(stream: ReadableStream, underlyingSource: ReadableStreamSource, highWaterMark: number); byobRequest: ReadableStreamBYOBRequest; desiredSize: number; close(): void; enqueue(chunk: ArrayBufferView): number; error(e: any): void; } declare class ReadableStreamBYOBRequest { constructor(controller: ReadableByteStreamController, view: ArrayBufferView); view: ArrayBufferView; respond(bytesWritten: number): void; respondWithNewView(view: ArrayBufferView): void; } interface WritableStreamSink { start?(controller: WritableStreamDefaultController): void | Promise; write?(chunk: any): void | Promise; close?(): void | Promise; abort?(reason: string): void | Promise; } declare class WritableStream { constructor(underlyingSink?: WritableStreamSink, strategy?: QueuingStrategy); locked: boolean; abort(reason: string): Promise; getWriter(): WritableStreamDefaultWriter; } declare class WritableStreamDefaultWriter { constructor(stream: WritableStream); closed: Promise; desiredSize: number; ready: Promise; abort(reason: string): Promise; close(): Promise; releaseLock(): void; write(chunk: any): Promise; } declare class WritableStreamDefaultController { constructor(stream: WritableStream, underlyingSink: WritableStreamSink, size: number, highWaterMark: number); error(e: any): void; } declare class ByteLengthQueuingStrategy { constructor({ highWaterMark }: { highWaterMark: number }); size(chunk: ArrayBufferView): number; } declare class CountQueuingStrategy { constructor({ highWaterMark }: { highWaterMark: number }); size(): number; // 1; }