webextension-polyfill
Advanced tools
Comparing version 0.10.0 to 0.11.0
@@ -14,8 +14,5 @@ (function (global, factory) { | ||
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (module) { | ||
/* webextension-polyfill - v0.10.0 - Fri Aug 12 2022 19:42:44 */ | ||
/* webextension-polyfill - v0.11.0 - Tue Apr 16 2024 13:07:51 */ | ||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ | ||
/* vim: set sts=2 sw=2 et tw=80: */ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
@@ -26,8 +23,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
if (!globalThis.chrome?.runtime?.id) { | ||
if (!(globalThis.chrome && globalThis.chrome.runtime && globalThis.chrome.runtime.id)) { | ||
throw new Error("This script should only be loaded in a browser extension."); | ||
} | ||
if (!(globalThis.browser && globalThis.browser.runtime && globalThis.browser.runtime.id)) { | ||
const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = "The message port closed before a response was received."; | ||
if (typeof globalThis.browser === "undefined" || Object.getPrototypeOf(globalThis.browser) !== Object.prototype) { | ||
const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = "The message port closed before a response was received."; // Wrapping the bulk of this polyfill in a one-time-use function is a minor | ||
// Wrapping the bulk of this polyfill in a one-time-use function is a minor | ||
// optimization for Firefox. Since Spidermonkey does not fully parse the | ||
@@ -37,3 +35,2 @@ // contents of a function until the first time it's called, and since it will | ||
// in Firefox nearly for free. | ||
const wrapAPIs = extensionAPIs => { | ||
@@ -715,6 +712,6 @@ // NOTE: apiMetadata is associated to the content of the api-metadata.json file | ||
}; | ||
if (Object.keys(apiMetadata).length === 0) { | ||
throw new Error("api-metadata.json has not been included in browser-polyfill"); | ||
} | ||
/** | ||
@@ -730,4 +727,2 @@ * A WeakMap subclass which creates and stores a value for any key which does | ||
*/ | ||
class DefaultWeakMap extends WeakMap { | ||
@@ -738,3 +733,2 @@ constructor(createItem, items = undefined) { | ||
} | ||
get(key) { | ||
@@ -744,7 +738,6 @@ if (!this.has(key)) { | ||
} | ||
return super.get(key); | ||
} | ||
} | ||
} | ||
/** | ||
@@ -757,7 +750,6 @@ * Returns true if the given object is an object with a `then` method, and can | ||
*/ | ||
const isThenable = value => { | ||
return value && typeof value === "object" && typeof value.then === "function"; | ||
}; | ||
/** | ||
@@ -794,4 +786,2 @@ * Creates and returns a function which, when called, will resolve or reject | ||
*/ | ||
const makeCallback = (promise, metadata) => { | ||
@@ -808,4 +798,4 @@ return (...callbackArgs) => { | ||
}; | ||
const pluralizeArguments = numArgs => numArgs == 1 ? "argument" : "arguments"; | ||
const pluralizeArguments = numArgs => numArgs == 1 ? "argument" : "arguments"; | ||
/** | ||
@@ -837,4 +827,2 @@ * Creates a wrapper function for a method with the given name and metadata. | ||
*/ | ||
const wrapAsyncFunction = (name, metadata) => { | ||
@@ -845,7 +833,5 @@ return function asyncFunctionWrapper(target, ...args) { | ||
} | ||
if (args.length > metadata.maxArgs) { | ||
throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`); | ||
} | ||
return new Promise((resolve, reject) => { | ||
@@ -863,5 +849,6 @@ if (metadata.fallbackToNoCallback) { | ||
console.warn(`${name} API method doesn't seem to support the callback parameter, ` + "falling back to call it without a callback: ", cbError); | ||
target[name](...args); // Update the API method metadata, so that the next API calls will not try to | ||
target[name](...args); | ||
// Update the API method metadata, so that the next API calls will not try to | ||
// use the unsupported callback anymore. | ||
metadata.fallbackToNoCallback = false; | ||
@@ -883,2 +870,3 @@ metadata.noCallback = true; | ||
}; | ||
/** | ||
@@ -903,4 +891,2 @@ * Wraps an existing method of the target object, so that calls to it are | ||
*/ | ||
const wrapMethod = (target, method, wrapper) => { | ||
@@ -911,7 +897,6 @@ return new Proxy(method, { | ||
} | ||
}); | ||
}; | ||
let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); | ||
let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); | ||
/** | ||
@@ -940,3 +925,2 @@ * Wraps an object in a Proxy which intercepts and wraps certain methods | ||
*/ | ||
const wrapObject = (target, wrappers = {}, metadata = {}) => { | ||
@@ -948,3 +932,2 @@ let cache = Object.create(null); | ||
}, | ||
get(proxyTarget, prop, receiver) { | ||
@@ -954,12 +937,10 @@ if (prop in cache) { | ||
} | ||
if (!(prop in target)) { | ||
return undefined; | ||
} | ||
let value = target[prop]; | ||
if (typeof value === "function") { | ||
// This is a method on the underlying object. Check if we need to do | ||
// any wrapping. | ||
if (typeof wrappers[prop] === "function") { | ||
@@ -992,19 +973,14 @@ // We have a special-case wrapper for this method. | ||
enumerable: true, | ||
get() { | ||
return target[prop]; | ||
}, | ||
set(value) { | ||
target[prop] = value; | ||
} | ||
}); | ||
return value; | ||
} | ||
cache[prop] = value; | ||
return value; | ||
}, | ||
set(proxyTarget, prop, value, receiver) { | ||
@@ -1016,15 +992,13 @@ if (prop in cache) { | ||
} | ||
return true; | ||
}, | ||
defineProperty(proxyTarget, prop, desc) { | ||
return Reflect.defineProperty(cache, prop, desc); | ||
}, | ||
deleteProperty(proxyTarget, prop) { | ||
return Reflect.deleteProperty(cache, prop); | ||
} | ||
}; | ||
}; // Per contract of the Proxy API, the "get" proxy handler must return the | ||
// Per contract of the Proxy API, the "get" proxy handler must return the | ||
// original value of the target if that value is declared read-only and | ||
@@ -1039,6 +1013,6 @@ // non-configurable. For this reason, we create an object with the | ||
// dereferenced via the original targets. | ||
let proxyTarget = Object.create(target); | ||
return new Proxy(proxyTarget, handlers); | ||
}; | ||
/** | ||
@@ -1060,4 +1034,2 @@ * Creates a set of wrapper functions for an event object, which handles | ||
*/ | ||
const wrapEvent = wrapperMap => ({ | ||
@@ -1067,13 +1039,9 @@ addListener(target, listener, ...args) { | ||
}, | ||
hasListener(target, listener) { | ||
return target.hasListener(wrapperMap.get(listener)); | ||
}, | ||
removeListener(target, listener) { | ||
target.removeListener(wrapperMap.get(listener)); | ||
} | ||
}); | ||
const onRequestFinishedWrappers = new DefaultWeakMap(listener => { | ||
@@ -1083,2 +1051,3 @@ if (typeof listener !== "function") { | ||
} | ||
/** | ||
@@ -1092,8 +1061,4 @@ * Wraps an onRequestFinished listener function so that it will return a | ||
*/ | ||
return function onRequestFinished(req) { | ||
const wrappedReq = wrapObject(req, {} | ||
/* wrappers */ | ||
, { | ||
const wrappedReq = wrapObject(req, {} /* wrappers */, { | ||
getContent: { | ||
@@ -1111,2 +1076,3 @@ minArgs: 0, | ||
} | ||
/** | ||
@@ -1129,4 +1095,2 @@ * Wraps a message listener function so that it may send responses based on | ||
*/ | ||
return function onMessage(message, sender, sendResponse) { | ||
@@ -1142,3 +1106,2 @@ let didCallSendResponse = false; | ||
let result; | ||
try { | ||
@@ -1149,15 +1112,15 @@ result = listener(message, sender, wrappedSendResponse); | ||
} | ||
const isResultThenable = result !== true && isThenable(result); | ||
const isResultThenable = result !== true && isThenable(result); // If the listener didn't returned true or a Promise, or called | ||
// If the listener didn't returned true or a Promise, or called | ||
// wrappedSendResponse synchronously, we can exit earlier | ||
// because there will be no response sent from this listener. | ||
if (result !== true && !isResultThenable && !didCallSendResponse) { | ||
return false; | ||
} // A small helper to send the message if the promise resolves | ||
} | ||
// A small helper to send the message if the promise resolves | ||
// and an error if the promise rejects (a wrapped sendMessage has | ||
// to translate the message into a resolved promise or a rejected | ||
// promise). | ||
const sendPromisedResult = promise => { | ||
@@ -1171,3 +1134,2 @@ promise.then(msg => { | ||
let message; | ||
if (error && (error instanceof Error || typeof error.message === "string")) { | ||
@@ -1178,3 +1140,2 @@ message = error.message; | ||
} | ||
sendResponse({ | ||
@@ -1188,7 +1149,7 @@ __mozWebExtensionPolyfillReject__: true, | ||
}); | ||
}; // If the listener returned a Promise, send the resolved value as a | ||
}; | ||
// If the listener returned a Promise, send the resolved value as a | ||
// result, otherwise wait the promise related to the wrappedSendResponse | ||
// callback to resolve and send it as a response. | ||
if (isResultThenable) { | ||
@@ -1198,9 +1159,8 @@ sendPromisedResult(result); | ||
sendPromisedResult(sendResponsePromise); | ||
} // Let Chrome know that the listener is replying. | ||
} | ||
// Let Chrome know that the listener is replying. | ||
return true; | ||
}; | ||
}); | ||
const wrappedSendMessageCallback = ({ | ||
@@ -1227,3 +1187,2 @@ reject, | ||
}; | ||
const wrappedSendMessage = (name, metadata, apiNamespaceObj, ...args) => { | ||
@@ -1233,7 +1192,5 @@ if (args.length < metadata.minArgs) { | ||
} | ||
if (args.length > metadata.maxArgs) { | ||
throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`); | ||
} | ||
return new Promise((resolve, reject) => { | ||
@@ -1248,3 +1205,2 @@ const wrappedCb = wrappedSendMessageCallback.bind(null, { | ||
}; | ||
const staticWrappers = { | ||
@@ -1297,6 +1253,6 @@ devtools: { | ||
return wrapObject(extensionAPIs, staticWrappers, apiMetadata); | ||
}; // The build process adds a UMD wrapper around this file, which makes the | ||
}; | ||
// The build process adds a UMD wrapper around this file, which makes the | ||
// `module` variable available. | ||
module.exports = wrapAPIs(chrome); | ||
@@ -1303,0 +1259,0 @@ } else { |
@@ -1,5 +0,5 @@ | ||
(function(a,b){if("function"==typeof define&&define.amd)define("webextension-polyfill",["module"],b);else if("undefined"!=typeof exports)b(module);else{var c={exports:{}};b(c),a.browser=c.exports}})("undefined"==typeof globalThis?"undefined"==typeof self?this:self:globalThis,function(a){"use strict";if(!globalThis.chrome?.runtime?.id)throw new Error("This script should only be loaded in a browser extension.");if("undefined"==typeof globalThis.browser||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){a.exports=(a=>{const b={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(b).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class c extends WeakMap{constructor(a,b=void 0){super(b),this.createItem=a}get(a){return this.has(a)||this.set(a,this.createItem(a)),super.get(a)}}const d=a=>a&&"object"==typeof a&&"function"==typeof a.then,e=(b,c)=>(...d)=>{a.runtime.lastError?b.reject(new Error(a.runtime.lastError.message)):c.singleCallbackArg||1>=d.length&&!1!==c.singleCallbackArg?b.resolve(d[0]):b.resolve(d)},f=a=>1==a?"argument":"arguments",g=(a,b)=>function(c,...d){if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((f,g)=>{if(b.fallbackToNoCallback)try{c[a](...d,e({resolve:f,reject:g},b))}catch(e){console.warn(`${a} API method doesn't seem to support the callback parameter, `+"falling back to call it without a callback: ",e),c[a](...d),b.fallbackToNoCallback=!1,b.noCallback=!0,f()}else b.noCallback?(c[a](...d),f()):c[a](...d,e({resolve:f,reject:g},b))})},h=(a,b,c)=>new Proxy(b,{apply(b,d,e){return c.call(d,a,...e)}});let i=Function.call.bind(Object.prototype.hasOwnProperty);const j=(a,b={},c={})=>{let d=Object.create(null),e=Object.create(a);return new Proxy(e,{has(b,c){return c in a||c in d},get(e,f){if(f in d)return d[f];if(!(f in a))return;let k=a[f];if("function"==typeof k){if("function"==typeof b[f])k=h(a,a[f],b[f]);else if(i(c,f)){let b=g(f,c[f]);k=h(a,a[f],b)}else k=k.bind(a);}else if("object"==typeof k&&null!==k&&(i(b,f)||i(c,f)))k=j(k,b[f],c[f]);else if(i(c,"*"))k=j(k,b[f],c["*"]);else return Object.defineProperty(d,f,{configurable:!0,enumerable:!0,get(){return a[f]},set(b){a[f]=b}}),k;return d[f]=k,k},set(b,c,e){return c in d?d[c]=e:a[c]=e,!0},defineProperty(a,b,c){return Reflect.defineProperty(d,b,c)},deleteProperty(a,b){return Reflect.deleteProperty(d,b)}})},k=a=>({addListener(b,c,...d){b.addListener(a.get(c),...d)},hasListener(b,c){return b.hasListener(a.get(c))},removeListener(b,c){b.removeListener(a.get(c))}}),l=new c(a=>"function"==typeof a?function(b){const c=j(b,{},{getContent:{minArgs:0,maxArgs:0}});a(c)}:a),m=new c(a=>"function"==typeof a?function(b,c,e){let f,g,h=!1,i=new Promise(a=>{f=function(b){h=!0,a(b)}});try{g=a(b,c,f)}catch(a){g=Promise.reject(a)}const j=!0!==g&&d(g);if(!0!==g&&!j&&!h)return!1;const k=a=>{a.then(a=>{e(a)},a=>{let b;b=a&&(a instanceof Error||"string"==typeof a.message)?a.message:"An unexpected error occurred",e({__mozWebExtensionPolyfillReject__:!0,message:b})}).catch(a=>{console.error("Failed to send onMessage rejected reply",a)})};return j?k(g):k(i),!0}:a),n=({reject:b,resolve:c},d)=>{a.runtime.lastError?a.runtime.lastError.message==="The message port closed before a response was received."?c():b(new Error(a.runtime.lastError.message)):d&&d.__mozWebExtensionPolyfillReject__?b(new Error(d.message)):c(d)},o=(a,b,c,...d)=>{if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((a,b)=>{const e=n.bind(null,{resolve:a,reject:b});d.push(e),c.sendMessage(...d)})},p={devtools:{network:{onRequestFinished:k(l)}},runtime:{onMessage:k(m),onMessageExternal:k(m),sendMessage:o.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:o.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},q={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return b.privacy={network:{"*":q},services:{"*":q},websites:{"*":q}},j(a,p,b)})(chrome)}else a.exports=globalThis.browser}); | ||
(function(a,b){if("function"==typeof define&&define.amd)define("webextension-polyfill",["module"],b);else if("undefined"!=typeof exports)b(module);else{var c={exports:{}};b(c),a.browser=c.exports}})("undefined"==typeof globalThis?"undefined"==typeof self?this:self:globalThis,function(a){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(!(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)){a.exports=(a=>{const b={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(b).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class c extends WeakMap{constructor(a,b=void 0){super(b),this.createItem=a}get(a){return this.has(a)||this.set(a,this.createItem(a)),super.get(a)}}const d=a=>a&&"object"==typeof a&&"function"==typeof a.then,e=(b,c)=>(...d)=>{a.runtime.lastError?b.reject(new Error(a.runtime.lastError.message)):c.singleCallbackArg||1>=d.length&&!1!==c.singleCallbackArg?b.resolve(d[0]):b.resolve(d)},f=a=>1==a?"argument":"arguments",g=(a,b)=>function(c,...d){if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((f,g)=>{if(b.fallbackToNoCallback)try{c[a](...d,e({resolve:f,reject:g},b))}catch(e){console.warn(`${a} API method doesn't seem to support the callback parameter, `+"falling back to call it without a callback: ",e),c[a](...d),b.fallbackToNoCallback=!1,b.noCallback=!0,f()}else b.noCallback?(c[a](...d),f()):c[a](...d,e({resolve:f,reject:g},b))})},h=(a,b,c)=>new Proxy(b,{apply(b,d,e){return c.call(d,a,...e)}});let i=Function.call.bind(Object.prototype.hasOwnProperty);const j=(a,b={},c={})=>{let d=Object.create(null),e=Object.create(a);return new Proxy(e,{has(b,c){return c in a||c in d},get(e,f){if(f in d)return d[f];if(!(f in a))return;let k=a[f];if("function"==typeof k){if("function"==typeof b[f])k=h(a,a[f],b[f]);else if(i(c,f)){let b=g(f,c[f]);k=h(a,a[f],b)}else k=k.bind(a);}else if("object"==typeof k&&null!==k&&(i(b,f)||i(c,f)))k=j(k,b[f],c[f]);else if(i(c,"*"))k=j(k,b[f],c["*"]);else return Object.defineProperty(d,f,{configurable:!0,enumerable:!0,get(){return a[f]},set(b){a[f]=b}}),k;return d[f]=k,k},set(b,c,e){return c in d?d[c]=e:a[c]=e,!0},defineProperty(a,b,c){return Reflect.defineProperty(d,b,c)},deleteProperty(a,b){return Reflect.deleteProperty(d,b)}})},k=a=>({addListener(b,c,...d){b.addListener(a.get(c),...d)},hasListener(b,c){return b.hasListener(a.get(c))},removeListener(b,c){b.removeListener(a.get(c))}}),l=new c(a=>"function"==typeof a?function(b){const c=j(b,{},{getContent:{minArgs:0,maxArgs:0}});a(c)}:a),m=new c(a=>"function"==typeof a?function(b,c,e){let f,g,h=!1,i=new Promise(a=>{f=function(b){h=!0,a(b)}});try{g=a(b,c,f)}catch(a){g=Promise.reject(a)}const j=!0!==g&&d(g);if(!0!==g&&!j&&!h)return!1;const k=a=>{a.then(a=>{e(a)},a=>{let b;b=a&&(a instanceof Error||"string"==typeof a.message)?a.message:"An unexpected error occurred",e({__mozWebExtensionPolyfillReject__:!0,message:b})}).catch(a=>{console.error("Failed to send onMessage rejected reply",a)})};return j?k(g):k(i),!0}:a),n=({reject:b,resolve:c},d)=>{a.runtime.lastError?a.runtime.lastError.message==="The message port closed before a response was received."?c():b(new Error(a.runtime.lastError.message)):d&&d.__mozWebExtensionPolyfillReject__?b(new Error(d.message)):c(d)},o=(a,b,c,...d)=>{if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((a,b)=>{const e=n.bind(null,{resolve:a,reject:b});d.push(e),c.sendMessage(...d)})},p={devtools:{network:{onRequestFinished:k(l)}},runtime:{onMessage:k(m),onMessageExternal:k(m),sendMessage:o.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:o.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},q={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return b.privacy={network:{"*":q},services:{"*":q},websites:{"*":q}},j(a,p,b)})(chrome)}else a.exports=globalThis.browser}); | ||
//# sourceMappingURL=browser-polyfill.min.js.map | ||
// webextension-polyfill v.0.10.0 (https://github.com/mozilla/webextension-polyfill) | ||
// webextension-polyfill v.0.11.0 (https://github.com/mozilla/webextension-polyfill) | ||
@@ -6,0 +6,0 @@ /* This Source Code Form is subject to the terms of the Mozilla Public |
{ | ||
"name": "webextension-polyfill", | ||
"version": "0.10.0", | ||
"version": "0.11.0", | ||
"description": "A lightweight polyfill library for Promise-based WebExtension APIs in Chrome.", | ||
@@ -21,15 +21,15 @@ "main": "dist/browser-polyfill.js", | ||
"@babel/core": "7.18.10", | ||
"@babel/eslint-parser": "7.19.1", | ||
"@babel/preset-env": "7.18.10", | ||
"@babel/register": "7.18.9", | ||
"@babel/eslint-parser": "7.18.9", | ||
"babel-preset-minify": "0.5.2", | ||
"browserify": "17.0.0", | ||
"browserify": "^17.0.0", | ||
"chai": "4.3.6", | ||
"chromedriver": "104.0.0", | ||
"chromedriver": "123.0.3", | ||
"cross-env": "7.0.3", | ||
"eslint": "8.21.0", | ||
"eslint": "8.35.0", | ||
"finalhandler": "1.2.0", | ||
"geckodriver": "3.0.2", | ||
"geckodriver": "4.3.3", | ||
"global-replaceify": "1.0.0", | ||
"grunt": "1.5.3", | ||
"grunt": "1.6.1", | ||
"grunt-babel": "8.0.0", | ||
@@ -40,5 +40,5 @@ "grunt-contrib-concat": "2.1.0", | ||
"jsdom": "20.0.0", | ||
"mocha": "10.0.0", | ||
"mocha": "10.2.0", | ||
"nyc": "15.1.0", | ||
"selenium-webdriver": "4.4.0", | ||
"selenium-webdriver": "4.8.1", | ||
"serve-static": "1.15.0", | ||
@@ -69,3 +69,7 @@ "shelljs": "0.8.5", | ||
"test-integration:firefox": "cross-env TEST_BROWSER_TYPE=firefox npm run test-integration" | ||
}, | ||
"dependencies": { | ||
"webpack": "^5.91.0", | ||
"webpack-cli": "^5.1.4" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
204650
1249
2
+ Addedwebpack@^5.91.0
+ Addedwebpack-cli@^5.1.4
+ Added@discoveryjs/json-ext@0.5.7(transitive)
+ Added@jridgewell/gen-mapping@0.3.5(transitive)
+ Added@jridgewell/resolve-uri@3.1.2(transitive)
+ Added@jridgewell/set-array@1.2.1(transitive)
+ Added@jridgewell/source-map@0.3.6(transitive)
+ Added@jridgewell/sourcemap-codec@1.5.0(transitive)
+ Added@jridgewell/trace-mapping@0.3.25(transitive)
+ Added@types/estree@1.0.5(transitive)
+ Added@types/json-schema@7.0.15(transitive)
+ Added@types/node@22.5.5(transitive)
+ Added@webassemblyjs/ast@1.12.1(transitive)
+ Added@webassemblyjs/floating-point-hex-parser@1.11.6(transitive)
+ Added@webassemblyjs/helper-api-error@1.11.6(transitive)
+ Added@webassemblyjs/helper-buffer@1.12.1(transitive)
+ Added@webassemblyjs/helper-numbers@1.11.6(transitive)
+ Added@webassemblyjs/helper-wasm-bytecode@1.11.6(transitive)
+ Added@webassemblyjs/helper-wasm-section@1.12.1(transitive)
+ Added@webassemblyjs/ieee754@1.11.6(transitive)
+ Added@webassemblyjs/leb128@1.11.6(transitive)
+ Added@webassemblyjs/utf8@1.11.6(transitive)
+ Added@webassemblyjs/wasm-edit@1.12.1(transitive)
+ Added@webassemblyjs/wasm-gen@1.12.1(transitive)
+ Added@webassemblyjs/wasm-opt@1.12.1(transitive)
+ Added@webassemblyjs/wasm-parser@1.12.1(transitive)
+ Added@webassemblyjs/wast-printer@1.12.1(transitive)
+ Added@webpack-cli/configtest@2.1.1(transitive)
+ Added@webpack-cli/info@2.0.2(transitive)
+ Added@webpack-cli/serve@2.0.5(transitive)
+ Added@xtuc/ieee754@1.2.0(transitive)
+ Added@xtuc/long@4.2.2(transitive)
+ Addedacorn@8.12.1(transitive)
+ Addedacorn-import-attributes@1.9.5(transitive)
+ Addedajv@6.12.6(transitive)
+ Addedajv-keywords@3.5.2(transitive)
+ Addedbrowserslist@4.23.3(transitive)
+ Addedbuffer-from@1.1.2(transitive)
+ Addedcaniuse-lite@1.0.30001660(transitive)
+ Addedchrome-trace-event@1.0.4(transitive)
+ Addedclone-deep@4.0.1(transitive)
+ Addedcolorette@2.0.20(transitive)
+ Addedcommander@10.0.12.20.3(transitive)
+ Addedcross-spawn@7.0.3(transitive)
+ Addedelectron-to-chromium@1.5.25(transitive)
+ Addedenhanced-resolve@5.17.1(transitive)
+ Addedenvinfo@7.14.0(transitive)
+ Addedes-module-lexer@1.5.4(transitive)
+ Addedescalade@3.2.0(transitive)
+ Addedeslint-scope@5.1.1(transitive)
+ Addedesrecurse@4.3.0(transitive)
+ Addedestraverse@4.3.05.3.0(transitive)
+ Addedevents@3.3.0(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedfastest-levenshtein@1.0.16(transitive)
+ Addedfind-up@4.1.0(transitive)
+ Addedflat@5.0.2(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedglob-to-regexp@0.4.1(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedimport-local@3.2.0(transitive)
+ Addedinterpret@3.1.1(transitive)
+ Addedis-core-module@2.15.1(transitive)
+ Addedis-plain-object@2.0.4(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedisobject@3.0.1(transitive)
+ Addedjest-worker@27.5.1(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedjson-schema-traverse@0.4.1(transitive)
+ Addedkind-of@6.0.3(transitive)
+ Addedloader-runner@4.3.0(transitive)
+ Addedlocate-path@5.0.0(transitive)
+ Addedmerge-stream@2.0.0(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedneo-async@2.6.2(transitive)
+ Addednode-releases@2.0.18(transitive)
+ Addedp-limit@2.3.0(transitive)
+ Addedp-locate@4.1.0(transitive)
+ Addedp-try@2.2.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpicocolors@1.1.0(transitive)
+ Addedpkg-dir@4.2.0(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedrandombytes@2.1.0(transitive)
+ Addedrechoir@0.8.0(transitive)
+ Addedresolve@1.22.8(transitive)
+ Addedresolve-cwd@3.0.0(transitive)
+ Addedresolve-from@5.0.0(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedschema-utils@3.3.0(transitive)
+ Addedserialize-javascript@6.0.2(transitive)
+ Addedshallow-clone@3.0.1(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsource-map-support@0.5.21(transitive)
+ Addedsupports-color@8.1.1(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedtapable@2.2.1(transitive)
+ Addedterser@5.33.0(transitive)
+ Addedterser-webpack-plugin@5.3.10(transitive)
+ Addedundici-types@6.19.8(transitive)
+ Addedupdate-browserslist-db@1.1.0(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addedwatchpack@2.4.2(transitive)
+ Addedwebpack@5.94.0(transitive)
+ Addedwebpack-cli@5.1.4(transitive)
+ Addedwebpack-merge@5.10.0(transitive)
+ Addedwebpack-sources@3.2.3(transitive)
+ Addedwhich@2.0.2(transitive)
+ Addedwildcard@2.0.1(transitive)