From 202e7fa6ad366ee56a6d070e94eaecb6dbc745bf Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Thu, 9 Jul 2020 19:00:18 +1000 Subject: feat: move unstable Deno.permissions to navigator.permissions (#6244) --- cli/js/lib.deno.shared_globals.d.ts | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'cli/js/lib.deno.shared_globals.d.ts') diff --git a/cli/js/lib.deno.shared_globals.d.ts b/cli/js/lib.deno.shared_globals.d.ts index 0c32bd0ed..3492c0da1 100644 --- a/cli/js/lib.deno.shared_globals.d.ts +++ b/cli/js/lib.deno.shared_globals.d.ts @@ -1556,6 +1556,60 @@ declare const AbortSignal: { new (): AbortSignal; }; +type PermissionState = "denied" | "granted" | "prompt"; + +interface PermissionStatusEventMap { + change: Event; +} + +interface PermissionStatus extends EventTarget { + onchange: ((this: PermissionStatus, ev: Event) => any) | null; + readonly state: PermissionState; + addEventListener( + type: K, + listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, + options?: boolean | AddEventListenerOptions + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions + ): void; + removeEventListener( + type: K, + listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, + options?: boolean | EventListenerOptions + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions + ): void; +} + +/** Deno does not currently support any of the browser permissions, and so the + * `name` property of the global types is `undefined`. The Deno permissions + * that are supported are defined in the `lib.deno.ns.d.ts` and pull from the + * `Deno` namespace. */ +declare interface PermissionDescriptor { + name: undefined; +} + +declare interface Permissions { + query(permissionDesc: PermissionDescriptor): Promise; +} + +declare const Permissions: { + prototype: Permissions; + new (): Permissions; +}; + +declare class Navigator { + readonly permissions: Permissions; +} + +declare const navigator: Navigator; + interface ErrorConstructor { /** See https://v8.dev/docs/stack-trace-api#stack-trace-collection-for-custom-exceptions. */ // eslint-disable-next-line @typescript-eslint/ban-types -- cgit v1.2.3