UNPKG

webpack-run-chrome-extension

Version:
53 lines (47 loc) 2.94 kB
"use strict";var f=Object.create;var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var v=(e,t)=>{for(var r in t)a(e,r,{get:t[r],enumerable:!0})},m=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of p(t))!k.call(e,n)&&n!==r&&a(e,n,{get:()=>t[n],enumerable:!(s=g(t,n))||s.enumerable});return e};var q=(e,t,r)=>(r=e!=null?f(b(e)):{},m(t||!e||!e.__esModule?a(r,"default",{value:e,enumerable:!0}):r,e)),x=e=>m(a({},"__esModule",{value:!0}),e);var y={};v(y,{default:()=>R});module.exports=x(y);var o=q(require("path")),u=require("loader-utils"),l=require("schema-utils"),w={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"}}};function R(e){let t=this.getOptions(),r=t.manifestPath,s=o.default.dirname(r),n=require(r);(0,l.validate)(w,t,{name:"Inject Reload (background.scripts and background.service_worker) Script",baseDataPath:"options"});let c=(0,u.urlToRequest)(this.resourcePath),d=` ;chrome.runtime.onMessageExternal.addListener( async (request, _sender, sendResponse) => { const managementInfo = await new Promise((resolve) => { chrome.management.getSelf(resolve); }); // Ping-pong between the user extension background page(this) // and the middleware socket client (reloadService.ts), // which will then send a message to the server // (startServer.ts) so it can display the extension info. if (request.initialLoadData) { sendResponse({ id: chrome.runtime.id, manifest: chrome.runtime.getManifest(), management: managementInfo, }) return true } // Reload the extension runtime if the manifest or // service worker changes. if ( request.changedFile === 'manifest.json' || request.changedFile === 'service_worker' || request.changedFile === '_locales' ) { setTimeout(() => { sendResponse({reloaded: true}) chrome.runtime.reload() }, 750) } // Reload all tabs if the contextMenus code changes. if (request.changedFile === 'contextMenus') { sendResponse({reloaded: true}) chrome.tabs.query({}, (tabs) => { if (!tabs) return tabs.forEach((tab) => chrome.tabs.reload(tab.id)) }) } // Reload all tabs if the declarative_net_request code changes. if (request.changedFile === 'declarative_net_request') { sendResponse({reloaded: true}) chrome.runtime.reload() } return true } ); `;if(n.background){if(n.background.scripts)for(let i of[n.background.scripts[0]]){let h=o.default.resolve(s,i);if(c.includes(h))return`${d}${e}`}if(n.background.service_worker){let i=o.default.resolve(s,n.background.service_worker);if(c.includes(i))return`${d}${e}`}}return e}