From de20e1914976cfa14072f07a0a25d5938fb4e478 Mon Sep 17 00:00:00 2001 From: Elbert Alias <77259+AliasIO@users.noreply.github.com> Date: Fri, 30 Sep 2022 08:53:15 +1000 Subject: [PATCH] Remove promisify references --- src/drivers/webextension/js/driver.js | 54 ++++++++++------------- src/drivers/webextension/js/popup.js | 7 ++- src/drivers/webextension/js/utils.js | 30 ++----------- src/drivers/webextension/manifest-v3.json | 8 ++-- 4 files changed, 34 insertions(+), 65 deletions(-) diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js index 9a426c192..e863ce8c6 100644 --- a/src/drivers/webextension/js/driver.js +++ b/src/drivers/webextension/js/driver.js @@ -10,7 +10,7 @@ const { resolve, getTechnology, } = Wappalyzer -const { agent, promisify, getOption, setOption, open, globEscape } = Utils +const { agent, getOption, setOption, open, globEscape } = Utils const expiry = 1000 * 60 * 60 * 24 @@ -93,7 +93,7 @@ const Driver = { chrome.tabs.onUpdated.addListener(async (id, { status, url }) => { if (status === 'complete') { - ;({ url } = await promisify(chrome.tabs, 'get', id)) + ;({ url } = await chrome.tabs.get(id)) } if (url) { @@ -335,7 +335,7 @@ const Driver = { }, async content(url, func, args) { - const [tab] = await promisify(chrome.tabs, 'query', { + const [tab] = await chrome.tabs.query({ url: globEscape(url), }) @@ -347,29 +347,23 @@ const Driver = { throw new Error(`Tab ${tab.id} not ready for sendMessage: ${tab.status}`) } - return new Promise((resolve, reject) => { - chrome.tabs.sendMessage( - tab.id, - { - source: 'driver.js', - func, - args: args ? (Array.isArray(args) ? args : [args]) : [], - }, - (response) => { - chrome.runtime.lastError - ? func === 'error' - ? resolve() - : Driver.error( - new Error( - `${ - chrome.runtime.lastError.message - }: Driver.${func}(${JSON.stringify(args)})` - ) - ) - : resolve(response) - } - ) + const response = await chrome.tabs.sendMessage(tab.id, { + source: 'driver.js', + func, + args: args ? (Array.isArray(args) ? args : [args]) : [], }) + + if (chrome.runtime.lastError && func !== 'error') { + Driver.error( + new Error( + `${chrome.runtime.lastError.message}: Driver.${func}(${JSON.stringify( + args + )})` + ) + ) + } else { + return response + } }, /** @@ -387,7 +381,7 @@ const Driver = { try { await new Promise((resolve) => setTimeout(resolve, 500)) - const [tab] = await promisify(chrome.tabs, 'query', { + const [tab] = await chrome.tabs.query({ url: globEscape(request.url), }) @@ -502,7 +496,7 @@ const Driver = { // ;( - await promisify(chrome.cookies, 'getAll', { + await chrome.cookies.getAll({ url, }) ).forEach( @@ -673,7 +667,7 @@ const Driver = { let tabs = [] try { - tabs = await promisify(chrome.tabs, 'query', { + tabs = await chrome.tabs.query({ url: globEscape(url), }) } catch (error) { @@ -734,7 +728,7 @@ const Driver = { let tabs = [] try { - tabs = await promisify(chrome.tabs, 'query', { + tabs = await chrome.tabs.query({ url: globEscape(url), }) } catch (error) { @@ -773,7 +767,7 @@ const Driver = { * Get the detected technologies for the current tab */ async getDetections() { - const tab = await promisify(chrome.tabs, 'query', { + const tab = await chrome.tabs.query({ active: true, currentWindow: true, }) diff --git a/src/drivers/webextension/js/popup.js b/src/drivers/webextension/js/popup.js index d45212de4..de005a0a6 100644 --- a/src/drivers/webextension/js/popup.js +++ b/src/drivers/webextension/js/popup.js @@ -2,8 +2,7 @@ /* eslint-env browser */ /* globals chrome, Utils */ -const { agent, open, i18n, getOption, setOption, promisify, sendMessage } = - Utils +const { agent, open, i18n, getOption, setOption, sendMessage } = Utils const baseUrl = 'https://www.wappalyzer.com' const utm = '?utm_source=popup&utm_medium=extension&utm_campaign=wappalyzer' @@ -346,7 +345,7 @@ const Popup = { let url - const tabs = await promisify(chrome.tabs, 'query', { + const tabs = await chrome.tabs.query({ active: true, currentWindow: true, }) @@ -963,7 +962,7 @@ const Popup = { new Blob([csv.join('\n')], { type: 'text/csv;charset=utf-8' }) ) - const granted = await promisify(chrome.permissions, 'request', { + const granted = await chrome.permissions.request({ permissions: ['downloads'], }) diff --git a/src/drivers/webextension/js/utils.js b/src/drivers/webextension/js/utils.js index 6d0114932..0f3726b2a 100644 --- a/src/drivers/webextension/js/utils.js +++ b/src/drivers/webextension/js/utils.js @@ -5,15 +5,9 @@ // Manifest v2 polyfill if (chrome.runtime.getManifest().manifest_version === 2) { chrome.action = chrome.browserAction - - chrome.storage.sync = { - get: (...args) => - new Promise((resolve) => chrome.storage.local.get(...args, resolve)), - set: (...args) => - new Promise((resolve) => chrome.storage.local.set(...args, resolve)), - } } +// eslint-disable-next-line no-unused-vars const Utils = { agent: chrome.runtime.getURL('/').startsWith('moz-') ? 'firefox' @@ -21,24 +15,6 @@ const Utils = { ? 'safari' : 'chrome', - /** - * Use promises instead of callbacks - * @param {Object} context - * @param {String} method - * @param {...any} args - */ - promisify(context, method, ...args) { - return new Promise((resolve, reject) => { - context[method](...args, (...args) => { - if (chrome.runtime.lastError) { - return reject(chrome.runtime.lastError) - } - - resolve(...args) - }) - }) - }, - /** * Open a browser tab * @param {String} url @@ -55,7 +31,7 @@ const Utils = { */ async getOption(name, defaultValue = null) { try { - const option = await chrome.storage.sync.get(name) + const option = await chrome.storage.local.get(name) if (option[name] !== undefined) { return option[name] @@ -75,7 +51,7 @@ const Utils = { */ async setOption(name, value) { try { - await chrome.storage.sync.set({ + await chrome.storage.local.set({ [name]: value, }) } catch (error) { diff --git a/src/drivers/webextension/manifest-v3.json b/src/drivers/webextension/manifest-v3.json index 972f45c79..83ac3a183 100644 --- a/src/drivers/webextension/manifest-v3.json +++ b/src/drivers/webextension/manifest-v3.json @@ -74,11 +74,11 @@ "options_page": "html/options.html", "permissions": [ "cookies", - "storage", "scripting", + "storage", "tabs", - "webRequest", - "webNavigation" + "webNavigation", + "webRequest" ], "host_permissions": [ "http://*/*", @@ -90,4 +90,4 @@ "content_security_policy": { "extension_pages": "script-src 'self'; object-src 'self'" } -} \ No newline at end of file +}