From 8bcfc03d71cbd2cfd7ab68035ec0968d9f93b5b8 Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Thu, 23 Apr 2020 00:06:51 +1000 Subject: Rewrite streams (#4842) --- cli/js/lib.deno.shared_globals.d.ts | 78 +++++++++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 8 deletions(-) (limited to 'cli/js/lib.deno.shared_globals.d.ts') diff --git a/cli/js/lib.deno.shared_globals.d.ts b/cli/js/lib.deno.shared_globals.d.ts index ef450c201..bcc3ce890 100644 --- a/cli/js/lib.deno.shared_globals.d.ts +++ b/cli/js/lib.deno.shared_globals.d.ts @@ -245,6 +245,24 @@ interface ReadableStreamDefaultReader { releaseLock(): void; } +interface ReadableStreamReader { + cancel(): Promise; + read(): Promise>; + releaseLock(): void; +} + +interface ReadableByteStreamControllerCallback { + (controller: ReadableByteStreamController): void | PromiseLike; +} + +interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: ReadableStreamErrorCallback; + pull?: ReadableByteStreamControllerCallback; + start?: ReadableByteStreamControllerCallback; + type: "bytes"; +} + interface UnderlyingSource { cancel?: ReadableStreamErrorCallback; pull?: ReadableStreamDefaultControllerCallback; @@ -260,11 +278,35 @@ interface ReadableStreamDefaultControllerCallback { (controller: ReadableStreamDefaultController): void | PromiseLike; } -interface ReadableStreamDefaultController { - readonly desiredSize: number; - enqueue(chunk?: R): void; +interface ReadableStreamDefaultController { + readonly desiredSize: number | null; close(): void; - error(e?: any): void; + enqueue(chunk: R): void; + error(error?: any): void; +} + +interface ReadableByteStreamController { + readonly byobRequest: undefined; + readonly desiredSize: number | null; + close(): void; + enqueue(chunk: ArrayBufferView): void; + error(error?: any): void; +} + +interface PipeOptions { + preventAbort?: boolean; + preventCancel?: boolean; + preventClose?: boolean; + signal?: AbortSignal; +} + +interface QueuingStrategySizeCallback { + (chunk: T): number; +} + +interface QueuingStrategy { + highWaterMark?: number; + size?: QueuingStrategySizeCallback; } /** This Streams API interface represents a readable stream of byte data. The @@ -273,16 +315,36 @@ interface ReadableStreamDefaultController { interface ReadableStream { readonly locked: boolean; cancel(reason?: any): Promise; - // TODO(ry) It doesn't seem like Chrome supports this. + getIterator(options?: { preventCancel?: boolean }): AsyncIterableIterator; // getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; getReader(): ReadableStreamDefaultReader; + pipeThrough( + { + writable, + readable, + }: { + writable: WritableStream; + readable: ReadableStream; + }, + options?: PipeOptions + ): ReadableStream; + pipeTo(dest: WritableStream, options?: PipeOptions): Promise; tee(): [ReadableStream, ReadableStream]; + [Symbol.asyncIterator](options?: { + preventCancel?: boolean; + }): AsyncIterableIterator; } -declare const ReadableStream: { +declare var ReadableStream: { prototype: ReadableStream; - // TODO(ry) This doesn't match lib.dom.d.ts - new (src?: UnderlyingSource): ReadableStream; + new ( + underlyingSource: UnderlyingByteSource, + strategy?: { highWaterMark?: number; size?: undefined } + ): ReadableStream; + new ( + underlyingSource?: UnderlyingSource, + strategy?: QueuingStrategy + ): ReadableStream; }; /** This Streams API interface providesĀ a standard abstraction for writing streaming data to a destination, known as a sink. This object comes with built-in backpressure and queuing. */ -- cgit v1.2.3