2020-01-24 14:15:01 -05:00
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
2020-04-11 11:42:02 -04:00
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-var */
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-01-24 14:15:01 -05:00
2020-02-23 09:40:44 -05:00
// This follows the WebIDL at: https://webassembly.github.io/spec/js-api/
// and: https://webassembly.github.io/spec/web-api/
declare namespace WebAssembly {
interface WebAssemblyInstantiatedSource {
module : Module ;
instance : Instance ;
}
/ * * C o m p i l e s a ` W e b A s s e m b l y . M o d u l e ` f r o m W e b A s s e m b l y b i n a r y c o d e . T h i s
* function is useful if it is necessary to a compile a module before it can
* be instantiated ( otherwise , the ` WebAssembly.instantiate() ` function
* should be used ) . * /
2020-04-08 13:21:04 -04:00
function compile ( bufferSource : BufferSource ) : Promise < Module > ;
2020-02-23 09:40:44 -05:00
/ * * C o m p i l e s a ` W e b A s s e m b l y . M o d u l e ` d i r e c t l y f r o m a s t r e a m e d u n d e r l y i n g
* 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-04-10 09:51:17 -04:00
function compileStreaming ( source : Promise < Response > ) : Promise < Module > ;
2020-02-23 09:40:44 -05:00
/ * * T a k e s t h e W e b A s s e m b l y b i n a r y c o d e , i n t h e f o r m o f a t y p e d a r r a y o r
* ` 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 ` . * /
function instantiate (
2020-04-08 13:21:04 -04:00
bufferSource : BufferSource ,
2020-07-14 15:24:17 -04:00
importObject? : object ,
2020-02-23 09:40:44 -05:00
) : Promise < WebAssemblyInstantiatedSource > ;
/ * * T a k e s a n a l r e a d y - c o m p i l e d ` W e b A s s e m b l y . M o d u l e ` a n d r e t u r n s a ` P r o m i s e `
* that resolves to an ` Instance ` of that ` Module ` . This overload is useful if
* the ` Module ` has already been compiled . * /
function instantiate (
module : Module ,
2020-07-14 15:24:17 -04:00
importObject? : object ,
2020-02-23 09:40:44 -05:00
) : Promise < Instance > ;
/ * * C o m p i l e s a n d i n s t a n t i a t e s a W e b A s s e m b l y m o d u l e d i r e c t l y f r o m a s t r e a m e d
* underlying source . This is the most efficient , optimized way to load wasm
* code . * /
function instantiateStreaming (
2020-04-10 09:51:17 -04:00
source : Promise < Response > ,
2020-07-14 15:24:17 -04:00
importObject? : object ,
2020-02-23 09:40:44 -05:00
) : Promise < WebAssemblyInstantiatedSource > ;
/ * * V a l i d a t e s a g i v e n t y p e d a r r a y o f W e b A s s e m b l y b i n a r y c o d e , r e t u r n i n g
* whether the bytes form a valid wasm module ( ` true ` ) or not ( ` false ` ) . * /
2020-04-08 13:21:04 -04:00
function validate ( bufferSource : BufferSource ) : boolean ;
2020-02-23 09:40:44 -05:00
type ImportExportKind = "function" | "table" | "memory" | "global" ;
interface ModuleExportDescriptor {
name : string ;
kind : ImportExportKind ;
}
interface ModuleImportDescriptor {
module : string ;
name : string ;
kind : ImportExportKind ;
}
class Module {
2020-04-08 13:21:04 -04:00
constructor ( bufferSource : BufferSource ) ;
2020-02-23 09:40:44 -05:00
/ * * G i v e n a ` M o d u l e ` a n d s t r i n g , r e t u r n s a c o p y o f t h e c o n t e n t s o f a l l
* custom sections in the module with the given string name . * /
static customSections (
moduleObject : Module ,
2020-07-14 15:24:17 -04:00
sectionName : string ,
2020-02-23 09:40:44 -05:00
) : ArrayBuffer ;
/ * * G i v e n a ` M o d u l e ` , r e t u r n s a n a r r a y c o n t a i n i n g d e s c r i p t i o n s o f a l l t h e
* declared exports . * /
static exports ( moduleObject : Module ) : ModuleExportDescriptor [ ] ;
/ * * G i v e n a ` M o d u l e ` , r e t u r n s a n a r r a y c o n t a i n i n g d e s c r i p t i o n s o f a l l t h e
* declared imports . * /
static imports ( moduleObject : Module ) : ModuleImportDescriptor [ ] ;
}
class Instance < T extends object = { [ key : string ] : any } > {
constructor ( module : Module , importObject? : object ) ;
/ * * A n o b j e c t c o n t a i n i n g a s i t s m e m b e r s a l l t h e f u n c t i o n s e x p o r t e d f r o m t h e
* WebAssembly module instance , to allow them to be accessed and used by
* JavaScript . * /
readonly exports : T ;
}
interface MemoryDescriptor {
initial : number ;
maximum? : number ;
}
class Memory {
constructor ( descriptor : MemoryDescriptor ) ;
/** An accessor property that returns the buffer contained in the memory. */
readonly buffer : ArrayBuffer ;
/ * * I n c r e a s e s t h e s i z e o f t h e m e m o r y i n s t a n c e b y a s p e c i f i e d n u m b e r o f
* WebAssembly pages ( each one is 64 KB in size ) . * /
grow ( delta : number ) : number ;
}
type TableKind = "anyfunc" ;
interface TableDescriptor {
element : TableKind ;
initial : number ;
maximum? : number ;
}
class Table {
constructor ( descriptor : TableDescriptor ) ;
/** Returns the length of the table, i.e. the number of elements. */
readonly length : number ;
/** Accessor function — gets the element stored at a given index. */
get ( index : number ) : ( . . . args : any [ ] ) = > any ;
/ * * I n c r e a s e s t h e s i z e o f t h e T a b l e i n s t a n c e b y a s p e c i f i e d n u m b e r o f
* elements . * /
grow ( delta : number ) : number ;
/** Sets an element stored at a given index to a given value. */
set ( index : number , value : ( . . . args : any [ ] ) = > any ) : void ;
}
type ValueType = "i32" | "i64" | "f32" | "f64" ;
interface GlobalDescriptor {
value : ValueType ;
mutable? : boolean ;
}
/ * * R e p r e s e n t s a g l o b a l v a r i a b l e i n s t a n c e , a c c e s s i b l e f r o m b o t h J a v a S c r i p t a n d
* importable / exportable across one or more ` WebAssembly.Module ` instances .
* This allows dynamic linking of multiple modules . * /
class Global {
constructor ( descriptor : GlobalDescriptor , value? : any ) ;
/ * * O l d - s t y l e m e t h o d t h a t r e t u r n s t h e v a l u e c o n t a i n e d i n s i d e t h e g l o b a l
* variable . * /
valueOf ( ) : any ;
/ * * T h e v a l u e c o n t a i n e d i n s i d e t h e g l o b a l v a r i a b l e — t h i s c a n b e u s e d t o
* directly set and get the global ' s value . * /
value : any ;
}
/** Indicates an error during WebAssembly decoding or validation */
class CompileError extends Error {
constructor ( message : string , fileName? : string , lineNumber? : string ) ;
}
/ * * I n d i c a t e s a n e r r o r d u r i n g m o d u l e i n s t a n t i a t i o n ( b e s i d e s t r a p s f r o m t h e
* start function ) . * /
class LinkError extends Error {
constructor ( message : string , fileName? : string , lineNumber? : string ) ;
}
/** Is thrown whenever WebAssembly specifies a trap. */
class RuntimeError extends Error {
constructor ( message : string , fileName? : string , lineNumber? : string ) ;
}
}
2020-05-30 11:19:16 -04:00
/ * * S e t s a t i m e r w h i c h e x e c u t e s a f u n c t i o n o n c e a f t e r t h e t i m e r e x p i r e s . R e t u r n s
* 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
/ * * R e p e a t e d l y c a l l s a f u n c t i o n , w i t h a f i x e d t i m e d e l a y b e t w e e n e a c h c a l l .
*
* // 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
/ * * C a n c e l s a t i m e d , r e p e a t i n g a c t i o n w h i c h w a s p r e v i o u s l y s t a r t e d b y a c a l l
* to ` setInterval() `
*
* const id = setInterval ( ( ) = > { console . log ( 'hello' ) ; } , 500 ) ;
* . . .
* clearInterval ( id ) ;
* /
2020-04-07 11:12:31 -04:00
declare function clearInterval ( id? : number ) : void ;
2020-05-30 11:19:16 -04:00
/ * * C a n c e l s a s c h e d u l e d a c t i o n i n i t i a t e d b y ` s e t T i m e o u t ( ) `
*
* const id = setTimeout ( ( ) = > { console . log ( 'hello' ) ; } , 500 ) ;
* . . .
* 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 m i c r o t a s k i s a s h o r t f u n c t i o n w h i c h i s e x e c u t e d a f t e r t h e f u n c t i o n o r
* 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-04-11 11:42:02 -04:00
declare var console : Console ;
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
/ * * R e g i s t e r s a n e v e n t l i s t e n e r i n t h e g l o b a l s c o p e , w h i c h w i l l b e c a l l e d
* 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
/ * * D i s p a t c h e s a n e v e n t i n t h e g l o b a l s c o p e , s y n c h r o n o u s l y i n v o k i n g a n y
* 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
/ * * R e m o v e a p r e v i o u s l y r e g i s t e r e d e v e n t l i s t e n e r f r o m t h e g l o b a l s c o p e
*
* 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 DomIterable < K , V > {
keys ( ) : IterableIterator < K > ;
values ( ) : IterableIterator < V > ;
entries ( ) : IterableIterator < [ K , V ] > ;
[ Symbol . iterator ] ( ) : IterableIterator < [ K , V ] > ;
forEach (
callback : ( value : V , key : K , parent : this ) = > void ,
2020-07-14 15:24:17 -04:00
thisArg? : any ,
2020-04-10 14:24:42 -04:00
) : void ;
}
2020-04-03 14:55:23 -04:00
2020-04-10 14:24:42 -04:00
interface ReadableStreamReadDoneResult < T > {
done : true ;
value? : T ;
}
2020-04-03 14:55:23 -04:00
2020-04-10 14:24:42 -04:00
interface ReadableStreamReadValueResult < T > {
done : false ;
value : T ;
}
2020-04-03 14:55:23 -04:00
2020-04-10 14:24:42 -04:00
type ReadableStreamReadResult < T > =
| ReadableStreamReadValueResult < T >
| ReadableStreamReadDoneResult < T > ;
2020-04-03 14:55:23 -04:00
2020-04-10 14:24:42 -04:00
interface ReadableStreamDefaultReader < R = any > {
readonly closed : Promise < void > ;
cancel ( reason? : any ) : Promise < void > ;
read ( ) : Promise < ReadableStreamReadResult < R > > ;
releaseLock ( ) : void ;
}
2020-04-03 14:55:23 -04:00
2020-04-22 10:06:51 -04:00
interface ReadableStreamReader < R = any > {
cancel ( ) : Promise < void > ;
read ( ) : Promise < ReadableStreamReadResult < R > > ;
releaseLock ( ) : void ;
}
interface ReadableByteStreamControllerCallback {
( controller : ReadableByteStreamController ) : void | PromiseLike < void > ;
}
interface UnderlyingByteSource {
autoAllocateChunkSize? : number ;
cancel? : ReadableStreamErrorCallback ;
pull? : ReadableByteStreamControllerCallback ;
start? : ReadableByteStreamControllerCallback ;
type : "bytes" ;
}
2020-04-10 14:24:42 -04:00
interface UnderlyingSource < R = any > {
cancel? : ReadableStreamErrorCallback ;
pull? : ReadableStreamDefaultControllerCallback < R > ;
start? : ReadableStreamDefaultControllerCallback < R > ;
type ? : undefined ;
}
interface ReadableStreamErrorCallback {
( reason : any ) : void | PromiseLike < void > ;
}
interface ReadableStreamDefaultControllerCallback < R > {
( controller : ReadableStreamDefaultController < R > ) : void | PromiseLike < void > ;
}
2020-04-22 10:06:51 -04:00
interface ReadableStreamDefaultController < R = any > {
readonly desiredSize : number | null ;
close ( ) : void ;
enqueue ( chunk : R ) : void ;
error ( error? : any ) : void ;
}
interface ReadableByteStreamController {
readonly byobRequest : undefined ;
readonly desiredSize : number | null ;
2020-04-10 14:24:42 -04:00
close ( ) : void ;
2020-04-22 10:06:51 -04:00
enqueue ( chunk : ArrayBufferView ) : void ;
error ( error? : any ) : void ;
}
interface PipeOptions {
preventAbort? : boolean ;
preventCancel? : boolean ;
preventClose? : boolean ;
signal? : AbortSignal ;
}
interface QueuingStrategySizeCallback < T = any > {
( chunk : T ) : number ;
}
interface QueuingStrategy < T = any > {
highWaterMark? : number ;
size? : QueuingStrategySizeCallback < T > ;
2020-04-10 14:24:42 -04:00
}
2020-04-30 10:40:10 -04:00
/ * * T h i s S t r e a m s A P I i n t e r f a c e p r o v i d e s a b u i l t - i n b y t e l e n g t h q u e u i n g s t r a t e g y
* that can be used when constructing streams . * /
declare class CountQueuingStrategy implements QueuingStrategy {
constructor ( options : { highWaterMark : number } ) ;
highWaterMark : number ;
size ( chunk : any ) : 1 ;
}
declare class ByteLengthQueuingStrategy
implements QueuingStrategy < ArrayBufferView > {
constructor ( options : { highWaterMark : number } ) ;
highWaterMark : number ;
size ( chunk : ArrayBufferView ) : number ;
}
2020-04-10 14:24:42 -04:00
/ * * T h i s S t r e a m s A P I i n t e r f a c e r e p r e s e n t s a r e a d a b l e s t r e a m o f b y t e d a t a . T h e
* Fetch API offers a concrete instance of a ReadableStream through the body
* property of a Response object . * /
interface ReadableStream < R = any > {
readonly locked : boolean ;
cancel ( reason? : any ) : Promise < void > ;
2020-04-22 10:06:51 -04:00
getIterator ( options ? : { preventCancel? : boolean } ) : AsyncIterableIterator < R > ;
2020-04-10 14:24:42 -04:00
// getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
getReader ( ) : ReadableStreamDefaultReader < R > ;
2020-04-22 10:06:51 -04:00
pipeThrough < T > (
{
writable ,
readable ,
} : {
writable : WritableStream < R > ;
readable : ReadableStream < T > ;
} ,
2020-07-14 15:24:17 -04:00
options? : PipeOptions ,
2020-04-22 10:06:51 -04:00
) : ReadableStream < T > ;
pipeTo ( dest : WritableStream < R > , options? : PipeOptions ) : Promise < void > ;
2020-04-10 14:24:42 -04:00
tee ( ) : [ ReadableStream < R > , ReadableStream < R > ] ;
2020-04-22 10:06:51 -04:00
[ Symbol . asyncIterator ] ( options ? : {
preventCancel? : boolean ;
} ) : AsyncIterableIterator < R > ;
2020-04-10 14:24:42 -04:00
}
2020-04-22 10:06:51 -04:00
declare var ReadableStream : {
2020-04-10 14:24:42 -04:00
prototype : ReadableStream ;
2020-04-22 10:06:51 -04:00
new (
underlyingSource : UnderlyingByteSource ,
2020-07-14 15:24:17 -04:00
strategy ? : { highWaterMark? : number ; size? : undefined } ,
2020-04-22 10:06:51 -04:00
) : ReadableStream < Uint8Array > ;
new < R = any > (
underlyingSource? : UnderlyingSource < R > ,
2020-07-14 15:24:17 -04:00
strategy? : QueuingStrategy < R > ,
2020-04-22 10:06:51 -04:00
) : ReadableStream < R > ;
2020-04-10 14:24:42 -04:00
} ;
2020-04-30 10:40:10 -04:00
interface WritableStreamDefaultControllerCloseCallback {
( ) : void | PromiseLike < void > ;
}
interface WritableStreamDefaultControllerStartCallback {
( controller : WritableStreamDefaultController ) : void | PromiseLike < void > ;
}
interface WritableStreamDefaultControllerWriteCallback < W > {
2020-07-14 15:24:17 -04:00
( chunk : W , controller : WritableStreamDefaultController ) :
| void
| PromiseLike <
void
> ;
2020-04-30 10:40:10 -04:00
}
interface WritableStreamErrorCallback {
( reason : any ) : void | PromiseLike < void > ;
}
interface UnderlyingSink < W = any > {
abort? : WritableStreamErrorCallback ;
close? : WritableStreamDefaultControllerCloseCallback ;
start? : WritableStreamDefaultControllerStartCallback ;
type ? : undefined ;
write? : WritableStreamDefaultControllerWriteCallback < W > ;
}
/ * * T h i s S t r e a m s A P I i n t e r f a c e p r o v i d e s a s t a n d a r d a b s t r a c t i o n f o r w r i t i n g
* streaming data to a destination , known as a sink . This object comes with
* built - in backpressure and queuing . * /
declare class WritableStream < W = any > {
constructor (
underlyingSink? : UnderlyingSink < W > ,
2020-07-14 15:24:17 -04:00
strategy? : QueuingStrategy < W > ,
2020-04-30 10:40:10 -04:00
) ;
2020-04-10 14:24:42 -04:00
readonly locked : boolean ;
abort ( reason? : any ) : Promise < void > ;
2020-04-30 10:40:10 -04:00
close ( ) : Promise < void > ;
2020-04-10 14:24:42 -04:00
getWriter ( ) : WritableStreamDefaultWriter < W > ;
}
2020-04-30 10:40:10 -04:00
/ * * T h i s S t r e a m s A P I i n t e r f a c e r e p r e s e n t s a c o n t r o l l e r a l l o w i n g c o n t r o l o f a
* WritableStream ' s state . When constructing a WritableStream , the underlying
* sink is given a corresponding WritableStreamDefaultController instance to
* manipulate . * /
interface WritableStreamDefaultController {
error ( error? : any ) : void ;
}
/ * * T h i s S t r e a m s A P I i n t e r f a c e i s t h e o b j e c t r e t u r n e d b y
* WritableStream . getWriter ( ) and once created locks the < writer to the
* WritableStream ensuring that no other streams can write to the underlying
* sink . * /
2020-04-10 14:24:42 -04:00
interface WritableStreamDefaultWriter < W = any > {
readonly closed : Promise < void > ;
readonly desiredSize : number | null ;
readonly ready : Promise < void > ;
abort ( reason? : any ) : Promise < void > ;
close ( ) : Promise < void > ;
releaseLock ( ) : void ;
write ( chunk : W ) : Promise < void > ;
}
2020-05-03 15:10:52 -04:00
declare class TransformStream < I = any , O = any > {
constructor (
transformer? : Transformer < I , O > ,
writableStrategy? : QueuingStrategy < I > ,
2020-07-14 15:24:17 -04:00
readableStrategy? : QueuingStrategy < O > ,
2020-05-03 15:10:52 -04:00
) ;
readonly readable : ReadableStream < O > ;
readonly writable : WritableStream < I > ;
}
interface TransformStreamDefaultController < O = any > {
readonly desiredSize : number | null ;
enqueue ( chunk : O ) : void ;
error ( reason? : any ) : void ;
terminate ( ) : void ;
}
interface Transformer < I = any , O = any > {
flush? : TransformStreamDefaultControllerCallback < O > ;
readableType? : undefined ;
start? : TransformStreamDefaultControllerCallback < O > ;
transform? : TransformStreamDefaultControllerTransformCallback < I , O > ;
writableType? : undefined ;
}
interface TransformStreamDefaultControllerCallback < O > {
( controller : TransformStreamDefaultController < O > ) : void | PromiseLike < void > ;
}
interface TransformStreamDefaultControllerTransformCallback < I , O > {
(
chunk : I ,
2020-07-14 15:24:17 -04:00
controller : TransformStreamDefaultController < O > ,
2020-05-03 15:10:52 -04:00
) : void | PromiseLike < void > ;
}
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 ;
type BlobPart = BufferSource | Blob | string ;
interface BlobPropertyBag {
type ? : string ;
ending ? : "transparent" | "native" ;
2020-01-24 14:15:01 -05:00
}
2020-04-08 13:21:04 -04:00
/** 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. */
interface Blob {
readonly size : number ;
readonly type : string ;
arrayBuffer ( ) : Promise < ArrayBuffer > ;
slice ( start? : number , end? : number , contentType? : string ) : Blob ;
stream ( ) : ReadableStream ;
text ( ) : Promise < string > ;
}
declare const Blob : {
prototype : Blob ;
new ( blobParts? : BlobPart [ ] , options? : BlobPropertyBag ) : Blob ;
} ;
2020-04-10 09:51:17 -04:00
interface FilePropertyBag extends BlobPropertyBag {
lastModified? : number ;
}
/ * * P r o v i d e s i n f o r m a t i o n a b o u t f i l e s a n d a l l o w s J a v a S c r i p t i n a w e b p a g e t o
* access their content . * /
interface File extends Blob {
readonly lastModified : number ;
readonly name : string ;
}
declare const File : {
prototype : File ;
new ( fileBits : BlobPart [ ] , fileName : string , options? : FilePropertyBag ) : File ;
} ;
2020-04-08 13:21:04 -04:00
declare const isConsoleInstance : unique symbol ;
declare class Console {
indentLevel : number ;
[ isConsoleInstance ] : boolean ;
/** Writes the arguments to stdout */
log : ( . . . args : unknown [ ] ) = > void ;
/** Writes the arguments to stdout */
debug : ( . . . args : unknown [ ] ) = > void ;
/** Writes the arguments to stdout */
info : ( . . . args : unknown [ ] ) = > void ;
/** Writes the properties of the supplied `obj` to stdout */
dir : (
obj : unknown ,
options? : Partial < {
depth : number ;
indentLevel : number ;
2020-07-14 15:24:17 -04:00
} > ,
2020-04-08 13:21:04 -04:00
) = > void ;
2020-08-05 14:21:20 -04:00
/ * * D i s p l a y s a n i n t e r a c t i v e t r e e o f t h e d e s c e n d a n t e l e m e n t s o f
2020-04-08 13:21:04 -04:00
* the specified XML / HTML element . If it is not possible to display
* as an element the JavaScript Object view is shown instead .
* The output is presented as a hierarchical listing of expandable
* nodes that let you see the contents of child nodes .
*
* Since we write to stdout , we can ' t display anything interactive
* we just fall back to ` console.dir ` .
2020-08-05 14:21:20 -04:00
*
* > [ Console . dirxml ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Console/dirxml)
* > by Mozilla Contributors is licensed under CC - BY - SA 2.5 .
2020-01-24 14:15:01 -05:00
* /
2020-04-08 13:21:04 -04:00
dirxml : (
obj : unknown ,
options? : Partial < {
showHidden : boolean ;
depth : number ;
colors : boolean ;
indentLevel : number ;
2020-07-14 15:24:17 -04:00
} > ,
2020-04-08 13:21:04 -04:00
) = > void ;
/** Writes the arguments to stdout */
warn : ( . . . args : unknown [ ] ) = > void ;
/** Writes the arguments to stdout */
error : ( . . . args : unknown [ ] ) = > void ;
/ * * W r i t e s a n e r r o r m e s s a g e t o s t d o u t i f t h e a s s e r t i o n i s ` f a l s e ` . I f t h e
* assertion is ` true ` , nothing happens .
*
* ref : https : //console.spec.whatwg.org/#assert
2020-01-24 14:15:01 -05:00
* /
2020-04-08 13:21:04 -04:00
assert : ( condition? : boolean , . . . args : unknown [ ] ) = > void ;
count : ( label? : string ) = > void ;
countReset : ( label? : string ) = > void ;
table : ( data : unknown , properties? : string [ ] | undefined ) = > void ;
time : ( label? : string ) = > void ;
timeLog : ( label? : string , . . . args : unknown [ ] ) = > void ;
timeEnd : ( label? : string ) = > void ;
group : ( . . . label : unknown [ ] ) = > void ;
groupCollapsed : ( . . . label : unknown [ ] ) = > void ;
groupEnd : ( ) = > void ;
clear : ( ) = > void ;
trace : ( . . . args : unknown [ ] ) = > void ;
static [ Symbol . hasInstance ] ( instance : Console ) : boolean ;
2020-01-24 14:15:01 -05:00
}
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-04-10 09:51:17 -04:00
type FormDataEntryValue = File | string ;
/ * * P r o v i d e s a w a y t o e a s i l y c o n s t r u c t a s e t o f k e y / v a l u e p a i r s r e p r e s e n t i n g
* form fields and their values , which can then be easily sent using the
* XMLHttpRequest . send ( ) method . It uses the same format a form would use if the
* encoding type were set to "multipart/form-data" . * /
2020-04-10 14:24:42 -04:00
interface FormData extends DomIterable < string , FormDataEntryValue > {
2020-04-10 09:51:17 -04:00
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 ;
}
declare const FormData : {
prototype : FormData ;
// TODO(ry) FormData constructor is non-standard.
// new(form?: HTMLFormElement): FormData;
new ( ) : FormData ;
} ;
interface Body {
/** A simple getter used to expose a `ReadableStream` of the body contents. */
readonly body : ReadableStream < Uint8Array > | null ;
/ * * S t o r e s a ` B o o l e a n ` t h a t d e c l a r e s w h e t h e r t h e b o d y h a s b e e n u s e d i n a
* response yet .
* /
readonly bodyUsed : boolean ;
/ * * T a k e s a ` R e s p o n s e ` s t r e a m a n d r e a d s i t t o c o m p l e t i o n . I t r e t u r n s a p r o m i s e
* that resolves with an ` ArrayBuffer ` .
* /
arrayBuffer ( ) : Promise < ArrayBuffer > ;
/ * * T a k e s a ` R e s p o n s e ` s t r e a m a n d r e a d s i t t o c o m p l e t i o n . I t r e t u r n s a p r o m i s e
* that resolves with a ` Blob ` .
* /
blob ( ) : Promise < Blob > ;
/ * * T a k e s a ` R e s p o n s e ` s t r e a m a n d r e a d s i t t o c o m p l e t i o n . I t r e t u r n s a p r o m i s e
* that resolves with a ` FormData ` object .
* /
formData ( ) : Promise < FormData > ;
/ * * T a k e s a ` R e s p o n s e ` s t r e a m a n d r e a d s i t t o c o m p l e t i o n . I t r e t u r n s a p r o m i s e
* that resolves with the result of parsing the body text as JSON .
* /
json ( ) : Promise < any > ;
/ * * T a k e s a ` R e s p o n s e ` s t r e a m a n d r e a d s i t t o c o m p l e t i o n . I t r e t u r n s a p r o m i s e
* that resolves with a ` USVString ` ( text ) .
* /
text ( ) : Promise < string > ;
}
type HeadersInit = Headers | string [ ] [ ] | Record < string , string > ;
/ * * T h i s F e t c h A P I i n t e r f a c e a l l o w s y o u t o p e r f o r m v a r i o u s a c t i o n s o n H T T P
* 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 . * /
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 ,
2020-07-14 15:24:17 -04:00
thisArg? : any ,
2020-04-10 09:51:17 -04:00
) : void ;
2020-01-24 14:15:01 -05:00
}
2020-04-10 14:24:42 -04:00
interface Headers extends DomIterable < string , string > {
2020-04-10 09:51:17 -04:00
/ * * A p p e n d s a n e w v a l u e o n t o a n e x i s t i n g h e a d e r i n s i d e a ` H e a d e r s ` o b j e c t , o r
* 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 ;
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l k e y / v a l u e p a i r s
* contained in this Headers object . The both the key and value of each pairs
* are ByteString objects .
* /
entries ( ) : IterableIterator < [ string , string ] > ;
/ * * R e t u r n s a ` B y t e S t r i n g ` s e q u e n c e o f a l l t h e v a l u e s o f a h e a d e r w i t h i n a
* ` Headers ` object with a given name .
* /
get ( name : string ) : string | null ;
/ * * R e t u r n s a b o o l e a n s t a t i n g w h e t h e r a ` H e a d e r s ` o b j e c t c o n t a i n s a c e r t a i n
* header .
* /
has ( name : string ) : boolean ;
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l k e y s c o n t a i n e d i n
* this Headers object . The keys are ByteString objects .
* /
keys ( ) : IterableIterator < string > ;
/ * * S e t s a n e w v a l u e f o r a n e x i s t i n g h e a d e r i n s i d e a H e a d e r s o b j e c t , o r a d d s
* the header if it does not already exist .
* /
set ( name : string , value : string ) : void ;
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l v a l u e s c o n t a i n e d i n
* this Headers object . The values are ByteString objects .
* /
values ( ) : IterableIterator < string > ;
forEach (
callbackfn : ( value : string , key : string , parent : this ) = > void ,
2020-07-14 15:24:17 -04:00
thisArg? : any ,
2020-04-10 09:51:17 -04:00
) : void ;
/ * * T h e S y m b o l . i t e r a t o r w e l l - k n o w n s y m b o l s p e c i f i e s t h e d e f a u l t
* iterator for this Headers object
* /
[ Symbol . iterator ] ( ) : IterableIterator < [ string , string ] > ;
}
declare const Headers : {
prototype : Headers ;
new ( init? : HeadersInit ) : Headers ;
} ;
type RequestInfo = Request | string ;
type RequestCache =
| "default"
| "force-cache"
| "no-cache"
| "no-store"
| "only-if-cached"
| "reload" ;
type RequestCredentials = "include" | "omit" | "same-origin" ;
type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin" ;
type RequestRedirect = "error" | "follow" | "manual" ;
type ReferrerPolicy =
| ""
| "no-referrer"
| "no-referrer-when-downgrade"
| "origin"
| "origin-when-cross-origin"
| "same-origin"
| "strict-origin"
| "strict-origin-when-cross-origin"
| "unsafe-url" ;
type BodyInit =
| Blob
| BufferSource
| FormData
| URLSearchParams
| ReadableStream < Uint8Array >
| string ;
type RequestDestination =
| ""
| "audio"
| "audioworklet"
| "document"
| "embed"
| "font"
| "image"
| "manifest"
| "object"
| "paintworklet"
| "report"
| "script"
| "sharedworker"
| "style"
| "track"
| "video"
| "worker"
| "xslt" ;
interface RequestInit {
/ * *
* A BodyInit object or null to set request ' s body .
* /
body? : BodyInit | null ;
/ * *
* A string indicating how the request will interact with the browser ' s cache
* to set request ' s cache .
* /
cache? : RequestCache ;
/ * *
* A string indicating whether credentials will be sent with the request
* always , never , or only when sent to a same - origin URL . Sets request ' s
* credentials .
* /
credentials? : RequestCredentials ;
/ * *
* A Headers object , an object literal , or an array of two - item arrays to set
* request ' s headers .
* /
headers? : HeadersInit ;
/ * *
* A cryptographic hash of the resource to be fetched by request . Sets
* request ' s integrity .
* /
integrity? : string ;
/ * *
* A boolean to set request ' s keepalive .
* /
keepalive? : boolean ;
/ * *
* A string to set request ' s method .
* /
method? : string ;
/ * *
* A string to indicate whether the request will use CORS , or will be
* restricted to same - origin URLs . Sets request ' s mode .
* /
mode? : RequestMode ;
/ * *
* A string indicating whether request follows redirects , results in an error
* upon encountering a redirect , or returns the redirect ( in an opaque
* fashion ) . Sets request ' s redirect .
* /
redirect? : RequestRedirect ;
/ * *
* A string whose value is a same - origin URL , "about:client" , or the empty
* string , to set request ' s referrer .
* /
referrer? : string ;
/ * *
* A referrer policy to set request ' s referrerPolicy .
* /
referrerPolicy? : ReferrerPolicy ;
/ * *
* An AbortSignal to set request ' s signal .
* /
signal? : AbortSignal | null ;
/ * *
* Can only be null . Used to disassociate request from any Window .
* /
window ? : any ;
}
/** This Fetch API interface represents a resource request. */
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
* fetching .
* /
readonly cache : RequestCache ;
/ * *
* Returns the credentials mode associated with request , which is a string
* indicating whether credentials will be sent with the request always , never ,
* or only when sent to a same - origin URL .
* /
readonly credentials : RequestCredentials ;
/ * *
* Returns the kind of resource requested by request , e . g . , "document" or "script" .
* /
readonly destination : RequestDestination ;
/ * *
* Returns a Headers object consisting of the headers associated with request .
* Note that headers added in the network layer by the user agent will not be
* accounted for in this object , e . g . , the "Host" header .
* /
readonly headers : Headers ;
/ * *
* Returns request ' s subresource integrity metadata , which is a cryptographic
* hash of the resource being fetched . Its value consists of multiple hashes
* separated by whitespace . [ SRI ]
* /
readonly integrity : string ;
/ * *
* Returns a boolean indicating whether or not request is for a history
2020-05-14 02:58:48 -04:00
* navigation ( a . k . a . back - forward navigation ) .
2020-04-10 09:51:17 -04:00
* /
readonly isHistoryNavigation : boolean ;
/ * *
* Returns a boolean indicating whether or not request is for a reload
* navigation .
* /
readonly isReloadNavigation : boolean ;
/ * *
* Returns a boolean indicating whether or not request can outlive the global
* in which it was created .
* /
readonly keepalive : boolean ;
/ * *
* Returns request ' s HTTP method , which is "GET" by default .
* /
readonly method : string ;
/ * *
* Returns the mode associated with request , which is a string indicating
* whether the request will use CORS , or will be restricted to same - origin
* URLs .
* /
readonly mode : RequestMode ;
/ * *
* Returns the redirect mode associated with request , which is a string
* indicating how redirects for the request will be handled during fetching . A
* request will follow redirects by default .
* /
readonly redirect : RequestRedirect ;
/ * *
* Returns the referrer of request . Its value can be a same - origin URL if
* explicitly set in init , the empty string to indicate no referrer , and
* "about:client" when defaulting to the global ' s default . This is used during
* fetching to determine the value of the ` Referer ` header of the request
* being made .
* /
readonly referrer : string ;
/ * *
* Returns the referrer policy associated with request . This is used during
* fetching to compute the value of the request ' s referrer .
* /
readonly referrerPolicy : ReferrerPolicy ;
/ * *
* Returns the signal associated with request , which is an AbortSignal object
* indicating whether or not request has been aborted , and its abort event
* handler .
* /
readonly signal : AbortSignal ;
/ * *
* Returns the URL of request as a string .
* /
readonly url : string ;
clone ( ) : Request ;
}
declare const Request : {
prototype : Request ;
new ( input : RequestInfo , init? : RequestInit ) : Request ;
} ;
2020-05-25 12:55:16 -04:00
interface ResponseInit {
headers? : HeadersInit ;
status? : number ;
statusText? : string ;
}
2020-04-10 09:51:17 -04:00
type ResponseType =
| "basic"
| "cors"
| "default"
| "error"
| "opaque"
| "opaqueredirect" ;
/** This Fetch API interface represents the response to a request. */
interface Response extends Body {
readonly headers : Headers ;
readonly ok : boolean ;
readonly redirected : boolean ;
readonly status : number ;
readonly statusText : string ;
readonly trailer : Promise < Headers > ;
readonly type : ResponseType ;
readonly url : string ;
clone ( ) : Response ;
}
declare const Response : {
prototype : Response ;
2020-05-25 12:55:16 -04:00
new ( body? : BodyInit | null , init? : ResponseInit ) : Response ;
2020-04-10 09:51:17 -04:00
error ( ) : Response ;
redirect ( url : string , status? : number ) : Response ;
} ;
2020-05-30 11:19:16 -04:00
/ * * F e t c h a r e s o u r c e f r o m t h e n e t w o r k . I t r e t u r n s a P r o m i s e t h a t r e s o l v e s t o t h e
* Response to that request , whether it is successful or not .
*
* const response = await fetch ( "http://my.json.host/data.json" ) ;
* console . log ( response . status ) ; // e.g. 200
* console . log ( response . statusText ) ; // e.g. "OK"
* const jsonData = await response . json ( ) ;
* /
2020-04-10 09:51:17 -04:00
declare function fetch (
input : Request | URL | string ,
2020-07-14 15:24:17 -04:00
init? : RequestInit ,
2020-04-10 09:51:17 -04:00
) : Promise < Response > ;
2020-04-07 17:11:38 -04:00
interface URLSearchParams {
/ * * A p p e n d s a s p e c i f i e d k e y / v a l u e p a i r a s a n e w s e a r c h p a r a m e t e r .
*
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
/ * * D e l e t e s t h e g i v e n s e a r c h p a r a m e t e r a n d i t s a s s o c i a t e d v a l u e ,
* 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
/ * * R e t u r n s a l l t h e v a l u e s a s s o c i a t e d w i t h a g i v e n s e a r c h p a r a m e t e r
* 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
/ * * R e t u r n s t h e f i r s t v a l u e a s s o c i a t e d t o t h e g i v e n s e a r c h p a r a m e t e r .
*
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
/ * * R e t u r n s a B o o l e a n t h a t i n d i c a t e s w h e t h e r a p a r a m e t e r w i t h t h e
* 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
/ * * S e t s t h e v a l u e a s s o c i a t e d w i t h a g i v e n s e a r c h p a r a m e t e r t o t h e
* 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
/ * * S o r t a l l k e y / v a l u e p a i r s c o n t a i n e d i n t h i s o b j e c t i n p l a c e a n d
* 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
/ * * C a l l s a f u n c t i o n f o r e a c h e l e m e n t c o n t a i n e d i n t h i s o b j e c t i n
* 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
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l k e y s c o n t a i n e d
* 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
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l v a l u e s c o n t a i n e d
* 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
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l k e y / v a l u e
* 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
/ * * R e t u r n s a n i t e r a t o r a l l o w i n g t o g o t h r o u g h a l l k e y / v a l u e
* 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
/ * * R e t u r n s a q u e r y s t r i n g s u i t a b l e f o r u s e i n a U R L .
*
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
declare const URLSearchParams : {
prototype : URLSearchParams ;
new (
2020-07-14 15:24:17 -04:00
init? : string [ ] [ ] | Record < string , string > | string | URLSearchParams ,
2020-04-07 17:11:38 -04:00
) : URLSearchParams ;
toString ( ) : string ;
} ;
/** The URL interface represents an object providing static methods used for creating object URLs. */
interface URL {
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-04-07 17:11:38 -04:00
declare const URL : {
prototype : URL ;
2020-07-06 17:39:13 -04:00
new ( url : string , base? : string | URL ) : URL ;
2020-04-07 17:11:38 -04:00
createObjectURL ( object : any ) : string ;
revokeObjectURL ( url : string ) : void ;
} ;
2020-04-13 12:34:32 -04:00
interface MessageEventInit extends EventInit {
data? : any ;
origin? : string ;
lastEventId? : string ;
}
declare class MessageEvent extends Event {
readonly data : any ;
readonly origin : string ;
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-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 ;
2020-04-16 17:40:29 -04:00
/ * * U N S T A B L E : N e w A P I . E x p e c t m a n y c h a n g e s ; m o s t l i k e l y t h i s
* field will be made into an object for more granular
* configuration of worker thread ( permissions , import map , etc . ) .
*
* Set to ` true ` to make ` Deno ` namespace and all of its methods
* available to worker thread .
*
* Currently worker inherits permissions from main thread ( permissions
* given using ` --allow-* ` flags ) .
* Configurable permissions are on the roadmap to be implemented .
*
* Example :
*
2020-05-16 15:23:48 -04:00
* ` ` ` ts
* // mod.ts
2020-06-09 08:33:52 -04:00
* const worker = new Worker (
* new URL ( "deno_worker.ts" , import . meta . url ) . href ,
* { type : "module" , deno : true }
* ) ;
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
*
* /
deno? : boolean ;
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-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 [ ] ;
declare interface Performance {
/** 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 ;
/ * * S t o r e s t h e ` D O M H i g h R e s T i m e S t a m p ` d u r a t i o n b e t w e e n t w o m a r k s a l o n g w i t h t h e
* 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 ;
/ * * S t o r e s t h e ` D O M H i g h R e s T i m e S t a m p ` d u r a t i o n b e t w e e n t w o m a r k s a l o n g w i t h t h e
* 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
/ * * R e t u r n s a c u r r e n t t i m e f r o m D e n o ' s s t a r t i n m i l l i s e c o n d s .
*
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 ;
}
declare const Performance : {
prototype : Performance ;
new ( ) : Performance ;
} ;
declare const performance : Performance ;
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 ;
/ * * T i m e s t a m p t o b e u s e d a s t h e s t a r t t i m e o r s t r i n g t o b e u s e d a s s t a r t
* 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 ;
}
/ * * E n c a p s u l a t e s a s i n g l e p e r f o r m a n c e m e t r i c t h a t i s p a r t o f t h e p e r f o r m a n c e
* 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 ;
}
/ * * ` P e r f o r m a n c e M a r k ` i s a n a b s t r a c t i n t e r f a c e f o r ` P e r f o r m a n c e E n t r y ` o b j e c t s
* 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 ) ;
}
/ * * ` P e r f o r m a n c e M e a s u r e ` i s a n a b s t r a c t i n t e r f a c e f o r ` P e r f o r m a n c e E n t r y ` o b j e c t s
* 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-04-09 06:03:44 -04:00
/ * * E v e n t s m e a s u r i n g p r o g r e s s o f a n u n d e r l y i n g p r o c e s s , l i k e a n H T T P r e q u e s t
* ( for an XMLHttpRequest , or the loading of the underlying resource of an
* < img > , < audio > , < video > , < style > or < link > ) . * /
interface ProgressEvent < T extends EventTarget = EventTarget > extends Event {
readonly lengthComputable : boolean ;
readonly loaded : number ;
readonly target : T | null ;
readonly total : number ;
}
interface CustomEventInit < T = any > extends EventInit {
detail? : T ;
}
2020-04-11 11:42:02 -04:00
declare class CustomEvent < T = any > extends Event {
constructor ( typeArg : string , eventInitDict? : CustomEventInit < T > ) ;
/ * * R e t u r n s a n y c u s t o m d a t a e v e n t w a s c r e a t e d w i t h . T y p i c a l l y u s e d f o r
* synthetic events . * /
readonly detail : T ;
}
2020-04-10 09:51:17 -04:00
2020-04-15 10:10:49 -04:00
/ * * A c o n t r o l l e r o b j e c t t h a t a l l o w s y o u t o a b o r t o n e o r m o r e D O M r e q u e s t s a s a n d
* when desired . * /
declare class AbortController {
/** Returns the AbortSignal object associated with this object. */
readonly signal : AbortSignal ;
/ * * I n v o k i n g t h i s m e t h o d w i l l s e t t h i s o b j e c t ' s A b o r t S i g n a l ' s a b o r t e d f l a g a n d
* signal to any observers that the associated activity is to be aborted . * /
abort ( ) : void ;
}
2020-04-10 09:51:17 -04:00
interface AbortSignalEventMap {
abort : Event ;
}
/ * * A s i g n a l o b j e c t t h a t a l l o w s y o u t o c o m m u n i c a t e w i t h a D O M r e q u e s t ( s u c h a s a
* Fetch ) and abort it if required via an AbortController object . * /
interface AbortSignal extends EventTarget {
2020-04-15 10:10:49 -04:00
/ * * R e t u r n s t r u e i f t h i s A b o r t S i g n a l ' s A b o r t C o n t r o l l e r h a s s i g n a l e d t o a b o r t ,
* and false otherwise . * /
2020-04-10 09:51:17 -04:00
readonly aborted : boolean ;
onabort : ( ( this : AbortSignal , ev : Event ) = > any ) | null ;
addEventListener < K extends keyof AbortSignalEventMap > (
type : K ,
listener : ( this : AbortSignal , ev : AbortSignalEventMap [ K ] ) = > any ,
2020-07-14 15:24:17 -04:00
options? : boolean | AddEventListenerOptions ,
2020-04-10 09:51:17 -04:00
) : void ;
addEventListener (
type : string ,
listener : EventListenerOrEventListenerObject ,
2020-07-14 15:24:17 -04:00
options? : boolean | AddEventListenerOptions ,
2020-04-10 09:51:17 -04:00
) : void ;
removeEventListener < K extends keyof AbortSignalEventMap > (
type : K ,
listener : ( this : AbortSignal , ev : AbortSignalEventMap [ K ] ) = > any ,
2020-07-14 15:24:17 -04:00
options? : boolean | EventListenerOptions ,
2020-04-10 09:51:17 -04:00
) : void ;
removeEventListener (
type : string ,
listener : EventListenerOrEventListenerObject ,
2020-07-14 15:24:17 -04:00
options? : boolean | EventListenerOptions ,
2020-04-10 09:51:17 -04:00
) : void ;
}
declare const AbortSignal : {
prototype : AbortSignal ;
new ( ) : AbortSignal ;
} ;
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.
}