UNPKG

@villagehq/extension-sdk

Version:

Village Chrome Extension SDK for Partner Integrations

2 lines (1 loc) 23.4 kB
"use strict";var __defProp=Object.defineProperty,__publicField=(obj,key,value)=>(((obj,key,value)=>{key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value})(obj,"symbol"!=typeof key?key+"":key,value),value),commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}const list=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(constructor=>[constructor.name,constructor]),errorConstructors$1=new Map(list);class NonError extends Error{constructor(message){super(NonError._prepareSuperMessage(message)),__publicField(this,"name","NonError")}static _prepareSuperMessage(message){try{return JSON.stringify(message)}catch{return String(message)}}}const commonProperties=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],toJsonWasCalled=new WeakSet,getErrorConstructor=name=>errorConstructors$1.get(name)??Error,destroyCircular=({from:from,seen:seen,to:to,forceEnumerable:forceEnumerable,maxDepth:maxDepth,depth:depth,useToJSON:useToJSON,serialize:serialize})=>{if(!to)if(Array.isArray(from))to=[];else if(!serialize&&isErrorLike(from)){to=new(getErrorConstructor(from.name))}else to={};if(seen.push(from),depth>=maxDepth)return to;if(useToJSON&&"function"==typeof from.toJSON&&!toJsonWasCalled.has(from))return(from=>{toJsonWasCalled.add(from);const json=from.toJSON();return toJsonWasCalled.delete(from),json})(from);const continueDestroyCircular=value=>destroyCircular({from:value,seen:[...seen],forceEnumerable:forceEnumerable,maxDepth:maxDepth,depth:depth,useToJSON:useToJSON,serialize:serialize});for(const[key,value]of Object.entries(from))if(value&&value instanceof Uint8Array&&"Buffer"===value.constructor.name)to[key]="[object Buffer]";else if(null===value||"object"!=typeof value||"function"!=typeof value.pipe){if("function"!=typeof value)if(value&&"object"==typeof value)seen.includes(from[key])?to[key]="[Circular]":(depth++,to[key]=continueDestroyCircular(from[key]));else try{to[key]=value}catch{}}else to[key]="[object Stream]";for(const{property:property,enumerable:enumerable}of commonProperties)void 0!==from[property]&&null!==from[property]&&Object.defineProperty(to,property,{value:isErrorLike(from[property])?continueDestroyCircular(from[property]):from[property],enumerable:!!forceEnumerable||enumerable,configurable:!0,writable:!0});return to};function serializeError(value,options={}){const{maxDepth:maxDepth=Number.POSITIVE_INFINITY,useToJSON:useToJSON=!0}=options;return"object"==typeof value&&null!==value?destroyCircular({from:value,seen:[],forceEnumerable:!0,maxDepth:maxDepth,depth:0,useToJSON:useToJSON,serialize:!0}):"function"==typeof value?`[Function: ${value.name||"anonymous"}]`:value}function deserializeError(value,options={}){const{maxDepth:maxDepth=Number.POSITIVE_INFINITY}=options;if(value instanceof Error)return value;if(function(value){return Boolean(value)&&"object"==typeof value&&"message"in value&&!Array.isArray(value)}(value)){const Error2=getErrorConstructor(value.name);return destroyCircular({from:value,seen:[],to:new Error2,maxDepth:maxDepth,depth:0,serialize:!1})}return new NonError(value)}function isErrorLike(value){return Boolean(value)&&"object"==typeof value&&"name"in value&&"message"in value&&"stack"in value}var __defProp$1=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$1=Object.getOwnPropertySymbols,__hasOwnProp$1=Object.prototype.hasOwnProperty,__propIsEnum$1=Object.prototype.propertyIsEnumerable,__defNormalProp$1=(obj,key,value)=>key in obj?__defProp$1(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$1=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);if(__getOwnPropSymbols$1)for(var prop of __getOwnPropSymbols$1(b))__propIsEnum$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b));function defineGenericMessanging(config){let removeRootListener,perTypeListeners={};function cleanupRootListener(){0===Object.entries(perTypeListeners).length&&(null==removeRootListener||removeRootListener(),removeRootListener=void 0)}let idSeq=Math.floor(1e4*Math.random());return{sendMessage(type,data,...args){return __this=this,__arguments=null,generator=function*(){var _a2,_b,_c,_d;const _message={id:idSeq++,type:type,data:data,timestamp:Date.now()},message=null!=(_b=yield null==(_a2=config.verifyMessageData)?void 0:_a2.call(config,_message))?_b:_message;null==(_c=config.logger)||_c.debug(`[messaging] sendMessage {id=${message.id}} ─ᐅ`,message,...args);const response=yield config.sendMessage(message,...args),{res:res,err:err}=null!=response?response:{err:new Error("No response")};if(null==(_d=config.logger)||_d.debug(`[messaging] sendMessage {id=${message.id}} ᐊ─`,{res:res,err:err}),null!=err)throw deserializeError(err);return res},new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});var __this,__arguments,generator},onMessage(type,onReceived){var _a2,_b,_c;if(null==removeRootListener&&(null==(_a2=config.logger)||_a2.debug(`[messaging] "${type}" initialized the message listener for this context`),removeRootListener=config.addRootListener(message=>{var _a3,_b2;if("string"!=typeof message.type||"number"!=typeof message.timestamp){if(config.breakError)return;const err=Error(`[messaging] Unknown message format, must include the 'type' & 'timestamp' fields, received: ${JSON.stringify(message)}`);throw null==(_a3=config.logger)||_a3.error(err),err}null==(_b2=null==config?void 0:config.logger)||_b2.debug("[messaging] Received message",message);const listener=perTypeListeners[message.type];if(null==listener)return;const res=listener(message);return Promise.resolve(res).then(res2=>{var _a4,_b3;return null!=(_b3=null==(_a4=config.verifyMessageData)?void 0:_a4.call(config,res2))?_b3:res2}).then(res2=>{var _a4;return null==(_a4=null==config?void 0:config.logger)||_a4.debug(`[messaging] onMessage {id=${message.id}} ─ᐅ`,{res:res2}),{res:res2}}).catch(err=>{var _a4;return null==(_a4=null==config?void 0:config.logger)||_a4.debug(`[messaging] onMessage {id=${message.id}} ─ᐅ`,{err:err}),{err:serializeError(err)}})})),null!=perTypeListeners[type]){const err=Error(`[messaging] In this JS context, only one listener can be setup for ${type}`);throw null==(_b=config.logger)||_b.error(err),err}return perTypeListeners[type]=onReceived,null==(_c=config.logger)||_c.log(`[messaging] Added listener for ${type}`),()=>{delete perTypeListeners[type],cleanupRootListener()}},removeAllListeners(){Object.keys(perTypeListeners).forEach(type=>{delete perTypeListeners[type]}),cleanupRootListener()}}}var browserPolyfill={exports:{}};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,function(module3){var _a,_b;if(!(null==(_b=null==(_a=globalThis.chrome)?void 0:_a.runtime)?void 0:_b.id))throw new Error("This script should only be loaded in a browser extension.");if(void 0===globalThis.browser||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE="The message port closed before a response was received.",wrapAPIs=extensionAPIs=>{const apiMetadata={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(apiMetadata).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class DefaultWeakMap extends WeakMap{constructor(createItem,items=void 0){super(items),this.createItem=createItem}get(key){return this.has(key)||this.set(key,this.createItem(key)),super.get(key)}}const isThenable=value=>value&&"object"==typeof value&&"function"==typeof value.then,makeCallback=(promise,metadata)=>(...callbackArgs)=>{extensionAPIs.runtime.lastError?promise.reject(new Error(extensionAPIs.runtime.lastError.message)):metadata.singleCallbackArg||callbackArgs.length<=1&&!1!==metadata.singleCallbackArg?promise.resolve(callbackArgs[0]):promise.resolve(callbackArgs)},pluralizeArguments=numArgs=>1==numArgs?"argument":"arguments",wrapAsyncFunction=(name,metadata)=>function(target,...args){if(args.length<metadata.minArgs)throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);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)=>{if(metadata.fallbackToNoCallback)try{target[name](...args,makeCallback({resolve:resolve,reject:reject},metadata))}catch(cbError){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),metadata.fallbackToNoCallback=!1,metadata.noCallback=!0,resolve()}else metadata.noCallback?(target[name](...args),resolve()):target[name](...args,makeCallback({resolve:resolve,reject:reject},metadata))})},wrapMethod=(target,method,wrapper)=>new Proxy(method,{apply:(targetMethod,thisObj,args)=>wrapper.call(thisObj,target,...args)});let hasOwnProperty=Function.call.bind(Object.prototype.hasOwnProperty);const wrapObject=(target,wrappers={},metadata={})=>{let cache=Object.create(null),handlers={has:(proxyTarget2,prop)=>prop in target||prop in cache,get(proxyTarget2,prop,receiver){if(prop in cache)return cache[prop];if(!(prop in target))return;let value=target[prop];if("function"==typeof value)if("function"==typeof wrappers[prop])value=wrapMethod(target,target[prop],wrappers[prop]);else if(hasOwnProperty(metadata,prop)){let wrapper=wrapAsyncFunction(prop,metadata[prop]);value=wrapMethod(target,target[prop],wrapper)}else value=value.bind(target);else if("object"==typeof value&&null!==value&&(hasOwnProperty(wrappers,prop)||hasOwnProperty(metadata,prop)))value=wrapObject(value,wrappers[prop],metadata[prop]);else{if(!hasOwnProperty(metadata,"*"))return Object.defineProperty(cache,prop,{configurable:!0,enumerable:!0,get:()=>target[prop],set(value2){target[prop]=value2}}),value;value=wrapObject(value,wrappers[prop],metadata["*"])}return cache[prop]=value,value},set:(proxyTarget2,prop,value,receiver)=>(prop in cache?cache[prop]=value:target[prop]=value,!0),defineProperty:(proxyTarget2,prop,desc)=>Reflect.defineProperty(cache,prop,desc),deleteProperty:(proxyTarget2,prop)=>Reflect.deleteProperty(cache,prop)},proxyTarget=Object.create(target);return new Proxy(proxyTarget,handlers)},wrapEvent=wrapperMap=>({addListener(target,listener,...args){target.addListener(wrapperMap.get(listener),...args)},hasListener:(target,listener)=>target.hasListener(wrapperMap.get(listener)),removeListener(target,listener){target.removeListener(wrapperMap.get(listener))}}),onRequestFinishedWrappers=new DefaultWeakMap(listener=>"function"!=typeof listener?listener:function(req){const wrappedReq=wrapObject(req,{},{getContent:{minArgs:0,maxArgs:0}});listener(wrappedReq)}),onMessageWrappers=new DefaultWeakMap(listener=>"function"!=typeof listener?listener:function(message,sender,sendResponse){let wrappedSendResponse,result,didCallSendResponse=!1,sendResponsePromise=new Promise(resolve=>{wrappedSendResponse=function(response){didCallSendResponse=!0,resolve(response)}});try{result=listener(message,sender,wrappedSendResponse)}catch(err){result=Promise.reject(err)}const isResultThenable=!0!==result&&isThenable(result);if(!0!==result&&!isResultThenable&&!didCallSendResponse)return!1;const sendPromisedResult=promise=>{promise.then(msg=>{sendResponse(msg)},error=>{let message2;message2=error&&(error instanceof Error||"string"==typeof error.message)?error.message:"An unexpected error occurred",sendResponse({__mozWebExtensionPolyfillReject__:!0,message:message2})}).catch(err=>{console.error("Failed to send onMessage rejected reply",err)})};return sendPromisedResult(isResultThenable?result:sendResponsePromise),!0}),wrappedSendMessageCallback=({reject:reject,resolve:resolve},reply)=>{extensionAPIs.runtime.lastError?extensionAPIs.runtime.lastError.message===CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE?resolve():reject(new Error(extensionAPIs.runtime.lastError.message)):reply&&reply.__mozWebExtensionPolyfillReject__?reject(new Error(reply.message)):resolve(reply)},wrappedSendMessage=(name,metadata,apiNamespaceObj,...args)=>{if(args.length<metadata.minArgs)throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);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)=>{const wrappedCb=wrappedSendMessageCallback.bind(null,{resolve:resolve,reject:reject});args.push(wrappedCb),apiNamespaceObj.sendMessage(...args)})},staticWrappers={devtools:{network:{onRequestFinished:wrapEvent(onRequestFinishedWrappers)}},runtime:{onMessage:wrapEvent(onMessageWrappers),onMessageExternal:wrapEvent(onMessageWrappers),sendMessage:wrappedSendMessage.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:wrappedSendMessage.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},settingMetadata={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return apiMetadata.privacy={network:{"*":settingMetadata},services:{"*":settingMetadata},websites:{"*":settingMetadata}},wrapObject(extensionAPIs,staticWrappers,apiMetadata)};module3.exports=wrapAPIs(chrome)}else module3.exports=globalThis.browser}(browserPolyfill);const Browser=getDefaultExportFromCjs(browserPolyfill.exports);function defineExtensionMessaging(config){return defineGenericMessanging(__spreadProps(__spreadValues$1({},config),{sendMessage(message,arg){if(null==arg)return Browser.runtime.sendMessage(message);const options="number"==typeof arg?{tabId:arg}:arg;return Browser.tabs.sendMessage(options.tabId,message,null!=options.frameId?{frameId:options.frameId}:void 0)},addRootListener(processMessage){const listener=(message,sender)=>processMessage("object"==typeof message?__spreadProps(__spreadValues$1({},message),{sender:sender}):message);return Browser.runtime.onMessage.addListener(listener),()=>Browser.runtime.onMessage.removeListener(listener)}}))}var __defProp2=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp2=(obj,key,value)=>key in obj?__defProp2(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;function createProxyService(key,config){return createProxy(defineProxyMessaging(key,config))}function defineProxyMessaging(key,config){return((a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp2(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp2(a,prop,b[prop]);return a})({messageKey:`proxy-service.${key}`},defineExtensionMessaging(config))}function createProxy(messenger,path){const proxy=new Proxy(()=>{},{apply(_target,_thisArg,args){return __this=this,__arguments=null,generator=function*(){return yield messenger.sendMessage(messenger.messageKey,{path:path,args:args})},new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});var __this,__arguments,generator},get:(target,propertyName,receiver)=>"symbol"==typeof propertyName?Reflect.get(target,propertyName,receiver):createProxy(messenger,null==path?[propertyName]:path.concat([propertyName]))});return proxy[ProxyServiceSymbol]=!0,proxy}var ProxyServiceSymbol=Symbol();const bridgeRelayMessaging=defineExtensionMessaging(),pushMessaging=defineExtensionMessaging();exports.BRIDGE_RELAY_MESSAGE_KEY="village:bridge:relay",exports.TRACKING_EVENTS={PATHS_VIEWED:"paths_viewed",PATHS_PREVIEWED:"paths_previewed",PATHS_EVERYWHERE_FLOATING_ICON_SHOWN:"paths_everywhere_floating_icon_shown",PATHS_EVERYWHERE_SHOWN:"paths_everywhere_shown",PATHS_EVERYWHERE_HIDDEN:"paths_everywhere_hidden",PATHS_EVERYWHERE_ACTIVATED:"paths_everywhere_activated",PATHS_EVERYWHERE_DEACTIVATED:"paths_everywhere_deactivated",EXTENSION_DAILY_REPORT:"extension_daily_report_sent"},exports.VILLAGE_SERVICE_KEY="village",exports.bridgeRelayMessaging=bridgeRelayMessaging,exports.commonjsGlobal=commonjsGlobal,exports.getDefaultExportFromCjs=getDefaultExportFromCjs,exports.getVillageService=function(){return createProxyService("village")},exports.pushMessaging=pushMessaging,exports.registerService=function(key,realService,config){const messenger=defineProxyMessaging(key,config);return messenger.onMessage(messenger.messageKey,({data:data})=>{const method=null==data.path?realService:(obj=null!=realService?realService:{},0===(path=data.path).length?obj:path.reduce((acc,key)=>null==acc?void 0:acc[key],obj));var obj,path;if(method)return Promise.resolve(method.bind(realService)(...data.args))})},exports.relayBridgeMessage=async function(payload){return await bridgeRelayMessaging.sendMessage("village:bridge:relay",payload)};