diff options
Diffstat (limited to 'ext/web')
-rw-r--r-- | ext/web/lib.deno_web.d.ts | 426 |
1 files changed, 309 insertions, 117 deletions
diff --git a/ext/web/lib.deno_web.d.ts b/ext/web/lib.deno_web.d.ts index e1ffdc329..331c9536b 100644 --- a/ext/web/lib.deno_web.d.ts +++ b/ext/web/lib.deno_web.d.ts @@ -5,16 +5,71 @@ /// <reference no-default-lib="true" /> /// <reference lib="esnext" /> -/** @category DOM Events */ -declare class DOMException extends Error { - constructor(message?: string, name?: string); +/** @category Web APIs */ +declare interface DOMException extends Error { readonly name: string; readonly message: string; readonly code: number; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; } +/** @category Web APIs */ +declare var DOMException: { + readonly prototype: DOMException; + new (message?: string, name?: string): DOMException; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; +}; + /** @category DOM Events */ -interface EventInit { +declare interface EventInit { bubbles?: boolean; cancelable?: boolean; composed?: boolean; @@ -24,8 +79,7 @@ interface EventInit { * * @category DOM Events */ -declare class Event { - constructor(type: string, eventInitDict?: EventInit); +declare interface Event { /** Returns true or false depending on how event was initialized. True if * event goes through its target's ancestors in reverse tree order, and * false otherwise. */ @@ -80,19 +134,28 @@ declare class Event { readonly BUBBLING_PHASE: number; readonly CAPTURING_PHASE: number; readonly NONE: number; - static readonly AT_TARGET: number; - static readonly BUBBLING_PHASE: number; - static readonly CAPTURING_PHASE: number; - static readonly NONE: number; } +/** An event which takes place in the DOM. + * + * @category DOM Events + */ +declare var Event: { + readonly prototype: Event; + new (type: string, eventInitDict?: EventInit): Event; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; + readonly NONE: number; +}; + /** * EventTarget is a DOM interface implemented by objects that can receive events * and may have listeners for them. * * @category DOM Events */ -declare class EventTarget { +declare interface EventTarget { /** Appends an event listener for events whose type attribute value is type. * The callback argument sets the callback that will be invoked when the event * is dispatched. @@ -134,13 +197,24 @@ declare class EventTarget { ): void; } +/** + * EventTarget is a DOM interface implemented by objects that can receive events + * and may have listeners for them. + * + * @category DOM Events + */ +declare var EventTarget: { + readonly prototype: EventTarget; + new (): EventTarget; +}; + /** @category DOM Events */ -interface EventListener { +declare interface EventListener { (evt: Event): void | Promise<void>; } /** @category DOM Events */ -interface EventListenerObject { +declare interface EventListenerObject { handleEvent(evt: Event): void | Promise<void>; } @@ -150,19 +224,19 @@ declare type EventListenerOrEventListenerObject = | EventListenerObject; /** @category DOM Events */ -interface AddEventListenerOptions extends EventListenerOptions { +declare interface AddEventListenerOptions extends EventListenerOptions { once?: boolean; passive?: boolean; signal?: AbortSignal; } /** @category DOM Events */ -interface EventListenerOptions { +declare interface EventListenerOptions { capture?: boolean; } /** @category DOM Events */ -interface ProgressEventInit extends EventInit { +declare interface ProgressEventInit extends EventInit { lengthComputable?: boolean; loaded?: number; total?: number; @@ -174,14 +248,25 @@ interface ProgressEventInit extends EventInit { * * @category DOM Events */ -declare class ProgressEvent<T extends EventTarget = EventTarget> extends Event { - constructor(type: string, eventInitDict?: ProgressEventInit); +declare interface ProgressEvent<T extends EventTarget = EventTarget> + extends Event { readonly lengthComputable: boolean; readonly loaded: number; readonly target: T | null; readonly total: number; } +/** Events measuring progress of an underlying process, like an HTTP request + * (for an XMLHttpRequest, or the loading of the underlying resource of an + * <img>, <audio>, <video>, <style> or <link>). + * + * @category DOM Events + */ +declare var ProgressEvent: { + readonly prototype: ProgressEvent; + new (type: string, eventInitDict?: ProgressEventInit): ProgressEvent; +}; + /** Decodes a string of data which has been encoded using base-64 encoding. * * ``` @@ -214,7 +299,7 @@ declare interface TextDecodeOptions { } /** @category Encoding API */ -interface TextDecoder { +declare interface TextDecoder { /** Returns encoding's name, lowercased. */ readonly encoding: string; /** Returns `true` if error mode is "fatal", and `false` otherwise. */ @@ -228,7 +313,7 @@ interface TextDecoder { /** @category Encoding API */ declare var TextDecoder: { - prototype: TextDecoder; + readonly prototype: TextDecoder; new (label?: string, options?: TextDecoderOptions): TextDecoder; }; @@ -239,7 +324,7 @@ declare interface TextEncoderEncodeIntoResult { } /** @category Encoding API */ -interface TextEncoder { +declare interface TextEncoder { /** Returns "utf-8". */ readonly encoding: "utf-8"; /** Returns the result of running UTF-8's encoder. */ @@ -249,12 +334,12 @@ interface TextEncoder { /** @category Encoding API */ declare var TextEncoder: { - prototype: TextEncoder; + readonly prototype: TextEncoder; new (): TextEncoder; }; /** @category Encoding API */ -interface TextDecoderStream { +declare interface TextDecoderStream { /** Returns encoding's name, lowercased. */ readonly encoding: string; /** Returns `true` if error mode is "fatal", and `false` otherwise. */ @@ -268,12 +353,12 @@ interface TextDecoderStream { /** @category Encoding API */ declare var TextDecoderStream: { - prototype: TextDecoderStream; + readonly prototype: TextDecoderStream; new (label?: string, options?: TextDecoderOptions): TextDecoderStream; }; /** @category Encoding API */ -interface TextEncoderStream { +declare interface TextEncoderStream { /** Returns "utf-8". */ readonly encoding: "utf-8"; readonly readable: ReadableStream<Uint8Array>; @@ -283,7 +368,7 @@ interface TextEncoderStream { /** @category Encoding API */ declare var TextEncoderStream: { - prototype: TextEncoderStream; + readonly prototype: TextEncoderStream; new (): TextEncoderStream; }; @@ -292,7 +377,7 @@ declare var TextEncoderStream: { * * @category Web APIs */ -declare class AbortController { +declare interface AbortController { /** Returns the AbortSignal object associated with this object. */ readonly signal: AbortSignal; /** Invoking this method will set this object's AbortSignal's aborted flag and @@ -300,8 +385,18 @@ declare class AbortController { abort(reason?: any): void; } +/** A controller object that allows you to abort one or more DOM requests as and + * when desired. + * + * @category Web APIs + */ +declare var AbortController: { + readonly prototype: AbortController; + new (): AbortController; +}; + /** @category Web APIs */ -interface AbortSignalEventMap { +declare interface AbortSignalEventMap { abort: Event; } @@ -310,7 +405,7 @@ interface AbortSignalEventMap { * * @category Web APIs */ -interface AbortSignal extends EventTarget { +declare interface AbortSignal extends EventTarget { /** Returns true if this AbortSignal's AbortController has signaled to abort, * and false otherwise. */ readonly aborted: boolean; @@ -344,14 +439,14 @@ interface AbortSignal extends EventTarget { /** @category Web APIs */ declare var AbortSignal: { - prototype: AbortSignal; - new (): AbortSignal; + readonly prototype: AbortSignal; + new (): never; abort(reason?: any): AbortSignal; timeout(milliseconds: number): AbortSignal; }; /** @category Web File API */ -interface FileReaderEventMap { +declare interface FileReaderEventMap { "abort": ProgressEvent<FileReader>; "error": ProgressEvent<FileReader>; "load": ProgressEvent<FileReader>; @@ -366,7 +461,7 @@ interface FileReaderEventMap { * * @category Web File API */ -interface FileReader extends EventTarget { +declare interface FileReader extends EventTarget { readonly error: DOMException | null; onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null; onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null; @@ -410,7 +505,7 @@ interface FileReader extends EventTarget { /** @category Web File API */ declare var FileReader: { - prototype: FileReader; + readonly prototype: FileReader; new (): FileReader; readonly DONE: number; readonly EMPTY: number; @@ -418,10 +513,10 @@ declare var FileReader: { }; /** @category Web File API */ -type BlobPart = BufferSource | Blob | string; +declare type BlobPart = BufferSource | Blob | string; /** @category Web File API */ -interface BlobPropertyBag { +declare interface BlobPropertyBag { type?: string; endings?: "transparent" | "native"; } @@ -433,9 +528,7 @@ interface BlobPropertyBag { * * @category Web File API */ -declare class Blob { - constructor(blobParts?: BlobPart[], options?: BlobPropertyBag); - +declare interface Blob { readonly size: number; readonly type: string; arrayBuffer(): Promise<ArrayBuffer>; @@ -444,8 +537,20 @@ declare class Blob { text(): Promise<string>; } +/** A file-like object of immutable, raw data. Blobs represent data that isn't + * necessarily in a JavaScript-native format. The File interface is based on + * Blob, inheriting blob functionality and expanding it to support files on the + * user's system. + * + * @category Web File API + */ +declare var Blob: { + readonly prototype: Blob; + new (blobParts?: BlobPart[], options?: BlobPropertyBag): Blob; +}; + /** @category Web File API */ -interface FilePropertyBag extends BlobPropertyBag { +declare interface FilePropertyBag extends BlobPropertyBag { lastModified?: number; } @@ -454,36 +559,40 @@ interface FilePropertyBag extends BlobPropertyBag { * * @category Web File API */ -declare class File extends Blob { - constructor( - fileBits: BlobPart[], - fileName: string, - options?: FilePropertyBag, - ); - +declare interface File extends Blob { readonly lastModified: number; readonly name: string; } +/** Provides information about files and allows JavaScript in a web page to + * access their content. + * + * @category Web File API + */ +declare var File: { + readonly prototype: File; + new (fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File; +}; + /** @category Streams API */ -interface ReadableStreamDefaultReadDoneResult { +declare interface ReadableStreamDefaultReadDoneResult { done: true; value?: undefined; } /** @category Streams API */ -interface ReadableStreamDefaultReadValueResult<T> { +declare interface ReadableStreamDefaultReadValueResult<T> { done: false; value: T; } /** @category Streams API */ -type ReadableStreamDefaultReadResult<T> = +declare type ReadableStreamDefaultReadResult<T> = | ReadableStreamDefaultReadValueResult<T> | ReadableStreamDefaultReadDoneResult; /** @category Streams API */ -interface ReadableStreamDefaultReader<R = any> { +declare interface ReadableStreamDefaultReader<R = any> { readonly closed: Promise<void>; cancel(reason?: any): Promise<void>; read(): Promise<ReadableStreamDefaultReadResult<R>>; @@ -492,29 +601,29 @@ interface ReadableStreamDefaultReader<R = any> { /** @category Streams API */ declare var ReadableStreamDefaultReader: { - prototype: ReadableStreamDefaultReader; + readonly prototype: ReadableStreamDefaultReader; new <R>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>; }; /** @category Streams API */ -interface ReadableStreamBYOBReadDoneResult<V extends ArrayBufferView> { +declare interface ReadableStreamBYOBReadDoneResult<V extends ArrayBufferView> { done: true; value?: V; } /** @category Streams API */ -interface ReadableStreamBYOBReadValueResult<V extends ArrayBufferView> { +declare interface ReadableStreamBYOBReadValueResult<V extends ArrayBufferView> { done: false; value: V; } /** @category Streams API */ -type ReadableStreamBYOBReadResult<V extends ArrayBufferView> = +declare type ReadableStreamBYOBReadResult<V extends ArrayBufferView> = | ReadableStreamBYOBReadDoneResult<V> | ReadableStreamBYOBReadValueResult<V>; /** @category Streams API */ -interface ReadableStreamBYOBReader { +declare interface ReadableStreamBYOBReader { readonly closed: Promise<void>; cancel(reason?: any): Promise<void>; read<V extends ArrayBufferView>( @@ -525,24 +634,30 @@ interface ReadableStreamBYOBReader { /** @category Streams API */ declare var ReadableStreamBYOBReader: { - prototype: ReadableStreamBYOBReader; + readonly prototype: ReadableStreamBYOBReader; new (stream: ReadableStream<Uint8Array>): ReadableStreamBYOBReader; }; /** @category Streams API */ -interface ReadableStreamBYOBRequest { +declare interface ReadableStreamBYOBRequest { readonly view: ArrayBufferView | null; respond(bytesWritten: number): void; respondWithNewView(view: ArrayBufferView): void; } /** @category Streams API */ -interface ReadableByteStreamControllerCallback { +declare var ReadableStreamBYOBRequest: { + readonly prototype: ReadableStreamBYOBRequest; + new (): never; +}; + +/** @category Streams API */ +declare interface ReadableByteStreamControllerCallback { (controller: ReadableByteStreamController): void | PromiseLike<void>; } /** @category Streams API */ -interface UnderlyingByteSource { +declare interface UnderlyingByteSource { autoAllocateChunkSize?: number; cancel?: ReadableStreamErrorCallback; pull?: ReadableByteStreamControllerCallback; @@ -551,7 +666,7 @@ interface UnderlyingByteSource { } /** @category Streams API */ -interface UnderlyingSink<W = any> { +declare interface UnderlyingSink<W = any> { abort?: WritableStreamErrorCallback; close?: WritableStreamDefaultControllerCloseCallback; start?: WritableStreamDefaultControllerStartCallback; @@ -560,7 +675,7 @@ interface UnderlyingSink<W = any> { } /** @category Streams API */ -interface UnderlyingSource<R = any> { +declare interface UnderlyingSource<R = any> { cancel?: ReadableStreamErrorCallback; pull?: ReadableStreamDefaultControllerCallback<R>; start?: ReadableStreamDefaultControllerCallback<R>; @@ -568,17 +683,17 @@ interface UnderlyingSource<R = any> { } /** @category Streams API */ -interface ReadableStreamErrorCallback { +declare interface ReadableStreamErrorCallback { (reason: any): void | PromiseLike<void>; } /** @category Streams API */ -interface ReadableStreamDefaultControllerCallback<R> { +declare interface ReadableStreamDefaultControllerCallback<R> { (controller: ReadableStreamDefaultController<R>): void | PromiseLike<void>; } /** @category Streams API */ -interface ReadableStreamDefaultController<R = any> { +declare interface ReadableStreamDefaultController<R = any> { readonly desiredSize: number | null; close(): void; enqueue(chunk: R): void; @@ -587,12 +702,12 @@ interface ReadableStreamDefaultController<R = any> { /** @category Streams API */ declare var ReadableStreamDefaultController: { - prototype: ReadableStreamDefaultController; - new (): ReadableStreamDefaultController; + readonly prototype: ReadableStreamDefaultController; + new (): never; }; /** @category Streams API */ -interface ReadableByteStreamController { +declare interface ReadableByteStreamController { readonly byobRequest: ReadableStreamBYOBRequest | null; readonly desiredSize: number | null; close(): void; @@ -602,12 +717,12 @@ interface ReadableByteStreamController { /** @category Streams API */ declare var ReadableByteStreamController: { - prototype: ReadableByteStreamController; - new (): ReadableByteStreamController; + readonly prototype: ReadableByteStreamController; + new (): never; }; /** @category Streams API */ -interface PipeOptions { +declare interface PipeOptions { preventAbort?: boolean; preventCancel?: boolean; preventClose?: boolean; @@ -615,12 +730,12 @@ interface PipeOptions { } /** @category Streams API */ -interface QueuingStrategySizeCallback<T = any> { +declare interface QueuingStrategySizeCallback<T = any> { (chunk: T): number; } /** @category Streams API */ -interface QueuingStrategy<T = any> { +declare interface QueuingStrategy<T = any> { highWaterMark?: number; size?: QueuingStrategySizeCallback<T>; } @@ -630,26 +745,27 @@ interface QueuingStrategy<T = any> { * * @category Streams API */ -interface CountQueuingStrategy extends QueuingStrategy { +declare interface CountQueuingStrategy extends QueuingStrategy { highWaterMark: number; size(chunk: any): 1; } /** @category Streams API */ declare var CountQueuingStrategy: { - prototype: CountQueuingStrategy; + readonly prototype: CountQueuingStrategy; new (options: { highWaterMark: number }): CountQueuingStrategy; }; /** @category Streams API */ -interface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> { +declare interface ByteLengthQueuingStrategy + extends QueuingStrategy<ArrayBufferView> { highWaterMark: number; size(chunk: ArrayBufferView): number; } /** @category Streams API */ declare var ByteLengthQueuingStrategy: { - prototype: ByteLengthQueuingStrategy; + readonly prototype: ByteLengthQueuingStrategy; new (options: { highWaterMark: number }): ByteLengthQueuingStrategy; }; @@ -659,7 +775,7 @@ declare var ByteLengthQueuingStrategy: { * * @category Streams API */ -interface ReadableStream<R = any> { +declare interface ReadableStream<R = any> { readonly locked: boolean; cancel(reason?: any): Promise<void>; getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; @@ -670,6 +786,9 @@ interface ReadableStream<R = any> { }, options?: PipeOptions): ReadableStream<T>; pipeTo(dest: WritableStream<R>, options?: PipeOptions): Promise<void>; tee(): [ReadableStream<R>, ReadableStream<R>]; + values(options?: { + preventCancel?: boolean; + }): AsyncIterableIterator<R>; [Symbol.asyncIterator](options?: { preventCancel?: boolean; }): AsyncIterableIterator<R>; @@ -677,7 +796,7 @@ interface ReadableStream<R = any> { /** @category Streams API */ declare var ReadableStream: { - prototype: ReadableStream; + readonly prototype: ReadableStream; new ( underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number; size?: undefined }, @@ -686,20 +805,23 @@ declare var ReadableStream: { underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>, ): ReadableStream<R>; + from<R>( + asyncIterable: AsyncIterable<R> | Iterable<R | PromiseLike<R>>, + ): ReadableStream<R>; }; /** @category Streams API */ -interface WritableStreamDefaultControllerCloseCallback { +declare interface WritableStreamDefaultControllerCloseCallback { (): void | PromiseLike<void>; } /** @category Streams API */ -interface WritableStreamDefaultControllerStartCallback { +declare interface WritableStreamDefaultControllerStartCallback { (controller: WritableStreamDefaultController): void | PromiseLike<void>; } /** @category Streams API */ -interface WritableStreamDefaultControllerWriteCallback<W> { +declare interface WritableStreamDefaultControllerWriteCallback<W> { (chunk: W, controller: WritableStreamDefaultController): | void | PromiseLike< @@ -708,7 +830,7 @@ interface WritableStreamDefaultControllerWriteCallback<W> { } /** @category Streams API */ -interface WritableStreamErrorCallback { +declare interface WritableStreamErrorCallback { (reason: any): void | PromiseLike<void>; } @@ -718,7 +840,7 @@ interface WritableStreamErrorCallback { * * @category Streams API */ -interface WritableStream<W = any> { +declare interface WritableStream<W = any> { readonly locked: boolean; abort(reason?: any): Promise<void>; close(): Promise<void>; @@ -727,7 +849,7 @@ interface WritableStream<W = any> { /** @category Streams API */ declare var WritableStream: { - prototype: WritableStream; + readonly prototype: WritableStream; new <W = any>( underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>, @@ -741,13 +863,16 @@ declare var WritableStream: { * * @category Streams API */ -interface WritableStreamDefaultController { +declare interface WritableStreamDefaultController { signal: AbortSignal; error(error?: any): void; } /** @category Streams API */ -declare var WritableStreamDefaultController: WritableStreamDefaultController; +declare var WritableStreamDefaultController: { + readonly prototype: WritableStreamDefaultController; + new (): never; +}; /** This Streams API interface is the object returned by * WritableStream.getWriter() and once created locks the < writer to the @@ -756,7 +881,7 @@ declare var WritableStreamDefaultController: WritableStreamDefaultController; * * @category Streams API */ -interface WritableStreamDefaultWriter<W = any> { +declare interface WritableStreamDefaultWriter<W = any> { readonly closed: Promise<void>; readonly desiredSize: number | null; readonly ready: Promise<void>; @@ -768,19 +893,19 @@ interface WritableStreamDefaultWriter<W = any> { /** @category Streams API */ declare var WritableStreamDefaultWriter: { - prototype: WritableStreamDefaultWriter; - new (): WritableStreamDefaultWriter; + readonly prototype: WritableStreamDefaultWriter; + new <W>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>; }; /** @category Streams API */ -interface TransformStream<I = any, O = any> { +declare interface TransformStream<I = any, O = any> { readonly readable: ReadableStream<O>; readonly writable: WritableStream<I>; } /** @category Streams API */ declare var TransformStream: { - prototype: TransformStream; + readonly prototype: TransformStream; new <I = any, O = any>( transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, @@ -789,7 +914,7 @@ declare var TransformStream: { }; /** @category Streams API */ -interface TransformStreamDefaultController<O = any> { +declare interface TransformStreamDefaultController<O = any> { readonly desiredSize: number | null; enqueue(chunk: O): void; error(reason?: any): void; @@ -797,10 +922,13 @@ interface TransformStreamDefaultController<O = any> { } /** @category Streams API */ -declare var TransformStreamDefaultController: TransformStreamDefaultController; +declare var TransformStreamDefaultController: { + readonly prototype: TransformStreamDefaultController; + new (): never; +}; /** @category Streams API */ -interface Transformer<I = any, O = any> { +declare interface Transformer<I = any, O = any> { flush?: TransformStreamDefaultControllerCallback<O>; readableType?: undefined; start?: TransformStreamDefaultControllerCallback<O>; @@ -809,44 +937,54 @@ interface Transformer<I = any, O = any> { } /** @category Streams API */ -interface TransformStreamDefaultControllerCallback<O> { +declare interface TransformStreamDefaultControllerCallback<O> { (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>; } /** @category Streams API */ -interface TransformStreamDefaultControllerTransformCallback<I, O> { +declare interface TransformStreamDefaultControllerTransformCallback<I, O> { ( chunk: I, controller: TransformStreamDefaultController<O>, ): void | PromiseLike<void>; } -/** @category Streams API */ -interface MessageEventInit<T = any> extends EventInit { +/** @category DOM APIs */ +declare interface MessageEventInit<T = any> extends EventInit { data?: T; origin?: string; lastEventId?: string; } -/** @category Streams API */ -declare class MessageEvent<T = any> extends Event { +/** @category DOM APIs */ +declare interface MessageEvent<T = any> extends Event { /** * Returns the data of the message. */ readonly data: T; /** + * Returns the origin of the message, for server-sent events. + */ + readonly origin: string; + /** * Returns the last event ID string, for server-sent events. */ readonly lastEventId: string; + readonly source: null; /** * Returns transferred ports. */ readonly ports: ReadonlyArray<MessagePort>; - constructor(type: string, eventInitDict?: MessageEventInit); } /** @category DOM APIs */ -type Transferable = ArrayBuffer | MessagePort; +declare var MessageEvent: { + readonly prototype: MessageEvent; + new <T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>; +}; + +/** @category DOM APIs */ +declare type Transferable = ArrayBuffer | MessagePort; /** * This type has been renamed to StructuredSerializeOptions. Use that type for @@ -855,10 +993,10 @@ type Transferable = ArrayBuffer | MessagePort; * @deprecated use `StructuredSerializeOptions` instead. * @category DOM APIs */ -type PostMessageOptions = StructuredSerializeOptions; +declare type PostMessageOptions = StructuredSerializeOptions; /** @category DOM APIs */ -interface StructuredSerializeOptions { +declare interface StructuredSerializeOptions { transfer?: Transferable[]; } @@ -868,14 +1006,24 @@ interface StructuredSerializeOptions { * * @category DOM APIs */ -declare class MessageChannel { - constructor(); +declare interface MessageChannel { readonly port1: MessagePort; readonly port2: MessagePort; } +/** The MessageChannel interface of the Channel Messaging API allows us to + * create a new message channel and send data through it via its two MessagePort + * properties. + * + * @category DOM APIs + */ +declare var MessageChannel: { + readonly prototype: MessageChannel; + new (): MessageChannel; +}; + /** @category DOM APIs */ -interface MessagePortEventMap { +declare interface MessagePortEventMap { "message": MessageEvent; "messageerror": MessageEvent; } @@ -886,7 +1034,7 @@ interface MessagePortEventMap { * * @category DOM APIs */ -declare class MessagePort extends EventTarget { +declare interface MessagePort extends EventTarget { onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null; onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null; /** @@ -930,6 +1078,17 @@ declare class MessagePort extends EventTarget { ): void; } +/** The MessagePort interface of the Channel Messaging API represents one of the + * two ports of a MessageChannel, allowing messages to be sent from one port and + * listening out for them arriving at the other. + * + * @category DOM APIs + */ +declare var MessagePort: { + readonly prototype: MessagePort; + new (): never; +}; + /** * Creates a deep copy of a given value using the structured clone algorithm. * @@ -974,7 +1133,25 @@ declare function structuredClone( * * @category Compression Streams API */ -declare class CompressionStream { +declare interface CompressionStream { + readonly readable: ReadableStream<Uint8Array>; + readonly writable: WritableStream<Uint8Array>; +} + +/** + * An API for compressing a stream of data. + * + * @example + * ```ts + * await Deno.stdin.readable + * .pipeThrough(new CompressionStream("gzip")) + * .pipeTo(Deno.stdout.writable); + * ``` + * + * @category Compression Streams API + */ +declare var CompressionStream: { + readonly prototype: CompressionStream; /** * Creates a new `CompressionStream` object which compresses a stream of * data. @@ -982,8 +1159,25 @@ declare class CompressionStream { * Throws a `TypeError` if the format passed to the constructor is not * supported. */ - constructor(format: string); + new (format: string): CompressionStream; +}; +/** + * An API for decompressing a stream of data. + * + * @example + * ```ts + * const input = await Deno.open("./file.txt.gz"); + * const output = await Deno.create("./file.txt"); + * + * await input.readable + * .pipeThrough(new DecompressionStream("gzip")) + * .pipeTo(output.writable); + * ``` + * + * @category Compression Streams API + */ +declare interface DecompressionStream { readonly readable: ReadableStream<Uint8Array>; readonly writable: WritableStream<Uint8Array>; } @@ -1003,7 +1197,8 @@ declare class CompressionStream { * * @category Compression Streams API */ -declare class DecompressionStream { +declare var DecompressionStream: { + readonly prototype: DecompressionStream; /** * Creates a new `DecompressionStream` object which decompresses a stream of * data. @@ -1011,11 +1206,8 @@ declare class DecompressionStream { * Throws a `TypeError` if the format passed to the constructor is not * supported. */ - constructor(format: string); - - readonly readable: ReadableStream<Uint8Array>; - readonly writable: WritableStream<Uint8Array>; -} + new (format: string): DecompressionStream; +}; /** Dispatch an uncaught exception. Similar to a synchronous version of: * ```ts |