diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/broadcast_channel/lib.deno_broadcast_channel.d.ts | 6 | ||||
-rw-r--r-- | ext/cache/lib.deno_cache.d.ts | 10 | ||||
-rw-r--r-- | ext/crypto/lib.deno_crypto.d.ts | 93 | ||||
-rw-r--r-- | ext/fetch/lib.deno_fetch.d.ts | 183 | ||||
-rw-r--r-- | ext/url/lib.deno_url.d.ts | 88 | ||||
-rw-r--r-- | ext/web/lib.deno_web.d.ts | 426 | ||||
-rw-r--r-- | ext/websocket/lib.deno_websocket.d.ts | 35 | ||||
-rw-r--r-- | ext/webstorage/lib.deno_webstorage.d.ts | 6 |
8 files changed, 516 insertions, 331 deletions
diff --git a/ext/broadcast_channel/lib.deno_broadcast_channel.d.ts b/ext/broadcast_channel/lib.deno_broadcast_channel.d.ts index ea01bef36..1ffd6532d 100644 --- a/ext/broadcast_channel/lib.deno_broadcast_channel.d.ts +++ b/ext/broadcast_channel/lib.deno_broadcast_channel.d.ts @@ -6,13 +6,13 @@ /// <reference lib="esnext" /> /** @category Broadcast Channel */ -interface BroadcastChannelEventMap { +declare interface BroadcastChannelEventMap { "message": MessageEvent; "messageerror": MessageEvent; } /** @category Broadcast Channel */ -interface BroadcastChannel extends EventTarget { +declare interface BroadcastChannel extends EventTarget { /** * Returns the channel name (as passed to the constructor). */ @@ -53,6 +53,6 @@ interface BroadcastChannel extends EventTarget { /** @category Broadcast Channel */ declare var BroadcastChannel: { - prototype: BroadcastChannel; + readonly prototype: BroadcastChannel; new (name: string): BroadcastChannel; }; diff --git a/ext/cache/lib.deno_cache.d.ts b/ext/cache/lib.deno_cache.d.ts index 0834d7f20..ca0218bf5 100644 --- a/ext/cache/lib.deno_cache.d.ts +++ b/ext/cache/lib.deno_cache.d.ts @@ -54,18 +54,18 @@ declare interface Cache { /** @category Cache API */ declare var Cache: { - prototype: Cache; - new (name: string): Cache; + readonly prototype: Cache; + new (): never; }; /** @category Cache API */ declare var CacheStorage: { - prototype: CacheStorage; - new (): CacheStorage; + readonly prototype: CacheStorage; + new (): never; }; /** @category Cache API */ -interface CacheQueryOptions { +declare interface CacheQueryOptions { ignoreMethod?: boolean; ignoreSearch?: boolean; ignoreVary?: boolean; diff --git a/ext/crypto/lib.deno_crypto.d.ts b/ext/crypto/lib.deno_crypto.d.ts index 6ff7b72b0..2ad0c67f0 100644 --- a/ext/crypto/lib.deno_crypto.d.ts +++ b/ext/crypto/lib.deno_crypto.d.ts @@ -9,23 +9,23 @@ declare var crypto: Crypto; /** @category Web Crypto API */ -interface Algorithm { +declare interface Algorithm { name: string; } /** @category Web Crypto API */ -interface KeyAlgorithm { +declare interface KeyAlgorithm { name: string; } /** @category Web Crypto API */ -type AlgorithmIdentifier = string | Algorithm; +declare type AlgorithmIdentifier = string | Algorithm; /** @category Web Crypto API */ -type HashAlgorithmIdentifier = AlgorithmIdentifier; +declare type HashAlgorithmIdentifier = AlgorithmIdentifier; /** @category Web Crypto API */ -type KeyType = "private" | "public" | "secret"; +declare type KeyType = "private" | "public" | "secret"; /** @category Web Crypto API */ -type KeyUsage = +declare type KeyUsage = | "decrypt" | "deriveBits" | "deriveKey" @@ -35,19 +35,19 @@ type KeyUsage = | "verify" | "wrapKey"; /** @category Web Crypto API */ -type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; +declare type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; /** @category Web Crypto API */ -type NamedCurve = string; +declare type NamedCurve = string; /** @category Web Crypto API */ -interface RsaOtherPrimesInfo { +declare interface RsaOtherPrimesInfo { d?: string; r?: string; t?: string; } /** @category Web Crypto API */ -interface JsonWebKey { +declare interface JsonWebKey { alg?: string; crv?: string; d?: string; @@ -56,7 +56,6 @@ interface JsonWebKey { e?: string; ext?: boolean; k?: string; - // deno-lint-ignore camelcase key_ops?: string[]; kty?: string; n?: string; @@ -70,129 +69,129 @@ interface JsonWebKey { } /** @category Web Crypto API */ -interface AesCbcParams extends Algorithm { +declare interface AesCbcParams extends Algorithm { iv: BufferSource; } /** @category Web Crypto API */ -interface AesGcmParams extends Algorithm { +declare interface AesGcmParams extends Algorithm { iv: BufferSource; additionalData?: BufferSource; tagLength?: number; } /** @category Web Crypto API */ -interface AesCtrParams extends Algorithm { +declare interface AesCtrParams extends Algorithm { counter: BufferSource; length: number; } /** @category Web Crypto API */ -interface HmacKeyGenParams extends Algorithm { +declare interface HmacKeyGenParams extends Algorithm { hash: HashAlgorithmIdentifier; length?: number; } /** @category Web Crypto API */ -interface EcKeyGenParams extends Algorithm { +declare interface EcKeyGenParams extends Algorithm { namedCurve: NamedCurve; } /** @category Web Crypto API */ -interface EcKeyImportParams extends Algorithm { +declare interface EcKeyImportParams extends Algorithm { namedCurve: NamedCurve; } /** @category Web Crypto API */ -interface EcdsaParams extends Algorithm { +declare interface EcdsaParams extends Algorithm { hash: HashAlgorithmIdentifier; } /** @category Web Crypto API */ -interface RsaHashedImportParams extends Algorithm { +declare interface RsaHashedImportParams extends Algorithm { hash: HashAlgorithmIdentifier; } /** @category Web Crypto API */ -interface RsaHashedKeyGenParams extends RsaKeyGenParams { +declare interface RsaHashedKeyGenParams extends RsaKeyGenParams { hash: HashAlgorithmIdentifier; } /** @category Web Crypto API */ -interface RsaKeyGenParams extends Algorithm { +declare interface RsaKeyGenParams extends Algorithm { modulusLength: number; publicExponent: Uint8Array; } /** @category Web Crypto API */ -interface RsaPssParams extends Algorithm { +declare interface RsaPssParams extends Algorithm { saltLength: number; } /** @category Web Crypto API */ -interface RsaOaepParams extends Algorithm { +declare interface RsaOaepParams extends Algorithm { label?: Uint8Array; } /** @category Web Crypto API */ -interface HmacImportParams extends Algorithm { +declare interface HmacImportParams extends Algorithm { hash: HashAlgorithmIdentifier; length?: number; } /** @category Web Crypto API */ -interface EcKeyAlgorithm extends KeyAlgorithm { +declare interface EcKeyAlgorithm extends KeyAlgorithm { namedCurve: NamedCurve; } /** @category Web Crypto API */ -interface HmacKeyAlgorithm extends KeyAlgorithm { +declare interface HmacKeyAlgorithm extends KeyAlgorithm { hash: KeyAlgorithm; length: number; } /** @category Web Crypto API */ -interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { +declare interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { hash: KeyAlgorithm; } /** @category Web Crypto API */ -interface RsaKeyAlgorithm extends KeyAlgorithm { +declare interface RsaKeyAlgorithm extends KeyAlgorithm { modulusLength: number; publicExponent: Uint8Array; } /** @category Web Crypto API */ -interface HkdfParams extends Algorithm { +declare interface HkdfParams extends Algorithm { hash: HashAlgorithmIdentifier; info: BufferSource; salt: BufferSource; } /** @category Web Crypto API */ -interface Pbkdf2Params extends Algorithm { +declare interface Pbkdf2Params extends Algorithm { hash: HashAlgorithmIdentifier; iterations: number; salt: BufferSource; } /** @category Web Crypto API */ -interface AesDerivedKeyParams extends Algorithm { +declare interface AesDerivedKeyParams extends Algorithm { length: number; } /** @category Web Crypto API */ -interface EcdhKeyDeriveParams extends Algorithm { +declare interface EcdhKeyDeriveParams extends Algorithm { public: CryptoKey; } /** @category Web Crypto API */ -interface AesKeyGenParams extends Algorithm { +declare interface AesKeyGenParams extends Algorithm { length: number; } /** @category Web Crypto API */ -interface AesKeyAlgorithm extends KeyAlgorithm { +declare interface AesKeyAlgorithm extends KeyAlgorithm { length: number; } @@ -201,7 +200,7 @@ interface AesKeyAlgorithm extends KeyAlgorithm { * * @category Web Crypto API */ -interface CryptoKey { +declare interface CryptoKey { readonly algorithm: KeyAlgorithm; readonly extractable: boolean; readonly type: KeyType; @@ -210,8 +209,8 @@ interface CryptoKey { /** @category Web Crypto API */ declare var CryptoKey: { - prototype: CryptoKey; - new (): CryptoKey; + readonly prototype: CryptoKey; + new (): never; }; /** The CryptoKeyPair dictionary of the Web Crypto API represents a key pair for @@ -219,15 +218,15 @@ declare var CryptoKey: { * * @category Web Crypto API */ -interface CryptoKeyPair { +declare interface CryptoKeyPair { privateKey: CryptoKey; publicKey: CryptoKey; } /** @category Web Crypto API */ declare var CryptoKeyPair: { - prototype: CryptoKeyPair; - new (): CryptoKeyPair; + readonly prototype: CryptoKeyPair; + new (): never; }; /** This Web Crypto API interface provides a number of low-level cryptographic @@ -236,7 +235,7 @@ declare var CryptoKeyPair: { * * @category Web Crypto API */ -interface SubtleCrypto { +declare interface SubtleCrypto { generateKey( algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, @@ -369,6 +368,12 @@ interface SubtleCrypto { } /** @category Web Crypto API */ +declare var SubtleCrypto: { + readonly prototype: SubtleCrypto; + new (): never; +}; + +/** @category Web Crypto API */ declare interface Crypto { readonly subtle: SubtleCrypto; getRandomValues< @@ -389,7 +394,7 @@ declare interface Crypto { } /** @category Web Crypto API */ -declare var SubtleCrypto: { - prototype: SubtleCrypto; - new (): SubtleCrypto; +declare var Crypto: { + readonly prototype: Crypto; + new (): never; }; diff --git a/ext/fetch/lib.deno_fetch.d.ts b/ext/fetch/lib.deno_fetch.d.ts index 5031cc431..7f574b76e 100644 --- a/ext/fetch/lib.deno_fetch.d.ts +++ b/ext/fetch/lib.deno_fetch.d.ts @@ -6,7 +6,7 @@ /// <reference lib="esnext" /> /** @category DOM APIs */ -interface DomIterable<K, V> { +declare interface DomIterable<K, V> { keys(): IterableIterator<K>; values(): IterableIterator<V>; entries(): IterableIterator<[K, V]>; @@ -18,7 +18,7 @@ interface DomIterable<K, V> { } /** @category Fetch API */ -type FormDataEntryValue = File | string; +declare type FormDataEntryValue = File | string; /** Provides a way to easily construct a set of key/value pairs representing * form fields and their values, which can then be easily sent using the @@ -27,31 +27,23 @@ type FormDataEntryValue = File | string; * * @category Fetch API */ -interface FormData { +declare interface FormData extends DomIterable<string, FormDataEntryValue> { append(name: string, value: string | Blob, fileName?: string): void; delete(name: string): void; get(name: string): FormDataEntryValue | null; getAll(name: string): FormDataEntryValue[]; has(name: string): boolean; set(name: string, value: string | Blob, fileName?: string): void; - keys(): IterableIterator<string>; - values(): IterableIterator<string>; - entries(): IterableIterator<[string, FormDataEntryValue]>; - [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>; - forEach( - callback: (value: FormDataEntryValue, key: string, parent: this) => void, - thisArg?: any, - ): void; } /** @category Fetch API */ declare var FormData: { - prototype: FormData; + readonly prototype: FormData; new (): FormData; }; /** @category Fetch API */ -interface Body { +declare interface Body { /** A simple getter used to expose a `ReadableStream` of the body contents. */ readonly body: ReadableStream<Uint8Array> | null; /** Stores a `Boolean` that declares whether the body has been used in a @@ -81,7 +73,7 @@ interface Body { } /** @category Fetch API */ -type HeadersInit = Headers | string[][] | Record<string, string>; +declare type HeadersInit = Iterable<string[]> | Record<string, string>; /** This Fetch API interface allows you to perform various actions on HTTP * request and response headers. These actions include retrieving, setting, @@ -93,33 +85,13 @@ type HeadersInit = Headers | string[][] | Record<string, string>; * * @category Fetch API */ -interface Headers { - append(name: string, value: string): void; - delete(name: string): void; - get(name: string): string | null; - has(name: string): boolean; - set(name: string, value: string): void; - forEach( - callbackfn: (value: string, key: string, parent: Headers) => void, - thisArg?: any, - ): void; -} - -/** @category Fetch API */ -declare class Headers implements DomIterable<string, string> { - constructor(init?: HeadersInit); - +declare interface Headers extends DomIterable<string, string> { /** Appends a new value onto an existing header inside a `Headers` object, or * adds the header if it does not already exist. */ append(name: string, value: string): void; /** Deletes a header from a `Headers` object. */ delete(name: string): void; - /** Returns an iterator allowing to go through all key/value pairs - * contained in this Headers object. The both the key and value of each pairs - * are ByteString objects. - */ - entries(): IterableIterator<[string, string]>; /** Returns a `ByteString` sequence of all the values of a header within a * `Headers` object with a given name. */ @@ -128,32 +100,35 @@ declare class Headers implements DomIterable<string, string> { * header. */ has(name: string): boolean; - /** Returns an iterator allowing to go through all keys contained in - * this Headers object. The keys are ByteString objects. - */ - keys(): IterableIterator<string>; /** Sets a new value for an existing header inside a Headers object, or adds * the header if it does not already exist. */ set(name: string, value: string): void; - /** Returns an iterator allowing to go through all values contained in - * this Headers object. The values are ByteString objects. - */ - values(): IterableIterator<string>; - forEach( - callbackfn: (value: string, key: string, parent: this) => void, - thisArg?: any, - ): void; - /** The Symbol.iterator well-known symbol specifies the default - * iterator for this Headers object + /** Returns an array containing the values of all `Set-Cookie` headers + * associated with a response. */ - [Symbol.iterator](): IterableIterator<[string, string]>; + getSetCookie(): string[]; } +/** This Fetch API interface allows you to perform various actions on HTTP + * request and response headers. These actions include retrieving, setting, + * adding to, and removing. A Headers object has an associated header list, + * which is initially empty and consists of zero or more name and value pairs. + * You can add to this using methods like append() (see Examples). In all + * methods of this interface, header names are matched by case-insensitive byte + * sequence. + * + * @category Fetch API + */ +declare var Headers: { + readonly prototype: Headers; + new (init?: HeadersInit): Headers; +}; + /** @category Fetch API */ -type RequestInfo = Request | string; +declare type RequestInfo = Request | string; /** @category Fetch API */ -type RequestCache = +declare type RequestCache = | "default" | "force-cache" | "no-cache" @@ -161,13 +136,13 @@ type RequestCache = | "only-if-cached" | "reload"; /** @category Fetch API */ -type RequestCredentials = "include" | "omit" | "same-origin"; +declare type RequestCredentials = "include" | "omit" | "same-origin"; /** @category Fetch API */ -type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin"; +declare type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin"; /** @category Fetch API */ -type RequestRedirect = "error" | "follow" | "manual"; +declare type RequestRedirect = "error" | "follow" | "manual"; /** @category Fetch API */ -type ReferrerPolicy = +declare type ReferrerPolicy = | "" | "no-referrer" | "no-referrer-when-downgrade" @@ -178,7 +153,7 @@ type ReferrerPolicy = | "strict-origin-when-cross-origin" | "unsafe-url"; /** @category Fetch API */ -type BodyInit = +declare type BodyInit = | Blob | BufferSource | FormData @@ -186,7 +161,7 @@ type BodyInit = | ReadableStream<Uint8Array> | string; /** @category Fetch API */ -type RequestDestination = +declare type RequestDestination = | "" | "audio" | "audioworklet" @@ -207,7 +182,7 @@ type RequestDestination = | "xslt"; /** @category Fetch API */ -interface RequestInit { +declare interface RequestInit { /** * A BodyInit object or null to set request's body. */ @@ -275,9 +250,7 @@ interface RequestInit { * * @category Fetch API */ -declare class Request implements Body { - constructor(input: RequestInfo | URL, init?: RequestInit); - +declare interface Request extends Body { /** * Returns the cache mode associated with request, which is a string * indicating how the request will interact with the browser's cache when @@ -361,44 +334,26 @@ declare class Request implements Body { */ readonly url: string; clone(): Request; - - /** A simple getter used to expose a `ReadableStream` of the body contents. */ - readonly body: ReadableStream<Uint8Array> | null; - /** Stores a `Boolean` that declares whether the body has been used in a - * request yet. - */ - readonly bodyUsed: boolean; - /** Takes a `Request` stream and reads it to completion. It returns a promise - * that resolves with an `ArrayBuffer`. - */ - arrayBuffer(): Promise<ArrayBuffer>; - /** Takes a `Request` stream and reads it to completion. It returns a promise - * that resolves with a `Blob`. - */ - blob(): Promise<Blob>; - /** Takes a `Request` stream and reads it to completion. It returns a promise - * that resolves with a `FormData` object. - */ - formData(): Promise<FormData>; - /** Takes a `Request` stream and reads it to completion. It returns a promise - * that resolves with the result of parsing the body text as JSON. - */ - json(): Promise<any>; - /** Takes a `Request` stream and reads it to completion. It returns a promise - * that resolves with a `USVString` (text). - */ - text(): Promise<string>; } +/** This Fetch API interface represents a resource request. + * + * @category Fetch API + */ +declare var Request: { + readonly prototype: Request; + new (input: RequestInfo | URL, init?: RequestInit): Request; +}; + /** @category Fetch API */ -interface ResponseInit { +declare interface ResponseInit { headers?: HeadersInit; status?: number; statusText?: string; } /** @category Fetch API */ -type ResponseType = +declare type ResponseType = | "basic" | "cors" | "default" @@ -410,12 +365,7 @@ type ResponseType = * * @category Fetch API */ -declare class Response implements Body { - constructor(body?: BodyInit | null, init?: ResponseInit); - static json(data: unknown, init?: ResponseInit): Response; - static error(): Response; - static redirect(url: string | URL, status?: number): Response; - +declare interface Response extends Body { readonly headers: Headers; readonly ok: boolean; readonly redirected: boolean; @@ -424,35 +374,20 @@ declare class Response implements Body { readonly type: ResponseType; readonly url: string; clone(): Response; - - /** A simple getter used to expose a `ReadableStream` of the body contents. */ - readonly body: ReadableStream<Uint8Array> | null; - /** Stores a `Boolean` that declares whether the body has been used in a - * response yet. - */ - readonly bodyUsed: boolean; - /** Takes a `Response` stream and reads it to completion. It returns a promise - * that resolves with an `ArrayBuffer`. - */ - arrayBuffer(): Promise<ArrayBuffer>; - /** Takes a `Response` stream and reads it to completion. It returns a promise - * that resolves with a `Blob`. - */ - blob(): Promise<Blob>; - /** Takes a `Response` stream and reads it to completion. It returns a promise - * that resolves with a `FormData` object. - */ - formData(): Promise<FormData>; - /** Takes a `Response` stream and reads it to completion. It returns a promise - * that resolves with the result of parsing the body text as JSON. - */ - json(): Promise<any>; - /** Takes a `Response` stream and reads it to completion. It returns a promise - * that resolves with a `USVString` (text). - */ - text(): Promise<string>; } +/** This Fetch API interface represents the response to a request. + * + * @category Fetch API + */ +declare var Response: { + readonly prototype: Response; + new (body?: BodyInit | null, init?: ResponseInit): Response; + json(data: unknown, init?: ResponseInit): Response; + error(): Response; + redirect(url: string | URL, status?: number): Response; +}; + /** Fetch a resource from the network. It returns a `Promise` that resolves to the * `Response` to that `Request`, whether it is successful or not. * diff --git a/ext/url/lib.deno_url.d.ts b/ext/url/lib.deno_url.d.ts index 9a8c155d9..6da1c5704 100644 --- a/ext/url/lib.deno_url.d.ts +++ b/ext/url/lib.deno_url.d.ts @@ -1,17 +1,12 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -// deno-lint-ignore-file no-explicit-any +// deno-lint-ignore-file no-explicit-any no-var /// <reference no-default-lib="true" /> /// <reference lib="esnext" /> /** @category Web APIs */ -declare class URLSearchParams { - constructor( - init?: string[][] | Record<string, string> | string | URLSearchParams, - ); - static toString(): string; - +declare interface URLSearchParams { /** Appends a specified key/value pair as a new search parameter. * * ```ts @@ -22,15 +17,16 @@ declare class URLSearchParams { */ append(name: string, value: string): void; - /** Deletes the given search parameter and its associated value, + /** Deletes search parameters that match a name, and optional value, * from the list of all search parameters. * * ```ts * let searchParams = new URLSearchParams([['name', 'value']]); * searchParams.delete('name'); + * searchParams.delete('name', 'value'); * ``` */ - delete(name: string): void; + delete(name: string, value?: string): void; /** Returns all the values associated with a given search parameter * as an array. @@ -49,14 +45,15 @@ declare class URLSearchParams { */ get(name: string): string | null; - /** Returns a Boolean that indicates whether a parameter with the - * specified name exists. + /** Returns a boolean value indicating if a given parameter, + * or parameter and value pair, exists. * * ```ts * searchParams.has('name'); + * searchParams.has('name', 'value'); * ``` */ - has(name: string): boolean; + has(name: string, value?: string): boolean; /** Sets the value associated with a given search parameter to the * given value. If there were several matching values, this method @@ -160,17 +157,20 @@ declare class URLSearchParams { size: number; } +/** @category Web APIs */ +declare var URLSearchParams: { + readonly prototype: URLSearchParams; + new ( + init?: Iterable<string[]> | Record<string, string> | string, + ): URLSearchParams; +}; + /** The URL interface represents an object providing static methods used for * creating object URLs. * * @category Web APIs */ -declare class URL { - constructor(url: string | URL, base?: string | URL); - static canParse(url: string | URL, base?: string | URL): boolean; - static createObjectURL(blob: Blob): string; - static revokeObjectURL(url: string): void; - +declare interface URL { hash: string; host: string; hostname: string; @@ -187,6 +187,19 @@ declare class URL { toJSON(): string; } +/** The URL interface represents an object providing static methods used for + * creating object URLs. + * + * @category Web APIs + */ +declare var URL: { + readonly prototype: URL; + new (url: string | URL, base?: string | URL): URL; + canParse(url: string | URL, base?: string | URL): boolean; + createObjectURL(blob: Blob): string; + revokeObjectURL(url: string): void; +}; + /** @category Web APIs */ declare interface URLPatternInit { protocol?: string; @@ -265,9 +278,7 @@ declare interface URLPatternResult { * * @category Web APIs */ -declare class URLPattern { - constructor(input: URLPatternInput, baseURL?: string); - +declare interface URLPattern { /** * Test if the given input matches the stored pattern. * @@ -332,3 +343,38 @@ declare class URLPattern { /** The pattern string for the `hash`. */ readonly hash: string; } + +/** + * The URLPattern API provides a web platform primitive for matching URLs based + * on a convenient pattern syntax. + * + * The syntax is based on path-to-regexp. Wildcards, named capture groups, + * regular groups, and group modifiers are all supported. + * + * ```ts + * // Specify the pattern as structured data. + * const pattern = new URLPattern({ pathname: "/users/:user" }); + * const match = pattern.exec("https://blog.example.com/users/joe"); + * console.log(match.pathname.groups.user); // joe + * ``` + * + * ```ts + * // Specify a fully qualified string pattern. + * const pattern = new URLPattern("https://example.com/books/:id"); + * console.log(pattern.test("https://example.com/books/123")); // true + * console.log(pattern.test("https://deno.land/books/123")); // false + * ``` + * + * ```ts + * // Specify a relative string pattern with a base URL. + * const pattern = new URLPattern("/article/:id", "https://blog.example.com"); + * console.log(pattern.test("https://blog.example.com/article")); // false + * console.log(pattern.test("https://blog.example.com/article/123")); // true + * ``` + * + * @category Web APIs + */ +declare var URLPattern: { + readonly prototype: URLPattern; + new (input: URLPatternInput, baseURL?: string): URLPattern; +}; 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 diff --git a/ext/websocket/lib.deno_websocket.d.ts b/ext/websocket/lib.deno_websocket.d.ts index 208b30a6c..612440da2 100644 --- a/ext/websocket/lib.deno_websocket.d.ts +++ b/ext/websocket/lib.deno_websocket.d.ts @@ -1,20 +1,19 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -// deno-lint-ignore-file no-explicit-any +// deno-lint-ignore-file no-explicit-any no-var /// <reference no-default-lib="true" /> /// <reference lib="esnext" /> /** @category Web Sockets */ -interface CloseEventInit extends EventInit { +declare interface CloseEventInit extends EventInit { code?: number; reason?: string; wasClean?: boolean; } /** @category Web Sockets */ -declare class CloseEvent extends Event { - constructor(type: string, eventInitDict?: CloseEventInit); +declare interface CloseEvent extends Event { /** * Returns the WebSocket connection close code provided by the server. */ @@ -29,8 +28,13 @@ declare class CloseEvent extends Event { readonly wasClean: boolean; } +declare var CloseEvent: { + readonly prototype: CloseEvent; + new (type: string, eventInitDict?: CloseEventInit): CloseEvent; +}; + /** @category Web Sockets */ -interface WebSocketEventMap { +declare interface WebSocketEventMap { close: CloseEvent; error: Event; message: MessageEvent; @@ -47,14 +51,7 @@ interface WebSocketEventMap { * @tags allow-net * @category Web Sockets */ -declare class WebSocket extends EventTarget { - constructor(url: string | URL, protocols?: string | string[]); - - static readonly CLOSED: number; - static readonly CLOSING: number; - static readonly CONNECTING: number; - static readonly OPEN: number; - +declare interface WebSocket extends EventTarget { /** * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts: * @@ -122,4 +119,14 @@ declare class WebSocket extends EventTarget { } /** @category Web Sockets */ -type BinaryType = "arraybuffer" | "blob"; +declare var WebSocket: { + readonly prototype: WebSocket; + new (url: string | URL, protocols?: string | string[]): WebSocket; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; +}; + +/** @category Web Sockets */ +declare type BinaryType = "arraybuffer" | "blob"; diff --git a/ext/webstorage/lib.deno_webstorage.d.ts b/ext/webstorage/lib.deno_webstorage.d.ts index d591cdcfa..781b3ffb4 100644 --- a/ext/webstorage/lib.deno_webstorage.d.ts +++ b/ext/webstorage/lib.deno_webstorage.d.ts @@ -11,7 +11,7 @@ * * @category Web Storage API */ -interface Storage { +declare interface Storage { /** * Returns the number of key/value pairs currently present in the list associated with the object. */ @@ -43,6 +43,6 @@ interface Storage { /** @category Web Storage API */ declare var Storage: { - prototype: Storage; - new (): Storage; + readonly prototype: Storage; + new (): never; }; |