2021-01-11 12:13:41 -05:00
|
|
|
|
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
2020-01-24 14:15:01 -05:00
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
// Documentation partially adapted from [MDN](https://developer.mozilla.org/),
|
|
|
|
|
// by Mozilla Contributors, which is licensed under CC-BY-SA 2.5.
|
|
|
|
|
|
2020-01-24 14:15:01 -05:00
|
|
|
|
/// <reference no-default-lib="true" />
|
|
|
|
|
/// <reference lib="esnext" />
|
2020-08-07 10:55:02 -04:00
|
|
|
|
/// <reference lib="deno.web" />
|
2020-09-18 09:20:55 -04:00
|
|
|
|
/// <reference lib="deno.fetch" />
|
2021-01-06 10:57:28 -05:00
|
|
|
|
/// <reference lib="deno.websocket" />
|
2020-01-24 14:15:01 -05:00
|
|
|
|
|
2020-02-23 09:40:44 -05:00
|
|
|
|
declare namespace WebAssembly {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.CompileError` object indicates an error during WebAssembly decoding or validation.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError)
|
|
|
|
|
*/
|
|
|
|
|
export class CompileError extends Error {
|
|
|
|
|
/** Creates a new `WebAssembly.CompileError` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor();
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* A `WebAssembly.Global` object represents a global variable instance, accessible from
|
|
|
|
|
* both JavaScript and importable/exportable across one or more `WebAssembly.Module`
|
|
|
|
|
* instances. This allows dynamic linking of multiple modules.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export class Global {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** Creates a new `Global` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor(descriptor: GlobalDescriptor, v?: any);
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The value contained inside the global variable — this can be used to directly set
|
|
|
|
|
* and get the global's value.
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
value: any;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Old-style method that returns the value contained inside the global variable. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
valueOf(): any;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* A `WebAssembly.Instance` object is a stateful, executable instance of a `WebAssembly.Module`.
|
|
|
|
|
* Instance objects contain all the Exported WebAssembly functions that allow calling into
|
|
|
|
|
* WebAssembly code from JavaScript.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export class Instance {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** Creates a new Instance object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor(module: Module, importObject?: Imports);
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns an object containing as its members all the functions exported from the
|
|
|
|
|
* WebAssembly module instance, to allow them to be accessed and used by JavaScript.
|
|
|
|
|
* Read-only.
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
readonly exports: Exports;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.LinkError` object indicates an error during module instantiation
|
|
|
|
|
* (besides traps from the start function).
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError)
|
|
|
|
|
*/
|
|
|
|
|
export class LinkError extends Error {
|
|
|
|
|
/** Creates a new WebAssembly.LinkError object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor();
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.Memory` object is a resizable `ArrayBuffer` or `SharedArrayBuffer` that
|
|
|
|
|
* holds the raw bytes of memory accessed by a WebAssembly Instance.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* A memory created by JavaScript or in WebAssembly code will be accessible and mutable
|
|
|
|
|
* from both JavaScript and WebAssembly.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export class Memory {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** Creates a new `Memory` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor(descriptor: MemoryDescriptor);
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** An accessor property that returns the buffer contained in the memory. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
readonly buffer: ArrayBuffer;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Increases the size of the memory instance by a specified number of WebAssembly
|
|
|
|
|
* pages (each one is 64KB in size).
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
grow(delta: number): number;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* A `WebAssembly.Module` object contains stateless WebAssembly code that has already been compiled
|
|
|
|
|
* by the browser — this can be efficiently shared with Workers, and instantiated multiple times.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export class Module {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** Creates a new `Module` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor(bytes: BufferSource);
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Given a `Module` and string, returns a copy of the contents of all custom sections in the
|
|
|
|
|
* module with the given string name.
|
|
|
|
|
* */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
static customSections(
|
|
|
|
|
moduleObject: Module,
|
|
|
|
|
sectionName: string,
|
|
|
|
|
): ArrayBuffer[];
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Given a `Module`, returns an array containing descriptions of all the declared exports. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
static exports(moduleObject: Module): ModuleExportDescriptor[];
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Given a `Module`, returns an array containing descriptions of all the declared imports. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
static imports(moduleObject: Module): ModuleImportDescriptor[];
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.RuntimeError` object is the error type that is thrown whenever WebAssembly
|
|
|
|
|
* specifies a trap.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError)
|
|
|
|
|
*/
|
|
|
|
|
export class RuntimeError extends Error {
|
|
|
|
|
/** Creates a new `WebAssembly.RuntimeError` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor();
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.Table()` object is a JavaScript wrapper object — an array-like structure
|
|
|
|
|
* representing a WebAssembly Table, which stores function references. A table created by
|
|
|
|
|
* JavaScript or in WebAssembly code will be accessible and mutable from both JavaScript
|
|
|
|
|
* and WebAssembly.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export class Table {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** Creates a new `Table` object. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
constructor(descriptor: TableDescriptor);
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Returns the length of the table, i.e. the number of elements. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
readonly length: number;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Accessor function — gets the element stored at a given index. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
get(index: number): Function | null;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Increases the size of the `Table` instance by a specified number of elements. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
grow(delta: number): number;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/** Sets an element stored at a given index to a given value. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
set(index: number, value: Function | null): void;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** The `GlobalDescriptor` describes the options you can pass to `new WebAssembly.Global()`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface GlobalDescriptor {
|
|
|
|
|
mutable?: boolean;
|
|
|
|
|
value: ValueType;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** The `MemoryDescriptor` describes the options you can pass to `new WebAssembly.Memory()`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface MemoryDescriptor {
|
|
|
|
|
initial: number;
|
|
|
|
|
maximum?: number;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** A `ModuleExportDescriptor` is the description of a declared export in a `WebAssembly.Module`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface ModuleExportDescriptor {
|
|
|
|
|
kind: ImportExportKind;
|
|
|
|
|
name: string;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** A `ModuleImportDescriptor` is the description of a declared import in a `WebAssembly.Module`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface ModuleImportDescriptor {
|
|
|
|
|
kind: ImportExportKind;
|
|
|
|
|
module: string;
|
|
|
|
|
name: string;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** The `TableDescriptor` describes the options you can pass to `new WebAssembly.Table()`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface TableDescriptor {
|
|
|
|
|
element: TableKind;
|
|
|
|
|
initial: number;
|
|
|
|
|
maximum?: number;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/** The value returned from `WebAssembly.instantiate` and `WebAssembly.instantiateStreaming`. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export interface WebAssemblyInstantiatedSource {
|
2020-09-26 14:33:20 -04:00
|
|
|
|
/* A `WebAssembly.Instance` object that contains all the exported WebAssembly functions. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
instance: Instance;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* A `WebAssembly.Module` object representing the compiled WebAssembly module.
|
|
|
|
|
* This `Module` can be instantiated again, or shared via postMessage().
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
module: Module;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type ImportExportKind = "function" | "global" | "memory" | "table";
|
|
|
|
|
export type TableKind = "anyfunc";
|
|
|
|
|
export type ValueType = "f32" | "f64" | "i32" | "i64";
|
|
|
|
|
export type ExportValue = Function | Global | Memory | Table;
|
|
|
|
|
export type Exports = Record<string, ExportValue>;
|
|
|
|
|
export type ImportValue = ExportValue | number;
|
|
|
|
|
export type ModuleImports = Record<string, ImportValue>;
|
|
|
|
|
export type Imports = Record<string, ModuleImports>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
2020-10-02 22:57:31 -04:00
|
|
|
|
/**
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* The `WebAssembly.compile()` function compiles WebAssembly binary code into a
|
|
|
|
|
* `WebAssembly.Module` object. This function is useful if it is necessary to compile
|
|
|
|
|
* a module before it can be instantiated (otherwise, the `WebAssembly.instantiate()`
|
|
|
|
|
* function should be used).
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function compile(bytes: BufferSource): Promise<Module>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.compileStreaming()` function compiles a `WebAssembly.Module`
|
|
|
|
|
* directly from a streamed underlying source. This function is useful if it
|
|
|
|
|
* is necessary to a compile a module before it can be instantiated (otherwise,
|
|
|
|
|
* the `WebAssembly.instantiateStreaming()` function should be used).
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function compileStreaming(
|
|
|
|
|
source: Response | Promise<Response>,
|
|
|
|
|
): Promise<Module>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The WebAssembly.instantiate() function allows you to compile and instantiate
|
|
|
|
|
* WebAssembly code.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* This overload takes the WebAssembly binary code, in the form of a typed
|
|
|
|
|
* array or ArrayBuffer, and performs both compilation and instantiation in one step.
|
|
|
|
|
* The returned Promise resolves to both a compiled WebAssembly.Module and its first
|
|
|
|
|
* WebAssembly.Instance.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
|
2020-09-26 14:33:20 -04:00
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function instantiate(
|
|
|
|
|
bytes: BufferSource,
|
|
|
|
|
importObject?: Imports,
|
|
|
|
|
): Promise<WebAssemblyInstantiatedSource>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The WebAssembly.instantiate() function allows you to compile and instantiate
|
|
|
|
|
* WebAssembly code.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* This overload takes an already-compiled WebAssembly.Module and returns
|
|
|
|
|
* a Promise that resolves to an Instance of that Module. This overload is useful
|
|
|
|
|
* if the Module has already been compiled.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
|
2020-09-26 14:33:20 -04:00
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function instantiate(
|
|
|
|
|
moduleObject: Module,
|
|
|
|
|
importObject?: Imports,
|
|
|
|
|
): Promise<Instance>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.instantiateStreaming()` function compiles and instantiates a
|
|
|
|
|
* WebAssembly module directly from a streamed underlying source. This is the most
|
|
|
|
|
* efficient, optimized way to load WebAssembly code.
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function instantiateStreaming(
|
|
|
|
|
response: Response | PromiseLike<Response>,
|
|
|
|
|
importObject?: Imports,
|
|
|
|
|
): Promise<WebAssemblyInstantiatedSource>;
|
2020-09-26 14:33:20 -04:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The `WebAssembly.validate()` function validates a given typed array of
|
|
|
|
|
* WebAssembly binary code, returning whether the bytes form a valid wasm
|
|
|
|
|
* module (`true`) or not (`false`).
|
2020-10-02 22:57:31 -04:00
|
|
|
|
*
|
2020-09-26 14:33:20 -04:00
|
|
|
|
* [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate)
|
|
|
|
|
*/
|
2020-09-25 10:21:34 -04:00
|
|
|
|
export function validate(bytes: BufferSource): boolean;
|
2020-02-23 09:40:44 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** Sets a timer which executes a function once after the timer expires. Returns
|
|
|
|
|
* an id which may be used to cancel the timeout.
|
|
|
|
|
*
|
|
|
|
|
* setTimeout(() => { console.log('hello'); }, 500);
|
|
|
|
|
*/
|
2020-04-07 11:12:31 -04:00
|
|
|
|
declare function setTimeout(
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** callback function to execute when timer expires */
|
2020-05-15 09:51:49 -04:00
|
|
|
|
cb: (...args: any[]) => void,
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** delay in ms */
|
2020-04-07 11:12:31 -04:00
|
|
|
|
delay?: number,
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** arguments passed to callback function */
|
2020-05-15 09:51:49 -04:00
|
|
|
|
...args: any[]
|
2020-04-07 11:12:31 -04:00
|
|
|
|
): number;
|
2020-04-11 11:42:02 -04:00
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** Repeatedly calls a function , with a fixed time delay between each call.
|
|
|
|
|
*
|
|
|
|
|
* // Outputs 'hello' to the console every 500ms
|
|
|
|
|
* setInterval(() => { console.log('hello'); }, 500);
|
|
|
|
|
*/
|
2020-04-07 11:12:31 -04:00
|
|
|
|
declare function setInterval(
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** callback function to execute when timer expires */
|
2020-05-15 09:51:49 -04:00
|
|
|
|
cb: (...args: any[]) => void,
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** delay in ms */
|
2020-04-07 11:12:31 -04:00
|
|
|
|
delay?: number,
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** arguments passed to callback function */
|
2020-05-15 09:51:49 -04:00
|
|
|
|
...args: any[]
|
2020-04-07 11:12:31 -04:00
|
|
|
|
): number;
|
2020-05-30 11:19:16 -04:00
|
|
|
|
|
|
|
|
|
/** Cancels a timed, repeating action which was previously started by a call
|
|
|
|
|
* to `setInterval()`
|
|
|
|
|
*
|
2021-01-16 18:31:29 -05:00
|
|
|
|
* const id = setInterval(() => {console.log('hello');}, 500);
|
2020-05-30 11:19:16 -04:00
|
|
|
|
* ...
|
|
|
|
|
* clearInterval(id);
|
|
|
|
|
*/
|
2020-04-07 11:12:31 -04:00
|
|
|
|
declare function clearInterval(id?: number): void;
|
2020-05-30 11:19:16 -04:00
|
|
|
|
|
|
|
|
|
/** Cancels a scheduled action initiated by `setTimeout()`
|
|
|
|
|
*
|
2021-01-16 18:31:29 -05:00
|
|
|
|
* const id = setTimeout(() => {console.log('hello');}, 500);
|
2020-05-30 11:19:16 -04:00
|
|
|
|
* ...
|
|
|
|
|
* clearTimeout(id);
|
|
|
|
|
*/
|
|
|
|
|
declare function clearTimeout(id?: number): void;
|
|
|
|
|
|
2020-07-03 06:44:45 -04:00
|
|
|
|
interface VoidFunction {
|
|
|
|
|
(): void;
|
|
|
|
|
}
|
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** A microtask is a short function which is executed after the function or
|
|
|
|
|
* module which created it exits and only if the JavaScript execution stack is
|
|
|
|
|
* empty, but before returning control to the event loop being used to drive the
|
|
|
|
|
* script's execution environment. This event loop may be either the main event
|
|
|
|
|
* loop or the event loop driving a web worker.
|
|
|
|
|
*
|
|
|
|
|
* queueMicrotask(() => { console.log('This event loop stack is complete'); });
|
|
|
|
|
*/
|
2020-07-03 06:44:45 -04:00
|
|
|
|
declare function queueMicrotask(func: VoidFunction): void;
|
2020-01-29 12:54:23 -05:00
|
|
|
|
|
2020-05-08 08:30:53 -04:00
|
|
|
|
declare var crypto: Crypto;
|
2020-01-29 12:54:23 -05:00
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** Registers an event listener in the global scope, which will be called
|
|
|
|
|
* synchronously whenever the event `type` is dispatched.
|
|
|
|
|
*
|
|
|
|
|
* addEventListener('unload', () => { console.log('All finished!'); });
|
|
|
|
|
* ...
|
|
|
|
|
* dispatchEvent(new Event('unload'));
|
|
|
|
|
*/
|
2020-04-08 13:21:04 -04:00
|
|
|
|
declare function addEventListener(
|
2020-01-24 14:15:01 -05:00
|
|
|
|
type: string,
|
2020-04-09 06:03:44 -04:00
|
|
|
|
callback: EventListenerOrEventListenerObject | null,
|
2020-07-14 15:24:17 -04:00
|
|
|
|
options?: boolean | AddEventListenerOptions | undefined,
|
2020-04-08 13:21:04 -04:00
|
|
|
|
): void;
|
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** Dispatches an event in the global scope, synchronously invoking any
|
|
|
|
|
* registered event listeners for this event in the appropriate order. Returns
|
|
|
|
|
* false if event is cancelable and at least one of the event handlers which
|
|
|
|
|
* handled this event called Event.preventDefault(). Otherwise it returns true.
|
|
|
|
|
*
|
|
|
|
|
* dispatchEvent(new Event('unload'));
|
|
|
|
|
*/
|
2020-04-09 06:03:44 -04:00
|
|
|
|
declare function dispatchEvent(event: Event): boolean;
|
2020-04-08 13:21:04 -04:00
|
|
|
|
|
2020-05-30 11:19:16 -04:00
|
|
|
|
/** Remove a previously registered event listener from the global scope
|
|
|
|
|
*
|
|
|
|
|
* const lstnr = () => { console.log('hello'); };
|
|
|
|
|
* addEventListener('load', lstnr);
|
|
|
|
|
* removeEventListener('load', lstnr);
|
|
|
|
|
*/
|
2020-04-08 13:21:04 -04:00
|
|
|
|
declare function removeEventListener(
|
2020-01-24 14:15:01 -05:00
|
|
|
|
type: string,
|
2020-04-09 06:03:44 -04:00
|
|
|
|
callback: EventListenerOrEventListenerObject | null,
|
2020-07-14 15:24:17 -04:00
|
|
|
|
options?: boolean | EventListenerOptions | undefined,
|
2020-04-08 13:21:04 -04:00
|
|
|
|
): void;
|
2020-01-24 14:15:01 -05:00
|
|
|
|
|
2020-04-10 14:24:42 -04:00
|
|
|
|
interface DOMStringList {
|
|
|
|
|
/** Returns the number of strings in strings. */
|
|
|
|
|
readonly length: number;
|
|
|
|
|
/** Returns true if strings contains string, and false otherwise. */
|
|
|
|
|
contains(string: string): boolean;
|
|
|
|
|
/** Returns the string with index index from strings. */
|
|
|
|
|
item(index: number): string | null;
|
|
|
|
|
[index: number]: string;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-08 13:21:04 -04:00
|
|
|
|
type BufferSource = ArrayBufferView | ArrayBuffer;
|
2020-04-10 09:51:17 -04:00
|
|
|
|
|
2020-09-24 06:40:33 -04:00
|
|
|
|
declare interface Console {
|
|
|
|
|
assert(condition?: boolean, ...data: any[]): void;
|
|
|
|
|
clear(): void;
|
|
|
|
|
count(label?: string): void;
|
|
|
|
|
countReset(label?: string): void;
|
|
|
|
|
debug(...data: any[]): void;
|
|
|
|
|
dir(item?: any, options?: any): void;
|
|
|
|
|
dirxml(...data: any[]): void;
|
|
|
|
|
error(...data: any[]): void;
|
|
|
|
|
group(...data: any[]): void;
|
|
|
|
|
groupCollapsed(...data: any[]): void;
|
|
|
|
|
groupEnd(): void;
|
|
|
|
|
info(...data: any[]): void;
|
|
|
|
|
log(...data: any[]): void;
|
|
|
|
|
table(tabularData?: any, properties?: string[]): void;
|
|
|
|
|
time(label?: string): void;
|
|
|
|
|
timeEnd(label?: string): void;
|
|
|
|
|
timeLog(label?: string, ...data: any[]): void;
|
|
|
|
|
timeStamp(label?: string): void;
|
|
|
|
|
trace(...data: any[]): void;
|
|
|
|
|
warn(...data: any[]): void;
|
2020-01-24 14:15:01 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-09-24 06:40:33 -04:00
|
|
|
|
declare var console: Console;
|
|
|
|
|
|
2020-05-08 08:30:53 -04:00
|
|
|
|
declare interface Crypto {
|
|
|
|
|
readonly subtle: null;
|
|
|
|
|
getRandomValues<
|
|
|
|
|
T extends
|
|
|
|
|
| Int8Array
|
|
|
|
|
| Int16Array
|
|
|
|
|
| Int32Array
|
|
|
|
|
| Uint8Array
|
|
|
|
|
| Uint16Array
|
|
|
|
|
| Uint32Array
|
|
|
|
|
| Uint8ClampedArray
|
|
|
|
|
| Float32Array
|
|
|
|
|
| Float64Array
|
|
|
|
|
| DataView
|
2020-07-14 15:24:17 -04:00
|
|
|
|
| null,
|
2020-05-08 08:30:53 -04:00
|
|
|
|
>(
|
2020-07-14 15:24:17 -04:00
|
|
|
|
array: T,
|
2020-05-08 08:30:53 -04:00
|
|
|
|
): T;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-25 10:21:34 -04:00
|
|
|
|
declare class URLSearchParams {
|
|
|
|
|
constructor(
|
|
|
|
|
init?: string[][] | Record<string, string> | string | URLSearchParams,
|
|
|
|
|
);
|
|
|
|
|
static toString(): string;
|
2020-04-10 09:51:17 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Appends a specified key/value pair as a new search parameter.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* let searchParams = new URLSearchParams();
|
|
|
|
|
* searchParams.append('name', 'first');
|
|
|
|
|
* searchParams.append('name', 'second');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
append(name: string, value: string): void;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Deletes the given search parameter and its associated value,
|
|
|
|
|
* from the list of all search parameters.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* let searchParams = new URLSearchParams([['name', 'value']]);
|
|
|
|
|
* searchParams.delete('name');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
delete(name: string): void;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns all the values associated with a given search parameter
|
|
|
|
|
* as an array.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.getAll('name');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
getAll(name: string): string[];
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns the first value associated to the given search parameter.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.get('name');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
get(name: string): string | null;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns a Boolean that indicates whether a parameter with the
|
|
|
|
|
* specified name exists.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.has('name');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
has(name: string): boolean;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Sets the value associated with a given search parameter to the
|
|
|
|
|
* given value. If there were several matching values, this method
|
|
|
|
|
* deletes the others. If the search parameter doesn't exist, this
|
|
|
|
|
* method creates it.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.set('name', 'value');
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
set(name: string, value: string): void;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Sort all key/value pairs contained in this object in place and
|
|
|
|
|
* return undefined. The sort order is according to Unicode code
|
|
|
|
|
* points of the keys.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.sort();
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
sort(): void;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Calls a function for each element contained in this object in
|
|
|
|
|
* place and return undefined. Optionally accepts an object to use
|
|
|
|
|
* as this when executing callback as second argument.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
|
|
|
|
|
* params.forEach((value, key, parent) => {
|
|
|
|
|
* console.log(value, key, parent);
|
|
|
|
|
* });
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
forEach(
|
|
|
|
|
callbackfn: (value: string, key: string, parent: this) => void,
|
2020-07-14 15:24:17 -04:00
|
|
|
|
thisArg?: any,
|
2020-04-07 17:11:38 -04:00
|
|
|
|
): void;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns an iterator allowing to go through all keys contained
|
|
|
|
|
* in this object.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
|
|
|
|
|
* for (const key of params.keys()) {
|
|
|
|
|
* console.log(key);
|
|
|
|
|
* }
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
keys(): IterableIterator<string>;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns an iterator allowing to go through all values contained
|
|
|
|
|
* in this object.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
|
|
|
|
|
* for (const value of params.values()) {
|
|
|
|
|
* console.log(value);
|
|
|
|
|
* }
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
values(): IterableIterator<string>;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns an iterator allowing to go through all key/value
|
|
|
|
|
* pairs contained in this object.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
|
|
|
|
|
* for (const [key, value] of params.entries()) {
|
|
|
|
|
* console.log(key, value);
|
|
|
|
|
* }
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
entries(): IterableIterator<[string, string]>;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns an iterator allowing to go through all key/value
|
|
|
|
|
* pairs contained in this object.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
|
|
|
|
|
* for (const [key, value] of params) {
|
|
|
|
|
* console.log(key, value);
|
|
|
|
|
* }
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
[Symbol.iterator](): IterableIterator<[string, string]>;
|
2020-04-08 10:32:08 -04:00
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** Returns a query string suitable for use in a URL.
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* searchParams.toString();
|
|
|
|
|
* ```
|
2020-04-07 17:11:38 -04:00
|
|
|
|
*/
|
|
|
|
|
toString(): string;
|
2020-01-24 14:15:01 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
/** The URL interface represents an object providing static methods used for creating object URLs. */
|
2020-09-25 10:21:34 -04:00
|
|
|
|
declare class URL {
|
|
|
|
|
constructor(url: string, base?: string | URL);
|
|
|
|
|
createObjectURL(object: any): string;
|
|
|
|
|
revokeObjectURL(url: string): void;
|
|
|
|
|
|
2020-04-07 17:11:38 -04:00
|
|
|
|
hash: string;
|
|
|
|
|
host: string;
|
|
|
|
|
hostname: string;
|
|
|
|
|
href: string;
|
|
|
|
|
toString(): string;
|
|
|
|
|
readonly origin: string;
|
|
|
|
|
password: string;
|
|
|
|
|
pathname: string;
|
|
|
|
|
port: string;
|
|
|
|
|
protocol: string;
|
|
|
|
|
search: string;
|
|
|
|
|
readonly searchParams: URLSearchParams;
|
|
|
|
|
username: string;
|
|
|
|
|
toJSON(): string;
|
2020-01-24 14:15:01 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-10-08 05:43:26 -04:00
|
|
|
|
interface MessageEventInit<T = any> extends EventInit {
|
|
|
|
|
data?: T;
|
2020-04-13 12:34:32 -04:00
|
|
|
|
origin?: string;
|
|
|
|
|
lastEventId?: string;
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-08 05:43:26 -04:00
|
|
|
|
declare class MessageEvent<T = any> extends Event {
|
|
|
|
|
/**
|
|
|
|
|
* Returns the data of the message.
|
|
|
|
|
*/
|
|
|
|
|
readonly data: T;
|
|
|
|
|
/**
|
|
|
|
|
* Returns the last event ID string, for server-sent events.
|
|
|
|
|
*/
|
2020-04-13 12:34:32 -04:00
|
|
|
|
readonly lastEventId: string;
|
|
|
|
|
constructor(type: string, eventInitDict?: MessageEventInit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface ErrorEventInit extends EventInit {
|
|
|
|
|
message?: string;
|
|
|
|
|
filename?: string;
|
|
|
|
|
lineno?: number;
|
|
|
|
|
colno?: number;
|
|
|
|
|
error?: any;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
declare class ErrorEvent extends Event {
|
|
|
|
|
readonly message: string;
|
|
|
|
|
readonly filename: string;
|
|
|
|
|
readonly lineno: number;
|
|
|
|
|
readonly colno: number;
|
|
|
|
|
readonly error: any;
|
|
|
|
|
constructor(type: string, eventInitDict?: ErrorEventInit);
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-13 10:48:12 -04:00
|
|
|
|
interface PostMessageOptions {
|
|
|
|
|
transfer?: any[];
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-02 22:57:31 -04:00
|
|
|
|
interface AbstractWorkerEventMap {
|
|
|
|
|
"error": ErrorEvent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface WorkerEventMap extends AbstractWorkerEventMap {
|
|
|
|
|
"message": MessageEvent;
|
|
|
|
|
"messageerror": MessageEvent;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-13 12:34:32 -04:00
|
|
|
|
declare class Worker extends EventTarget {
|
|
|
|
|
onerror?: (e: ErrorEvent) => void;
|
|
|
|
|
onmessage?: (e: MessageEvent) => void;
|
|
|
|
|
onmessageerror?: (e: MessageEvent) => void;
|
2020-04-07 15:03:14 -04:00
|
|
|
|
constructor(
|
|
|
|
|
specifier: string,
|
|
|
|
|
options?: {
|
|
|
|
|
type?: "classic" | "module";
|
|
|
|
|
name?: string;
|
2021-01-06 15:31:16 -05:00
|
|
|
|
/** UNSTABLE: New API.
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
2021-01-06 15:31:16 -05:00
|
|
|
|
* Set deno.namespace to `true` to make `Deno` namespace and all of its methods
|
|
|
|
|
* available to worker thread. The namespace is disabled by default.
|
2021-01-07 05:52:30 -05:00
|
|
|
|
*
|
2021-01-06 15:31:16 -05:00
|
|
|
|
* Configure deno.permissions options to change the level of access the worker will
|
|
|
|
|
* have. By default it will inherit the permissions of its parent thread. The permissions
|
|
|
|
|
* of a worker can't be extended beyond its parent's permissions reach.
|
|
|
|
|
* - "inherit" will take the permissions of the thread the worker is created in
|
|
|
|
|
* - You can disable/enable permissions all together by passing a boolean
|
|
|
|
|
* - You can provide a list of routes relative to the file the worker
|
|
|
|
|
* is created in to limit the access of the worker (read/write permissions only)
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
|
|
|
|
* Example:
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* // mod.ts
|
2020-06-09 08:33:52 -04:00
|
|
|
|
* const worker = new Worker(
|
2021-01-06 15:31:16 -05:00
|
|
|
|
* new URL("deno_worker.ts", import.meta.url).href, {
|
|
|
|
|
* type: "module",
|
|
|
|
|
* deno: {
|
|
|
|
|
* namespace: true,
|
|
|
|
|
* permissions: {
|
|
|
|
|
* read: true,
|
|
|
|
|
* },
|
|
|
|
|
* },
|
|
|
|
|
* }
|
2020-06-09 08:33:52 -04:00
|
|
|
|
* );
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* worker.postMessage({ cmd: "readFile", fileName: "./log.txt" });
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* // deno_worker.ts
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* self.onmessage = async function (e) {
|
|
|
|
|
* const { cmd, fileName } = e.data;
|
|
|
|
|
* if (cmd !== "readFile") {
|
|
|
|
|
* throw new Error("Invalid command");
|
|
|
|
|
* }
|
|
|
|
|
* const buf = await Deno.readFile(fileName);
|
|
|
|
|
* const fileContents = new TextDecoder().decode(buf);
|
|
|
|
|
* console.log(fileContents);
|
|
|
|
|
* }
|
|
|
|
|
* ```
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* // log.txt
|
|
|
|
|
* hello world
|
|
|
|
|
* hello world 2
|
|
|
|
|
*
|
|
|
|
|
* // run program
|
|
|
|
|
* $ deno run --allow-read mod.ts
|
|
|
|
|
* hello world
|
|
|
|
|
* hello world2
|
2020-04-16 17:40:29 -04:00
|
|
|
|
*
|
|
|
|
|
*/
|
2021-01-06 15:31:16 -05:00
|
|
|
|
// TODO(Soremwar)
|
|
|
|
|
// `deno: true` is kept for backwards compatibility with the previous worker
|
2021-01-07 05:52:30 -05:00
|
|
|
|
// options implementation. Remove for 2.0.
|
2021-01-06 15:31:16 -05:00
|
|
|
|
deno?: true | {
|
|
|
|
|
namespace?: boolean;
|
2021-01-07 05:52:30 -05:00
|
|
|
|
/** Set to `"none"` to disable all the permissions in the worker. */
|
|
|
|
|
permissions?: "inherit" | "none" | {
|
2021-01-06 15:31:16 -05:00
|
|
|
|
env?: "inherit" | boolean;
|
|
|
|
|
hrtime?: "inherit" | boolean;
|
2021-01-07 05:52:30 -05:00
|
|
|
|
/** The format of the net access list must be `hostname[:port]`
|
|
|
|
|
* in order to be resolved.
|
|
|
|
|
*
|
2021-01-06 15:31:16 -05:00
|
|
|
|
* ```
|
|
|
|
|
* net: ["https://deno.land", "localhost:8080"],
|
|
|
|
|
* ```
|
|
|
|
|
* */
|
|
|
|
|
net?: "inherit" | boolean | string[];
|
|
|
|
|
plugin?: "inherit" | boolean;
|
|
|
|
|
read?: "inherit" | boolean | Array<string | URL>;
|
|
|
|
|
run?: "inherit" | boolean;
|
|
|
|
|
write?: "inherit" | boolean | Array<string | URL>;
|
|
|
|
|
};
|
|
|
|
|
};
|
2020-07-14 15:24:17 -04:00
|
|
|
|
},
|
2020-04-07 15:03:14 -04:00
|
|
|
|
);
|
2020-04-13 10:48:12 -04:00
|
|
|
|
postMessage(message: any, transfer: ArrayBuffer[]): void;
|
|
|
|
|
postMessage(message: any, options?: PostMessageOptions): void;
|
2020-10-02 22:57:31 -04:00
|
|
|
|
addEventListener<K extends keyof WorkerEventMap>(
|
|
|
|
|
type: K,
|
|
|
|
|
listener: (this: Worker, ev: WorkerEventMap[K]) => any,
|
|
|
|
|
options?: boolean | AddEventListenerOptions,
|
|
|
|
|
): void;
|
|
|
|
|
addEventListener(
|
|
|
|
|
type: string,
|
|
|
|
|
listener: EventListenerOrEventListenerObject,
|
|
|
|
|
options?: boolean | AddEventListenerOptions,
|
|
|
|
|
): void;
|
|
|
|
|
removeEventListener<K extends keyof WorkerEventMap>(
|
|
|
|
|
type: K,
|
|
|
|
|
listener: (this: Worker, ev: WorkerEventMap[K]) => any,
|
|
|
|
|
options?: boolean | EventListenerOptions,
|
|
|
|
|
): void;
|
|
|
|
|
removeEventListener(
|
|
|
|
|
type: string,
|
|
|
|
|
listener: EventListenerOrEventListenerObject,
|
|
|
|
|
options?: boolean | EventListenerOptions,
|
|
|
|
|
): void;
|
2020-04-07 15:03:14 -04:00
|
|
|
|
terminate(): void;
|
2020-01-24 14:15:01 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-07-10 22:38:15 -04:00
|
|
|
|
declare type PerformanceEntryList = PerformanceEntry[];
|
|
|
|
|
|
2020-09-25 10:21:34 -04:00
|
|
|
|
declare class Performance {
|
|
|
|
|
constructor();
|
|
|
|
|
|
2020-07-10 22:38:15 -04:00
|
|
|
|
/** Removes the stored timestamp with the associated name. */
|
|
|
|
|
clearMarks(markName?: string): void;
|
|
|
|
|
|
|
|
|
|
/** Removes stored timestamp with the associated name. */
|
|
|
|
|
clearMeasures(measureName?: string): void;
|
|
|
|
|
|
|
|
|
|
getEntries(): PerformanceEntryList;
|
|
|
|
|
getEntriesByName(name: string, type?: string): PerformanceEntryList;
|
|
|
|
|
getEntriesByType(type: string): PerformanceEntryList;
|
|
|
|
|
|
|
|
|
|
/** Stores a timestamp with the associated name (a "mark"). */
|
|
|
|
|
mark(markName: string, options?: PerformanceMarkOptions): PerformanceMark;
|
|
|
|
|
|
|
|
|
|
/** Stores the `DOMHighResTimeStamp` duration between two marks along with the
|
|
|
|
|
* associated name (a "measure"). */
|
|
|
|
|
measure(
|
|
|
|
|
measureName: string,
|
2020-07-14 15:24:17 -04:00
|
|
|
|
options?: PerformanceMeasureOptions,
|
2020-07-10 22:38:15 -04:00
|
|
|
|
): PerformanceMeasure;
|
|
|
|
|
/** Stores the `DOMHighResTimeStamp` duration between two marks along with the
|
|
|
|
|
* associated name (a "measure"). */
|
|
|
|
|
measure(
|
|
|
|
|
measureName: string,
|
|
|
|
|
startMark?: string,
|
2020-07-14 15:24:17 -04:00
|
|
|
|
endMark?: string,
|
2020-07-10 22:38:15 -04:00
|
|
|
|
): PerformanceMeasure;
|
|
|
|
|
|
2020-04-07 13:27:37 -04:00
|
|
|
|
/** Returns a current time from Deno's start in milliseconds.
|
|
|
|
|
*
|
2020-05-30 11:19:16 -04:00
|
|
|
|
* Use the permission flag `--allow-hrtime` return a precise value.
|
2020-04-07 13:27:37 -04:00
|
|
|
|
*
|
2020-05-16 15:23:48 -04:00
|
|
|
|
* ```ts
|
|
|
|
|
* const t = performance.now();
|
|
|
|
|
* console.log(`${t} ms since start!`);
|
|
|
|
|
* ```
|
2020-04-07 13:27:37 -04:00
|
|
|
|
*/
|
2020-07-10 22:38:15 -04:00
|
|
|
|
now(): number;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-25 17:23:35 -04:00
|
|
|
|
declare var performance: Performance;
|
2020-07-10 22:38:15 -04:00
|
|
|
|
|
|
|
|
|
declare interface PerformanceMarkOptions {
|
|
|
|
|
/** Metadata to be included in the mark. */
|
|
|
|
|
detail?: any;
|
|
|
|
|
|
|
|
|
|
/** Timestamp to be used as the mark time. */
|
|
|
|
|
startTime?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
declare interface PerformanceMeasureOptions {
|
|
|
|
|
/** Metadata to be included in the measure. */
|
|
|
|
|
detail?: any;
|
|
|
|
|
|
|
|
|
|
/** Timestamp to be used as the start time or string to be used as start
|
|
|
|
|
* mark.*/
|
|
|
|
|
start?: string | number;
|
|
|
|
|
|
|
|
|
|
/** Duration between the start and end times. */
|
|
|
|
|
duration?: number;
|
|
|
|
|
|
|
|
|
|
/** Timestamp to be used as the end time or string to be used as end mark. */
|
|
|
|
|
end?: string | number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Encapsulates a single performance metric that is part of the performance
|
|
|
|
|
* timeline. A performance entry can be directly created by making a performance
|
|
|
|
|
* mark or measure (for example by calling the `.mark()` method) at an explicit
|
|
|
|
|
* point in an application. */
|
|
|
|
|
declare class PerformanceEntry {
|
|
|
|
|
readonly duration: number;
|
|
|
|
|
readonly entryType: string;
|
|
|
|
|
readonly name: string;
|
|
|
|
|
readonly startTime: number;
|
|
|
|
|
toJSON(): any;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** `PerformanceMark` is an abstract interface for `PerformanceEntry` objects
|
|
|
|
|
* with an entryType of `"mark"`. Entries of this type are created by calling
|
|
|
|
|
* `performance.mark()` to add a named `DOMHighResTimeStamp` (the mark) to the
|
|
|
|
|
* performance timeline. */
|
|
|
|
|
declare class PerformanceMark extends PerformanceEntry {
|
|
|
|
|
readonly detail: any;
|
|
|
|
|
readonly entryType: "mark";
|
|
|
|
|
constructor(name: string, options?: PerformanceMarkOptions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** `PerformanceMeasure` is an abstract interface for `PerformanceEntry` objects
|
|
|
|
|
* with an entryType of `"measure"`. Entries of this type are created by calling
|
|
|
|
|
* `performance.measure()` to add a named `DOMHighResTimeStamp` (the measure)
|
|
|
|
|
* between two marks to the performance timeline. */
|
|
|
|
|
declare class PerformanceMeasure extends PerformanceEntry {
|
|
|
|
|
readonly detail: any;
|
|
|
|
|
readonly entryType: "measure";
|
2020-01-24 14:15:01 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-09-25 10:21:34 -04:00
|
|
|
|
declare interface CustomEventInit<T = any> extends EventInit {
|
2020-04-09 06:03:44 -04:00
|
|
|
|
detail?: T;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-11 11:42:02 -04:00
|
|
|
|
declare class CustomEvent<T = any> extends Event {
|
|
|
|
|
constructor(typeArg: string, eventInitDict?: CustomEventInit<T>);
|
|
|
|
|
/** Returns any custom data event was created with. Typically used for
|
|
|
|
|
* synthetic events. */
|
|
|
|
|
readonly detail: T;
|
|
|
|
|
}
|
2020-04-10 09:51:17 -04:00
|
|
|
|
|
2020-05-29 08:02:36 -04:00
|
|
|
|
interface ErrorConstructor {
|
|
|
|
|
/** See https://v8.dev/docs/stack-trace-api#stack-trace-collection-for-custom-exceptions. */
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
|
|
|
captureStackTrace(error: Object, constructor?: Function): void;
|
|
|
|
|
// TODO(nayeemrmn): Support `Error.prepareStackTrace()`. We currently use this
|
|
|
|
|
// internally in a way that makes it unavailable for users.
|
|
|
|
|
}
|