// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. /// /// /// /// /// /// interface WindowEventMap { "error": ErrorEvent; "unhandledrejection": PromiseRejectionEvent; } declare class Window extends EventTarget { new(): Window; readonly window: Window & typeof globalThis; readonly self: Window & typeof globalThis; onerror: ((this: Window, ev: ErrorEvent) => any) | null; onload: ((this: Window, ev: Event) => any) | null; onunload: ((this: Window, ev: Event) => any) | null; onunhandledrejection: | ((this: Window, ev: PromiseRejectionEvent) => any) | null; close: () => void; readonly closed: boolean; alert: (message?: string) => void; confirm: (message?: string) => boolean; prompt: (message?: string, defaultValue?: string) => string | null; Deno: typeof Deno; Navigator: typeof Navigator; navigator: Navigator; Location: typeof Location; location: Location; localStorage: Storage; sessionStorage: Storage; addEventListener( type: K, listener: ( this: Window, ev: WindowEventMap[K], ) => any, options?: boolean | AddEventListenerOptions, ): void; addEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions, ): void; removeEventListener( type: K, listener: ( this: Window, ev: WindowEventMap[K], ) => any, options?: boolean | EventListenerOptions, ): void; removeEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions, ): void; } declare var window: Window & typeof globalThis; declare var self: Window & typeof globalThis; declare var onerror: ((this: Window, ev: ErrorEvent) => any) | null; declare var onload: ((this: Window, ev: Event) => any) | null; declare var onunload: ((this: Window, ev: Event) => any) | null; declare var onunhandledrejection: | ((this: Window, ev: PromiseRejectionEvent) => any) | null; declare var localStorage: Storage; declare var sessionStorage: Storage; declare class Navigator { constructor(); readonly gpu: GPU; readonly hardwareConcurrency: number; readonly userAgent: string; } declare var navigator: Navigator; /** * Shows the given message and waits for the enter key pressed. * If the stdin is not interactive, it does nothing. * @param message */ declare function alert(message?: string): void; /** * Shows the given message and waits for the answer. Returns the user's answer as boolean. * Only `y` and `Y` are considered as true. * If the stdin is not interactive, it returns false. * @param message */ declare function confirm(message?: string): boolean; /** * Shows the given message and waits for the user's input. Returns the user's input as string. * If the default value is given and the user inputs the empty string, then it returns the given * default value. * If the default value is not given and the user inputs the empty string, it returns null. * If the stdin is not interactive, it returns null. * @param message * @param defaultValue */ declare function prompt(message?: string, defaultValue?: string): string | null; /** Registers an event listener in the global scope, which will be called * synchronously whenever the event `type` is dispatched. * * ```ts * addEventListener('unload', () => { console.log('All finished!'); }); * ... * dispatchEvent(new Event('unload')); * ``` */ declare function addEventListener< K extends keyof WindowEventMap, >( type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions, ): void; declare function addEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions, ): void; /** Remove a previously registered event listener from the global scope * * ```ts * const listener = () => { console.log('hello'); }; * addEventListener('load', listener); * removeEventListener('load', listener); * ``` */ declare function removeEventListener< K extends keyof WindowEventMap, >( type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions, ): void; declare function removeEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions, ): void; // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is. // The types there must first be split into window, worker and global types. /** The location (URL) of the object it is linked to. Changes done on it are * reflected on the object it relates to. Accessible via * `globalThis.location`. */ declare class Location { constructor(); /** Returns a DOMStringList object listing the origins of the ancestor * browsing contexts, from the parent browsing context to the top-level * browsing context. * * Always empty in Deno. */ readonly ancestorOrigins: DOMStringList; /** Returns the Location object's URL's fragment (includes leading "#" if * non-empty). * * Cannot be set in Deno. */ hash: string; /** Returns the Location object's URL's host and port (if different from the * default port for the scheme). * * Cannot be set in Deno. */ host: string; /** Returns the Location object's URL's host. * * Cannot be set in Deno. */ hostname: string; /** Returns the Location object's URL. * * Cannot be set in Deno. */ href: string; toString(): string; /** Returns the Location object's URL's origin. */ readonly origin: string; /** Returns the Location object's URL's path. * * Cannot be set in Deno. */ pathname: string; /** Returns the Location object's URL's port. * * Cannot be set in Deno. */ port: string; /** Returns the Location object's URL's scheme. * * Cannot be set in Deno. */ protocol: string; /** Returns the Location object's URL's query (includes leading "?" if * non-empty). * * Cannot be set in Deno. */ search: string; /** Navigates to the given URL. * * Cannot be set in Deno. */ assign(url: string): void; /** Reloads the current page. * * Disabled in Deno. */ reload(): void; /** @deprecated */ reload(forcedReload: boolean): void; /** Removes the current page from the session history and navigates to the * given URL. * * Disabled in Deno. */ replace(url: string): void; } // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is. // The types there must first be split into window, worker and global types. declare var location: Location;