From 5591d87ee8ccd9ffdd605ae2f98dbfc309bdac7f Mon Sep 17 00:00:00 2001 From: Jasmin Bom Date: Sat, 30 Mar 2019 16:14:57 +0100 Subject: [PATCH] Fix a lot of event types CC jsmnbom/definitelytyped-firefox-webext-browser#20 and jsmnbom/definitelytyped-firefox-webext-browser#19 --- .../firefox-webext-browser-tests.ts | 23 ++ types/firefox-webext-browser/index.d.ts | 206 ++++++++++++++---- 2 files changed, 182 insertions(+), 47 deletions(-) diff --git a/types/firefox-webext-browser/firefox-webext-browser-tests.ts b/types/firefox-webext-browser/firefox-webext-browser-tests.ts index 26ae079172..2ea924cfd3 100644 --- a/types/firefox-webext-browser/firefox-webext-browser-tests.ts +++ b/types/firefox-webext-browser/firefox-webext-browser-tests.ts @@ -12,3 +12,26 @@ const port = browser.runtime.connect(); port.postMessage(); // $ExpectError browser.bookmarks.getTree(); + +browser.proxy.onProxyError.addListener(error => { + console.error(`Proxy error: ${error.message}`); +}); + +browser.proxy.onRequest.addListener(d => { + console.log(d.requestId); +}, { + urls: ['test'] +}, ["requestHeaders"]); + +browser.webNavigation.onBeforeNavigate.addListener(d => { + console.log(d.url, d.timeStamp); +}, { + url: [ + {hostContains: 'something'}, + {hostPrefix: 'somethineelse'} + ] +}); + +browser.runtime.connect().onDisconnect.addListener(() => { + console.log('ok'); +}); diff --git a/types/firefox-webext-browser/index.d.ts b/types/firefox-webext-browser/index.d.ts index c0a8896e56..77e045fa12 100644 --- a/types/firefox-webext-browser/index.d.ts +++ b/types/firefox-webext-browser/index.d.ts @@ -5,16 +5,14 @@ // TypeScript Version: 2.9 // Generated using script at github.com/jsmnbom/definitelytyped-firefox-webext-browser -interface WebExtEventBase any, TCallback> { - addListener: TAddListener; +interface WebExtEvent any> { + addListener(cb: TCallback): void; removeListener(cb: TCallback): void; hasListener(cb: TCallback): boolean; } -type WebExtEvent any> = WebExtEventBase<(callback: TCallback) => void, TCallback>; - interface Window { browser: typeof browser; } @@ -2676,7 +2674,7 @@ declare namespace browser.proxy { | "manual" | "autoConfig"; - type _ProxyOnRequestEvent void> = WebExtEventBase<(callback: T, filter: webRequest.RequestFilter, extraInfoSpec?: Array<"requestHeaders">) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: webRequest.RequestFilter, extraInfoSpec?: Array<"requestHeaders">): void; + + removeListener(cb: TCallback): void; + + hasListener(cb: TCallback): boolean; + } /* proxy properties */ /** Configures proxy settings. This setting's value is an object of type ProxyConfig. */ @@ -2736,10 +2740,10 @@ declare namespace browser.proxy { const onRequest: _ProxyOnRequestEvent; /** Notifies about proxy script errors. */ - const onError: WebExtEvent<(error: object) => void>; + const onError: WebExtEvent<(error: Error) => void>; /** Please use `proxy.onError`. */ - const onProxyError: WebExtEvent<(error: object) => void>; + const onProxyError: WebExtEvent<(error: Error) => void>; } /** @@ -2755,8 +2759,8 @@ declare namespace browser.runtime { interface Port { name: string; disconnect: () => void; - onDisconnect: events.Event; - onMessage: events.Event; + onDisconnect: WebExtEvent<() => void>; + onMessage: WebExtEvent<() => void>; postMessage: (message: object) => void; /** This property will **only** be present on ports passed to onConnect/onConnectExternal listeners. */ sender?: MessageSender; @@ -3188,7 +3192,7 @@ declare namespace browser.storage { * @param changes Object mapping each key that changed to its corresponding `storage.StorageChange` for that item. * @param areaName The name of the storage area (`"sync"`, `"local"` or `"managed"`) the changes are for. */ - const onChanged: WebExtEvent<(changes: {[key: string]: StorageChange}, areaName: string) => void>; + const onChanged: WebExtEvent<(changes: StorageChange, areaName: string) => void>; } /** @@ -3609,7 +3613,7 @@ declare namespace browser.webNavigation { url: events.UrlFilter[]; } - type _WebNavigationOnBeforeNavigateEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnCommittedEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnDOMContentLoadedEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnCompletedEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnErrorOccurredEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnCreatedNavigationTargetEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnReferenceFragmentUpdatedEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; - type _WebNavigationOnHistoryStateUpdatedEvent void> = WebExtEventBase<(callback: T, filters?: EventUrlFilters) => void, T>; + }) => void> { + addListener(cb: TCallback, filters?: EventUrlFilters): void; + + removeListener(cb: TCallback): void; + + hasListener(cb: TCallback): boolean; + } /* webNavigation functions */ /** @@ -4115,7 +4167,7 @@ declare namespace browser.webRequest { | "TLSv1.3" | "unknown"; - type _WebRequestOnBeforeRequestEvent BlockingResponse | Promise | void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnBeforeRequestOptions[]) => void, T>; + }) => BlockingResponse | Promise | void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnBeforeRequestOptions[]): void; - type _WebRequestOnBeforeSendHeadersEvent BlockingResponse | Promise | void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnBeforeSendHeadersOptions[]) => void, T>; + }) => BlockingResponse | Promise | void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnBeforeSendHeadersOptions[]): void; - type _WebRequestOnSendHeadersEvent void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnSendHeadersOptions[]) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnSendHeadersOptions[]): void; - type _WebRequestOnHeadersReceivedEvent BlockingResponse | Promise | void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnHeadersReceivedOptions[]) => void, T>; + }) => BlockingResponse | Promise | void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnHeadersReceivedOptions[]): void; - type _WebRequestOnAuthRequiredEvent BlockingResponse | Promise | void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnAuthRequiredOptions[]) => void, T>; + }) => BlockingResponse | Promise | void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnAuthRequiredOptions[]): void; - type _WebRequestOnResponseStartedEvent void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnResponseStartedOptions[]) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnResponseStartedOptions[]): void; - type _WebRequestOnBeforeRedirectEvent void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnBeforeRedirectOptions[]) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnBeforeRedirectOptions[]): void; - type _WebRequestOnCompletedEvent void> = WebExtEventBase<(callback: T, filter: RequestFilter, extraInfoSpec?: OnCompletedOptions[]) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: RequestFilter, extraInfoSpec?: OnCompletedOptions[]): void; - type _WebRequestOnErrorOccurredEvent void> = WebExtEventBase<(callback: T, filter: RequestFilter) => void, T>; + }) => void> { + addListener(cb: TCallback, filter: RequestFilter): void; + + removeListener(cb: TCallback): void; + + hasListener(cb: TCallback): boolean; + } /* webRequest properties */ /** @@ -7118,7 +7224,7 @@ declare namespace browser.tabs { | "Window" | "Application"; - type _TabsOnUpdatedEvent void> = WebExtEventBase<(callback: T, filter?: UpdateFilter) => void, T>; + }, tab: Tab) => void> { + addListener(cb: TCallback, filter?: UpdateFilter): void; + + removeListener(cb: TCallback): void; + + hasListener(cb: TCallback): boolean; + } /* tabs properties */ /** An ID which represents the absence of a browser tab. */