extension-develop 2.0.0-alpha.8 → 2.0.0-alpha.9

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.
@@ -1,10 +1,10 @@
1
- "use strict";var R=Object.create;var g=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var A=(e,n)=>{for(var r in n)g(e,r,{get:n[r],enumerable:!0})},y=(e,n,r,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of k(n))!C.call(e,t)&&t!==r&&g(e,t,{get:()=>n[t],enumerable:!(i=D(n,t))||i.enumerable});return e};var a=(e,n,r)=>(r=e!=null?R(_(e)):{},y(n||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),L=e=>y(g({},"__esModule",{value:!0}),e);var G={};A(G,{default:()=>N});module.exports=L(G);var x=a(require("path")),O=require("loader-utils"),M=require("schema-utils");var m=a(require("path")),H=a(require("fs")),B=require("child_process"),z=require("detect-package-manager");var W=a(require("path")),o=require("@colors/colors/safe");var v=a(require("path")),P=v.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),b=["chrome","edge"],U=["firefox"],Q=[...b,...U];function E(e){return e.replace(/\\/g,"/")}function h(e,n={}){if(!n)return!1;let r=E(e);return Object.values(n).some(t=>{if(typeof t!="string")return!1;let c=E(t).replace(/\/$/,"");return r.includes(c)})}function F(e,n){let r=m.default.relative(m.default.dirname(e),n);return!r.startsWith(".")&&!r.startsWith("..")&&(r="./"+r),r}var $=a(require("fs")),w=a(require("path"));function j(e,n){return(Array.isArray(e)?e||[]:e?[e]:[]).filter(t=>{let c=$.default.existsSync(t)&&!h(t,n),s=w.default.extname(t);return c&&(s===".js"||s===".mjs"||s===".jsx"||s===".ts"||s===".tsx")})}function S(e,n){return(Array.isArray(e)?e||[]:e?[e]:[]).filter(t=>$.default.existsSync(t)&&!h(t,n)&&(t.endsWith(".css")||t.endsWith(".scss")||t.endsWith(".sass")||t.endsWith(".less")))}var V={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"},includeList:{type:"object"},excludeList:{type:"object"}}},Y=`/**
1
+ "use strict";var R=Object.create;var g=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var A=(e,n)=>{for(var r in n)g(e,r,{get:n[r],enumerable:!0})},y=(e,n,r,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of k(n))!C.call(e,t)&&t!==r&&g(e,t,{get:()=>n[t],enumerable:!(i=D(n,t))||i.enumerable});return e};var a=(e,n,r)=>(r=e!=null?R(_(e)):{},y(n||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),L=e=>y(g({},"__esModule",{value:!0}),e);var G={};A(G,{default:()=>T});module.exports=L(G);var x=a(require("path")),O=require("loader-utils"),M=require("schema-utils");var m=a(require("path")),H=a(require("fs")),B=require("child_process"),z=require("detect-package-manager");var W=a(require("path")),o=require("@colors/colors/safe");var v=a(require("path")),P=v.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),b=["chrome","edge"],U=["firefox"],Q=[...b,...U];function E(e){return e.replace(/\\/g,"/")}function h(e,n={}){if(!n)return!1;let r=m.default.normalize(E(e));return Object.values(n).some(t=>typeof t!="string"?!1:E(t).includes(r))}function F(e,n){let r=m.default.relative(m.default.dirname(e),n);return!r.startsWith(".")&&!r.startsWith("..")&&(r="./"+r),r}var $=a(require("fs")),w=a(require("path"));function j(e,n){return(Array.isArray(e)?e||[]:e?[e]:[]).filter(t=>{let l=$.default.existsSync(t)&&!h(t,n),s=w.default.extname(t);return l&&(s===".js"||s===".mjs"||s===".jsx"||s===".ts"||s===".tsx")})}function S(e,n){return(Array.isArray(e)?e||[]:e?[e]:[]).filter(t=>$.default.existsSync(t)&&!h(t,n)&&(t.endsWith(".css")||t.endsWith(".scss")||t.endsWith(".sass")||t.endsWith(".less")))}var V={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"},includeList:{type:"object"},excludeList:{type:"object"}}},Y=`/**
2
2
  * Welcome to to your content_scripts CSS file during development!
3
3
  * To speed up the development process, your styles
4
4
  * are being injected directly into the head of the webpage,
5
5
  * and will be removed when you build your application, along
6
6
  * with this file. If you are seeing this file in a production build,
7
7
  * it means that something is wrong with your build configuration.
8
- */`;function N(e){let n=this.getOptions();(0,M.validate)(V,n,{name:"scripts:inject-content-css-during-dev",baseDataPath:"options"});let r=n.includeList||{},i=[],t=Object.entries(r).filter(([s,u])=>s.startsWith("content")&&u);if(!t.length)return e;for(let s of t){let[u,f]=s,l=[...j(f,n.excludeList||{})],p=S(f,n.excludeList||{});if(p.length&&!l.length){let d=x.default.resolve(__dirname,"minimum-content-file.mjs");l.push(d)}i.push({feature:u,scriptPath:l[0],cssImports:p.map(d=>F(l[0],d))})}let c=(0,O.urlToRequest)(this.resourcePath);return i.forEach(({feature:s,scriptPath:u,cssImports:f})=>{if(c.includes(u)){let l=f.map(p=>{let[,d]=s.split("/"),T=d.split("-")[1],I=x.default.basename(p);return`import(/* webpackChunkName: "${`web_accessible_resources/resource-${T}/${I.replace(".","_")}`}" */ '${p}').then(css => console.info('content_script.css loaded', css)).catch(err => console.error(err));`}).join(`
9
- `);this.emitFile(`${s}.css`,Y),e=`${l}
8
+ */`;function T(e){let n=this.getOptions();(0,M.validate)(V,n,{name:"scripts:inject-content-css-during-dev",baseDataPath:"options"});let r=n.includeList||{},i=[],t=Object.entries(r).filter(([s,u])=>s.startsWith("content")&&u);if(!t.length)return e;for(let s of t){let[u,f]=s,c=[...j(f,n.excludeList||{})],p=S(f,n.excludeList||{});if(p.length&&!c.length){let d=x.default.resolve(__dirname,"minimum-content-file.mjs");c.push(d)}i.push({feature:u,scriptPath:c[0],cssImports:p.map(d=>F(c[0],d))})}let l=(0,O.urlToRequest)(this.resourcePath);return i.forEach(({feature:s,scriptPath:u,cssImports:f})=>{if(l.includes(u)){let c=f.map(p=>{let[,d]=s.split("/"),N=d.split("-")[1],I=x.default.basename(p);return`import(/* webpackChunkName: "${`web_accessible_resources/resource-${N}/${I.replace(".","_")}`}" */ '${p}').then(css => console.info('content_script.css loaded', css)).catch(err => console.error(err));`}).join(`
9
+ `);this.emitFile(`${s}.css`,Y),e=`${c}
10
10
  ${e}`}}),e}
package/dist/module.js CHANGED
@@ -1,181 +1,178 @@
1
- "use strict";var wp=Object.create;var Ge=Object.defineProperty;var xp=Object.getOwnPropertyDescriptor;var vp=Object.getOwnPropertyNames;var _p=Object.getPrototypeOf,Sp=Object.prototype.hasOwnProperty;var Pp=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),kp=(t,e)=>{for(var s in e)Ge(t,s,{get:e[s],enumerable:!0})},Or=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vp(e))!Sp.call(t,i)&&i!==s&&Ge(t,i,{get:()=>e[i],enumerable:!(r=xp(e,i))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?wp(_p(t)):{},Or(e||!t||!t.__esModule?Ge(s,"default",{value:t,enumerable:!0}):s,t)),Ep=t=>Or(Ge({},"__esModule",{value:!0}),t);var qs=Pp((_l,$p)=>{$p.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-alpha.8",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\\.ts'","test:coverage":"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts' --coverage","test:build":"jest ./build.spec.ts --no-cache"},dependencies:{"@colors/colors":"^1.6.0","@swc/core":"^1.7.3","@types/firefox-webext-browser":"^120.0.4",acorn:"^8.12.1","acorn-walk":"^8.3.3","adm-zip":"^0.5.12",ajv:"^8.17.1",astring:"^1.8.6",axios:"^1.6.8","browser-extension-manifest-fields":"^1.0.6","case-sensitive-paths-webpack-plugin":"^2.4.0",chokidar:"^3.6.0","chrome-location":"^1.2.1","content-security-policy-parser":"^0.6.0","css-loader":"^6.10.0","csv-loader":"^3.0.5","detect-package-manager":"^3.0.2","dotenv-webpack":"^8.0.1","edge-location":"^1.0.0","firefox-profile":"^4.6.0","fx-runner":"^1.4.0","go-git-it":"2.0.4",ignore:"^5.3.1","loader-utils":"^3.3.1",micromatch:"^4.0.7","mini-css-extract-plugin":"^2.8.1",parse5:"^7.1.2","parse5-utils":"^2.0.0",postcss:"^8.4.40",progress:"^2.0.3","schema-utils":"^4.2.0",slugify:"^1.6.6","style-loader":"^3.3.4","swc-loader":"^0.2.6","tiny-glob":"^0.2.9","vue-template-compiler":"^2.7.16","webextension-polyfill":"^0.12.0",webpack:"~5.92.0","webpack-dev-server":"^5.0.2","webpack-merge":"^6.0.1","webpack-target-webextension":"^1.1.2"},devDependencies:{"@types/adm-zip":"^0.5.5","@types/case-sensitive-paths-webpack-plugin":"^2.1.9","@types/chrome":"^0.0.268","@types/dotenv-webpack":"^7.0.7","@types/jest":"^29.5.12","@types/loader-utils":"^2.0.6","@types/node":"^20.14.12","@types/webextension-polyfill":"^0.10.7",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.1",typescript:"5.3.3"},optionalDependencies:{"@babel/core":"^7.24.9","@pmmmwh/react-refresh-webpack-plugin":"^0.5.15","@prefresh/webpack":"^4.0.1","@vue/compiler-sfc":"^3.4.34","babel-loader":"^9.1.3","babel-preset-modern-browser-extension":"^0.7.0",less:"^4.2.0","less-loader":"^12.2.0","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^8.1.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^9.6.0","postcss-scss":"^4.0.9","react-refresh":"^0.14.2","react-refresh-typescript":"^2.0.9","resolve-url-loader":"^5.0.0",sass:"^1.77.8","sass-loader":"^16.0.0",stylelint:"^16.7.0","stylelint-config-standard-scss":"^13.1.0","stylelint-webpack-plugin":"^5.0.1",tailwindcss:"^3.4.7","vue-loader":"^17.4.2","vue-style-loader":"^4.1.3","vue-template-compiler":"^2.7.16"}}});var bl={};kp(bl,{extensionBuild:()=>ep,extensionDev:()=>cp,extensionPreview:()=>mp,extensionStart:()=>bp});module.exports=Ep(bl);var Zc=a(require("fs")),Yc=a(require("path")),Kc=a(require("webpack")),Qc=require("webpack-merge");var ze=a(require("path"));var mi=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),ui=a(require("dotenv-webpack"));var Us=a(require("path")),u=require("@colors/colors/safe");var Ar=a(require("path")),Xe=Ar.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),Se=["chrome","edge"],jp=["firefox"],xl=[...Se,...jp];function w(t,e){return e==="error"?`${t} ${(0,u.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:`${e==="warn"?(0,u.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,u.cyan)("\u25BA\u25BA\u25BA"):(0,u.brightGreen)("\u25BA\u25BA\u25BA")} ${t}`}function Mr(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Tr(t,e){if(!!1)return`${e.hasErrors()?(0,u.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,u.brightGreen)("\u25BA\u25BA\u25BA")} Extension.js compiled ${e.hasErrors()?(0,u.red)("with errors"):(0,u.brightGreen)("successfully")} in ${t} ms.`}function Rr(t,e,s){return`${w(t,"info")} ${(0,u.magenta)(e)} Integration Found
1
+ "use strict";var $p=Object.create;var Ge=Object.defineProperty;var Cp=Object.getOwnPropertyDescriptor;var Dp=Object.getOwnPropertyNames;var Fp=Object.getPrototypeOf,Lp=Object.prototype.hasOwnProperty;var Ip=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Op=(t,e)=>{for(var s in e)Ge(t,s,{get:e[s],enumerable:!0})},Mr=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Dp(e))!Lp.call(t,i)&&i!==s&&Ge(t,i,{get:()=>e[i],enumerable:!(r=Cp(e,i))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?$p(Fp(t)):{},Mr(e||!t||!t.__esModule?Ge(s,"default",{value:t,enumerable:!0}):s,t)),Ap=t=>Mr(Ge({},"__esModule",{value:!0}),t);var Us=Ip((Ol,Tp)=>{Tp.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-alpha.9",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\\.ts'","test:coverage":"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts' --coverage","test:build":"jest ./build.spec.ts --no-cache"},dependencies:{"@colors/colors":"^1.6.0","@swc/core":"^1.7.3","@types/firefox-webext-browser":"^120.0.4",acorn:"^8.12.1","acorn-walk":"^8.3.3","adm-zip":"^0.5.12",ajv:"^8.17.1",astring:"^1.8.6",axios:"^1.6.8","browser-extension-manifest-fields":"^1.0.6","case-sensitive-paths-webpack-plugin":"^2.4.0",chokidar:"^3.6.0","chrome-location":"^1.2.1","content-security-policy-parser":"^0.6.0","css-loader":"^6.10.0","csv-loader":"^3.0.5","detect-package-manager":"^3.0.2","dotenv-webpack":"^8.0.1","edge-location":"^1.0.0","firefox-profile":"^4.6.0","fx-runner":"^1.4.0","go-git-it":"2.0.4",ignore:"^5.3.1","loader-utils":"^3.3.1",micromatch:"^4.0.7","mini-css-extract-plugin":"^2.8.1",parse5:"^7.1.2","parse5-utils":"^2.0.0",postcss:"^8.4.40",progress:"^2.0.3","schema-utils":"^4.2.0",slugify:"^1.6.6","style-loader":"^3.3.4","swc-loader":"^0.2.6","tiny-glob":"^0.2.9","vue-template-compiler":"^2.7.16","webextension-polyfill":"^0.12.0",webpack:"~5.92.0","webpack-dev-server":"^5.0.2","webpack-merge":"^6.0.1","webpack-target-webextension":"^1.1.2"},devDependencies:{"@types/adm-zip":"^0.5.5","@types/case-sensitive-paths-webpack-plugin":"^2.1.9","@types/chrome":"^0.0.268","@types/dotenv-webpack":"^7.0.7","@types/jest":"^29.5.12","@types/loader-utils":"^2.0.6","@types/node":"^20.14.12","@types/webextension-polyfill":"^0.10.7",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.1",typescript:"5.3.3"},optionalDependencies:{"@babel/core":"^7.24.9","@pmmmwh/react-refresh-webpack-plugin":"^0.5.15","@prefresh/webpack":"^4.0.1","@vue/compiler-sfc":"^3.4.34","babel-loader":"^9.1.3","babel-preset-modern-browser-extension":"^0.7.0",less:"^4.2.0","less-loader":"^12.2.0","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^8.1.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^9.6.0","postcss-scss":"^4.0.9","react-refresh":"^0.14.2","react-refresh-typescript":"^2.0.9","resolve-url-loader":"^5.0.0",sass:"^1.77.8","sass-loader":"^16.0.0",stylelint:"^16.7.0","stylelint-config-standard-scss":"^13.1.0","stylelint-webpack-plugin":"^5.0.1",tailwindcss:"^3.4.7","vue-loader":"^17.4.2","vue-style-loader":"^4.1.3","vue-template-compiler":"^2.7.16"}}});var Dl={};Op(Dl,{extensionBuild:()=>op,extensionDev:()=>yp,extensionPreview:()=>_p,extensionStart:()=>jp});module.exports=Ap(Dl);var sp=a(require("fs")),rp=a(require("path")),ip=a(require("webpack")),np=require("webpack-merge");var Je=a(require("path"));var gi=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),mi=a(require("dotenv-webpack"));var Ws=a(require("path")),f=require("@colors/colors/safe");var Tr=a(require("path")),Xe=Tr.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),Se=["chrome","edge"],Mp=["firefox"],Ll=[...Se,...Mp];function w(t,e){return e==="error"?`${t} ${(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E")}`:`${e==="warn"?(0,f.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,f.cyan)("\u25BA\u25BA\u25BA"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} ${t}`}function Rr(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Nr(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 qr(t,e,s){return`${w(t,"info")} ${(0,f.magenta)(e)} Integration Found
2
2
 
3
- Installing required setup dependencies via ${(0,u.brightYellow)(s)}. This is a one time operation...`}function Nr(t){return`${w(t,"info")} loaded ${(0,u.brightYellow)("env")} file successfully.`}function v(t,e){return`${w(t,"info")} is using ${(0,u.magenta)(e)}.`}function k(t,e){return`${w(t,"success")} You Are All Set
3
+ Installing required setup dependencies via ${(0,f.brightYellow)(s)}. This is a one time operation...`}function Ur(t){return`${w(t,"info")} loaded ${(0,f.brightYellow)("env")} file successfully.`}function v(t,e){return`${w(t,"info")} is using ${(0,f.magenta)(e)}.`}function E(t,e){return`${w(t,"success")} You Are All Set
4
4
 
5
- Run the program again to start hacking with ${(0,u.magenta)(e)} support.`}function qr(t,e){return`${w(t,"info")} Installing Root Dependencies
5
+ Run the program again to start hacking with ${(0,f.magenta)(e)} support.`}function Wr(t,e){return`${w(t,"info")} Installing Root Dependencies
6
6
 
7
- Installing ${(0,u.magenta)(e)} dependencies in Extension.js root. This only happens for authors and contributors.`}function Ur(t,e){return`${w(t,"success")} ${e} Dependencies Installed ${(0,u.brightGreen)("Successfully")}.`}function Wr(t,e,s){return`${w(t,"error")} ${(0,u.magenta)(e)} Installation Error
7
+ Installing ${(0,f.magenta)(e)} dependencies in Extension.js root. This only happens for authors and contributors.`}function Br(t,e){return`${w(t,"success")} ${e} Dependencies Installed ${(0,f.brightGreen)("Successfully")}.`}function Jr(t,e,s){return`${w(t,"error")} ${(0,f.magenta)(e)} Installation Error
8
8
 
9
- Failed to detect package manager or install ${(0,u.magenta)(e)} dependencies: ${(0,u.red)(s?.toString()||"")}`}function Br(t){return`${w(t,"error")} No Service Worker Support
9
+ Failed to detect package manager or install ${(0,f.magenta)(e)} dependencies: ${(0,f.red)(s?.toString()||"")}`}function zr(t){return`${w(t,"error")} No Service Worker Support
10
10
 
11
- Firefox does not support the ${(0,u.brightYellow)("background.service_worker")} field yet.
12
- Update your manifest.json file to use ${(0,u.brightYellow)("background.scripts")} instead.
11
+ Firefox does not support the ${(0,f.brightYellow)("background.service_worker")} field yet.
12
+ Update your manifest.json file to use ${(0,f.brightYellow)("background.scripts")} instead.
13
13
 
14
- Read more: ${(0,u.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function Jr(t){return`${w(t,"error")} Insecure Content-Security-Policy
14
+ Read more: ${(0,f.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function Hr(t){return`${w(t,"error")} Insecure Content-Security-Policy
15
15
 
16
- Manifest includes insecure content-security-policy value ${(0,u.brightYellow)("'unsafe-eval'")} in directive ${(0,u.brightBlue)("'script-src'")}.`}function zr(t){return`${w(t,"error")} No Default Locale Specified
16
+ Manifest includes insecure content-security-policy value ${(0,f.brightYellow)("'unsafe-eval'")} in directive ${(0,f.brightBlue)("'script-src'")}.`}function Vr(t){return`${w(t,"error")} No Default Locale Specified
17
17
 
18
- Localization used, but ${(0,u.brightYellow)("default_locale")} wasn't specified in the manifest.`}function Pe(t){return t==="chrome"?(0,u.underline)("https://developer.chrome.com/docs/extensions/reference/manifest"):(0,u.underline)("https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json")}function Hr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
18
+ 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 Gr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
19
19
 
20
- Field ${(0,u.brightYellow)("web_accessible_resources")} must be a string array in Manifest version 2.
20
+ Field ${(0,f.brightYellow)("web_accessible_resources")} must be a string array in Manifest version 2.
21
21
 
22
- Read more: ${Pe(e)}`}function Vr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
22
+ Read more: ${Pe(e)}`}function Xr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
23
23
 
24
- Field ${(0,u.brightYellow)("web_accessible_resources")} must be an array of objects in Manifest version 3.
24
+ Field ${(0,f.brightYellow)("web_accessible_resources")} must be an array of objects in Manifest version 3.
25
25
 
26
- Read more: ${Pe(e)}`}function Gr(t,e,s){let i=s?.schemaPath?.split("/"),n=i?.slice(i.length-2).shift();return`${w(t,"error")} Deprecated Field
26
+ Read more: ${Pe(e)}`}function Zr(t,e,s){let i=s?.schemaPath?.split("/"),n=i?.slice(i.length-2).shift();return`${w(t,"error")} Deprecated Field
27
27
 
28
- Field ${(0,u.brightYellow)(n||"")} is deprecated in Manifest V3. Update your manifest.json file to run your extension.
28
+ Field ${(0,f.brightYellow)(n||"")} is deprecated in Manifest V3. Update your manifest.json file to run your extension.
29
29
 
30
- Read more: ${Pe(e)}`}function Xr(t,e,s){let r=e?.instancePath.replaceAll("/",".").slice(1)||"",i=e?.params.type;return`${w(t,"error")} Invalid Manifest Field
30
+ Read more: ${Pe(e)}`}function Yr(t,e,s){let r=e?.instancePath.replaceAll("/",".").slice(1)||"",i=e?.params.type;return`${w(t,"error")} Invalid Manifest Field
31
31
 
32
- Field ${(0,u.brightYellow)(r)} must be of type ${(0,u.brightBlue)(i)}.
32
+ Field ${(0,f.brightYellow)(r)} must be of type ${(0,f.brightBlue)(i)}.
33
33
 
34
- Read more: ${Pe(s)}`}function Zr(t,e,s){return`${w(t,"error")} Missing Required Manifest Field
34
+ Read more: ${Pe(s)}`}function Kr(t,e,s){return`${w(t,"error")} Missing Required Manifest Field
35
35
 
36
- Field ${(0,u.brightYellow)(s||"")} is required. Update your manifest.json file to run your extension.
36
+ Field ${(0,f.brightYellow)(s||"")} is required. Update your manifest.json file to run your extension.
37
37
 
38
- Read more: ${Pe(e)}`}function Yr(t,e){let s=e.split(".").pop(),r=`${w(t,"error")} Content Script Import
38
+ Read more: ${Pe(e)}`}function Qr(t,e){let s=e.split(".").pop(),r=`${w(t,"error")} Content Script Import
39
39
 
40
40
  One of your ${s?.toUpperCase()} imports is also a content_script CSS in manifest.json.
41
- Remove the duplicate entry and try again.`;if(e.startsWith("content_scripts"))return r}function Kr(t){return`${w(t,"error")} Top Level Await In Non-ECMAScript Module
41
+ Remove the duplicate entry and try again.`;if(e.startsWith("content_scripts"))return r}function ei(t){return`${w(t,"error")} Top Level Await In Non-ECMAScript Module
42
42
 
43
43
  Top-level await is only supported in ECMAScript modules.
44
- To use it in your extension, make sure to set ${(0,u.brightYellow)('"type": "module"')}
45
- in your package.json or use the ${(0,u.brightYellow)(".mjs")} extension for your script files.`}function Ze(t,e,s){if(!e)throw new Error("This operation is impossible. Please report a bug.");switch(Us.default.extname(s)){case".js":case".ts":case".jsx":case".tsx":return Cp(t,e,s);case".css":case".scss":case".sass":case".less":return Dp(t,e,s);default:return Fp(t,e,s)}}function ae(t,e,s){let r=e.startsWith("content_scripts")?"content_scripts":e.replace("/","."),i=e.split("-")[1],n=e.startsWith("pages"),o=t.includes("content_scripts")?`(index ${i})
44
+ To use it in your extension, make sure to set ${(0,f.brightYellow)('"type": "module"')}
45
+ in your package.json or use the ${(0,f.brightYellow)(".mjs")} extension for your script files.`}function Ze(t,e,s){if(!e)throw new Error("This operation is impossible. Please report a bug.");switch(Ws.default.extname(s)){case".js":case".ts":case".jsx":case".tsx":return Rp(t,e,s);case".css":case".scss":case".sass":case".less":return Np(t,e,s);default:return qp(t,e,s)}}function ae(t,e,s){let r=e.startsWith("content_scripts")?"content_scripts":e.replace("/","."),i=e.split("-")[1],n=e.startsWith("pages"),o=t.includes("content_scripts")?`(index ${i})
46
46
 
47
47
  `:r;return`${w(t,"error")} File Not Found
48
48
 
49
- ${n?`Check the ${(0,u.brightYellow)("pages")} folder in your project root directory.
49
+ ${n?`Check the ${(0,f.brightYellow)("pages")} folder in your project root directory.
50
50
 
51
- `:`Check the ${(0,u.brightYellow)(o)} field in your manifest.json file.
51
+ `:`Check the ${(0,f.brightYellow)(o)} field in your manifest.json file.
52
52
 
53
- `}${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Ye(t,e,s){return`${w(t,"error")} File Not Found
53
+ `}${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function Ye(t,e,s){return`${w(t,"error")} File Not Found
54
54
 
55
- Check the ${(0,u.brightYellow)(e)} field in your manifest.json file.
55
+ Check the ${(0,f.brightYellow)(e)} field in your manifest.json file.
56
56
 
57
- ${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Qr(t){return`${w(t,"error")} Manifest Not Found
57
+ ${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function ti(t){return`${w(t,"error")} Manifest Not Found
58
58
 
59
- Ensure you have a manifest.json file at the root directory of your project.`}function ei(t,e){return`${w(t,"error")} Invalid Manifest
59
+ Ensure you have a manifest.json file at the root directory of your project.`}function si(t,e){return`${w(t,"error")} Invalid Manifest
60
60
 
61
- Update your manifest.json file and try again. `+e}function ti(t,e){let s=e&&`${(0,u.gray)("PATH")} ${(0,u.red)("REMOVED")} ${(0,u.underline)(e)}
62
- `,r=t&&`${(0,u.gray)("PATH")} ${(0,u.brightGreen)("ADDED")} ${(0,u.underline)(t)}`;return`Manifest Entry Point Modification
61
+ Update your manifest.json file and try again. `+e}function ri(t,e){let s=e&&`${(0,f.gray)("PATH")} ${(0,f.red)("REMOVED")} ${(0,f.underline)(e)}
62
+ `,r=t&&`${(0,f.gray)("PATH")} ${(0,f.brightGreen)("ADDED")} ${(0,f.underline)(t)}`;return`Manifest Entry Point Modification
63
63
 
64
- Changing the path of ${(0,u.brightYellow)("<script>")} or ${(0,u.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
64
+ Changing the path of ${(0,f.brightYellow)("<script>")} or ${(0,f.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
65
65
 
66
- `+s+r}function si(t,e,s,r,i){let n=t.charAt(0).toUpperCase()+t.slice(1);return`${w("manifest.json","error")} Manifest Entry Point Modification
66
+ `+s+r}function ii(t,e,s,r,i){let n=t.charAt(0).toUpperCase()+t.slice(1);return`${w("manifest.json","error")} Manifest Entry Point Modification
67
67
 
68
- ${n} ${(0,u.brightYellow)(r)} in the ${(0,u.underline)(s+"/")} folder after compilation requires a server restart.
68
+ ${n} ${(0,f.brightYellow)(r)} in the ${(0,f.underline)(s+"/")} folder after compilation requires a server restart.
69
69
 
70
- ${(0,u.gray)("PATH")} ${(0,u.underline)(i)}`}function ri(t){return`${w(t,"warn")}`+v(t,"TypeScript").replace(".",`but no config file was found. Creating ${(0,u.brightYellow)("tsconfig.json")}...`)}function Ws(t,e,s){let r=t.name||"Extension.js",i;switch(e){case"chrome":i="chrome://extensions";break;case"edge":i="edge://extensions";break;case"firefox":i="about:debugging#/runtime/this-firefox";break;default:i=""}if(!s.data)return`
70
+ ${(0,f.gray)("PATH")} ${(0,f.underline)(i)}`}function ni(t){return`${w(t,"warn")}`+v(t,"TypeScript").replace(".",`but no config file was found. Creating ${(0,f.brightYellow)("tsconfig.json")}...`)}function Bs(t,e,s){let r=t.name||"Extension.js",i;switch(e){case"chrome":i="chrome://extensions";break;case"edge":i="edge://extensions";break;case"firefox":i="about:debugging#/runtime/this-firefox";break;default:i=""}if(!s.data)return`
71
71
 
72
- ${(0,u.bold)((0,u.red)("ERROR"))} in ${w(r,"error")} No data received from the extension client.
72
+ ${(0,f.bold)((0,f.red)("ERROR"))} in ${w(r,"error")} No data received from the extension client.
73
73
 
74
74
  This error happens when the program can't get the data from your extension.
75
75
  There are many reasons this might happen. To fix, ensure that:
76
76
 
77
- - Your extension is set as enabled in ${(0,u.underline)(i)}- No previous ${Mr(e)} browser instance is open
78
- If that is not the case, restart the both ${(0,u.cyan)(t.name||"")} the ${(0,u.brightYellow)("Manager Extension")} in ${(0,u.underline)(i)} and try again.
77
+ - Your extension is set as enabled in ${(0,f.underline)(i)}- No previous ${Rr(e)} browser instance is open
78
+ If that is not the case, restart the both ${(0,f.cyan)(t.name||"")} the ${(0,f.brightYellow)("Manager Extension")} in ${(0,f.underline)(i)} and try again.
79
79
 
80
80
  If nothing helps and the issue persists, please report a bug:
81
81
 
82
- `+(0,u.underline)("https://github.com/extension-js/extension.js/issues");let{id:n,management:o}=s.data;if(!o&&process.env.EXTENSION_ENV==="development")return`${w(r,"error")} No management API info received from client. Investigate.`;let{name:c,version:p}=o,l=qs().version;return`
83
- \u{1F9E9} ${(0,u.brightGreen)("Extension.js")} ${(0,u.gray)(`${l}`)}
84
- Extension Name ${(0,u.gray)(c)}
85
- Extension Version ${(0,u.gray)(p)}
86
- Extension ID ${(0,u.gray)(n)}`}function ii(t){return`This is your first run using Extension.js via ${Mr(t)}. Welcome! \u{1F389}
82
+ `+(0,f.underline)("https://github.com/extension-js/extension.js/issues");let{id:n,management:o}=s.data;if(!o&&process.env.EXTENSION_ENV==="development")return`${w(r,"error")} No management API info received from client. Investigate.`;let{name:c,version:p}=o,l=Us().version;return`
83
+ \u{1F9E9} ${(0,f.brightGreen)("Extension.js")} ${(0,f.gray)(`${l}`)}
84
+ Extension Name ${(0,f.gray)(c)}
85
+ Extension Version ${(0,f.gray)(p)}
86
+ Extension ID ${(0,f.gray)(n)}`}function oi(t){return`This is your first run using Extension.js via ${Rr(t)}. Welcome! \u{1F389}
87
87
 
88
- \u{1F9E9} Learn more at ${(0,u.underline)("https://extension.js.org")}`}function ni(t,e){return`${w(t,"error")} WebSocket: ${e}`}function oi(t,e,s){return`
88
+ \u{1F9E9} Learn more at ${(0,f.underline)("https://extension.js.org")}`}function ai(t,e){return`${w(t,"error")} WebSocket: ${e}`}function ci(t,e,s){return`
89
89
 
90
- ${(0,u.bold)((0,u.red)("ERROR"))} in ${w(t,"error")} File Not Found
90
+ ${(0,f.bold)((0,f.red)("ERROR"))} in ${w(t,"error")} File Not Found
91
91
 
92
- Check the ${(0,u.brightYellow)(e.replace("/","."))} field in your manifest.json file.
92
+ Check the ${(0,f.brightYellow)(e.replace("/","."))} field in your manifest.json file.
93
93
 
94
- ${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}}`}function ai(t,e){return`${w(t,"error")} HTML Entry Point Modification
94
+ ${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}}`}function pi(t,e){return`${w(t,"error")} HTML Entry Point Modification
95
95
 
96
- Changing the path of ${(0,u.brightYellow)("<script>")} or ${(0,u.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
96
+ Changing the path of ${(0,f.brightYellow)("<script>")} or ${(0,f.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
97
97
 
98
- ${(0,u.gray)("PATH")} ${e}`}function Cp(t,e,s){return`${w(t,"error")} File Not Found
98
+ ${(0,f.gray)("PATH")} ${e}`}function Rp(t,e,s){return`${w(t,"error")} File Not Found
99
99
 
100
- Check your ${(0,u.brightYellow)("<script>")} tags in ${(0,u.underline)(e)}.
100
+ Check your ${(0,f.brightYellow)("<script>")} tags in ${(0,f.underline)(e)}.
101
101
 
102
- ${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Dp(t,e,s){return`${w(t,"error")} File Not Found
102
+ ${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function Np(t,e,s){return`${w(t,"error")} File Not Found
103
103
 
104
- Check your ${(0,u.brightYellow)("<link>")} tags in ${(0,u.underline)(e)}.
104
+ Check your ${(0,f.brightYellow)("<link>")} tags in ${(0,f.underline)(e)}.
105
105
 
106
- ${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Fp(t,e,s){let r=Us.default.extname(s);return`${w(t,"error")} File Not Found
106
+ ${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function qp(t,e,s){let r=Ws.default.extname(s);return`${w(t,"error")} File Not Found
107
107
 
108
- Check your ${(0,u.brightYellow)("*"+r)} assets in ${(0,u.underline)(e)}.
108
+ Check your ${(0,f.brightYellow)("*"+r)} assets in ${(0,f.underline)(e)}.
109
109
 
110
- ${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function ci(){return`${(0,u.brightYellow)("Note")}: Firefox requires a secure certificate for localhost connections, needed for the reloader to work.
111
- By default, your ${(0,u.brightYellow)("manifest.json")} file is not being watched. To enable this feature, run:
110
+ ${(0,f.red)("NOT FOUND")} ${(0,f.underline)(s)}`}function li(){return`${(0,f.brightYellow)("Note")}: Firefox requires a secure certificate for localhost connections, needed for the reloader to work.
111
+ By default, your ${(0,f.brightYellow)("manifest.json")} file is not being watched. To enable this feature, run:
112
112
 
113
113
  npx -y mkcert-cli \\
114
- ${(0,u.brightGreen)("--outDir")} ${(0,u.underline)(Xe)} \\
115
- ${(0,u.brightGreen)("--cert")} ${(0,u.brightYellow)("localhost.cert")} \\
116
- ${(0,u.brightGreen)("--key")} ${(0,u.brightYellow)("localhost.key")}
114
+ ${(0,f.brightGreen)("--outDir")} ${(0,f.underline)(Xe)} \\
115
+ ${(0,f.brightGreen)("--cert")} ${(0,f.brightYellow)("localhost.cert")} \\
116
+ ${(0,f.brightGreen)("--key")} ${(0,f.brightYellow)("localhost.key")}
117
117
 
118
- This will enable the secure certificate needed for Firefox via ${(0,u.bold)("mkcert")}.
118
+ This will enable the secure certificate needed for Firefox via ${(0,f.bold)("mkcert")}.
119
119
 
120
- Learn more about ${(0,u.bold)("mkcert")}: ${(0,u.underline)("https://github.com/FiloSottile/mkcert")}`}function pi(t,e){return`${w(t,"error")} Default port ${e} in use, choose a new port. `}function li(t){return`${w(t,"error")} No Extension Id Specified
120
+ Learn more about ${(0,f.bold)("mkcert")}: ${(0,f.underline)("https://github.com/FiloSottile/mkcert")}`}function fi(t,e){return`${w(t,"error")} Default port ${e} in use, choose a new port. `}function ui(t){return`${w(t,"error")} No Extension Id Specified
121
121
 
122
122
  For MAIN world content scripts, you must specify an extension ID.
123
123
  Otherwise, the content script won't reload on changes.
124
- Add an ${(0,u.brightYellow)("id")} field to your manifest.json file and try again.`}var Ke=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=M.default.dirname(this.manifestPath),i=require(this.manifestPath).name||"Extension.js";(V.default.existsSync(M.default.join(s,".env"))||V.default.existsSync(M.default.join(s,".env.example"))||V.default.existsSync(M.default.join(s,".env.local"))||V.default.existsSync(M.default.join(s,".env.defaults")))&&(console.log(Nr(i)),new ui.default({path:V.default.existsSync(M.default.join(s,".env"))?M.default.join(s,".env"):V.default.existsSync(M.default.join(s,".env.local"))?M.default.join(s,".env.local"):M.default.join(s,".env.example"),allowEmptyValues:!0,defaults:V.default.existsSync(M.default.join(s,".env.defaults")),systemvars:!0}).apply(e))}};var Bs=a(require("fs")),fi=a(require("path")),Qe=class{apply(e){let s=fi.default.join(e.options.output.path||"","hot");Bs.default.existsSync(s)&&(Bs.default.rmSync(s,{recursive:!0,force:!0}),process.env.EXTENSION_ENV==="development"&&console.log("[CleanHotUpdatesPlugin] Removed old hot-update files before compilation."))}};var et=class{static name="plugin-compilation";manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){new mi.default().apply(e),new Ke({manifestPath:this.manifestPath}).apply(e),new Qe().apply(e),e.hooks.done.tap("develop:brand",s=>{s.compilation.name=void 0;let r=s.endTime-s.startTime;console.log(Tr(r,s))})}};var Oi=a(require("path")),Ai=a(require("mini-css-extract-plugin"));var Ci=a(require("mini-css-extract-plugin"));var ce=a(require("path")),Ee=a(require("fs"));var ke=a(require("path")),tt=a(require("fs")),Js=require("child_process"),di=require("detect-package-manager");function gi(t,e){return Object.values(e||{}).some(s=>s===t)}function g(t,e,s){let r=ke.default.extname(e),n=S(e,s)?ke.default.normalize(e):t;return[".js",".jsx",".tsx",".ts"].includes(r)&&(n=n.replace(r,".js")),[".html",".njk",".nunjucks"].includes(r)&&(n=n.replace(r,".html")),[".css",".scss",".sass",".less"].includes(r)&&(n=n.replace(r,".css")),zs(n||"")}function zs(t){return t.replace(/\\/g,"/")}function S(t,e={}){if(!e)return!1;let s=zs(t);return Object.values(e).some(i=>{if(typeof i!="string")return!1;let n=zs(i).replace(/\/$/,"");return s.includes(n)})}function G(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)}async function _(t,e,s){try{let r=await(0,di.detect)();console.log(Rr(t,e,r));let i="";r==="yarn"?i=`yarn --silent add ${s.join(" ")} --cwd ${__dirname} --optional`:r==="npm"?i=`npm --silent install ${s.join(" ")} --prefix ${__dirname} --save-optional`:r==="pnpm"?i=`pnpm --silent add ${s.join(" ")} --prefix ${__dirname} --save-optional`:i=`${r} --silent install ${s.join(" ")} --cwd ${__dirname} --optional`,(0,Js.execSync)(i,{stdio:"inherit"}),await new Promise(n=>setTimeout(n,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(qr(t,e)),r==="yarn"?i="yarn install --silent > /dev/null 2>&1":r==="npm"?i="npm install --silent > /dev/null 2>&1":r==="pnpm"?i="pnpm install --silent > /dev/null 2>&1":i=`${r} install --silent > /dev/null 2>&1`,(0,Js.execSync)(i,{stdio:"inherit"})),console.log(Ur(t,e))}catch(r){console.error(Wr(t,e,r))}}function st(t){let e=ke.default.join(t,"package.json");if(!tt.default.existsSync(e))return!1;let s=JSON.parse(tt.default.readFileSync(e,"utf-8")),r=["react","vue","@angular/core","svelte","solid-js","preact"],i=s.dependencies||{},n=s.devDependencies||{};for(let o of r)if(i[o]||n[o])return!0;return!1}function hi(t){return!tt.default.existsSync(ke.default.resolve(__dirname,`run-${t}-profile`))}function yi(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 rt(t,e){return JSON.parse(JSON.stringify(t),function(i,n){let o=i.indexOf(":");if(o===-1)return n;let c=i.substring(0,o);(c===e||c==="chromium"&&Se.includes(e))&&(this[i.substring(o+1)]=n)})}var bi=!1;function it(t){let e=ce.default.join(t,"package.json"),s=ce.default.join(t,"manifest.json");if(!Ee.default.existsSync(e))return!1;let r=Lp(t),i=require(e),n=i.devDependencies&&i.devDependencies.tailwindcss,o=i.dependencies&&i.dependencies.tailwindcss,c=!!r&&!!(n||o);if(c&&!bi){let l=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(l,"Tailwind")),bi=!0}return c}function Lp(t){let e=ce.default.join(t,"tailwind.config.mjs"),s=ce.default.join(t,"tailwind.config.cjs"),r=ce.default.join(t,"tailwind.config.js");if(Ee.default.existsSync(e))return e;if(Ee.default.existsSync(s))return s;if(Ee.default.existsSync(r))return r}var nt=a(require("path")),xi=a(require("fs"));var wi=!1;function je(t){let e=nt.default.join(t,"package.json"),s=nt.default.join(t,"manifest.json");if(!xi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.sass,n=r.dependencies&&r.dependencies.sass;if(i||n){if(!wi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"SASS")),wi=!0}return!0}return!1}async function vi(t,e){if(!je(t))return[];try{require.resolve("sass-loader")}catch{let r=["postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"],i=require(nt.default.join(t,"package.json")).name;await _(i,"PostCSS",r),await _(i,"SASS",["sass","sass-loader","resolve-url-loader"]),console.log(k(i,"SASS")),process.exit(0)}return[{test:/\.(s(a|c)ss)$/,exclude:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:e==="production"})}]},{test:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!0})}]}]}var ot=a(require("path")),Si=a(require("fs"));var _i=!1;function $e(t){let e=ot.default.join(t,"package.json"),s=ot.default.join(t,"manifest.json"),i=require(s).name||"Extension.js";if(!Si.default.existsSync(e))return!1;let n=require(e),o=n.devDependencies&&n.devDependencies.less,c=n.dependencies&&n.dependencies.less;return o||c?(_i||(process.env.EXTENSION_ENV==="development"&&console.log(v(i,"LESS")),_i=!0),!0):!1}async function Pi(t,e){if(!$e(t))return[];try{require.resolve("less-loader")}catch{let r=require(ot.default.join(t,"package.json")).name;await _(r,"LESS",["less","less-loader","resolve-url-loader"]),console.log(k(r,"LESS")),process.exit(0)}return[{test:/\.less$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:e==="production"})}]}]}var le=a(require("path")),at=a(require("fs"));var pe=!1;function Ip(t){let e=le.default.join(t,"package.json"),s=le.default.join(t,"manifest.json");if(!at.default.existsSync(e))return!1;let r=[".postcssrc",".postcssrc.json",".postcssrc.yaml",".postcssrc.yml",".postcssrc.js",".postcssrc.cjs","postcss.config.js","postcss.config.cjs"],n=require(s).name||"Extension.js";if(at.default.existsSync(e)){let o=require(e);if(o.dependencies&&o.dependencies.postcss||o.devDependencies&&o.devDependencies.postcss)return pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0}for(let o of r)if(at.default.existsSync(le.default.join(t,o)))return pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0;return it(t)?(pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0):!1}async function ki(t,e){if(!Ip(t))return{};try{require.resolve("postcss-loader")}catch{let r=require(le.default.join(t,"package.json")).name;!je(t)&&!$e(t)&&await _(r,"PostCSS",["postcss","postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"]),console.log(k(r,"PostCSS")),process.exit(0)}return{loader:require.resolve("postcss-loader"),options:{postcssOptions:{parser:require.resolve("postcss-scss"),ident:"postcss",config:le.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"}}}var ct=a(require("path")),ji=a(require("fs"));var Ei=!1;function Ce(t){let e=ct.default.join(t,"package.json"),s=ct.default.join(t,"manifest.json");if(!ji.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.vue,n=r.dependencies&&r.dependencies.vue;if((i||n)&&!Ei){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Vue")),Ei=!0}return!!i||!!n}async function $i(t){if(!Ce(t))return;try{require.resolve("vue-loader")}catch{let i=["typescript"],o=require(ct.default.join(t,"manifest.json")).name||"Extension.js";await _(o,"TypeScript",i),await _(o,"Vue",["vue-loader","@vue/compiler-sfc","vue-template-compiler","vue-style-loader"]),console.log(k(o,"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}}async function A(t,e){let s=Ci.default.loader,r=[e.useMiniCssExtractPlugin?s:Ce(t)?require.resolve("vue-style-loader"):require.resolve("style-loader"),{loader:require.resolve("css-loader"),options:{importLoaders:1}}].filter(Boolean);if(it(t)||je(t)||$e(t)){let i=await ki(t,e);i.loader&&r.push(i)}return e.loader&&r.push({loader:require.resolve("resolve-url-loader"),options:{sourceMap:e.mode==="development",root:t}},{loader:require.resolve(e.loader),options:{sourceMap:e.mode==="development"}}),r.filter(Boolean)}var C=a(require("path")),T=a(require("fs"));function Li(t){let e=C.default.join(t,"stylelint.config.json"),s=C.default.join(t,".stylelintrc.js file"),r=C.default.join(t,"stylelint.config.mjs"),i=C.default.join(t,".stylelintrc.mjs"),n=C.default.join(t,"stylelint.config.cjs"),o=C.default.join(t,".stylelintrc.cjs"),c=C.default.join(t,".stylelintrc.json"),p=C.default.join(t,".stylelintrc"),l=C.default.join(t,".stylelintrc.yml"),f=C.default.join(t,".stylelintrc.yaml");if(T.default.existsSync(e))return e;if(T.default.existsSync(s))return s;if(T.default.existsSync(r))return r;if(T.default.existsSync(i))return i;if(T.default.existsSync(n))return n;if(T.default.existsSync(o))return o;if(T.default.existsSync(c))return c;if(T.default.existsSync(p))return p;if(T.default.existsSync(l))return l;if(T.default.existsSync(f))return f}var Di=!1;function Fi(t){let e=C.default.join(t,"package.json"),s=C.default.join(t,"manifest.json");if(!T.default.existsSync(e))return!1;let i=!!Li(t);if(i&&!Di){let o=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(o,"Stylelint")),Di=!0}return i}async function Ii(t){if(!Fi(t))return[];try{require.resolve("stylelint")}catch{let r=["stylelint","stylelint-webpack-plugin","stylelint-config-standard-scss"],i=require(C.default.join(t,"package.json")).name;await _(i,"Stylelint",r),console.log(k(i,"Stylelint")),process.exit(0)}let e=require("stylelint-webpack-plugin");return[new e({context:t,configFile:Fi(t)?Li(t):C.default.join(__dirname,"stylelint.config.json"),files:"**/*.{css,scss,sass,less}",exclude:["node_modules",C.default.join(t,"node_modules")]})]}var pt=class t{static name="plugin-css";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async configureOptions(e){let s=Oi.default.dirname(this.manifestPath),r=[new Ai.default];r.forEach(p=>p.apply(e));let i=await Ii(s);r.push(...i);let n=[{test:/\.css$/,exclude:/\.module\.css$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:!1})},{use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:this.mode==="production"})}]},{test:/\.module\.css$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:!1})},{use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:this.mode==="production"})}]}];e.options.plugins=[...e.options.plugins,...r].filter(Boolean);let o=await vi(s,this.mode),c=await Pi(s,this.mode);n.push(...o),n.push(...c),e.options.module.rules=[...e.options.module.rules,...n].filter(Boolean)}async apply(e){if(this.mode==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var lt=class{static name="plugin-css";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async apply(e){let s={test:/\.svg$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2048}}},i=[...e.options.module.rules.some(n=>n&&n.test instanceof RegExp&&n.test.test(".svg")&&n.use!==void 0)?[]:[s],{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 Hs=a(require("path"));var fe=a(require("path")),mt=a(require("fs"));var ut=a(require("path")),Ti=a(require("fs"));var Mi=!1;function X(t){let e=ut.default.join(t,"package.json"),s=ut.default.join(t,"manifest.json");if(!Ti.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.preact,n=r.dependencies&&r.dependencies.preact;if((i||n)&&!Mi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Preact")),Mi=!0}return!!i||!!n}async function Ri(t){if(!X(t))return;try{require.resolve("@prefresh/webpack")}catch{let r=["@prefresh/webpack"],n=require(ut.default.join(t,"manifest.json")).name||"Extension.js";await _(n,"Preact",r),console.log(k(n,"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 ue=a(require("path")),ft=a(require("fs"));var Ni=!1;function R(t){let e=ue.default.join(t,"package.json");if(!ft.default.existsSync(e))return!1;let s=Ap(t),r=require(e),i=require(ue.default.join(t,"manifest.json")),n=i.name||"Extension.js",o=r.devDependencies&&r.devDependencies.typescript,c=r.dependencies&&r.dependencies.typescript;return Ni||((o||c)&&(s?process.env.EXTENSION_ENV==="development"&&console.log(v(n,"TypeScript")):(console.log(ri(i)),Mp(t))),Ni=!0),!!s&&!!(o||c)}function Op(t,e){return{compilerOptions:{allowJs:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0,jsx:st(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 Ap(t){let e=ue.default.join(t,"tsconfig.json");if(ft.default.existsSync(e))return e}function Mp(t){ft.default.writeFileSync(ue.default.join(t,"tsconfig.json"),JSON.stringify(Op(t,{mode:"development"}),null,2))}async function qi(t){if(!R(t))return!1;try{require.resolve("typescript")}catch{let s=["typescript"],i=require(ue.default.join(t,"manifest.json")).name||"Extension.js";await _(i,"TypeScript",s),console.log(k(i,"TypeScript")),process.exit(0)}return!0}var Ui=!1,Wi=[".babelrc",".babelrc.json",".babelrc.js",".babelrc.cjs","babel.config.json","babel.config.js","babel.config.cjs"];function Tp(t){let e=fe.default.join(t,"package.json"),s=fe.default.join(t,"manifest.json");if(!mt.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies["babel-core"],n=r.dependencies&&r.dependencies["babel-core"],o=Wi.some(c=>mt.default.existsSync(fe.default.join(t,c)))||!!i||!!n;if(o&&!Ui){let p=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(v(p,"Babel")),Ui=!0}return o}function Rp(t){for(let e of Wi){let s=fe.default.join(t,e);if(mt.default.existsSync(s))return s}}function Np(t,e){let s=require("babel-preset-modern-browser-extension").default;return{cacheDirectory:!1,cacheCompression:!1,babelrc:!1,configFile:Rp(t),compact:e.mode==="production",overrides:[s(e).overrides],presets:[...s(e).presets],plugins:[...s(e).plugins,process.env.NODE_ENV!=="test"&&e.mode==="development"&&X(t)&&require.resolve("react-refresh/babel")].filter(Boolean)}}async function Bi(t,e){if(!Tp(e))return;try{require.resolve("babel-loader")}catch{let o=["@babel/core","babel-loader","babel-preset-modern-browser-extension"],p=require(fe.default.join(e,"manifest.json")).name||"Extension.js";await _(p,"Babel",o),console.log(k(p,"Babel")),process.exit(0)}let s=R(e)?/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/:/\.(js|mjs|jsx|mjsx)$/,r=t.options.mode,i=await qi(e);return{plugins:void 0,loaders:[{test:s,include:e,exclude:/node_modules/,loader:require.resolve("babel-loader"),options:Np(e,{mode:r,typescript:i})}],alias:void 0}}var dt=a(require("path")),zi=a(require("fs"));var Ji=!1;function me(t){let e=dt.default.join(t,"package.json"),s=dt.default.join(t,"manifest.json");if(!zi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.react,n=r.dependencies&&r.dependencies.react;if((i||n)&&!Ji){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"React")),Ji=!0}return!!i||!!n}async function Hi(t){if(!me(t))return;try{require.resolve("@pmmmwh/react-refresh-webpack-plugin")}catch{let r=["react-refresh","@pmmmwh/react-refresh-webpack-plugin","react-refresh-typescript"],n=require(dt.default.join(t,"manifest.json")).name||"Extension.js";await _(n,"React",r),console.log(k(n,"React")),process.exit(0)}return{plugins:[new(require("@pmmmwh/react-refresh-webpack-plugin"))({overlay:!1})],loaders:void 0,alias:void 0}}var gt=class t{static name="plugin-js-frameworks";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async configureOptions(e){let s=Hs.default.dirname(this.manifestPath),r=await Bi(e,s),i=await Hi(s),n=await Ri(s),o=await $i(s);e.options.resolve.alias={...r?.alias||{},...i?.alias||{},...n?.alias||{},...o?.alias||{},...e.options.resolve.alias},e.options.module.rules=[{test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Hs.default.dirname(this.manifestPath)],exclude:/node_modules/,use:{loader:require.resolve("swc-loader"),options:{sync:!0,module:{type:"es6"},minify:this.mode==="production",isModule:!0,jsc:{target:"es2016",parser:{syntax:R(s)?"typescript":"ecmascript",tsx:R(s)&&(me(s)||X(s)),jsx:!R(s)&&(me(s)||X(s)),dynamicImport:!0},transform:{react:{development:this.mode==="development",refresh:this.mode==="development",runtime:"automatic",importSource:"react"}}}}}},...r?.loaders||[],...i?.loaders||[],...n?.loaders||[],...o?.loaders||[],...e.options.module.rules].filter(Boolean),i?.plugins?.forEach(c=>c.apply(e)),n?.plugins?.forEach(c=>c.apply(e)),o?.plugins?.forEach(c=>c.apply(e))}async apply(e){if(this.mode==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var Re=a(require("path"));var Ln=a(require("path"));var Vi=a(require("path"));function Gi(t,e){if(!e||!e.action||!e.action.default_popup)return;let s=e.action.default_popup;return Vi.default.join(t,s)}var Xi=a(require("path"));function Zi(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let s=e.browser_action.default_popup;return Xi.default.join(t,s)}var ht=a(require("path"));function Yi(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":ht.default.join(t,r)}}if(e.chrome_url_overrides.newtab){let r=e.chrome_url_overrides.newtab;s={"chrome_url_overrides/newtab":ht.default.join(t,r)}}if(e.chrome_url_overrides.bookmarks){let r=e.chrome_url_overrides.bookmarks;s={"chrome_url_overrides/bookmarks":ht.default.join(t,r)}}return s}var Ki=a(require("path"));function Qi(t,e){if(!e||!e.devtools_page)return;let s=e.devtools_page;return Ki.default.join(t,s)}var Vs=a(require("path"));function en(t,e){if(e.options_page){let r=e.options_page;return Vs.default.join(t,r)}if(!e||!e.options_ui||!e.options_ui.page)return;let s=e.options_ui.page;return Vs.default.join(t,s)}var tn=a(require("path"));function sn(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let s=e.page_action.default_popup;return tn.default.join(t,s)}var rn=a(require("path"));function nn(t,e){if(!e||!e.sandbox||!e.sandbox.pages)return{"sandbox/page-0":void 0};let s=e.sandbox.pages,r={};for(let[i,n]of s.entries())r[`sandbox/page-${i}`]=rn.default.join(t,n);return r}var on=a(require("path"));function an(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let s=e.side_panel.default_path;return on.default.join(t,s)}var cn=a(require("path"));function pn(t,e){if(!e||!e.sidebar_action||!e.sidebar_action.default_panel)return;let s=e.sidebar_action.default_panel;return cn.default.join(t,s)}function De(t,e){return{"action/default_popup":Gi(t,e),"browser_action/default_popup":Zi(t,e),...Yi(t,e),devtools_page:Qi(t,e),"options_ui/page":en(t,e),"page_action/default_popup":sn(t,e),...nn(t,e),"side_panel/default_path":an(t,e),"sidebar_action/default_panel":pn(t,e)}}var Gs=a(require("path"));function ln(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return Gs.default.join(t,e.action.default_icon);let s=[];for(let r in e.action.default_icon)s.push(Gs.default.join(t,e.action.default_icon[r]));return s}var Xs=a(require("path"));function un(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let s=[];if(typeof e.browser_action.default_icon=="string")return Xs.default.join(t,e.browser_action.default_icon);for(let r in e.browser_action.default_icon){let i=e.browser_action.default_icon[r]=Xs.default.join(t,e.browser_action.default_icon[r]);s.push(i)}return s}var Zs=a(require("path"));function fn(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=Zs.default.join(t,s.light)),s.dark&&(s.dark=Zs.default.join(t,s.dark)),s.size&&delete s.size;return e.browser_action.theme_icons}}var mn=a(require("path"));function dn(t,e){if(!e||!e.icons)return;let s=[];for(let r in e.icons){let i=mn.default.join(t,e.icons[r]);s.push(i)}return s}var Ys=a(require("path"));function gn(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return Ys.default.join(t,e.page_action.default_icon);let s=[];for(let r in e.page_action.default_icon){let i=Ys.default.join(t,e.page_action.default_icon[r]);s.push(i)}return s}var hn=a(require("path"));function yn(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:hn.default.join(t,e.sidebar_action.default_icon)}function bn(t,e){return{action:ln(t,e),browser_action:un(t,e),"browser_action/theme_icons":fn(t,e),icons:dn(t,e),page_action:gn(t,e),sidebar_action:yn(t,e)}}var wn=a(require("path"));function xn(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(i=>{s[`declarative_net_request/${i.id}`]=wn.default.join(t,i.path)}),s)}var vn=a(require("path"));function _n(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let s=e.storage.managed_schema;return vn.default.join(t,s)}function Sn(t,e){return{...xn(t,e),"storage/managed_schema":_n(t,e)}}var Pn=a(require("path"));function kn(t,e){if(!e||!e.background)return;let s=e.background.scripts;if(s)return s.map(r=>Pn.default.join(t,r))}var En=a(require("path"));function jn(t,e){if(!e||!e.background)return;let s=e.background.service_worker;if(s)return En.default.join(t,s)}var Ks=a(require("path"));function $n(t,e){if(!e||!e.content_scripts)return{"content_scripts/content-0":void 0};let s=n=>{if(n.js?.length!==0)return n.js?.map(o=>Ks.default.join(t,o))},r=n=>{if(n.css?.length!==0)return n.css?.map(o=>Ks.default.join(t,o))},i={};for(let[n,o]of e.content_scripts.entries()){let c=s(o),p=r(o);i[`content_scripts/content-${n}`]=[...(c||[]).filter(l=>l!=null),...(p||[]).filter(l=>l!=null)]}return i}var Cn=a(require("path"));function Dn(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let s=e.user_scripts.api_script;return Cn.default.join(t,s)}function Fe(t,e){return{"background/scripts":kn(t,e),"background/service_worker":jn(t,e),...$n(t,e),"user_scripts/api_script":Dn(t,e)}}function Fn(t){if(!(!t||!t.web_accessible_resources||!t.web_accessible_resources.length))return t.web_accessible_resources}function qp(t){function e(s){let r={};for(let i in s)if(s.hasOwnProperty(i)){let n=i.includes(":")?i.split(":")[1]:i;typeof s[i]=="object"&&!Array.isArray(s[i])?r[n]=e(s[i]):r[n]=s[i]}return r}return e(t)}function In({manifestPath:t}){let e=Ln.default.dirname(t),s=require(t),r=qp(s);return{html:De(e,r),icons:bn(e,r),json:Sn(e,r),scripts:Fe(e,r),web_accessible_resources:Fn(r)}}var de=a(require("path"));var yt=a(require("fs")),Le=a(require("path"));function bt(t,e){if(!yt.default.existsSync(t)||!yt.default.statSync(t).isDirectory())return[];let s=[];function r(i){let n=yt.default.readdirSync(i,{withFileTypes:!0});for(let o of n){let c=Le.default.join(i,o.name);o.isDirectory()?r(c):o.isFile()&&e(o.name)&&s.push(c)}}return r(t),s}function wt(t,e,s=""){return!e||!e.length?{}:e.reduce((r,i)=>{let n=Le.default.extname(i),o=Le.default.basename(i,n),c=s?`${s}/${o}`:Le.default.relative(t,i);return{...r,[c]:i}},{})}function On({manifestPath:t}){let e=de.default.dirname(t),s={public:de.default.join(e,"public"),pages:de.default.join(e,"pages"),scripts:de.default.join(e,"scripts")},r={public:bt(s.public,()=>!0),pages:bt(s.pages,n=>n.endsWith(".html")),scripts:bt(s.scripts,n=>[".js",".mjs",".jsx",".mjsx",".ts",".mts",".tsx",".mtsx"].includes(de.default.extname(n)))};return{public:wt(e,r.public),pages:wt(e,r.pages,"pages"),scripts:wt(e,r.scripts,"scripts")}}var xt=a(require("path")),An=a(require("webpack")),vt=class{manifestPath;includeList;excludeList;loaderOptions;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList,this.loaderOptions=e.loaderOptions}apply(e){new An.default.ProvidePlugin({r:[xt.default.resolve(__dirname,"./resolver-module.js"),"default"]}).apply(e),e.options.module?.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,loader:require.resolve(xt.default.resolve(__dirname,"./resolver-loader.js")),include:[xt.default.dirname(this.manifestPath)],exclude:/node_modules/,options:{manifestPath:this.manifestPath,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 Mn=a(require("fs")),St=a(require("webpack")),Tn=require("webpack");var _t=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){e.hooks.compilation.tap("manifest:emit-manifest",s=>{s.hooks.processAssets.tap({name:"manifest:emit-manifest",stage:St.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{let r=this.manifestPath,i;try{let c=Mn.default.readFileSync(r,"utf-8");i=JSON.parse(c)}catch(c){let l=require(this.manifestPath).name||"Extension.js";s.errors.push(new St.default.WebpackError(ei(l,c)));return}let n=JSON.stringify(i,null,2);s.emitAsset("manifest.json",new Tn.sources.RawSource(n))})})}};var jt=require("webpack");function Rn(t,e){return t.background&&t.background.scripts&&{background:{...t.background,...t.background.scripts&&{scripts:[...t.background.scripts.map(s=>g("background/scripts.js",s,e))]}}}}var Nn=a(require("path"));var Pt=t=>Nn.default.basename(t);function qn(t,e){return t.browser_action&&{browser_action:{...t.browser_action,...t.browser_action.default_popup&&{default_popup:g("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"?g(`icons/${Pt(t.browser_action.default_icon)}`,t.browser_action.default_icon,e):Object.fromEntries(Object.entries(t.browser_action.default_icon).map(([s,r])=>[s,g(`icons/${Pt(r)}`,r,e)]))},...t.browser_action.theme_icons&&{theme_icons:t.browser_action.theme_icons.map(s=>({...s,...s.light&&{light:g(`browser_action/${Pt(s.light)}`,s.light,e)},...s.dark&&{dark:g(`browser_action/${Pt(s.dark)}`,s.dark,e)}}))}}}}function Un(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&&g(`declarative_net_request/${s.id}.json`,s.path,e)}))}}}function Wn(t,e){return{...Rn(t,e),...qn(t,e),...Un(t,e)}}var Jn=a(require("path"));var Bn=t=>Jn.default.basename(t);function zn(t,e){return t.action&&{action:{...t.action,...t.action.default_popup&&{default_popup:g("action/default_popup.html",t.action.default_popup,e)},...t.action.default_icon&&{default_icon:typeof t.action.default_icon=="string"?g(`action/${Bn(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([s,r])=>[s,g(`action/${Bn(r)}`,r,e)]))}}}}function Hn(t,e){return t.background&&t.background.service_worker&&{background:{...t.background,...t.background.service_worker&&{service_worker:g("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:g("side_panel/default_path.html",t.side_panel.default_path,e)}}}}function Vn(t,e){return{...zn(t,e),...Hn(t,e),...kt(t,e)}}function Gn(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:g("background/page.html",t.background.page,e)}}}}function Xn(t,e){return t.chrome_url_overrides&&{chrome_url_overrides:{...t.chrome_url_overrides.bookmarks&&{bookmarks:g("chrome_url_overrides/bookmarks.html",t.chrome_url_overrides.bookmarks,e)},...t.chrome_url_overrides.history&&{history:g("chrome_url_overrides/history.html",t.chrome_url_overrides.history,e)},...t.chrome_url_overrides.newtab&&{newtab:g("chrome_url_overrides/newtab.html",t.chrome_url_overrides.newtab,e)}}}}function Zn(t,e){return t.content_scripts&&{content_scripts:t.content_scripts.map((s,r)=>{let i=[...new Set(s.js)],n=[...new Set(s.css)];return{...s,js:[...i.map(o=>g(`content_scripts/content-${r}.js`,o,e))],css:[...n.map(o=>g(`content_scripts/content-${r}.css`,o,e))]}})}}function Yn(t,e){return t.devtools_page&&{devtools_page:g("devtools_page.html",t.devtools_page,e)}}var Kn=a(require("path"));var Up=t=>Kn.default.basename(t);function Qn(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([s,r])=>[s,g(`icons/${Up(r)}`,r,e)]))}}function eo(t,e){return t.options_page&&{options_page:g("options_ui/page.html",t.options_page,e)}}function to(t,e){return t.options_ui&&{options_ui:{...t.options_ui,...t.options_ui.page&&{page:g("options_ui/page.html",t.options_ui.page,e)}}}}var ro=a(require("path"));var so=t=>ro.default.basename(t);function io(t,e){return t.page_action&&{page_action:{...t.page_action,...t.page_action.default_popup&&{default_popup:g("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"?g(`icons/${so(t.page_action.default_icon)}`,t.page_action.default_icon,e):Object.fromEntries(Object.entries(t.page_action.default_icon).map(([s,r])=>[s,g(`icons/${so(r)}`,r,e)]))}}}}function no(t,e){return t.sandbox&&{sandbox:{...t.sandbox,...t.sandbox.pages&&{pages:t.sandbox.pages.map((s,r)=>g(`sandbox/page-${r}.html`,s,e))}}}}var oo=a(require("path"));var Wp=t=>oo.default.basename(t);function ao(t,e){return t.sidebar_action&&{sidebar_action:{...t.sidebar_action,...t.sidebar_action.default_panel&&{default_panel:g("sidebar_action/default_panel.html",t.sidebar_action.default_panel,e)},...t.sidebar_action.default_icon&&{default_icon:g(`icons/${Wp(t.sidebar_action.default_icon)}`,t.sidebar_action.default_icon,e)}}}}function co(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:g("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var po=a(require("path"));var Bp=t=>po.default.basename(t);function lo(t,e){return t.theme&&{theme:{...t.theme,...t.theme.images&&{images:{...t.theme.images,theme_frame:g(`theme/images/${Bp(t.theme.images.theme_frame)}`,t.theme.images.theme_frame,e)}}}}}function uo(t,e){return t.user_scripts&&{user_scripts:{...t.user_scripts,...t.user_scripts.api_script&&{api_script:g("user_scripts/api_script.js",t.user_scripts.api_script,e)}}}}function fo(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function mo(t,e){return{...Gn(t,e),...Xn(t,e),...Zn(t,e),...Yn(t,e),...Qn(t,e),...eo(t,e),...to(t,e),...io(t,e),...no(t,e),...kt(t,e),...ao(t,e),...co(t,e),...lo(t,e),...uo(t,e),...fo(t)}}function go(t,e,s){let r=e||require(t);return JSON.stringify({...r,...mo(r,s),...Wn(r,s),...Vn(r,s)},null,2)}var Et=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=[g(`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:jt.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{if(s.errors.length>0)return;let r=G(s,this.manifestPath),i=go(this.manifestPath,r,this.excludeList||{}),n={...r,...JSON.parse(i)};e.options.mode!=="production"&&n.content_scripts&&(n.content_scripts=this.applyDevOverrides(n));let o=JSON.stringify(n,null,2),c=new jt.sources.RawSource(o);s.updateAsset("manifest.json",c)})})}};var ho=a(require("fs")),$t=class{dependencyList;constructor(e){this.dependencyList=e}apply(e){e.hooks.afterCompile.tap("ManifestPlugin (AddDependenciesPlugin)",s=>{if(s.errors?.length)return;let r=new Set(s.fileDependencies);this.dependencyList&&this.dependencyList.forEach(i=>{ho.default.existsSync(i)&&(r.has(i)||(r.add(i),s.fileDependencies.add(i)))})})}};var yo=a(require("fs")),bo=a(require("path")),Dt=a(require("webpack"));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 i=e;i.light&&r.push(i.light),i.dark&&r.push(i.dark)}return r}handleErrors(e,s){let r=[".png",".jpg",".jpeg",".svg",".gif",".webp"],i=[".json"],n=[".js",".ts",".jsx",".tsx",".mjs",".cjs"],o=".html",c=Object.entries(this.includeList||{});for(let[p,l]of c)if(l){let f=this.extractPaths(l);for(let d of f){let h=bo.default.extname(d),$=require(this.manifestPath).name||"Extension.js",P=ae($,p,d);yo.default.existsSync(d)||(r.includes(h)?e.errors.push(new s(P)):i.includes(h)?e.errors.push(new s(P)):n.includes(h)?e.errors.push(new s(P)):h===o?e.errors.push(new s(P)):e.errors.push(new s(P)))}}}apply(e){e.hooks.compilation.tap("manifest:check-manifest-files",s=>{s.hooks.processAssets.tap({name:"compatibility:check-manifest-files",stage:Dt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT},()=>{let r=Dt.default.WebpackError;this.handleErrors(s,r)})})}};var wo=a(require("fs")),Lt=a(require("webpack"));var Ft=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 n=s.options.context||"",o=`${n}/package.json`;if(!wo.default.existsSync(o)){r();return}let c=require(this.manifestPath),p=rt(c,this.browser),l=this.flattenAndSort(Object.values(De(n,p))),f=this.flattenAndSort(Object.values(Fe(n,p)));s.hooks.thisCompilation.tap("manifest:throw-if-recompile-is-needed",d=>{d.hooks.processAssets.tap({name:"manifest:check-manifest-files",stage:Lt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY},()=>{let y=d.getAsset("manifest.json")?.source.source().toString(),$=JSON.parse(y||"{}"),P=this.flattenAndSort(Object.values(De(n,$))),q=this.flattenAndSort(Object.values(Fe(n,$)));if(f.toString()!==q.toString()||l.toString()!==P.toString()){let U=l.filter(W=>!P.includes(W))[0],H=P.filter(W=>!l.includes(W))[0],_e=ti(H,U);d.errors.push(new Lt.default.WebpackError(_e))}})})}r()})}};var It=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 _t({manifestPath:this.manifestPath}).apply(e),new Ct({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Et({manifestPath:this.manifestPath,excludeList:this.excludeList}).apply(e),new $t([this.manifestPath]).apply(e),new Ft({manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList}).apply(e)}};var rr=a(require("path"));var er=a(require("fs")),Mt=a(require("webpack")),Po=require("webpack");var xo=a(require("fs")),he=a(require("path")),vo=a(require("parse5-utils"));var ge=a(require("parse5-utils"));function Ot(t){try{return new URL(t),!0}catch{return!1}}function Ie(t,e){let{childNodes:s=[]}=t;for(let r of s)if(r.nodeName==="script"){let i=ge.default.getAttribute(r,"src");if(!i||Ot(i))continue;e({filePath:i,childNode:r,assetType:"script"})}else if(r.nodeName==="link"){let i=ge.default.getAttribute(r,"href"),n=ge.default.getAttribute(r,"rel");if(!i||Ot(i))continue;e(n==="dns-prefetch"||n==="icon"||n==="manifest"||n==="modulepreload"||n==="preconnect"||n==="prefetch"||n==="preload"||n==="prerender"?{filePath:i,childNode:r,assetType:"staticHref"}:{filePath:i,childNode:r,assetType:"css"})}else if(r.nodeName==="a"||r.nodeName==="area"){let i=ge.default.getAttribute(r,"href");if(!i||Ot(i))continue;e({filePath:i,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 i=ge.default.getAttribute(r,"src");if(!i||Ot(i))continue;e({filePath:i,childNode:r,assetType:"staticSrc"})}else Ie(r,e)}function D(t,e){let s={css:[],js:[],static:[]};if(!t)return s;let r=e||xo.default.readFileSync(t,{encoding:"utf8"}),i=vo.default.parse(r),n=(o,c)=>he.default.join(he.default.dirname(o),c.startsWith("/")?he.default.relative(he.default.dirname(o),c):c);for(let o of i.childNodes)if(o.nodeName==="html"){for(let c of o.childNodes)(c.nodeName==="head"||c.nodeName==="body")&&Ie(c,({filePath:p,assetType:l})=>{let f=n(t,p);switch(l){case"script":s.js?.push(f);break;case"css":s.css?.push(f);break;case"staticSrc":case"staticHref":if(p.startsWith("#"))break;s.static?.push(f);break;default:break}});return{css:s.css,js:s.js,static:s.static}}}function _o(t,e,s){let r=Object.keys(t).find(n=>{let o=t[n];return t[n]===e||D(o)?.js?.includes(e)||D(o)?.css?.includes(e)})||"",i=Qs(e);return r?`/${r.replace(i,"")}${s}`:`${e.replace(i,"")}${s}`}function Qs(t){switch(he.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 So(t,e){return Object.values(e||{}).some(s=>s===t)}var At=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).name||"Extension.js";e.hooks.thisCompilation.tap("html:emit-html-file",i=>{i.hooks.processAssets.tap({name:"AddAssetsToCompilationPlugin",stage:Mt.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{let n=Object.entries(this.includeList||{});for(let o of n){let[c,p]=o;if(p){if(!er.default.existsSync(p)){let f=ae(r,c,p);i.warnings.push(new Mt.default.WebpackError(f));return}let l=er.default.readFileSync(p,"utf8");if(!S(p,this.excludeList)){let f=new Po.sources.RawSource(l),d=Z(c,".html");i.emitAsset(d,f)}}}})})}};var Tt=a(require("fs")),ye=a(require("path")),ko=a(require("webpack")),Oe=require("webpack");var Rt=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:Oe.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{if(s.errors.length>0)return;let r=Object.entries(this.includeList||{});for(let i of r){let[n,o]=i,c=n+".html";if(o){let p=s.getAsset(c);if(p){let l=p.source.source().toString(),f=D(o,l)?.static,d=[...new Set(f)];for(let h of d)if(!h.includes("public/")){if(!Tt.default.existsSync(h)&&!So(h,this.includeList)&&!ye.default.basename(h).startsWith("#")){let U=Ze(require(this.manifestPath).name,o,h);s.warnings.push(new ko.default.WebpackError(U));return}let y=Tt.default.readFileSync(h),$=new Oe.sources.RawSource(y),P=ye.default.join("assets",ye.default.basename(h));if(!s.getAsset(P))if(h.endsWith(".html")){let q=D(h),U=[...q?.js||[],...q?.css||[],...q?.static||[]];s.emitAsset(P,$),U.forEach(H=>{let _e=Tt.default.readFileSync(H),W=new Oe.sources.RawSource(_e),Ir=ye.default.join("assets",ye.default.basename(H));s.getAsset(Ir)||s.emitAsset(Ir,W)})}else s.emitAsset(P,$)}}}}})})}};var Eo=a(require("path")),tr=a(require("fs"));var Nt=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[i,n]=r;if(n){if(!tr.default.existsSync(n))return;let o=D(n),c=o?.js||[],p=o?.css||[],l=[...c,...p].filter(f=>!S(f,this.excludeList));if(e.options.mode==="development"){let f=Eo.default.resolve(__dirname,"minimum-script-file.mjs");l.push(f)}tr.default.existsSync(n)&&(S(n,this.excludeList)||(e.options.entry={...e.options.entry,[i]:{import:l}}))}}}};var Ut=require("webpack");var sr=a(require("fs")),Y=a(require("path")),F=a(require("parse5-utils"));function jo(t,e,s,r,i){let n=sr.default.readFileSync(s,{encoding:"utf8"}),o=F.default.parse(n),c=!!t.getAsset(e+".css"),p=!1;for(let l of o.childNodes)if(l.nodeName==="html"){for(let f of l.childNodes){if((f.nodeName==="head"||f.nodeName==="body")&&Ie(f,({filePath:d,childNode:h,assetType:y})=>{let $=Y.default.dirname(s),P=Y.default.resolve($,d),q=Qs(P),U=S(Y.default.resolve($,d),i),H=Y.default.join("/",Y.default.normalize(d)),_e=gi(P,r);switch(y){case"script":{U?l=F.default.setAttribute(h,"src",H):(l=F.default.remove(h),p=!0);break}case"css":{U?l=F.default.setAttribute(h,"href",H):(l=F.default.remove(h),c=!0);break}case"staticHref":case"staticSrc":{if(U)l=F.default.setAttribute(h,y==="staticSrc"?"src":"href",H);else if(_e){let W=_o(r,P,q);l=F.default.setAttribute(h,y==="staticSrc"?"src":"href",W)}else{let W=Y.default.join("assets",Y.default.basename(P,q));sr.default.existsSync(P)&&(l=F.default.setAttribute(h,y==="staticSrc"?"src":"href",Z(W,"",!0)))}break}default:break}}),f.nodeName==="head"&&c&&t.options.mode==="production"){let d=F.default.createNode("link");d.attrs=[{name:"rel",value:"stylesheet"},{name:"href",value:Z(e,".css",!0)}],F.default.append(f,d)}if(f.nodeName==="body"&&(p||t.options.mode!=="production")){let d=F.default.createNode("script");d.attrs=[{name:"src",value:Z(e,".js",!0)}],F.default.append(f,d)}}return F.default.serialize(o)}}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("html:update-html-file",s=>{s.hooks.processAssets.tap({name:"html:update-html-file",stage:Ut.Compilation.PROCESS_ASSETS_STAGE_DERIVED},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i;if(o){let c=jo(s,n,o,r,this.excludeList||{});if(!S(o,this.excludeList)&&c){let p=new Ut.sources.RawSource(c),l=Z(n,".html");s.updateAsset(l,p)}}}})})}};var $o=a(require("fs")),Co=require("webpack");var Wt=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:Co.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i;if(n){let o=D(n),c=new Set(s.fileDependencies);if($o.default.existsSync(n)){let p=[n,...o?.static||[]];for(let l of p)c.has(l)||(c.add(l),l===n&&s.fileDependencies.add(l))}}}})})}};var Do=a(require("fs"));var Bt=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 i=r;if(i){if(!Do.default.existsSync(i)){let o=require(this.manifestPath).name||"Extension.js";console.error(ae(o,s,i)),process.exit(1)}this.initialHtmlAssets[i]={js:D(i)?.js||[],css:D(i)?.css||[]}}})}apply(e){let s=this.includeList||{};this.storeInitialHtmlAssets(s),e.hooks.make.tapAsync("html:throw-if-recompile-is-needed",(r,i)=>{let n=e.modifiedFiles||new Set,o=Array.from(n)[0];if(o&&this.initialHtmlAssets[o]){let c=D(o)?.js||[],p=D(o)?.css||[],{js:l,css:f}=this.initialHtmlAssets[o];if(this.hasEntriesChanged(p,f)||this.hasEntriesChanged(c,l)){let d=require(this.manifestPath).name;console.log(ai(d,o))}}i()})}};var Fo=a(require("fs")),Lo=require("webpack");function zp(t,e,s){let r="Module not found: Error: Can't resolve ",n=s.message.replace(r,"").split("'")[1];if(s.message.includes(r))for(let o of Object.entries(e)){let[,c]=o;if(c){if(!Fo.default.existsSync(c))return null;let p=D(c),l=p?.js||[],f=p?.css||[];if(l.includes(n)||f.includes(n)){let d=Ze(require(t).name,c,n);return new Lo.WebpackError(d)}}}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,i)=>{let n=zp(this.manifestPath,this.includeList||{},r);n&&(s.errors[i]=n)})})})}};var zt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new At({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Rt({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 qt({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:[rr.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(rr.default.join(__dirname,"ensure-hmr-for-scripts.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}}]}),new Wt({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 Jt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var se=a(require("path"));var ir=a(require("fs")),Io=a(require("path"));function Oo(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>{let n=ir.default.existsSync(i)&&!S(i,e),o=Io.default.extname(i);return n&&(o===".js"||o===".mjs"||o===".jsx"||o===".ts"||o===".tsx")})}function Ao(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>ir.default.existsSync(i)&&!S(i,e)&&(i.endsWith(".css")||i.endsWith(".scss")||i.endsWith(".sass")||i.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||{};for(let r of Object.entries(s)){let[i,n]=r,o=Oo(n,this.excludeList),c=Ao(n,this.excludeList),p=[...o];e.options.mode==="production"&&p.push(...c),(c.length||o.length)&&(e.options.entry={...e.options.entry,[i]:{import:p}})}}};var te=require("webpack"),Hp=['var isBrowser = !!(() => { try { return browser.runtime.getURL("/") } catch(e) {} })()','var isChrome = !!(() => { try { return chrome.runtime.getURL("/") } catch(e) {} })()'],Vp=[...Hp,`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,i=>{let n=Gp();return r.addRuntimeModule(i,n),!0})})}};function Gp(){class t extends te.RuntimeModule{constructor(){super("publicPath",te.RuntimeModule.STAGE_BASIC)}generate(){let s=this.compilation?.outputOptions.publicPath;return te.Template.asString([...Vp,`var path = ${JSON.stringify(this.compilation?.getPath(s||"",{hash:this.compilation.hash||"XXXX"}))}`,`${te.RuntimeGlobals.publicPath} = typeof importScripts === 'function' || !(isBrowser || isChrome) ? path : runtime.runtime.getURL(path);`])}}return new t}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){let s=require(this.manifestPath);if(s.content_scripts?.some(r=>r.world&&r.world.toLowerCase()==="main")){if(s.id||(console.error(li(s.name||"")),process.exit(1)),this.browser==="firefox"){e.options.output.publicPath=`moz-extension://${s.id}/`;return}e.options.output.publicPath=`${this.browser}-extension://${s.id}/`}}};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){new Ht({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:[se.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(se.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:[se.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(se.default.join(__dirname,"add-hmr-accept-code.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]}),e.options.mode==="production"&&new Vt().apply(e),new Gt({manifestPath:this.manifestPath,browser:this.browser||"chrome",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:[se.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:se.default.resolve(__dirname,"./add-query-param-to-imported-css.js"),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]})}};var or=a(require("path")),Ae=a(require("fs")),ar=a(require("webpack")),Me=require("webpack");var be=a(require("path")),Zt=a(require("fs"));function nr(t){let e=be.default.join(be.default.dirname(t),"_locales"),s=[];if(Zt.default.existsSync(e))for(let r of Zt.default.readdirSync(e)){let i=be.default.join(e,r);for(let n of Zt.default.readdirSync(i))s.push(be.default.join(be.default.dirname(t),"_locales",r,n))}return s}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("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:Me.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{let i=require(this.manifestPath).name||"Extension.js";if(!Ae.default.existsSync(this.manifestPath)){s.errors.push(new ar.default.WebpackError(Qr(i)));return}if(s.errors.length>0)return;let n=nr(this.manifestPath);for(let o of Object.entries(n||[])){let[c,p]=o,l=p;if(l){if(!Ae.default.existsSync(l)){s.warnings.push(new ar.default.WebpackError(Ye(i,c,l)));return}let f=Ae.default.readFileSync(l),d=new Me.sources.RawSource(f),h=e.options.context||or.default.dirname(this.manifestPath);if(!S(l,this.excludeList)){let y=or.default.relative(h,l);s.emitAsset(y,d)}}}})}),e.hooks.thisCompilation.tap("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:Me.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=nr(this.manifestPath);for(let i of Object.entries(r||[])){let[,n]=i;if(n){let o=new Set(s.fileDependencies),c=r||[];for(let p of c)Ae.default.existsSync(p)&&(o.has(p)||(o.add(p),s.fileDependencies.add(p)))}}})})}};var Kt=a(require("fs")),Mo=a(require("webpack")),Te=require("webpack");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("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:Te.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i,c=Array.isArray(o)?o:[o];for(let p of c)if(p&&!S(p,this.excludeList)){if(!Kt.default.existsSync(p)){let h=require(this.manifestPath).name||"Extension.js";s.warnings.push(new Mo.default.WebpackError(Ye(h,n,p)));return}let l=Kt.default.readFileSync(p),f=new Te.sources.RawSource(l);s.emitAsset(n+".json",f)}}})}),e.hooks.thisCompilation.tap("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:Te.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i,o=Array.isArray(n)?n:[n];for(let c of o)if(c){let p=new Set(s.fileDependencies);S(c,this.excludeList)||Kt.default.existsSync(c)&&(p.has(c)||(p.add(c),s.fileDependencies.add(c)))}}})})}};var cr=a(require("fs")),To=a(require("path")),ts=require("webpack");var es=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:ts.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i;if(o===void 0)continue;let c=Array.isArray(o)?typeof o[0]=="string"?o:o.map(Object.values).flat():[o];for(let p of c)if(p){if(!cr.default.existsSync(p))continue;if(!S(p,this.excludeList)){let l=cr.default.readFileSync(p),f=new ts.sources.RawSource(l),d=To.default.basename(p),y=`${n.endsWith("theme_icons")?n.replace("theme_icons",""):n}/${d}`;s.emitAsset(y,f)}}}})})}};var Ro=a(require("fs")),No=require("webpack"),ss=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:No.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i,o=Array.isArray(n)?typeof n[0]=="string"?n:n.map(Object.values).flat():[n];for(let c of o)if(c){let p=new Set(s.fileDependencies);Ro.default.existsSync(c)&&(p.has(c)||(p.add(c),s.fileDependencies.add(c)))}}})})}};var rs=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new es({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new ss({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var ns=require("webpack");var is=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}generateManifestPatches(e,s){let r=G(e,this.manifestPath),i=r.web_accessible_resources||[],n=r.web_accessible_resources||[];for(let[p,l]of Object.entries(s)){let f=r.content_scripts?.find(d=>d.js&&d.js.some(h=>h.includes(p)));if(f){let d=f.matches||[];if(r.manifest_version===3){let h=i.find(y=>y.matches.some($=>d.includes($)));h?l.forEach(y=>{h.resources.includes(y)||h.resources.push(y)}):i.push({resources:l.filter(y=>!y.endsWith(".map")),matches:d})}else l.forEach(h=>{n.includes(h)||n.push(h)})}}r.manifest_version===3?r.web_accessible_resources=i:r.web_accessible_resources=Array.from(new Set(n));let o=JSON.stringify(r,null,2),c=new ns.sources.RawSource(o);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=[],i=Object.keys(this.includeList||{});for(let c of i.filter(Boolean))c.startsWith("content_scripts")&&(Array.isArray(c)?r.push(...c):typeof c=="string"&&r.push(c));let n=s.chunkGraph,o={};s.entrypoints.forEach((c,p)=>{if(r.includes(p)){let l=[];c.chunks.forEach(f=>{Array.from(n.getChunkModulesIterable(f)).forEach(h=>{n.getModuleChunks(h).forEach(y=>{y.auxiliaryFiles.forEach($=>{l.includes($)||l.push($)})})})}),o[p]=l}}),this.generateManifestPatches(s,o)})})}};var L=a(require("fs")),I=a(require("path")),qo=a(require("chokidar")),os=class{options;constructor(e){this.options=e}ensureDirectoryExistence(e){let s=I.default.dirname(e);if(L.default.existsSync(s))return!0;L.default.mkdirSync(s,{recursive:!0})}copyFile(e,s){this.ensureDirectoryExistence(s),L.default.copyFileSync(e,s)}copyFolder(e,s){L.default.existsSync(s)||L.default.mkdirSync(s,{recursive:!0}),L.default.readdirSync(e).forEach(i=>{let n=I.default.join(e,i),o=I.default.join(s,i);L.default.statSync(n).isDirectory()?this.copyFolder(n,o):this.copyFile(n,o)})}apply(e){let s=I.default.dirname(this.options.manifestPath),r=I.default.join(s,"public"),i=e.options.output?.path||"";L.default.existsSync(r)&&(e.hooks.afterEmit.tap("special-folders:copy-public-folder",()=>{let n=I.default.join(i,"public");L.default.existsSync(n)||L.default.mkdirSync(n,{recursive:!0}),L.default.existsSync(r)&&this.copyFolder(r,n)}),e.options.mode!=="production"&&e.hooks.afterPlugins.tap("special-folders:copy-public-folder",()=>{let n=I.default.join(s,"public"),o=qo.default.watch(n,{ignoreInitial:!0});o.on("add",c=>{let p=I.default.join(i,I.default.relative(s,c));this.copyFile(c,p)}),o.on("change",c=>{let p=I.default.join(i,I.default.relative(s,c));this.copyFile(c,p)}),o.on("unlink",c=>{let p=I.default.join(i,I.default.relative(s,c));L.default.existsSync(p)&&L.default.unlinkSync(p)}),e.hooks.watchClose.tap("special-folders:copy-public-folder",()=>{o.close().catch(console.error)})}))}};var N=a(require("path")),pr=a(require("chokidar"));var as=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,s,r){let i=N.relative(process.cwd(),s),p=si(r?"Adding":"Removing",r?"added":"removed",e,e==="pages"?"HTML pages":"script files",i);if(r){console.warn(p);return}console.error(p),process.exit(1)}apply(e){e.hooks.afterPlugins.tap("special-folders:warn-upon-folder-changes",()=>{let s=N.dirname(this.manifestPath),r=N.join(s,"pages"),i=N.join(s,"scripts"),n=pr.watch(r,{ignoreInitial:!0}),o=pr.watch(i,{ignoreInitial:!0}),c=e.options.resolve?.extensions;n.on("add",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p,!0)}),n.on("unlink",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p)}),o.on("add",p=>{c?.includes(N.extname(p))&&this.throwCompilationError("scripts",p,!0)}),o.on("unlink",p=>{c?.includes(N.extname(p))&&this.throwCompilationError("scripts",p)}),e.hooks.watchClose.tap("WarnUponFolderChanges",()=>{n.close().catch(console.error),o.close().catch(console.error)})})}};var cs=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 as(s).apply(e)}};var ps=class{static name="plugin-extension";manifestPath;browser;mode;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.mode=e.mode}apply(e){let s=this.manifestPath,r=In({manifestPath:s}),i=On({manifestPath:s});new vt({manifestPath:s,includeList:{...i?.pages||{},...i?.scripts||{}},excludeList:i.public,loaderOptions:{jsx:me(Re.default.dirname(this.manifestPath))||X(Re.default.dirname(this.manifestPath))||Ce(Re.default.dirname(this.manifestPath)),typescript:R(Re.default.dirname(this.manifestPath)),minify:this.mode==="production"}}).apply(e),new It({browser:this.browser,manifestPath:s,includeList:{...r.html,...r.icons,...r.json,...r.scripts},excludeList:i.public}).apply(e),new zt({manifestPath:s,includeList:{...r.html,...i.pages},excludeList:{...i.public,...i.scripts}}).apply(e),new Xt({manifestPath:s,browser:this.browser,includeList:{...r.scripts,...i.scripts},excludeList:{...i.public,...i.pages}}).apply(e),new Yt({manifestPath:s}).apply(e),new Qt({manifestPath:s,includeList:r.json,excludeList:i.public}).apply(e),new rs({manifestPath:s,includeList:r.icons,excludeList:i.public}).apply(e),new is({manifestPath:s,includeList:{...r.scripts,...i.scripts},excludeList:i.public}).apply(e),new cs({manifestPath:s}).apply(e)}};var Ue=a(require("path"));var Uo=a(require("path")),Wo=a(require("ws")),us=a(require("browser-extension-manifest-fields"));function ls(t,e){t.clients.forEach(s=>{s.readyState===Wo.default.OPEN&&s.send(JSON.stringify(e))})}function Bo(t,e,s){if(!s||!e)return;let r=(0,us.default)(e).locales,i=(0,us.default)(e).scripts,n=(0,us.default)(e).json;if(!t){process.env.EXTENSION_ENV==="development"&&console.error("WebSocket server is not running.");return}Uo.default.basename(s)==="manifest.json"&&ls(t,{changedFile:"manifest.json"}),r?.forEach(o=>{o.includes(s)&&ls(t,{changedFile:"_locales"})}),Object.entries(i).forEach(([o,c])=>{let p=Array.isArray(c)?c:[c];Object.values(p).flatMap(f=>f).includes(s)&&o==="background/service_worker"&&ls(t,{changedFile:"service_worker"})}),Object.entries(n).forEach(([o,c])=>{c?.includes(s)&&o==="declarative_net_request"&&ls(t,{changedFile:"declarative_net_request"})})}var ur=a(require("path")),Vo=a(require("fs")),qe=a(require("ws"));var Ne=a(require("path")),Xp=a(require("http")),zo=a(require("https")),lr=a(require("fs"));var Jo=t=>{if(!lr.default.existsSync(t))return;let e=Ne.default.basename(t);return lr.default.readFileSync(Ne.default.join(__dirname,"certs",e))};function Ho(t,e){let s={key:Jo(Ne.default.join(__dirname,"certs","localhost.key")),cert:Jo(Ne.default.join(__dirname,"certs","localhost.cert"))},r=zo.default.createServer(s,(i,n)=>{n.writeHead(200),n.end()});return r.on("error",i=>{throw console.error(pi(t,e)),new Error(i.message)}),{server:r,port:e}}function Zp(t,e,s){switch(s){case"chrome":return new qe.default.Server({host:"localhost",port:e});case"edge":return new qe.default.Server({host:"localhost",port:e+1});case"firefox":return new qe.default.Server({server:Ho(t,e+2).server});default:return new qe.default.Server({host:"localhost",port:8888})}}async function Go(t,e){let s=t.options.context||"",r=require(ur.default.join(s,"manifest.json")),i=r.name||"Extension.js",n=e.port||8e3,o=Zp(i,n,e.browser);if(o.on("connection",c=>{c.send(JSON.stringify({status:"serverReady"})),c.on("error",p=>{console.log(ni(i,p))}),c.on("message",p=>{let l=JSON.parse(p.toString());if(l.status==="clientReady"){let f=require(ur.default.join(s,"manifest.json"));setTimeout(()=>{console.log(Ws(f,e.browser,l)),console.log("")},2500),hi(e.browser)&&setTimeout(()=>{console.log(ii(e.browser))},5e3)}})}),e.browser==="firefox"&&!Vo.default.existsSync(Xe)){let c=yi(r);console.log(Ws(r,e.browser,c)),console.log(""),console.log(ci()),console.log("")}return o}var Xo=a(require("path")),fr=a(require("fs"));function Zo(t,e){let s=Xo.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let r=fr.default.readFileSync(s,"utf8"),i=r.replace(/__RELOAD_PORT__/g,e.toString());i!==r&&fr.default.writeFileSync(s,i,"utf8")}catch(r){console.error(`Error processing file: ${r.message}`)}}process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var We=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;Zo(this.browser,this.port);let s=await Go(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,i)=>{let o=(r.modifiedFiles||new Set).values().next().value;if(!o){i();return}let c=Ue.default.relative(Ue.default.dirname(this.manifestPath),o),p=Ue.default.relative(process.cwd(),Ue.default.dirname(o));process.env.EXTENSION_ENV==="development"&&console.info(`\u25BA\u25BA Updated file \`${c}\` (relative to ${p})`),this.manifestPath&&Bo(s,this.manifestPath,o),i()})}};var mr=a(require("path"));function Yo(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[mr.default.dirname(s)],exclude:/node_modules/,use:[{loader:mr.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:s,browser:e}}]})}var dr=a(require("path"));function Ko(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[dr.default.dirname(s)],exclude:/node_modules/,use:[{loader:dr.default.resolve(__dirname,"./inject-firefox-client-loader"),options:{manifestPath:s,browser:e}}]})}var ms=require("webpack");var gr=a(require("content-security-policy-parser"));function Qo(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,gr.default)(e);e="",s.get("script-src")||s.set("script-src",["'self' 'unsafe-eval' blob: filesystem:"]),s.get("script-src")?.includes("'unsafe-eval'")||s.set("script-src",["unsafe-eval"]);for(let r in s)e+=`${r} ${s.get(r)?.join(" ")};`;return e}function ea(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self'; "};let s=(0,gr.default)(e.extension_pages||""),r="";for(let i in s)r+=`${i} ${s.get(i)?.join(" ")}; `;return{extension_pages:r.trim()}}function ta(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 i of e)r.has(i)||r.add(i);return Array.from(r)}function sa(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function hr(t,e){return t.background?{background:{...t.background}}:e==="firefox"?{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 yr(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 fs=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}generateManifestPatches(e){let s=G(e,this.manifestPath),r={...s,content_security_policy:s.manifest_version===3?ea(s):Qo(s),...s.manifest_version===3?s.permissions?{permissions:[...new Set(["scripting",...s.permissions])]}:{permissions:["scripting"]}:{},...hr(s,this.browser),...yr(s),web_accessible_resources:s.manifest_version===3?sa(s):ta(s)},i=JSON.stringify(r,null,2),n=new ms.sources.RawSource(i);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",n)}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:ms.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},r=>{if(!this.manifestPath){let i="No manifest.json found in your extension bundle. Unable to patch manifest.json.";s&&e.webpack.WebpackError&&s.errors.push(new e.webpack.WebpackError(`run-chromium: ${i}`));return}this.generateManifestPatches(s)})})}};var br=a(require("fs")),we=a(require("path")),ra=a(require("webpack-target-webextension"));var ds=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}handleBackground(e,s,r){let i=we.default.resolve(__dirname,s==="firefox"?"minimum-firefox-file.mjs":"minimum-chromium-file.mjs"),n=we.default.dirname(this.manifestPath),o=r.background;if(s==="firefox"){o=r["gecko:background"]||r["firefox:background"]||o;let c=o?.scripts||o?.["gecko:scripts"]||o?.["firefox:scripts"];if(c&&c.length>0){let p=we.default.join(n,c[0]);this.ensureFileExists(p,"background.scripts")}else this.addDefaultEntry(e,"background/script",i)}else if(o=r["chromium:background"]||r["chrome:background"]||r["edge:background"]||o,r.manifest_version===3){let c=o?.service_worker||o?.["chromium:service_worker"]||o?.["chrome:service_worker"]||o?.["edge:service_worker"];if(c){let p=we.default.join(n,c);this.ensureFileExists(p,"background.service_worker")}else this.addDefaultEntry(e,"background/service_worker",i)}else if(r.manifest_version===2){let c=o?.scripts||o?.["chromium:scripts"]||o?.["chrome:scripts"]||o?.["edge:scripts"];if(c&&c.length>0){let p=we.default.join(n,c[0]);this.ensureFileExists(p,"background.scripts")}else this.addDefaultEntry(e,"background/script",i)}}ensureFileExists(e,s){if(!br.default.existsSync(e)&&this.manifestPath){let i=require(this.manifestPath).name||"Extension.js",n=oi(i,s,e);throw console.error(n),new Error(n)}}addDefaultEntry(e,s,r){e.options.entry={...e.options.entry,[s]:{import:[r]}}}getEntryName(e){if(e.background){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||!br.default.lstatSync(this.manifestPath).isFile())return;let s=require(this.manifestPath);this.handleBackground(e,this.browser,s),new ra.default({background:this.getEntryName(s),weakRuntimeCheck:!0}).apply(e)}};var wr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){Se.includes(this.browser)&&Yo(e,this.browser,this.manifestPath),this.browser==="firefox"&&Ko(e,this.browser,this.manifestPath),new fs({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new ds({manifestPath:this.manifestPath,browser:this.browser}).apply(e)}},ia=wr;var gs=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 We({manifestPath:this.manifestPath,browser:this.browser,port:this.port,stats:this.stats}).apply(e),e.options.mode==="development"&&new ia({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var na=a(require("webpack")),hs=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new na.default.ProvidePlugin({browser:require.resolve("webextension-polyfill")}).apply(e)}};var bs=require("webpack");var ys=class{browser;manifestPath;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}patchManifest(e){let s=rt(e,this.browser);return JSON.stringify(s,null,2)}apply(e){e.hooks.compilation.tap("compatibility:browser-fields",s=>{s.hooks.processAssets.tap({name:"compatibility:browser-fields",stage:bs.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE},()=>{let r=G(s,this.manifestPath),i=this.patchManifest(r),n=new bs.sources.RawSource(i);s.updateAsset("manifest.json",n)})})}};var ws=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 hs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new ys({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e)}};var ha=a(require("fs"));var oa=a(require("webpack")),aa=a(require("content-security-policy-parser"));function ca(t){let e=t.content_security_policy,s=t.content_security_policy?.extension_pages,r=i=>{if(!i)return;let n=(0,aa.default)(i);if(n.get("script-src")&&n.get("script-src")?.includes("'unsafe-eval'")){let o=t.name||"Extension.js";return Jr(o)}};if(t.manifest_version===3){let i=e?r(s):void 0;if(i)return new oa.default.WebpackError(i)}return null}var xr=a(require("webpack"));function pa(t,e){let s=t.web_accessible_resources;if(s){let r=s.some(o=>typeof o=="string"),i=s.some(o=>typeof o=="object"||o.resources||o.matches),n=t.name||"Extension.js";if(t.manifest_version===2&&!r)return new xr.default.WebpackError(Hr(n,e));if(t.manifest_version===3&&!i)return new xr.default.WebpackError(Vr(n,e))}return null}var la=a(require("webpack"));function ua(t,e){if(e==="firefox"&&t.background?.service_worker){let s=t.name||"Extension.js";return new la.default.WebpackError(Br(s))}return null}var fa=a(require("path")),ma=a(require("fs")),da=a(require("webpack"));function ga(t,e){let s=fa.default.join(e.options.context||"","_locales"),r=t.name||"Extension.js";return ma.default.existsSync(s)&&!t.default_locale?new da.default.WebpackError(zr(r)):null}var xs=class{options;constructor(e){this.options=e}handleRuntimeErrors(e,s,r){let i=ca(s),n=pa(s,r),o=ua(s,r),c=ga(s,e);i&&e.errors.push(i),n&&e.errors.push(n),o&&e.options.mode==="production"&&e.errors.push(o),c&&e.errors.push(c)}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(s,r)=>{let i=this.options.manifestPath,n=JSON.parse(ha.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleRuntimeErrors(s,n,o),r()})}};var ja=a(require("fs")),$a=a(require("ajv"));var ya={$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 ba(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 wa=a(require("path")),xa=require("webpack");function va(t,e,s){let r=t.options.context||"",i=wa.default.join(r,"manifest.json"),o=require(i).name||"Extension.js",c=e?.params.missingProperty;t.errors.push(new xa.WebpackError(Zr(o,s,c)))}var _a=a(require("path")),Sa=require("webpack");function Pa(t,e,s){let r=t.options.context||"",i=_a.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new Sa.WebpackError(Xr(o,e,s)))}var ka=a(require("path")),Ea=require("webpack");function vr(t,e,s){let r=t.options.context||"",i=ka.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new Ea.WebpackError(Gr(o,s,e)))}var vs=class{options;constructor(e){this.options=e}handleSchemaErrors(e,s,r){let i=new $a.default;ba(i);let n={allOf:[ya]},o=i.compile(n),c=o(s),p=s.manifest_version===3;if(!c&&o.errors){let l=o.errors[0];if(l?.keyword==="required"){va(e,l,r);return}p&&(l?.keyword==="type"&&Pa(e,l,r),l?.keyword==="not"&&vr(e,l,r))}}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(s,r)=>{let i=this.options.manifestPath,n=JSON.parse(ja.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleSchemaErrors(s,n,o),r()})}};var Fa=a(require("fs")),Sr=a(require("path"));var _r=a(require("webpack"));function Ca(t,e){let s="Conflict: Multiple assets emit different content to the same filename ";if(e.message.includes(s)){let r=e.message.replace(s,"");if(r.startsWith("content_scripts"))return new _r.default.WebpackError(Yr(t,r))}return null}function Da(t,e){let s=require(t);return e.message.includes("Top-level-await is only supported in EcmaScript Modules")?new _r.default.WebpackError(Kr(s.name)):null}var _s=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=Sr.default.join(Sr.default.dirname(this.manifestPath),"package.json");if(!Fa.default.existsSync(s))return;let r=require(s).name;e.hooks.compilation.tap("develop:common-errors",i=>{i.hooks.afterSeal.tapAsync("develop:common-errors",n=>{i.errors.forEach((o,c)=>{let p=Ca(r,o),l=Da(r,o);p&&(i.errors[c]=p),l&&(i.errors[c]=l)}),n()})})}};var Ss=class{static name="plugin-errors";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new xs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new vs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new _s({manifestPath:this.manifestPath}).apply(e)}};var yc=a(require("os")),kr=a(require("path"));var ec=a(require("fs")),tc=require("child_process");var re=a(require("path")),$s=a(require("fs"));var La={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}},Ia={...La},Oa={...La};var x=require("@colors/colors/safe");function E(t,e){let s=e==="warn"?(0,x.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,x.cyan)("\u25BA\u25BA\u25BA"):e==="error"?(0,x.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,x.brightGreen)("\u25BA\u25BA\u25BA");return`${(0,x.gray)("")}${s}`}function Be(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Ps(t,e){let s=t==="firefox"?"Add-on":"Extension";return`${E(t,"success")} ${Be(t)} ${s} running in ${(0,x.cyan)(e||"unknown")} mode.`}function ks(t,e){let s=Be(t),r=e=="null"?`${s} browser is not installed.
124
+ Add an ${(0,f.brightYellow)("id")} field to your manifest.json file and try again.`}var Ke=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=M.default.dirname(this.manifestPath),i=require(this.manifestPath).name||"Extension.js";(V.default.existsSync(M.default.join(s,".env"))||V.default.existsSync(M.default.join(s,".env.example"))||V.default.existsSync(M.default.join(s,".env.local"))||V.default.existsSync(M.default.join(s,".env.defaults")))&&(console.log(Ur(i)),new mi.default({path:V.default.existsSync(M.default.join(s,".env"))?M.default.join(s,".env"):V.default.existsSync(M.default.join(s,".env.local"))?M.default.join(s,".env.local"):M.default.join(s,".env.example"),allowEmptyValues:!0,defaults:V.default.existsSync(M.default.join(s,".env.defaults")),systemvars:!0}).apply(e))}};var Js=a(require("fs")),di=a(require("path")),Qe=class{apply(e){let s=di.default.join(e.options.output.path||"","hot");Js.default.existsSync(s)&&(Js.default.rmSync(s,{recursive:!0,force:!0}),process.env.EXTENSION_ENV==="development"&&console.log("[CleanHotUpdatesPlugin] Removed old hot-update files before compilation."))}};var et=class{static name="plugin-compilation";manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){new gi.default().apply(e),new Ke({manifestPath:this.manifestPath}).apply(e),new Qe().apply(e),e.hooks.done.tap("develop:brand",s=>{s.compilation.name=void 0;let r=s.endTime-s.startTime,i=require(this.manifestPath).name;console.log(Nr(i,r,s))})}};var Mi=a(require("path")),Ti=a(require("mini-css-extract-plugin"));var Fi=a(require("mini-css-extract-plugin"));var ce=a(require("path")),ke=a(require("fs"));var te=a(require("path")),tt=a(require("fs")),zs=require("child_process"),hi=require("detect-package-manager");function yi(t,e){return Object.values(e||{}).some(s=>s===t)}function h(t,e,s){let r=te.default.extname(e),n=P(e,s)?te.default.normalize(e):t;return[".js",".jsx",".tsx",".ts"].includes(r)&&(n=n.replace(r,".js")),[".html",".njk",".nunjucks"].includes(r)&&(n=n.replace(r,".html")),[".css",".scss",".sass",".less"].includes(r)&&(n=n.replace(r,".css")),Hs(n||"")}function Hs(t){return t.replace(/\\/g,"/")}function P(t,e={}){if(!e)return!1;let s=te.default.normalize(Hs(t));return Object.values(e).some(i=>typeof i!="string"?!1:Hs(i).includes(s))}function G(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)}async function _(t,e,s){try{let r=await(0,hi.detect)();console.log(qr(t,e,r));let i=process.env._;if(!i)return null;let n=i.split(te.default.sep).pop()?.toLowerCase(),o="";r==="yarn"?o=`yarn --silent add ${s.join(" ")} --cwd ${__dirname} --optional`:r==="npm"||n==="npx"?o=`npm --silent install ${s.join(" ")} --prefix ${__dirname} --save-optional`:r==="pnpm"||n==="pnpx"?o=`pnpm --silent add ${s.join(" ")} --prefix ${__dirname} --save-optional`:o=`${r} --silent install ${s.join(" ")} --cwd ${__dirname} --optional`,(0,zs.execSync)(o,{stdio:"inherit"}),await new Promise(c=>setTimeout(c,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(Wr(t,e)),r==="yarn"?o="yarn install --silent > /dev/null 2>&1":r==="npm"?o="npm install --silent > /dev/null 2>&1":r==="pnpm"?o="pnpm install --silent > /dev/null 2>&1":o=`${r} install --silent > /dev/null 2>&1`,(0,zs.execSync)(o,{stdio:"inherit"})),console.log(Br(t,e))}catch(r){console.error(Jr(t,e,r))}}function st(t){let e=te.default.join(t,"package.json");if(!tt.default.existsSync(e))return!1;let s=JSON.parse(tt.default.readFileSync(e,"utf-8")),r=["react","vue","@angular/core","svelte","solid-js","preact"],i=s.dependencies||{},n=s.devDependencies||{};for(let o of r)if(i[o]||n[o])return!0;return!1}function bi(t){return!tt.default.existsSync(te.default.resolve(__dirname,`run-${t}-profile`))}function wi(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 rt(t,e){return JSON.parse(JSON.stringify(t),function(i,n){let o=i.indexOf(":");if(o===-1)return n;let c=i.substring(0,o);(c===e||c==="chromium"&&Se.includes(e))&&(this[i.substring(o+1)]=n)})}var xi=!1;function it(t){let e=ce.default.join(t,"package.json"),s=ce.default.join(t,"manifest.json");if(!ke.default.existsSync(e))return!1;let r=Up(t),i=require(e),n=i.devDependencies&&i.devDependencies.tailwindcss,o=i.dependencies&&i.dependencies.tailwindcss,c=!!r&&!!(n||o);if(c&&!xi){let l=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(l,"Tailwind")),xi=!0}return c}function Up(t){let e=ce.default.join(t,"tailwind.config.mjs"),s=ce.default.join(t,"tailwind.config.cjs"),r=ce.default.join(t,"tailwind.config.js");if(ke.default.existsSync(e))return e;if(ke.default.existsSync(s))return s;if(ke.default.existsSync(r))return r}var nt=a(require("path")),_i=a(require("fs"));var vi=!1;function Ee(t){let e=nt.default.join(t,"package.json"),s=nt.default.join(t,"manifest.json");if(!_i.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.sass,n=r.dependencies&&r.dependencies.sass;if(i||n){if(!vi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"SASS")),vi=!0}return!0}return!1}async function Si(t,e){if(!Ee(t))return[];try{require.resolve("sass-loader")}catch{let r=["postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"],i=require(nt.default.join(t,"package.json")).name;await _(i,"PostCSS",r),await _(i,"SASS",["sass","sass-loader","resolve-url-loader"]),console.log(E(i,"SASS")),process.exit(0)}return[{test:/\.(s(a|c)ss)$/,exclude:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:e==="production"})}]},{test:/\.module\.(s(a|c)ss)$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"sass-loader",mode:e,useMiniCssExtractPlugin:!0})}]}]}var ot=a(require("path")),ki=a(require("fs"));var Pi=!1;function je(t){let e=ot.default.join(t,"package.json"),s=ot.default.join(t,"manifest.json"),i=require(s).name||"Extension.js";if(!ki.default.existsSync(e))return!1;let n=require(e),o=n.devDependencies&&n.devDependencies.less,c=n.dependencies&&n.dependencies.less;return o||c?(Pi||(process.env.EXTENSION_ENV==="development"&&console.log(v(i,"LESS")),Pi=!0),!0):!1}async function Ei(t,e){if(!je(t))return[];try{require.resolve("less-loader")}catch{let r=require(ot.default.join(t,"package.json")).name;await _(r,"LESS",["less","less-loader","resolve-url-loader"]),console.log(E(r,"LESS")),process.exit(0)}return[{test:/\.less$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:!1})},{use:await A(t,{loader:"less-loader",mode:e,useMiniCssExtractPlugin:e==="production"})}]}]}var le=a(require("path")),at=a(require("fs"));var pe=!1;function Wp(t){let e=le.default.join(t,"package.json"),s=le.default.join(t,"manifest.json");if(!at.default.existsSync(e))return!1;let r=[".postcssrc",".postcssrc.json",".postcssrc.yaml",".postcssrc.yml",".postcssrc.js",".postcssrc.cjs","postcss.config.js","postcss.config.cjs"],n=require(s).name||"Extension.js";if(at.default.existsSync(e)){let o=require(e);if(o.dependencies&&o.dependencies.postcss||o.devDependencies&&o.devDependencies.postcss)return pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0}for(let o of r)if(at.default.existsSync(le.default.join(t,o)))return pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0;return it(t)?(pe||(process.env.EXTENSION_ENV==="development"&&console.log(v(n,"PostCSS")),pe=!0),!0):!1}async function ji(t,e){if(!Wp(t))return{};try{require.resolve("postcss-loader")}catch{let r=require(le.default.join(t,"package.json")).name;!Ee(t)&&!je(t)&&await _(r,"PostCSS",["postcss","postcss-loader","postcss-scss","postcss-flexbugs-fixes","postcss-preset-env","postcss-normalize"]),console.log(E(r,"PostCSS")),process.exit(0)}return{loader:require.resolve("postcss-loader"),options:{postcssOptions:{parser:require.resolve("postcss-scss"),ident:"postcss",config:le.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"}}}var ct=a(require("path")),Ci=a(require("fs"));var $i=!1;function $e(t){let e=ct.default.join(t,"package.json"),s=ct.default.join(t,"manifest.json");if(!Ci.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.vue,n=r.dependencies&&r.dependencies.vue;if((i||n)&&!$i){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Vue")),$i=!0}return!!i||!!n}async function Di(t){if(!$e(t))return;try{require.resolve("vue-loader")}catch{let i=["typescript"],o=require(ct.default.join(t,"manifest.json")).name||"Extension.js";await _(o,"TypeScript",i),await _(o,"Vue",["vue-loader","@vue/compiler-sfc","vue-template-compiler","vue-style-loader"]),console.log(E(o,"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}}async function A(t,e){let s=Fi.default.loader,r=[e.useMiniCssExtractPlugin?s:$e(t)?require.resolve("vue-style-loader"):require.resolve("style-loader"),{loader:require.resolve("css-loader"),options:{importLoaders:1}}].filter(Boolean);if(it(t)||Ee(t)||je(t)){let i=await ji(t,e);i.loader&&r.push(i)}return e.loader&&r.push({loader:require.resolve("resolve-url-loader"),options:{sourceMap:e.mode==="development",root:t}},{loader:require.resolve(e.loader),options:{sourceMap:e.mode==="development"}}),r.filter(Boolean)}var C=a(require("path")),T=a(require("fs"));function Oi(t){let e=C.default.join(t,"stylelint.config.json"),s=C.default.join(t,".stylelintrc.js file"),r=C.default.join(t,"stylelint.config.mjs"),i=C.default.join(t,".stylelintrc.mjs"),n=C.default.join(t,"stylelint.config.cjs"),o=C.default.join(t,".stylelintrc.cjs"),c=C.default.join(t,".stylelintrc.json"),p=C.default.join(t,".stylelintrc"),l=C.default.join(t,".stylelintrc.yml"),u=C.default.join(t,".stylelintrc.yaml");if(T.default.existsSync(e))return e;if(T.default.existsSync(s))return s;if(T.default.existsSync(r))return r;if(T.default.existsSync(i))return i;if(T.default.existsSync(n))return n;if(T.default.existsSync(o))return o;if(T.default.existsSync(c))return c;if(T.default.existsSync(p))return p;if(T.default.existsSync(l))return l;if(T.default.existsSync(u))return u}var Li=!1;function Ii(t){let e=C.default.join(t,"package.json"),s=C.default.join(t,"manifest.json");if(!T.default.existsSync(e))return!1;let i=!!Oi(t);if(i&&!Li){let o=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(o,"Stylelint")),Li=!0}return i}async function Ai(t){if(!Ii(t))return[];try{require.resolve("stylelint")}catch{let r=["stylelint","stylelint-webpack-plugin","stylelint-config-standard-scss"],i=require(C.default.join(t,"package.json")).name;await _(i,"Stylelint",r),console.log(E(i,"Stylelint")),process.exit(0)}let e=require("stylelint-webpack-plugin");return[new e({context:t,configFile:Ii(t)?Oi(t):C.default.join(__dirname,"stylelint.config.json"),files:"**/*.{css,scss,sass,less}",exclude:["node_modules",C.default.join(t,"node_modules")]})]}var pt=class t{static name="plugin-css";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async configureOptions(e){let s=Mi.default.dirname(this.manifestPath),r=[new Ti.default];r.forEach(p=>p.apply(e));let i=await Ai(s);r.push(...i);let n=[{test:/\.css$/,exclude:/\.module\.css$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:!1})},{use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:this.mode==="production"})}]},{test:/\.module\.css$/,oneOf:[{resourceQuery:/is_content_css_import=true/,use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:!1})},{use:await A(s,{mode:this.mode,useMiniCssExtractPlugin:this.mode==="production"})}]}];e.options.plugins=[...e.options.plugins,...r].filter(Boolean);let o=await Si(s,this.mode),c=await Ei(s,this.mode);n.push(...o),n.push(...c),e.options.module.rules=[...e.options.module.rules,...n].filter(Boolean)}async apply(e){if(this.mode==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var lt=class{static name="plugin-css";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async apply(e){let s={test:/\.svg$/i,type:"asset/resource",generator:{filename:"assets/[name][ext]"},parser:{dataUrlCondition:{maxSize:2048}}},i=[...e.options.module.rules.some(n=>n&&n.test instanceof RegExp&&n.test.test(".svg")&&n.use!==void 0)?[]:[s],{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 Vs=a(require("path"));var ue=a(require("path")),mt=a(require("fs"));var ft=a(require("path")),Ni=a(require("fs"));var Ri=!1;function X(t){let e=ft.default.join(t,"package.json"),s=ft.default.join(t,"manifest.json");if(!Ni.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.preact,n=r.dependencies&&r.dependencies.preact;if((i||n)&&!Ri){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Preact")),Ri=!0}return!!i||!!n}async function qi(t){if(!X(t))return;try{require.resolve("@prefresh/webpack")}catch{let r=["@prefresh/webpack"],n=require(ft.default.join(t,"manifest.json")).name||"Extension.js";await _(n,"Preact",r),console.log(E(n,"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 fe=a(require("path")),ut=a(require("fs"));var Ui=!1;function R(t){let e=fe.default.join(t,"package.json");if(!ut.default.existsSync(e))return!1;let s=Jp(t),r=require(e),i=require(fe.default.join(t,"manifest.json")),n=i.name||"Extension.js",o=r.devDependencies&&r.devDependencies.typescript,c=r.dependencies&&r.dependencies.typescript;return Ui||((o||c)&&(s?process.env.EXTENSION_ENV==="development"&&console.log(v(n,"TypeScript")):(console.log(ni(i)),zp(t))),Ui=!0),!!s&&!!(o||c)}function Bp(t,e){return{compilerOptions:{allowJs:!0,allowSyntheticDefaultImports:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0,jsx:st(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 Jp(t){let e=fe.default.join(t,"tsconfig.json");if(ut.default.existsSync(e))return e}function zp(t){ut.default.writeFileSync(fe.default.join(t,"tsconfig.json"),JSON.stringify(Bp(t,{mode:"development"}),null,2))}async function Wi(t){if(!R(t))return!1;try{require.resolve("typescript")}catch{let s=["typescript"],i=require(fe.default.join(t,"manifest.json")).name||"Extension.js";await _(i,"TypeScript",s),console.log(E(i,"TypeScript")),process.exit(0)}return!0}var Bi=!1,Ji=[".babelrc",".babelrc.json",".babelrc.js",".babelrc.cjs","babel.config.json","babel.config.js","babel.config.cjs"];function Hp(t){let e=ue.default.join(t,"package.json"),s=ue.default.join(t,"manifest.json");if(!mt.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies["babel-core"],n=r.dependencies&&r.dependencies["babel-core"],o=Ji.some(c=>mt.default.existsSync(ue.default.join(t,c)))||!!i||!!n;if(o&&!Bi){let p=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(v(p,"Babel")),Bi=!0}return o}function Vp(t){for(let e of Ji){let s=ue.default.join(t,e);if(mt.default.existsSync(s))return s}}function Gp(t,e){let s=require("babel-preset-modern-browser-extension").default;return{cacheDirectory:!1,cacheCompression:!1,babelrc:!1,configFile:Vp(t),compact:e.mode==="production",overrides:[s(e).overrides],presets:[...s(e).presets],plugins:[...s(e).plugins,process.env.NODE_ENV!=="test"&&e.mode==="development"&&X(t)&&require.resolve("react-refresh/babel")].filter(Boolean)}}async function zi(t,e){if(!Hp(e))return;try{require.resolve("babel-loader")}catch{let o=["@babel/core","babel-loader","babel-preset-modern-browser-extension"],p=require(ue.default.join(e,"manifest.json")).name||"Extension.js";await _(p,"Babel",o),console.log(E(p,"Babel")),process.exit(0)}let s=R(e)?/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/:/\.(js|mjs|jsx|mjsx)$/,r=t.options.mode,i=await Wi(e);return{plugins:void 0,loaders:[{test:s,include:e,exclude:/node_modules/,loader:require.resolve("babel-loader"),options:Gp(e,{mode:r,typescript:i})}],alias:void 0}}var dt=a(require("path")),Vi=a(require("fs"));var Hi=!1;function me(t){let e=dt.default.join(t,"package.json"),s=dt.default.join(t,"manifest.json");if(!Vi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.react,n=r.dependencies&&r.dependencies.react;if((i||n)&&!Hi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"React")),Hi=!0}return!!i||!!n}async function Gi(t){if(!me(t))return;try{require.resolve("@pmmmwh/react-refresh-webpack-plugin")}catch{let r=["react-refresh","@pmmmwh/react-refresh-webpack-plugin","react-refresh-typescript"],n=require(dt.default.join(t,"manifest.json")).name||"Extension.js";await _(n,"React",r),console.log(E(n,"React")),process.exit(0)}return{plugins:[new(require("@pmmmwh/react-refresh-webpack-plugin"))({overlay:!1})],loaders:void 0,alias:void 0}}var gt=class t{static name="plugin-js-frameworks";manifestPath;mode;constructor(e){this.manifestPath=e.manifestPath,this.mode=e.mode}async configureOptions(e){let s=Vs.default.dirname(this.manifestPath),r=await zi(e,s),i=await Gi(s),n=await qi(s),o=await Di(s);e.options.resolve.alias={...r?.alias||{},...i?.alias||{},...n?.alias||{},...o?.alias||{},...e.options.resolve.alias},e.options.module.rules=[{test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[Vs.default.dirname(this.manifestPath)],exclude:/node_modules/,use:{loader:require.resolve("swc-loader"),options:{sync:!0,module:{type:"es6"},minify:this.mode==="production",isModule:!0,jsc:{target:"es2016",parser:{syntax:R(s)?"typescript":"ecmascript",tsx:R(s)&&(me(s)||X(s)),jsx:!R(s)&&(me(s)||X(s)),dynamicImport:!0},transform:{react:{development:this.mode==="development",refresh:this.mode==="development",runtime:"automatic",importSource:"react"}}}}}},...r?.loaders||[],...i?.loaders||[],...n?.loaders||[],...o?.loaders||[],...e.options.module.rules].filter(Boolean),i?.plugins?.forEach(c=>c.apply(e)),n?.plugins?.forEach(c=>c.apply(e)),o?.plugins?.forEach(c=>c.apply(e))}async apply(e){if(this.mode==="production"){e.hooks.beforeRun.tapPromise(t.name,async()=>await this.configureOptions(e));return}await this.configureOptions(e)}};var Te=a(require("path"));var On=a(require("path"));var Xi=a(require("path"));function Zi(t,e){if(!e||!e.action||!e.action.default_popup)return;let s=e.action.default_popup;return Xi.default.join(t,s)}var Yi=a(require("path"));function Ki(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let s=e.browser_action.default_popup;return Yi.default.join(t,s)}var ht=a(require("path"));function Qi(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":ht.default.join(t,r)}}if(e.chrome_url_overrides.newtab){let r=e.chrome_url_overrides.newtab;s={"chrome_url_overrides/newtab":ht.default.join(t,r)}}if(e.chrome_url_overrides.bookmarks){let r=e.chrome_url_overrides.bookmarks;s={"chrome_url_overrides/bookmarks":ht.default.join(t,r)}}return s}var en=a(require("path"));function tn(t,e){if(!e||!e.devtools_page)return;let s=e.devtools_page;return en.default.join(t,s)}var Gs=a(require("path"));function sn(t,e){if(e.options_page){let r=e.options_page;return Gs.default.join(t,r)}if(!e||!e.options_ui||!e.options_ui.page)return;let s=e.options_ui.page;return Gs.default.join(t,s)}var rn=a(require("path"));function nn(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let s=e.page_action.default_popup;return rn.default.join(t,s)}var on=a(require("path"));function an(t,e){if(!e||!e.sandbox||!e.sandbox.pages)return{"sandbox/page-0":void 0};let s=e.sandbox.pages,r={};for(let[i,n]of s.entries())r[`sandbox/page-${i}`]=on.default.join(t,n);return r}var cn=a(require("path"));function pn(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let s=e.side_panel.default_path;return cn.default.join(t,s)}var ln=a(require("path"));function fn(t,e){if(!e||!e.sidebar_action||!e.sidebar_action.default_panel)return;let s=e.sidebar_action.default_panel;return ln.default.join(t,s)}function Ce(t,e){return{"action/default_popup":Zi(t,e),"browser_action/default_popup":Ki(t,e),...Qi(t,e),devtools_page:tn(t,e),"options_ui/page":sn(t,e),"page_action/default_popup":nn(t,e),...an(t,e),"side_panel/default_path":pn(t,e),"sidebar_action/default_panel":fn(t,e)}}var Xs=a(require("path"));function un(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return Xs.default.join(t,e.action.default_icon);let s=[];for(let r in e.action.default_icon)s.push(Xs.default.join(t,e.action.default_icon[r]));return s}var Zs=a(require("path"));function mn(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let s=[];if(typeof e.browser_action.default_icon=="string")return Zs.default.join(t,e.browser_action.default_icon);for(let r in e.browser_action.default_icon){let i=e.browser_action.default_icon[r]=Zs.default.join(t,e.browser_action.default_icon[r]);s.push(i)}return s}var Ys=a(require("path"));function dn(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=Ys.default.join(t,s.light)),s.dark&&(s.dark=Ys.default.join(t,s.dark)),s.size&&delete s.size;return e.browser_action.theme_icons}}var gn=a(require("path"));function hn(t,e){if(!e||!e.icons)return;let s=[];for(let r in e.icons){let i=gn.default.join(t,e.icons[r]);s.push(i)}return s}var Ks=a(require("path"));function yn(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return Ks.default.join(t,e.page_action.default_icon);let s=[];for(let r in e.page_action.default_icon){let i=Ks.default.join(t,e.page_action.default_icon[r]);s.push(i)}return s}var bn=a(require("path"));function wn(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:bn.default.join(t,e.sidebar_action.default_icon)}function xn(t,e){return{action:un(t,e),browser_action:mn(t,e),"browser_action/theme_icons":dn(t,e),icons:hn(t,e),page_action:yn(t,e),sidebar_action:wn(t,e)}}var vn=a(require("path"));function _n(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(i=>{s[`declarative_net_request/${i.id}`]=vn.default.join(t,i.path)}),s)}var Sn=a(require("path"));function Pn(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let s=e.storage.managed_schema;return Sn.default.join(t,s)}function kn(t,e){return{..._n(t,e),"storage/managed_schema":Pn(t,e)}}var En=a(require("path"));function jn(t,e){if(!e||!e.background)return;let s=e.background.scripts;if(s)return s.map(r=>En.default.join(t,r))}var $n=a(require("path"));function Cn(t,e){if(!e||!e.background)return;let s=e.background.service_worker;if(s)return $n.default.join(t,s)}var Qs=a(require("path"));function Dn(t,e){if(!e||!e.content_scripts)return{"content_scripts/content-0":void 0};let s=n=>{if(n.js?.length!==0)return n.js?.map(o=>Qs.default.join(t,o))},r=n=>{if(n.css?.length!==0)return n.css?.map(o=>Qs.default.join(t,o))},i={};for(let[n,o]of e.content_scripts.entries()){let c=s(o),p=r(o);i[`content_scripts/content-${n}`]=[...(c||[]).filter(l=>l!=null),...(p||[]).filter(l=>l!=null)]}return i}var Fn=a(require("path"));function Ln(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let s=e.user_scripts.api_script;return Fn.default.join(t,s)}function De(t,e){return{"background/scripts":jn(t,e),"background/service_worker":Cn(t,e),...Dn(t,e),"user_scripts/api_script":Ln(t,e)}}function In(t){if(!(!t||!t.web_accessible_resources||!t.web_accessible_resources.length))return t.web_accessible_resources}function Xp(t){function e(s){let r={};for(let i in s)if(s.hasOwnProperty(i)){let n=i.includes(":")?i.split(":")[1]:i;typeof s[i]=="object"&&!Array.isArray(s[i])?r[n]=e(s[i]):r[n]=s[i]}return r}return e(t)}function An({manifestPath:t}){let e=On.default.dirname(t),s=require(t),r=Xp(s);return{html:Ce(e,r),icons:xn(e,r),json:kn(e,r),scripts:De(e,r),web_accessible_resources:In(r)}}var de=a(require("path"));var yt=a(require("fs")),Fe=a(require("path"));function bt(t,e){if(!yt.default.existsSync(t)||!yt.default.statSync(t).isDirectory())return[];let s=[];function r(i){let n=yt.default.readdirSync(i,{withFileTypes:!0});for(let o of n){let c=Fe.default.join(i,o.name);o.isDirectory()?r(c):o.isFile()&&e(o.name)&&s.push(c)}}return r(t),s}function wt(t,e,s=""){return!e||!e.length?{}:e.reduce((r,i)=>{let n=Fe.default.extname(i),o=Fe.default.basename(i,n),c=s?`${s}/${o}`:Fe.default.relative(t,i);return{...r,[c]:i}},{})}function Mn({manifestPath:t}){let e=de.default.dirname(t),s={public:de.default.join(e,"public"),pages:de.default.join(e,"pages"),scripts:de.default.join(e,"scripts")},r={public:bt(s.public,()=>!0),pages:bt(s.pages,n=>n.endsWith(".html")),scripts:bt(s.scripts,n=>[".js",".mjs",".jsx",".mjsx",".ts",".mts",".tsx",".mtsx"].includes(de.default.extname(n)))};return{public:wt(e,r.public),pages:wt(e,r.pages,"pages"),scripts:wt(e,r.scripts,"scripts")}}var xt=a(require("path")),Tn=a(require("webpack")),vt=class{manifestPath;includeList;excludeList;loaderOptions;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList,this.loaderOptions=e.loaderOptions}apply(e){new Tn.default.ProvidePlugin({r:[xt.default.resolve(__dirname,"./resolver-module.js"),"default"]}).apply(e),e.options.module?.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,loader:require.resolve(xt.default.resolve(__dirname,"./resolver-loader.js")),include:[xt.default.dirname(this.manifestPath)],exclude:/node_modules/,options:{manifestPath:this.manifestPath,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 Rn=a(require("fs")),St=a(require("webpack")),Nn=require("webpack");var _t=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){e.hooks.compilation.tap("manifest:emit-manifest",s=>{s.hooks.processAssets.tap({name:"manifest:emit-manifest",stage:St.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{let r=this.manifestPath,i;try{let c=Rn.default.readFileSync(r,"utf-8");i=JSON.parse(c)}catch(c){let l=require(this.manifestPath).name||"Extension.js";s.errors.push(new St.default.WebpackError(si(l,c)));return}let n=JSON.stringify(i,null,2);s.emitAsset("manifest.json",new Nn.sources.RawSource(n))})})}};var jt=require("webpack");function qn(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 Un=a(require("path"));var Pt=t=>Un.default.basename(t);function Wn(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/${Pt(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/${Pt(r)}`,r,e)]))},...t.browser_action.theme_icons&&{theme_icons:t.browser_action.theme_icons.map(s=>({...s,...s.light&&{light:h(`browser_action/${Pt(s.light)}`,s.light,e)},...s.dark&&{dark:h(`browser_action/${Pt(s.dark)}`,s.dark,e)}}))}}}}function Bn(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 Jn(t,e){return{...qn(t,e),...Wn(t,e),...Bn(t,e)}}var Hn=a(require("path"));var zn=t=>Hn.default.basename(t);function Vn(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/${zn(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([s,r])=>[s,h(`action/${zn(r)}`,r,e)]))}}}}function Gn(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 Xn(t,e){return{...Vn(t,e),...Gn(t,e),...kt(t,e)}}function Zn(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:h("background/page.html",t.background.page,e)}}}}function Yn(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 Kn(t,e){return t.content_scripts&&{content_scripts:t.content_scripts.map((s,r)=>{let i=[...new Set(s.js)],n=[...new Set(s.css)];return{...s,js:[...i.map(o=>h(`content_scripts/content-${r}.js`,o,e))],css:[...n.map(o=>h(`content_scripts/content-${r}.css`,o,e))]}})}}function Qn(t,e){return t.devtools_page&&{devtools_page:h("devtools_page.html",t.devtools_page,e)}}var eo=a(require("path"));var Zp=t=>eo.default.basename(t);function to(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([s,r])=>[s,h(`icons/${Zp(r)}`,r,e)]))}}function so(t,e){return t.options_page&&{options_page:h("options_ui/page.html",t.options_page,e)}}function ro(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 no=a(require("path"));var io=t=>no.default.basename(t);function oo(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/${io(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/${io(r)}`,r,e)]))}}}}function ao(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 co=a(require("path"));var Yp=t=>co.default.basename(t);function po(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/${Yp(t.sidebar_action.default_icon)}`,t.sidebar_action.default_icon,e)}}}}function lo(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:h("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var fo=a(require("path"));var Kp=t=>fo.default.basename(t);function uo(t,e){return t.theme&&{theme:{...t.theme,...t.theme.images&&{images:{...t.theme.images,theme_frame:h(`theme/images/${Kp(t.theme.images.theme_frame)}`,t.theme.images.theme_frame,e)}}}}}function mo(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 go(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function ho(t,e){return{...Zn(t,e),...Yn(t,e),...Kn(t,e),...Qn(t,e),...to(t,e),...so(t,e),...ro(t,e),...oo(t,e),...ao(t,e),...kt(t,e),...po(t,e),...lo(t,e),...uo(t,e),...mo(t,e),...go(t)}}function yo(t,e,s){let r=e||require(t);return JSON.stringify({...r,...ho(r,s),...Jn(r,s),...Xn(r,s)},null,2)}var Et=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:jt.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{if(s.errors.length>0)return;let r=G(s,this.manifestPath),i=yo(this.manifestPath,r,this.excludeList||{}),n={...r,...JSON.parse(i)};e.options.mode!=="production"&&n.content_scripts&&(n.content_scripts=this.applyDevOverrides(n));let o=JSON.stringify(n,null,2),c=new jt.sources.RawSource(o);s.updateAsset("manifest.json",c)})})}};var bo=a(require("fs")),$t=class{dependencyList;constructor(e){this.dependencyList=e}apply(e){e.hooks.afterCompile.tap("ManifestPlugin (AddDependenciesPlugin)",s=>{if(s.errors?.length)return;let r=new Set(s.fileDependencies);this.dependencyList&&this.dependencyList.forEach(i=>{bo.default.existsSync(i)&&(r.has(i)||(r.add(i),s.fileDependencies.add(i)))})})}};var wo=a(require("fs")),xo=a(require("path")),Dt=a(require("webpack"));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 i=e;i.light&&r.push(i.light),i.dark&&r.push(i.dark)}return r}handleErrors(e,s){let r=[".png",".jpg",".jpeg",".svg",".gif",".webp"],i=[".json"],n=[".js",".ts",".jsx",".tsx",".mjs",".cjs"],o=".html",c=Object.entries(this.includeList||{});for(let[p,l]of c)if(l){let u=this.extractPaths(l);for(let d of u){let g=xo.default.extname(d),$=require(this.manifestPath).name||"Extension.js",k=ae($,p,d);wo.default.existsSync(d)||(r.includes(g)?e.errors.push(new s(k)):i.includes(g)?e.errors.push(new s(k)):n.includes(g)?e.errors.push(new s(k)):g===o?e.errors.push(new s(k)):e.errors.push(new s(k)))}}}apply(e){e.hooks.compilation.tap("manifest:check-manifest-files",s=>{s.hooks.processAssets.tap({name:"compatibility:check-manifest-files",stage:Dt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT},()=>{let r=Dt.default.WebpackError;this.handleErrors(s,r)})})}};var vo=a(require("fs")),Lt=a(require("webpack"));var Ft=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 n=s.options.context||"",o=`${n}/package.json`;if(!vo.default.existsSync(o)){r();return}let c=require(this.manifestPath),p=rt(c,this.browser),l=this.flattenAndSort(Object.values(Ce(n,p))),u=this.flattenAndSort(Object.values(De(n,p)));s.hooks.thisCompilation.tap("manifest:throw-if-recompile-is-needed",d=>{d.hooks.processAssets.tap({name:"manifest:check-manifest-files",stage:Lt.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY},()=>{let y=d.getAsset("manifest.json")?.source.source().toString(),$=JSON.parse(y||"{}"),k=this.flattenAndSort(Object.values(Ce(n,$))),U=this.flattenAndSort(Object.values(De(n,$)));if(u.toString()!==U.toString()||l.toString()!==k.toString()){let W=l.filter(B=>!k.includes(B))[0],H=k.filter(B=>!l.includes(B))[0],_e=ri(H,W);d.errors.push(new Lt.default.WebpackError(_e))}})})}r()})}};var It=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 _t({manifestPath:this.manifestPath}).apply(e),new Ct({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Et({manifestPath:this.manifestPath,excludeList:this.excludeList}).apply(e),new $t([this.manifestPath]).apply(e),new Ft({manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList}).apply(e)}};var ir=a(require("path"));var tr=a(require("fs")),Mt=a(require("webpack")),Eo=require("webpack");var _o=a(require("fs")),he=a(require("path")),So=a(require("parse5-utils"));var ge=a(require("parse5-utils"));function Ot(t){try{return new URL(t),!0}catch{return!1}}function Le(t,e){let{childNodes:s=[]}=t;for(let r of s)if(r.nodeName==="script"){let i=ge.default.getAttribute(r,"src");if(!i||Ot(i))continue;e({filePath:i,childNode:r,assetType:"script"})}else if(r.nodeName==="link"){let i=ge.default.getAttribute(r,"href"),n=ge.default.getAttribute(r,"rel");if(!i||Ot(i))continue;e(n==="dns-prefetch"||n==="icon"||n==="manifest"||n==="modulepreload"||n==="preconnect"||n==="prefetch"||n==="preload"||n==="prerender"?{filePath:i,childNode:r,assetType:"staticHref"}:{filePath:i,childNode:r,assetType:"css"})}else if(r.nodeName==="a"||r.nodeName==="area"){let i=ge.default.getAttribute(r,"href");if(!i||Ot(i))continue;e({filePath:i,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 i=ge.default.getAttribute(r,"src");if(!i||Ot(i))continue;e({filePath:i,childNode:r,assetType:"staticSrc"})}else Le(r,e)}function D(t,e){let s={css:[],js:[],static:[]};if(!t)return s;let r=e||_o.default.readFileSync(t,{encoding:"utf8"}),i=So.default.parse(r),n=(o,c)=>he.default.join(he.default.dirname(o),c.startsWith("/")?he.default.relative(he.default.dirname(o),c):c);for(let o of i.childNodes)if(o.nodeName==="html"){for(let c of o.childNodes)(c.nodeName==="head"||c.nodeName==="body")&&Le(c,({filePath:p,assetType:l})=>{let u=n(t,p);switch(l){case"script":s.js?.push(u);break;case"css":s.css?.push(u);break;case"staticSrc":case"staticHref":if(p.startsWith("#"))break;s.static?.push(u);break;default:break}});return{css:s.css,js:s.js,static:s.static}}}function Po(t,e,s){let r=Object.keys(t).find(n=>{let o=t[n];return t[n]===e||D(o)?.js?.includes(e)||D(o)?.css?.includes(e)})||"",i=er(e);return r?`/${r.replace(i,"")}${s}`:`${e.replace(i,"")}${s}`}function er(t){switch(he.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 ko(t,e){return Object.values(e||{}).some(s=>s===t)}var At=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).name||"Extension.js";e.hooks.thisCompilation.tap("html:emit-html-file",i=>{i.hooks.processAssets.tap({name:"AddAssetsToCompilationPlugin",stage:Mt.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{let n=Object.entries(this.includeList||{});for(let o of n){let[c,p]=o;if(p){if(!tr.default.existsSync(p)){let u=ae(r,c,p);i.warnings.push(new Mt.default.WebpackError(u));return}let l=tr.default.readFileSync(p,"utf8");if(!P(p,this.excludeList)){let u=new Eo.sources.RawSource(l),d=Z(c,".html");i.emitAsset(d,u)}}}})})}};var Tt=a(require("fs")),ye=a(require("path")),jo=a(require("webpack")),Ie=require("webpack");var Rt=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:Ie.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{if(s.errors.length>0)return;let r=Object.entries(this.includeList||{});for(let i of r){let[n,o]=i,c=n+".html";if(o){let p=s.getAsset(c);if(p){let l=p.source.source().toString(),u=D(o,l)?.static,d=[...new Set(u)];for(let g of d)if(!g.includes("public/")){if(!Tt.default.existsSync(g)&&!ko(g,this.includeList)&&!ye.default.basename(g).startsWith("#")){let W=Ze(require(this.manifestPath).name,o,g);s.warnings.push(new jo.default.WebpackError(W));return}let y=Tt.default.readFileSync(g),$=new Ie.sources.RawSource(y),k=ye.default.join("assets",ye.default.basename(g));if(!s.getAsset(k))if(g.endsWith(".html")){let U=D(g),W=[...U?.js||[],...U?.css||[],...U?.static||[]];s.emitAsset(k,$),W.forEach(H=>{let _e=Tt.default.readFileSync(H),B=new Ie.sources.RawSource(_e),Ar=ye.default.join("assets",ye.default.basename(H));s.getAsset(Ar)||s.emitAsset(Ar,B)})}else s.emitAsset(k,$)}}}}})})}};var $o=a(require("path")),sr=a(require("fs"));var Nt=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[i,n]=r;if(n){if(!sr.default.existsSync(n))return;let o=D(n),c=o?.js||[],p=o?.css||[],l=[...c,...p].filter(u=>!P(u,this.excludeList));if(e.options.mode==="development"){let u=$o.default.resolve(__dirname,"minimum-script-file.mjs");l.push(u)}sr.default.existsSync(n)&&(P(n,this.excludeList)||(e.options.entry={...e.options.entry,[i]:{import:l}}))}}}};var Ut=require("webpack");var rr=a(require("fs")),Y=a(require("path")),F=a(require("parse5-utils"));function Co(t,e,s,r,i){let n=rr.default.readFileSync(s,{encoding:"utf8"}),o=F.default.parse(n),c=!!t.getAsset(e+".css"),p=!1;for(let l of o.childNodes)if(l.nodeName==="html"){for(let u of l.childNodes){if((u.nodeName==="head"||u.nodeName==="body")&&Le(u,({filePath:d,childNode:g,assetType:y})=>{let $=Y.default.dirname(s),k=Y.default.resolve($,d),U=er(k),W=P(Y.default.resolve($,d),i),H=Y.default.join("/",Y.default.normalize(d)),_e=yi(k,r);switch(y){case"script":{W?l=F.default.setAttribute(g,"src",H):(l=F.default.remove(g),p=!0);break}case"css":{W?l=F.default.setAttribute(g,"href",H):(l=F.default.remove(g),c=!0);break}case"staticHref":case"staticSrc":{if(W)l=F.default.setAttribute(g,y==="staticSrc"?"src":"href",H);else if(_e){let B=Po(r,k,U);l=F.default.setAttribute(g,y==="staticSrc"?"src":"href",B)}else{let B=Y.default.join("assets",Y.default.basename(k,U));rr.default.existsSync(k)&&(l=F.default.setAttribute(g,y==="staticSrc"?"src":"href",Z(B,"",!0)))}break}default:break}}),u.nodeName==="head"&&c&&t.options.mode==="production"){let d=F.default.createNode("link");d.attrs=[{name:"rel",value:"stylesheet"},{name:"href",value:Z(e,".css",!0)}],F.default.append(u,d)}if(u.nodeName==="body"&&(p||t.options.mode!=="production")){let d=F.default.createNode("script");d.attrs=[{name:"src",value:Z(e,".js",!0)}],F.default.append(u,d)}}return F.default.serialize(o)}}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("html:update-html-file",s=>{s.hooks.processAssets.tap({name:"html:update-html-file",stage:Ut.Compilation.PROCESS_ASSETS_STAGE_DERIVED},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i;if(o){let c=Co(s,n,o,r,this.excludeList||{});if(!P(o,this.excludeList)&&c){let p=new Ut.sources.RawSource(c),l=Z(n,".html");s.updateAsset(l,p)}}}})})}};var Do=a(require("fs")),Fo=require("webpack");var Wt=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:Fo.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i;if(n){let o=D(n),c=new Set(s.fileDependencies);if(Do.default.existsSync(n)){let p=[n,...o?.static||[]];for(let l of p)c.has(l)||(c.add(l),l===n&&s.fileDependencies.add(l))}}}})})}};var Lo=a(require("fs"));var Bt=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 i=r;if(i){if(!Lo.default.existsSync(i)){let o=require(this.manifestPath).name||"Extension.js";console.error(ae(o,s,i)),process.exit(1)}this.initialHtmlAssets[i]={js:D(i)?.js||[],css:D(i)?.css||[]}}})}apply(e){let s=this.includeList||{};this.storeInitialHtmlAssets(s),e.hooks.make.tapAsync("html:throw-if-recompile-is-needed",(r,i)=>{let n=e.modifiedFiles||new Set,o=Array.from(n)[0];if(o&&this.initialHtmlAssets[o]){let c=D(o)?.js||[],p=D(o)?.css||[],{js:l,css:u}=this.initialHtmlAssets[o];if(this.hasEntriesChanged(p,u)||this.hasEntriesChanged(c,l)){let d=require(this.manifestPath).name;console.log(pi(d,o))}}i()})}};var Io=a(require("fs")),Oo=require("webpack");function el(t,e,s){let r="Module not found: Error: Can't resolve ",n=s.message.replace(r,"").split("'")[1];if(s.message.includes(r))for(let o of Object.entries(e)){let[,c]=o;if(c){if(!Io.default.existsSync(c))return null;let p=D(c),l=p?.js||[],u=p?.css||[];if(l.includes(n)||u.includes(n)){let d=Ze(require(t).name,c,n);return new Oo.WebpackError(d)}}}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,i)=>{let n=el(this.manifestPath,this.includeList||{},r);n&&(s.errors[i]=n)})})})}};var zt=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new At({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new Rt({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 qt({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:[ir.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(ir.default.join(__dirname,"ensure-hmr-for-scripts.js")),options:{manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}}]}),new Wt({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 Jt({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var re=a(require("path"));var nr=a(require("fs")),Ao=a(require("path"));function Mo(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>{let n=nr.default.existsSync(i)&&!P(i,e),o=Ao.default.extname(i);return n&&(o===".js"||o===".mjs"||o===".jsx"||o===".ts"||o===".tsx")})}function To(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>nr.default.existsSync(i)&&!P(i,e)&&(i.endsWith(".css")||i.endsWith(".scss")||i.endsWith(".sass")||i.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||{};for(let r of Object.entries(s)){let[i,n]=r,o=Mo(n,this.excludeList),c=To(n,this.excludeList),p=[...o];e.options.mode==="production"&&p.push(...c),(c.length||o.length)&&(e.options.entry={...e.options.entry,[i]:{import:p}})}}};var se=require("webpack"),tl=['var isBrowser = !!(() => { try { return browser.runtime.getURL("/") } catch(e) {} })()','var isChrome = !!(() => { try { return chrome.runtime.getURL("/") } catch(e) {} })()'],sl=[...tl,`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,i=>{let n=rl();return r.addRuntimeModule(i,n),!0})})}};function rl(){class t extends se.RuntimeModule{constructor(){super("publicPath",se.RuntimeModule.STAGE_BASIC)}generate(){let s=this.compilation?.outputOptions.publicPath;return se.Template.asString([...sl,`var path = ${JSON.stringify(this.compilation?.getPath(s||"",{hash:this.compilation.hash||"XXXX"}))}`,`${se.RuntimeGlobals.publicPath} = typeof importScripts === 'function' || !(isBrowser || isChrome) ? path : runtime.runtime.getURL(path);`])}}return new t}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){let s=require(this.manifestPath);if(s.content_scripts?.some(r=>r.world&&r.world.toLowerCase()==="main")){if(s.id||(console.error(ui(s.name||"")),process.exit(1)),this.browser==="firefox"){e.options.output.publicPath=`moz-extension://${s.id}/`;return}e.options.output.publicPath=`${this.browser}-extension://${s.id}/`}}};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){new Ht({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 Vt().apply(e),new Gt({manifestPath:this.manifestPath,browser:this.browser||"chrome",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:re.default.resolve(__dirname,"./add-query-param-to-imported-css.js"),options:{manifestPath:this.manifestPath,includeList:this.includeList||{},excludeList:this.excludeList||{}}}]})}};var ar=a(require("path")),Oe=a(require("fs")),cr=a(require("webpack")),Ae=require("webpack");var be=a(require("path")),Zt=a(require("fs"));function or(t){let e=be.default.join(be.default.dirname(t),"_locales"),s=[];if(Zt.default.existsSync(e))for(let r of Zt.default.readdirSync(e)){let i=be.default.join(e,r);for(let n of Zt.default.readdirSync(i))s.push(be.default.join(be.default.dirname(t),"_locales",r,n))}return s}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("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:Ae.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{let i=require(this.manifestPath).name||"Extension.js";if(!Oe.default.existsSync(this.manifestPath)){s.errors.push(new cr.default.WebpackError(ti(i)));return}if(s.errors.length>0)return;let n=or(this.manifestPath);for(let o of Object.entries(n||[])){let[c,p]=o,l=p;if(l){if(!Oe.default.existsSync(l)){s.warnings.push(new cr.default.WebpackError(Ye(i,c,l)));return}let u=Oe.default.readFileSync(l),d=new Ae.sources.RawSource(u),g=e.options.context||ar.default.dirname(this.manifestPath);if(!P(l,this.excludeList)){let y=ar.default.relative(g,l);s.emitAsset(y,d)}}}})}),e.hooks.thisCompilation.tap("locales:module",s=>{s.hooks.processAssets.tap({name:"locales:module",stage:Ae.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=or(this.manifestPath);for(let i of Object.entries(r||[])){let[,n]=i;if(n){let o=new Set(s.fileDependencies),c=r||[];for(let p of c)Oe.default.existsSync(p)&&(o.has(p)||(o.add(p),s.fileDependencies.add(p)))}}})})}};var Kt=a(require("fs")),Ro=a(require("webpack")),Me=require("webpack");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("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:Me.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i,c=Array.isArray(o)?o:[o];for(let p of c)if(p&&!P(p,this.excludeList)){if(!Kt.default.existsSync(p)){let g=require(this.manifestPath).name||"Extension.js";s.warnings.push(new Ro.default.WebpackError(Ye(g,n,p)));return}let l=Kt.default.readFileSync(p),u=new Me.sources.RawSource(l);s.emitAsset(n+".json",u)}}})}),e.hooks.thisCompilation.tap("json:module",s=>{s.hooks.processAssets.tap({name:"json:module",stage:Me.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i,o=Array.isArray(n)?n:[n];for(let c of o)if(c){let p=new Set(s.fileDependencies);P(c,this.excludeList)||Kt.default.existsSync(c)&&(p.has(c)||(p.add(c),s.fileDependencies.add(c)))}}})})}};var pr=a(require("fs")),No=a(require("path")),ts=require("webpack");var es=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:ts.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER},()=>{if(s.errors.length>0)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[n,o]=i;if(o===void 0)continue;let c=Array.isArray(o)?typeof o[0]=="string"?o:o.map(Object.values).flat():[o];for(let p of c)if(p){if(!pr.default.existsSync(p))continue;if(!P(p,this.excludeList)){let l=pr.default.readFileSync(p),u=new ts.sources.RawSource(l),d=No.default.basename(p),y=`${n.endsWith("theme_icons")?n.replace("theme_icons",""):n}/${d}`;s.emitAsset(y,u)}}}})})}};var qo=a(require("fs")),Uo=require("webpack"),ss=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:Uo.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},()=>{if(s.errors?.length)return;let r=this.includeList||{};for(let i of Object.entries(r)){let[,n]=i,o=Array.isArray(n)?typeof n[0]=="string"?n:n.map(Object.values).flat():[n];for(let c of o)if(c){let p=new Set(s.fileDependencies);qo.default.existsSync(c)&&(p.has(c)||(p.add(c),s.fileDependencies.add(c)))}}})})}};var rs=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}apply(e){new es({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e),new ss({manifestPath:this.manifestPath,includeList:this.includeList,excludeList:this.excludeList}).apply(e)}};var ns=require("webpack");var is=class{manifestPath;includeList;excludeList;constructor(e){this.manifestPath=e.manifestPath,this.includeList=e.includeList,this.excludeList=e.excludeList}generateManifestPatches(e,s){let r=G(e,this.manifestPath),i=r.web_accessible_resources||[],n=r.web_accessible_resources||[];for(let[p,l]of Object.entries(s)){let u=r.content_scripts?.find(d=>d.js&&d.js.some(g=>g.includes(p)));if(u){let d=u.matches||[];if(r.manifest_version===3){let g=i.find(y=>y.matches.some($=>d.includes($)));g?l.forEach(y=>{g.resources.includes(y)||g.resources.push(y)}):i.push({resources:l.filter(y=>!y.endsWith(".map")),matches:d})}else l.forEach(g=>{n.includes(g)||n.push(g)})}}r.manifest_version===3?r.web_accessible_resources=i:r.web_accessible_resources=Array.from(new Set(n));let o=JSON.stringify(r,null,2),c=new ns.sources.RawSource(o);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=[],i=Object.keys(this.includeList||{});for(let c of i.filter(Boolean))c.startsWith("content_scripts")&&(Array.isArray(c)?r.push(...c):typeof c=="string"&&r.push(c));let n=s.chunkGraph,o={};s.entrypoints.forEach((c,p)=>{if(r.includes(p)){let l=[];c.chunks.forEach(u=>{Array.from(n.getChunkModulesIterable(u)).forEach(g=>{n.getModuleChunks(g).forEach(y=>{y.auxiliaryFiles.forEach($=>{l.includes($)||l.push($)})})})}),o[p]=l}}),this.generateManifestPatches(s,o)})})}};var L=a(require("fs")),I=a(require("path")),Wo=a(require("chokidar")),os=class{options;constructor(e){this.options=e}ensureDirectoryExistence(e){let s=I.default.dirname(e);if(L.default.existsSync(s))return!0;L.default.mkdirSync(s,{recursive:!0})}copyFile(e,s){this.ensureDirectoryExistence(s),L.default.copyFileSync(e,s)}copyFolder(e,s){L.default.existsSync(s)||L.default.mkdirSync(s,{recursive:!0}),L.default.readdirSync(e).forEach(i=>{let n=I.default.join(e,i),o=I.default.join(s,i);L.default.statSync(n).isDirectory()?this.copyFolder(n,o):this.copyFile(n,o)})}apply(e){let s=I.default.dirname(this.options.manifestPath),r=I.default.join(s,"public"),i=e.options.output?.path||"";L.default.existsSync(r)&&(e.hooks.afterEmit.tap("special-folders:copy-public-folder",()=>{let n=I.default.join(i,"public");L.default.existsSync(n)||L.default.mkdirSync(n,{recursive:!0}),L.default.existsSync(r)&&this.copyFolder(r,n)}),e.options.mode!=="production"&&e.hooks.afterPlugins.tap("special-folders:copy-public-folder",()=>{let n=I.default.join(s,"public"),o=Wo.default.watch(n,{ignoreInitial:!0});o.on("add",c=>{let p=I.default.join(i,I.default.relative(s,c));this.copyFile(c,p)}),o.on("change",c=>{let p=I.default.join(i,I.default.relative(s,c));this.copyFile(c,p)}),o.on("unlink",c=>{let p=I.default.join(i,I.default.relative(s,c));L.default.existsSync(p)&&L.default.unlinkSync(p)}),e.hooks.watchClose.tap("special-folders:copy-public-folder",()=>{o.close().catch(console.error)})}))}};var N=a(require("path")),lr=a(require("chokidar"));var as=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,s,r){let i=N.relative(process.cwd(),s),p=ii(r?"Adding":"Removing",r?"added":"removed",e,e==="pages"?"HTML pages":"script files",i);if(r){console.warn(p);return}console.error(p),process.exit(1)}apply(e){e.hooks.afterPlugins.tap("special-folders:warn-upon-folder-changes",()=>{let s=N.dirname(this.manifestPath),r=N.join(s,"pages"),i=N.join(s,"scripts"),n=lr.watch(r,{ignoreInitial:!0}),o=lr.watch(i,{ignoreInitial:!0}),c=e.options.resolve?.extensions;n.on("add",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p,!0)}),n.on("unlink",p=>{p.endsWith(".html")&&this.throwCompilationError("pages",p)}),o.on("add",p=>{c?.includes(N.extname(p))&&this.throwCompilationError("scripts",p,!0)}),o.on("unlink",p=>{c?.includes(N.extname(p))&&this.throwCompilationError("scripts",p)}),e.hooks.watchClose.tap("WarnUponFolderChanges",()=>{n.close().catch(console.error),o.close().catch(console.error)})})}};var cs=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 as(s).apply(e)}};var ps=class{static name="plugin-extension";manifestPath;browser;mode;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.mode=e.mode}apply(e){let s=this.manifestPath,r=An({manifestPath:s}),i=Mn({manifestPath:s});new vt({manifestPath:s,includeList:{...i?.pages||{},...i?.scripts||{}},excludeList:i.public,loaderOptions:{jsx:me(Te.default.dirname(this.manifestPath))||X(Te.default.dirname(this.manifestPath))||$e(Te.default.dirname(this.manifestPath)),typescript:R(Te.default.dirname(this.manifestPath)),minify:this.mode==="production"}}).apply(e),new It({browser:this.browser,manifestPath:s,includeList:{...r.html,...r.icons,...r.json,...r.scripts},excludeList:i.public}).apply(e),new zt({manifestPath:s,includeList:{...r.html,...i.pages},excludeList:{...i.public,...i.scripts}}).apply(e),new Xt({manifestPath:s,browser:this.browser,includeList:{...r.scripts,...i.scripts},excludeList:{...i.public,...i.pages}}).apply(e),new Yt({manifestPath:s}).apply(e),new Qt({manifestPath:s,includeList:r.json,excludeList:i.public}).apply(e),new rs({manifestPath:s,includeList:r.icons,excludeList:i.public}).apply(e),new is({manifestPath:s,includeList:{...r.scripts,...i.scripts},excludeList:i.public}).apply(e),new cs({manifestPath:s}).apply(e)}};var qe=a(require("path"));var Bo=a(require("path")),Jo=a(require("ws")),fs=a(require("browser-extension-manifest-fields"));function ls(t,e){t.clients.forEach(s=>{s.readyState===Jo.default.OPEN&&s.send(JSON.stringify(e))})}function zo(t,e,s){if(!s||!e)return;let r=(0,fs.default)(e).locales,i=(0,fs.default)(e).scripts,n=(0,fs.default)(e).json;if(!t){process.env.EXTENSION_ENV==="development"&&console.error("WebSocket server is not running.");return}Bo.default.basename(s)==="manifest.json"&&ls(t,{changedFile:"manifest.json"}),r?.forEach(o=>{o.includes(s)&&ls(t,{changedFile:"_locales"})}),Object.entries(i).forEach(([o,c])=>{let p=Array.isArray(c)?c:[c];Object.values(p).flatMap(u=>u).includes(s)&&o==="background/service_worker"&&ls(t,{changedFile:"service_worker"})}),Object.entries(n).forEach(([o,c])=>{c?.includes(s)&&o==="declarative_net_request"&&ls(t,{changedFile:"declarative_net_request"})})}var ur=a(require("path")),Xo=a(require("fs")),Ne=a(require("ws"));var Re=a(require("path")),il=a(require("http")),Vo=a(require("https")),fr=a(require("fs"));var Ho=t=>{if(!fr.default.existsSync(t))return;let e=Re.default.basename(t);return fr.default.readFileSync(Re.default.join(__dirname,"certs",e))};function Go(t,e){let s={key:Ho(Re.default.join(__dirname,"certs","localhost.key")),cert:Ho(Re.default.join(__dirname,"certs","localhost.cert"))},r=Vo.default.createServer(s,(i,n)=>{n.writeHead(200),n.end()});return r.on("error",i=>{throw console.error(fi(t,e)),new Error(i.message)}),{server:r,port:e}}function nl(t,e,s){switch(s){case"chrome":return new Ne.default.Server({host:"localhost",port:e});case"edge":return new Ne.default.Server({host:"localhost",port:e+1});case"firefox":return new Ne.default.Server({server:Go(t,e+2).server});default:return new Ne.default.Server({host:"localhost",port:8888})}}async function Zo(t,e){let s=t.options.context||"",r=require(ur.default.join(s,"manifest.json")),i=r.name||"Extension.js",n=e.port||8e3,o=nl(i,n,e.browser);if(o.on("connection",c=>{c.send(JSON.stringify({status:"serverReady"})),c.on("error",p=>{console.log(ai(i,p))}),c.on("message",p=>{let l=JSON.parse(p.toString());if(l.status==="clientReady"){let u=require(ur.default.join(s,"manifest.json"));setTimeout(()=>{console.log(Bs(u,e.browser,l)),console.log("")},2500),bi(e.browser)&&setTimeout(()=>{console.log(oi(e.browser))},5e3)}})}),e.browser==="firefox"&&!Xo.default.existsSync(Xe)){let c=wi(r);console.log(Bs(r,e.browser,c)),console.log(""),console.log(li()),console.log("")}return o}var Yo=a(require("path")),mr=a(require("fs"));function Ko(t,e){let s=Yo.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let r=mr.default.readFileSync(s,"utf8"),i=r.replace(/__RELOAD_PORT__/g,e.toString());i!==r&&mr.default.writeFileSync(s,i,"utf8")}catch(r){console.error(`Error processing file: ${r.message}`)}}process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Ue=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;Ko(this.browser,this.port);let s=await Zo(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,i)=>{let o=(r.modifiedFiles||new Set).values().next().value;if(!o){i();return}let c=qe.default.relative(qe.default.dirname(this.manifestPath),o),p=qe.default.relative(process.cwd(),qe.default.dirname(o));process.env.EXTENSION_ENV==="development"&&console.info(`\u25BA\u25BA Updated file \`${c}\` (relative to ${p})`),this.manifestPath&&zo(s,this.manifestPath,o),i()})}};var dr=a(require("path"));function Qo(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[dr.default.dirname(s)],exclude:/node_modules/,use:[{loader:dr.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:s,browser:e}}]})}var gr=a(require("path"));function ea(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[gr.default.dirname(s)],exclude:/node_modules/,use:[{loader:gr.default.resolve(__dirname,"./inject-firefox-client-loader"),options:{manifestPath:s,browser:e}}]})}var ms=require("webpack");var hr=a(require("content-security-policy-parser"));function ta(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,hr.default)(e);e="",s.get("script-src")||s.set("script-src",["'self' 'unsafe-eval' blob: filesystem:"]),s.get("script-src")?.includes("'unsafe-eval'")||s.set("script-src",["unsafe-eval"]);for(let r in s)e+=`${r} ${s.get(r)?.join(" ")};`;return e}function sa(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self'; "};let s=(0,hr.default)(e.extension_pages||""),r="";for(let i in s)r+=`${i} ${s.get(i)?.join(" ")}; `;return{extension_pages:r.trim()}}function ra(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 i of e)r.has(i)||r.add(i);return Array.from(r)}function ia(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function yr(t,e){return t.background?{background:{...t.background}}:e==="firefox"?{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 br(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 us=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}generateManifestPatches(e){let s=G(e,this.manifestPath),r={...s,content_security_policy:s.manifest_version===3?sa(s):ta(s),...s.manifest_version===3?s.permissions?{permissions:[...new Set(["scripting",...s.permissions])]}:{permissions:["scripting"]}:{},...yr(s,this.browser),...br(s),web_accessible_resources:s.manifest_version===3?ia(s):ra(s)},i=JSON.stringify(r,null,2),n=new ms.sources.RawSource(i);e.getAsset("manifest.json")&&e.updateAsset("manifest.json",n)}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:ms.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},r=>{if(!this.manifestPath){let i="No manifest.json found in your extension bundle. Unable to patch manifest.json.";s&&e.webpack.WebpackError&&s.errors.push(new e.webpack.WebpackError(`run-chromium: ${i}`));return}this.generateManifestPatches(s)})})}};var wr=a(require("fs")),we=a(require("path")),na=a(require("webpack-target-webextension"));var ds=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}handleBackground(e,s,r){let i=we.default.resolve(__dirname,s==="firefox"?"minimum-firefox-file.mjs":"minimum-chromium-file.mjs"),n=we.default.dirname(this.manifestPath),o=r.background;if(s==="firefox"){o=r["gecko:background"]||r["firefox:background"]||o;let c=o?.scripts||o?.["gecko:scripts"]||o?.["firefox:scripts"];if(c&&c.length>0){let p=we.default.join(n,c[0]);this.ensureFileExists(p,"background.scripts")}else this.addDefaultEntry(e,"background/script",i)}else if(o=r["chromium:background"]||r["chrome:background"]||r["edge:background"]||o,r.manifest_version===3){let c=o?.service_worker||o?.["chromium:service_worker"]||o?.["chrome:service_worker"]||o?.["edge:service_worker"];if(c){let p=we.default.join(n,c);this.ensureFileExists(p,"background.service_worker")}else this.addDefaultEntry(e,"background/service_worker",i)}else if(r.manifest_version===2){let c=o?.scripts||o?.["chromium:scripts"]||o?.["chrome:scripts"]||o?.["edge:scripts"];if(c&&c.length>0){let p=we.default.join(n,c[0]);this.ensureFileExists(p,"background.scripts")}else this.addDefaultEntry(e,"background/script",i)}}ensureFileExists(e,s){if(!wr.default.existsSync(e)&&this.manifestPath){let i=require(this.manifestPath).name||"Extension.js",n=ci(i,s,e);throw console.error(n),new Error(n)}}addDefaultEntry(e,s,r){e.options.entry={...e.options.entry,[s]:{import:[r]}}}getEntryName(e){if(e.background){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||!wr.default.lstatSync(this.manifestPath).isFile())return;let s=require(this.manifestPath);this.handleBackground(e,this.browser,s),new na.default({background:this.getEntryName(s),weakRuntimeCheck:!0}).apply(e)}};var xr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){Se.includes(this.browser)&&Qo(e,this.browser,this.manifestPath),this.browser==="firefox"&&ea(e,this.browser,this.manifestPath),new us({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new ds({manifestPath:this.manifestPath,browser:this.browser}).apply(e)}},oa=xr;var gs=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 Ue({manifestPath:this.manifestPath,browser:this.browser,port:this.port,stats:this.stats}).apply(e),e.options.mode==="development"&&new oa({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var aa=a(require("webpack")),hs=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new aa.default.ProvidePlugin({browser:require.resolve("webextension-polyfill")}).apply(e)}};var bs=require("webpack");var ys=class{browser;manifestPath;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}patchManifest(e){let s=rt(e,this.browser);return JSON.stringify(s,null,2)}apply(e){e.hooks.compilation.tap("compatibility:browser-fields",s=>{s.hooks.processAssets.tap({name:"compatibility:browser-fields",stage:bs.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE},()=>{let r=G(s,this.manifestPath),i=this.patchManifest(r),n=new bs.sources.RawSource(i);s.updateAsset("manifest.json",n)})})}};var ws=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 hs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new ys({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e)}};var ba=a(require("fs"));var ca=a(require("webpack")),pa=a(require("content-security-policy-parser"));function la(t){let e=t.content_security_policy,s=t.content_security_policy?.extension_pages,r=i=>{if(!i)return;let n=(0,pa.default)(i);if(n.get("script-src")&&n.get("script-src")?.includes("'unsafe-eval'")){let o=t.name||"Extension.js";return Hr(o)}};if(t.manifest_version===3){let i=e?r(s):void 0;if(i)return new ca.default.WebpackError(i)}return null}var vr=a(require("webpack"));function fa(t,e){let s=t.web_accessible_resources;if(s){let r=s.some(o=>typeof o=="string"),i=s.some(o=>typeof o=="object"||o.resources||o.matches),n=t.name||"Extension.js";if(t.manifest_version===2&&!r)return new vr.default.WebpackError(Gr(n,e));if(t.manifest_version===3&&!i)return new vr.default.WebpackError(Xr(n,e))}return null}var ua=a(require("webpack"));function ma(t,e){if(e==="firefox"&&t.background?.service_worker){let s=t.name||"Extension.js";return new ua.default.WebpackError(zr(s))}return null}var da=a(require("path")),ga=a(require("fs")),ha=a(require("webpack"));function ya(t,e){let s=da.default.join(e.options.context||"","_locales"),r=t.name||"Extension.js";return ga.default.existsSync(s)&&!t.default_locale?new ha.default.WebpackError(Vr(r)):null}var xs=class{options;constructor(e){this.options=e}handleRuntimeErrors(e,s,r){let i=la(s),n=fa(s,r),o=ma(s,r),c=ya(s,e);i&&e.errors.push(i),n&&e.errors.push(n),o&&e.options.mode==="production"&&e.errors.push(o),c&&e.errors.push(c)}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(s,r)=>{let i=this.options.manifestPath,n=JSON.parse(ba.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleRuntimeErrors(s,n,o),r()})}};var Ca=a(require("fs")),Da=a(require("ajv"));var wa={$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 xa(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 va=a(require("path")),_a=require("webpack");function Sa(t,e,s){let r=t.options.context||"",i=va.default.join(r,"manifest.json"),o=require(i).name||"Extension.js",c=e?.params.missingProperty;t.errors.push(new _a.WebpackError(Kr(o,s,c)))}var Pa=a(require("path")),ka=require("webpack");function Ea(t,e,s){let r=t.options.context||"",i=Pa.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new ka.WebpackError(Yr(o,e,s)))}var ja=a(require("path")),$a=require("webpack");function _r(t,e,s){let r=t.options.context||"",i=ja.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new $a.WebpackError(Zr(o,s,e)))}var vs=class{options;constructor(e){this.options=e}handleSchemaErrors(e,s,r){let i=new Da.default;xa(i);let n={allOf:[wa]},o=i.compile(n),c=o(s),p=s.manifest_version===3;if(!c&&o.errors){let l=o.errors[0];if(l?.keyword==="required"){Sa(e,l,r);return}p&&(l?.keyword==="type"&&Ea(e,l,r),l?.keyword==="not"&&_r(e,l,r))}}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(s,r)=>{let i=this.options.manifestPath,n=JSON.parse(Ca.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleSchemaErrors(s,n,o),r()})}};var Ia=a(require("fs")),Pr=a(require("path"));var Sr=a(require("webpack"));function Fa(t,e){let s="Conflict: Multiple assets emit different content to the same filename ";if(e.message.includes(s)){let r=e.message.replace(s,"");if(r.startsWith("content_scripts"))return new Sr.default.WebpackError(Qr(t,r))}return null}function La(t,e){let s=require(t);return e.message.includes("Top-level-await is only supported in EcmaScript Modules")?new Sr.default.WebpackError(ei(s.name)):null}var _s=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=Pr.default.join(Pr.default.dirname(this.manifestPath),"package.json");if(!Ia.default.existsSync(s))return;let r=require(s).name;e.hooks.compilation.tap("develop:common-errors",i=>{i.hooks.afterSeal.tapAsync("develop:common-errors",n=>{i.errors.forEach((o,c)=>{let p=Fa(r,o),l=La(r,o);p&&(i.errors[c]=p),l&&(i.errors[c]=l)}),n()})})}};var Ss=class{static name="plugin-errors";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new xs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new vs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new _s({manifestPath:this.manifestPath}).apply(e)}};var wc=a(require("os")),Er=a(require("path"));var sc=a(require("fs")),rc=require("child_process");var ie=a(require("path")),$s=a(require("fs"));var Oa={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}},Aa={...Oa},Ma={...Oa};var x=require("@colors/colors/safe");function j(t,e){let s=e==="warn"?(0,x.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,x.cyan)("\u25BA\u25BA\u25BA"):e==="error"?(0,x.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,x.brightGreen)("\u25BA\u25BA\u25BA");return`${(0,x.gray)("")}${s}`}function We(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Ps(t,e){let s=t==="firefox"?"Add-on":"Extension";return`${j(t,"success")} ${We(t)} ${s} running in ${(0,x.cyan)(e||"unknown")} mode.`}function ks(t,e){let s=We(t),r=e=="null"?`${s} browser is not installed.
125
125
 
126
126
  `:`Path to ${s} browser is not found.
127
127
 
128
128
  ${(0,x.red)("NOT FOUND")} ${(0,x.underline)(e)}
129
129
 
130
- `;return`${E(t,"error")} ${r}Either install the ${s} or choose a different browser via ${(0,x.brightYellow)("--browser")} flag.`}function Es(t){let e=Be(t);return`${E(t,"info")} Creating new ${e} user profile...`}function Aa(t){return`${E(t,"success")} Instance already running.`}function Ma(t){return`${E(t,"info")} Instance exited.`}function Ta(t){return`${E(t,"error")} No Service Worker Support
130
+ `;return`${j(t,"error")} ${r}Either install the ${s} or choose a different browser via ${(0,x.brightYellow)("--browser")} flag.`}function Es(t){let e=We(t);return`${j(t,"info")} Creating new ${e} user profile...`}function Ta(t){return`${j(t,"success")} Instance already running.`}function Ra(t){return`${j(t,"info")} Instance exited.`}function Na(t){return`${j(t,"error")} No Service Worker Support
131
131
 
132
132
  Firefox does not support the ${(0,x.brightYellow)("background.service_worker")} field yet.
133
133
  Update your manifest.json file to use ${(0,x.brightYellow)("background.scripts")} instead.
134
134
 
135
- Read more: ${(0,x.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function Ra(t,e){return`${E(t,"error")} Error launching ${Be(t)}. Error:
135
+ Read more: ${(0,x.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function qa(t,e){return`${j(t,"error")} Error launching ${We(t)}. Error:
136
136
 
137
- ${(0,x.red)(e)}`}function Na(t,e){return`${E(t,"error")} ${(0,x.red)(e.stack)}`}function qa(t){return`${E(t,"error")} Unable to connect to ${Be(t)}. Too many retries.`}function Ua(t,e){return`${E(t,"error")} Error while installing temporary addon: ${(0,x.red)(e)}`}function Wa(t,e){return`${E(t,"error")} The path is not a directory.
137
+ ${(0,x.red)(e)}`}function Ua(t,e){return`${j(t,"error")} ${(0,x.red)(e.stack)}`}function Wa(t){return`${j(t,"error")} Unable to connect to ${We(t)}. Too many retries.`}function Ba(t,e){return`${j(t,"error")} Error while installing temporary addon: ${(0,x.red)(e)}`}function Ja(t,e){return`${j(t,"error")} The path is not a directory.
138
138
 
139
139
  ${(0,x.gray)("PATH")} ${(0,x.underline)(e)}
140
140
 
141
- Please provide a valid directory path.`}function Ba(t){return`${E(t,"error")} Error parsing message length.`}function Ja(t){return`${E(t,"error")} MessagingClient connection closed.`}function za(t,e){return`${E(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Ha(t){return`${E(t,"error")} MessagingClient connection closed.`}function Va(t,e){return`${E(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Ga(t,e){return`${E(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Xa(t,e){return`${E(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Za(t,e){return`${E(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var Ya=a(require("progress"));function js(t,e){let r=new Ya.default(`${t} [:bar] :percent :etas`,{complete:"=",incomplete:" ",width:50,total:131072}),i=setInterval(()=>{let n=Math.random()*10*1024;r.tick(n),r.complete&&(clearInterval(i),e())},50)}function Ka(t,e,s){if($s.default.existsSync(re.default.resolve(__dirname,`run-${t}-profile`)))return e||re.default.resolve(__dirname,`run-${t}-profile`);let i=JSON.stringify(t==="chrome"?Ia:Oa);return s||js(Es(t),()=>{let n=re.default.resolve(__dirname,`run-${t}-profile`),o=re.default.join(n,"Default");$s.default.mkdirSync(o,{recursive:!0});let c=re.default.join(o,"Preferences");$s.default.writeFileSync(c,i,"utf8")}),re.default.resolve(__dirname,`run-${t}-profile`)}function Qa(t){let e=Array.isArray(t.extension)?t.extension:[t.extension],s=Ka(t.browser,t.profile,!1);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","--no-first-run","--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;userDataDir;profile;preferences;startingUrl;autoReload;stats;constructor(e){this.extension=e.extension,this.browser=e.browser,this.browserFlags=e.browserFlags||[],this.userDataDir=e.userDataDir,this.profile=e.profile||e.userDataDir,this.preferences=e.preferences,this.startingUrl=e.startingUrl}launchChromium(e){let s;switch(e){case"chrome":s=require(`${e}-location`);break;case"edge":s=require(`${e}-location`)();break;default:s=require(`${e}`);break}ec.default.existsSync(s)||(console.error(ks(e,s)),process.exit());let r=Qa(this),i=this.startingUrl?[this.startingUrl,...r]:[...r],n=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,tc.spawn)(s,i,{stdio:n});process.env.EXTENSION_ENV==="development"&&(o.stdout?.pipe(process.stdout),o.stderr?.pipe(process.stderr))}apply(e){let s=!1;e.hooks.done.tapAsync("run-browsers:module",(r,i)=>{if(r.compilation.errors.length>0){i();return}if(s){i();return}this.launchChromium(this.browser),setTimeout(()=>{console.log(Ps(this.browser,r.compilation.options.mode))},2e3),s=!0,i()})}};var gc=a(require("fs")),hc=require("child_process");var Je=a(require("fs")),Cs=a(require("path")),sc=a(require("os")),rc=a(require("which")),ic=process.platform==="darwin",Kp=process.platform==="win32",Qp=!ic&&!Kp;function el(){if(Qp)try{return rc.default.sync("firefox")}catch{return null}else if(ic){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=Cs.default.join(sc.default.homedir(),t.slice(1));return Je.default.existsSync(t)?t:Je.default.existsSync(e)?e:null}else{let t=Cs.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 i=Cs.default.join(r,t);if(Je.default.existsSync(i))return i}let s=["C:\\Program Files\\Mozilla Firefox\\firefox.exe","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"];for(let r of s)if(Je.default.existsSync(r))return r;return null}}var Ds=el();var oc=a(require("path")),Fs=a(require("fs")),Pr=a(require("firefox-profile"));var tl={"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 nc(t){return{...tl,...t}}function ac(t,e){let s=nc(e);Object.keys(s).forEach(n=>{t.setPreference(n,s[n])});let i=Object.keys(e);return i.length>0&&i.forEach(n=>{t.setPreference(n,e[n])}),t.updatePreferences(),t}function sl(t,e){let s=new Pr.default({destinationDirectory:t});return ac(s,e)}function rl(t,e,s){let r;if(Fs.default.statSync(e).isDirectory())r=e;else throw new Error(Wa(t,e));let n=new Pr.default({destinationDirectory:r});return ac(n,s)}function cc(t,e,s,r){let i,n=e||oc.default.resolve(__dirname,"run-firefox-data-dir");return Fs.default.existsSync(n)?i=rl(t,n,s||{}):(r||js(Es(t),()=>{}),Fs.default.mkdirSync(n,{recursive:!0}),i=sl(n,s||{})),i}async function pc(t,e){let{browser:s,startingUrl:r,preferences:i,userDataDir:n,browserConsole:o=!1,browserFlags:c=[]}=e,p=cc(s,n,i),l=[];r&&l.push(`--url "${r}"`),o&&l.push("--jsconsole"),c&&l.push(...c);let f=t.options.devServer?.port?t.options.devServer?.port+100:9222;return[`--binary-args "${c.join(" ")}"`,`--profile "${p.path()}"`,`--listen ${f}`,"--verbose"].join(" ")}var dc=a(require("path"));var lc=a(require("net")),uc=a(require("events"));function il(t,e){let s=e.toString(),r=s.indexOf(":");if(r<1)return{remainingData:e};let i=parseInt(s.substring(0,r),10);if(isNaN(i))return{remainingData:e,error:new Error(Ba(t)),fatal:!0};if(e.length-(r+1)<i)return{remainingData:e};let n=e.slice(r+1,r+1+i),o=e.slice(r+1+i);try{let c=JSON.parse(n.toString());return{remainingData:o,parsedMessage:c}}catch(c){return{remainingData:o,error:c,fatal:!1}}}var Ls=class extends uc.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((s,r)=>{try{let i={port:e,host:"127.0.0.1"},n=lc.default.createConnection(i,()=>{s()});this.connection=n,n.on("data",this.onData.bind(this)),n.on("error",r),n.on("end",this.onEnd.bind(this)),n.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:s,reject:r})}catch(i){r(i)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(Ja("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(za("firefox",s.type));return await new Promise((r,i)=>{let n={resolve:r,reject:i};this.pendingRequests.push({request:s,deferred:n}),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(Ha("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(Va("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:i}=il("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Ga("firefox",r))),i&&this.disconnect(),!i):s?(this.handleMessage(s),!0):!1}handleMessage(e){if(!e.from){this.emit("error",new Error(Xa("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(Za("firefox",JSON.stringify(e))))}onError(e){this.emit("error",e)}onEnd(){this.emit("end")}onTimeout(){this.emit("timeout")}};function fc(t){return t instanceof Error?String(t):`${t.error}: ${t.message}`}function mc(t,e){return Array.isArray(t)&&t.includes(e.code)?!0:e.code===t}var nl=150,ol=1e3,Is=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:nl}))try{let i=new Ls;return await i.connect(e),i}catch(i){if(mc("ECONNREFUSED",i))await new Promise(n=>setTimeout(n,ol)),s=i;else throw console.error(Na(this.options.browser,i.stack)),i}throw console.error(qa(this.options.browser)),s}async installAddons(e){let{devtools:s}=this.options,r=Array.isArray(this.options.extension)?this.options.extension:[this.options.extension],i=e.options.devServer?.port,n=i?i+100:9222,o=await this.connectClient(n);for(let[c,p]of r.entries()){let l=dc.default.join(p.replace(/"/g,"")),f=c===0&&s;try{let d=await o.request({to:"root",type:"getRoot"});await o.request({to:d.addonsActor,type:"installTemporaryAddon",addonPath:l,openDevTools:f})}catch(d){let h=fc(d);throw new Error(Ua(this.options.browser,h))}}}};var ie=null;process.on("SIGINT",()=>{ie&&ie.kill("SIGINT"),process.exit()});process.on("SIGTERM",()=>{ie&&ie.kill("SIGTERM"),process.exit()});var Os=class{extension;browser;browserFlags;userDataDir;profile;preferences;startingUrl;autoReload;stats;constructor(e){this.extension=e.extension,this.browser=e.browser||"firefox",this.browserFlags=e.browserFlags||[],this.userDataDir=e.userDataDir,this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl}async launchFirefox(e){let s=`fx-runner start --binary "${Ds}" --foreground --no-remote`;gc.default.existsSync(Ds)||(console.error(ks(this.browser,Ds)),process.exit());let r=await pc(e,this),i=`${s} ${r}`;ie=(0,hc.exec)(i,(o,c,p)=>{if(o!=null)throw o;p.includes("Unable to move the cache")?console.log(Aa(this.browser)):(console.log(Ma(this.browser)),process.exit())}),process.env.EXTENSION_ENV==="development"&&(ie.stdout?.pipe(process.stdout),ie.stderr?.pipe(process.stderr));let n=new Is(this);try{await n.installAddons(e)}catch(o){o?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(Ta(this.browser)),process.exit(1)),console.error(Ra(this.browser,o)),process.exit(1)}}apply(e){let s=!1;e.hooks.done.tapAsync("run-firefox:module",async(r,i)=>{if(r.compilation.errors.length>0){i();return}if(s){i();return}setTimeout(()=>{console.log(Ps(this.browser,r.compilation.options.mode))},2e3),await this.launchFirefox(e),s=!0,i()})}};var As=class{static name="plugin-browsers";extension;browser;browserFlags;userDataDir;profile;preferences;startingUrl;constructor(e){this.extension=[...e.extension,...e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[]],this.browser=e.browser,this.browserFlags=e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[],this.userDataDir=e.userDataDir,this.profile=e.profile||"",this.preferences=e.preferences||{},this.startingUrl=e.startingUrl||""}getProfilePath(e,s,r){return r||(e.options.mode==="production"?kr.default.join(yc.default.tmpdir(),"extension-js",s,"profile"):kr.default.resolve(__dirname,`run-${s}-profile`))}apply(e){let s={stats:!0,extension:this.extension,browser:this.browser,browserFlags:this.browserFlags||[],userDataDir:this.getProfilePath(e,this.browser,this.userDataDir||this.profile)};switch(this.browser){case"chrome":{new ve({...s,browser:"chrome"}).apply(e);break}case"edge":new ve({...s,browser:"edge"}).apply(e);break;case"firefox":new Os({...s,browser:"firefox"}).apply(e);break;default:{new ve({...s,browser:this.browser}).apply(e);break}}}};function B(t,e){let s=ze.default.join(t,"manifest.json"),r=ze.default.join(t,`dist/${e.browser}`),i=require(s);return{mode:e.mode||"development",entry:{},target:"web",context:t,devtool:i.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:{keep(n){return!n.startsWith("hot/background")}},path:r,publicPath:"/",hotUpdateChunkFilename:"hot/[id].[fullhash].hot-update.js",hotUpdateMainFilename:"hot/[runtime].[fullhash].hot-update.json",environment:{bigIntLiteral:!0,dynamicImport:!0}},resolve:{modules:["node_modules",ze.default.join(t,"node_modules")],extensions:[".js",".mjs",".jsx",".ts",".mts",".tsx",".json",".wasm",".less",".css",".sass",".scss"]},watchOptions:{ignored:/node_modules|dist/},module:{rules:[]},plugins:[new et({manifestPath:s}),new lt({manifestPath:s,mode:e.mode}),new pt({manifestPath:s,mode:e.mode}),new gt({manifestPath:s,mode:e.mode}),process.env.EXTENSION_ENV==="development"&&new Ss({manifestPath:s,browser:e.browser}),new ws({manifestPath:s,browser:e.browser,polyfill:e.polyfill}),new ps({manifestPath:s,browser:e.browser,mode:e.mode}),new gs({manifestPath:s,browser:e.browser,stats:!0,port:e.port||8e3}),!e.noOpen&&new As({extension:[r,ze.default.join(__dirname,"extensions",`${e.browser}-manager-extension`)],browser:e.browser,startingUrl:e.startingUrl,profile:e.profile||e.userDataDir,preferences:e.preferences,browserFlags:e.browserFlags})].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 oe=a(require("path")),Jc=a(require("go-git-it"));var He=a(require("path")),Ms=a(require("fs")),m=require("@colors/colors/safe");function j(t){return`${t==="warn"?(0,m.brightYellow)("\u25BA\u25BA\u25BA"):t==="info"?(0,m.magenta)("\u25BA\u25BA\u25BA"):t==="error"?(0,m.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,m.brightGreen)("\u25BA\u25BA\u25BA")}`}function K(){return`${j("error")} Manifest file not found. Ensure the path to your extension exists and try again.`}function Ts(t){let e=t==="firefox"?"Add-on":"Extension";return`${j("info")} Building ${ne(t)} ${e} package...`}function Rs(t,e){let s=He.default.join(t,"dist",e.browser||"chrome"),r=He.default.join(s,"manifest.json"),i=require(r),{name:n,version:o,hostPermissions:c,permissions:p}=i,l=bc(t,i).defaultLocale,f=bc(t,i).otherLocales.join(", "),d=`${l} ${f&&", "+f}`,h=c&&c.length,y=p&&p.length,$=qs().version;return`
141
+ Please provide a valid directory path.`}function za(t){return`${j(t,"error")} Error parsing message length.`}function Ha(t){return`${j(t,"error")} MessagingClient connection closed.`}function Va(t,e){return`${j(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Ga(t){return`${j(t,"error")} MessagingClient connection closed.`}function Xa(t,e){return`${j(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Za(t,e){return`${j(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Ya(t,e){return`${j(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Ka(t,e){return`${j(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var Qa=a(require("progress"));function js(t,e){let r=new Qa.default(`${t} [:bar] :percent :etas`,{complete:"=",incomplete:" ",width:50,total:131072}),i=setInterval(()=>{let n=Math.random()*10*1024;r.tick(n),r.complete&&(clearInterval(i),e())},50)}function ec(t,e,s){if($s.default.existsSync(ie.default.resolve(__dirname,`run-${t}-profile`)))return e||ie.default.resolve(__dirname,`run-${t}-profile`);let i=JSON.stringify(t==="chrome"?Aa:Ma);return s||js(Es(t),()=>{let n=ie.default.resolve(__dirname,`run-${t}-profile`),o=ie.default.join(n,"Default");$s.default.mkdirSync(o,{recursive:!0});let c=ie.default.join(o,"Preferences");$s.default.writeFileSync(c,i,"utf8")}),ie.default.resolve(__dirname,`run-${t}-profile`)}function tc(t){let e=Array.isArray(t.extension)?t.extension:[t.extension],s=ec(t.browser,t.profile,!1);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","--no-first-run","--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;userDataDir;profile;preferences;startingUrl;autoReload;stats;constructor(e){this.extension=e.extension,this.browser=e.browser,this.browserFlags=e.browserFlags||[],this.userDataDir=e.userDataDir,this.profile=e.profile||e.userDataDir,this.preferences=e.preferences,this.startingUrl=e.startingUrl}launchChromium(e){let s;switch(e){case"chrome":s=require(`${e}-location`);break;case"edge":s=require(`${e}-location`)();break;default:s=require(`${e}`);break}sc.default.existsSync(s)||(console.error(ks(e,s)),process.exit());let r=tc(this),i=this.startingUrl?[this.startingUrl,...r]:[...r],n=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,rc.spawn)(s,i,{stdio:n});process.env.EXTENSION_ENV==="development"&&(o.stdout?.pipe(process.stdout),o.stderr?.pipe(process.stderr))}apply(e){let s=!1;e.hooks.done.tapAsync("run-browsers:module",(r,i)=>{if(r.compilation.errors.length>0){i();return}if(s){i();return}this.launchChromium(this.browser),setTimeout(()=>{console.log(Ps(this.browser,r.compilation.options.mode))},2e3),s=!0,i()})}};var yc=a(require("fs")),bc=require("child_process");var Be=a(require("fs")),Cs=a(require("path")),ic=a(require("os")),nc=a(require("which")),oc=process.platform==="darwin",al=process.platform==="win32",cl=!oc&&!al;function pl(){if(cl)try{return nc.default.sync("firefox")}catch{return null}else if(oc){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=Cs.default.join(ic.default.homedir(),t.slice(1));return Be.default.existsSync(t)?t:Be.default.existsSync(e)?e:null}else{let t=Cs.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 i=Cs.default.join(r,t);if(Be.default.existsSync(i))return i}let s=["C:\\Program Files\\Mozilla Firefox\\firefox.exe","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"];for(let r of s)if(Be.default.existsSync(r))return r;return null}}var Ds=pl();var cc=a(require("path")),Fs=a(require("fs")),kr=a(require("firefox-profile"));var ll={"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 ac(t){return{...ll,...t}}function pc(t,e){let s=ac(e);Object.keys(s).forEach(n=>{t.setPreference(n,s[n])});let i=Object.keys(e);return i.length>0&&i.forEach(n=>{t.setPreference(n,e[n])}),t.updatePreferences(),t}function fl(t,e){let s=new kr.default({destinationDirectory:t});return pc(s,e)}function ul(t,e,s){let r;if(Fs.default.statSync(e).isDirectory())r=e;else throw new Error(Ja(t,e));let n=new kr.default({destinationDirectory:r});return pc(n,s)}function lc(t,e,s,r){let i,n=e||cc.default.resolve(__dirname,"run-firefox-data-dir");return Fs.default.existsSync(n)?i=ul(t,n,s||{}):(r||js(Es(t),()=>{}),Fs.default.mkdirSync(n,{recursive:!0}),i=fl(n,s||{})),i}async function fc(t,e){let{browser:s,startingUrl:r,preferences:i,userDataDir:n,browserConsole:o=!1,browserFlags:c=[]}=e,p=lc(s,n,i),l=[];r&&l.push(`--url "${r}"`),o&&l.push("--jsconsole"),c&&l.push(...c);let u=t.options.devServer?.port?t.options.devServer?.port+100:9222;return[`--binary-args "${c.join(" ")}"`,`--profile "${p.path()}"`,`--listen ${u}`,"--verbose"].join(" ")}var hc=a(require("path"));var uc=a(require("net")),mc=a(require("events"));function ml(t,e){let s=e.toString(),r=s.indexOf(":");if(r<1)return{remainingData:e};let i=parseInt(s.substring(0,r),10);if(isNaN(i))return{remainingData:e,error:new Error(za(t)),fatal:!0};if(e.length-(r+1)<i)return{remainingData:e};let n=e.slice(r+1,r+1+i),o=e.slice(r+1+i);try{let c=JSON.parse(n.toString());return{remainingData:o,parsedMessage:c}}catch(c){return{remainingData:o,error:c,fatal:!1}}}var Ls=class extends mc.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((s,r)=>{try{let i={port:e,host:"127.0.0.1"},n=uc.default.createConnection(i,()=>{s()});this.connection=n,n.on("data",this.onData.bind(this)),n.on("error",r),n.on("end",this.onEnd.bind(this)),n.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:s,reject:r})}catch(i){r(i)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(Ha("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(Va("firefox",s.type));return await new Promise((r,i)=>{let n={resolve:r,reject:i};this.pendingRequests.push({request:s,deferred:n}),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(Ga("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(Xa("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:i}=ml("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Za("firefox",r))),i&&this.disconnect(),!i):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(Ka("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 dl=150,gl=1e3,Is=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:dl}))try{let i=new Ls;return await i.connect(e),i}catch(i){if(gc("ECONNREFUSED",i))await new Promise(n=>setTimeout(n,gl)),s=i;else throw console.error(Ua(this.options.browser,i.stack)),i}throw console.error(Wa(this.options.browser)),s}async installAddons(e){let{devtools:s}=this.options,r=Array.isArray(this.options.extension)?this.options.extension:[this.options.extension],i=e.options.devServer?.port,n=i?i+100:9222,o=await this.connectClient(n);for(let[c,p]of r.entries()){let l=hc.default.join(p.replace(/"/g,"")),u=c===0&&s;try{let d=await o.request({to:"root",type:"getRoot"});await o.request({to:d.addonsActor,type:"installTemporaryAddon",addonPath:l,openDevTools:u})}catch(d){let g=dc(d);throw new Error(Ba(this.options.browser,g))}}}};var ne=null;process.on("SIGINT",()=>{ne&&ne.kill("SIGINT"),process.exit()});process.on("SIGTERM",()=>{ne&&ne.kill("SIGTERM"),process.exit()});var Os=class{extension;browser;browserFlags;userDataDir;profile;preferences;startingUrl;autoReload;stats;constructor(e){this.extension=e.extension,this.browser=e.browser||"firefox",this.browserFlags=e.browserFlags||[],this.userDataDir=e.userDataDir,this.profile=e.profile,this.preferences=e.preferences,this.startingUrl=e.startingUrl}async launchFirefox(e){let s=`fx-runner start --binary "${Ds}" --foreground --no-remote`;yc.default.existsSync(Ds)||(console.error(ks(this.browser,Ds)),process.exit());let r=await fc(e,this),i=`${s} ${r}`;ne=(0,bc.exec)(i,(o,c,p)=>{if(o!=null)throw o;p.includes("Unable to move the cache")?console.log(Ta(this.browser)):(console.log(Ra(this.browser)),process.exit())}),process.env.EXTENSION_ENV==="development"&&(ne.stdout?.pipe(process.stdout),ne.stderr?.pipe(process.stderr));let n=new Is(this);try{await n.installAddons(e)}catch(o){o?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(Na(this.browser)),process.exit(1)),console.error(qa(this.browser,o)),process.exit(1)}}apply(e){let s=!1;e.hooks.done.tapAsync("run-firefox:module",async(r,i)=>{if(r.compilation.errors.length>0){i();return}if(s){i();return}setTimeout(()=>{console.log(Ps(this.browser,r.compilation.options.mode))},2e3),await this.launchFirefox(e),s=!0,i()})}};var As=class{static name="plugin-browsers";extension;browser;browserFlags;userDataDir;profile;preferences;startingUrl;constructor(e){this.extension=[...e.extension,...e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[]],this.browser=e.browser,this.browserFlags=e.browserFlags?.filter(s=>!s.startsWith("--load-extension="))||[],this.userDataDir=e.userDataDir,this.profile=e.profile||"",this.preferences=e.preferences||{},this.startingUrl=e.startingUrl||""}getProfilePath(e,s,r){return r||(e.options.mode==="production"?Er.default.join(wc.default.tmpdir(),"extension-js",s,"profile"):Er.default.resolve(__dirname,`run-${s}-profile`))}apply(e){let s={stats:!0,extension:this.extension,browser:this.browser,browserFlags:this.browserFlags||[],userDataDir:this.getProfilePath(e,this.browser,this.userDataDir||this.profile)};switch(this.browser){case"chrome":{new ve({...s,browser:"chrome"}).apply(e);break}case"edge":new ve({...s,browser:"edge"}).apply(e);break;case"firefox":new Os({...s,browser:"firefox"}).apply(e);break;default:{new ve({...s,browser:this.browser}).apply(e);break}}}};function J(t,e){let s=Je.default.join(t,"manifest.json"),r=Je.default.join(t,`dist/${e.browser}`),i=require(s);return{mode:e.mode||"development",entry:{},target:"web",context:t,devtool:i.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:{keep(n){return!n.startsWith("hot/background")}},path:r,publicPath:"/",hotUpdateChunkFilename:"hot/[id].[fullhash].hot-update.js",hotUpdateMainFilename:"hot/[runtime].[fullhash].hot-update.json",environment:{bigIntLiteral:!0,dynamicImport:!0}},resolve:{modules:["node_modules",Je.default.join(t,"node_modules")],extensions:[".js",".mjs",".jsx",".ts",".mts",".tsx",".json",".wasm",".less",".css",".sass",".scss"]},watchOptions:{ignored:/node_modules|dist/},module:{rules:[]},plugins:[new et({manifestPath:s}),new lt({manifestPath:s,mode:e.mode}),new pt({manifestPath:s,mode:e.mode}),new gt({manifestPath:s,mode:e.mode}),process.env.EXTENSION_ENV==="development"&&new Ss({manifestPath:s,browser:e.browser}),new ws({manifestPath:s,browser:e.browser,polyfill:e.polyfill}),new ps({manifestPath:s,browser:e.browser,mode:e.mode}),new gs({manifestPath:s,browser:e.browser,stats:!0,port:e.port||8e3}),!e.noOpen&&new As({extension:[r,Je.default.join(__dirname,"extensions",`${e.browser}-manager-extension`)],browser:e.browser,startingUrl:e.startingUrl,profile:e.profile||e.userDataDir,preferences:e.preferences,browserFlags:e.browserFlags})].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 He=a(require("path")),Zc=a(require("go-git-it"));var ze=a(require("path")),Ms=a(require("fs")),m=require("@colors/colors/safe");function S(t){return`${t==="warn"?(0,m.brightYellow)("\u25BA\u25BA\u25BA"):t==="info"?(0,m.magenta)("\u25BA\u25BA\u25BA"):t==="error"?(0,m.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,m.brightGreen)("\u25BA\u25BA\u25BA")}`}function K(){return`${S("error")} Manifest file not found. Ensure the path to your extension exists and try again.`}function Ts(t){let e=t==="firefox"?"Add-on":"Extension";return`${S("info")} Building ${oe(t)} ${e} package...`}function Rs(t,e){let s=ze.default.join(t,"dist",e.browser||"chrome"),r=ze.default.join(s,"manifest.json"),i=require(r),{name:n,version:o,hostPermissions:c,permissions:p}=i,l=xc(t,i).defaultLocale,u=xc(t,i).otherLocales.join(", "),d=`${l} ${u&&", "+u}`,g=c&&c.length,y=p&&p.length,$=Us().version;return`
142
142
  \u{1F9E9} ${(0,m.brightGreen)("Extension.js")} ${(0,m.gray)(`${$}`)}
143
143
  Extension Name ${(0,m.gray)(n)}
144
144
  Extension Version ${(0,m.gray)(o)}
145
145
  Locales ${(0,m.gray)(d)}
146
- Host Permissions ${(0,m.gray)(h?c.join(", "):"Browser defaults")}
146
+ Host Permissions ${(0,m.gray)(g?c.join(", "):"Browser defaults")}
147
147
  Permissions ${(0,m.gray)(y?p.join(", "):"Browser defaults")}
148
- `}function wc(t,e){let s=t==="production"?m.magenta:m.magenta,r=e==="firefox"?"Add-on":"Extension";return`${j("success")} ${ne(e)} ${r} ready for ${s(t||"unknown")}.`}function xc(t,e,s){let r=e?.toJson(),i=He.default.join(t,"manifest.json"),n=JSON.parse(Ms.default.readFileSync(i,"utf8")),o=r?.assets,c=`${j("info")} Building ${(0,m.cyan)(n.name)} extension using ${ne(s)} defaults...
148
+ `}function vc(t,e){let s=t==="production"?m.magenta:m.magenta,r=e==="firefox"?"Add-on":"Extension";return`${S("success")} ${oe(e)} ${r} ready for ${s(t||"unknown")}.`}function _c(t,e,s){let r=e?.toJson(),i=ze.default.join(t,"manifest.json"),n=JSON.parse(Ms.default.readFileSync(i,"utf8")),o=r?.assets,c=`${S("info")} Building ${(0,m.cyan)(n.name)} extension using ${oe(s)} defaults...
149
149
 
150
150
  `,p=`
151
- Build completed in ${((r?.time||0)/1e3).toFixed(2)} seconds.
152
- `,l=`Build Target: ${(0,m.gray)(ne(s))}
153
- `,f=`Build Status: ${e?.hasErrors()?(0,m.red)("Failed"):(0,m.brightGreen)("Success")}
151
+ Build completed in ${((r?.time||0)/1e3).toFixed(2)} seconds.`,l=`Build Target: ${(0,m.gray)(oe(s))}
152
+ `,u=`Build Status: ${e?.hasErrors()?(0,m.red)("Failed"):(0,m.brightGreen)("Success")}
154
153
  `,d=`
155
154
  Version: ${(0,m.gray)(n.version)}
156
- `,h=`Size: ${(0,m.gray)(al(o))}
157
- `,y="";return y+=c,y+=cl(o),y+=d,y+=h,y+=l,y+=f,y+=p,y}function vc(){return`${j("success")} No errors or warnings found. Your extension is ${(0,m.brightGreen)("ready for deployment")}.`}function _c(t,e){return`${j("success")} Fetching data...
155
+ `,g=`Size: ${(0,m.gray)(hl(o))}
156
+ `,y="";return y+=c,y+=yl(o),y+=d,y+=g,y+=l,y+=u,y+=p,y}function Sc(){return`${S("success")} No errors or warnings found. Your extension is ${(0,m.brightGreen)("ready for deployment")}.`}function Pc(t,e){return`${S("info")} Fetching data...
158
157
 
159
- ${(0,m.gray)("URL")} ${(0,m.underline)(`https://github.com/${t}/${e}`)}`}function Sc(t){return`${j("success")} Downloading ${(0,m.cyan)(t)}...`}function Pc(t){return`
160
- ${j("success")} Creating a new browser extension...
158
+ ${(0,m.gray)("URL")} ${(0,m.underline)(`https://github.com/${t}/${e}`)}`}function kc(t){return`${S("info")} Downloading ${(0,m.cyan)(t)}...`}function Ec(t){return`
159
+ ${S("info")} Creating a new browser extension...
161
160
 
162
- ${(0,m.gray)("PATH")} ${(0,m.underline)(`${process.cwd()}/${t}`)}`}function kc(t){return`${j("success")} No ${(0,m.brightYellow)(".gitignore")} found, zipping all the content inside path:
161
+ ${(0,m.gray)("PATH")} ${(0,m.underline)(`${process.cwd()}/${t}`)}`}function jc(t){return`${S("info")} No ${(0,m.brightYellow)(".gitignore")} found, zipping all the content inside path:
163
162
 
164
- ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Ec(t){return`${j("success")} Packaging source files. Files in ${(0,m.brightYellow)(".gitignore")} will be excluded...
163
+ ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function $c(t){return`${S("info")} Packaging source files. Files in ${(0,m.brightYellow)(".gitignore")} will be excluded...
165
164
 
166
- ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}.`}function jc(t){return`${j("success")} Packaging extension distribution files...
165
+ ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}.`}function Cc(t){return`${S("info")} Packaging extension distribution files...
167
166
 
168
- ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function $c(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${e}`)}, Target Browser: ${`${ne(t)}`}
167
+ ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Dc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${e}`)}, Target Browser: ${`${oe(t)}`}
169
168
  ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${s}`)} (source)
170
- ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (distribution)`}function Cc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${t}.${e}`)}, Target Browser: ${`${ne(s)}`}
171
- ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (distribution)`}function Dc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${t}-source.${e}`)}, Target Browser: ${`${ne(s)}`}
172
- ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (source)`}function Fc(t){return`${j("error")} Failed to compress extension package. ${t}`}function Lc(t){return`${j("info")} ${t.name} (v${t.version}) has no type definitions. Writing...`}function Ic(t){return`${j("error")} Failed to write the extension type definition. ${(0,m.red)(t)}`}function Oc(t){return`${j("success")} Downloading extension...
173
-
174
- ${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function Ac(t){return`${j("success")} Unpackaging browser extension...
175
-
176
- ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Mc(){return`${j("success")} Browser extension unpackaged successfully. Compiling...`}function Tc(t){return`${j("error")} Failed to download or extract ZIP file. ${(0,m.red)(t)}`}function ne(t){return t.charAt(0).toUpperCase()+t.slice(1)}function bc(t,e){let s=e.default_locale,r=He.default.join(t,"_locales");if(!Ms.default.existsSync(r))return{defaultLocale:"Browser defaults",otherLocales:[]};let i=Ms.default.readdirSync(r).filter(n=>n!==s);return{defaultLocale:s,otherLocales:i}}function Rc(t){return`${(t/1024).toFixed(2)}KB`}function al(t){let e=0;return t?.forEach(s=>{e+=s.size}),Rc(e)}function Nc(t,e=""){let s="";return Object.keys(t).forEach((r,i,n)=>{let o=i===n.length-1,c=o?"\u2514\u2500":"\u251C\u2500",p=t[r].size?` (${Rc(t[r].size)})`:"";s+=`${(0,m.gray)(e)}${(0,m.gray)(c)} ${r}${(0,m.gray)(p)}
177
- `,typeof t[r]=="object"&&!t[r].size&&(s+=Nc(t[r],`${e}${o?" ":(0,m.gray)("\u2502 ")}`))}),s}function cl(t){let e={};return t?.forEach(s=>{let r=s.name.split("/"),i=e;r.forEach((n,o)=>{i[n]||(i[n]={}),o===r.length-1?i[n]={size:s.size}:i=i[n]})}),`.
178
- ${Nc(e)}`}function qc(t){return`${j("info")} is using ${(0,m.magenta)(t)}. ${(0,m.brightYellow)("This is very experimental")}.`}var Er=a(require("fs/promises")),jr=a(require("path")),Uc=a(require("axios")),Wc=a(require("adm-zip"));async function Bc(t,e){let s=t.split("?")[0];try{console.log(Oc(s));let r=await(0,Uc.default)({url:t,method:"GET",responseType:"arraybuffer"}),i=jr.default.basename(s),n=jr.default.join(e,`${i}.zip`);await Er.default.writeFile(n,r.data),console.log(Ac(n)),new Wc.default(n).extractAllTo(e,!0),await Er.default.unlink(n),console.log(Mc())}catch(r){throw console.error(Tc(r)),r}}var pl=t=>{try{return new URL(t),!0}catch{return!1}};async function ll(t,e){return await(0,Jc.default)(t,process.cwd(),e),oe.default.resolve(process.cwd(),oe.default.basename(t))}async function ul(t){return await Bc(t,process.cwd()),t=t.split("?")[0],oe.default.resolve(process.cwd(),oe.default.basename(t))}async function Q(t){if(!t)return process.cwd();if(pl(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await ul(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],i=s.slice(1,3)[1];console.log(_c(r,i));let n=oe.default.basename(e.pathname),o=await ll(t,Sc(n));return console.log(Pc(n)),o}}return oe.default.resolve(process.cwd(),t)}var z=a(require("path")),zc=a(require("fs")),Hc=a(require("ignore")),Vc=a(require("tiny-glob")),$r=a(require("adm-zip")),Gc=a(require("slugify"));function fl(t){try{return zc.default.readFileSync(t,"utf8")}catch{return""}}function ml(t){return(0,Gc.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function dl(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function gl(t,e){let s=ml(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function hl(t){let e=z.default.join(t,".gitignore"),s=fl(e),r=(0,Hc.default)();return s?r.add(s):console.log(kc(t)),(await(0,Vc.default)("**/*",{cwd:t,dot:!0})).filter(n=>!r.ignores(n))}async function Xc(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),i=z.default.join(r,e),n=s.zipSource?t:i,o=require(z.default.join(n,"manifest.json")),c=gl(o,s),p=dl(e),l=z.default.join(i,`${c}.${p}`),f=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log(Ec(e));let d=new $r.default;(await hl(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(f)}if(s.zip){console.log(""),console.log(jc(l));let d=new $r.default;d.addLocalFolder(i),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log($c(e,c,f,l))):s.zip?(console.log(""),console.log(Cc(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Dc(c,p,e,f)))}catch(r){throw console.error(Fc(r)),r}}var Cr=a(require("fs")),Dr=a(require("path"));function ee(t){let e=Dr.default.join(t,"extension.config.js");if(Cr.default.existsSync(e)&&yl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function yl(t){let e=Dr.default.join(t,"extension.config.js");return Cr.default.existsSync(e)?(console.log(qc("extension.config.js")),!0):!1}async function ep(t,e){let s=await Q(t);!t?.startsWith("http")&&!Zc.default.existsSync(Yc.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e?.browser||"chrome",i=B(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(f=>f?.constructor.name!=="plugin-browsers"&&f?.constructor.name!=="plugin-reload"),c=ee(s)({...i,plugins:n}),p=(0,Qc.merge)(c),l=(0,Kc.default)(p);await new Promise((f,d)=>{l.run(async(h,y)=>{if(h)return console.error(h.stack||h),d(h);console.log(xc(s,y,r)),(e?.zip||e?.zipSource)&&await Xc(s,{...e,browser:r}),y?.hasErrors()?(console.log(y.toString({colors:!0})),process.exit(1)):(console.log(vc()),f())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var op=a(require("fs")),ap=a(require("path"));var Lr=a(require("path")),tp=a(require("webpack")),sp=a(require("webpack-dev-server")),rp=require("webpack-merge");function Fr(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function ip(t,{...e}){let s=B(t,{...e,mode:"development"}),i=ee(t)(s),n=(0,rp.merge)(i),o=(0,tp.default)(n),c={host:"127.0.0.1",allowedHosts:"all",static:Lr.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:st(t)?void 0:{paths:[Lr.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:"only"},p=new sp.default(c,o);p.startCallback(l=>{l!=null&&console.log(`Error in the Extension.js runner: ${l.stack||""}`)}),process.on("ERROR",()=>{Fr(p)}),process.on("SIGINT",()=>{Fr(p)}),process.on("SIGTERM",()=>{Fr(p)})}var Ns=a(require("path")),Ve=a(require("fs/promises"));async function np(t){let e=Ns.default.join(t,"extension-env.d.ts"),s=process.env.EXTENSION_ENV==="development"?Ns.default.resolve(process.cwd(),"programs/cli/types"):"extension/dist/types",r=`// Required Extension.js types for TypeScript projects.
169
+ ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (distribution)`}function Fc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${t}.${e}`)}, Target Browser: ${`${oe(s)}`}
170
+ ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} ${(0,m.gray)("(distribution)")}`}function Lc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${t}-source.${e}`)}, Target Browser: ${`${oe(s)}`}
171
+ ${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (source)`}function Ic(t){return`${S("error")} Failed to compress extension package. ${t}`}function Oc(t){return`${S("info")} ${t.name} (v${t.version}) has no type definitions. Writing...`}function Ac(t){return`${S("error")} Failed to write the extension type definition. ${(0,m.red)(t)}`}function Mc(t){return`${S("info")} Downloading extension...
172
+ ${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function Tc(t){return`${S("info")} Unpackaging browser extension...
173
+ ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Rc(){return`${S("info")} Browser extension unpackaged ${(0,m.brightGreen)("successfully")}. Compiling...`}function Nc(t){return`${S("error")} Failed to download or extract ZIP file. ${(0,m.red)(t)}`}function oe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function xc(t,e){let s=e.default_locale,r=ze.default.join(t,"_locales");if(!Ms.default.existsSync(r))return{defaultLocale:"Browser defaults",otherLocales:[]};let i=Ms.default.readdirSync(r).filter(n=>n!==s);return{defaultLocale:s,otherLocales:i}}function qc(t){return`${(t/1024).toFixed(2)}KB`}function hl(t){let e=0;return t?.forEach(s=>{e+=s.size}),qc(e)}function Uc(t,e=""){let s="";return Object.keys(t).forEach((r,i,n)=>{let o=i===n.length-1,c=o?"\u2514\u2500":"\u251C\u2500",p=t[r].size?` (${qc(t[r].size)})`:"";s+=`${(0,m.gray)(e)}${(0,m.gray)(c)} ${r}${(0,m.gray)(p)}
174
+ `,typeof t[r]=="object"&&!t[r].size&&(s+=Uc(t[r],`${e}${o?" ":(0,m.gray)("\u2502 ")}`))}),s}function yl(t){let e={};return t?.forEach(s=>{let r=s.name.split("/"),i=e;r.forEach((n,o)=>{i[n]||(i[n]={}),o===r.length-1?i[n]={size:s.size}:i=i[n]})}),`.
175
+ ${Uc(e)}`}function Wc(t){return`${S("info")} is using ${(0,m.magenta)(t)}. ${(0,m.brightYellow)("This is very experimental")}.`}function Bc(t){return`${S("info")} Installing ${(0,m.cyan)(t)} dependencies...`}function Jc(t,e,s){return`Command ${t} ${e.join(" ")} failed with exit code ${s}`}function zc(t){return`${S("info")} Can't install project dependencies. ${t.message||t.toString()}`}var Ns=a(require("path")),Hc=a(require("axios")),Vc=a(require("adm-zip"));var jr=a(require("stream")),Gc=require("util"),bl=(0,Gc.promisify)(jr.default.pipeline);async function Xc(t,e){let s=t.split("?")[0];try{console.log(Mc(s));let r=await(0,Hc.default)({url:t,method:"GET",responseType:"stream"}),i=Ns.default.extname(s),n=Ns.default.basename(s,i),o=Ns.default.join(e,n);console.log(Tc(o));let c=[];await bl(r.data,new jr.default.Writable({write(u,d,g){c.push(u),g()}}));let p=Buffer.concat(c);return new Vc.default(p).extractAllTo(o,!0),console.log(Rc()),o}catch(r){throw console.error(Nc(r)),r}}var wl=t=>{try{return new URL(t),!0}catch{return!1}};async function xl(t,e){return await(0,Zc.default)(t,process.cwd(),e),He.default.resolve(process.cwd(),He.default.basename(t))}async function vl(t){return await Xc(t,process.cwd())}async function Q(t){if(!t)return process.cwd();if(wl(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await vl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],i=s.slice(1,3)[1];console.log(Pc(r,i));let n=He.default.basename(e.pathname),o=await xl(t,kc(n));return console.log(Ec(n)),o}}return He.default.resolve(process.cwd(),t)}var z=a(require("path")),Yc=a(require("fs")),Kc=a(require("ignore")),Qc=a(require("tiny-glob")),$r=a(require("adm-zip")),ep=a(require("slugify"));function _l(t){try{return Yc.default.readFileSync(t,"utf8")}catch{return""}}function Sl(t){return(0,ep.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function Pl(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function kl(t,e){let s=Sl(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function El(t){let e=z.default.join(t,".gitignore"),s=_l(e),r=(0,Kc.default)();return s?r.add(s):console.log(jc(t)),(await(0,Qc.default)("**/*",{cwd:t,dot:!0})).filter(n=>!r.ignores(n))}async function tp(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),i=z.default.join(r,e),n=s.zipSource?t:i,o=require(z.default.join(n,"manifest.json")),c=kl(o,s),p=Pl(e),l=z.default.join(i,`${c}.${p}`),u=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log($c(e));let d=new $r.default;(await El(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(u)}if(s.zip){console.log(""),console.log(Cc(l));let d=new $r.default;d.addLocalFolder(i),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log(Dc(e,c,u,l))):s.zip?(console.log(""),console.log(Fc(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Lc(c,p,e,u)))}catch(r){throw console.error(Ic(r)),r}}var Cr=a(require("fs")),Dr=a(require("path"));function ee(t){let e=Dr.default.join(t,"extension.config.js");if(Cr.default.existsSync(e)&&jl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function jl(t){let e=Dr.default.join(t,"extension.config.js");return Cr.default.existsSync(e)?(console.log(Wc("extension.config.js")),!0):!1}async function op(t,e){let s=await Q(t);!t?.startsWith("http")&&!sp.default.existsSync(rp.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e?.browser||"chrome",i=J(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=ee(s)({...i,plugins:n}),p=(0,np.merge)(c),l=(0,ip.default)(p);await new Promise((u,d)=>{l.run(async(g,y)=>{if(g)return console.error(g.stack||g),d(g);console.log(_c(s,y,r)),(e?.zip||e?.zipSource)&&await tp(s,{...e,browser:r}),y?.hasErrors()?(console.log(y.toString({colors:!0})),process.exit(1)):(console.log(Sc()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var Ir=a(require("fs")),Or=a(require("path"));var Lr=a(require("path")),ap=a(require("webpack")),cp=a(require("webpack-dev-server")),pp=require("webpack-merge");function Fr(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function lp(t,{...e}){let s=J(t,{...e,mode:"development"}),i=ee(t)(s),n=(0,pp.merge)(i),o=(0,ap.default)(n),c={host:"127.0.0.1",allowedHosts:"all",static:Lr.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:st(t)?void 0:{paths:[Lr.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:"only"},p=new cp.default(c,o);p.startCallback(l=>{l!=null&&console.log(`Error in the Extension.js runner: ${l.stack||""}`)}),process.on("ERROR",()=>{Fr(p)}),process.on("SIGINT",()=>{Fr(p)}),process.on("SIGTERM",()=>{Fr(p)})}var qs=a(require("path")),Ve=a(require("fs/promises"));async function fp(t){let e=qs.default.join(t,"extension-env.d.ts"),s=process.env.EXTENSION_ENV==="development"?qs.default.resolve(process.cwd(),"programs/cli/types"):"extension/dist/types",r=`// Required Extension.js types for TypeScript projects.
179
176
  // This file is auto-generated and should not be excluded.
180
177
  // If you need additional types, consider creating a new *.d.ts file and
181
178
  // referencing it in the "include" array of your tsconfig.json file.
@@ -184,4 +181,4 @@ ${Nc(e)}`}function qc(t){return`${j("info")} is using ${(0,m.magenta)(t)}. ${(0,
184
181
 
185
182
  // Polyfill types for browser.* APIs.
186
183
  /// <reference types="${s}/polyfill.d.ts" />
187
- `;try{await Ve.default.access(e),(await Ve.default.readFile(e,"utf8")).includes("develop/dist/types")&&await Ve.default.writeFile(e,r)}catch{let n=require(Ns.default.join(t,"manifest.json"));console.log(Lc(n));try{await Ve.default.writeFile(e,r)}catch(o){console.log(Ic(o))}}}async function cp(t,e){let s=await Q(t);!t?.startsWith("http")&&!op.default.existsSync(ap.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{R(s)&&await np(s),await ip(s,{...e,mode:"development",browser:e.browser||"chrome"})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var pp=a(require("fs")),lp=a(require("path")),up=a(require("webpack")),fp=require("webpack-merge");async function mp(t,e){let s=await Q(t);!t?.startsWith("http")&&!pp.default.existsSync(lp.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e.browser||"chrome",i=B(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(f=>f?.constructor.name==="plugin-browsers");console.log(Ts(r));let c=ee(s)({...i,plugins:n}),p=(0,fp.merge)(c);(0,up.default)(p).run(async(f,d)=>{f&&(console.error(f.stack||f),process.exit(1)),d?.hasErrors()?(console.log(d.toString({colors:!0})),process.exit(1)):console.log(Rs(s,{browser:r,mode:"production"}))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var dp=a(require("fs")),gp=a(require("path")),hp=a(require("webpack")),yp=require("webpack-merge");async function bp(t,e){let s=await Q(t);!t?.startsWith("http")&&!dp.default.existsSync(gp.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e.browser||"chrome",i=B(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(f=>f?.constructor.name!=="plugin-reload");console.log(Ts(r));let c=ee(s)({...i,plugins:n}),p=(0,yp.merge)(c);(0,hp.default)(p).run((f,d)=>{f&&(console.error(f.stack||f),process.exit(1)),d?.hasErrors()?(console.log(d.toString({colors:!0})),process.exit(1)):(console.log(Rs(s,e)),setTimeout(()=>{console.log(wc("production",r))},1500))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}0&&(module.exports={extensionBuild,extensionDev,extensionPreview,extensionStart});
184
+ `;try{await Ve.default.access(e),(await Ve.default.readFile(e,"utf8")).includes("develop/dist/types")&&await Ve.default.writeFile(e,r)}catch{let n=require(qs.default.join(t,"manifest.json"));console.log(Oc(n));try{await Ve.default.writeFile(e,r)}catch(o){console.log(Ac(o))}}}var up=a(require("path")),mp=require("cross-spawn"),dp=a(require("fs")),gp=require("detect-package-manager");async function $l(){let t=await(0,gp.detect)(),e="npm";switch(t){case"yarn":e="yarn";break;case"pnpm":e="pnpm";break;default:e="npm"}return e}function Cl(){return["install"]}async function hp(t){let e=up.default.join(t,"node_modules"),s=await $l(),r=Cl(),i=process.cwd();try{process.chdir(t),await dp.default.promises.mkdir(e,{recursive:!0});let n=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,mp.spawn)(s,r,{stdio:n});await new Promise((c,p)=>{o.on("close",l=>{l!==0?p(new Error(Jc(s,r,l))):c()}),o.on("error",l=>{p(l)})})}catch(n){console.error(zc(n)),process.exit(1)}finally{process.chdir(i)}}async function yp(t,e){let s=await Q(t),r=Or.default.join(s,"manifest.json");!t?.startsWith("http")&&!Ir.default.existsSync(r)&&(console.log(K()),process.exit(1));try{R(s)&&await fp(s);let i=Or.default.join(s,"node_modules");if(!Ir.default.existsSync(i)){let n=require(r).name;console.log(Bc(n)),await hp(s)}setTimeout(async()=>{await lp(s,{...e,mode:"development",browser:e.browser||"chrome"})},50)}catch(i){process.env.EXTENSION_ENV==="development"&&console.error(i),process.exit(1)}}var bp=a(require("fs")),wp=a(require("path")),xp=a(require("webpack")),vp=require("webpack-merge");async function _p(t,e){let s=await Q(t);!t?.startsWith("http")&&!bp.default.existsSync(wp.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e.browser||"chrome",i=J(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(u=>u?.constructor.name==="plugin-browsers");console.log(Ts(r));let c=ee(s)({...i,plugins:n}),p=(0,vp.merge)(c);(0,xp.default)(p).run(async(u,d)=>{u&&(console.error(u.stack||u),process.exit(1)),d?.hasErrors()?(console.log(d.toString({colors:!0})),process.exit(1)):console.log(Rs(s,{browser:r,mode:"production"}))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var Sp=a(require("fs")),Pp=a(require("path")),kp=a(require("webpack")),Ep=require("webpack-merge");async function jp(t,e){let s=await Q(t);!t?.startsWith("http")&&!Sp.default.existsSync(Pp.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e.browser||"chrome",i=J(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(u=>u?.constructor.name!=="plugin-reload");console.log(Ts(r));let c=ee(s)({...i,plugins:n}),p=(0,Ep.merge)(c);(0,kp.default)(p).run((u,d)=>{u&&(console.error(u.stack||u),process.exit(1)),d?.hasErrors()?(console.log(d.toString({colors:!0})),process.exit(1)):(console.log(Rs(s,e)),setTimeout(()=>{console.log(vc("production",r))},1500))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}0&&(module.exports={extensionBuild,extensionDev,extensionPreview,extensionStart});
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "node": ">=18"
10
10
  },
11
11
  "name": "extension-develop",
12
- "version": "2.0.0-alpha.8",
12
+ "version": "2.0.0-alpha.9",
13
13
  "description": "The develop step of Extension.js",
14
14
  "main": "./dist/module.js",
15
15
  "types": "./dist/module.d.ts",