extension-develop 2.0.0-beta.9 → 2.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/add-hmr-accept-code.js +4 -3
- package/dist/depreacated-shadow-root.js +34 -0
- package/dist/deprecated-shadow-root.js +34 -0
- package/dist/ensure-hmr-for-scripts.js +2 -2
- package/dist/inject-chromium-client-loader.js +2 -2
- package/dist/inject-firefox-client-loader.js +3 -3
- package/dist/module.d.ts +2 -2
- package/dist/module.js +66 -104
- package/dist/resolver-loader.js +1 -1
- package/package.json +12 -19
- package/dist/extensions/safari-manager-extension/background.js +0 -58
- package/dist/extensions/safari-manager-extension/define-initial-tab.js +0 -67
- package/dist/extensions/safari-manager-extension/images/logo.png +0 -0
- package/dist/extensions/safari-manager-extension/manifest.json +0 -17
- package/dist/extensions/safari-manager-extension/pages/sakura-dark.css +0 -268
- package/dist/extensions/safari-manager-extension/pages/sakura.css +0 -267
- package/dist/extensions/safari-manager-extension/pages/welcome.html +0 -49
- package/dist/extensions/safari-manager-extension/pages/welcome.js +0 -34
- package/dist/extensions/safari-manager-extension/reload-service.js +0 -145
- package/dist/extensions/webkit-based-manager-extension/background.js +0 -58
- package/dist/extensions/webkit-based-manager-extension/define-initial-tab.js +0 -67
- package/dist/extensions/webkit-based-manager-extension/images/logo.png +0 -0
- package/dist/extensions/webkit-based-manager-extension/manifest.json +0 -17
- package/dist/extensions/webkit-based-manager-extension/pages/sakura-dark.css +0 -268
- package/dist/extensions/webkit-based-manager-extension/pages/sakura.css +0 -267
- package/dist/extensions/webkit-based-manager-extension/pages/welcome.html +0 -49
- package/dist/extensions/webkit-based-manager-extension/pages/welcome.js +0 -34
- package/dist/extensions/webkit-based-manager-extension/reload-service.js +0 -145
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f9e674f13c5ee43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/37efc878b9e2e181_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4687d168a80cb2c2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ed8c6191e06df7e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/516b8adbcaf9e7ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54fe1cc8a6aa782e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/598e6a77ceb3d616_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/623afcba6dc2b340_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bc26ddd2d404d9c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Network Persistent State +0 -1
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
package/dist/module.js
CHANGED
|
@@ -1,171 +1,133 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Zc=Object.create;var Qe=Object.defineProperty;var Kc=Object.getOwnPropertyDescriptor;var Yc=Object.getOwnPropertyNames;var Qc=Object.getPrototypeOf,el=Object.prototype.hasOwnProperty;var tl=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),sl=(t,e)=>{for(var s in e)Qe(t,s,{get:e[s],enumerable:!0})},Dr=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Yc(e))!el.call(t,n)&&n!==s&&Qe(t,n,{get:()=>e[n],enumerable:!(r=Kc(e,n))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?Zc(Qc(t)):{},Dr(e||!t||!t.__esModule?Qe(s,"default",{value:t,enumerable:!0}):s,t)),rl=t=>Dr(Qe({},"__esModule",{value:!0}),t);var As=tl((op,ol)=>{ol.exports={license:"MIT",repository:{type:"git",url:"https://github.com/cezaraugusto/extension.git",directory:"programs/develop"},engines:{node:">=18"},name:"extension-develop",version:"2.0.0-rc.1",description:"The develop step of Extension.js",main:"./dist/module.js",types:"./dist/module.d.ts",files:["dist"],author:{name:"Cezar Augusto",email:"boss@cezaraugusto.net",url:"https://cezaraugusto.com"},scripts:{clean:"rm -rf dist",watch:"tsup-node ./module.ts --format cjs --dts --target=node18 --watch",compile:"tsup-node ./module.ts --format cjs --dts --target=node18 --minify && bash install_scripts.sh",test:"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.*'","test:coverage":"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts' --coverage","test:build":"jest ./build.spec.ts --no-cache --detectOpenHandles --forceExit"},dependencies:{"@colors/colors":"^1.6.0","@rspack/core":"^1.2.8","@rspack/dev-server":"^1.1.0","@swc/core":"^1.10.1","@swc/helpers":"^0.5.15","@types/firefox-webext-browser":"^120.0.4","@vue/compiler-sfc":"^3.5.13","adm-zip":"^0.5.16",axios:"^1.7.9","case-sensitive-paths-webpack-plugin":"^2.4.0",chokidar:"^4.0.1","chrome-location":"^1.2.1","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","csv-loader":"^3.0.5",dotenv:"^16.4.7","dotenv-webpack":"^8.1.0","edge-location":"^1.0.0","firefox-profile":"^4.7.0","fx-runner":"^1.4.0","go-git-it":"2.0.4",ignore:"^6.0.2","loader-utils":"^3.3.1",micromatch:"^4.0.8","package-manager-detector":"^0.2.7",parse5:"^7.2.1","parse5-utils":"^2.0.0",postcss:"^8.4.49",preact:"^10.22.0",progress:"^2.0.3","schema-utils":"^4.2.0",slugify:"^1.6.6","tiny-glob":"^0.2.9","vue-template-compiler":"^2.7.16","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3",which:"^5.0.0",ws:"^8.18.0"},devDependencies:{"@types/adm-zip":"^0.5.7","@types/case-sensitive-paths-webpack-plugin":"^2.1.9","@types/chrome":"^0.0.287","@types/cross-spawn":"^6.0.6","@types/dotenv-webpack":"^7.0.8","@types/jest":"^29.5.14","@types/loader-utils":"^2.0.6","@types/node":"^22.10.1","@types/webextension-polyfill":"^0.12.1","@types/ws":"^8.5.13",jest:"^29.7.0","ts-jest":"^29.2.5",tsup:"^8.3.5",typescript:"5.7.2"},optionalDependencies:{"@prefresh/core":"^1.5.2","@prefresh/utils":"^1.2.0","@prefresh/webpack":"^4.0.1","@rspack/plugin-preact-refresh":"^1.1.2","@rspack/plugin-react-refresh":"^1.0.1","babel-loader":"^9.2.1","less-loader":"^12.2.0","postcss-loader":"^8.1.1","postcss-preset-env":"^10.1.1","react-refresh":"^0.14.2","resolve-url-loader":"^5.0.0","sass-loader":"^16.0.4","svelte-loader":"^3.2.4","svelte-preprocess":"^6.0.3","vue-loader":"^17.4.2","vue-style-loader":"^4.1.3","vue-template-compiler":"^2.7.16"}}});var Yl={};sl(Yl,{extensionBuild:()=>Cs,extensionDev:()=>Jc,extensionPreview:()=>Ls,extensionStart:()=>Gc});module.exports=rl(Yl);var jc=a(require("fs")),Er=a(require("path")),Dc=require("@rspack/core"),Lc=require("webpack-merge");var Ke=a(require("path"));var Qr=a(require("case-sensitive-paths-webpack-plugin"));var Os=a(require("fs")),et=a(require("path")),ne=require("@rspack/core"),Is=a(require("dotenv")),tt=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){let s=et.default.dirname(this.manifestPath),r=e.options.mode||"development",n=[`.env.${this.browser}.${r}`,`.env.${this.browser}`,`.env.${r}`,".env.local",".env",".env.example"],o="";for(let m of n){let g=et.default.join(s,m);if(Os.default.existsSync(g)){o=g;break}}let i=o?Is.default.config({path:o}).parsed||{}:{},c=et.default.join(s,".env.defaults"),p={...Os.default.existsSync(c)?Is.default.config({path:c}).parsed||{}:{},...i,...process.env},u=Object.keys(p).filter(m=>m.startsWith("EXTENSION_PUBLIC_")).reduce((m,g)=>(m[`process.env.${g}`]=JSON.stringify(p[g]),m[`import.meta.env.${g}`]=JSON.stringify(p[g]),m),{});u["process.env.EXTENSION_PUBLIC_BROWSER"]=JSON.stringify(this.browser),u["import.meta.env.EXTENSION_PUBLIC_BROWSER"]=JSON.stringify(this.browser),u["process.env.EXTENSION_PUBLIC_MODE"]=JSON.stringify(r),u["import.meta.env.EXTENSION_PUBLIC_MODE"]=JSON.stringify(r),u["process.env.EXTENSION_BROWSER"]=JSON.stringify(this.browser),u["import.meta.env.EXTENSION_BROWSER"]=JSON.stringify(this.browser),u["process.env.EXTENSION_MODE"]=JSON.stringify(r),u["import.meta.env.EXTENSION_MODE"]=JSON.stringify(r),new ne.DefinePlugin(u).apply(e),e.hooks.thisCompilation.tap("manifest:update-manifest",m=>{m.hooks.processAssets.tap({name:"env:module",stage:ne.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},g=>{Object.keys(g).forEach(_=>{if(_.endsWith(".json")||_.endsWith(".html")){let S=m.assets[_].source().toString();S=S.replace(/\$EXTENSION_PUBLIC_[A-Z_]+/g,E=>{let A=E.slice(1);return p[A]||E}),S=S.replace(/\$EXTENSION_[A-Z_]+/g,E=>{let A=E.slice(1);return p[A]||E}),m.updateAsset(_,new ne.sources.RawSource(S))}})})})}};var Ms=a(require("fs")),Lr=a(require("path")),st=class{apply(e){let s=Lr.default.join(e.options.output.path||"");if(Ms.default.existsSync(s))try{Ms.default.rmSync(s,{recursive:!0,force:!0}),process.env.EXTENSION_ENV==="development"&&console.log("[CleanDistFolderPlugin] Removed old hot-update files before compilation.")}catch(r){console.error(`[CleanDistFolderPlugin] Failed to remove hot-update files: ${r.message}`)}}};var Rs=a(require("path")),f=require("@colors/colors/safe");var Or=a(require("path")),rt=Or.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),Z=["chrome","edge"],nl=["firefox"],rp=[...Z,...nl];var Ir=require("console");function F(t,e){return e==="error"?`${(0,f.bold)((0,f.red)("ERROR"))} in ${t} ${(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:e==="warn"?`${t} ${(0,f.brightYellow)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:`${e==="info"?(0,f.cyan)("\u25BA\u25BA\u25BA"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} ${(0,f.cyan)(t)}`}function Mr(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Ar(t,e,s){if(!!1)return`${s.hasErrors()?(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} ${(0,f.cyan)(t)} compiled ${s.hasErrors()?(0,f.red)("with errors"):(0,f.brightGreen)("successfully")} in ${e} ms.`}function Rr(t,e){return`${(0,Ir.info)("\u25BA\u25BA\u25BA")} Using ${(0,f.magenta)(t)}. Installing required dependencies via ${(0,f.brightYellow)(e)}...`}function v(t){return`${(0,f.cyan)("\u25BA\u25BA\u25BA")} Using ${(0,f.magenta)(t)}...`}function D(t){return`${F(t,"success")} installation completed. Run the program again and happy hacking.`}function Nr(t){return`${F(t,"info")} dependencies are being installed. This only happens for core contributors...`}function Tr(t){return`${F(t,"success")} dependencies installed ${(0,f.brightGreen)("successfully")}.`}function Ur(t,e){return`${F("Integration","error")} ${t} Installation Error
|
|
2
2
|
|
|
3
3
|
Failed to detect package manager or install ${t} dependencies:
|
|
4
|
-
${(0,f.red)(e?.toString()||"")}`}function
|
|
4
|
+
${(0,f.red)(e?.toString()||"")}`}function nt(t,e){if(!t)throw new Error("This operation is impossible. Please report a bug.");switch(Rs.default.extname(e)){case".js":case".ts":case".jsx":case".tsx":return il(t,e);case".css":case".scss":case".sass":case".less":return al(t,e);default:return cl(t,e)}}function oe(t,e,s){let r=e.startsWith("content_scripts")?"content_scripts":e.replace("/","."),n=e.split("-")[1],o=e.startsWith("pages"),i=t.includes("content_scripts")?`(index ${n})
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Update your manifest.json file to use ${(0,f.brightYellow)("background.scripts")} instead.
|
|
8
|
-
If you really need to keep the ${(0,f.brightYellow)("service_worker")} field, prefix it with
|
|
9
|
-
${(0,f.brightYellow)("chromium:")} so it can target only Chromium-based browsers.
|
|
10
|
-
|
|
11
|
-
Mozilla bug: ${(0,f.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function ri(){return`${x("content-security-policy","error")} Insecure Content-Security-Policy
|
|
12
|
-
|
|
13
|
-
Manifest includes insecure content-security-policy value ${(0,f.brightYellow)("'unsafe-eval'")} in directive ${(0,f.brightBlue)("'script-src'")}.`}function si(){return`${x("_locales","error")} No Default Locale Specified
|
|
14
|
-
|
|
15
|
-
Localization used, but ${(0,f.brightYellow)("default_locale")} wasn't specified in the manifest.`}function Pe(t){return t==="chrome"?(0,f.underline)("https://developer.chrome.com/docs/extensions/reference/manifest"):(0,f.underline)("https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json")}function ii(t){return`${x("manifest.json","error")} Wrong Manifest Field Type
|
|
16
|
-
|
|
17
|
-
Field ${(0,f.brightYellow)("web_accessible_resources")} must be a string array in Manifest version 2.
|
|
18
|
-
|
|
19
|
-
Read more: ${Pe(t)}`}function oi(t){return`${x("manifest.json","error")} Wrong Manifest Field Type
|
|
20
|
-
|
|
21
|
-
Field ${(0,f.brightYellow)("web_accessible_resources")} must be an array of objects in Manifest version 3.
|
|
22
|
-
|
|
23
|
-
Read more: ${Pe(t)}`}function ni(t,e){let s=e?.schemaPath?.split("/"),i=s?.slice(s.length-2).shift();return`${x("manifest.json","error")} Deprecated Field
|
|
24
|
-
|
|
25
|
-
Field ${(0,f.brightYellow)(i||"")} is deprecated in Manifest V3. Update your manifest.json file to run your extension.
|
|
26
|
-
|
|
27
|
-
Read more: ${Pe(t)}`}function ai(t,e){let r=t?.instancePath.replaceAll("/",".").slice(1)||"",s=t?.params.type;return`${x("manifest.json","error")} Invalid Manifest Field
|
|
28
|
-
|
|
29
|
-
Field ${(0,f.brightYellow)(r)} must be of type ${(0,f.brightBlue)(s)}.
|
|
30
|
-
|
|
31
|
-
Read more: ${Pe(e)}`}function ci(t,e){return`${x("manifest.json","error")} Missing Required Manifest Field
|
|
32
|
-
|
|
33
|
-
Field ${(0,f.brightYellow)(e||"")} is required. Update your manifest.json file to run your extension.
|
|
34
|
-
|
|
35
|
-
Read more: ${Pe(t)}`}function pi(t,e){let r=e.split(".").pop(),s=`${x(t,"error")} Content Script Import
|
|
36
|
-
|
|
37
|
-
One of your ${r?.toUpperCase()} imports is also a ${(0,f.brightYellow)("content_script")} CSS in manifest.json.
|
|
38
|
-
Remove the duplicate entry and try again.`;if(e.startsWith("content_scripts"))return s}function li(t){return`${x(t,"error")} Top Level Await In Non-ECMAScript Module
|
|
39
|
-
|
|
40
|
-
Top-level await is only supported in ECMAScript modules.
|
|
41
|
-
To use it in your extension, make sure to set ${(0,f.brightYellow)('"type": "module"')}
|
|
42
|
-
in your package.json or use the ${(0,f.brightYellow)(".mjs")} extension for your script files.`}function at(t,e){if(!t)throw new Error("This operation is impossible. Please report a bug.");switch(Jr.default.extname(e)){case".js":case".ts":case".jsx":case".tsx":return el(t,e);case".css":case".scss":case".sass":case".less":return tl(t,e);default:return rl(t,e)}}function se(t,e,r){let s=e.startsWith("content_scripts")?"content_scripts":e.replace("/","."),i=e.split("-")[1],o=e.startsWith("pages"),n=t.includes("content_scripts")?`(index ${i})
|
|
43
|
-
|
|
44
|
-
`:s;return`${x("manifest.json","error")} File Not Found
|
|
6
|
+
`:r;return`${F("manifest.json","error")} File Not Found
|
|
45
7
|
|
|
46
8
|
${o?`Check the ${(0,f.brightYellow)("pages")} folder in your project root directory.
|
|
47
|
-
`:`Check the ${(0,f.brightYellow)(
|
|
48
|
-
`}${(0,f.red)("NOT FOUND")} ${(0,f.underline)(
|
|
9
|
+
`:`Check the ${(0,f.brightYellow)(i)} field in your manifest.json file.
|
|
10
|
+
`}${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function ot(t,e){return`File Not Found
|
|
49
11
|
|
|
50
12
|
Check the ${(0,f.brightYellow)(t)} field in your manifest.json file.
|
|
51
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
13
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function Br(t,e){return`${F(t,"error")} Manifest Not Found
|
|
52
14
|
|
|
53
15
|
Ensure you have a manifest.json file at the root directory of your project.
|
|
54
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
16
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function qr(t){return`${F("manifest.json","error")} Invalid Manifest
|
|
55
17
|
|
|
56
|
-
Update your manifest.json file and try again. `+(0,f.red)(t.toString())}function
|
|
57
|
-
`,
|
|
18
|
+
Update your manifest.json file and try again. `+(0,f.red)(t.toString())}function Wr(t,e){let s=e&&`${(0,f.gray)("PATH")} ${(0,f.red)("REMOVED")} ${(0,f.underline)(e)}
|
|
19
|
+
`,r=t&&`${(0,f.gray)("PATH")} ${(0,f.brightGreen)("ADDED")} ${(0,f.underline)(t)}`;return`$manifest.json ${(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")} Manifest Entry Point Modification
|
|
58
20
|
|
|
59
21
|
Changing the path of ${(0,f.brightYellow)("HTML")} or ${(0,f.brightYellow)("script")} files in manifest.json after compilation requires a server restart.
|
|
60
|
-
`+r
|
|
22
|
+
`+s+r}function Jr(t,e,s,r){let n=t.charAt(0).toUpperCase()+t.slice(1);return`${F("manifest.json","error")} Manifest Entry Point Modification
|
|
61
23
|
|
|
62
|
-
${
|
|
63
|
-
${(0,f.gray)("PATH")} ${(0,f.underline)(
|
|
24
|
+
${n} ${(0,f.brightYellow)(s)} in the ${(0,f.underline)(e+"/")} folder after compilation requires a server restart.
|
|
25
|
+
${(0,f.gray)("PATH")} ${(0,f.underline)(r)}`}function zr(){return`${F("TypeScript","info")} is being used but no config file was found. Creating ${(0,f.brightYellow)("tsconfig.json")}...`}function Ns(t,e,s){let r=t.name||"Extension.js",n;switch(e){case"chrome":n="chrome://extensions";break;case"edge":n="edge://extensions";break;case"firefox":n="about:debugging#/runtime/this-firefox";break;default:n=""}if(!s.data)return`${F(r,"error")} No Client Data Received
|
|
64
26
|
|
|
65
27
|
This error happens when the program can't get the data from your extension.
|
|
66
28
|
There are many reasons this might happen. To fix, ensure that:
|
|
67
29
|
|
|
68
|
-
- Your extension is set as enabled in ${(0,f.underline)(
|
|
69
|
-
- No previous ${
|
|
30
|
+
- Your extension is set as enabled in ${(0,f.underline)(n)}
|
|
31
|
+
- No previous ${Mr(e)} browser instance is open
|
|
70
32
|
|
|
71
33
|
If that is not the case, restart both the ${(0,f.cyan)(t.name||"")} and the
|
|
72
|
-
${(0,f.brightYellow)("Manager Extension")} in ${(0,f.underline)(
|
|
34
|
+
${(0,f.brightYellow)("Manager Extension")} in ${(0,f.underline)(n)} and try again.
|
|
73
35
|
|
|
74
36
|
If the issue still persists, please report a bug:
|
|
75
37
|
|
|
76
|
-
`+(0,f.underline)("https://github.com/extension-js/extension.js/issues");let{id:o,management:
|
|
77
|
-
\u{1F9E9} ${(0,f.brightGreen)("Extension.js")} ${(0,f.gray)(`${
|
|
38
|
+
`+(0,f.underline)("https://github.com/extension-js/extension.js/issues");let{id:o,management:i}=s.data;if(!i&&process.env.EXTENSION_ENV==="development")return`${F(r,"error")} No management API info received from client. Investigate.`;let{name:c,version:l}=i,p=As().version;return`
|
|
39
|
+
\u{1F9E9} ${(0,f.brightGreen)("Extension.js")} ${(0,f.gray)(`${p}`)}
|
|
78
40
|
Extension Name ${(0,f.gray)(c)}
|
|
79
|
-
Extension Version ${(0,f.gray)(
|
|
80
|
-
Extension ID ${(0,f.gray)(o)}`}function
|
|
41
|
+
Extension Version ${(0,f.gray)(l)}
|
|
42
|
+
Extension ID ${(0,f.gray)(o)}`}function Hr(t){return`This is your first run using Extension.js via ${Mr(t)}. Welcome! \u{1F389}
|
|
81
43
|
|
|
82
|
-
\u{1F9E9} Learn more at ${(0,f.underline)("https://extension.js.org")}`}function
|
|
83
|
-
${(0,f.red)(t)}`}function
|
|
44
|
+
\u{1F9E9} Learn more at ${(0,f.underline)("https://extension.js.org")}`}function Vr(t){return`${F("WebSocket","error")} General WebSocket Error:
|
|
45
|
+
${(0,f.red)(t)}`}function Xr(t,e){return`${F("manifest.json","error")} File Not Found
|
|
84
46
|
|
|
85
47
|
Check the ${(0,f.brightYellow)(t.replace("/","."))} field in your manifest.json file.
|
|
86
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
48
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function Gr(t){return`${F("HTML","error")} Entry Point Modification
|
|
87
49
|
|
|
88
50
|
Changing the path of ${(0,f.brightYellow)("<script>")} or ${(0,f.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
|
|
89
|
-
${(0,f.gray)("PATH")} ${(0,f.underline)(t)}`}function
|
|
51
|
+
${(0,f.gray)("PATH")} ${(0,f.underline)(t)}`}function il(t,e){return`${F("HTML","error")} File Not Found
|
|
90
52
|
|
|
91
53
|
Check your ${(0,f.brightYellow)("<script>")} tags in ${(0,f.underline)(t)}.
|
|
92
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
54
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function al(t,e){return`${F("HTML","error")} File Not Found
|
|
93
55
|
|
|
94
56
|
Check your ${(0,f.brightYellow)("<link>")} tags in ${(0,f.underline)(t)}.
|
|
95
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
57
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function cl(t,e){let s=Rs.default.extname(e);return`${F("HTML","warn")} File Not Found
|
|
96
58
|
|
|
97
|
-
Check your ${(0,f.brightYellow)("*"+
|
|
98
|
-
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function
|
|
59
|
+
Check your ${(0,f.brightYellow)("*"+s)} assets in ${(0,f.underline)(t)}.
|
|
60
|
+
${(0,f.red)("NOT FOUND")} ${(0,f.underline)(e)}`}function Zr(){return`${(0,f.brightYellow)("Note")}: Firefox requires a secure certificate for localhost connections, needed for the reloader to work.
|
|
99
61
|
By default, your manifest.json file is not being watched. To enable this feature, run:
|
|
100
62
|
|
|
101
63
|
npx -y mkcert-cli \\
|
|
102
|
-
${(0,f.brightGreen)("--outDir")} ${(0,f.underline)(
|
|
64
|
+
${(0,f.brightGreen)("--outDir")} ${(0,f.underline)(rt)} \\
|
|
103
65
|
${(0,f.brightGreen)("--cert")} ${(0,f.brightYellow)("localhost.cert")} \\
|
|
104
66
|
${(0,f.brightGreen)("--key")} ${(0,f.brightYellow)("localhost.key")}
|
|
105
67
|
|
|
106
68
|
This will enable the secure certificate needed for Firefox via ${(0,f.bold)("mkcert")}.
|
|
107
69
|
|
|
108
|
-
Learn more about ${(0,f.bold)("mkcert")}: ${(0,f.underline)("https://github.com/FiloSottile/mkcert")}`}function
|
|
70
|
+
Learn more about ${(0,f.bold)("mkcert")}: ${(0,f.underline)("https://github.com/FiloSottile/mkcert")}`}function Kr(t){return`${F("Port","error")} Selected port ${(0,f.brightYellow)(t.toString())} in use. Choose a new port. `}function Yr(){return`${F("manifest.json","error")} Extension ID Not Defined
|
|
109
71
|
|
|
110
72
|
For MAIN world content_scripts, the extension ID must be specified.
|
|
111
73
|
Ensure your extension have a fixed ID and that the ${(0,f.brightYellow)("publicPath")}
|
|
112
|
-
of your ${(0,f.brightYellow)("extension.config.js")} is defined as your extension URL.`}var pt=class{static name="plugin-compilation";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new Si.default().apply(e),new it({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new ot().apply(e),e.hooks.done.tapAsync("develop:brand",(r,s)=>{r.compilation.name=void 0;let i=r.endTime-r.startTime,o=require(this.manifestPath).name;console.log(Zs(o,i,r)),s()})}};var Bi=a(require("path")),Wi=a(require("mini-css-extract-plugin"));var Ni=a(require("mini-css-extract-plugin"));var ke=a(require("path")),Ee=a(require("fs"));var ie=a(require("path")),lt=a(require("fs")),Hr=require("child_process"),ki=require("package-manager-detector");function Ei(t,e){return Object.values(e||{}).some(r=>r===t)}function h(t,e,r){let s=ie.default.extname(e),o=C(e,r)?ie.default.normalize(e):t;return[".js",".jsx",".tsx",".ts"].includes(s)&&(o=o.replace(s,".js")),[".html",".njk",".nunjucks"].includes(s)&&(o=o.replace(s,".html")),[".css",".scss",".sass",".less"].includes(s)&&(o=o.replace(s,".css")),Vr(o||"")}function Vr(t){return t.replace(/\\/g,"/")}function C(t,e={}){if(!e)return!1;let r=ie.default.normalize(Vr(t));return Object.values(e).some(i=>typeof i!="string"?!1:Vr(i).includes(r))}function J(t,e){if(t.getAsset("manifest.json")||t.assets["manifest.json"]){let r=t.assets["manifest.json"].source().toString();return JSON.parse(r||"{}")}return require(e)}function oe(){return process.env.npm_config_user_agent&&process.env.npm_config_user_agent.includes("pnpm")?"pnpm":!1}function Pi(){return process.env.npm_execpath?"npm":!1}async function F(t,e){try{let r=await(0,ki.detect)();console.log(Ks(t,r?.name||"unknown"));let s="";r?.name==="yarn"?s=`yarn --silent add ${e.join(" ")} --cwd ${__dirname} --optional`:r?.name==="npm"||Pi()?s=`npm --silent install ${e.join(" ")} --prefix ${__dirname} --save-optional`:oe()?s=`pnpm --silent add ${e.join(" ")} --prefix ${__dirname} --save-optional`:s=`${r} --silent install ${e.join(" ")} --cwd ${__dirname} --optional`,(0,Hr.execSync)(s,{stdio:"inherit"}),await new Promise(i=>setTimeout(i,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(Ys(t)),r?.name==="yarn"?s="yarn install --silent > /dev/null 2>&1":r?.name==="npm"||Pi()?s="npm install --silent > /dev/null 2>&1":oe()?s="pnpm install --silent > /dev/null 2>&1":s=`${r} install --silent > /dev/null 2>&1`,(0,Hr.execSync)(s,{stdio:"inherit"})),console.log(Qs(t))}catch(r){console.error(ei(t,r))}}function ft(t){let e=ie.default.join(t,"package.json");if(!lt.default.existsSync(e))return!1;let r=JSON.parse(lt.default.readFileSync(e,"utf-8")),s=["react","vue","@angular/core","svelte","solid-js","preact"],i=r.dependencies||{},o=r.devDependencies||{};for(let n of s)if(i[n]||o[n])return!0;return!1}function $i(t){return!lt.default.existsSync(ie.default.resolve(__dirname,`run-${t}-profile`))}function Ci(t){let e=t.name?.replace(/ /g,"-").toLowerCase();return{data:{id:`${e}@extension-js`,manifest:t,management:{id:`${e}@extension-js`,mayDisable:!0,optionsUrl:"",installType:"development",type:"extension",enabled:!0,name:t.name||"",description:t.description||"",version:t.version||"",hostPermissions:t.host_permissions||[],permissions:t.permissions||[],offlineEnabled:t.offline_enabled||!1,shortName:t.short_name||"",isApp:t.app&&t.app.background&&t.app.background.scripts}}}}function S(t,e){return JSON.parse(JSON.stringify(t),function(i,o){let n=i.indexOf(":");if(n===-1)return o;let c=i.substring(0,n);(c===e||c==="chromium"&&K.includes(e)||c==="chromium"&&e.includes("chromium")||c==="gecko"&&e.includes("gecko"))&&(this[i.substring(n+1)]=o)})}var ji=!1;function ut(t){let e=ke.default.join(t,"package.json");if(!Ee.default.existsSync(e))return!1;let r=sl(t),s=require(e),i=s.devDependencies&&s.devDependencies.tailwindcss,o=s.dependencies&&s.dependencies.tailwindcss,n=!!r&&!!(i||o);return n&&(ji||(process.env.EXTENSION_ENV==="development"&&console.log(_("Tailwind")),ji=!0)),n}function sl(t){let e=ke.default.join(t,"tailwind.config.mjs"),r=ke.default.join(t,"tailwind.config.cjs"),s=ke.default.join(t,"tailwind.config.js");if(Ee.default.existsSync(e))return e;if(Ee.default.existsSync(r))return r;if(Ee.default.existsSync(s))return s}var Di=a(require("path")),Li=a(require("fs"));var Fi=!1;function $e(t){let e=Di.default.join(t,"package.json");if(!Li.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies.sass,i=r.dependencies&&r.dependencies.sass;return s||i?(Fi||(process.env.EXTENSION_ENV==="development"&&console.log(_("SASS")),Fi=!0),!0):!1}async function Oi(t,e){if(!$e(t))return[];try{require.resolve("sass-loader")}catch{await F("PostCSS",["postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"]),await F("SASS",["sass","sass-loader","resolve-url-loader"]),console.log(D("SASS")),process.exit(0)}return[{test:/\.(s(a|c)ss)$/,exclude:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/inline_style/,use:await T(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1,useShadowDom:!0})},{use:await T(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:e==="production",useShadowDom:!0})}]},{test:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/inline_style/,use:await T(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1,useShadowDom:!0})},{use:await T(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:e==="production",useShadowDom:!0})}]}]}var Mi=a(require("path")),Ai=a(require("fs"));var Ii=!1;function Ce(t){let e=Mi.default.join(t,"package.json");if(!Ai.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies.less,i=r.dependencies&&r.dependencies.less;return s||i?(Ii||(process.env.EXTENSION_ENV==="development"&&console.log(_("LESS")),Ii=!0),!0):!1}async function Ti(t,e){if(!Ce(t))return[];try{require.resolve("less-loader")}catch{await F("LESS",["less","less-loader","resolve-url-loader"]),console.log(D("LESS")),process.exit(0)}return[{test:/\.less$/,oneOf:[{resourceQuery:/inline_style/,use:await T(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:!1,useShadowDom:!0})},{use:await T(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:e==="production",useShadowDom:!1})}]}]}var dt=a(require("path")),mt=a(require("fs"));var ne=!1;function il(t){let e=dt.default.join(t,"package.json");if(!mt.default.existsSync(e))return!1;let r=[".postcssrc",".postcssrc.json",".postcssrc.yaml",".postcssrc.yml",".postcssrc.js",".postcssrc.cjs","postcss.config.js","postcss.config.cjs"];if(mt.default.existsSync(e)){let s=require(e);if(s.dependencies&&s.dependencies.postcss||s.devDependencies&&s.devDependencies.postcss)return ne||(process.env.EXTENSION_ENV==="development"&&console.log(_("PostCSS")),ne=!0),!0}for(let s of r)if(mt.default.existsSync(dt.default.join(t,s)))return ne||(process.env.EXTENSION_ENV==="development"&&console.log(_("PostCSS")),ne=!0),!0;return ut(t)?(ne||(process.env.EXTENSION_ENV==="development"&&console.log(_("PostCSS")),ne=!0),!0):!1}async function Ri(t,e){if(!il(t))return{};try{require.resolve("postcss-loader")}catch{!$e(t)&&!Ce(t)&&await F("PostCSS",["postcss","postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"]),console.log(D("PostCSS")),process.exit(0)}return{loader:require.resolve("postcss-loader"),options:{postcssOptions:{parser:require.resolve("postcss-scss"),ident:"postcss",config:dt.default.resolve(t,"postcss.config.js"),plugins:[require.resolve("postcss-flexbugs-fixes"),[require.resolve("postcss-preset-env"),{autoprefixer:{flexbox:"no-2009"},stage:3}].filter(Boolean),require.resolve("postcss-normalize")].filter(Boolean)},sourceMap:e.mode==="development"}}}function ol(t){let e=()=>{let s=window.__EXTENSION_SHADOW_ROOT__;s?(s.appendChild(t),console.log("Element inserted into shadowRoot")):(document.head.appendChild(t),console.log("Element inserted into document.head"))};if(window.__EXTENSION_SHADOW_ROOT__){e();return}let r=new MutationObserver(()=>{window.__EXTENSION_SHADOW_ROOT__&&(e(),r.disconnect())});r.observe(document.body,{childList:!0,subtree:!0}),console.log("Observer waiting for Shadow DOM...")}async function T(t,e){let r=Ni.default.loader,s=[e.useMiniCssExtractPlugin?r:{loader:require.resolve("style-loader"),options:e.useShadowDom&&{insert:ol}||void 0},{loader:require.resolve("css-loader"),options:{sourceMap:e.mode==="development"}}].filter(Boolean);if(ut(t)||$e(t)||Ce(t)){let i=await Ri(t,e);i.loader&&s.push(i)}return e.loader&&s.push({loader:require.resolve("resolve-url-loader"),options:{sourceMap:e.mode==="development",root:t}},{loader:require.resolve(e.loader),options:{sourceMap:e.mode==="development"}}),s.filter(Boolean)}var R=a(require("path")),N=a(require("fs"));function nl(t){let e=R.default.join(t,"stylelint.config.json"),r=R.default.join(t,".stylelintrc.js file"),s=R.default.join(t,"stylelint.config.mjs"),i=R.default.join(t,".stylelintrc.mjs"),o=R.default.join(t,"stylelint.config.cjs"),n=R.default.join(t,".stylelintrc.cjs"),c=R.default.join(t,".stylelintrc.json"),p=R.default.join(t,".stylelintrc"),l=R.default.join(t,".stylelintrc.yml"),u=R.default.join(t,".stylelintrc.yaml");if(N.default.existsSync(e))return e;if(N.default.existsSync(r))return r;if(N.default.existsSync(s))return s;if(N.default.existsSync(i))return i;if(N.default.existsSync(o))return o;if(N.default.existsSync(n))return n;if(N.default.existsSync(c))return c;if(N.default.existsSync(p))return p;if(N.default.existsSync(l))return l;if(N.default.existsSync(u))return u}var Ui=!1;function al(t){let e=R.default.join(t,"package.json");if(!N.default.existsSync(e))return!1;let s=!!nl(t);return s&&(Ui||(process.env.EXTENSION_ENV==="development"&&console.log(_("Stylelint")),Ui=!0)),s}async function qi(t){return al(t),[]}var gt=class t{static name="plugin-css";manifestPath;constructor(e){this.manifestPath=e.manifestPath}async configureOptions(e){let r=e.options.mode||"development",s=Bi.default.dirname(this.manifestPath),i=[new Wi.default];i.forEach(l=>l.apply(e));let o=await qi(s);i.push(...o);let n=[{test:/\.css$/,exclude:/\.module\.css$/,oneOf:[{resourceQuery:/inline_style/,use:await T(s,{mode:r,useMiniCssExtractPlugin:!1,useShadowDom:!0})},{use:await T(s,{mode:r,useMiniCssExtractPlugin:r==="production",useShadowDom:!1})}]},{test:/\.module\.css$/,oneOf:[{resourceQuery:/inline_style/,use:await T(s,{mode:r,useMiniCssExtractPlugin:!1,useShadowDom:!0})},{use:await T(s,{mode:r,useMiniCssExtractPlugin:r==="production",useShadowDom:!1})}]}];e.options.plugins=[...e.options.plugins,...i].filter(Boolean);let c=await Oi(s,r),p=await Ti(s,r);n.push(...c),n.push(...p),e.options.module.rules=[...e.options.module.rules,...n].filter(Boolean)}async apply(e){if((e.options.mode||"development")==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var ht=class{static name="plugin-css";manifestPath;constructor(e){this.manifestPath=e.manifestPath}async apply(e){let r={test:/\.svg$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2048}}},i=[...e.options.module.rules.some(o=>o&&o.test instanceof RegExp&&o.test.test(".svg")&&o.use!==void 0)?[]:[r],{test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp)$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2*1024}}},{test:/\.(woff|woff2|eot|ttf|otf)$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"}},{test:/\.(txt|md|csv|tsv|xml|pdf|docx|doc|xls|xlsx|ppt|pptx|zip|gz|gzip|tgz)$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2*1024}}},{test:/\.(csv|tsv)$/i,use:[require.resolve("csv-loader")],generator:{filename:"assets/[name][ext]"}}];e.options.module.rules=[...e.options.module.rules,...i].filter(Boolean)}};var je=a(require("path")),lo=a(require("tsconfig-paths-webpack-plugin"));var Gr=a(require("path")),Xr=a(require("fs"));var Ji=!1,cl=[".babelrc",".babelrc.json",".babelrc.js",".babelrc.cjs","babel.config.json","babel.config.js","babel.config.cjs"];function pl(t){let e=Gr.default.join(t,"package.json");if(!Xr.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies["babel-core"],i=r.dependencies&&r.dependencies["babel-core"],o=cl.some(n=>Xr.default.existsSync(Gr.default.join(t,n)))||!!s||!!i;return o&&(Ji||(process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(_("Babel")),Ji=!0)),o}async function zi(t,e){pl(e)}var Vi=a(require("path")),Gi=a(require("fs"));var Hi=!1;function ae(t){let e=Vi.default.join(t,"package.json");if(!Gi.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies.preact,i=r.dependencies&&r.dependencies.preact;return(s||i)&&(Hi||(process.env.EXTENSION_ENV==="development"&&console.log(_("Preact")),Hi=!0)),!!s||!!i}async function Xi(t){if(!ae(t))return;try{require.resolve("@prefresh/webpack")}catch{await F("Preact",["@prefresh/webpack"]),console.log(D("Preact")),process.exit(0)}return{plugins:[new(require("@prefresh/webpack"))],loaders:void 0,alias:{react:"preact/compat","react-dom/test-utils":"preact/test-utils","react-dom":"preact/compat","react/jsx-runtime":"preact/jsx-runtime"}}}var Ki=a(require("path")),Yi=a(require("fs"));var Zi=!1;function ce(t){let e=Ki.default.join(t,"package.json");if(!Yi.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies.react,i=r.dependencies&&r.dependencies.react;return(s||i)&&(Zi||(process.env.EXTENSION_ENV==="development"&&console.log(_("React")),Zi=!0)),!!s||!!i}async function Qi(t){if(!ce(t))return;try{require.resolve("@pmmmwh/react-refresh-webpack-plugin")}catch{await F("React",["react-refresh","@pmmmwh/react-refresh-webpack-plugin","react-refresh-typescript"]),console.log(D("React")),process.exit(0)}return{plugins:[new(require("@pmmmwh/react-refresh-webpack-plugin"))({overlay:!1})],loaders:void 0,alias:void 0}}var to=a(require("path")),ro=a(require("fs"));var eo=!1;function Zr(t){let e=to.default.join(t,"package.json");if(!ro.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies.vue,i=r.dependencies&&r.dependencies.vue;return(s||i)&&(eo||(process.env.EXTENSION_ENV==="development"&&console.log(_("Vue")),eo=!0)),!!s||!!i}async function so(t){if(!Zr(t))return;try{require.resolve("vue-loader")}catch{await F("TypeScript",["typescript"]),await F("Vue",["vue-loader","vue-template-compiler","vue-style-loader"]),console.log(D("Vue")),process.exit(0)}let e=[{test:/\.vue$/,loader:require.resolve("vue-loader"),include:t,exclude:/node_modules/}];return{plugins:[new(require("vue-loader")).VueLoaderPlugin],loaders:e,alias:void 0}}var yt=a(require("path")),bt=a(require("fs"));var io=!1;function z(t){let e=yt.default.join(t,"package.json");if(!bt.default.existsSync(e))return!1;let r=fl(t),s=require(e),i=s.devDependencies&&s.devDependencies.typescript,o=s.dependencies&&s.dependencies.typescript;return io||((i||o)&&(r?process.env.EXTENSION_ENV==="development"&&console.log(_("TypeScript")):(console.log(gi()),ul(t))),io=!0),!!r&&!!(i||o)}function ll(t,e){return{compilerOptions:{allowJs:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0,jsx:ft(t)?"react-jsx":"preserve",lib:["dom","dom.iterable","esnext"],moduleResolution:"node",module:"esnext",resolveJsonModule:!0,strict:!0,target:"esnext",isolatedModules:!1,skipLibCheck:!0},exclude:["node_modules","dist"]}}function fl(t){let e=yt.default.join(t,"tsconfig.json");if(bt.default.existsSync(e))return e}function ul(t){bt.default.writeFileSync(yt.default.join(t,"tsconfig.json"),JSON.stringify(ll(t,{mode:"development"}),null,2))}var no=a(require("path")),ao=a(require("fs")),co=require("svelte-preprocess");var oo=!1;function Kr(t){let e=no.default.join(t,"package.json");if(!ao.default.existsSync(e))return!1;let r=require(e),s=r.devDependencies&&r.devDependencies?.svelte,i=r.dependencies&&r.dependencies.svelte;return(s||i)&&(oo||(process.env.EXTENSION_ENV==="development"&&console.log(_("Svelte")),oo=!0)),!!s||!!i}async function po(t,e){if(!Kr(t))return;try{require.resolve("svelte-loader")}catch{await F("TypeScript",["typescript"]),await F("Svelte",["svelte-loader","svelte-preprocess"]),console.log(D("Svelte")),process.exit(0)}return{plugins:void 0,loaders:[{test:/\.svelte\.ts$/,use:[require.resolve("svelte-loader")],include:t,exclude:/node_modules/},{test:/\.(svelte|svelte\.js)$/,use:{loader:require.resolve("svelte-loader"),options:{preprocess:(0,co.sveltePreprocess)({typescript:!0,postcss:!0}),emitCss:!0,compilerOptions:{dev:e==="development"}}},include:t,exclude:/node_modules/},{test:/node_modules\/svelte\/.*\.mjs$/,resolve:{fullySpecified:!1}}],alias:void 0}}var wt=class t{static name="plugin-js-frameworks";manifestPath;constructor(e){this.manifestPath=e.manifestPath}async configureOptions(e){let r=e.options.mode||"development",s=je.default.dirname(this.manifestPath),i=await zi(e,s),o=await Qi(s),n=await Xi(s),c=await so(s),p=await po(s,r);e.options.resolve.alias={...i?.alias||{},...o?.alias||{},...n?.alias||{},...c?.alias||{},...p?.alias||{},...e.options.resolve.alias},e.options.module.rules=[{test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[je.default.dirname(this.manifestPath)],exclude:/node_modules/,use:{loader:require.resolve("swc-loader"),options:{sync:!0,module:{type:"es6"},minify:r==="production",isModule:!0,jsc:{target:"es2016",parser:{syntax:z(s)?"typescript":"ecmascript",tsx:z(s)&&(ce(s)||ae(s)),jsx:!z(s)&&(ce(s)||ae(s)),dynamicImport:!0},transform:{react:{development:r==="development",refresh:r==="development",runtime:"automatic",importSource:"react"}}}}}},...i?.loaders||[],...o?.loaders||[],...n?.loaders||[],...c?.loaders||[],...p?.loaders||[],...e.options.module.rules].filter(Boolean),o?.plugins?.forEach(l=>l.apply(e)),n?.plugins?.forEach(l=>l.apply(e)),c?.plugins?.forEach(l=>l.apply(e)),p?.plugins?.forEach(l=>l.apply(e)),z(s)&&(e.options.resolve.plugins=[new lo.default({configFile:je.default.resolve(je.default.dirname(this.manifestPath),"tsconfig.json")})])}async apply(e){if((e.options.mode||"development")==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var ge=a(require("path"));var Ko=a(require("path"));var fo=a(require("path"));function uo(t,e){if(!e||!e.action||!e.action.default_popup)return;let r=e.action.default_popup;return fo.default.join(t,r)}var mo=a(require("path"));function go(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let r=e.browser_action.default_popup;return mo.default.join(t,r)}var xt=a(require("path"));function ho(t,e){let r={newtab:void 0};if(!e||!e.chrome_url_overrides)return{"chrome_url_overrides/newtab":void 0};if(e.chrome_url_overrides.history){let s=e.chrome_url_overrides.history;r={"chrome_url_overrides/history":xt.default.join(t,s)}}if(e.chrome_url_overrides.newtab){let s=e.chrome_url_overrides.newtab;r={"chrome_url_overrides/newtab":xt.default.join(t,s)}}if(e.chrome_url_overrides.bookmarks){let s=e.chrome_url_overrides.bookmarks;r={"chrome_url_overrides/bookmarks":xt.default.join(t,s)}}return r}var yo=a(require("path"));function bo(t,e){if(!e||!e.devtools_page)return;let r=e.devtools_page;return yo.default.join(t,r)}var Yr=a(require("path"));function wo(t,e){if(e.options_page){let s=e.options_page;return Yr.default.join(t,s)}if(!e||!e.options_ui||!e.options_ui.page)return;let r=e.options_ui.page;return Yr.default.join(t,r)}var xo=a(require("path"));function vo(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let r=e.page_action.default_popup;return xo.default.join(t,r)}var _o=a(require("path"));function So(t,e){if(!e||!e.sandbox||!e.sandbox.pages)return{"sandbox/page-0":void 0};let r=e.sandbox.pages,s={};for(let[i,o]of r.entries())s[`sandbox/page-${i}`]=_o.default.join(t,o);return s}var Po=a(require("path"));function ko(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let r=e.side_panel.default_path;return Po.default.join(t,r)}var Eo=a(require("path"));function $o(t,e){if(!e||!e.sidebar_action||!e.sidebar_action.default_panel)return;let r=e.sidebar_action.default_panel;return Eo.default.join(t,r)}function Fe(t,e){return{"action/default_popup":uo(t,e),"browser_action/default_popup":go(t,e),...ho(t,e),devtools_page:bo(t,e),"options_ui/page":wo(t,e),"page_action/default_popup":vo(t,e),...So(t,e),"side_panel/default_path":ko(t,e),"sidebar_action/default_panel":$o(t,e)}}var Qr=a(require("path"));function Co(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return Qr.default.join(t,e.action.default_icon);let r=[];for(let s in e.action.default_icon)r.push(Qr.default.join(t,e.action.default_icon[s]));return r}var es=a(require("path"));function jo(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let r=[];if(typeof e.browser_action.default_icon=="string")return es.default.join(t,e.browser_action.default_icon);for(let s in e.browser_action.default_icon){let i=e.browser_action.default_icon[s]=es.default.join(t,e.browser_action.default_icon[s]);r.push(i)}return r}var ts=a(require("path"));function Fo(t,e){if(!(!e||!e.browser_action||!e.browser_action.theme_icons)){for(let r of e.browser_action.theme_icons)r.light&&(r.light=ts.default.join(t,r.light)),r.dark&&(r.dark=ts.default.join(t,r.dark)),r.size&&delete r.size;return e.browser_action.theme_icons}}var Do=a(require("path"));function Lo(t,e){if(!e||!e.icons)return;let r=[];for(let s in e.icons){let i=Do.default.join(t,e.icons[s]);r.push(i)}return r}var rs=a(require("path"));function Oo(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return rs.default.join(t,e.page_action.default_icon);let r=[];for(let s in e.page_action.default_icon){let i=rs.default.join(t,e.page_action.default_icon[s]);r.push(i)}return r}var Io=a(require("path"));function Mo(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:Io.default.join(t,e.sidebar_action.default_icon)}function Ao(t,e){return{action:Co(t,e),browser_action:jo(t,e),"browser_action/theme_icons":Fo(t,e),icons:Lo(t,e),page_action:Oo(t,e),sidebar_action:Mo(t,e)}}var To=a(require("path"));function Ro(t,e){let r={};return!e||!e.declarative_net_request||!e.declarative_net_request.rule_resources?{"declarative_net_request/rule_resources-0":void 0}:(e.declarative_net_request.rule_resources.forEach(i=>{r[`declarative_net_request/${i.id}`]=To.default.join(t,i.path)}),r)}var No=a(require("path"));function Uo(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let r=e.storage.managed_schema;return No.default.join(t,r)}function qo(t,e){return{...Ro(t,e),"storage/managed_schema":Uo(t,e)}}var De=a(require("path")),Le=a(require("fs"));function Bo(t,e){let r=De.default.join(De.default.dirname(e),"_locales"),s=[];if(Le.default.existsSync(r))for(let i of Le.default.readdirSync(r)){let o=De.default.join(r,i);if(o&&Le.default.statSync(o).isDirectory())for(let n of Le.default.readdirSync(o))s.push(De.default.join(t,"_locales",i,n))}return s}var Wo=a(require("path"));function Jo(t,e){if(!e||!e.background)return;let r=e.background.scripts;if(r)return r.map(s=>Wo.default.join(t,s))}var zo=a(require("path"));function Ho(t,e){if(!e||!e.background)return;let r=e.background.service_worker;if(r)return zo.default.join(t,r)}var ss=a(require("path"));function Vo(t,e){if(!e||!e.content_scripts)return{"content_scripts/content-0":void 0};let r=o=>{if(o.js?.length!==0)return o.js?.map(n=>ss.default.join(t,n))},s=o=>{if(o.css?.length!==0)return o.css?.map(n=>ss.default.join(t,n))},i={};for(let[o,n]of e.content_scripts.entries()){let c=r(n),p=s(n);i[`content_scripts/content-${o}`]=[...(c||[]).filter(l=>l!=null),...(p||[]).filter(l=>l!=null)]}return i}var Go=a(require("path"));function Xo(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let r=e.user_scripts.api_script;return Go.default.join(t,r)}function Oe(t,e){return{"background/scripts":Jo(t,e),"background/service_worker":Ho(t,e),...Vo(t,e),"user_scripts/api_script":Xo(t,e)}}function Zo(t){if(!(!t||!t.web_accessible_resources||!t.web_accessible_resources.length))return t.web_accessible_resources}function pe({manifestPath:t,browser:e}){let r=Ko.default.dirname(t),s=require(t),i=S(s,e||"chrome");return{html:Fe(r,i),icons:Ao(r,i),json:qo(r,i),locales:Bo(r,t),scripts:Oe(r,i),web_accessible_resources:Zo(i)}}var le=a(require("path"));var vt=a(require("fs")),Ie=a(require("path"));function _t(t,e){if(!vt.default.existsSync(t)||!vt.default.statSync(t).isDirectory())return[];let r=[];function s(i){let o=vt.default.readdirSync(i,{withFileTypes:!0});for(let n of o){let c=Ie.default.join(i,n.name);n.isDirectory()?s(c):n.isFile()&&e(n.name)&&r.push(c)}}return s(t),r}function St(t,e,r=""){return!e||!e.length?{}:e.reduce((s,i)=>{let o=Ie.default.extname(i),n=Ie.default.basename(i,o),c=r?`${r}/${n}`:Ie.default.relative(t,i);return{...s,[c]:i}},{})}function Yo({manifestPath:t}){let e=le.default.dirname(t),r={public:le.default.join(e,"public"),pages:le.default.join(e,"pages"),scripts:le.default.join(e,"scripts")},s={public:_t(r.public,()=>!0),pages:_t(r.pages,o=>o.endsWith(".html")),scripts:_t(r.scripts,o=>[".js",".mjs",".jsx",".mjsx",".ts",".mts",".tsx",".mtsx"].includes(le.default.extname(o)))};return{public:St(e,s.public),pages:St(e,s.pages,"pages"),scripts:St(e,s.scripts,"scripts")}}var Pt=a(require("path")),Qo=a(require("webpack")),kt=class{manifestPath;browser;includeList;excludeList;loaderOptions;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList,this.excludeList=e.excludeList,this.loaderOptions=e.loaderOptions}apply(e){new Qo.default.ProvidePlugin({r:[Pt.default.resolve(__dirname,"./resolver-module.mjs"),"default"]}).apply(e),e.options.module?.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,loader:require.resolve(Pt.default.resolve(__dirname,"./resolver-loader.js")),include:[Pt.default.dirname(this.manifestPath)],exclude:/node_modules/,options:{manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList,jsx:this.loaderOptions?this.loaderOptions.jsx:!1,typescript:this.loaderOptions?this.loaderOptions.typescript:!1,minify:this.loaderOptions?this.loaderOptions.minify:!1}})}};var en=a(require("fs")),$t=a(require("webpack")),tn=require("webpack");var Et=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){e.hooks.compilation.tap("manifest:emit-manifest",r=>{r.hooks.processAssets.tap({name:"manifest:emit-manifest",stage:$t.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{let s=this.manifestPath,i;try{let c=en.default.readFileSync(s,"utf-8");i=JSON.parse(c),"$schema"in i&&delete i.$schema}catch(c){r.errors.push(new $t.default.WebpackError(ui(c)));return}let o=JSON.stringify(i,null,2);r.emitAsset("manifest.json",new tn.sources.RawSource(o))})})}};var On=a(require("path")),Me=require("webpack");function rn(t,e){return t.background&&t.background.scripts&&{background:{...t.background,...t.background.scripts&&{scripts:[...t.background.scripts.map(r=>h("background/scripts.js",r,e))]}}}}var sn=a(require("path"));var Ct=t=>sn.default.basename(t);function on(t,e){return t.browser_action&&{browser_action:{...t.browser_action,...t.browser_action.default_popup&&{default_popup:h("browser_action/default_popup.html",t.browser_action.default_popup,e)},...t.browser_action.default_icon&&{default_icon:typeof t.browser_action.default_icon=="string"?h(`icons/${Ct(t.browser_action.default_icon)}`,t.browser_action.default_icon,e):Object.fromEntries(Object.entries(t.browser_action.default_icon).map(([r,s])=>[r,h(`icons/${Ct(s)}`,s,e)]))},...t.browser_action.theme_icons&&{theme_icons:t.browser_action.theme_icons.map(r=>({...r,...r.light&&{light:h(`browser_action/${Ct(r.light)}`,r.light,e)},...r.dark&&{dark:h(`browser_action/${Ct(r.dark)}`,r.dark,e)}}))}}}}function nn(t,e){return t.declarative_net_request&&{declarative_net_request:{...t.declarative_net_request,rule_resources:t.declarative_net_request.rule_resources.map(r=>({...r,path:r.path&&h(`declarative_net_request/${r.id}.json`,r.path,e)}))}}}function an(t,e){return{...rn(t,e),...on(t,e),...nn(t,e)}}var pn=a(require("path"));var cn=t=>pn.default.basename(t);function ln(t,e){return t.action&&{action:{...t.action,...t.action.default_popup&&{default_popup:h("action/default_popup.html",t.action.default_popup,e)},...t.action.default_icon&&{default_icon:typeof t.action.default_icon=="string"?h(`action/${cn(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([r,s])=>[r,h(`action/${cn(s)}`,s,e)]))}}}}function fn(t,e){return t.background&&t.background.service_worker&&{background:{...t.background,...t.background.service_worker&&{service_worker:h("background/service_worker.js",t.background.service_worker,e)}}}}function jt(t,e){return t.side_panel&&{side_panel:{...t.side_panel.default_path&&{default_path:h("side_panel/default_path.html",t.side_panel.default_path,e)}}}}function un(t,e){return{...ln(t,e),...fn(t,e),...jt(t,e)}}function mn(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:h("background/page.html",t.background.page,e)}}}}function dn(t,e){return t.chrome_url_overrides&&{chrome_url_overrides:{...t.chrome_url_overrides.bookmarks&&{bookmarks:h("chrome_url_overrides/bookmarks.html",t.chrome_url_overrides.bookmarks,e)},...t.chrome_url_overrides.history&&{history:h("chrome_url_overrides/history.html",t.chrome_url_overrides.history,e)},...t.chrome_url_overrides.newtab&&{newtab:h("chrome_url_overrides/newtab.html",t.chrome_url_overrides.newtab,e)}}}}function gn(t,e){return t.content_scripts&&{content_scripts:t.content_scripts.map((r,s)=>{let i=[...new Set(r.js)],o=[...new Set(r.css)];return{...r,js:[...i.map(n=>h(`content_scripts/content-${s}.js`,n,e))],css:[...o.map(n=>h(`content_scripts/content-${s}.css`,n,e))]}})}}function hn(t,e){return t.devtools_page&&{devtools_page:h("devtools_page.html",t.devtools_page,e)}}var yn=a(require("path"));var ml=t=>yn.default.basename(t);function bn(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([r,s])=>[r,h(`icons/${ml(s)}`,s,e)]))}}function wn(t,e){return t.options_page&&{options_page:h("options_ui/page.html",t.options_page,e)}}function xn(t,e){return t.options_ui&&{options_ui:{...t.options_ui,...t.options_ui.page&&{page:h("options_ui/page.html",t.options_ui.page,e)}}}}var _n=a(require("path"));var vn=t=>_n.default.basename(t);function Sn(t,e){return t.page_action&&{page_action:{...t.page_action,...t.page_action.default_popup&&{default_popup:h("page_action/default_popup.html",t.page_action.default_popup,e)},...t.page_action.default_icon&&{default_icon:typeof t.page_action.default_icon=="string"?h(`icons/${vn(t.page_action.default_icon)}`,t.page_action.default_icon,e):Object.fromEntries(Object.entries(t.page_action.default_icon).map(([r,s])=>[r,h(`icons/${vn(s)}`,s,e)]))}}}}function Pn(t,e){return t.sandbox&&{sandbox:{...t.sandbox,...t.sandbox.pages&&{pages:t.sandbox.pages.map((r,s)=>h(`sandbox/page-${s}.html`,r,e))}}}}var kn=a(require("path"));var dl=t=>kn.default.basename(t);function En(t,e){return t.sidebar_action&&{sidebar_action:{...t.sidebar_action,...t.sidebar_action.default_panel&&{default_panel:h("sidebar_action/default_panel.html",t.sidebar_action.default_panel,e)},...t.sidebar_action.default_icon&&{default_icon:h(`icons/${dl(t.sidebar_action.default_icon)}`,t.sidebar_action.default_icon,e)}}}}function $n(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:h("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var Cn=a(require("path"));var gl=t=>Cn.default.basename(t);function jn(t,e){return t.theme&&{theme:{...t.theme,...t.theme.images&&{images:{...t.theme.images,theme_frame:h(`theme/images/${gl(t.theme.images.theme_frame)}`,t.theme.images.theme_frame,e)}}}}}function Fn(t,e){return t.user_scripts&&{user_scripts:{...t.user_scripts,...t.user_scripts.api_script&&{api_script:h("user_scripts/api_script.js",t.user_scripts.api_script,e)}}}}function Dn(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function Ln(t,e){return{...mn(t,e),...dn(t,e),...gn(t,e),...hn(t,e),...bn(t,e),...wn(t,e),...xn(t,e),...Sn(t,e),...Pn(t,e),...jt(t,e),...En(t,e),...$n(t,e),...jn(t,e),...Fn(t,e),...Dn(t)}}function is(t,e,r){let s=e||require(t);return JSON.stringify({...s,...Ln(s,r),...an(s,r),...un(s,r)},null,2)}var Ft=class{manifestPath;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.excludeList=e.excludeList}applyDevOverrides(e){return e.content_scripts?e.content_scripts.map((r,s)=>(r.css.length&&!r.js.length&&(r.js=[h(`content_scripts-${s}`,"dev.js",{})]),r)):{}}applyProdOverrides(e,r){if(!r.content_scripts)return{};let s=e.options.output?.path||"",i=e.getAssets().filter(o=>o.name.includes("content_scripts")&&o.name.endsWith(".css")).map(o=>On.default.join(s,o.name));for(let o of r.content_scripts)o.css=i.map((n,c)=>h(`content_scripts/content-${c}.css`,n,{}));return r.content_scripts}apply(e){e.hooks.thisCompilation.tap("manifest:update-manifest",r=>{r.hooks.processAssets.tap({name:"manifest:update-manifest",stage:Me.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{if(r.errors.length>0)return;let s=J(r,this.manifestPath),i=is(this.manifestPath,s,this.excludeList||{}),o={...s,...JSON.parse(i)};e.options.mode==="development"&&o.content_scripts&&(o.content_scripts=this.applyDevOverrides(o));let n=JSON.stringify(o,null,2),c=new Me.sources.RawSource(n);r.updateAsset("manifest.json",c)}),e.options.mode==="production"&&r.hooks.afterOptimizeAssets.tap("manifest:update-manifest",()=>{if(r.errors.length>0)return;let s=J(r,this.manifestPath),i=is(this.manifestPath,s,this.excludeList||{}),o={...s,...JSON.parse(i)};o.content_scripts&&(o.content_scripts=this.applyProdOverrides(r,o));let n=JSON.stringify(o,null,2),c=new Me.sources.RawSource(n);r.updateAsset("manifest.json",c)})})}};var In=a(require("fs")),Dt=class{dependencyList;constructor(e){this.dependencyList=e}apply(e){e.hooks.afterCompile.tap("ManifestPlugin (AddDependenciesPlugin)",r=>{if(r.errors?.length)return;let s=new Set(r.fileDependencies);this.dependencyList&&this.dependencyList.forEach(i=>{In.default.existsSync(i)&&(s.has(i)||(s.add(i),r.fileDependencies.add(i)))})})}};var Mn=a(require("fs")),An=a(require("path")),Ot=a(require("webpack"));var Lt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}extractPaths(e){let r=Array.isArray(e)?e:[e];if(typeof r[0]=="string")return r;let s=[];if(typeof e=="object"&&!Array.isArray(e)){let i=e;i.light&&s.push(i.light),i.dark&&s.push(i.dark)}return s}handleErrors(e,r){let s=[".png",".jpg",".jpeg",".svg",".gif",".webp"],i=[".json"],o=[".js",".ts",".jsx",".tsx",".mjs",".cjs"],n=".html",c=Object.entries(this.includeList||{});for(let[p,l]of c)if(l){let u=this.extractPaths(l);for(let m of u){let g=An.default.extname(m),b=require(this.manifestPath),P=S(b,"chrome").name||"Extension.js";if(!Mn.default.existsSync(m)){if(m.startsWith("/"))return;let E=se(P,p,m);s.includes(g)?e.errors.push(new r(E)):i.includes(g)?e.errors.push(new r(E)):o.includes(g)?e.errors.push(new r(E)):g===n?e.errors.push(new r(E)):e.errors.push(new r(E))}}}}apply(e){e.hooks.compilation.tap("manifest:check-manifest-files",r=>{r.hooks.processAssets.tap({name:"compatibility:check-manifest-files",stage:Ot.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT},()=>{let s=Ot.default.WebpackError;this.handleErrors(r,s)})})}};var Tn=a(require("fs")),Mt=a(require("webpack"));var It=class{manifestPath;browser;includeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList}flattenAndSort(e){return e.flat(1/0).sort()}apply(e){e.hooks.watchRun.tapAsync("manifest:throw-if-recompile-is-needed",(r,s)=>{if((r.modifiedFiles||new Set).has(this.manifestPath)){let o=r.options.context||"",n=`${o}/package.json`;if(!Tn.default.existsSync(n)){s();return}let c=require(this.manifestPath),p=S(c,this.browser),l=this.flattenAndSort(Object.values(Fe(o,p))),u=this.flattenAndSort(Object.values(Oe(o,p)));r.hooks.thisCompilation.tap("manifest:throw-if-recompile-is-needed",m=>{m.hooks.processAssets.tap({name:"manifest:check-manifest-files",stage:Mt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY},()=>{let b=m.getAsset("manifest.json")?.source.source().toString(),k=JSON.parse(b||"{}"),P=this.flattenAndSort(Object.values(Fe(o,k))),E=this.flattenAndSort(Object.values(Oe(o,k)));if(u.toString()!==E.toString()||l.toString()!==P.toString()){let A=l.filter(W=>!P.includes(W))[0],U=P.filter(W=>!l.includes(W))[0],Se=mi(U,A);m.errors.push(new Mt.default.WebpackError(Se))}})})}s()})}};var At=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Et({manifestPath:this.manifestPath}).apply(e),new Lt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Ft({manifestPath:this.manifestPath,excludeList:this.excludeList}).apply(e),new Dt([this.manifestPath]).apply(e),new It({manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList}).apply(e)}};var ps=a(require("path"));var ns=a(require("fs")),Nt=a(require("webpack")),Bn=require("webpack");var Rn=a(require("fs")),ue=a(require("path")),Nn=a(require("parse5-utils"));var fe=a(require("parse5-utils"));function Tt(t){try{return new URL(t),!0}catch{return!1}}function Ae(t,e){let{childNodes:r=[]}=t;for(let s of r)if(s.nodeName==="script"){let i=fe.default.getAttribute(s,"src");if(!i||Tt(i))continue;e({filePath:i,childNode:s,assetType:"script"})}else if(s.nodeName==="link"){let i=fe.default.getAttribute(s,"href"),o=fe.default.getAttribute(s,"rel");if(!i||Tt(i))continue;e(o==="dns-prefetch"||o==="icon"||o==="manifest"||o==="modulepreload"||o==="preconnect"||o==="prefetch"||o==="preload"||o==="prerender"?{filePath:i,childNode:s,assetType:"staticHref"}:{filePath:i,childNode:s,assetType:"css"})}else if(s.nodeName==="a"||s.nodeName==="area"){let i=fe.default.getAttribute(s,"href");if(!i||Tt(i))continue;e({filePath:i,childNode:s,assetType:"staticHref"})}else if(s.nodeName==="audio"||s.nodeName==="embed"||s.nodeName==="iframe"||s.nodeName==="img"||s.nodeName==="input"||s.nodeName==="source"||s.nodeName==="track"||s.nodeName==="video"){let i=fe.default.getAttribute(s,"src");if(!i||Tt(i))continue;e({filePath:i,childNode:s,assetType:"staticSrc"})}else Ae(s,e)}function L(t,e){let r={css:[],js:[],static:[]};if(!t)return r;let s=e||Rn.default.readFileSync(t,{encoding:"utf8"}),i=Nn.default.parse(s),o=(n,c)=>ue.default.join(ue.default.dirname(n),c.startsWith("/")?ue.default.relative(ue.default.dirname(n),c):c);for(let n of i.childNodes)if(n.nodeName==="html"){for(let c of n.childNodes)(c.nodeName==="head"||c.nodeName==="body")&&Ae(c,({filePath:p,assetType:l})=>{let u=o(t,p);switch(l){case"script":r.js?.push(u);break;case"css":r.css?.push(u);break;case"staticSrc":case"staticHref":if(p.startsWith("#"))break;r.static?.push(u);break;default:break}});return{css:r.css,js:r.js,static:r.static}}}function Un(t,e,r){let s=Object.keys(t).find(o=>{let n=t[o];return t[o]===e||L(n)?.js?.includes(e)||L(n)?.css?.includes(e)})||"",i=os(e);return s?`/${s.replace(i,"")}${r}`:`${e.replace(i,"")}${r}`}function os(t){switch(ue.default.extname(t)){case".js":case".mjs":case".ts":case".tsx":return".js";case".css":case".scss":case".sass":case".less":return".css";case".html":return".html";default:return".js"}}function V(t,e,r){return r?`/${t}${e}`:`${t}${e}`}function qn(t,e){return Object.values(e||{}).some(r=>r===t)}var Rt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){let r=require(this.manifestPath),i=S(r,"chrome").name||"Extension.js";e.hooks.thisCompilation.tap("html:emit-html-file",o=>{o.hooks.processAssets.tap({name:"AddAssetsToCompilationPlugin",stage:Nt.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{let n=Object.entries(this.includeList||{});for(let c of n){let[p,l]=c;if(l){if(!ns.default.existsSync(l)){let m=se(i,p,l);o.warnings.push(new Nt.default.WebpackError(m));return}let u=ns.default.readFileSync(l,"utf8");if(!C(l,this.excludeList)){let m=new Bn.sources.RawSource(u),g=V(p,".html");o.emitAsset(g,m)}}}})})}};var Ut=a(require("fs")),me=a(require("path")),Wn=a(require("webpack")),Te=require("webpack");var qt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.thisCompilation.tap("html:add-assets-to-compilation",r=>{r.hooks.processAssets.tap({name:"html:add-assets-to-compilation",stage:Te.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{if(r.errors.length>0)return;let s=Object.entries(this.includeList||{});for(let i of s){let[o,n]=i,c=o+".html";if(n){let p=r.getAsset(c);if(p){let l=p.source.source().toString(),u=L(n,l)?.static,m=[...new Set(u)];for(let g of m)if(!g.startsWith("/")){if(!Ut.default.existsSync(g)&&!qn(g,this.includeList)&&!me.default.basename(g).startsWith("#")){let A=at(n,g);g.startsWith("/")||r.warnings.push(new Wn.default.WebpackError(A));return}let b=Ut.default.readFileSync(g),k=new Te.sources.RawSource(b),P=me.default.join("assets",me.default.basename(g));if(!r.getAsset(P))if(g.endsWith(".html")){let E=L(g),A=[...E?.js||[],...E?.css||[],...E?.static||[]];r.emitAsset(P,k),A.forEach(U=>{let Se=Ut.default.readFileSync(U),W=new Te.sources.RawSource(Se),Js=me.default.join("assets",me.default.basename(U));r.getAsset(Js)||r.emitAsset(Js,W)})}else r.emitAsset(P,k)}}}}})})}};var Jn=a(require("path")),as=a(require("fs"));var Bt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){let r=this.includeList||{};for(let s of Object.entries(r)){let[i,o]=s;if(o){if(!as.default.existsSync(o))return;let n=L(o),c=n?.js||[],p=n?.css||[],l=[...c,...p].filter(u=>!C(u,this.excludeList));if(e.options.mode==="development"){let u=Jn.default.resolve(__dirname,"minimum-script-file.mjs");l.push(u)}as.default.existsSync(o)&&(C(o,this.excludeList)||(e.options.entry={...e.options.entry,[i]:{import:l}}))}}}};var Jt=require("webpack");var cs=a(require("fs")),G=a(require("path")),O=a(require("parse5-utils"));function zn(t,e,r,s,i){let o=cs.default.readFileSync(r,{encoding:"utf8"}),n=O.default.parse(o),c=!!t.getAsset(e+".css"),p=!1;for(let l of n.childNodes)if(l.nodeName==="html"){for(let u of l.childNodes){if((u.nodeName==="head"||u.nodeName==="body")&&Ae(u,({filePath:m,childNode:g,assetType:b})=>{let k=G.default.dirname(r),P=G.default.resolve(k,m),E=os(P),A=C(G.default.resolve(k,m),i),U=G.default.join("/",G.default.normalize(m)),Se=Ei(P,s);switch(b){case"script":{A?l=O.default.setAttribute(g,"src",U):(l=O.default.remove(g),p=!0);break}case"css":{A?l=O.default.setAttribute(g,"href",U):(l=O.default.remove(g),c=!0);break}case"staticHref":case"staticSrc":{if(A)l=O.default.setAttribute(g,b==="staticSrc"?"src":"href",U);else if(Se){let W=Un(s,P,E);l=O.default.setAttribute(g,b==="staticSrc"?"src":"href",W)}else{let W=G.default.join("assets",G.default.basename(P,E));cs.default.existsSync(P)&&(l=O.default.setAttribute(g,b==="staticSrc"?"src":"href",V(W,"",!0)))}break}default:break}}),u.nodeName==="head"&&c&&t.options.mode==="production"){let m=O.default.createNode("link");m.attrs=[{name:"rel",value:"stylesheet"},{name:"href",value:V(e,".css",!0)}],O.default.append(u,m)}if(u.nodeName==="body"&&(p||t.options.mode!=="production")){let m=O.default.createNode("script");m.attrs=[{name:"src",value:V(e,".js",!0)}],O.default.append(u,m)}}return O.default.serialize(n)}}var Wt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("html:update-html-file",r=>{r.hooks.processAssets.tap({name:"html:update-html-file",stage:Jt.Compilation.PROCESS_ASSETS_STAGE_DERIVED},()=>{if(r.errors.length>0)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[o,n]=i;if(n){let c=zn(r,o,n,s,this.excludeList||{});if(!C(n,this.excludeList)&&c){let p=new Jt.sources.RawSource(c),l=V(o,".html");r.updateAsset(l,p)}}}})})}};var Hn=a(require("fs")),Vn=require("webpack");var zt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.thisCompilation.tap("html:add-to-file-dependencies",r=>{r.hooks.processAssets.tap({name:"html:add-to-file-dependencies",stage:Vn.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(r.errors?.length)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[,o]=i;if(o){let n=L(o),c=new Set(r.fileDependencies);if(Hn.default.existsSync(o)){let p=[o,...n?.static||[]];for(let l of p)c.has(l)||(c.add(l),l===o&&r.fileDependencies.add(l))}}}})})}};var Gn=a(require("fs"));var Ht=class{manifestPath;includeList;initialHtmlAssets={};constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}hasEntriesChanged(e,r){if(!r||!e||e.length!==r.length)return!0;for(let s=0;s<e.length;s++)if(e[s]!==r[s])return!0;return!1}storeInitialHtmlAssets(e){Object.entries(e).forEach(([r,s])=>{let i=s;if(i){if(!Gn.default.existsSync(i)){let o=require(this.manifestPath),c=S(o,"chrome").name||"Extension.js";console.error(se(c,r,i)),process.exit(1)}this.initialHtmlAssets[i]={js:L(i)?.js||[],css:L(i)?.css||[]}}})}apply(e){let r=this.includeList||{};this.storeInitialHtmlAssets(r),e.hooks.make.tapAsync("html:throw-if-recompile-is-needed",(s,i)=>{let o=e.modifiedFiles||new Set,n=Array.from(o)[0];if(n&&this.initialHtmlAssets[n]){let c=L(n)?.js||[],p=L(n)?.css||[],{js:l,css:u}=this.initialHtmlAssets[n];(this.hasEntriesChanged(p,u)||this.hasEntriesChanged(c,l))&&console.log(wi(n))}i()})}};var Xn=a(require("fs")),Zn=require("webpack");function yl(t,e){let r="Module not found: Error: Can't resolve ",i=e.message.replace(r,"").split("'")[1];if(e.message.includes(r))for(let o of Object.entries(t)){let[,n]=o;if(n){if(!Xn.default.existsSync(n))return null;let c=L(n),p=c?.js?.filter(u=>!u.startsWith("/"))||[],l=c?.css?.filter(u=>!u.startsWith("/"))||[];if(p.includes(i)||l.includes(i)){let u=at(n,i);return new Zn.WebpackError(u)}}}return null}var Vt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.compilation.tap("html:handle-common-errors",r=>{r.hooks.afterSeal.tapPromise("html:handle-common-errors",async()=>{r.errors.forEach((s,i)=>{let o=yl(this.includeList||{},s);o&&(r.errors[i]=o)})})})}};var Gt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Rt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new qt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Bt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Wt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[ps.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(ps.default.join(__dirname,"ensure-hmr-for-scripts.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}}]}),new zt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Ht({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Vt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var Re=a(require("path"));var ls=a(require("fs")),Kn=a(require("path"));function Yn(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>{let o=ls.default.existsSync(i)&&!C(i,e),n=Kn.default.extname(i);return o&&(n===".js"||n===".mjs"||n===".jsx"||n===".ts"||n===".tsx")})}function Qn(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>ls.default.existsSync(i)&&!C(i,e)&&(i.endsWith(".css")||i.endsWith(".scss")||i.endsWith(".sass")||i.endsWith(".less")))}var Xt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList||{},this.excludeList=e.excludeList||{}}apply(e){let r=this.includeList||{},s={};for(let[i,o]of Object.entries(r)){let n=Yn(o,this.excludeList),c=Qn(o,this.excludeList),p=[...n];e.options.mode==="production"&&p.push(...c),(c.length||n.length)&&(s[i]={import:p})}e.options.entry={...e.options.entry,...s}}};var Y=require("webpack"),bl=['var isBrowser = !!(() => { try { return browser.runtime.getURL("/") } catch(e) {} })()','var isChrome = !!(() => { try { return chrome.runtime.getURL("/") } catch(e) {} })()'],wl=[...bl,`var runtime = isBrowser ? browser : isChrome ? chrome : (typeof self === 'object' && self.addEventListener) ? { get runtime() { throw new Error("No chrome or browser runtime found") } } : { runtime: { getURL: x => x } }`],Zt=class t{apply(e){let{RuntimeGlobals:r}=e.webpack;e.hooks.compilation.tap("PublicPathRuntimeModule",s=>{s.hooks.runtimeRequirementInTree.for(r.publicPath).tap(t.name,i=>{let o=xl();return s.addRuntimeModule(i,o),!0})})}};function xl(){class t extends Y.RuntimeModule{constructor(){super("publicPath",Y.RuntimeModule.STAGE_BASIC)}generate(){let r=this.compilation?.outputOptions.publicPath;return Y.Template.asString([...wl,`var path = ${JSON.stringify(this.compilation?.getPath(r||"",{hash:this.compilation.hash||"XXXX"}))}`,`${Y.RuntimeGlobals.publicPath} = typeof importScripts === 'function' || !(isBrowser || isChrome) ? path : runtime.runtime.getURL(path);`])}}return new t}var Kt=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList||{},this.excludeList=e.excludeList||{}}apply(e){let r=require(this.manifestPath),s=S(r,this.browser);s.content_scripts?.some(i=>i.world&&i.world.toLowerCase()==="main")&&K.includes(this.browser)&&!s.key&&(console.error(_i()),process.exit(1))}};var Yt=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Xt({manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}).apply(e),e.options.mode==="development"&&e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Re.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(Re.default.join(__dirname,"inject-content-css-during-dev.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]}),e.options.mode==="development"&&e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Re.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(Re.default.join(__dirname,"add-hmr-accept-code.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]}),e.options.mode==="production"&&new Zt().apply(e),new Kt({manifestPath:this.manifestPath,browser:this.browser||"chrome",includeList:this.includeList||{},excludeList:this.excludeList||{}}).apply(e)}};var Ue=a(require("path")),qe=a(require("fs")),us=a(require("webpack")),Be=require("webpack");var de=a(require("path")),Ne=a(require("fs"));function fs(t){let e=de.default.join(de.default.dirname(t),"_locales"),r=[];if(Ne.default.existsSync(e))for(let s of Ne.default.readdirSync(e)){let i=de.default.join(e,s);if(i&&Ne.default.statSync(i).isDirectory())for(let o of Ne.default.readdirSync(i))r.push(de.default.join(de.default.dirname(t),"_locales",s,o))}return r}var Qt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("locales:module",r=>{r.hooks.processAssets.tap({name:"locales:module",stage:Be.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(!qe.default.existsSync(this.manifestPath)){let i=require(this.manifestPath),n=S(i,"chrome").name||"Extension.js";r.errors.push(new us.default.WebpackError(fi(n,this.manifestPath)));return}if(r.errors.length>0)return;let s=fs(this.manifestPath);for(let i of Object.entries(s||[])){let[o,n]=i,c=n;if(c){if(Ue.default.extname(c)!==".json")continue;if(!qe.default.existsSync(c)){r.warnings.push(new us.default.WebpackError(ct(o,c)));return}let p=qe.default.readFileSync(c),l=new Be.sources.RawSource(p),u=e.options.context||Ue.default.dirname(this.manifestPath);if(!C(c,this.excludeList)){let m=Ue.default.relative(u,c);r.emitAsset(m,l)}}}})}),e.hooks.thisCompilation.tap("locales:module",r=>{r.hooks.processAssets.tap({name:"locales:module",stage:Be.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(r.errors?.length)return;let s=fs(this.manifestPath);for(let i of Object.entries(s||[])){let[,o]=i;if(o){let n=new Set(r.fileDependencies),c=s||[];for(let p of c)qe.default.existsSync(p)&&Ue.default.extname(p)===".json"&&(n.has(p)||(n.add(p),r.fileDependencies.add(p)))}}})})}};var er=a(require("fs")),ea=a(require("webpack")),We=require("webpack");var tr=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("json:module",r=>{r.hooks.processAssets.tap({name:"json:module",stage:We.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(r.errors.length>0)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[o,n]=i,c=Array.isArray(n)?n:[n];for(let p of c)if(p&&!C(p,this.excludeList)){if(!er.default.existsSync(p)){r.warnings.push(new ea.default.WebpackError(ct(o,p)));return}let l=er.default.readFileSync(p),u=new We.sources.RawSource(l);r.emitAsset(o+".json",u)}}})}),e.hooks.thisCompilation.tap("json:module",r=>{r.hooks.processAssets.tap({name:"json:module",stage:We.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(r.errors?.length)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[,o]=i,n=Array.isArray(o)?o:[o];for(let c of n)if(c){let p=new Set(r.fileDependencies);C(c,this.excludeList)||er.default.existsSync(c)&&(p.has(c)||(p.add(c),r.fileDependencies.add(c)))}}})})}};var ms=a(require("fs")),ta=a(require("path")),sr=require("webpack");var rr=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("icons:emit-file",r=>{r.hooks.processAssets.tap({name:"icons:emit-file",stage:sr.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER},()=>{if(r.errors.length>0)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[o,n]=i;if(n===void 0)continue;let c=Array.isArray(n)?typeof n[0]=="string"?n:n.map(Object.values).flat():[n];for(let p of c)if(p){if(!ms.default.existsSync(p))continue;if(!C(p,this.excludeList)){let l=ms.default.readFileSync(p),u=new sr.sources.RawSource(l),m=ta.default.basename(p),b=`${o.endsWith("theme_icons")?o.replace("theme_icons",""):o}/${m}`;r.emitAsset(b,u)}}}})})}};var ra=a(require("fs")),sa=require("webpack"),ir=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("icons:add-to-file-dependencies",r=>{r.hooks.processAssets.tap({name:"icons:add-to-file-dependencies",stage:sa.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(r.errors?.length)return;let s=this.includeList||{};for(let i of Object.entries(s)){let[,o]=i,n=Array.isArray(o)?typeof o[0]=="string"?o:o.map(Object.values).flat():[o];for(let c of n)if(c){let p=new Set(r.fileDependencies);ra.default.existsSync(c)&&(p.has(c)||(p.add(c),r.fileDependencies.add(c)))}}})})}};var or=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new rr({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new ir({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var ar=require("webpack");function ia(t){return t.map(e=>{try{let r=new URL(e.replace(/^\*:\/\//,"https://"));return e.endsWith(r.pathname)?`${e.substring(0,e.length-r.pathname.length)}/*`:r.pathname==="/"?`${e}/*`:e}catch{return e}})}var nr=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}generateManifestPatches(e,r){let s=J(e,this.manifestPath),i=s.web_accessible_resources||[],o=s.web_accessible_resources||[];for(let[p,l]of Object.entries(r)){let u=s.content_scripts?.find(m=>m.js?.some(g=>g.includes(p)));if(u){let m=u.matches||[],g=l.filter(b=>!b.endsWith(".map")&&!b.endsWith(".css")&&!b.endsWith(".js"));if(g.length===0)continue;if(s.manifest_version===3){let b=i.find(k=>k.matches.some(P=>m.includes(P)));b?g.forEach(k=>{b.resources.includes(k)||b.resources.push(k)}):i.push({resources:g,matches:ia(m)})}else g.forEach(b=>{o.includes(b)||o.push(b)})}}s.manifest_version===3?i.length>0&&(s.web_accessible_resources=i):o.length>0&&(s.web_accessible_resources=Array.from(new Set(o)));let n=JSON.stringify(s,null,2),c=new ar.sources.RawSource(n);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",c)}apply(e){e.hooks.thisCompilation.tap("plugin-extension:feature-web-resources",r=>{r.hooks.processAssets.tap({name:"plugin-extension:feature-web-resources",stage:ar.Compilation.PROCESS_ASSETS_STAGE_ANALYSE},()=>{let s=[],i=Object.keys(this.includeList||{});for(let c of i.filter(Boolean))c.startsWith("content_scripts")&&(Array.isArray(c)?s.push(...c):typeof c=="string"&&s.push(c));let o=r.chunkGraph,n={};r.entrypoints.forEach((c,p)=>{if(s.includes(p)){let l=[];c.chunks.forEach(u=>{Array.from(o.getChunkModulesIterable(u)).forEach(g=>{o.getModuleChunks(g).forEach(b=>{b.auxiliaryFiles.forEach(k=>{l.includes(k)||l.push(k)})})})}),n[p]=l}}),this.generateManifestPatches(r,n)})})}};var I=a(require("fs")),M=a(require("path")),oa=a(require("chokidar")),cr=class{options;constructor(e){this.options=e}ensureDirectoryExistence(e){let r=M.default.dirname(e);if(I.default.existsSync(r))return!0;I.default.mkdirSync(r,{recursive:!0})}copyFile(e,r){this.ensureDirectoryExistence(r),I.default.copyFileSync(e,r)}copyFolder(e,r){I.default.existsSync(r)||I.default.mkdirSync(r,{recursive:!0}),I.default.readdirSync(e).forEach(i=>{let o=M.default.join(e,i),n=M.default.join(r,i);I.default.statSync(o).isDirectory()?this.copyFolder(o,n):this.copyFile(o,n)})}apply(e){let r=M.default.dirname(this.options.manifestPath),s=M.default.join(r,"public"),i=e.options.output?.path||"";I.default.existsSync(s)&&(e.hooks.afterEmit.tap("special-folders:copy-public-folder",()=>{let o=M.default.join(i,"/");I.default.existsSync(o)||I.default.mkdirSync(o,{recursive:!0}),I.default.existsSync(s)&&this.copyFolder(s,o)}),e.options.mode!=="production"&&e.hooks.afterPlugins.tap("special-folders:copy-public-folder",()=>{let o=M.default.join(r,"public"),n=oa.default.watch(o,{ignoreInitial:!0});n.on("add",c=>{let p=M.default.join(i,M.default.relative(r,c));this.copyFile(c,p)}),n.on("change",c=>{let p=M.default.join(i,M.default.relative(r,c));this.copyFile(c,p)}),n.on("unlink",c=>{let p=M.default.join(i,M.default.relative(r,c));I.default.existsSync(p)&&I.default.unlinkSync(p)}),e.hooks.watchClose.tap("special-folders:copy-public-folder",()=>{n.close().catch(console.error)})}))}};var q=a(require("path")),ds=a(require("chokidar"));var pr=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,r,s){let i=q.relative(process.cwd(),r),c=di(s?"Adding":"Removing",e,e==="pages"?"HTML pages":"script files",i);if(s){console.warn(c);return}console.error(c),process.exit(1)}apply(e){e.hooks.afterPlugins.tap("special-folders:warn-upon-folder-changes",()=>{let r=q.dirname(this.manifestPath),s=q.join(r,"pages"),i=q.join(r,"scripts"),o=ds.watch(s,{ignoreInitial:!0}),n=ds.watch(i,{ignoreInitial:!0}),c=e.options.resolve?.extensions;o.on("add",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p,!0)}),o.on("unlink",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p)}),n.on("add",p=>{c?.includes(q.extname(p))&&this.throwCompilationError("scripts",p,!0)}),n.on("unlink",p=>{c?.includes(q.extname(p))&&this.throwCompilationError("scripts",p)}),e.hooks.watchClose.tap("WarnUponFolderChanges",()=>{o.close().catch(console.error),n.close().catch(console.error)})})}};var lr=class{static name="plugin-special-folders";options;constructor(e){this.options=e}apply(e){let{manifestPath:r}=this.options;new cr({manifestPath:r}).apply(e),e.options.mode==="development"&&e.options.watchOptions&&new pr(r).apply(e)}};var fr=class{static name="plugin-extension";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){let r=this.manifestPath,s=pe({manifestPath:r,browser:this.browser}),i=Yo({manifestPath:r,browser:this.browser});process.env.EXPERIMENTAL_EXTENSION_RESOLVER_PLUGIN==="true"&&new kt({manifestPath:r,browser:this.browser,includeList:{...i?.pages||{},...i?.scripts||{}},excludeList:i.public,loaderOptions:{jsx:ce(ge.default.dirname(this.manifestPath))||ae(ge.default.dirname(this.manifestPath))||Zr(ge.default.dirname(this.manifestPath))||Kr(ge.default.dirname(this.manifestPath)),typescript:z(ge.default.dirname(this.manifestPath)),minify:e.options.mode==="production"}}).apply(e),new At({browser:this.browser,manifestPath:r,includeList:{...s.html,...s.icons,...s.json,...s.scripts},excludeList:i.public}).apply(e),new Gt({manifestPath:r,includeList:{...s.html,...i.pages},excludeList:{...i.public,...i.scripts}}).apply(e),new Yt({manifestPath:r,browser:this.browser,includeList:{...s.scripts,...i.scripts},excludeList:{...i.public,...i.pages}}).apply(e),new Qt({manifestPath:r}).apply(e),new tr({manifestPath:r,includeList:s.json,excludeList:i.public}).apply(e),new or({manifestPath:r,includeList:s.icons,excludeList:i.public}).apply(e),new nr({manifestPath:r,includeList:{...s.scripts,...i.scripts},excludeList:i.public}).apply(e),new lr({manifestPath:r}).apply(e)}};var He=a(require("path"));var na=a(require("path")),aa=a(require("ws"));function ur(t,e){t.clients.forEach(r=>{r.readyState===aa.default.OPEN&&r.send(JSON.stringify(e))})}function ca(t,e,r){if(!r||!e)return;let s=pe({manifestPath:e}).locales,i=pe({manifestPath:e}).scripts,o=pe({manifestPath:e}).json;if(!t){process.env.EXTENSION_ENV==="development"&&console.error("WebSocket server is not running.");return}na.default.basename(r)==="manifest.json"&&ur(t,{changedFile:"manifest.json"}),s?.forEach(n=>{n.includes(r)&&ur(t,{changedFile:"_locales"})}),Object.entries(i).forEach(([n,c])=>{let p=Array.isArray(c)?c:[c];Object.values(p).flatMap(u=>u).includes(r)&&n==="background/service_worker"&&ur(t,{changedFile:"service_worker"})}),Object.entries(o).forEach(([n,c])=>{c?.includes(r)&&n==="declarative_net_request"&&ur(t,{changedFile:"declarative_net_request"})})}var hs=a(require("path")),ua=a(require("fs")),ze=a(require("ws"));var Je=a(require("path")),vl=a(require("http")),la=a(require("https")),gs=a(require("fs"));var pa=t=>{if(!gs.default.existsSync(t))return;let e=Je.default.basename(t);return gs.default.readFileSync(Je.default.join(__dirname,"certs",e))};function fa(t){let e={key:pa(Je.default.join(__dirname,"certs","localhost.key")),cert:pa(Je.default.join(__dirname,"certs","localhost.cert"))},r=la.default.createServer(e,(s,i)=>{i.writeHead(200),i.end()});return r.on("error",s=>{throw console.error(vi(t)),new Error(s.message)}),{server:r,port:t}}function _l(t,e){switch(e){case"chrome":return new ze.default.Server({host:"localhost",port:t});case"edge":return new ze.default.Server({host:"localhost",port:t+1});case"firefox":return new ze.default.Server({server:fa(t+2).server});default:return new ze.default.Server({host:"localhost",port:8888})}}async function ma(t,e){let r=t.options.context||"",s=require(hs.default.join(r,"manifest.json")),o=_l(8e3,e.browser);if(o.on("connection",n=>{n.send(JSON.stringify({status:"serverReady"})),n.on("error",c=>{console.log(yi(c))}),n.on("message",c=>{let p=JSON.parse(c.toString());if(p.status==="clientReady"){let l=require(hs.default.join(r,"manifest.json"));setTimeout(()=>{console.log(zr(l,e.browser,p)),console.log("")},2500),$i(e.browser)&&setTimeout(()=>{console.log(hi(e.browser))},5e3)}})}),e.browser==="firefox"||e.browser==="gecko-based"){let n=Ci(s);console.log(zr(s,e.browser,n)),console.log(""),ua.default.existsSync(nt)||(console.log(xi()),console.log(""))}return o}var da=a(require("path")),ys=a(require("fs"));function ga(t,e){let r=da.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let s=ys.default.readFileSync(r,"utf8"),i=s.replace(/__RELOAD_PORT__/g,e.toString());i!==s&&ys.default.writeFileSync(r,i,"utf8")}catch(s){console.error(`Error processing file: ${s.message}`)}}process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Ve=class{manifestPath;port;browser;stats;constructor(e){this.manifestPath=e.manifestPath,this.port=e.port||8e3,this.browser=e.browser||"chrome",this.stats=e.stats}async apply(e){if(!this.manifestPath)return;ga(this.browser,this.port);let r=await ma(e,{...this,mode:e.options.mode,browser:this.browser,stats:this.stats,port:this.port});e.hooks.watchRun.tapAsync("reload:create-web-socket-server",(s,i)=>{let n=(s.modifiedFiles||new Set).values().next().value;if(!n){i();return}let c=He.default.relative(He.default.dirname(this.manifestPath),n),p=He.default.relative(process.cwd(),He.default.dirname(n));process.env.EXTENSION_ENV==="development"&&console.info(`\u25BA\u25BA Updated file \`${c}\` (relative to ${p})`),this.manifestPath&&ca(r,this.manifestPath,n),i()})}};var bs=a(require("path"));function ha(t,e,r){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[bs.default.dirname(r)],exclude:/node_modules/,use:[{loader:bs.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:r,browser:e}}]})}var ws=a(require("path"));function ya(t,e,r){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[ws.default.dirname(r)],exclude:/node_modules/,use:[{loader:ws.default.resolve(__dirname,"./inject-firefox-client-loader"),options:{manifestPath:r,browser:e}}]})}var dr=require("webpack");var xs=a(require("content-security-policy-parser"));function ba(t){let e="";for(let r in t)e+=`${r} ${t[r].join(" ")}; `;return e.trim()}function wa(t){let e=t.content_security_policy;if(!e)return"script-src 'self' 'unsafe-eval' blob: filesystem:; object-src 'self' blob: filesystem:; ";let r=(0,xs.default)(e);if(!r.get("script-src"))r.set("script-src",["'self'","'unsafe-eval'","blob:","filesystem:"]);else{let i=r.get("script-src")||[];i.includes("'unsafe-eval'")||i.push("'unsafe-eval'"),i.includes("blob:")||i.push("blob:"),i.includes("filesystem:")||i.push("filesystem:"),r.set("script-src",i)}r.get("object-src")||r.set("object-src",["'self'","blob:","filesystem:"]);let s=Object.fromEntries(r.entries());return ba(s)}function xa(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self';"};let r=(0,xs.default)(e.extension_pages||""),s={};for(let n in s)r.get(n)||r.set(n,s[n]);let i=Object.fromEntries(r.entries());return{extension_pages:ba(i)}}function va(t){let e=["/*.json","/*.js","/*.css"],r=t.web_accessible_resources;if(!r||r.length===0)return e;let s=new Set(r);for(let i of e)s.has(i)||s.add(i);return Array.from(s)}function _a(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function vs(t,e){return t.background?{background:{...t.background}}:e==="firefox"||e==="gecko-based"?{background:{...t.background||{},scripts:["background/script.js"]}}:t.manifest_version===2?{background:{...t.background||{},scripts:["background/script.js"]}}:{background:{...t.background||{},service_worker:"background/service_worker.js"}}}function _s(t){return t.externally_connectable&&!t.externally_connectable.ids?{externally_connectable:{...t.externally_connectable,ids:[...new Set(t.externally_connectable.ids||[]),"*"]}}:t.externally_connectable&&!t.externally_connectable.ids?{externally_connectable:{...t.externally_connectable,ids:["*"]}}:{}}var mr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}generateManifestPatches(e){let r=J(e,this.manifestPath),s={...r,content_security_policy:r.manifest_version===3?xa(r):wa(r),...r.manifest_version===3?r.permissions?{permissions:[...new Set(["scripting",...r.permissions])]}:{permissions:["scripting"]}:{},...vs(r,this.browser),..._s(r),web_accessible_resources:r.manifest_version===3?_a(r):va(r)},i=JSON.stringify(s,null,2),o=new dr.sources.RawSource(i);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",o)}apply(e){e.hooks.thisCompilation.tap("run-chromium:apply-manifest-dev-defaults",r=>{r.hooks.processAssets.tap({name:"run-chromium:apply-manifest-dev-defaults",stage:dr.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},s=>{if(!this.manifestPath){let i="No manifest.json found in your extension bundle. Unable to patch manifest.json.";r&&e.webpack.WebpackError&&r.errors.push(new e.webpack.WebpackError(`run-chromium: ${i}`));return}this.generateManifestPatches(r)})})}};var Ss=a(require("fs")),he=a(require("path")),Sa=a(require("webpack-target-webextension"));var gr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}handleBackground(e,r,s){let i=he.default.resolve(__dirname,r==="firefox"||r==="gecko-based"?"minimum-firefox-file.mjs":"minimum-chromium-file.mjs"),o=he.default.dirname(this.manifestPath),n=S(s,r);if(r==="firefox"||r==="gecko-based"){n=s.background;let c=n?.scripts;if(c&&c.length>0){let p=he.default.join(o,c[0]);this.ensureFileExists(p)}else this.addDefaultEntry(e,"background/script",i)}else if(n=s.background,s.manifest_version===3){let c=n?.service_worker;if(c){let p=he.default.join(o,c);this.ensureFileExists(p)}else this.addDefaultEntry(e,"background/service_worker",i)}else if(s.manifest_version===2){let c=n?.scripts;if(c&&c.length>0){let p=he.default.join(o,c[0]);this.ensureFileExists(p)}else this.addDefaultEntry(e,"background/script",i)}}ensureFileExists(e){if(!Ss.default.existsSync(e)&&this.manifestPath){let r=require(this.manifestPath),i=S(r,"chrome").name||"Extension.js",o=bi(i,e);throw console.error(o),new Error(o)}}addDefaultEntry(e,r,s){e.options.entry={...e.options.entry,[r]:{import:[s]}}}getEntryName(e){if(e.background){if(this.browser==="firefox"||this.browser==="gecko-based")return{pageEntry:"background/script"};if(e.manifest_version===3)return{serviceWorkerEntry:"background/service_worker"};if(e.manifest_version===2)return{pageEntry:"background/script"}}return{pageEntry:"background"}}apply(e){if(!this.manifestPath||!Ss.default.lstatSync(this.manifestPath).isFile())return;let r=require(this.manifestPath),s=S(r,this.browser);this.handleBackground(e,this.browser,s),new Sa.default({background:this.getEntryName(s),weakRuntimeCheck:!0}).apply(e)}};var Ps=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){(K.includes(this.browser)||this.browser==="chromium-based")&&ha(e,this.browser,this.manifestPath),(this.browser==="firefox"||this.browser==="gecko-based")&&ya(e,this.browser,this.manifestPath),new mr({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new gr({manifestPath:this.manifestPath,browser:this.browser}).apply(e)}},Pa=Ps;var hr=class{static name="plugin-reload";manifestPath;browser;port;stats;autoReload;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.port=e.port,this.stats=e.stats,this.autoReload=e.autoReload}apply(e){e.options.mode==="development"&&new Ve({manifestPath:this.manifestPath,browser:this.browser,port:this.port,stats:this.stats}).apply(e),e.options.mode==="development"&&new Pa({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var ka=a(require("webpack")),yr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new ka.default.ProvidePlugin({browser:require.resolve("webextension-polyfill")}).apply(e)}};var wr=require("webpack");var br=class{browser;manifestPath;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}patchManifest(e){let r=S(e,this.browser);return JSON.stringify(r,null,2)}apply(e){e.hooks.compilation.tap("compatibility:browser-specific-fields",r=>{r.hooks.processAssets.tap({name:"compatibility:browser-specific-fields",stage:wr.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE},()=>{let s=J(r,this.manifestPath),i=this.patchManifest(s),o=new wr.sources.RawSource(i);r.updateAsset("manifest.json",o)})})}};var xr=class{static name="plugin-compatibility";manifestPath;browser;polyfill;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.polyfill=e.polyfill||!1}async apply(e){this.polyfill&&this.browser!=="firefox"&&new yr({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new br({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e)}};var Aa=a(require("fs"));var Ea=a(require("webpack")),$a=a(require("content-security-policy-parser"));function Ca(t){let e=t.content_security_policy,r=t.content_security_policy?.extension_pages,s=i=>{if(!i)return;let o=(0,$a.default)(i);if(o.get("script-src")&&o.get("script-src")?.includes("'unsafe-eval'"))return ri()};if(t.manifest_version===3){let i=e?s(r):void 0;if(i)return new Ea.default.WebpackError(i)}return null}var ks=a(require("webpack"));function ja(t,e){let r=t.web_accessible_resources;if(r){let s=r.some(o=>typeof o=="string"),i=r.some(o=>typeof o=="object"||o.resources||o.matches);if(t.manifest_version===2&&!s)return new ks.default.WebpackError(ii(e));if(t.manifest_version===3&&!i)return new ks.default.WebpackError(oi(e))}return null}var Fa=a(require("webpack"));function Da(t,e){return(e==="firefox"||e==="gecko-based")&&t.background?.service_worker?new Fa.default.WebpackError(ti()):null}var La=a(require("path")),Oa=a(require("fs")),Ia=a(require("webpack"));function Ma(t,e){let r=La.default.join(e.options.context||"","_locales");return Oa.default.existsSync(r)&&!t.default_locale?new Ia.default.WebpackError(si()):null}var vr=class{options;constructor(e){this.options=e}handleRuntimeErrors(e,r,s){let i=Ca(r),o=ja(r,s),n=Da(r,s),c=Ma(r,e);i&&e.errors.push(i),o&&e.errors.push(o),n&&e.options.mode==="production"&&e.errors.push(n),c&&e.errors.push(c)}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(r,s)=>{let i=this.options.manifestPath,o=JSON.parse(Aa.default.readFileSync(i,"utf-8")),n=this.options.browser||"chrome";this.handleRuntimeErrors(r,o,n),s()})}};var Ja=a(require("fs")),za=a(require("ajv"));var Ta={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://json.schemastore.org/chrome-manifest.json",additionalProperties:!0,definitions:{action_v2:{type:"object",properties:{default_title:{type:"string",description:"Tooltip for the main toolbar icon."},default_popup:{$ref:"#/definitions/uri",description:"The popup appears when the user clicks the icon."},default_icon:{anyOf:[{type:"string",description:"FIXME: String form is deprecated."},{type:"object",description:"Icon for the main toolbar.",properties:{"19":{$ref:"#/definitions/icon"},"38":{$ref:"#/definitions/icon"}}}]}},dependencies:{name:{not:{required:["name"]}},icons:{not:{required:["icons"]}},popup:{not:{required:["popup"]}}}},action_v3:{type:"object",properties:{default_title:{type:"string",description:"Tooltip for the main toolbar icon."},default_popup:{$ref:"#/definitions/uri",description:"The popup appears when the user clicks the icon."},default_icon:{type:"object",properties:{"16":{$ref:"#/definitions/icon"},"24":{$ref:"#/definitions/icon"},"32":{$ref:"#/definitions/icon"}}}},dependencies:{name:{not:{required:["name"]}},icons:{not:{required:["icons"]}},popup:{not:{required:["popup"]}}}},command:{type:"object",if:{$comment:"Global shortcuts change the acceptable pattern for the suggested_key.",properties:{global:{const:!0}},required:["global"]},then:{additionalProperties:!1,properties:{description:{type:"string"},global:{type:"boolean",description:"Whether this command should work while Chrome does not have focus. Keyboard shortcut suggestions for global commands are limited to Ctrl+Shift+[0..9]"},suggested_key:{type:"object",additionalProperties:!1,patternProperties:{"^(default|mac|windows|linux|chromeos)$":{type:"string",pattern:"^(Ctrl|Command|MacCtrl)\\+Shift\\+[0-9]"}}}}},else:{additionalProperties:!1,properties:{description:{type:"string"},global:{type:"boolean",description:"Whether this command should work while Chrome does not have focus. Keyboard shortcut suggestions for global commands are limited to Ctrl+Shift+[0..9]"},suggested_key:{type:"object",additionalProperties:!1,patternProperties:{"^(default|mac|windows|linux|chromeos)$":{type:"string",pattern:"^(Ctrl|Command|MacCtrl|Alt|Option)\\+(Shift\\+)?[A-Z]"}}}}}},content_security_policy:{type:"string",description:"This introduces some fairly strict policies that will make extensions more secure by default, and provides you with the ability to create and enforce rules governing the types of content that can be loaded and executed by your extensions and applications.",format:"content-security-policy",default:"script-src 'self'; object-src 'self'"},glob_pattern:{type:"string",format:"glob-pattern"},icon:{$ref:"#/definitions/uri"},match_pattern:{type:"string",format:"match-pattern",pattern:"^((\\*|http|https|file|ftp|chrome-extension):\\/\\/(\\*|\\*\\.[^\\/\\*]+|[^\\/\\*]+)?(\\/.*))|urn:(\\*|.*)|<all_urls>$"},mime_type:{type:"string",format:"mime-type",pattern:"^(?:application|audio|image|message|model|multipart|text|video)\\/[-+.\\w]+$"},page:{$ref:"#/definitions/uri"},permissions:{type:"array",uniqueItems:!0,items:{type:"string",format:"permission"}},scripts:{type:"array",minItems:1,uniqueItems:!0,items:{$ref:"#/definitions/uri"}},uri:{type:"string"},version_string:{type:"string",pattern:"^(?:\\d{1,5}\\.){0,3}\\d{1,5}$"},web_resource:{type:"object",required:["resources"],properties:{resources:{type:"array",description:`An array of resources to be exposed. Resources are specified as strings and may contain * for wildcard matches. For example, "/images/*" exposes everything in the extension's /images directory recursively while "*.png" exposes all PNG files.`,items:{$ref:"#/definitions/glob_pattern"}},matches:{type:"array",description:"A list of URL match patterns specifying which pages can access the resources. Only the origin is used to match URLs; subdomains patterns (*.google.com) and paths are ignored.",items:{$ref:"#/definitions/match_pattern"}},extension_ids:{type:"array",description:"A list of extension IDs, specifying which extensions can access the resources.",items:{type:"string"}},use_dynamic_url:{type:"boolean",description:"If true, only allow resources to be accessible through dynamic ID. The dynamic ID is generated per session. It's regenerated on browser restart or extension reload."}}}},dependencies:{content_scripts:{not:{required:["script_badge"]}},script_badge:{not:{required:["content_scripts"]}}},else:{properties:{background:{type:"object",description:"The background page is an HTML page that runs in the extension process. It exists for the lifetime of your extension, and only one instance of it at a time is active.",properties:{persistent:{type:"boolean",description:"When false, makes the background page an event page (loaded only when needed).",default:!0},page:{$ref:"#/definitions/page",description:"Specify the HTML of the background page.",default:"background.html"},scripts:{$ref:"#/definitions/scripts",description:"A background page will be generated by the extension system that includes each of the files listed in the scripts property.",default:["background.js"]}},dependencies:{page:{not:{required:["scripts"]}},scripts:{not:{required:["page"]}}}},browser_action:{$ref:"#/definitions/action_v2",description:"Use browser actions to put icons in the main Google Chrome toolbar, to the right of the address bar. In addition to its icon, a browser action can also have a tooltip, a badge, and a popup."},page_action:{$ref:"#/definitions/action_v2",description:"Use the chrome.pageAction API to put icons inside the address bar. Page actions represent actions that can be taken on the current page, but that aren't applicable to all pages."},content_security_policy:{$ref:"#/definitions/content_security_policy"},web_accessible_resources:{type:"array",description:"An array of strings specifying the paths (relative to the package root) of packaged resources that are expected to be usable in the context of a web page.",minItems:1,uniqueItems:!0,items:{$ref:"#/definitions/uri"}}},dependencies:{page_action:{not:{required:["browser_action"]}},browser_action:{not:{required:["page_action"]}}}},if:{properties:{manifest_version:{const:3}}},properties:{manifest_version:{type:"number",description:"One integer specifying the version of the manifest file format your package requires.",enum:[2,3]},name:{type:"string",description:"The name of the extension",maxLength:45},version:{$ref:"#/definitions/version_string",description:"One to four dot-separated integers identifying the version of this extension."},default_locale:{type:"string",description:"Specifies the subdirectory of _locales that contains the default strings for this extension.",default:"en"},description:{type:"string",description:"A plain text description of the extension",maxLength:132},icons:{type:"object",description:"One or more icons that represent the extension, app, or theme. Recommended format: PNG; also BMP, GIF, ICO, JPEG.",minProperties:1,properties:{"16":{$ref:"#/definitions/icon",description:"Used as the favicon for an extension's pages and infobar."},"48":{$ref:"#/definitions/icon",description:"Used on the extension management page (chrome://extensions)."},"128":{$ref:"#/definitions/icon",description:"Used during installation and in the Chrome Web Store."},"256":{$ref:"#/definitions/icon",description:"Used during installation and in the Chrome Web Store."}}},chrome_url_overrides:{type:"object",description:"Override pages are a way to substitute an HTML file from your extension for a page that Google Chrome normally provides.",additionalProperties:!1,maxProperties:1,properties:{bookmarks:{$ref:"#/definitions/page",description:"The page that appears when the user chooses the Bookmark Manager menu item from the Chrome menu or, on Mac, the Bookmark Manager item from the Bookmarks menu. You can also get to this page by entering the URL chrome://bookmarks.",default:"bookmarks.html"},history:{$ref:"#/definitions/page",description:"The page that appears when the user chooses the History menu item from the Chrome menu or, on Mac, the Show Full History item from the History menu. You can also get to this page by entering the URL chrome://history.",default:"history.html"},newtab:{$ref:"#/definitions/page",description:"The page that appears when the user creates a new tab or window. You can also get to this page by entering the URL chrome://newtab.",default:"newtab.html"}}},commands:{type:"object",description:"Use the commands API to add keyboard shortcuts that trigger actions in your extension, for example, an action to open the browser action or send a command to the extension.",patternProperties:{".*":{$ref:"#/definitions/command"},"^_execute_browser_action$":{$ref:"#/definitions/command"},"^_execute_page_action$":{$ref:"#/definitions/command"}}},content_scripts:{type:"array",description:"Content scripts are JavaScript files that run in the context of web pages.",minItems:1,uniqueItems:!0,items:{type:"object",required:["matches"],additionalProperties:!1,properties:{matches:{type:"array",description:"Specifies which pages this content script will be injected into.",minItems:1,uniqueItems:!0,items:{$ref:"#/definitions/match_pattern"}},exclude_matches:{type:"array",description:"Excludes pages that this content script would otherwise be injected into.",uniqueItems:!0,items:{$ref:"#/definitions/match_pattern"}},css:{type:"array",description:"The list of CSS files to be injected into matching pages. These are injected in the order they appear in this array, before any DOM is constructed or displayed for the page.",uniqueItems:!0,items:{$ref:"#/definitions/uri"}},js:{$ref:"#/definitions/scripts",description:"The list of JavaScript files to be injected into matching pages. These are injected in the order they appear in this array."},world:{type:"string",description:"The JavaScript world for a script to execute within.",enum:["ISOLATED","MAIN"],default:"ISOLATED"},run_at:{type:"string",description:"Controls when the files in js are injected.",enum:["document_start","document_end","document_idle"],default:"document_idle"},all_frames:{type:"boolean",description:"Controls whether the content script runs in all frames of the matching page, or only the top frame.",default:!1},include_globs:{type:"array",description:"Applied after matches to include only those URLs that also match this glob. Intended to emulate the @include Greasemonkey keyword.",uniqueItems:!0,items:{$ref:"#/definitions/glob_pattern"}},exclude_globs:{type:"array",description:"Applied after matches to exclude URLs that match this glob. Intended to emulate the @exclude Greasemonkey keyword.",uniqueItems:!0,items:{$ref:"#/definitions/glob_pattern"}},match_about_blank:{type:"boolean",description:"Whether to insert the content script on about:blank and about:srcdoc.",default:!1}}}},devtools_page:{$ref:"#/definitions/page",description:"A DevTools extension adds functionality to the Chrome DevTools. It can add new UI panels and sidebars, interact with the inspected page, get information about network requests, and more."},externally_connectable:{description:"Declares which extensions, apps, and web pages can connect to your extension via runtime.connect and runtime.sendMessage.",type:"object",additionalProperties:!1,properties:{ids:{type:"array",items:{type:"string",description:"The IDs of extensions or apps that are allowed to connect. If left empty or unspecified, no extensions or apps can connect."}},matches:{type:"array",items:{type:"string",description:"The URL patterns for web pages that are allowed to connect. This does not affect content scripts. If left empty or unspecified, no web pages can connect."}},accepts_tls_channel_id:{type:"boolean",default:!1,description:"Indicates that the extension would like to make use of the TLS channel ID of the web page connecting to it. The web page must also opt to send the TLS channel ID to the extension via setting includeTlsChannelId to true in runtime.connect's connectInfo or runtime.sendMessage's options."}}},file_browser_handlers:{type:"array",description:"You can use this API to enable users to upload files to your website.",minItems:1,items:{type:"object",required:["id","default_title","file_filters"],additionalProperties:!1,properties:{id:{type:"string",description:"Used by event handling code to differentiate between multiple file handlers"},default_title:{type:"string",description:"What the button will display."},file_filters:{type:"array",description:"Filetypes to match.",minItems:1,items:{type:"string"}}}}},homepage_url:{$ref:"#/definitions/uri",description:"The URL of the homepage for this extension."},incognito:{type:"string",description:"Specify how this extension will behave if allowed to run in incognito mode.",enum:["spanning","split","not_allowed"],default:"spanning"},input_components:{type:"array",description:"Allows your extension to handle keystrokes, set the composition, and manage the candidate window.",items:{type:"object",required:["name","type","id","description","language","layouts"],additionalProperties:!1,properties:{name:{type:"string"},type:{type:"string"},id:{type:"string"},description:{type:"string"},language:{type:"string"},layouts:{type:"array"}}}},key:{type:"string",description:"This value can be used to control the unique ID of an extension, app, or theme when it is loaded during development."},minimum_chrome_version:{$ref:"#/definitions/version_string",description:"The version of Chrome that your extension, app, or theme requires, if any."},nacl_modules:{type:"array",description:"One or more mappings from MIME types to the Native Client module that handles each type.",minItems:1,uniqueItems:!0,items:{type:"object",required:["path","mime_type"],additionalProperties:!1,properties:{path:{$ref:"#/definitions/uri",description:"The location of a Native Client manifest (a .nmf file) within the extension directory."},mime_type:{$ref:"#/definitions/mime_type",description:"The MIME type for which the Native Client module will be registered as content handler."}}}},oauth2:{type:"object",description:"Use the Chrome Identity API to authenticate users: the getAuthToken for users logged into their Google Account and the launchWebAuthFlow for users logged into a non-Google account.",required:["client_id","scopes"],additionalProperties:!1,properties:{client_id:{type:"string",description:"You need to register your app in the Google APIs Console to get the client ID."},scopes:{type:"array",minItems:1,items:{type:"string"}}}},offline_enabled:{type:"boolean",description:"Whether the app or extension is expected to work offline. When Chrome detects that it is offline, apps with this field set to true will be highlighted on the New Tab page."},omnibox:{type:"object",description:"The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.",required:["keyword"],additionalProperties:!1,properties:{keyword:{type:"string",description:"The keyword that will trigger your extension."}}},optional_permissions:{$ref:"#/definitions/permissions",description:"Use the chrome.permissions API to request declared optional permissions at run time rather than install time, so users understand why the permissions are needed and grant only those that are necessary."},options_page:{$ref:"#/definitions/page",description:"To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, a link to it will be provided from the extensions management page at chrome://extensions. Clicking the Options link opens a new tab pointing at your options page.",default:"options.html"},options_ui:{type:"object",description:"To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, an Options link will be shown on the extensions management page at chrome://extensions which opens a dialogue containing your options page.",required:["page"],properties:{page:{type:"string",description:"The path to your options page, relative to your extension's root."},chrome_style:{type:"boolean",default:!0,description:"If true, a Chrome user agent stylesheet will be applied to your options page. The default value is false, but we recommend you enable it for a consistent UI with Chrome."},open_in_tab:{type:"boolean",default:!1,description:"If true, your extension's options page will be opened in a new tab rather than embedded in chrome://extensions. The default is false, and we recommend that you don't change it. This is only useful to delay the inevitable deprecation of the old options UI! It will be removed soon, so try not to use it. It will break."}}},permissions:{$ref:"#/definitions/permissions",description:"Permissions help to limit damage if your extension or app is compromised by malware. Some permissions are also displayed to users before installation, as detailed in Permission Warnings."},requirements:{type:"object",description:"Technologies required by the app or extension. Hosting sites such as the Chrome Web Store may use this list to dissuade users from installing apps or extensions that will not work on their computer.",additionalProperties:!1,properties:{plugins:{type:"object",description:"Indicates if an app or extension requires NPAPI to run. This requirement is enabled by default when the manifest includes the 'plugins' field.",required:["npapi"],additionalProperties:!1,properties:{npapi:{type:"boolean",default:!0}}},"3D":{type:"object",description:"The '3D' requirement denotes GPU hardware acceleration.",required:["features"],additionalProperties:!1,properties:{features:{type:"array",description:"List of the 3D-related features your app requires.",minItems:1,uniqueItems:!0,items:{type:"string",enum:["webgl"]}}}}}},sandbox:{type:"object",description:"Defines an collection of app or extension pages that are to be served in a sandboxed unique origin, and optionally a Content Security Policy to use with them.",required:["pages"],additionalProperties:!1,properties:{pages:{type:"array",minItems:1,uniqueItems:!0,items:{$ref:"#/definitions/page"}},content_security_policy:{$ref:"#/definitions/content_security_policy",default:"sandbox allow-scripts allow-forms"}}},short_name:{type:"string",description:"The short name is typically used where there is insufficient space to display the full name.",maxLength:12},update_url:{$ref:"#/definitions/uri",description:"If you publish using the Chrome Developer Dashboard, ignore this field. If you host your own extension or app: URL to an update manifest XML file."},tts_engine:{type:"object",description:"Register itself as a speech engine.",required:["voices"],additionalProperties:!1,properties:{voices:{type:"array",description:"Voices the extension can synthesize.",minItems:1,uniqueItems:!0,items:{type:"object",required:["voice_name","event_types"],additionalProperties:!1,properties:{voice_name:{type:"string",description:"Identifies the name of the voice and the engine used."},lang:{type:"string",description:"Almost always, a voice can synthesize speech in just a single language. When an engine supports more than one language, it can easily register a separate voice for each language."},gender:{type:"string",description:"If your voice corresponds to a male or female voice, you can use this parameter to help clients choose the most appropriate voice for their application."},event_types:{type:"array",description:"Events sent to update the client on the progress of speech synthesis.",minItems:1,uniqueItems:!0,items:{type:"string",description:"",enum:["start","word","sentence","marker","end","error"]}}}}}}},version_name:{type:"string",description:"In addition to the version field, which is used for update purposes, version_name can be set to a descriptive version string and will be used for display purposes if present."},chrome_settings_overrides:{},content_pack:{},current_locale:{},import:{},platforms:{},signature:{},spellcheck:{},storage:{},system_indicator:{}},required:["manifest_version","name","version"],then:{$comment:"browser_action and page_action are no longer present in v3",properties:{background:{type:"object",description:"The background page is an HTML page that runs in the extension process. It exists for the lifetime of your extension, and only one instance of it at a time is active.",properties:{service_worker:{type:"string",description:"The service worker js file."},type:{type:"string",enum:["module"]}},dependencies:{page:{not:{required:["scripts"]}},scripts:{not:{required:["page"]}}}},host_permissions:{$ref:"#/definitions/permissions"},action:{$ref:"#/definitions/action_v3",description:"Used to control the toolbar button for your extension in Chrome's UI."},content_security_policy:{type:"object",properties:{extension_pages:{$ref:"#/definitions/content_security_policy",description:"This policy covers pages in your extension, including html files and service workers."},sandbox:{$ref:"#/definitions/content_security_policy",description:"This policy covers any sandboxed extension pages that your extension uses."}}},web_accessible_resources:{type:"array",description:"An array of objects that declare resource access rules. Each object maps an array of extension resources to an array of URLs and/or extension IDs that can access those resources.",minItems:1,uniqueItems:!0,items:{$ref:"#/definitions/web_resource"}}},dependencies:{browser_action:{not:{required:["browser_action"]}},page_action:{not:{required:["page_action"]}}}},title:"JSON schema for Google Chrome extension manifest files",type:"object"};function Ra(t){t.addFormat("permission",{type:"string",validate:e=>typeof e=="string"&&e.trim()!==""}),t.addFormat("content-security-policy",{type:"string",validate:e=>typeof e=="string"}),t.addFormat("glob-pattern",{type:"string",validate:e=>typeof e=="string"&&/[\*\?\[\]]/.test(e)}),t.addFormat("match-pattern",{type:"string",validate:e=>e==="<all_urls>"||e==="file:///"||e.startsWith("http://localhost")||e.startsWith("http:// ")||e.startsWith("http://*:*/*")?!0:typeof e=="string"&&/^(\*|http|https|file|ftp):\/\//.test(e)}),t.addFormat("uri",{type:"string",validate:e=>typeof e=="string"&&/^(\w+:)?\/\//.test(e)}),t.addFormat("mime-type",{type:"string",validate:e=>typeof e=="string"&&/^[a-z]+\/[a-z0-9\-\+]+$/.test(e)})}var Na=require("webpack");function Ua(t,e,r){let s=e?.params.missingProperty;t.errors.push(new Na.WebpackError(ci(r,s)))}var qa=require("webpack");function Ba(t,e,r){t.warnings.push(new qa.WebpackError(ai(e,r)))}var Wa=require("webpack");function Es(t,e,r){t.warnings.push(new Wa.WebpackError(ni(r,e)))}var _r=class{options;constructor(e){this.options=e}handleSchemaErrors(e,r,s){let i=new za.default;Ra(i);let o={allOf:[Ta]},n=i.compile(o),c=S(r,s),p=n(c),l=c.manifest_version===3;if(!p&&n.errors){let u=n.errors[0];if(u?.keyword==="required"){Ua(e,u,s);return}l&&(u?.keyword==="type"&&Ba(e,u,s),u?.keyword==="not"&&Es(e,u,s))}}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(r,s)=>{let i=this.options.manifestPath,o=JSON.parse(Ja.default.readFileSync(i,"utf-8")),n=this.options.browser||"chrome";this.handleSchemaErrors(r,o,n),s()})}};var Ga=a(require("fs")),Cs=a(require("path"));var $s=a(require("webpack"));function Ha(t,e){let r="Conflict: Multiple assets emit different content to the same filename ";if(e.message.includes(r)){let s=e.message.replace(r,"");if(s.startsWith("content_scripts"))return new $s.default.WebpackError(pi(t,s))}return null}function Va(t,e){let r=require(t);return e.message.includes("Top-level-await is only supported in EcmaScript Modules")?new $s.default.WebpackError(li(r.name)):null}var Sr=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let r=Cs.default.join(Cs.default.dirname(this.manifestPath),"package.json");if(!Ga.default.existsSync(r))return;let s=require(r).name;e.hooks.compilation.tap("develop:common-errors",i=>{i.hooks.afterSeal.tapAsync("develop:common-errors",o=>{i.errors.forEach((n,c)=>{let p=Ha(s,n),l=Va(s,n);p&&(i.errors[c]=p),l&&(i.errors[c]=l)}),o()})})}};var Pr=class{static name="plugin-errors";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new vr({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new _r({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new Sr({manifestPath:this.manifestPath}).apply(e)}};var dp=a(require("os")),Ms=a(require("path"));var _c=a(require("fs")),Sc=a(require("path")),Pc=require("child_process");var be=a(require("path")),Xe=a(require("fs"));var Xa={alternate_error_pages:{enabled:!1},autofill:{enabled:!1},browser:{check_default_browser:!1,default_browser_setting_enabled:!1},default_apps:"install",distribution:{alternate_shortcut_text:!1,auto_launch_chrome:!1,import_bookmarks:!1,import_history:!1,import_home_page:!1,import_search_engine:!1,suppress_first_run_bubble:!0,do_not_register_for_update_launch:!0,make_chrome_default:!1,make_chrome_default_for_user:!1,require_eula:!1,suppress_first_run_default_browser_prompt:!0},dns_prefetching:{enabled:!1},download:{default_directory:"/tmp/",directory_upgrade:!0,open_pdf_in_adobe_reader:!1,prompt_for_download:!0},enable_do_not_track:!0,extensions:{theme:{use_system:!1},toolbarsize:-1,ui:{developer_mode:!0}},plugins:{plugins_list:[{enabled:!1,name:"Java(TM)"}],show_details:!0},profile:{password_manager_enabled:!1},safebrowsing:{enabled:!1,safebrowsingextended_reporting_enabled:!1},savefile:{default_directory:"/tmp",type:0},search:{suggest_enabled:!1},session:{restore_on_startup:1},sync:{suppress_start:!0},sync_promo:{show_on_first_run_allowed:!1,show_ntp_bubble:!1},translate:{enabled:!1}},Za={...Xa},Ka={...Xa};var y=require("@colors/colors/safe");function v(t,e){let r=e==="warn"?(0,y.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,y.cyan)("\u25BA\u25BA\u25BA"):e==="error"?`${(0,y.bold)((0,y.red)("ERROR"))} in ${ye(t)} ${(0,y.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:(0,y.brightGreen)("\u25BA\u25BA\u25BA");return`${(0,y.gray)("")}${r}`}function ye(t){return t.charAt(0).toUpperCase()+t.slice(1)}function kr(t){let e=ye(t);return`${v(t,"info")} Creating new ${e} user profile...`}function Ya(t){return`${v(t,"success")} Instance already running.`}function Qa(t){return`${v(t,"info")} Instance exited.`}function Er(t,e){let r=t==="firefox"||t==="gecko-based"?"Add-on":"Extension";return`${v(t,"success")} ${ye(t)} ${r} running in ${(0,y.brightBlue)(e||"unknown")} mode.`}function Ge(t,e){let r=e=="null"?`Browser is not installed
|
|
74
|
+
of your ${(0,f.brightYellow)("extension.config.js")} is defined as your extension URL.`}var it=class{static name="plugin-compilation";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new Qr.default().apply(e),new tt({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new st().apply(e),e.hooks.done.tapAsync("develop:brand",(s,r)=>{s.compilation.name=void 0;let n=s.compilation.endTime-s.compilation.startTime,o=require(this.manifestPath).name;console.log(Ar(o,n,s)),r()})}};var _n=a(require("path"));var an=a(require("path")),cn=a(require("fs"));var ie=a(require("path")),at=a(require("fs")),Ts=require("child_process"),tn=require("package-manager-detector");function sn(t,e){return Object.values(e||{}).some(s=>s===t)}function h(t,e,s){let r=ie.default.extname(e),o=$(e,s)?ie.default.normalize(e):t;return[".js",".jsx",".tsx",".ts"].includes(r)&&(o=o.replace(r,".js")),[".html",".njk",".nunjucks"].includes(r)&&(o=o.replace(r,".html")),[".css",".scss",".sass",".less"].includes(r)&&(o=o.replace(r,".css")),Us(o||"")}function Us(t){return t.replace(/\\/g,"/")}function $(t,e={}){if(!e)return!1;let s=ie.default.normalize(Us(t));return Object.values(e).some(n=>typeof n!="string"?!1:Us(n).includes(s))}function W(t,e){if(t.getAsset("manifest.json")||t.assets["manifest.json"]){let s=t.assets["manifest.json"].source().toString();return JSON.parse(s||"{}")}return require(e)}function ae(){return process.env.npm_config_user_agent&&process.env.npm_config_user_agent.includes("pnpm")?"pnpm":!1}function en(){return process.env.npm_execpath?"npm":!1}async function j(t,e){try{let s=await(0,tn.detect)();console.log(Rr(t,s?.name||"unknown"));let r="";s?.name==="yarn"?r=`yarn --silent add ${e.join(" ")} --cwd ${__dirname} --optional`:s?.name==="npm"||en()?r=`npm --silent install ${e.join(" ")} --prefix ${__dirname} --save-optional`:ae()?r=`pnpm --silent add ${e.join(" ")} --prefix ${__dirname} --save-optional`:r=`${s} --silent install ${e.join(" ")} --cwd ${__dirname} --optional`,(0,Ts.execSync)(r,{stdio:"inherit"}),await new Promise(n=>setTimeout(n,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(Nr(t)),s?.name==="yarn"?r="yarn install --silent > /dev/null 2>&1":s?.name==="npm"||en()?r="npm install --silent > /dev/null 2>&1":ae()?r="pnpm install --silent > /dev/null 2>&1":r=`${s} install --silent > /dev/null 2>&1`,(0,Ts.execSync)(r,{stdio:"inherit"})),console.log(Tr(t))}catch(s){console.error(Ur(t,s))}}function ct(t){let e=ie.default.join(t,"package.json");if(!at.default.existsSync(e))return!1;let s=JSON.parse(at.default.readFileSync(e,"utf-8")),r=["react","vue","@angular/core","svelte","solid-js","preact"],n=s.dependencies||{},o=s.devDependencies||{};for(let i of r)if(n[i]||o[i])return!0;return!1}function rn(t){return!at.default.existsSync(ie.default.resolve(__dirname,`run-${t}-profile`))}function nn(t){let e=t.name?.replace(/ /g,"-").toLowerCase();return{data:{id:`${e}@extension-js`,manifest:t,management:{id:`${e}@extension-js`,mayDisable:!0,optionsUrl:"",installType:"development",type:"extension",enabled:!0,name:t.name||"",description:t.description||"",version:t.version||"",hostPermissions:t.host_permissions||[],permissions:t.permissions||[],offlineEnabled:t.offline_enabled||!1,shortName:t.short_name||"",isApp:t.app&&t.app.background&&t.app.background.scripts}}}}function P(t,e){return JSON.parse(JSON.stringify(t),function(n,o){let i=n.indexOf(":");if(i===-1)return o;let c=n.substring(0,i);(c===e||c==="chromium"&&Z.includes(e)||c==="chromium"&&e.includes("chromium")||c==="gecko"&&e.includes("gecko"))&&(this[n.substring(i+1)]=o)})}var on=!1;function Pe(t){let e=an.default.join(t,"package.json");if(!cn.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies.sass,n=s.dependencies&&s.dependencies.sass;return r||n?(on||(process.env.EXTENSION_ENV==="development"&&console.log(v("SASS")),on=!0),!0):!1}async function ln(t){if(!Pe(t))return[];try{require.resolve("sass-loader")}catch{await j("PostCSS",["postcss-loader","postcss-scss","postcss-preset-env"]),await j("SASS",["sass","sass-loader","resolve-url-loader"]),console.log(D("SASS")),process.exit(0)}return[{test:/\.(sass|scss)$/,exclude:/\.module\.(sass|scss)$/,type:"css",use:[{loader:require.resolve("sass-loader"),options:{sourceMap:!0,sassOptions:{outputStyle:"expanded"}}}]},{test:/\.module\.(sass|scss)$/,type:"css/module",use:[{loader:require.resolve("sass-loader"),options:{sourceMap:!0,sassOptions:{outputStyle:"expanded"}}}]}]}var fn=a(require("path")),un=a(require("fs"));var pn=!1;function Ee(t){let e=fn.default.join(t,"package.json");if(!un.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies.less,n=s.dependencies&&s.dependencies.less;return r||n?(pn||(process.env.EXTENSION_ENV==="development"&&console.log(v("LESS")),pn=!0),!0):!1}async function mn(t){if(!Ee(t))return[];try{require.resolve("less-loader")}catch{await j("LESS",["less","less-loader","resolve-url-loader"]),console.log(D("LESS")),process.exit(0)}return[{test:/\.less$/,exclude:/\.module\.less$/,type:"css",use:[{loader:require.resolve("less-loader"),options:{sourceMap:!0}}]},{test:/\.module\.less$/,type:"css/module",use:[{loader:require.resolve("less-loader"),options:{sourceMap:!0}}]}]}var R=a(require("path")),N=a(require("fs"));function ll(t){let e=R.default.join(t,"stylelint.config.json"),s=R.default.join(t,".stylelintrc.js file"),r=R.default.join(t,"stylelint.config.mjs"),n=R.default.join(t,".stylelintrc.mjs"),o=R.default.join(t,"stylelint.config.cjs"),i=R.default.join(t,".stylelintrc.cjs"),c=R.default.join(t,".stylelintrc.json"),l=R.default.join(t,".stylelintrc"),p=R.default.join(t,".stylelintrc.yml"),u=R.default.join(t,".stylelintrc.yaml");if(N.default.existsSync(e))return e;if(N.default.existsSync(s))return s;if(N.default.existsSync(r))return r;if(N.default.existsSync(n))return n;if(N.default.existsSync(o))return o;if(N.default.existsSync(i))return i;if(N.default.existsSync(c))return c;if(N.default.existsSync(l))return l;if(N.default.existsSync(p))return p;if(N.default.existsSync(u))return u}var dn=!1;function pl(t){let e=R.default.join(t,"package.json");if(!N.default.existsSync(e))return!1;let r=!!ll(t);return r&&(dn||(process.env.EXTENSION_ENV==="development"&&console.log(v("Stylelint")),dn=!0)),r}async function gn(t){return pl(t),[]}var xn=a(require("path"));var ke=a(require("path")),$e=a(require("fs"));var hn=!1;function lt(t){let e=ke.default.join(t,"package.json");if(!$e.default.existsSync(e))return!1;let s=fl(t),r=require(e),n=r.devDependencies&&r.devDependencies.tailwindcss,o=r.dependencies&&r.dependencies.tailwindcss,i=!!s&&!!(n||o);return i&&(hn||(process.env.EXTENSION_ENV==="development"&&console.log(v("Tailwind")),hn=!0)),i}function fl(t){let e=ke.default.join(t,"tailwind.config.mjs"),s=ke.default.join(t,"tailwind.config.cjs"),r=ke.default.join(t,"tailwind.config.js");if($e.default.existsSync(e))return e;if($e.default.existsSync(s))return s;if($e.default.existsSync(r))return r}var ft=a(require("path")),pt=a(require("fs"));var ce=!1;function ul(t){let e=ft.default.join(t,"package.json");if(!pt.default.existsSync(e))return!1;let s=[".postcssrc",".postcssrc.json",".postcssrc.yaml",".postcssrc.yml",".postcssrc.js",".postcssrc.cjs","postcss.config.js","postcss.config.cjs"];if(pt.default.existsSync(e)){let r=require(e);if(r.dependencies&&r.dependencies.postcss||r.devDependencies&&r.devDependencies.postcss)return ce||(process.env.EXTENSION_ENV==="development"&&console.log(v("PostCSS")),ce=!0),!0}for(let r of s)if(pt.default.existsSync(ft.default.join(t,r)))return ce||(process.env.EXTENSION_ENV==="development"&&console.log(v("PostCSS")),ce=!0),!0;return lt(t)?(ce||(process.env.EXTENSION_ENV==="development"&&console.log(v("PostCSS")),ce=!0),!0):!1}async function yn(t,e){if(!ul(t))return{};try{require.resolve("postcss-loader")}catch{!Pe(t)&&!Ee(t)&&await j("PostCSS",["postcss","postcss-loader","postcss-preset-env"]),console.log(D("PostCSS")),process.exit(0)}return{loader:require.resolve("postcss-loader"),options:{postcssOptions:{ident:"postcss",config:ft.default.resolve(t,"postcss.config.js"),plugins:[[require.resolve("postcss-preset-env"),{autoprefixer:{flexbox:"no-2009"},stage:3}]].filter(Boolean)},sourceMap:e.mode==="development"}}}async function ut(t,e){let s=[];if(lt(t)||Pe(t)||Ee(t)){let r=await yn(t,e);r.loader&&s.push(r)}return e.loader&&s.push({loader:require.resolve("resolve-url-loader"),options:{sourceMap:e.mode==="development",root:t}},{loader:e.loader.startsWith("builtin:")?e.loader:require.resolve(e.loader),options:{...e.loaderOptions,sourceMap:e.mode==="development"}}),s.filter(Boolean)}var Bs=a(require("path")),bn=a(require("fs"));function mt(t,e){if(!t||!e)return!1;let s=JSON.parse(bn.default.readFileSync(e,"utf8"));for(let r of s.content_scripts||[])if(r.js?.length){for(let n of r.js)if(Bs.default.resolve(Bs.default.dirname(e),n)===t)return!0}return!1}async function wn(t,e){let s=xn.default.join(t,"manifest.json");return[{test:/\.css$/,type:"asset",generator:{filename:"content_scripts/[name].[contenthash:8].css"},issuer:r=>mt(r,s),use:await ut(t,{mode:e})}]}var vn=a(require("path"));async function Sn(t,e){let s=vn.default.join(t,"manifest.json");return[{test:/\.css$/,type:"css",issuer:r=>!mt(r,s),use:await ut(t,{mode:e})}]}var dt=class t{static name="plugin-css";manifestPath;constructor(e){this.manifestPath=e.manifestPath}async configureOptions(e){let s=e.options.mode||"development",r=_n.default.dirname(this.manifestPath),n=[],o=await gn(r);n.push(...o);let i=[...await wn(r,s),...await Sn(r,s)],c=await ln(r),l=await mn(r);c.length&&i.push(...c),l.length&&i.push(...l),e.options.plugins=[...e.options.plugins,...n].filter(Boolean),e.options.module.rules=[...e.options.module.rules,...i].filter(Boolean)}async apply(e){if((e.options.mode||"development")==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var gt=class{static name="plugin-static-assets";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async apply(e){let s={test:/\.svg$/i,type:"asset",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2048}}},n=[...e.options.module.rules.some(o=>o&&o.test instanceof RegExp&&o.test.test(".svg")&&o.use!==void 0)?[]:[s],{test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp)$/i,type:"asset",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2*1024}}},{test:/\.(woff|woff2|eot|ttf|otf)$/i,type:"asset",generator:{filename:"assets/[name][ext]"}},{test:/\.(txt|md|csv|tsv|xml|pdf|docx|doc|xls|xlsx|ppt|pptx|zip|gz|gzip|tgz)$/i,type:"asset",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2*1024}}},{test:/\.(csv|tsv)$/i,use:[require.resolve("csv-loader")],generator:{filename:"assets/[name][ext]"}}];e.options.module.rules=[...e.options.module.rules,...n].filter(o=>!!o)}};var Ce=a(require("path"));var qs=a(require("path")),Ws=a(require("fs"));var Pn=!1,ml=[".babelrc",".babelrc.json",".babelrc.js",".babelrc.cjs","babel.config.json","babel.config.js","babel.config.cjs"];function dl(t){let e=qs.default.join(t,"package.json");if(!Ws.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies["babel-core"],n=s.dependencies&&s.dependencies["babel-core"],o=ml.some(i=>Ws.default.existsSync(qs.default.join(t,i)))||!!r||!!n;return o&&(Pn||(process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(v("Babel")),Pn=!0)),o}async function En(t,e){dl(e)}var $n=a(require("path")),Fn=a(require("fs"));var kn=!1;function Fe(t){let e=$n.default.join(t,"package.json");if(!Fn.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies.preact,n=s.dependencies&&s.dependencies.preact;return(r||n)&&(kn||(process.env.EXTENSION_ENV==="development"&&console.log(v("Preact")),kn=!0)),!!r||!!n}async function Cn(t){if(!Fe(t))return;try{require.resolve("@rspack/plugin-preact-refresh")}catch{await j("Preact",["@prefresh/core","@prefresh/utils","@rspack/plugin-preact-refresh","preact"]),console.log(D("Preact")),process.exit(0)}return{plugins:[new(require("@rspack/plugin-preact-refresh"))],loaders:void 0,alias:{react:"preact/compat","react-dom/test-utils":"preact/test-utils","react-dom":"preact/compat","react/jsx-runtime":"preact/jsx-runtime"}}}var Dn=a(require("path")),Ln=a(require("fs"));var jn=!1;function ht(t){let e=Dn.default.join(t,"package.json");if(!Ln.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies.react,n=s.dependencies&&s.dependencies.react;return(r||n)&&(jn||(process.env.EXTENSION_ENV==="development"&&console.log(v("React")),jn=!0)),!!r||!!n}async function On(t){if(!ht(t))return;try{require.resolve("react-refresh")}catch{await j("React",["react-refresh","@rspack/plugin-react-refresh"]),console.log(D("React")),process.exit(0)}return{plugins:[new(require("@rspack/plugin-react-refresh"))({overlay:!1})],loaders:void 0,alias:void 0}}var Mn=a(require("path")),An=a(require("fs")),Rn=require("vue-loader");var In=!1;function gl(t){let e=Mn.default.join(t,"package.json");if(!An.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies.vue,n=s.dependencies&&s.dependencies.vue;return(r||n)&&(In||(process.env.EXTENSION_ENV==="development"&&console.log(v("Vue")),In=!0)),!!r||!!n}async function Nn(t){if(!gl(t))return;try{require.resolve("vue-loader")}catch{await j("Vue",["vue-loader","vue-template-compiler","@vue/compiler-sfc"]),console.log(D("Vue")),process.exit(0)}let e=[{test:/\.vue$/,loader:require.resolve("vue-loader"),options:{experimentalInlineMatchResource:!0},include:t,exclude:/node_modules/}];return{plugins:[new Rn.VueLoaderPlugin],loaders:e,alias:void 0}}var yt=a(require("path")),bt=a(require("fs"));var Tn=!1;function K(t){let e=yt.default.join(t,"package.json");if(!bt.default.existsSync(e))return!1;let s=yl(t),r=require(e),n=r.devDependencies&&r.devDependencies.typescript,o=r.dependencies&&r.dependencies.typescript;return Tn||((n||o)&&(s?process.env.EXTENSION_ENV==="development"&&console.log(v("TypeScript")):(console.log(zr()),bl(t))),Tn=!0),!!s&&!!(n||o)}function hl(t,e){return{compilerOptions:{allowJs:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0,jsx:ct(t)?"react-jsx":"preserve",lib:["dom","dom.iterable","esnext"],moduleResolution:"node",module:"esnext",resolveJsonModule:!0,strict:!0,target:"esnext",isolatedModules:!1,skipLibCheck:!0},exclude:["node_modules","dist"]}}function yl(t){let e=yt.default.join(t,"tsconfig.json");if(bt.default.existsSync(e))return e}function bl(t){bt.default.writeFileSync(yt.default.join(t,"tsconfig.json"),JSON.stringify(hl(t,{mode:"development"}),null,2))}var Bn=a(require("path")),qn=a(require("fs")),Wn=require("svelte-preprocess");var Un=!1;function xl(t){let e=Bn.default.join(t,"package.json");if(!qn.default.existsSync(e))return!1;let s=require(e),r=s.devDependencies&&s.devDependencies?.svelte,n=s.dependencies&&s.dependencies.svelte;return(r||n)&&(Un||(process.env.EXTENSION_ENV==="development"&&console.log(v("Svelte")),Un=!0)),!!r||!!n}async function Jn(t,e){if(!xl(t))return;try{require.resolve("svelte-loader")}catch{await j("TypeScript",["typescript"]),await j("Svelte",["svelte-loader","svelte-preprocess"]),console.log(D("Svelte")),process.exit(0)}return{plugins:void 0,loaders:[{test:/\.svelte\.ts$/,use:[require.resolve("svelte-loader")],include:t,exclude:/node_modules/},{test:/\.(svelte|svelte\.js)$/,use:{loader:require.resolve("svelte-loader"),options:{preprocess:(0,Wn.sveltePreprocess)({typescript:!0}),emitCss:!0,compilerOptions:{dev:e==="development",css:"injected"},hotReload:e==="development"}},include:t,exclude:/node_modules/},{test:/node_modules\/svelte\/.*\.mjs$/,resolve:{fullySpecified:!1}}],alias:void 0}}var xt=class t{static name="plugin-js-frameworks";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async configureOptions(e){let s=e.options.mode||"development",r=Ce.default.dirname(this.manifestPath),n=await En(e,r),o=await On(r),i=await Cn(r),c=await Nn(r),l=await Jn(r,s);e.options.resolve.alias={...n?.alias||{},...o?.alias||{},...i?.alias||{},...c?.alias||{},...l?.alias||{},...e.options.resolve.alias},e.options.module.rules=[{test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Ce.default.dirname(this.manifestPath)],exclude:[/[\\/]node_modules[\\/]/],use:{loader:"builtin:swc-loader",options:{sync:!0,module:{type:"es6"},minify:s==="production",isModule:!0,sourceMap:this.mode==="development",env:{targets:["chrome >= 100"]},jsc:{parser:{syntax:K(r)?"typescript":"ecmascript",tsx:K(r)&&(ht(r)||Fe(r)),jsx:!K(r)&&(ht(r)||Fe(r)),dynamicImport:!0},transform:{react:{development:s==="development",refresh:s==="development",runtime:"automatic",importSource:"react",...Fe(r)?{pragma:"h",pragmaFrag:"Fragment",throwIfNamespace:!0,useBuiltins:!1}:{}}}}}}},...n?.loaders||[],...o?.loaders||[],...i?.loaders||[],...c?.loaders||[],...l?.loaders||[],...e.options.module.rules].filter(Boolean),o?.plugins?.forEach(p=>p.apply(e)),i?.plugins?.forEach(p=>p.apply(e)),c?.plugins?.forEach(p=>p.apply(e)),l?.plugins?.forEach(p=>p.apply(e)),K(r)&&(e.options.resolve.tsConfig={configFile:Ce.default.resolve(Ce.default.dirname(this.manifestPath),"tsconfig.json")})}async apply(e){if((e.options.mode||"development")==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var Do=a(require("path"));var zn=a(require("path"));function Hn(t,e){if(!e||!e.action||!e.action.default_popup)return;let s=e.action.default_popup;return zn.default.join(t,s)}var Vn=a(require("path"));function Xn(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let s=e.browser_action.default_popup;return Vn.default.join(t,s)}var wt=a(require("path"));function Gn(t,e){let s={newtab:void 0};if(!e||!e.chrome_url_overrides)return{"chrome_url_overrides/newtab":void 0};if(e.chrome_url_overrides.history){let r=e.chrome_url_overrides.history;s={"chrome_url_overrides/history":wt.default.join(t,r)}}if(e.chrome_url_overrides.newtab){let r=e.chrome_url_overrides.newtab;s={"chrome_url_overrides/newtab":wt.default.join(t,r)}}if(e.chrome_url_overrides.bookmarks){let r=e.chrome_url_overrides.bookmarks;s={"chrome_url_overrides/bookmarks":wt.default.join(t,r)}}return s}var Zn=a(require("path"));function Kn(t,e){if(!e||!e.devtools_page)return;let s=e.devtools_page;return Zn.default.join(t,s)}var Js=a(require("path"));function Yn(t,e){if(e.options_page){let r=e.options_page;return Js.default.join(t,r)}if(!e||!e.options_ui||!e.options_ui.page)return;let s=e.options_ui.page;return Js.default.join(t,s)}var Qn=a(require("path"));function eo(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let s=e.page_action.default_popup;return Qn.default.join(t,s)}var to=a(require("path"));function so(t,e){if(!e||!e.sandbox||!e.sandbox.pages)return{"sandbox/page-0":void 0};let s=e.sandbox.pages,r={};for(let[n,o]of s.entries())r[`sandbox/page-${n}`]=to.default.join(t,o);return r}var ro=a(require("path"));function no(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let s=e.side_panel.default_path;return ro.default.join(t,s)}var oo=a(require("path"));function io(t,e){if(!e||!e.sidebar_action||!e.sidebar_action.default_panel)return;let s=e.sidebar_action.default_panel;return oo.default.join(t,s)}function je(t,e){return{"action/default_popup":Hn(t,e),"browser_action/default_popup":Xn(t,e),...Gn(t,e),devtools_page:Kn(t,e),"options_ui/page":Yn(t,e),"page_action/default_popup":eo(t,e),...so(t,e),"side_panel/default_path":no(t,e),"sidebar_action/default_panel":io(t,e)}}var zs=a(require("path"));function ao(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return zs.default.join(t,e.action.default_icon);let s=[];for(let r in e.action.default_icon)s.push(zs.default.join(t,e.action.default_icon[r]));return s}var Hs=a(require("path"));function co(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let s=[];if(typeof e.browser_action.default_icon=="string")return Hs.default.join(t,e.browser_action.default_icon);for(let r in e.browser_action.default_icon){let n=e.browser_action.default_icon[r]=Hs.default.join(t,e.browser_action.default_icon[r]);s.push(n)}return s}var Vs=a(require("path"));function lo(t,e){if(!(!e||!e.browser_action||!e.browser_action.theme_icons)){for(let s of e.browser_action.theme_icons)s.light&&(s.light=Vs.default.join(t,s.light)),s.dark&&(s.dark=Vs.default.join(t,s.dark)),s.size&&delete s.size;return e.browser_action.theme_icons}}var po=a(require("path"));function fo(t,e){if(!e||!e.icons)return;let s=[];for(let r in e.icons){let n=po.default.join(t,e.icons[r]);s.push(n)}return s}var Xs=a(require("path"));function uo(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return Xs.default.join(t,e.page_action.default_icon);let s=[];for(let r in e.page_action.default_icon){let n=Xs.default.join(t,e.page_action.default_icon[r]);s.push(n)}return s}var mo=a(require("path"));function go(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:mo.default.join(t,e.sidebar_action.default_icon)}function ho(t,e){return{action:ao(t,e),browser_action:co(t,e),"browser_action/theme_icons":lo(t,e),icons:fo(t,e),page_action:uo(t,e),sidebar_action:go(t,e)}}var yo=a(require("path"));function bo(t,e){let s={};return!e||!e.declarative_net_request||!e.declarative_net_request.rule_resources?{"declarative_net_request/rule_resources-0":void 0}:(e.declarative_net_request.rule_resources.forEach(n=>{s[`declarative_net_request/${n.id}`]=yo.default.join(t,n.path)}),s)}var xo=a(require("path"));function wo(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let s=e.storage.managed_schema;return xo.default.join(t,s)}function vo(t,e){return{...bo(t,e),"storage/managed_schema":wo(t,e)}}var De=a(require("path")),Le=a(require("fs"));function So(t,e){let s=De.default.join(De.default.dirname(e),"_locales"),r=[];if(Le.default.existsSync(s))for(let n of Le.default.readdirSync(s)){let o=De.default.join(s,n);if(o&&Le.default.statSync(o).isDirectory())for(let i of Le.default.readdirSync(o))r.push(De.default.join(t,"_locales",n,i))}return r}var _o=a(require("path"));function Po(t,e){if(!e||!e.background)return;let s=e.background.scripts;if(s)return s.map(r=>_o.default.join(t,r))}var Eo=a(require("path"));function ko(t,e){if(!e||!e.background)return;let s=e.background.service_worker;if(s)return Eo.default.join(t,s)}var Gs=a(require("path"));function $o(t,e){if(!e||!e.content_scripts)return{"content_scripts/content-0":void 0};let s=o=>{if(o.js?.length!==0)return o.js?.map(i=>Gs.default.join(t,i))},r=o=>{if(o.css?.length!==0)return o.css?.map(i=>Gs.default.join(t,i))},n={};for(let[o,i]of e.content_scripts.entries()){let c=s(i),l=r(i);n[`content_scripts/content-${o}`]=[...(c||[]).filter(p=>p!=null),...(l||[]).filter(p=>p!=null)]}return n}var Fo=a(require("path"));function Co(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let s=e.user_scripts.api_script;return Fo.default.join(t,s)}function Oe(t,e){return{"background/scripts":Po(t,e),"background/service_worker":ko(t,e),...$o(t,e),"user_scripts/api_script":Co(t,e)}}function jo(t){if(!(!t||!t.web_accessible_resources||!t.web_accessible_resources.length))return t.web_accessible_resources}function le({manifestPath:t,browser:e}){let s=Do.default.dirname(t),r=require(t),n=P(r,e||"chrome");return{html:je(s,n),icons:ho(s,n),json:vo(s,n),locales:So(s,t),scripts:Oe(s,n),web_accessible_resources:jo(n)}}var pe=a(require("path"));var vt=a(require("fs")),Ie=a(require("path"));function St(t,e){if(!vt.default.existsSync(t)||!vt.default.statSync(t).isDirectory())return[];let s=[];function r(n){let o=vt.default.readdirSync(n,{withFileTypes:!0});for(let i of o){let c=Ie.default.join(n,i.name);i.isDirectory()?r(c):i.isFile()&&e(i.name)&&s.push(c)}}return r(t),s}function _t(t,e,s=""){return!e||!e.length?{}:e.reduce((r,n)=>{let o=Ie.default.extname(n),i=Ie.default.basename(n,o),c=s?`${s}/${i}`:Ie.default.relative(t,n);return{...r,[c]:n}},{})}function Lo({manifestPath:t}){let e=pe.default.dirname(t),s={public:pe.default.join(e,"public"),pages:pe.default.join(e,"pages"),scripts:pe.default.join(e,"scripts")},r={public:St(s.public,()=>!0),pages:St(s.pages,o=>o.endsWith(".html")),scripts:St(s.scripts,o=>[".js",".mjs",".jsx",".mjsx",".ts",".mts",".tsx",".mtsx"].includes(pe.default.extname(o)))};return{public:_t(e,r.public),pages:_t(e,r.pages,"pages"),scripts:_t(e,r.scripts,"scripts")}}var Oo=a(require("fs")),fe=a(require("@rspack/core"));var Pt=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){e.hooks.thisCompilation.tap("manifest:emit-manifest",s=>{s.hooks.processAssets.tap({name:"manifest:emit-manifest",stage:fe.Compilation.PROCESS_ASSETS_STAGE_PRE_PROCESS},()=>{let r=this.manifestPath,n;try{let c=Oo.default.readFileSync(r,"utf-8");n=JSON.parse(c),"$schema"in n&&delete n.$schema}catch(c){s.errors.push(new fe.default.WebpackError(qr(c)));return}let o=JSON.stringify(n,null,2);s.emitAsset("manifest.json",new fe.sources.RawSource(o))})})}};var Me=require("@rspack/core");function Io(t,e){return t.background&&t.background.scripts&&{background:{...t.background,...t.background.scripts&&{scripts:[...t.background.scripts.map(s=>h("background/scripts.js",s,e))]}}}}var Mo=a(require("path"));var Et=t=>Mo.default.basename(t);function Ao(t,e){return t.browser_action&&{browser_action:{...t.browser_action,...t.browser_action.default_popup&&{default_popup:h("browser_action/default_popup.html",t.browser_action.default_popup,e)},...t.browser_action.default_icon&&{default_icon:typeof t.browser_action.default_icon=="string"?h(`icons/${Et(t.browser_action.default_icon)}`,t.browser_action.default_icon,e):Object.fromEntries(Object.entries(t.browser_action.default_icon).map(([s,r])=>[s,h(`icons/${Et(r)}`,r,e)]))},...t.browser_action.theme_icons&&{theme_icons:t.browser_action.theme_icons.map(s=>({...s,...s.light&&{light:h(`browser_action/${Et(s.light)}`,s.light,e)},...s.dark&&{dark:h(`browser_action/${Et(s.dark)}`,s.dark,e)}}))}}}}function Ro(t,e){return t.declarative_net_request&&{declarative_net_request:{...t.declarative_net_request,rule_resources:t.declarative_net_request.rule_resources.map(s=>({...s,path:s.path&&h(`declarative_net_request/${s.id}.json`,s.path,e)}))}}}function No(t,e){return{...Io(t,e),...Ao(t,e),...Ro(t,e)}}var Uo=a(require("path"));var To=t=>Uo.default.basename(t);function Bo(t,e){return t.action&&{action:{...t.action,...t.action.default_popup&&{default_popup:h("action/default_popup.html",t.action.default_popup,e)},...t.action.default_icon&&{default_icon:typeof t.action.default_icon=="string"?h(`action/${To(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([s,r])=>[s,h(`action/${To(r)}`,r,e)]))}}}}function qo(t,e){return t.background&&t.background.service_worker&&{background:{...t.background,...t.background.service_worker&&{service_worker:h("background/service_worker.js",t.background.service_worker,e)}}}}function kt(t,e){return t.side_panel&&{side_panel:{...t.side_panel.default_path&&{default_path:h("side_panel/default_path.html",t.side_panel.default_path,e)}}}}function Wo(t,e){return{...Bo(t,e),...qo(t,e),...kt(t,e)}}function Jo(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:h("background/page.html",t.background.page,e)}}}}function zo(t,e){return t.chrome_url_overrides&&{chrome_url_overrides:{...t.chrome_url_overrides.bookmarks&&{bookmarks:h("chrome_url_overrides/bookmarks.html",t.chrome_url_overrides.bookmarks,e)},...t.chrome_url_overrides.history&&{history:h("chrome_url_overrides/history.html",t.chrome_url_overrides.history,e)},...t.chrome_url_overrides.newtab&&{newtab:h("chrome_url_overrides/newtab.html",t.chrome_url_overrides.newtab,e)}}}}function Ho(t,e){return t.content_scripts&&{content_scripts:t.content_scripts.map((s,r)=>{let n=[...new Set(s.js)],o=[...new Set(s.css)];return{...s,js:[...n.map(i=>h(`content_scripts/content-${r}.js`,i,e))],css:[...o.map(i=>h(`content_scripts/content-${r}.css`,i,e))]}})}}function Vo(t,e){return t.devtools_page&&{devtools_page:h("devtools_page.html",t.devtools_page,e)}}var Xo=a(require("path"));var wl=t=>Xo.default.basename(t);function Go(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([s,r])=>[s,h(`icons/${wl(r)}`,r,e)]))}}function Zo(t,e){return t.options_page&&{options_page:h("options_ui/page.html",t.options_page,e)}}function Ko(t,e){return t.options_ui&&{options_ui:{...t.options_ui,...t.options_ui.page&&{page:h("options_ui/page.html",t.options_ui.page,e)}}}}var Qo=a(require("path"));var Yo=t=>Qo.default.basename(t);function ei(t,e){return t.page_action&&{page_action:{...t.page_action,...t.page_action.default_popup&&{default_popup:h("page_action/default_popup.html",t.page_action.default_popup,e)},...t.page_action.default_icon&&{default_icon:typeof t.page_action.default_icon=="string"?h(`icons/${Yo(t.page_action.default_icon)}`,t.page_action.default_icon,e):Object.fromEntries(Object.entries(t.page_action.default_icon).map(([s,r])=>[s,h(`icons/${Yo(r)}`,r,e)]))}}}}function ti(t,e){return t.sandbox&&{sandbox:{...t.sandbox,...t.sandbox.pages&&{pages:t.sandbox.pages.map((s,r)=>h(`sandbox/page-${r}.html`,s,e))}}}}var si=a(require("path"));var vl=t=>si.default.basename(t);function ri(t,e){return t.sidebar_action&&{sidebar_action:{...t.sidebar_action,...t.sidebar_action.default_panel&&{default_panel:h("sidebar_action/default_panel.html",t.sidebar_action.default_panel,e)},...t.sidebar_action.default_icon&&{default_icon:h(`icons/${vl(t.sidebar_action.default_icon)}`,t.sidebar_action.default_icon,e)}}}}function ni(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:h("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var oi=a(require("path"));var Sl=t=>oi.default.basename(t);function ii(t,e){return t.theme&&{theme:{...t.theme,...t.theme.images&&{images:{...t.theme.images,theme_frame:h(`theme/images/${Sl(t.theme.images.theme_frame)}`,t.theme.images.theme_frame,e)}}}}}function ai(t,e){return t.user_scripts&&{user_scripts:{...t.user_scripts,...t.user_scripts.api_script&&{api_script:h("user_scripts/api_script.js",t.user_scripts.api_script,e)}}}}function ci(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function li(t,e){return{...Jo(t,e),...zo(t,e),...Ho(t,e),...Vo(t,e),...Go(t,e),...Zo(t,e),...Ko(t,e),...ei(t,e),...ti(t,e),...kt(t,e),...ri(t,e),...ni(t,e),...ii(t,e),...ai(t,e),...ci(t)}}function Zs(t,e,s){let r=e||require(t);return JSON.stringify({...r,...li(r,s),...No(r,s),...Wo(r,s)},null,2)}var $t=class{manifestPath;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.excludeList=e.excludeList}applyDevOverrides(e){return e.content_scripts?e.content_scripts.map((s,r)=>(s.css.length&&!s.js.length&&(s.js=[h(`content_scripts-${r}`,"dev.js",{})]),s)):{}}apply(e){e.hooks.thisCompilation.tap("manifest:update-manifest",s=>{s.hooks.processAssets.tap({name:"manifest:update-manifest",stage:Me.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{if(s.errors.length>0)return;let r=W(s,this.manifestPath),n=Zs(this.manifestPath,r,this.excludeList||{}),o={...r,...JSON.parse(n)};e.options.mode==="development"&&o.content_scripts&&(o.content_scripts=this.applyDevOverrides(o));let i=JSON.stringify(o,null,2),c=new Me.sources.RawSource(i);s.updateAsset("manifest.json",c)}),e.options.mode==="production"&&s.hooks.processAssets.tap("manifest:update-manifest",()=>{if(s.errors.length>0)return;let r=W(s,this.manifestPath),n=Zs(this.manifestPath,r,this.excludeList||{}),o={...r,...JSON.parse(n)},i=JSON.stringify(o,null,2),c=new Me.sources.RawSource(i);s.updateAsset("manifest.json",c)})})}};var pi=a(require("fs")),Ft=class{dependencyList;constructor(e){this.dependencyList=e}apply(e){e.hooks.afterCompile.tap("manifest:add-dependency",s=>{if(s.errors?.length)return;let r=new Set(s.fileDependencies);this.dependencyList&&this.dependencyList.forEach(n=>{pi.default.existsSync(n)&&(r.has(n)||(r.add(n),s.fileDependencies.add(n)))})})}};var fi=a(require("fs")),ui=a(require("path")),jt=a(require("@rspack/core"));var Ct=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}extractPaths(e){let s=Array.isArray(e)?e:[e];if(typeof s[0]=="string")return s;let r=[];if(typeof e=="object"&&!Array.isArray(e)){let n=e;n.light&&r.push(n.light),n.dark&&r.push(n.dark)}return r}handleErrors(e,s){let r=[".png",".jpg",".jpeg",".svg",".gif",".webp"],n=[".json"],o=[".js",".ts",".jsx",".tsx",".mjs",".cjs"],i=".html",c=Object.entries(this.includeList||{});for(let[l,p]of c)if(p){let u=this.extractPaths(p);for(let m of u){let g=ui.default.extname(m),b=require(this.manifestPath),S=P(b,"chrome").name||"Extension.js";if(!fi.default.existsSync(m)){if(m.startsWith("/"))return;let E=oe(S,l,m);r.includes(g)?e.errors.push(new s(E)):n.includes(g)?e.errors.push(new s(E)):o.includes(g)?e.errors.push(new s(E)):g===i?e.errors.push(new s(E)):e.errors.push(new s(E))}}}}apply(e){e.hooks.compilation.tap("manifest:check-manifest-files",s=>{s.hooks.processAssets.tap({name:"compatibility:check-manifest-files",stage:jt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT},()=>{let r=jt.default.WebpackError;this.handleErrors(s,r)})})}};var mi=a(require("fs")),Lt=a(require("@rspack/core"));var Dt=class{manifestPath;browser;includeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList}flattenAndSort(e){return e.flat(1/0).sort()}apply(e){e.hooks.watchRun.tapAsync("manifest:throw-if-recompile-is-needed",(s,r)=>{if((s.modifiedFiles||new Set).has(this.manifestPath)){let o=s.options.context||"",i=`${o}/package.json`;if(!mi.default.existsSync(i)){r();return}let c=require(this.manifestPath),l=P(c,this.browser),p=this.flattenAndSort(Object.values(je(o,l))),u=this.flattenAndSort(Object.values(Oe(o,l)));s.hooks.thisCompilation.tap("manifest:throw-if-recompile-is-needed",m=>{m.hooks.processAssets.tap({name:"manifest:check-manifest-files",stage:Lt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY},()=>{let b=m.getAsset("manifest.json")?.source.source().toString(),_=JSON.parse(b||"{}"),S=this.flattenAndSort(Object.values(je(o,_))),E=this.flattenAndSort(Object.values(Oe(o,_)));if(u.toString()!==E.toString()||p.toString()!==S.toString()){let A=p.filter(q=>!S.includes(q))[0],T=S.filter(q=>!p.includes(q))[0],_e=Wr(T,A);m.errors.push(new Lt.default.WebpackError(_e))}})})}r()})}};var Ot=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Pt({manifestPath:this.manifestPath}).apply(e),new Ct({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new $t({manifestPath:this.manifestPath,excludeList:this.excludeList}).apply(e),new Ft([this.manifestPath]).apply(e),new Dt({manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList}).apply(e)}};var tr=a(require("path"));var Ys=a(require("fs")),At=a(require("@rspack/core")),bi=require("@rspack/core");var di=a(require("fs")),me=a(require("path")),gi=a(require("parse5-utils"));var ue=a(require("parse5-utils"));function It(t){try{return new URL(t),!0}catch{return!1}}function Ae(t,e){let{childNodes:s=[]}=t;for(let r of s)if(r.nodeName==="script"){let n=ue.default.getAttribute(r,"src");if(!n||It(n))continue;e({filePath:n,childNode:r,assetType:"script"})}else if(r.nodeName==="link"){let n=ue.default.getAttribute(r,"href"),o=ue.default.getAttribute(r,"rel");if(!n||It(n))continue;e(o==="dns-prefetch"||o==="icon"||o==="manifest"||o==="modulepreload"||o==="preconnect"||o==="prefetch"||o==="preload"||o==="prerender"?{filePath:n,childNode:r,assetType:"staticHref"}:{filePath:n,childNode:r,assetType:"css"})}else if(r.nodeName==="a"||r.nodeName==="area"){let n=ue.default.getAttribute(r,"href");if(!n||It(n))continue;e({filePath:n,childNode:r,assetType:"staticHref"})}else if(r.nodeName==="audio"||r.nodeName==="embed"||r.nodeName==="iframe"||r.nodeName==="img"||r.nodeName==="input"||r.nodeName==="source"||r.nodeName==="track"||r.nodeName==="video"){let n=ue.default.getAttribute(r,"src");if(!n||It(n))continue;e({filePath:n,childNode:r,assetType:"staticSrc"})}else Ae(r,e)}function L(t,e){let s={css:[],js:[],static:[]};if(!t)return s;let r=e||di.default.readFileSync(t,{encoding:"utf8"}),n=gi.default.parse(r),o=(i,c)=>me.default.join(me.default.dirname(i),c.startsWith("/")?me.default.relative(me.default.dirname(i),c):c);for(let i of n.childNodes)if(i.nodeName==="html"){for(let c of i.childNodes)(c.nodeName==="head"||c.nodeName==="body")&&Ae(c,({filePath:l,assetType:p})=>{let u=o(t,l);switch(p){case"script":s.js?.push(u);break;case"css":s.css?.push(u);break;case"staticSrc":case"staticHref":if(l.startsWith("#"))break;s.static?.push(u);break;default:break}});return{css:s.css,js:s.js,static:s.static}}}function hi(t,e,s){let r=Object.keys(t).find(o=>{let i=t[o];return t[o]===e||L(i)?.js?.includes(e)||L(i)?.css?.includes(e)})||"",n=Ks(e);return r?`/${r.replace(n,"")}${s}`:`${e.replace(n,"")}${s}`}function Ks(t){switch(me.default.extname(t)){case".js":case".mjs":case".ts":case".tsx":return".js";case".css":case".scss":case".sass":case".less":return".css";case".html":return".html";default:return".js"}}function z(t,e,s){return s?`/${t}${e}`:`${t}${e}`}function yi(t,e){return Object.values(e||{}).some(s=>s===t)}var Mt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){let s=require(this.manifestPath),n=P(s,"chrome").name||"Extension.js";e.hooks.thisCompilation.tap("html:emit-html-file",o=>{o.hooks.processAssets.tap({name:"AddAssetsToCompilationPlugin",stage:At.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{let i=Object.entries(this.includeList||{});for(let c of i){let[l,p]=c;if(p){if(!Ys.default.existsSync(p)){let m=oe(n,l,p);o.warnings.push(new At.default.WebpackError(m));return}let u=Ys.default.readFileSync(p,"utf8");if(!$(p,this.excludeList)){let m=new bi.sources.RawSource(u),g=z(l,".html");o.emitAsset(g,m)}}}})})}};var Rt=a(require("fs")),de=a(require("path")),Y=a(require("@rspack/core"));var Nt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.thisCompilation.tap("html:add-assets-to-compilation",s=>{s.hooks.processAssets.tap({name:"html:add-assets-to-compilation",stage:Y.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{if(s.errors.length>0)return;let r=Object.entries(this.includeList||{});for(let n of r){let[o,i]=n,c=o+".html";if(i){let l=s.getAsset(c);if(l){let p=l.source.source().toString(),u=L(i,p)?.static,m=[...new Set(u)];for(let g of m)if(!g.startsWith("/")){if(!Rt.default.existsSync(g)&&!yi(g,this.includeList)&&!de.default.basename(g).startsWith("#")){let A=nt(i,g);g.startsWith("/")||s.warnings.push(new Y.default.WebpackError(A));return}let b=Rt.default.readFileSync(g),_=new Y.sources.RawSource(b),S=de.default.join("assets",de.default.basename(g));if(!s.getAsset(S))if(g.endsWith(".html")){let E=L(g),A=[...E?.js||[],...E?.css||[],...E?.static||[]];s.emitAsset(S,_),A.forEach(T=>{let _e=Rt.default.readFileSync(T),q=new Y.sources.RawSource(_e),jr=de.default.join("assets",de.default.basename(T));s.getAsset(jr)||s.emitAsset(jr,q)})}else s.emitAsset(S,_)}}}}})})}};var xi=a(require("path")),Qs=a(require("fs"));var Tt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){let s=this.includeList||{};for(let r of Object.entries(s)){let[n,o]=r;if(o){if(!Qs.default.existsSync(o))return;let i=L(o),c=i?.js||[],l=i?.css||[],p=[...c,...l].filter(u=>!$(u,this.excludeList));if(e.options.mode==="development"){let u=xi.default.resolve(__dirname,"minimum-script-file.mjs");p.push(u)}Qs.default.existsSync(o)&&($(o,this.excludeList)||(e.options.entry={...e.options.entry,[n]:{import:p}}))}}}};var Bt=require("@rspack/core");var er=a(require("fs")),H=a(require("path")),O=a(require("parse5-utils"));function wi(t,e,s,r,n){let o=er.default.readFileSync(s,{encoding:"utf8"}),i=O.default.parse(o),c=!!t.getAsset(e+".css"),l=!1;for(let p of i.childNodes)if(p.nodeName==="html"){for(let u of p.childNodes){if((u.nodeName==="head"||u.nodeName==="body")&&Ae(u,({filePath:m,childNode:g,assetType:b})=>{let _=H.default.dirname(s),S=H.default.resolve(_,m),E=Ks(S),A=$(H.default.resolve(_,m),n),T=H.default.join("/",H.default.normalize(m)),_e=sn(S,r);switch(b){case"script":{A?p=O.default.setAttribute(g,"src",T):(p=O.default.remove(g),l=!0);break}case"css":{A?p=O.default.setAttribute(g,"href",T):(p=O.default.remove(g),c=!0);break}case"staticHref":case"staticSrc":{if(A)p=O.default.setAttribute(g,b==="staticSrc"?"src":"href",T);else if(_e){let q=hi(r,S,E);p=O.default.setAttribute(g,b==="staticSrc"?"src":"href",q)}else{let q=H.default.join("assets",H.default.basename(S,E));er.default.existsSync(S)&&(p=O.default.setAttribute(g,b==="staticSrc"?"src":"href",z(q,"",!0)))}break}default:break}}),u.nodeName==="head"&&c){let m=O.default.createNode("link");m.attrs=[{name:"rel",value:"stylesheet"},{name:"href",value:z(e,".css",!0)}],O.default.append(u,m)}if(u.nodeName==="body"&&(l||t.options.mode!=="production")){let m=O.default.createNode("script");m.attrs=[{name:"src",value:z(e,".js",!0)}],O.default.append(u,m)}}return O.default.serialize(i)}}var Ut=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("html:update-html-file",s=>{s.hooks.processAssets.tap({name:"html:update-html-file",stage:Bt.Compilation.PROCESS_ASSETS_STAGE_DERIVED},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[o,i]=n;if(i){let c=wi(s,o,i,r,this.excludeList||{});if(!$(i,this.excludeList)&&c){let l=new Bt.sources.RawSource(c),p=z(o,".html");s.updateAsset(p,l)}}}})})}};var vi=a(require("fs")),Si=require("@rspack/core");var qt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.thisCompilation.tap("html:add-to-file-dependencies",s=>{s.hooks.processAssets.tap({name:"html:add-to-file-dependencies",stage:Si.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[,o]=n;if(o){let i=L(o),c=new Set(s.fileDependencies);if(vi.default.existsSync(o)){let l=[o,...i?.static||[]];for(let p of l)c.has(p)||(c.add(p),p===o&&s.fileDependencies.add(p))}}}})})}};var _i=a(require("fs"));var Wt=class{manifestPath;includeList;initialHtmlAssets={};constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}hasEntriesChanged(e,s){if(!s||!e||e.length!==s.length)return!0;for(let r=0;r<e.length;r++)if(e[r]!==s[r])return!0;return!1}storeInitialHtmlAssets(e){Object.entries(e).forEach(([s,r])=>{let n=r;if(n){if(!_i.default.existsSync(n)){let o=require(this.manifestPath),c=P(o,"chrome").name||"Extension.js";console.error(oe(c,s,n)),process.exit(1)}this.initialHtmlAssets[n]={js:L(n)?.js||[],css:L(n)?.css||[]}}})}apply(e){let s=this.includeList||{};this.storeInitialHtmlAssets(s),e.hooks.make.tapAsync("html:throw-if-recompile-is-needed",(r,n)=>{let o=e.modifiedFiles||new Set,i=Array.from(o)[0];if(i&&this.initialHtmlAssets[i]){let c=L(i)?.js||[],l=L(i)?.css||[],{js:p,css:u}=this.initialHtmlAssets[i];(this.hasEntriesChanged(l,u)||this.hasEntriesChanged(c,p))&&console.log(Gr(i))}n()})}};var Pi=a(require("fs")),Ei=require("@rspack/core");function Pl(t,e){let s="Module not found: Error: Can't resolve ",n=e.message.replace(s,"").split("'")[1];if(e.message.includes(s))for(let o of Object.entries(t)){let[,i]=o;if(i){if(!Pi.default.existsSync(i))return null;let c=L(i),l=c?.js?.filter(u=>!u.startsWith("/"))||[],p=c?.css?.filter(u=>!u.startsWith("/"))||[];if(l.includes(n)||p.includes(n)){let u=nt(i,n);return new Ei.WebpackError(u)}}}return null}var Jt=class{manifestPath;includeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList}apply(e){e.hooks.compilation.tap("html:handle-common-errors",s=>{s.hooks.afterSeal.tapPromise("html:handle-common-errors",async()=>{s.errors.forEach((r,n)=>{let o=Pl(this.includeList||{},r);o&&(s.errors[n]=o)})})})}};var zt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Mt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Nt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Tt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Ut({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[tr.default.dirname(this.manifestPath)],exclude:[/[\\/]node_modules[\\/]/],use:[{loader:require.resolve(tr.default.join(__dirname,"ensure-hmr-for-scripts.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}}]}),new qt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Wt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Jt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var Re=a(require("path"));var sr=a(require("fs")),ki=a(require("path"));function $i(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(n=>{let o=sr.default.existsSync(n)&&!$(n,e),i=ki.default.extname(n);return o&&(i===".js"||i===".mjs"||i===".jsx"||i===".ts"||i===".tsx")})}function Fi(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(n=>sr.default.existsSync(n)&&!$(n,e)&&(n.endsWith(".css")||n.endsWith(".scss")||n.endsWith(".sass")||n.endsWith(".less")))}var Ht=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList||{},this.excludeList=e.excludeList||{}}apply(e){let s=this.includeList||{},r={};for(let[n,o]of Object.entries(s)){let i=$i(o,this.excludeList),c=Fi(o,this.excludeList),l=[...i,...c];(c.length||i.length)&&(r[n]={import:l})}e.options.entry={...e.options.entry,...r}}};var Q=require("@rspack/core"),El=['var isBrowser = !!(() => { try { return browser.runtime.getURL("/") } catch(e) {} })()','var isChrome = !!(() => { try { return chrome.runtime.getURL("/") } catch(e) {} })()'],kl=[...El,`var runtime = isBrowser ? browser : isChrome ? chrome : (typeof self === 'object' && self.addEventListener) ? { get runtime() { throw new Error("No chrome or browser runtime found") } } : { runtime: { getURL: x => x } }`],Vt=class t{apply(e){let{RuntimeGlobals:s}=e.webpack;e.hooks.compilation.tap("PublicPathRuntimeModule",r=>{r.hooks.runtimeRequirementInTree.for(s.publicPath).tap(t.name,n=>{let o=$l();return r.addRuntimeModule(n,o),!0})})}};function $l(){class t extends Q.RuntimeModule{constructor(){super("publicPath",Q.RuntimeModule.STAGE_BASIC)}generate(){let s=this.compilation?.outputOptions.publicPath;return Q.Template.asString([...kl,`var path = ${JSON.stringify(this.compilation?.getPath(s||"",{hash:this.compilation.hash||"XXXX"}))}`,`${Q.RuntimeGlobals.publicPath} = typeof importScripts === 'function' || !(isBrowser || isChrome) ? path : runtime.runtime.getURL(path);`])}}return new t}var Xt=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList||{},this.excludeList=e.excludeList||{}}apply(e){let s=require(this.manifestPath),r=P(s,this.browser);r.content_scripts?.some(n=>n.world&&n.world.toLowerCase()==="main")&&Z.includes(this.browser)&&!r.key&&(console.error(Yr()),process.exit(1))}};var Gt=class{manifestPath;browser;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Ht({manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}).apply(e),e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Re.default.dirname(this.manifestPath)],exclude:[/[\\/]node_modules[\\/]/],use:[{loader:require.resolve(Re.default.join(__dirname,"add-hmr-accept-code.js")),options:{manifestPath:this.manifestPath,mode:e.options.mode,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]}),e.options.mode==="production"&&new Vt().apply(e),new Xt({manifestPath:this.manifestPath,browser:this.browser||"chrome",includeList:this.includeList||{},excludeList:this.excludeList||{}}).apply(e),e.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Re.default.dirname(this.manifestPath)],exclude:[/[\\/]node_modules[\\/]/],use:[{loader:require.resolve(Re.default.join(__dirname,"deprecated-shadow-root.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]})}};var Te=a(require("path")),Ue=a(require("fs")),V=a(require("@rspack/core"));var ge=a(require("path")),Ne=a(require("fs"));function rr(t){let e=ge.default.join(ge.default.dirname(t),"_locales"),s=[];if(Ne.default.existsSync(e))for(let r of Ne.default.readdirSync(e)){let n=ge.default.join(e,r);if(n&&Ne.default.statSync(n).isDirectory())for(let o of Ne.default.readdirSync(n))s.push(ge.default.join(ge.default.dirname(t),"_locales",r,o))}return s}var Zt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:V.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(!Ue.default.existsSync(this.manifestPath)){let n=require(this.manifestPath),i=P(n,"chrome").name||"Extension.js";s.errors.push(new V.default.WebpackError(Br(i,this.manifestPath)));return}if(s.errors.length>0)return;let r=rr(this.manifestPath);for(let n of Object.entries(r||[])){let[o,i]=n,c=i;if(c){if(Te.default.extname(c)!==".json")continue;if(!Ue.default.existsSync(c)){s.warnings.push(new V.default.WebpackError(ot(o,c)));return}let l=Ue.default.readFileSync(c),p=new V.sources.RawSource(l),u=e.options.context||Te.default.dirname(this.manifestPath);if(!$(c,this.excludeList)){let m=Te.default.relative(u,c);s.emitAsset(m,p)}}}})}),e.hooks.thisCompilation.tap("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:V.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=rr(this.manifestPath);for(let n of Object.entries(r||[])){let[,o]=n;if(o){let i=new Set(s.fileDependencies),c=r||[];for(let l of c)Ue.default.existsSync(l)&&Te.default.extname(l)===".json"&&(i.has(l)||(i.add(l),s.fileDependencies.add(l)))}}})})}};var Kt=a(require("fs")),ee=a(require("@rspack/core"));var Yt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:ee.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[o,i]=n,c=Array.isArray(i)?i:[i];for(let l of c)if(l&&!$(l,this.excludeList)){if(!Kt.default.existsSync(l)){s.warnings.push(new ee.default.WebpackError(ot(o,l)));return}let p=Kt.default.readFileSync(l),u=new ee.sources.RawSource(p);s.emitAsset(o+".json",u)}}})}),e.hooks.thisCompilation.tap("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:ee.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[,o]=n,i=Array.isArray(o)?o:[o];for(let c of i)if(c){let l=new Set(s.fileDependencies);$(c,this.excludeList)||Kt.default.existsSync(c)&&(l.has(c)||(l.add(c),s.fileDependencies.add(c)))}}})})}};var nr=a(require("fs")),Ci=a(require("path")),es=require("@rspack/core");var Qt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("icons:emit-file",s=>{s.hooks.processAssets.tap({name:"icons:emit-file",stage:es.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[o,i]=n;if(i===void 0)continue;let c=Array.isArray(i)?typeof i[0]=="string"?i:i.map(Object.values).flat():[i];for(let l of c)if(l){if(!nr.default.existsSync(l))continue;if(!$(l,this.excludeList)){let p=nr.default.readFileSync(l),u=new es.sources.RawSource(p),m=Ci.default.basename(l),b=`${o.endsWith("theme_icons")?o.replace("theme_icons",""):o}/${m}`;s.emitAsset(b,u)}}}})})}};var ji=a(require("fs")),Di=require("@rspack/core"),ts=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){e.hooks.thisCompilation.tap("icons:add-to-file-dependencies",s=>{s.hooks.processAssets.tap({name:"icons:add-to-file-dependencies",stage:Di.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let n of Object.entries(r)){let[,o]=n,i=Array.isArray(o)?typeof o[0]=="string"?o:o.map(Object.values).flat():[o];for(let c of i)if(c){let l=new Set(s.fileDependencies);ji.default.existsSync(c)&&(l.has(c)||(l.add(c),s.fileDependencies.add(c)))}}})})}};var ss=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new Qt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new ts({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var ns=require("@rspack/core");function Li(t){return t.map(e=>{try{let s=new URL(e.replace(/^\*:\/\//,"https://"));return e.endsWith(s.pathname)?`${e.substring(0,e.length-s.pathname.length)}/*`:s.pathname==="/"?`${e}/*`:e}catch{return e}})}var rs=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}generateManifestPatches(e,s){let r=W(e,this.manifestPath),n=r.web_accessible_resources||[],o=r.web_accessible_resources||[];for(let[l,p]of Object.entries(s)){let u=r.content_scripts?.find(m=>m.js?.some(g=>g.includes(l)));if(u){let m=u.matches||[],g=p.filter(b=>!b.endsWith(".map")&&!b.endsWith(".js"));if(g.length===0)continue;if(r.manifest_version===3){let b=n.find(_=>_.matches.some(S=>m.includes(S)));b?g.forEach(_=>{b.resources.includes(_)||b.resources.push(_)}):n.push({resources:g,matches:Li(m)})}else g.forEach(b=>{o.includes(b)||o.push(b)})}}r.manifest_version===3?n.length>0&&(r.web_accessible_resources=n):o.length>0&&(r.web_accessible_resources=Array.from(new Set(o)));let i=JSON.stringify(r,null,2),c=new ns.sources.RawSource(i);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",c)}apply(e){e.hooks.thisCompilation.tap("plugin-extension:feature-web-resources",s=>{s.hooks.processAssets.tap({name:"plugin-extension:feature-web-resources",stage:ns.Compilation.PROCESS_ASSETS_STAGE_ANALYSE},()=>{let r=[],n=Object.keys(this.includeList||{});for(let c of n.filter(Boolean))c.startsWith("content_scripts")&&(Array.isArray(c)?r.push(...c):typeof c=="string"&&r.push(c));let o=s.chunkGraph,i={};s.entrypoints.forEach((c,l)=>{if(r.includes(l)){let p=[];c.chunks.forEach(u=>{Array.from(o.getChunkModulesIterable(u)).forEach(g=>{o.getModuleChunks(g).forEach(b=>{b.auxiliaryFiles.forEach(_=>{p.includes(_)||p.push(_)})})})}),i[l]=p}}),this.generateManifestPatches(s,i)})})}};var I=a(require("fs")),M=a(require("path")),Oi=a(require("chokidar")),os=class{options;constructor(e){this.options=e}ensureDirectoryExistence(e){let s=M.default.dirname(e);if(I.default.existsSync(s))return!0;I.default.mkdirSync(s,{recursive:!0})}copyFile(e,s){this.ensureDirectoryExistence(s),I.default.copyFileSync(e,s)}copyFolder(e,s){I.default.existsSync(s)||I.default.mkdirSync(s,{recursive:!0}),I.default.readdirSync(e).forEach(n=>{let o=M.default.join(e,n),i=M.default.join(s,n);I.default.statSync(o).isDirectory()?this.copyFolder(o,i):this.copyFile(o,i)})}apply(e){let s=M.default.dirname(this.options.manifestPath),r=M.default.join(s,"public"),n=e.options.output?.path||"";I.default.existsSync(r)&&(e.hooks.afterEmit.tap("special-folders:copy-public-folder",()=>{let o=M.default.join(n,"/");I.default.existsSync(o)||I.default.mkdirSync(o,{recursive:!0}),I.default.existsSync(r)&&this.copyFolder(r,o)}),e.options.mode!=="production"&&e.hooks.afterPlugins.tap("special-folders:copy-public-folder",()=>{let o=M.default.join(s,"public"),i=Oi.default.watch(o,{ignoreInitial:!0});i.on("add",c=>{let l=M.default.join(n,M.default.relative(s,c));this.copyFile(c,l)}),i.on("change",c=>{let l=M.default.join(n,M.default.relative(s,c));this.copyFile(c,l)}),i.on("unlink",c=>{let l=M.default.join(n,M.default.relative(s,c));I.default.existsSync(l)&&I.default.unlinkSync(l)}),e.hooks.watchClose.tap("special-folders:copy-public-folder",()=>{i.close().catch(console.error)})}))}};var U=a(require("path")),or=a(require("chokidar"));var is=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,s,r){let n=U.relative(process.cwd(),s),c=Jr(r?"Adding":"Removing",e,e==="pages"?"HTML pages":"script files",n);if(r){console.warn(c);return}console.error(c),process.exit(1)}apply(e){e.hooks.afterPlugins.tap("special-folders:warn-upon-folder-changes",()=>{let s=U.dirname(this.manifestPath),r=U.join(s,"pages"),n=U.join(s,"scripts"),o=or.watch(r,{ignoreInitial:!0}),i=or.watch(n,{ignoreInitial:!0}),c=e.options.resolve?.extensions;o.on("add",l=>{l.endsWith(".html")&&this.throwCompilationError("pages",l,!0)}),o.on("unlink",l=>{l.endsWith(".html")&&this.throwCompilationError("pages",l)}),i.on("add",l=>{c?.includes(U.extname(l))&&this.throwCompilationError("scripts",l,!0)}),i.on("unlink",l=>{c?.includes(U.extname(l))&&this.throwCompilationError("scripts",l)}),e.hooks.watchClose.tap("WarnUponFolderChanges",()=>{o.close().catch(console.error),i.close().catch(console.error)})})}};var as=class{static name="plugin-special-folders";options;constructor(e){this.options=e}apply(e){let{manifestPath:s}=this.options;new os({manifestPath:s}).apply(e),e.options.mode==="development"&&e.options.watchOptions&&new is(s).apply(e)}};var cs=class{static name="plugin-extension";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){let s=this.manifestPath,r=le({manifestPath:s,browser:this.browser}),n=Lo({manifestPath:s,browser:this.browser});new Ot({browser:this.browser,manifestPath:s,includeList:{...r.html,...r.icons,...r.json,...r.scripts},excludeList:n.public}).apply(e),new zt({manifestPath:s,includeList:{...r.html,...n.pages},excludeList:{...n.public,...n.scripts}}).apply(e),new Gt({manifestPath:s,browser:this.browser,includeList:{...r.scripts,...n.scripts},excludeList:{...n.public,...n.pages}}).apply(e),new Zt({manifestPath:s}).apply(e),new Yt({manifestPath:s,includeList:r.json,excludeList:n.public}).apply(e),new ss({manifestPath:s,includeList:r.icons,excludeList:n.public}).apply(e),new rs({manifestPath:s,includeList:{...r.scripts,...n.scripts},excludeList:n.public}).apply(e),new as({manifestPath:s}).apply(e)}};var We=a(require("path"));var Ii=a(require("path")),Mi=a(require("ws"));function ls(t,e){t.clients.forEach(s=>{s.readyState===Mi.default.OPEN&&s.send(JSON.stringify(e))})}function Ai(t,e,s){if(!s||!e)return;let r=le({manifestPath:e}).locales,n=le({manifestPath:e}).scripts,o=le({manifestPath:e}).json;if(!t){process.env.EXTENSION_ENV==="development"&&console.error("WebSocket server is not running.");return}Ii.default.basename(s)==="manifest.json"&&ls(t,{changedFile:"manifest.json"}),r?.forEach(i=>{i.includes(s)&&ls(t,{changedFile:"_locales"})}),Object.entries(n).forEach(([i,c])=>{let l=Array.isArray(c)?c:[c];Object.values(l).flatMap(u=>u).includes(s)&&i==="background/service_worker"&&ls(t,{changedFile:"service_worker"})}),Object.entries(o).forEach(([i,c])=>{c?.includes(s)&&i==="declarative_net_request"&&ls(t,{changedFile:"declarative_net_request"})})}var ar=a(require("path")),Ui=a(require("fs")),qe=a(require("ws"));var Be=a(require("path")),Fl=a(require("http")),Ni=a(require("https")),ir=a(require("fs"));var Ri=t=>{if(!ir.default.existsSync(t))return;let e=Be.default.basename(t);return ir.default.readFileSync(Be.default.join(__dirname,"certs",e))};function Ti(t){let e={key:Ri(Be.default.join(__dirname,"certs","localhost.key")),cert:Ri(Be.default.join(__dirname,"certs","localhost.cert"))},s=Ni.default.createServer(e,(r,n)=>{n.writeHead(200),n.end()});return s.on("error",r=>{throw console.error(Kr(t)),new Error(r.message)}),{server:s,port:t}}function Cl(t,e){switch(e){case"chrome":return new qe.default.Server({host:"localhost",port:t});case"edge":return new qe.default.Server({host:"localhost",port:t+1});case"firefox":return new qe.default.Server({server:Ti(t+2).server});default:return new qe.default.Server({host:"localhost",port:8888})}}async function Bi(t,e){let s=t.options.context||"",r=require(ar.default.join(s,"manifest.json")),o=Cl(8e3,e.browser);if(o.on("connection",i=>{i.send(JSON.stringify({status:"serverReady"})),i.on("error",c=>{console.log(Vr(c))}),i.on("message",c=>{let l=JSON.parse(c.toString());if(l.status==="clientReady"){let p=require(ar.default.join(s,"manifest.json"));setTimeout(()=>{console.log(Ns(p,e.browser,l)),console.log("")},2500),rn(e.browser)&&setTimeout(()=>{console.log(Hr(e.browser))},5e3)}})}),e.browser==="firefox"||e.browser==="gecko-based"){let i=nn(r);console.log(Ns(r,e.browser,i)),console.log(""),Ui.default.existsSync(rt)||(console.log(Zr()),console.log(""))}return o}var qi=a(require("path")),cr=a(require("fs"));function Wi(t,e){let s=qi.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let r=cr.default.readFileSync(s,"utf8"),n=r.replace(/__RELOAD_PORT__/g,e.toString());n!==r&&cr.default.writeFileSync(s,n,"utf8")}catch(r){console.error(`Error processing file: ${r.message}`)}}process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Je=class{manifestPath;port;browser;stats;constructor(e){this.manifestPath=e.manifestPath,this.port=e.port||8e3,this.browser=e.browser||"chrome",this.stats=e.stats}async apply(e){if(!this.manifestPath)return;Wi(this.browser,this.port);let s=await Bi(e,{...this,mode:e.options.mode,browser:this.browser,stats:this.stats,port:this.port});e.hooks.watchRun.tapAsync("reload:create-web-socket-server",(r,n)=>{let i=(r.modifiedFiles||new Set).values().next().value;if(!i){n();return}let c=We.default.relative(We.default.dirname(this.manifestPath),i),l=We.default.relative(process.cwd(),We.default.dirname(i));process.env.EXTENSION_ENV==="development"&&console.info(`\u25BA\u25BA Updated file \`${c}\` (relative to ${l})`),this.manifestPath&&Ai(s,this.manifestPath,i),n()})}};var lr=a(require("path"));function Ji(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[lr.default.dirname(s)],exclude:[/[\\/]node_modules[\\/]/],use:[{loader:lr.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:s,browser:e}}]})}var pr=a(require("path"));function zi(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[pr.default.dirname(s)],exclude:[/[\\/]node_modules[\\/]/],use:[{loader:pr.default.resolve(__dirname,"./inject-firefox-client-loader"),options:{manifestPath:s,browser:e}}]})}var fs=require("@rspack/core");var fr=a(require("content-security-policy-parser"));function Hi(t){let e="";for(let s in t)e+=`${s} ${t[s].join(" ")}; `;return e.trim()}function Vi(t){let e=t.content_security_policy;if(!e)return"script-src 'self' 'unsafe-eval' blob: filesystem:; object-src 'self' blob: filesystem:; ";let s=(0,fr.default)(e);if(!s.get("script-src"))s.set("script-src",["'self'","'unsafe-eval'","blob:","filesystem:"]);else{let n=s.get("script-src")||[];n.includes("'unsafe-eval'")||n.push("'unsafe-eval'"),n.includes("blob:")||n.push("blob:"),n.includes("filesystem:")||n.push("filesystem:"),s.set("script-src",n)}s.get("object-src")||s.set("object-src",["'self'","blob:","filesystem:"]);let r=Object.fromEntries(s.entries());return Hi(r)}function Xi(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self';"};let s=(0,fr.default)(e.extension_pages||""),r={};for(let i in r)s.get(i)||s.set(i,r[i]);let n=Object.fromEntries(s.entries());return{extension_pages:Hi(n)}}function Gi(t){let e=["/*.json","/*.js","/*.css"],s=t.web_accessible_resources;if(!s||s.length===0)return e;let r=new Set(s);for(let n of e)r.has(n)||r.add(n);return Array.from(r)}function Zi(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function ur(t,e){return t.background?{background:{...t.background}}:e==="firefox"||e==="gecko-based"?{background:{...t.background||{},scripts:["background/script.js"]}}:t.manifest_version===2?{background:{...t.background||{},scripts:["background/script.js"]}}:{background:{...t.background||{},service_worker:"background/service_worker.js"}}}function mr(t){return t.externally_connectable&&!t.externally_connectable.ids?{externally_connectable:{...t.externally_connectable,ids:[...new Set(t.externally_connectable.ids||[]),"*"]}}:t.externally_connectable&&!t.externally_connectable.ids?{externally_connectable:{...t.externally_connectable,ids:["*"]}}:{}}var ps=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}generateManifestPatches(e){let s=W(e,this.manifestPath),r={...s,content_security_policy:s.manifest_version===3?Xi(s):Vi(s),...s.manifest_version===3?s.permissions?{permissions:[...new Set(["scripting",...s.permissions])]}:{permissions:["scripting"]}:{},...ur(s,this.browser),...mr(s),web_accessible_resources:s.manifest_version===3?Zi(s):Gi(s)},n=JSON.stringify(r,null,2),o=new fs.sources.RawSource(n);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",o)}apply(e){e.hooks.thisCompilation.tap("run-chromium:apply-manifest-dev-defaults",s=>{s.hooks.processAssets.tap({name:"run-chromium:apply-manifest-dev-defaults",stage:fs.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},r=>{if(!this.manifestPath){let n="No manifest.json found in your extension bundle. Unable to patch manifest.json.";s&&e.rspack.WebpackError&&s.errors.push(new e.rspack.WebpackError(`run-chromium: ${n}`));return}this.generateManifestPatches(s)})})}};var dr=a(require("fs")),he=a(require("path")),Ki=a(require("webpack-target-webextension"));var us=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}handleBackground(e,s,r){let n=he.default.resolve(__dirname,s==="firefox"||s==="gecko-based"?"minimum-firefox-file.mjs":"minimum-chromium-file.mjs"),o=he.default.dirname(this.manifestPath),i=P(r,s);if(s==="firefox"||s==="gecko-based"){i=r.background;let c=i?.scripts;if(c&&c.length>0){let l=he.default.join(o,c[0]);this.ensureFileExists(l)}else this.addDefaultEntry(e,"background/script",n)}else if(i=r.background,r.manifest_version===3){let c=i?.service_worker;if(c){let l=he.default.join(o,c);this.ensureFileExists(l)}else this.addDefaultEntry(e,"background/service_worker",n)}else if(r.manifest_version===2){let c=i?.scripts;if(c&&c.length>0){let l=he.default.join(o,c[0]);this.ensureFileExists(l)}else this.addDefaultEntry(e,"background/script",n)}}ensureFileExists(e){if(!dr.default.existsSync(e)&&this.manifestPath){let s=require(this.manifestPath),n=P(s,"chrome").name||"Extension.js",o=Xr(n,e);throw console.error(o),new Error(o)}}addDefaultEntry(e,s,r){e.options.entry={...e.options.entry,[s]:{import:[r]}}}getEntryName(e){if(e.background){if(this.browser==="firefox"||this.browser==="gecko-based")return{pageEntry:"background/script"};if(e.manifest_version===3)return{serviceWorkerEntry:"background/service_worker"};if(e.manifest_version===2)return{pageEntry:"background/script"}}return{pageEntry:"background"}}apply(e){if(!this.manifestPath||!dr.default.lstatSync(this.manifestPath).isFile())return;let s=require(this.manifestPath),r=P(s,this.browser);this.handleBackground(e,this.browser,r),new Ki.default({background:this.getEntryName(r),weakRuntimeCheck:!0}).apply(e)}};var gr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){(Z.includes(this.browser)||this.browser==="chromium-based")&&Ji(e,this.browser,this.manifestPath),(this.browser==="firefox"||this.browser==="gecko-based")&&zi(e,this.browser,this.manifestPath),new ps({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new us({manifestPath:this.manifestPath,browser:this.browser}).apply(e)}},Yi=gr;var ms=class{static name="plugin-reload";manifestPath;browser;port;stats;autoReload;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.port=e.port,this.stats=e.stats,this.autoReload=e.autoReload}apply(e){e.options.mode==="development"&&new Je({manifestPath:this.manifestPath,browser:this.browser,port:this.port,stats:this.stats}).apply(e),e.options.mode==="development"&&new Yi({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var Qi=a(require("@rspack/core")),ds=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new Qi.default.ProvidePlugin({browser:require.resolve("webextension-polyfill")}).apply(e)}};var hs=require("@rspack/core");var gs=class{browser;manifestPath;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}patchManifest(e){let s=P(e,this.browser);return JSON.stringify(s,null,2)}apply(e){e.hooks.compilation.tap("compatibility:browser-specific-fields",s=>{s.hooks.processAssets.tap({name:"compatibility:browser-specific-fields",stage:hs.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE},()=>{let r=W(s,this.manifestPath),n=this.patchManifest(r),o=new hs.sources.RawSource(n);s.updateAsset("manifest.json",o)})})}};var ys=class{static name="plugin-compatibility";manifestPath;browser;polyfill;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.polyfill=e.polyfill||!1}async apply(e){this.polyfill&&this.browser!=="firefox"&&new ds({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new gs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e)}};var xc=a(require("os")),Sr=a(require("path"));var $a=a(require("fs")),Fa=a(require("path")),Ca=require("child_process");var be=a(require("path")),He=a(require("fs"));var ea={alternate_error_pages:{enabled:!1},autofill:{enabled:!1},browser:{check_default_browser:!1,default_browser_setting_enabled:!1},default_apps:"install",distribution:{alternate_shortcut_text:!1,auto_launch_chrome:!1,import_bookmarks:!1,import_history:!1,import_home_page:!1,import_search_engine:!1,suppress_first_run_bubble:!0,do_not_register_for_update_launch:!0,make_chrome_default:!1,make_chrome_default_for_user:!1,require_eula:!1,suppress_first_run_default_browser_prompt:!0},dns_prefetching:{enabled:!1},download:{default_directory:"/tmp/",directory_upgrade:!0,open_pdf_in_adobe_reader:!1,prompt_for_download:!0},enable_do_not_track:!0,extensions:{theme:{use_system:!1},toolbarsize:-1,ui:{developer_mode:!0}},plugins:{plugins_list:[{enabled:!1,name:"Java(TM)"}],show_details:!0},profile:{password_manager_enabled:!1},safebrowsing:{enabled:!1,safebrowsingextended_reporting_enabled:!1},savefile:{default_directory:"/tmp",type:0},search:{suggest_enabled:!1},session:{restore_on_startup:1},sync:{suppress_start:!0},sync_promo:{show_on_first_run_allowed:!1,show_ntp_bubble:!1},translate:{enabled:!1}},ta={...ea},sa={...ea};var y=require("@colors/colors/safe");function w(t,e){let s=e==="warn"?(0,y.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,y.cyan)("\u25BA\u25BA\u25BA"):e==="error"?`${(0,y.bold)((0,y.red)("ERROR"))} in ${ye(t)} ${(0,y.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:(0,y.brightGreen)("\u25BA\u25BA\u25BA");return`${(0,y.gray)("")}${s}`}function ye(t){return t.charAt(0).toUpperCase()+t.slice(1)}function bs(t){let e=ye(t);return`${w(t,"info")} Creating new ${e} user profile...`}function ra(t){return`${w(t,"success")} Instance already running.`}function na(t){return`${w(t,"info")} Instance exited.`}function xs(t,e){let s=t==="firefox"||t==="gecko-based"?"Add-on":"Extension";return`${w(t,"success")} ${ye(t)} ${s} running in ${(0,y.brightBlue)(e||"unknown")} mode.`}function ze(t,e){let s=e=="null"?`Browser is not installed
|
|
113
75
|
|
|
114
76
|
`:`Can't find the browser path
|
|
115
77
|
|
|
116
|
-
`;return`${
|
|
117
|
-
${(0,y.red)("NOT FOUND")} ${(0,y.underline)(e||ye(t)+"BROWSER")}`}function
|
|
78
|
+
`;return`${w(t,"error")} ${s}Either install the missing browser or choose a different one via ${(0,y.brightYellow)("--browser")} flag.
|
|
79
|
+
${(0,y.red)("NOT FOUND")} ${(0,y.underline)(e||ye(t)+"BROWSER")}`}function oa(t){return`${w(t,"error")} No Service Worker Support
|
|
118
80
|
|
|
119
81
|
Firefox does not support the ${(0,y.brightYellow)("background.service_worker")} field yet.
|
|
120
82
|
Update your manifest.json file to use ${(0,y.brightYellow)("background.scripts")} instead.
|
|
121
83
|
|
|
122
|
-
Read more: ${(0,y.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function
|
|
123
|
-
${(0,y.red)(e)}`}function
|
|
124
|
-
${(0,y.red)(e)}`}function
|
|
84
|
+
Read more: ${(0,y.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function ia(t,e){return`${w(t,"error")} Error launching browser:
|
|
85
|
+
${(0,y.red)(e)}`}function aa(t,e){return`${w(t,"error")} ${(0,y.red)(e.stack)}`}function ca(t){return`${w(t,"error")} Unable to connect to ${ye(t)}. Too many retries.`}function la(t,e){return`${w(t,"error")} Error while installing temporary addon:
|
|
86
|
+
${(0,y.red)(e)}`}function pa(t,e){return`${w(t,"error")} Path is not directory
|
|
125
87
|
|
|
126
88
|
Please provide a valid directory path and try again.
|
|
127
|
-
${(0,y.red)("NOT DIRECTORY")} ${(0,y.underline)(e)}`}function
|
|
128
|
-
${(0,y.brightYellow)(JSON.stringify(e))}`}function
|
|
129
|
-
${(0,y.red)(e)}`}function
|
|
89
|
+
${(0,y.red)("NOT DIRECTORY")} ${(0,y.underline)(e)}`}function fa(t){return`${w(t,"error")} Error parsing message length.`}function ua(t){return`${w(t,"error")} ${(0,y.magenta)("MessagingClient")} connection closed.`}function ma(t,e){return`${w(t,"error")} Unexpected ${(0,y.magenta)("MessagingClient")} request without target actor: ${(0,y.brightYellow)(e)}`}function da(t){return`${w(t,"error")} ${(0,y.magenta)("MessagingClient")} connection closed.`}function ga(t,e){return`${w(t,"error")} Target actor ${(0,y.brightYellow)(e)} already has an active request.`}function ha(t,e){return`${w(t,"error")} Error parsing packet: ${(0,y.red)(e)}`}function ya(t,e){return`${w(t,"error")} Message received without a sender actor:
|
|
90
|
+
${(0,y.brightYellow)(JSON.stringify(e))}`}function ba(t,e){return`${w(t,"error")} Received unexpected message:
|
|
91
|
+
${(0,y.red)(e)}`}function xa(t,e){return`${w(t,"info")} Using own ${(0,y.magenta)("starting URL")} ${(0,y.underline)(e)}. `}function hr(t,e){return`${w(t,"info")} Using own ${(0,y.magenta)(`${ye(t)} browser binary`)} ${(0,y.underline)(e)}. `}function wa(t,e){return`${w(t,"info")} Using own ${(0,y.magenta)("browser profile")} ${(0,y.underline)(e)}. `}function va(t){return`${w(t,"info")} Using own ${(0,y.magenta)("browser preferences")}. `}function Sa(t){return`${w(t,"info")} Using own ${(0,y.magenta)("browser flags")}. `}function _a(t,e){return`${w(t,"info")} Browser launcher is ${(0,y.brightYellow)(e?"enabled":"disabled")}. `}var Pa=a(require("progress"));function ws(t,e){let r=new Pa.default(`${t} [:bar] :percent :etas`,{complete:"=",incomplete:" ",width:50,total:131072}),n=setInterval(()=>{let o=Math.random()*10*1024;r.tick(o),r.complete&&(clearInterval(n),e())},50)}function Ea(t,e,s={}){if(e&&He.default.existsSync(e))return e;let r=be.default.resolve(__dirname,`run-${t}-profile`);if(!e&&He.default.existsSync(r))return be.default.resolve(__dirname,`run-${t}-profile`);let o=JSON.stringify({...t==="chrome"?ta:sa,...s});return ws(bs(t),()=>{let i=e||r,c=be.default.join(i,"Default");He.default.mkdirSync(c,{recursive:!0});let l=be.default.join(c,"Preferences");He.default.writeFileSync(l,o,"utf8")}),be.default.resolve(__dirname,`run-${t}-profile`)}function ka(t){let e=Array.isArray(t.extension)?t.extension:[t.extension],s=Ea(t.browser,t.profile,t.preferences);return[`--load-extension=${e.join()}`,`--user-data-dir=${s}`,"--no-first-run","--disable-client-side-phishing-detection","--disable-component-extensions-with-background-pages","--disable-default-apps","--disable-features=InterestFeedContentSuggestions","--disable-features=Translate","--hide-scrollbars","--mute-audio","--no-default-browser-check","--ash-no-nudges","--disable-search-engine-choice-screen","--disable-features=MediaRoute","--use-mock-keychain","--disable-background-networking","--disable-breakpad","--disable-component-update","--disable-domain-reliability","--disable-features=AutofillServerCommunicatio","--disable-features=CertificateTransparencyComponentUpdate","--disable-sync","--disable-features=OptimizationHints","--disable-features=DialMediaRouteProvider","--no-pings","--enable-features=SidePanelUpdates",...t.browserFlags||[]]}process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Ve=class{extension;browser;browserFlags;profile;preferences;startingUrl;autoReload;stats;chromiumBinary;constructor(e){this.extension=e.extension,this.browser=e.browser,this.browserFlags=e.browserFlags||[],this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl,this.chromiumBinary=e.chromiumBinary}launchChromium(e){let s;switch(e){case"chrome":s=require(`${e}-location`);break;case"edge":s=require(`${e}-location`)();break;case"chromium-based":s=Fa.default.normalize(this.chromiumBinary);break;default:s=require(`${e}`);break}$a.default.existsSync(s)||(console.error(ze(e,s)),process.exit());let r=ka(this),n=this.startingUrl?[this.startingUrl,...r]:[...r],o=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",i=(0,Ca.spawn)(`${s}`,n,{stdio:o});process.env.EXTENSION_ENV==="development"&&(i.stdout?.pipe(process.stdout),i.stderr?.pipe(process.stderr))}apply(e){let s=!1;e.hooks.done.tapAsync("run-browsers:module",(r,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}this.launchChromium(this.browser),setTimeout(()=>{console.log(xs(this.browser,r.compilation.options.mode))},2e3),s=!0,n()})}};var yc=a(require("fs")),bc=a(require("path")),vr=require("child_process");var Xe=a(require("fs")),vs=a(require("path")),ja=a(require("os")),Da=a(require("which")),La=process.platform==="darwin",jl=process.platform==="win32",Dl=!La&&!jl;function Ll(){if(Dl)try{return Da.default.sync("firefox")}catch{return null}else if(La){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=vs.default.join(ja.default.homedir(),t.slice(1));return Xe.default.existsSync(t)?t:Xe.default.existsSync(e)?e:null}else{let t=vs.default.join("Mozilla Firefox","firefox.exe"),e=[process.env.LOCALAPPDATA,process.env.PROGRAMFILES,process.env["PROGRAMFILES(X86)"]];for(let r of e)if(r){let n=vs.default.join(r,t);if(Xe.default.existsSync(n))return n}let s=["C:\\Program Files\\Mozilla Firefox\\firefox.exe","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"];for(let r of s)if(Xe.default.existsSync(r))return r;return null}}var Oa=Ll();var xr=a(require("path")),_s=a(require("fs")),wr=a(require("firefox-profile"));var Ol={"app.update.enabled":!1,"browser.dom.window.dump.enabled":!0,"browser.formfill.enable":!1,"browser.link.open_newwindow":3,"browser.sessionstore.enabled":!1,"browser.shell.checkDefaultBrowser":!1,"browser.sync.enabled":!1,"browser.startup.page":0,"browser.startup.homepage_welcome_url":"about:blank","browser.startup.homepage_welcome_url_additional":"about:blank","browser.urlbar.suggest.bookmark":!1,"browser.urlbar.suggest.clipboard":!1,"browser.urlbar.suggest.history":!1,"browser.urlbar.suggest.openpage":!1,"browser.urlbar.suggest.remotetab":!1,"browser.urlbar.suggest.searches":!1,"browser.urlbar.suggest.topsites":!1,"browser.urlbar.suggest.engines":!1,"browser.urlbar.suggest.calculator":!1,"browser.urlbar.suggest.recentsearches":!1,"datareporting.policy.dataSubmissionEnabled":!1,"datareporting.policy.firstRunURL":"","devtools.browserconsole.contentMessages":!0,"devtools.chrome.enabled":!0,"devtools.debugger.prompt-connection":!1,"devtools.debugger.remote-enabled":!0,"devtools.errorconsole.enabled":!0,"extensions.installDistroAddons":!1,"extensions.autoDisableScopes":10,"extensions.chrome.enabled":!0,"extensions.logging.enabled":!1,"extensions.checkCompatibility.nightly":!1,"extensions.update.enabled":!1,"extensions.update.notifyUser":!1,"extensions.enabledScopes":5,"extensions.getAddons.cache.enabled":!1,"network.prefetch.next":!1,"network.speculative.preconnect.enabled":!1,"toolkit.telemetry.enabled":!1,"toolkit.telemetry.archive.enabled":!1,"toolkit.telemetry.newProfilePing.enabled":!1,"toolkit.recovery.enabled":!1,"urlclassifier.updateinterval":172800,"security.enterprise_roots.enabled":!0,"xpinstall.signatures.required":!1};function yr(t){return{...Ol,...t}}var Ge=a(require("fs")),Ze=a(require("path"));var Ss=a(require("path")),Ia=a(require("fs")),d=require("@colors/colors/safe");function k(t){return`${t==="warn"?(0,d.brightYellow)("\u25BA\u25BA\u25BA"):t==="info"?(0,d.cyan)("\u25BA\u25BA\u25BA"):t==="error"?`${(0,d.bold)((0,d.red)("ERROR"))} in Extension.js ${(0,d.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:(0,d.brightGreen)("\u25BA\u25BA\u25BA")}`}function X(t){return`${k("error")} Manifest file not found.
|
|
130
92
|
|
|
131
93
|
Ensure the path to your extension exists and try again.
|
|
132
|
-
${(0,d.red)("NOT FOUND")} ${(0,d.underline)(t)}`}function
|
|
94
|
+
${(0,d.red)("NOT FOUND")} ${(0,d.underline)(t)}`}function Ma(t){let e=t==="firefox"||t==="gecko-based"?"Add-on":"Extension";return`${k("info")} Building ${xe(t)} ${e} package...`}function Aa(t,e){let s=Ss.default.join(t,"dist",e.browser||"chrome"),r=Ss.default.join(s,"manifest.json"),n=require(r),{name:o,version:i,hostPermissions:c,permissions:l}=n,p=c&&c.length,u=l&&l.length,m=As().version;return`
|
|
133
95
|
\u{1F9E9} ${(0,d.brightGreen)("Extension.js")} ${(0,d.gray)(`${m}`)}
|
|
134
96
|
Extension Name ${(0,d.gray)(o)}
|
|
135
|
-
Extension Version ${(0,d.gray)(
|
|
136
|
-
Host Permissions ${(0,d.gray)(
|
|
137
|
-
Permissions ${(0,d.gray)(u?
|
|
138
|
-
`}function
|
|
97
|
+
Extension Version ${(0,d.gray)(i)}
|
|
98
|
+
Host Permissions ${(0,d.gray)(p?c.join(", "):"Browser defaults")}
|
|
99
|
+
Permissions ${(0,d.gray)(u?l.join(", "):"Browser defaults")}
|
|
100
|
+
`}function Ra(t,e,s){let r=e?.toJson(),n=Ss.default.join(t,"manifest.json"),o=JSON.parse(Ia.default.readFileSync(n,"utf8")),i=r?.assets,c=`${k("info")} Building ${(0,d.cyan)(o.name)} extension using ${xe(s)} defaults...
|
|
139
101
|
|
|
140
|
-
`,
|
|
141
|
-
Build completed in ${((
|
|
102
|
+
`,l=`
|
|
103
|
+
Build completed in ${((r?.time||0)/1e3).toFixed(2)} seconds.`,p=`Build Target: ${(0,d.gray)(xe(s))}
|
|
142
104
|
`,u=`Build Status: ${e?.hasErrors()?(0,d.red)("Failed"):(0,d.brightGreen)("Success")}
|
|
143
105
|
`,m=`
|
|
144
106
|
Version: ${(0,d.gray)(o.version)}
|
|
145
|
-
`,g=`Size: ${(0,d.gray)(
|
|
146
|
-
`,b="";return b+=c,b+=
|
|
147
|
-
${(0,d.gray)("URL")} ${(0,d.underline)(`https://github.com/${t}/${e}`)}`}function
|
|
148
|
-
${
|
|
149
|
-
${(0,d.gray)("PATH")} ${(0,d.underline)(`${t}`)}`}function
|
|
150
|
-
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function
|
|
151
|
-
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}.`}function
|
|
152
|
-
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function
|
|
153
|
-
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${
|
|
154
|
-
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${
|
|
155
|
-
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${
|
|
156
|
-
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${
|
|
157
|
-
${(0,d.red)(t)}`}function
|
|
158
|
-
${(0,d.red)(t)}`}function
|
|
159
|
-
${(0,d.gray)("URL")} ${(0,d.underline)(t)}`}function
|
|
160
|
-
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function
|
|
161
|
-
`,typeof t[
|
|
162
|
-
${Kc(e)}`}function Yc(t){return`${$("info")} Using ${(0,d.magenta)(t)}. ${(0,d.brightYellow)("This is very experimental")}.`}function Qc(){return`${$("info")} Installing project dependencies...`}function ep(t,e,r){return`${$("error")} Command ${t} ${e.join(" ")} failed with exit code ${r}`}function tp(t){return`${$("error")} Can't install project dependencies. ${(0,d.red)(t.message||t.toString())}`}async function xe(t){let e=Qe.default.join(t,"extension.config.js");if(Ye.default.existsSync(e)&&await Ds(t)){let r=require(e);if(r&&typeof r.config=="function")return r.config}return r=>r}async function sp(t,e){let r=Qe.default.join(t,"extension.config.js");if(Ye.default.existsSync(r)&&await Ds(t)){let s=require(r);if(s)return s[e]}return{}}async function ve(t,e="chrome"){let r=Qe.default.join(t,"extension.config.js");if(Ye.default.existsSync(r)&&await Ds(t)){let s=require(r);if(s&&s.browser&&s.browser[e])return s.browser[e]||{browser:"chrome"}}return{browser:"chrome"}}var rp=!1;async function Ds(t){let e=Qe.default.join(t,"extension.config.js");return Ye.default.existsSync(e)?(rp||(console.log(Yc("extension.config.js")),rp=!0),!0):!1}function ip(t,e){let r={...ve(Ls.default.resolve(__dirname,"run-firefox"),"firefox"),...Fs(e)};Object.keys(r).forEach(o=>{t.setPreference(o,r[o])});let i=Object.keys(e);return i.length>0&&i.forEach(o=>{t.setPreference(o,e[o])}),t.updatePreferences(),t}function Fl(t,e){let r=new Os.default({destinationDirectory:t});return ip(r,e)}function Dl(t,e,r){let s;if(Fr.default.statSync(e).isDirectory())s=e;else throw new Error(oc(t,e));let o=new Os.default({destinationDirectory:s});return ip(o,r)}function op(t,e,r={}){let s,i=e||Ls.default.resolve(__dirname,`run-${t}-profile`),c={...Fs(r||{}),...r};return!e&&Fr.default.existsSync(i)?s=Dl(t,i,c):($r(kr(t),()=>{}),Fr.default.mkdirSync(i,{recursive:!0}),s=Fl(i,c)),s}async function np(t,e){let{browser:r,startingUrl:s,preferences:i,profile:o,browserFlags:n=[]}=e,c=op(r,o,i),p=[];s&&p.push(`--url=${s}`),n&&p.push(...n);let l=t.options.devServer?.port?t.options.devServer?.port+100:9222;return[`--binary-args="${p.join(" ")}"`,`--profile="${c.path()}"`,`--listen=${l}`,"--verbose"].join(" ")}var fp=a(require("path"));var ap=a(require("net")),cp=a(require("events"));function Ll(t,e){let r=e.toString(),s=r.indexOf(":");if(s<1)return{remainingData:e};let i=parseInt(r.substring(0,s),10);if(isNaN(i))return{remainingData:e,error:new Error(nc(t)),fatal:!0};if(e.length-(s+1)<i)return{remainingData:e};let o=e.slice(s+1,s+1+i),n=e.slice(s+1+i);try{let c=JSON.parse(o.toString());return{remainingData:n,parsedMessage:c}}catch(c){return{remainingData:n,error:c,fatal:!1}}}var Dr=class extends cp.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((r,s)=>{try{let i={port:e,host:"127.0.0.1"},o=ap.default.createConnection(i,()=>{r()});this.connection=o,o.on("data",this.onData.bind(this)),o.on("error",s),o.on("end",this.onEnd.bind(this)),o.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:r,reject:s})}catch(i){s(i)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(ac("firefox"))))}rejectAllRequests(e){this.activeRequests.forEach(r=>{r.reject(e)}),this.activeRequests.clear(),this.pendingRequests.forEach(({deferred:r})=>{r.reject(e)}),this.pendingRequests=[]}async request(e){let r=typeof e=="string"?{to:"root",type:e}:e;if(!r.to)throw new Error(cc("firefox",r.type));return await new Promise((s,i)=>{let o={resolve:s,reject:i};this.pendingRequests.push({request:r,deferred:o}),this.flushPendingRequests()})}flushPendingRequests(){this.pendingRequests=this.pendingRequests.filter(({request:e,deferred:r})=>{if(this.activeRequests.has(e.to))return!0;if(!this.connection)throw new Error(pc("firefox"));try{let s=`${Buffer.from(JSON.stringify(e)).length}:${JSON.stringify(e)}`;this.connection.write(s),this.expectReply(e.to,r)}catch(s){r.reject(s)}return!1})}expectReply(e,r){if(this.activeRequests.has(e))throw new Error(lc("firefox",e));this.activeRequests.set(e,r)}onData(e){for(this.incomingData=Buffer.concat([this.incomingData,e]);this.readMessage(););}readMessage(){let{remainingData:e,parsedMessage:r,error:s,fatal:i}=Ll("firefox",this.incomingData);return this.incomingData=e,s?(this.emit("error",new Error(fc("firefox",s))),i&&this.disconnect(),!i):r?(this.handleMessage(r),!0):!1}handleMessage(e){if(!e.from){this.emit("error",new Error(uc("firefox",e)));return}let r=this.activeRequests.get(e.from);r?(this.activeRequests.delete(e.from),e.error?r.reject(e):r.resolve(e),this.flushPendingRequests()):this.emit("error",new Error(mc("firefox",JSON.stringify(e))))}onError(e){this.emit("error",e)}onEnd(){this.emit("end")}onTimeout(){this.emit("timeout")}};function pp(t){return t instanceof Error?String(t):`${t.error}: ${t.message}`}function lp(t,e){return Array.isArray(t)&&t.includes(e.code)?!0:e.code===t}var Ol=150,Il=1e3,Lr=class{options;constructor(e){this.options=e}async connectClient(e){let r;for(let s of Array.from({length:Ol}))try{let i=new Dr;return await i.connect(e),i}catch(i){if(lp("ECONNREFUSED",i))await new Promise(o=>setTimeout(o,Il)),r=i;else throw console.error(rc(this.options.browser,i.stack)),i}throw console.error(sc(this.options.browser)),r}async installAddons(e){let{devtools:r}=this.options,s=Array.isArray(this.options.extension)?this.options.extension:[this.options.extension],i=e.options.devServer?.port,o=i?i+100:9222,n=await this.connectClient(o);for(let[c,p]of s.entries()){let l=fp.default.join(p.replace(/"/g,"")),u=c===0&&r;try{let m=await n.request({to:"root",type:"getRoot"});await n.request({to:m.addonsActor,type:"installTemporaryAddon",addonPath:l,openDevTools:u})}catch(m){let g=pp(m);throw new Error(ic(this.options.browser,g))}}}};var ee=null;process.on("SIGINT",()=>{ee&&ee.kill("SIGINT"),process.exit()});process.on("SIGTERM",()=>{ee&&ee.kill("SIGTERM"),process.exit()});var Or=class{extension;browser;browserFlags;profile;preferences;startingUrl;autoReload;stats;geckoBinary;constructor(e){this.extension=e.extension,this.browser=e.browser||"firefox",this.browserFlags=e.browserFlags||[],this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl,this.geckoBinary=e.geckoBinary}async getFxRunnerCommand(){let e=oe()?"pnpm dlx fx-runner":"npm exec fx-runner";try{return await new Promise((r,s)=>{(0,Is.exec)(`${e} --version`,i=>{i?s(i):r(null)})}),e}catch{console.error(Ge("firefox",e)),process.exit(1)}}async launchFirefox(e,r){let s=await this.getFxRunnerCommand(),i;switch(r.browser){case"gecko-based":i=mp.default.normalize(this.geckoBinary);break;default:i=Cc;break}let o=`${s} start --binary "${i}" --foreground --no-remote`;up.default.existsSync(i||"")||(console.error(Ge(this.browser,i||"")),process.exit(1));let n=await np(e,r),c=`${o} ${n}`;ee=(0,Is.exec)(c,(l,u,m)=>{if(l!=null)throw l;m.includes("Unable to move the cache")?console.log(Ya(this.browser)):(console.log(Qa(this.browser)),process.exit())}),process.env.EXTENSION_ENV==="development"&&(ee.stdout?.pipe(process.stdout),ee.stderr?.pipe(process.stderr));let p=new Lr(this);try{await p.installAddons(e)}catch(l){l?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(ec(this.browser)),process.exit(1)),console.error(tc(this.browser,l)),process.exit(1)}}apply(e){let r=!1;e.hooks.done.tapAsync("run-firefox:module",async(s,i)=>{if(s.compilation.errors.length>0){i();return}if(r){i();return}setTimeout(()=>{console.log(Er(this.browser,s.compilation.options.mode))},2e3),await this.launchFirefox(e,{browser:this.browser,browserFlags:this.browserFlags,profile:this.profile,preferences:this.preferences,startingUrl:this.startingUrl,mode:s.compilation.options.mode}),r=!0,i()})}};var Ir=class{static name="plugin-browsers";extension;browser;open;browserFlags;profile;preferences;startingUrl;chromiumBinary;geckoBinary;constructor(e){this.extension=[...e.extension,...e.browserFlags?.filter(r=>!r.startsWith("--load-extension="))||[]],e.chromiumBinary?this.browser="chromium-based":e.geckoBinary?this.browser="gecko-based":this.browser=e.browser||"chrome",this.open=e.open,this.browserFlags=e.browserFlags?.filter(r=>!r.startsWith("--load-extension="))||[],this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl||"",this.chromiumBinary=e.chromiumBinary,this.geckoBinary=e.geckoBinary}getProfilePath(e,r,s){return s||(e.options.mode==="production"?Ms.default.join(dp.default.tmpdir(),"extension-js",r,"profile"):Ms.default.resolve(__dirname,`run-${r}-profile`))}async apply(e){let r={stats:!0,open:this.open!=="false",extension:this.extension,browser:this.browser,browserFlags:this.browserFlags||[],profile:this.profile,preferences:this.preferences,startingUrl:this.startingUrl,chromiumBinary:this.chromiumBinary,geckoBinary:this.geckoBinary},s=await ve(e.context,this.browser),i={...r,...s};if(i?.open===!1&&console.log(bc(this.browser,!1)),i?.startingUrl&&console.log(dc(i?.browser,i?.startingUrl)),i?.chromiumBinary&&console.log(js("chromium",i?.chromiumBinary)),i?.geckoBinary&&console.log(js("gecko",i?.geckoBinary)),i?.profile&&console.log(gc(i?.browser,i?.profile)),i?.preferences&&console.log(hc(i?.browser)),i?.browserFlags&&i?.browserFlags.length>0&&console.log(yc(i?.browser)),i.open===!1)return;let o=this.getProfilePath(e,this.browser,this.profile||this.profile);switch(this.browser){case"chrome":case"edge":case"chromium-based":{new Ze({...i,browser:this.browser,profile:o}).apply(e);break}case"firefox":case"gecko-based":new Or({...i,browser:this.browser,profile:o}).apply(e);break;default:{new Ze({...i,browser:"chrome",profile:o}).apply(e);break}}}};function te(t,e){let r=et.default.join(t,"manifest.json"),s=S(require(r),e.browser),i=et.default.join(t,`dist/${e.browser}`),o=e.chromiumBinary?"chromium-based":e.geckoBinary?"gecko-based":e.browser;return{mode:e.mode||"development",entry:{},target:"web",context:t,devtool:s.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:{keep(n){return!n.startsWith("hot/background")}},path:i,publicPath:"/",hotUpdateChunkFilename:"hot/[id].[fullhash].hot-update.js",hotUpdateMainFilename:"hot/[runtime].[fullhash].hot-update.json",environment:{bigIntLiteral:!0,dynamicImport:!0}},resolve:{modules:["node_modules",et.default.join(t,"node_modules")],extensions:[".js",".mjs",".jsx",".ts",".mts",".tsx",".json",".wasm",".svelte"]},watchOptions:{ignored:/node_modules|dist/},module:{rules:[]},plugins:[new pt({manifestPath:r,browser:o}),new ht({manifestPath:r}),new gt({manifestPath:r}),new wt({manifestPath:r}),process.env.EXPERIMENTAL_ERRORS_PLUGIN==="true"&&new Pr({manifestPath:r,browser:o}),new xr({manifestPath:r,browser:o,polyfill:e.polyfill}),new fr({manifestPath:r,browser:o}),new hr({manifestPath:r,browser:o,stats:!0,port:8e3}),new Ir({extension:[i,et.default.join(__dirname,"extensions",`${o}-manager-extension`)],browser:o,open:e.open,startingUrl:e.startingUrl,profile:e.profile,preferences:e.preferences,browserFlags:e.browserFlags,chromiumBinary:e.chromiumBinary,geckoBinary:e.geckoBinary})].filter(Boolean),stats:{all:!1,errors:!0,warnings:!0},infrastructureLogging:{level:"none"},performance:{hints:!1,maxAssetSize:999e3,maxEntrypointSize:999e3},optimization:{minimize:e.mode==="production"},experiments:{asyncWebAssembly:!0}}}var tt=a(require("path")),wp=a(require("go-git-it"));var Mr=a(require("path")),gp=a(require("axios")),hp=a(require("adm-zip"));var As=a(require("stream")),yp=require("util"),Ml=(0,yp.promisify)(As.default.pipeline);async function bp(t,e){let r=t.split("?")[0];try{console.log(Hc(r));let s=await(0,gp.default)({url:t,method:"GET",responseType:"stream"}),i=Mr.default.extname(r),o=Mr.default.basename(r,i),n=Mr.default.join(e,o);console.log(Vc(n));let c=[];await Ml(s.data,new As.default.Writable({write(u,m,g){c.push(u),g()}}));let p=Buffer.concat(c);return new hp.default(p).extractAllTo(n,!0),console.log(Gc()),n}catch(s){throw console.error(Xc(s)),s}}var Al=t=>{try{return new URL(t),!0}catch{return!1}};async function Tl(t,e){return await(0,wp.default)(t,process.cwd(),e),tt.default.resolve(process.cwd(),tt.default.basename(t))}async function Rl(t){return await bp(t,process.cwd())}async function Z(t){if(!t)return process.cwd();if(Al(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await Rl(t);let r=e.pathname.split("/"),s=r.slice(1,3)[0],i=r.slice(1,3)[1];console.log(Ic(s,i));let o=tt.default.basename(e.pathname),n=await Tl(t,Mc(o));return console.log(Ac(o)),n}}return tt.default.resolve(process.cwd(),t)}var H=a(require("path")),xp=a(require("fs")),vp=a(require("ignore")),_p=a(require("tiny-glob")),Ts=a(require("adm-zip")),Sp=a(require("slugify"));function Nl(t){try{return xp.default.readFileSync(t,"utf8")}catch{return""}}function Ul(t){return(0,Sp.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function ql(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function Bl(t,e){let r=Ul(e.zipFilename||t.name);return e.zipFilename?r:`${r}-${t.version}`}async function Wl(t){let e=H.default.join(t,".gitignore"),r=Nl(e),s=(0,vp.default)();return r?s.add(r):console.log(Tc(t)),(await(0,_p.default)("**/*",{cwd:t,dot:!0})).filter(o=>!s.ignores(o))}async function Pp(t,{browser:e="chrome",...r}){try{let s=H.default.join(t,"dist"),i=H.default.join(s,e),o=r.zipSource?t:i,n=require(H.default.join(o,"manifest.json")),c=Bl(n,{browser:e,...r}),p=ql(e),l=H.default.join(i,`${c}.${p}`),u=H.default.join(s,`${c}-source.${p}`);if(r.zipSource){console.log(""),console.log(Rc(u));let m=new Ts.default;(await Wl(t)).forEach(b=>{m.addLocalFile(H.default.join(t,b),H.default.dirname(b))}),m.writeZip(u)}if(r.zip){console.log(""),console.log(Nc(l));let m=new Ts.default;m.addLocalFolder(i),m.writeZip(l)}r.zip&&r.zipSource?(console.log(""),console.log(Uc(e,c,u,l))):r.zip?(console.log(""),console.log(qc(c,p,e,l))):r.zipSource&&(console.log(""),console.log(Bc(c,p,e,u)))}catch(s){throw console.error(Wc(s)),s}}async function Ar(t,e){let r=await Z(t);!t?.startsWith("http")&&!kp.default.existsSync(Rs.default.join(r,"manifest.json"))&&(console.log(X(Rs.default.join(r,"manifest.json"))),process.exit(1));try{let s=e?.browser||"chrome",i=te(r,{...e,browser:s,mode:"production"}),o=i.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=(await xe(r))({...i,plugins:o}),p=(0,$p.merge)(c),l=(0,Ep.default)(p);await new Promise((u,m)=>{l.run(async(g,b)=>{if(g)return console.error(g.stack||g),m(g);e?.silent||console.log(Lc(r,b,s)),(e?.zip||e?.zipSource)&&await Pp(r,{...e,browser:s}),b?.hasErrors()?(console.log(b.toString({colors:!0})),process.exit(1)):(console.log(Oc()),u())})})}catch(s){process.env.EXTENSION_ENV==="development"&&console.error(s),process.exit(1)}}var qs=a(require("fs")),Rr=a(require("path"));var Us=a(require("path")),Cp=a(require("webpack")),jp=a(require("webpack-dev-server")),Fp=require("webpack-merge");function Ns(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function Dp(t,e){let r=sp(t,"dev"),s=ve(t,e.browser),i=te(t,{...e,...r,...s,mode:"development"}),n=(await xe(t))(i),c=(0,Fp.merge)(n),p=(0,Cp.default)(c),l={host:"127.0.0.1",allowedHosts:"all",static:Us.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:ft(t)?void 0:{paths:[Us.default.join(t,"**/*.html")],options:{usePolling:!0,interval:1e3}},client:{logging:process.env.EXTENSION_ENV==="development"?"error":"none",progress:!1,overlay:!1},headers:{"Access-Control-Allow-Origin":"*"},port:"auto",hot:!0},u=new jp.default(l,p);u.startCallback(m=>{m!=null&&console.log(`Error in the Extension.js runner: ${m.stack||""}`)}),process.on("ERROR",()=>{Ns(u)}),process.on("SIGINT",()=>{Ns(u)}),process.on("SIGTERM",()=>{Ns(u)})}var Tr=a(require("path")),_e=a(require("fs/promises"));async function Lp(t){let e=Tr.default.join(t,"extension-env.d.ts"),r=process.env.EXTENSION_ENV==="development"?Tr.default.resolve(process.cwd(),"programs/cli/types"):"extension/dist/types",s=`// Required Extension.js types for TypeScript projects.
|
|
107
|
+
`,g=`Size: ${(0,d.gray)(Il(i))}
|
|
108
|
+
`,b="";return b+=c,b+=Ml(i),b+=m,b+=g,b+=p,b+=u,b+=l,b}function Na(){return`${k("success")} No errors or warnings found. Your extension is ${(0,d.brightGreen)("ready for deployment")}.`}function Ta(t,e){return`${k("info")} Fetching data...
|
|
109
|
+
${(0,d.gray)("URL")} ${(0,d.underline)(`https://github.com/${t}/${e}`)}`}function Ua(t){return`${k("info")} Downloading ${(0,d.cyan)(t)}...`}function Ba(t){return`
|
|
110
|
+
${k("info")} Creating a new browser extension...
|
|
111
|
+
${(0,d.gray)("PATH")} ${(0,d.underline)(`${t}`)}`}function qa(t){return`${k("info")} No ${(0,d.brightYellow)(".gitignore")} found, zipping all the content inside path:
|
|
112
|
+
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function Wa(t){return`${k("info")} Packaging source files. Files in ${(0,d.brightYellow)(".gitignore")} will be excluded...
|
|
113
|
+
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}.`}function Ja(t){return`${k("info")} Packaging extension distribution files...
|
|
114
|
+
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function za(t,e,s,r){return`\u{1F4E6} Package name: ${(0,d.brightYellow)(`${e}`)}, Target Browser: ${`${xe(t)}`}
|
|
115
|
+
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${s}`)} (source)
|
|
116
|
+
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${r}`)} (distribution)`}function Ha(t,e,s,r){return`\u{1F4E6} Package name: ${(0,d.brightYellow)(`${t}.${e}`)}, Target Browser: ${`${xe(s)}`}
|
|
117
|
+
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${r}`)} ${(0,d.gray)("(distribution)")}`}function Va(t,e,s,r){return`\u{1F4E6} Package name: ${(0,d.brightYellow)(`${t}-source.${e}`)}, Target Browser: ${`${xe(s)}`}
|
|
118
|
+
${(0,d.gray)("\u2514\u2500")} ${(0,d.underline)(`${r}`)} (source)`}function Xa(t){return`${k("error")} Failed to compress extension package.
|
|
119
|
+
${(0,d.red)(t)}`}function Ga(t){return`${k("info")} Writing type definitions for ${(0,d.cyan)(t.name||"")}...`}function Za(t){return`${k("error")} Failed to write the extension type definition.
|
|
120
|
+
${(0,d.red)(t)}`}function Ka(t){return`${k("info")} Downloading extension...
|
|
121
|
+
${(0,d.gray)("URL")} ${(0,d.underline)(t)}`}function Ya(t){return`${k("info")} Unpackaging browser extension...
|
|
122
|
+
${(0,d.gray)("PATH")} ${(0,d.underline)(t)}`}function Qa(){return`${k("info")} Browser extension unpackaged ${(0,d.brightGreen)("successfully")}. Compiling...`}function ec(t){return`${k("error")} Failed to download or extract ZIP file. ${(0,d.red)(t)}`}function xe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function tc(t){return`${(t/1024).toFixed(2)}KB`}function Il(t){let e=0;return t?.forEach(s=>{e+=s.size}),tc(e)}function sc(t,e=""){let s="";return Object.keys(t).forEach((r,n,o)=>{let i=n===o.length-1,c=i?"\u2514\u2500":"\u251C\u2500",l=t[r].size?` (${tc(t[r].size)})`:"";s+=`${(0,d.gray)(e)}${(0,d.gray)(c)} ${r}${(0,d.gray)(l)}
|
|
123
|
+
`,typeof t[r]=="object"&&!t[r].size&&(s+=sc(t[r],`${e}${i?" ":(0,d.gray)("\u2502 ")}`))}),s}function Ml(t){let e={};return t?.forEach(s=>{let r=s.name.split("/"),n=e;r.forEach((o,i)=>{n[o]||(n[o]={}),i===r.length-1?n[o]={size:s.size}:n=n[o]})}),`.
|
|
124
|
+
${sc(e)}`}function rc(t){return`${k("info")} Using ${(0,d.magenta)(t)}. ${(0,d.brightYellow)("This is very experimental")}.`}function nc(){return`${k("info")} Installing project dependencies...`}function oc(t,e,s){return`${k("error")} Command ${t} ${e.join(" ")} failed with exit code ${s}`}function ic(t){return`${k("error")} Can't install project dependencies. ${(0,d.red)(t.message||t.toString())}`}async function we(t){let e=Ze.default.join(t,"extension.config.js");if(Ge.default.existsSync(e)&&await br(t)){let s=require(e);if(s&&typeof s.config=="function")return s.config}return s=>s}async function cc(t,e){let s=Ze.default.join(t,"extension.config.js");if(Ge.default.existsSync(s)&&await br(t)){let r=require(s);if(r)return r[e]}return{}}async function ve(t,e="chrome"){let s=Ze.default.join(t,"extension.config.js");if(Ge.default.existsSync(s)&&await br(t)){let r=require(s);if(r&&r.browser&&r.browser[e])return r.browser[e]||{browser:"chrome"}}return{browser:"chrome"}}var ac=!1;async function br(t){let e=Ze.default.join(t,"extension.config.js");return Ge.default.existsSync(e)?(ac||(console.log(rc("extension.config.js")),ac=!0),!0):!1}function lc(t,e){let s={...ve(xr.default.resolve(__dirname,"run-firefox"),"firefox"),...yr(e)};Object.keys(s).forEach(o=>{t.setPreference(o,s[o])});let n=Object.keys(e);return n.length>0&&n.forEach(o=>{t.setPreference(o,e[o])}),t.updatePreferences(),t}function Al(t,e){let s=new wr.default({destinationDirectory:t});return lc(s,e)}function Rl(t,e,s){let r;if(_s.default.statSync(e).isDirectory())r=e;else throw new Error(pa(t,e));let o=new wr.default({destinationDirectory:r});return lc(o,s)}function pc(t,e,s={}){let r,n=e||xr.default.resolve(__dirname,`run-${t}-profile`),c={...yr(s||{}),...s};return!e&&_s.default.existsSync(n)?r=Rl(t,n,c):(ws(bs(t),()=>{}),_s.default.mkdirSync(n,{recursive:!0}),r=Al(n,c)),r}async function fc(t,e){let{browser:s,startingUrl:r,preferences:n,profile:o,browserFlags:i=[]}=e,c=pc(s,o,n),l=[];r&&l.push(`--url=${r}`),i&&l.push(...i);let p=t.options.devServer?.port?t.options.devServer?.port+100:9222;return[`--binary-args="${l.join(" ")}"`,`--profile="${c.path()}"`,`--listen=${p}`,"--verbose"].join(" ")}var hc=a(require("path"));var uc=a(require("net")),mc=a(require("events"));function Nl(t,e){let s=e.toString(),r=s.indexOf(":");if(r<1)return{remainingData:e};let n=parseInt(s.substring(0,r),10);if(isNaN(n))return{remainingData:e,error:new Error(fa(t)),fatal:!0};if(e.length-(r+1)<n)return{remainingData:e};let o=e.slice(r+1,r+1+n),i=e.slice(r+1+n);try{let c=JSON.parse(o.toString());return{remainingData:i,parsedMessage:c}}catch(c){return{remainingData:i,error:c,fatal:!1}}}var Ps=class extends mc.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((s,r)=>{try{let n={port:e,host:"127.0.0.1"},o=uc.default.createConnection(n,()=>{s()});this.connection=o,o.on("data",this.onData.bind(this)),o.on("error",r),o.on("end",this.onEnd.bind(this)),o.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:s,reject:r})}catch(n){r(n)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(ua("firefox"))))}rejectAllRequests(e){this.activeRequests.forEach(s=>{s.reject(e)}),this.activeRequests.clear(),this.pendingRequests.forEach(({deferred:s})=>{s.reject(e)}),this.pendingRequests=[]}async request(e){let s=typeof e=="string"?{to:"root",type:e}:e;if(!s.to)throw new Error(ma("firefox",s.type));return await new Promise((r,n)=>{let o={resolve:r,reject:n};this.pendingRequests.push({request:s,deferred:o}),this.flushPendingRequests()})}flushPendingRequests(){this.pendingRequests=this.pendingRequests.filter(({request:e,deferred:s})=>{if(this.activeRequests.has(e.to))return!0;if(!this.connection)throw new Error(da("firefox"));try{let r=`${Buffer.from(JSON.stringify(e)).length}:${JSON.stringify(e)}`;this.connection.write(r),this.expectReply(e.to,s)}catch(r){s.reject(r)}return!1})}expectReply(e,s){if(this.activeRequests.has(e))throw new Error(ga("firefox",e));this.activeRequests.set(e,s)}onData(e){for(this.incomingData=Buffer.concat([this.incomingData,e]);this.readMessage(););}readMessage(){let{remainingData:e,parsedMessage:s,error:r,fatal:n}=Nl("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(ha("firefox",r))),n&&this.disconnect(),!n):s?(this.handleMessage(s),!0):!1}handleMessage(e){if(!e.from){this.emit("error",new Error(ya("firefox",e)));return}let s=this.activeRequests.get(e.from);s?(this.activeRequests.delete(e.from),e.error?s.reject(e):s.resolve(e),this.flushPendingRequests()):this.emit("error",new Error(ba("firefox",JSON.stringify(e))))}onError(e){this.emit("error",e)}onEnd(){this.emit("end")}onTimeout(){this.emit("timeout")}};function dc(t){return t instanceof Error?String(t):`${t.error}: ${t.message}`}function gc(t,e){return Array.isArray(t)&&t.includes(e.code)?!0:e.code===t}var Tl=150,Ul=1e3,Es=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:Tl}))try{let n=new Ps;return await n.connect(e),n}catch(n){if(gc("ECONNREFUSED",n))await new Promise(o=>setTimeout(o,Ul)),s=n;else throw console.error(aa(this.options.browser,n.stack)),n}throw console.error(ca(this.options.browser)),s}async installAddons(e){let{devtools:s}=this.options,r=Array.isArray(this.options.extension)?this.options.extension:[this.options.extension],n=e.options.devServer?.port,o=n?n+100:9222,i=await this.connectClient(o);for(let[c,l]of r.entries()){let p=hc.default.join(l.replace(/"/g,"")),u=c===0&&s;try{let m=await i.request({to:"root",type:"getRoot"});await i.request({to:m.addonsActor,type:"installTemporaryAddon",addonPath:p,openDevTools:u})}catch(m){let g=dc(m);throw new Error(la(this.options.browser,g))}}}};var se=null;process.on("SIGINT",()=>{se&&se.kill("SIGINT"),process.exit()});process.on("SIGTERM",()=>{se&&se.kill("SIGTERM"),process.exit()});var ks=class{extension;browser;browserFlags;profile;preferences;startingUrl;autoReload;stats;geckoBinary;constructor(e){this.extension=e.extension,this.browser=e.browser||"firefox",this.browserFlags=e.browserFlags||[],this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl,this.geckoBinary=e.geckoBinary}async getFxRunnerCommand(){let e=ae()?"pnpm dlx fx-runner":"npm exec fx-runner";try{return await new Promise((s,r)=>{(0,vr.exec)(`${e} --version`,n=>{n?r(n):s(null)})}),e}catch{console.error(ze("firefox",e)),process.exit(1)}}async launchFirefox(e,s){let r=await this.getFxRunnerCommand(),n;switch(s.browser){case"gecko-based":n=bc.default.normalize(this.geckoBinary);break;default:n=Oa;break}let o=`${r} start --binary "${n}" --foreground --no-remote`;yc.default.existsSync(n||"")||(console.error(ze(this.browser,n||"")),process.exit(1));let i=await fc(e,s),c=`${o} ${i}`;se=(0,vr.exec)(c,(p,u,m)=>{if(p!=null)throw p;m.includes("Unable to move the cache")?console.log(ra(this.browser)):(console.log(na(this.browser)),process.exit())}),process.env.EXTENSION_ENV==="development"&&(se.stdout?.pipe(process.stdout),se.stderr?.pipe(process.stderr));let l=new Es(this);try{await l.installAddons(e)}catch(p){p?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(oa(this.browser)),process.exit(1)),console.error(ia(this.browser,p)),process.exit(1)}}apply(e){let s=!1;e.hooks.done.tapAsync("run-firefox:module",async(r,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}setTimeout(()=>{console.log(xs(this.browser,r.compilation.options.mode))},2e3),await this.launchFirefox(e,{browser:this.browser,browserFlags:this.browserFlags,profile:this.profile,preferences:this.preferences,startingUrl:this.startingUrl,mode:r.compilation.options.mode}),s=!0,n()})}};var $s=class{static name="plugin-browsers";extension;browser;open;browserFlags;profile;preferences;startingUrl;chromiumBinary;geckoBinary;constructor(e){this.extension=[...e.extension,...e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[]],e.chromiumBinary?this.browser="chromium-based":e.geckoBinary?this.browser="gecko-based":this.browser=e.browser||"chrome",this.open=e.open,this.browserFlags=e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[],this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl||"",this.chromiumBinary=e.chromiumBinary,this.geckoBinary=e.geckoBinary}getProfilePath(e,s,r){return r||(e.options.mode==="production"?Sr.default.join(xc.default.tmpdir(),"extension-js",s,"profile"):Sr.default.resolve(__dirname,`run-${s}-profile`))}async apply(e){let s={stats:!0,open:this.open!=="false",extension:this.extension,browser:this.browser,browserFlags:this.browserFlags||[],profile:this.profile,preferences:this.preferences,startingUrl:this.startingUrl,chromiumBinary:this.chromiumBinary,geckoBinary:this.geckoBinary},r=await ve(e.context,this.browser),n={...s,...r};if(n?.open===!1&&console.log(_a(this.browser,!1)),n?.startingUrl&&console.log(xa(n?.browser,n?.startingUrl)),n?.chromiumBinary&&console.log(hr("chromium",n?.chromiumBinary)),n?.geckoBinary&&console.log(hr("gecko",n?.geckoBinary)),n?.profile&&console.log(wa(n?.browser,n?.profile)),n?.preferences&&console.log(va(n?.browser)),n?.browserFlags&&n?.browserFlags.length>0&&console.log(Sa(n?.browser)),n.open===!1)return;let o=this.getProfilePath(e,this.browser,this.profile||this.profile);switch(this.browser){case"chrome":case"edge":case"chromium-based":{new Ve({...n,browser:this.browser,profile:o}).apply(e);break}case"firefox":case"gecko-based":new ks({...n,browser:this.browser,profile:o}).apply(e);break;default:{new Ve({...n,browser:"chrome",profile:o}).apply(e);break}}}};function re(t,e){let s=Ke.default.join(t,"manifest.json"),r=P(require(s),e.browser),n=Ke.default.join(t,`dist/${e.browser}`),o=e.chromiumBinary?"chromium-based":e.geckoBinary?"gecko-based":e.browser,i=e.output?.clean?e.output.clean:e.mode==="development";return{mode:e.mode||"development",entry:{},target:"web",context:t,devtool:r.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:i,path:n,publicPath:"/",hotUpdateChunkFilename:"hot/[id].[fullhash].hot-update.js",hotUpdateMainFilename:"hot/[runtime].[fullhash].hot-update.json",environment:{bigIntLiteral:!0,dynamicImport:!0}},resolve:{modules:["node_modules",Ke.default.join(t,"node_modules")],extensions:[".js",".mjs",".jsx",".ts",".mts",".tsx",".json",".wasm",".svelte"]},watchOptions:{ignored:/node_modules|dist/},module:{rules:[],parser:{"css/auto":{namedExports:!1}}},cache:!1,plugins:[new it({manifestPath:s,browser:o}),new gt({mode:e.mode,manifestPath:s}),new dt({manifestPath:s}),new xt({mode:e.mode,manifestPath:s}),new ys({manifestPath:s,browser:o,polyfill:e.polyfill}),new cs({manifestPath:s,browser:o}),new ms({manifestPath:s,browser:o,stats:!0,port:8e3}),new $s({extension:[n,Ke.default.join(__dirname,"extensions",`${o}-manager-extension`)],browser:o,open:e.open,startingUrl:e.startingUrl,profile:e.profile,preferences:e.preferences,browserFlags:e.browserFlags,chromiumBinary:e.chromiumBinary,geckoBinary:e.geckoBinary})].filter(Boolean),stats:{all:!1,errors:!0,warnings:!0},infrastructureLogging:{level:"none"},performance:{hints:!1,maxAssetSize:999e3,maxEntrypointSize:999e3},optimization:{minimize:e.mode==="production"},experiments:{css:!0,asyncWebAssembly:!0}}}var Ye=a(require("path")),Pc=a(require("go-git-it"));var Fs=a(require("path")),wc=a(require("axios")),vc=a(require("adm-zip"));var _r=a(require("stream")),Sc=require("util"),Bl=(0,Sc.promisify)(_r.default.pipeline);async function _c(t,e){let s=t.split("?")[0];try{console.log(Ka(s));let r=await(0,wc.default)({url:t,method:"GET",responseType:"stream"}),n=Fs.default.extname(s),o=Fs.default.basename(s,n),i=Fs.default.join(e,o);console.log(Ya(i));let c=[];await Bl(r.data,new _r.default.Writable({write(u,m,g){c.push(u),g()}}));let l=Buffer.concat(c);return new vc.default(l).extractAllTo(i,!0),console.log(Qa()),i}catch(r){throw console.error(ec(r)),r}}var ql=t=>{try{return new URL(t),!0}catch{return!1}};async function Wl(t,e){return await(0,Pc.default)(t,process.cwd(),e),Ye.default.resolve(process.cwd(),Ye.default.basename(t))}async function Jl(t){return await _c(t,process.cwd())}async function G(t){if(!t)return process.cwd();if(ql(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await Jl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],n=s.slice(1,3)[1];console.log(Ta(r,n));let o=Ye.default.basename(e.pathname),i=await Wl(t,Ua(o));return console.log(Ba(o)),i}}return Ye.default.resolve(process.cwd(),t)}var J=a(require("path")),Ec=a(require("fs")),kc=a(require("ignore")),$c=a(require("tiny-glob")),Pr=a(require("adm-zip")),Fc=a(require("slugify"));function zl(t){try{return Ec.default.readFileSync(t,"utf8")}catch{return""}}function Hl(t){return(0,Fc.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function Vl(t,e){if(e)return"zip";switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function Xl(t,e){let s=Hl(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function Gl(t){let e=J.default.join(t,".gitignore"),s=zl(e),r=(0,kc.default)();return s?r.add(s):console.log(qa(t)),(await(0,$c.default)("**/*",{cwd:t,dot:!0})).filter(o=>!r.ignores(o))}async function Cc(t,{browser:e="chrome",...s}){try{let r=J.default.join(t,"dist"),n=J.default.join(r,e),o=s.zipSource?t:n,i=require(J.default.join(o,"manifest.json")),c=Xl(i,{browser:e,...s}),l=Vl(e,s.zipSource),p=J.default.join(n,`${c}.${l}`),u=J.default.join(r,`${c}-source.${l}`);if(s.zipSource){console.log(""),console.log(Wa(u));let m=new Pr.default;(await Gl(t)).forEach(b=>{m.addLocalFile(J.default.join(t,b),J.default.dirname(b))}),m.writeZip(u)}if(s.zip){console.log(""),console.log(Ja(p));let m=new Pr.default;m.addLocalFolder(n),m.writeZip(p)}s.zip&&s.zipSource?(console.log(""),console.log(za(e,c,u,p))):s.zip?(console.log(""),console.log(Ha(c,l,e,p))):s.zipSource&&(console.log(""),console.log(Va(c,l,e,u)))}catch(r){throw console.error(Xa(r)),r}}async function Cs(t,e){let s=await G(t);!t?.startsWith("http")&&!jc.default.existsSync(Er.default.join(s,"manifest.json"))&&(console.log(X(Er.default.join(s,"manifest.json"))),process.exit(1));try{let r=e?.browser||"chrome",n=re(s,{...e,browser:r,mode:"production",output:{clean:!0}}),o=n.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=(await we(s))({...n,plugins:o}),l=(0,Lc.merge)(c),p=(0,Dc.rspack)(l);await new Promise((u,m)=>{p.run(async(g,b)=>{if(g)return console.error(g.stack||g),m(g);e?.silent||console.log(Ra(s,b,r)),(e?.zip||e?.zipSource)&&await Cc(s,{...e,browser:r}),b?.hasErrors()?(console.log(b.toString({colors:!0})),process.exit(1)):(console.log(Na()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var $r=a(require("fs")),Ds=a(require("path"));var Oc=a(require("path")),Ic=require("@rspack/core"),Mc=require("@rspack/dev-server"),Ac=require("webpack-merge");function kr(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function Rc(t,e){let s=cc(t,"dev"),r=ve(t,e.browser),n=re(t,{...e,...s,...r,mode:"development",output:{clean:!0}}),i=(await we(t))(n),c=(0,Ac.merge)(i),l=(0,Ic.rspack)(c),p={host:"127.0.0.1",allowedHosts:"all",static:{watch:{ignored:/\bnode_modules\b/}},compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:ct(t)?void 0:{paths:[Oc.default.join(t,"**/*.html")],options:{usePolling:!0,interval:1e3}},client:{logging:process.env.EXTENSION_ENV==="development"?"error":"none",progress:!1,overlay:!1},headers:{"Access-Control-Allow-Origin":"*"},port:"auto",hot:!0},u=new Mc.RspackDevServer(p,l);u.startCallback(m=>{m!=null&&console.log(`Error in the Extension.js runner: ${m.stack||""}`)}),process.on("ERROR",()=>{kr(u)}),process.on("SIGINT",()=>{kr(u)}),process.on("SIGTERM",()=>{kr(u)})}var js=a(require("path")),Se=a(require("fs/promises"));async function Nc(t){let e=js.default.join(t,"extension-env.d.ts"),s=process.env.EXTENSION_ENV==="development"?js.default.resolve(process.cwd(),"programs/cli/types"):"extension/dist/types",r=`// Required Extension.js types for TypeScript projects.
|
|
163
125
|
// This file is auto-generated and should not be excluded.
|
|
164
126
|
// If you need additional types, consider creating a new *.d.ts file and
|
|
165
127
|
// referencing it in the "include" array of your tsconfig.json file.
|
|
166
128
|
// See https://www.typescriptlang.org/tsconfig#include for more information.
|
|
167
|
-
/// <reference types="${
|
|
129
|
+
/// <reference types="${s}/index.d.ts" />
|
|
168
130
|
|
|
169
131
|
// Polyfill types for browser.* APIs.
|
|
170
|
-
/// <reference types="${
|
|
171
|
-
`;try{await
|
|
132
|
+
/// <reference types="${s}/polyfill.d.ts" />
|
|
133
|
+
`;try{await Se.default.access(e),(await Se.default.readFile(e,"utf8")).includes("develop/dist/types")&&await Se.default.writeFile(e,r),process.env.EXTENSION_ENV==="development"&&await Se.default.writeFile(e,r)}catch{let o=require(js.default.join(t,"manifest.json"));console.log(Ga(o));try{await Se.default.writeFile(e,r)}catch(i){console.log(Za(i))}}}var Tc=a(require("path")),Uc=require("cross-spawn"),Bc=a(require("fs")),qc=require("package-manager-detector");async function Zl(){let t=await(0,qc.detect)(),e="npm";if(ae())return"pnpm";switch(t?.name){case"yarn":e="yarn";break;case"pnpm":e="pnpm";break;default:e="npm"}return e}function Kl(){return["install"]}async function Wc(t){let e=Tc.default.join(t,"node_modules"),s=await Zl(),r=Kl(),n=process.cwd();try{process.chdir(t),await Bc.default.promises.mkdir(e,{recursive:!0});let o=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",i=(0,Uc.spawn)(s,r,{stdio:o});await new Promise((c,l)=>{i.on("close",p=>{p!==0?l(new Error(oc(s,r,p))):c()}),i.on("error",p=>{l(p)})})}catch(o){console.error(ic(o)),process.exit(1)}finally{process.chdir(n)}}async function Jc(t,e){let s=await G(t),r=Ds.default.join(s,"manifest.json");!t?.startsWith("http")&&!$r.default.existsSync(r)&&(console.log(X(Ds.default.join(s,"manifest.json"))),process.exit(1));try{K(s)&&await Nc(s);let n=Ds.default.join(s,"node_modules");$r.default.existsSync(n)||(console.log(nc()),await Wc(s)),setTimeout(async()=>{await Rc(s,{...e,mode:"development",browser:e.browser||"chrome"})},50)}catch(n){process.env.EXTENSION_ENV==="development"&&console.error(n),process.exit(1)}}var zc=a(require("fs")),Fr=a(require("path")),Hc=require("@rspack/core"),Vc=require("webpack-merge");async function Ls(t,e){let s=await G(t);!t?.startsWith("http")&&!zc.default.existsSync(Fr.default.join(s,"manifest.json"))&&(console.log(X(Fr.default.join(s,"manifest.json"))),process.exit(1));try{let r=e.browser||"chrome",n=re(s,{mode:"production",profile:e.profile,browser:r,chromiumBinary:e.chromiumBinary,geckoBinary:e.geckoBinary,startingUrl:e.startingUrl,output:{clean:!1}}),o=n.plugins?.filter(u=>u?.constructor.name==="plugin-browsers");console.log(Ma(r));let c=(await we(s))({...n,plugins:o}),l=(0,Vc.merge)(c);(0,Hc.rspack)(l).run(async(u,m)=>{u&&(console.error(u.stack||u),process.exit(1)),m?.hasErrors()?(console.log(m.toString({colors:!0})),process.exit(1)):console.log(Aa(s,{browser:r,mode:"production"}))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var Xc=a(require("fs")),Cr=a(require("path"));async function Gc(t,e){let s=await G(t);!t?.startsWith("http")&&!Xc.default.existsSync(Cr.default.join(s,"manifest.json"))&&(console.log(X(Cr.default.join(s,"manifest.json"))),process.exit(1));try{let r=e.browser||"chrome";await Cs(t,{...e,browser:r,silent:!0}),await Ls(t,{...e,browser:r})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}0&&(module.exports={extensionBuild,extensionDev,extensionPreview,extensionStart});
|