extension-develop 2.0.0-alpha.1 → 2.0.0-alpha.2

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.
Files changed (2) hide show
  1. package/dist/module.js +3 -3
  2. package/package.json +1 -1
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var bp=Object.create;var He=Object.defineProperty;var wp=Object.getOwnPropertyDescriptor;var xp=Object.getOwnPropertyNames;var vp=Object.getPrototypeOf,_p=Object.prototype.hasOwnProperty;var Sp=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Pp=(t,e)=>{for(var s in e)He(t,s,{get:e[s],enumerable:!0})},Or=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xp(e))!_p.call(t,n)&&n!==s&&He(t,n,{get:()=>e[n],enumerable:!(r=wp(e,n))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?bp(vp(t)):{},Or(e||!t||!t.__esModule?He(s,"default",{value:t,enumerable:!0}):s,t)),kp=t=>Or(He({},"__esModule",{value:!0}),t);var Ms=Sp((wl,Ep)=>{Ep.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.1",description:"The develop step of Extension.js",main:"./dist/module.js",types:"./dist/module.d.ts",files:["dist"],author:{name:"Cezar Augusto",email:"boss@cezaraugusto.net",url:"https://cezaraugusto.com"},scripts:{clean:"rm -rf dist",watch:"tsup-node ./module.ts --format cjs --dts --target=node18 --watch",compile:"tsup-node ./module.ts --format cjs --dts --target=node18 --minify && bash install_scripts.sh",test:"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts'","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.1",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 hl={};Pp(hl,{extensionBuild:()=>ep,extensionDev:()=>ap,extensionPreview:()=>up,extensionStart:()=>yp});module.exports=kp(hl);var Zc=a(require("fs")),Yc=a(require("path")),Kc=a(require("webpack")),Qc=require("webpack-merge");var ve=a(require("path"));var gn=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),mn=a(require("dotenv-webpack"));var Os=a(require("path")),f=require("@colors/colors/safe");var Tr=a(require("path")),Ve=Tr.default.join(process.cwd(),"node_modules/extension-develop/dist/certs");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")} ${(0,f.cyan)(t)}`}function jp(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Rr(t,e){if(!!1)return`${e.hasErrors()?(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} Extension.js compiled ${e.hasErrors()?(0,f.red)("with errors"):(0,f.brightGreen)("successfully")} in ${t} ms.`}function Nr(t,e,s){return`${w(t,"info")} ${(0,f.magenta)(e)} Integration Found
1
+ "use strict";var bp=Object.create;var He=Object.defineProperty;var wp=Object.getOwnPropertyDescriptor;var xp=Object.getOwnPropertyNames;var vp=Object.getPrototypeOf,_p=Object.prototype.hasOwnProperty;var Sp=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Pp=(t,e)=>{for(var s in e)He(t,s,{get:e[s],enumerable:!0})},Or=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xp(e))!_p.call(t,n)&&n!==s&&He(t,n,{get:()=>e[n],enumerable:!(r=wp(e,n))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?bp(vp(t)):{},Or(e||!t||!t.__esModule?He(s,"default",{value:t,enumerable:!0}):s,t)),kp=t=>Or(He({},"__esModule",{value:!0}),t);var Ms=Sp((wl,Ep)=>{Ep.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.2",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: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.1",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 hl={};Pp(hl,{extensionBuild:()=>ep,extensionDev:()=>ap,extensionPreview:()=>up,extensionStart:()=>yp});module.exports=kp(hl);var Zc=a(require("fs")),Yc=a(require("path")),Kc=a(require("webpack")),Qc=require("webpack-merge");var ve=a(require("path"));var gn=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),mn=a(require("dotenv-webpack"));var Os=a(require("path")),f=require("@colors/colors/safe");var Tr=a(require("path")),Ve=Tr.default.join(process.cwd(),"node_modules/extension-develop/dist/certs");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")} ${(0,f.cyan)(t)}`}function jp(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Rr(t,e){if(!!1)return`${e.hasErrors()?(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} Extension.js compiled ${e.hasErrors()?(0,f.red)("with errors"):(0,f.brightGreen)("successfully")} in ${t} ms.`}function Nr(t,e,s){return`${w(t,"info")} ${(0,f.magenta)(e)} Integration Found
2
2
 
3
3
  Installing required setup dependencies via ${(0,f.brightYellow)(s)}. This is a one time operation...`}function qr(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 P(t,e){return`${w(t,"success")} You Are All Set
4
4
 
@@ -142,7 +142,7 @@ ${(0,x.red)(e)}`}function Na(t,e){return`${k(t,"error")} ${(0,x.red)(e.stack)}`}
142
142
 
143
143
  ${(0,x.gray)("PATH")} ${(0,x.underline)(e)}
144
144
 
145
- Please provide a valid directory path.`}function Ba(t){return`${k(t,"error")} Error parsing message length.`}function Ja(t){return`${k(t,"error")} MessagingClient connection closed.`}function za(t,e){return`${k(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Ha(t){return`${k(t,"error")} MessagingClient connection closed.`}function Va(t,e){return`${k(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Ga(t,e){return`${k(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Xa(t,e){return`${k(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Za(t,e){return`${k(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var Ya=a(require("progress"));function Ss(t,e){let r=new Ya.default(`${t} [:bar] :percent :etas`,{complete:"=",incomplete:" ",width:50,total:131072}),n=setInterval(()=>{let i=Math.random()*10*1024;r.tick(i),r.complete&&(clearInterval(n),e())},50)}function Ka(t,e,s){if(Ps.default.existsSync(re.default.resolve(__dirname,`run-${t}-profile`)))return e||re.default.resolve(__dirname,`run-${t}-profile`);let n=JSON.stringify(t==="chrome"?Ia:Aa);return s||Ss(_s(t),()=>{let i=re.default.resolve(__dirname,`run-${t}-profile`),o=re.default.join(i,"Default");Ps.default.mkdirSync(o,{recursive:!0});let c=re.default.join(o,"Preferences");Ps.default.writeFileSync(c,n,"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 xe=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(vs(e,s)),process.exit());let r=Qa(this),n=this.startingUrl?[this.startingUrl,...r]:[...r],i=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,tc.spawn)(s,n,{stdio:i});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,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}this.launchChromium(this.browser),console.log(xs(this.browser,r.compilation.options.mode)),s=!0,n()})}};var gc=a(require("fs")),hc=require("child_process");var Be=a(require("fs")),ks=a(require("path")),sc=a(require("os")),rc=a(require("which")),nc=process.platform==="darwin",Zp=process.platform==="win32",Yp=!nc&&!Zp;function Kp(){if(Yp)try{return rc.default.sync("firefox")}catch{return null}else if(nc){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=ks.default.join(sc.default.homedir(),t.slice(1));return Be.default.existsSync(t)?t:Be.default.existsSync(e)?e:null}else{let t=ks.default.join("Mozilla Firefox","firefox.exe"),e=[process.env.LOCALAPPDATA,process.env.PROGRAMFILES,process.env["PROGRAMFILES(X86)"]];for(let r of e)if(r){let n=ks.default.join(r,t);if(Be.default.existsSync(n))return n}let s=["C:\\Program Files\\Mozilla Firefox\\firefox.exe","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"];for(let r of s)if(Be.default.existsSync(r))return r;return null}}var Es=Kp();var oc=a(require("path")),js=a(require("fs")),Pr=a(require("firefox-profile"));var Qp={"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 ic(t){return{...Qp,...t}}function ac(t,e){let s=ic(e);Object.keys(s).forEach(i=>{t.setPreference(i,s[i])});let n=Object.keys(e);return n.length>0&&n.forEach(i=>{t.setPreference(i,e[i])}),t.updatePreferences(),t}function el(t,e){let s=new Pr.default({destinationDirectory:t});return ac(s,e)}function tl(t,e,s){let r;if(js.default.statSync(e).isDirectory())r=e;else throw new Error(Wa(t,e));let i=new Pr.default({destinationDirectory:r});return ac(i,s)}function cc(t,e,s,r){let n,i=e||oc.default.resolve(__dirname,"run-firefox-data-dir");return js.default.existsSync(i)?n=tl(t,i,s||{}):(r||Ss(_s(t),()=>{}),js.default.mkdirSync(i,{recursive:!0}),n=el(i,s||{})),n}async function pc(t,e){let{browser:s,startingUrl:r,preferences:n,userDataDir:i,browserConsole:o=!1,browserFlags:c=[]}=e,p=cc(s,i,n),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 dc=a(require("path"));var lc=a(require("net")),fc=a(require("events"));function sl(t,e){let s=e.toString(),r=s.indexOf(":");if(r<1)return{remainingData:e};let n=parseInt(s.substring(0,r),10);if(isNaN(n))return{remainingData:e,error:new Error(Ba(t)),fatal:!0};if(e.length-(r+1)<n)return{remainingData:e};let i=e.slice(r+1,r+1+n),o=e.slice(r+1+n);try{let c=JSON.parse(i.toString());return{remainingData:o,parsedMessage:c}}catch(c){return{remainingData:o,error:c,fatal:!1}}}var $s=class extends fc.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((s,r)=>{try{let n={port:e,host:"127.0.0.1"},i=lc.default.createConnection(n,()=>{s()});this.connection=i,i.on("data",this.onData.bind(this)),i.on("error",r),i.on("end",this.onEnd.bind(this)),i.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:s,reject:r})}catch(n){r(n)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(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,n)=>{let i={resolve:r,reject:n};this.pendingRequests.push({request:s,deferred:i}),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:n}=sl("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Ga("firefox",r))),n&&this.disconnect(),!n):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 uc(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 rl=150,nl=1e3,Cs=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:rl}))try{let n=new $s;return await n.connect(e),n}catch(n){if(mc("ECONNREFUSED",n))await new Promise(i=>setTimeout(i,nl)),s=n;else throw console.error(Na(this.options.browser,n.stack)),n}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],n=e.options.devServer?.port,i=n?n+100:9222,o=await this.connectClient(i);for(let[c,p]of r.entries()){let l=dc.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=uc(d);throw new Error(Ua(this.options.browser,g))}}}};process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Ds=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 "${Es}" --foreground --no-remote`;gc.default.existsSync(Es)||(console.error(vs(this.browser,Es)),process.exit());let r=await pc(e,this),n=`${s} ${r}`,i=(0,hc.exec)(n,(c,p,l)=>{if(c!=null)throw c;l.includes("Unable to move the cache")?console.log(Ma(this.browser)):(console.log(Oa(this.browser)),process.exit())});process.env.EXTENSION_ENV==="development"&&(i.stdout?.pipe(process.stdout),i.stderr?.pipe(process.stderr));let o=new Cs(this);try{await o.installAddons(e)}catch(c){c?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(Ta(this.browser)),process.exit(1)),console.error(Ra(this.browser,c)),process.exit(1)}}apply(e){let s=!1;e.hooks.done.tapAsync("run-chromium:module",async(r,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}await this.launchFirefox(e),console.log(xs(this.browser,r.compilation.options.mode)),s=!0,n()})}};var Ls=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 xe({...s,browser:"chrome"}).apply(e);break}case"edge":new xe({...s,browser:"edge"}).apply(e);break;case"firefox":new Ds({...s,browser:"firefox"}).apply(e);break;default:{new xe({...s,browser:this.browser}).apply(e);break}}}};function B(t,e){let s=ve.default.join(t,"manifest.json"),r=ve.default.join(t,`dist/${e.browser}`),n=require(s);return{mode:e.mode,entry:{},target:"web",context:t,devtool:n.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:{keep(i){return!i.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",ve.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 Ke({manifestPath:s}),new at({manifestPath:s,mode:e.mode}),new ot({manifestPath:s,mode:e.mode}),new ut({manifestPath:s,mode:e.mode}),process.env.EXTENSION_ENV==="development"&&new ws({manifestPath:s,browser:e.browser}),new gs({manifestPath:s,browser:e.browser,polyfill:e.polyfill}),new os({manifestPath:s,browser:e.browser,mode:e.mode}),new fs({manifestPath:s,browser:e.browser,stats:!0,port:e.port||8e3}),!e.noOpen&&new Ls({extension:[r,e.browser==="firefox"?ve.default.join(__dirname,"extensions","manager-extension-firefox"):ve.default.join(__dirname,"extensions","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 ie=a(require("path")),Jc=a(require("go-git-it"));var Je=a(require("path")),Fs=a(require("fs")),m=require("@colors/colors/safe");function E(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`${E("error")} Manifest file not found. Ensure the path to your extension exists and try again.`}function Is(t){let e=t==="firefox"?"Add-on":"Extension";return`${E("info")} Building ${ne(t)} ${e} package...`}function As(t,e){let s=Je.default.join(t,"dist",e.browser||"chrome"),r=Je.default.join(s,"manifest.json"),n=require(r),{name:i,version:o,hostPermissions:c,permissions:p}=n,l=bc(t,n).defaultLocale,u=bc(t,n).otherLocales.join(", "),d=`${l} ${u&&", "+u}`,g=c&&c.length,y=p&&p.length,j=Ms().version;return`
145
+ Please provide a valid directory path.`}function Ba(t){return`${k(t,"error")} Error parsing message length.`}function Ja(t){return`${k(t,"error")} MessagingClient connection closed.`}function za(t,e){return`${k(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Ha(t){return`${k(t,"error")} MessagingClient connection closed.`}function Va(t,e){return`${k(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Ga(t,e){return`${k(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Xa(t,e){return`${k(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Za(t,e){return`${k(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var Ya=a(require("progress"));function Ss(t,e){let r=new Ya.default(`${t} [:bar] :percent :etas`,{complete:"=",incomplete:" ",width:50,total:131072}),n=setInterval(()=>{let i=Math.random()*10*1024;r.tick(i),r.complete&&(clearInterval(n),e())},50)}function Ka(t,e,s){if(Ps.default.existsSync(re.default.resolve(__dirname,`run-${t}-profile`)))return e||re.default.resolve(__dirname,`run-${t}-profile`);let n=JSON.stringify(t==="chrome"?Ia:Aa);return s||Ss(_s(t),()=>{let i=re.default.resolve(__dirname,`run-${t}-profile`),o=re.default.join(i,"Default");Ps.default.mkdirSync(o,{recursive:!0});let c=re.default.join(o,"Preferences");Ps.default.writeFileSync(c,n,"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 xe=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(vs(e,s)),process.exit());let r=Qa(this),n=this.startingUrl?[this.startingUrl,...r]:[...r],i=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,tc.spawn)(s,n,{stdio:i});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,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}this.launchChromium(this.browser),console.log(xs(this.browser,r.compilation.options.mode)),s=!0,n()})}};var gc=a(require("fs")),hc=require("child_process");var Be=a(require("fs")),ks=a(require("path")),sc=a(require("os")),rc=a(require("which")),nc=process.platform==="darwin",Zp=process.platform==="win32",Yp=!nc&&!Zp;function Kp(){if(Yp)try{return rc.default.sync("firefox")}catch{return null}else if(nc){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=ks.default.join(sc.default.homedir(),t.slice(1));return Be.default.existsSync(t)?t:Be.default.existsSync(e)?e:null}else{let t=ks.default.join("Mozilla Firefox","firefox.exe"),e=[process.env.LOCALAPPDATA,process.env.PROGRAMFILES,process.env["PROGRAMFILES(X86)"]];for(let r of e)if(r){let n=ks.default.join(r,t);if(Be.default.existsSync(n))return n}let s=["C:\\Program Files\\Mozilla Firefox\\firefox.exe","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"];for(let r of s)if(Be.default.existsSync(r))return r;return null}}var Es=Kp();var oc=a(require("path")),js=a(require("fs")),Pr=a(require("firefox-profile"));var Qp={"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 ic(t){return{...Qp,...t}}function ac(t,e){let s=ic(e);Object.keys(s).forEach(i=>{t.setPreference(i,s[i])});let n=Object.keys(e);return n.length>0&&n.forEach(i=>{t.setPreference(i,e[i])}),t.updatePreferences(),t}function el(t,e){let s=new Pr.default({destinationDirectory:t});return ac(s,e)}function tl(t,e,s){let r;if(js.default.statSync(e).isDirectory())r=e;else throw new Error(Wa(t,e));let i=new Pr.default({destinationDirectory:r});return ac(i,s)}function cc(t,e,s,r){let n,i=e||oc.default.resolve(__dirname,"run-firefox-data-dir");return js.default.existsSync(i)?n=tl(t,i,s||{}):(r||Ss(_s(t),()=>{}),js.default.mkdirSync(i,{recursive:!0}),n=el(i,s||{})),n}async function pc(t,e){let{browser:s,startingUrl:r,preferences:n,userDataDir:i,browserConsole:o=!1,browserFlags:c=[]}=e,p=cc(s,i,n),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 dc=a(require("path"));var lc=a(require("net")),fc=a(require("events"));function sl(t,e){let s=e.toString(),r=s.indexOf(":");if(r<1)return{remainingData:e};let n=parseInt(s.substring(0,r),10);if(isNaN(n))return{remainingData:e,error:new Error(Ba(t)),fatal:!0};if(e.length-(r+1)<n)return{remainingData:e};let i=e.slice(r+1,r+1+n),o=e.slice(r+1+n);try{let c=JSON.parse(i.toString());return{remainingData:o,parsedMessage:c}}catch(c){return{remainingData:o,error:c,fatal:!1}}}var $s=class extends fc.default{incomingData=Buffer.alloc(0);pendingRequests=[];activeRequests=new Map;connection;async connect(e){await new Promise((s,r)=>{try{let n={port:e,host:"127.0.0.1"},i=lc.default.createConnection(n,()=>{s()});this.connection=i,i.on("data",this.onData.bind(this)),i.on("error",r),i.on("end",this.onEnd.bind(this)),i.on("timeout",this.onTimeout.bind(this)),this.expectReply("root",{resolve:s,reject:r})}catch(n){r(n)}})}disconnect(){this.connection&&(this.connection.removeAllListeners(),this.connection.end(),this.rejectAllRequests(new Error(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,n)=>{let i={resolve:r,reject:n};this.pendingRequests.push({request:s,deferred:i}),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:n}=sl("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Ga("firefox",r))),n&&this.disconnect(),!n):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 uc(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 rl=150,nl=1e3,Cs=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:rl}))try{let n=new $s;return await n.connect(e),n}catch(n){if(mc("ECONNREFUSED",n))await new Promise(i=>setTimeout(i,nl)),s=n;else throw console.error(Na(this.options.browser,n.stack)),n}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],n=e.options.devServer?.port,i=n?n+100:9222,o=await this.connectClient(i);for(let[c,p]of r.entries()){let l=dc.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=uc(d);throw new Error(Ua(this.options.browser,g))}}}};process.on("SIGINT",()=>{process.exit()});process.on("SIGTERM",()=>{process.exit()});var Ds=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 "${Es}" --foreground --no-remote`;gc.default.existsSync(Es)||(console.error(vs(this.browser,Es)),process.exit());let r=await pc(e,this),n=`${s} ${r}`,i=(0,hc.exec)(n,(c,p,l)=>{if(c!=null)throw c;l.includes("Unable to move the cache")?console.log(Ma(this.browser)):(console.log(Oa(this.browser)),process.exit())});process.env.EXTENSION_ENV==="development"&&(i.stdout?.pipe(process.stdout),i.stderr?.pipe(process.stderr));let o=new Cs(this);try{await o.installAddons(e)}catch(c){c?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(Ta(this.browser)),process.exit(1)),console.error(Ra(this.browser,c)),process.exit(1)}}apply(e){let s=!1;e.hooks.done.tapAsync("run-chromium:module",async(r,n)=>{if(r.compilation.errors.length>0){n();return}if(s){n();return}await this.launchFirefox(e),console.log(xs(this.browser,r.compilation.options.mode)),s=!0,n()})}};var Ls=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 xe({...s,browser:"chrome"}).apply(e);break}case"edge":new xe({...s,browser:"edge"}).apply(e);break;case"firefox":new Ds({...s,browser:"firefox"}).apply(e);break;default:{new xe({...s,browser:this.browser}).apply(e);break}}}};function B(t,e){let s=ve.default.join(t,"manifest.json"),r=ve.default.join(t,`dist/${e.browser}`),n=require(s);return{mode:e.mode||"development",entry:{},target:"web",context:t,devtool:n.manifest_version===3?"cheap-source-map":"eval-cheap-source-map",output:{clean:{keep(i){return!i.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",ve.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 Ke({manifestPath:s}),new at({manifestPath:s,mode:e.mode}),new ot({manifestPath:s,mode:e.mode}),new ut({manifestPath:s,mode:e.mode}),process.env.EXTENSION_ENV==="development"&&new ws({manifestPath:s,browser:e.browser}),new gs({manifestPath:s,browser:e.browser,polyfill:e.polyfill}),new os({manifestPath:s,browser:e.browser,mode:e.mode}),new fs({manifestPath:s,browser:e.browser,stats:!0,port:e.port||8e3}),!e.noOpen&&new Ls({extension:[r,e.browser==="firefox"?ve.default.join(__dirname,"extensions","manager-extension-firefox"):ve.default.join(__dirname,"extensions","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 ie=a(require("path")),Jc=a(require("go-git-it"));var Je=a(require("path")),Fs=a(require("fs")),m=require("@colors/colors/safe");function E(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`${E("error")} Manifest file not found. Ensure the path to your extension exists and try again.`}function Is(t){let e=t==="firefox"?"Add-on":"Extension";return`${E("info")} Building ${ne(t)} ${e} package...`}function As(t,e){let s=Je.default.join(t,"dist",e.browser||"chrome"),r=Je.default.join(s,"manifest.json"),n=require(r),{name:i,version:o,hostPermissions:c,permissions:p}=n,l=bc(t,n).defaultLocale,u=bc(t,n).otherLocales.join(", "),d=`${l} ${u&&", "+u}`,g=c&&c.length,y=p&&p.length,j=Ms().version;return`
146
146
  \u{1F9E9} ${(0,m.brightGreen)("Extension.js")} ${(0,m.gray)(`${j}`)}
147
147
  Extension Name ${(0,m.gray)(i)}
148
148
  Extension Version ${(0,m.gray)(o)}
@@ -179,7 +179,7 @@ ${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function Mc(t){return`${E("success")
179
179
 
180
180
  ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Oc(){return`${E("success")} Browser extension unpackaged successfully. Compiling...`}function Tc(t){return`${E("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=Je.default.join(t,"_locales");if(!Fs.default.existsSync(r))return{defaultLocale:"Browser defaults",otherLocales:[]};let n=Fs.default.readdirSync(r).filter(i=>i!==s);return{defaultLocale:s,otherLocales:n}}function Rc(t){return`${(t/1024).toFixed(2)}KB`}function il(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,n,i)=>{let o=n===i.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)}
181
181
  `,typeof t[r]=="object"&&!t[r].size&&(s+=Nc(t[r],`${e}${o?" ":(0,m.gray)("\u2502 ")}`))}),s}function ol(t){let e={};return t?.forEach(s=>{let r=s.name.split("/"),n=e;r.forEach((i,o)=>{n[i]||(n[i]={}),o===r.length-1?n[i]={size:s.size}:n=n[i]})}),`.
182
- ${Nc(e)}`}function qc(t){return`${E("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(Ac(s));let r=await(0,Uc.default)({url:t,method:"GET",responseType:"arraybuffer"}),n=jr.default.basename(s),i=jr.default.join(e,`${n}.zip`);await Er.default.writeFile(i,r.data),console.log(Mc(i)),new Wc.default(i).extractAllTo(e,!0),await Er.default.unlink(i),console.log(Oc())}catch(r){throw console.error(Tc(r)),r}}var al=t=>{try{return new URL(t),!0}catch{return!1}};async function cl(t,e){return await(0,Jc.default)(t,process.cwd(),e),ie.default.resolve(process.cwd(),ie.default.basename(t))}async function pl(t){return await Bc(t,process.cwd()),t=t.split("?")[0],ie.default.resolve(process.cwd(),ie.default.basename(t))}async function Q(t){if(!t)return process.cwd();if(al(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await pl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],n=s.slice(1,3)[1];console.log(_c(r,n));let i=ie.default.basename(e.pathname),o=await cl(t,Sc(i));return console.log(Pc(i)),o}}return ie.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 ll(t){try{return zc.default.readFileSync(t,"utf8")}catch{return""}}function fl(t){return(0,Gc.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function ul(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function ml(t,e){let s=fl(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function dl(t){let e=z.default.join(t,".gitignore"),s=ll(e),r=(0,Hc.default)();return s?r.add(s):console.log(kc(t)),(await(0,Vc.default)("**/*",{cwd:t,dot:!0})).filter(i=>!r.ignores(i))}async function Xc(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),n=z.default.join(r,e),i=s.zipSource?t:n,o=require(z.default.join(i,"manifest.json")),c=ml(o,s),p=ul(e),l=z.default.join(n,`${c}.${p}`),u=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log(Ec(e));let d=new $r.default;(await dl(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(u)}if(s.zip){console.log(""),console.log(jc(l));let d=new $r.default;d.addLocalFolder(n),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log($c(e,c,u,l))):s.zip?(console.log(""),console.log(Cc(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Dc(c,p,e,u)))}catch(r){throw console.error(Lc(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)&&gl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function gl(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",n=B(s,{...e,browser:r,mode:"production"}),i=n.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=ee(s)({...n,plugins:i}),p=(0,Qc.merge)(c),l=(0,Kc.default)(p);await new Promise((u,d)=>{l.run(async(g,y)=>{if(g)return console.error(g.stack||g),d(g);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()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var ip=a(require("fs")),op=a(require("path"));var Fr=a(require("path")),tp=a(require("webpack")),sp=a(require("webpack-dev-server")),rp=require("webpack-merge");function Lr(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function np(t,{...e}){let s=B(t,e),n=ee(t)(s),i=(0,rp.merge)(n),o=(0,tp.default)(i),c={host:"127.0.0.1",allowedHosts:"all",static:Fr.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:et(t)?void 0:{paths:[Fr.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",()=>{Lr(p)}),process.on("SIGINT",()=>{Lr(p)}),process.on("SIGTERM",()=>{Lr(p)})}var ze=a(require("path")),Ir=a(require("fs/promises"));async function Ar(t){let e=ze.default.join(t,"extension-env.d.ts"),s=ze.default.join(__dirname,"types"),r=ze.default.relative(t,s),n=process.env.EXTENSION_ENV==="development"?r:"extension-develop/dist/types",i=`// Required Extension.js types for TypeScript projects.
182
+ ${Nc(e)}`}function qc(t){return`${E("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(Ac(s));let r=await(0,Uc.default)({url:t,method:"GET",responseType:"arraybuffer"}),n=jr.default.basename(s),i=jr.default.join(e,`${n}.zip`);await Er.default.writeFile(i,r.data),console.log(Mc(i)),new Wc.default(i).extractAllTo(e,!0),await Er.default.unlink(i),console.log(Oc())}catch(r){throw console.error(Tc(r)),r}}var al=t=>{try{return new URL(t),!0}catch{return!1}};async function cl(t,e){return await(0,Jc.default)(t,process.cwd(),e),ie.default.resolve(process.cwd(),ie.default.basename(t))}async function pl(t){return await Bc(t,process.cwd()),t=t.split("?")[0],ie.default.resolve(process.cwd(),ie.default.basename(t))}async function Q(t){if(!t)return process.cwd();if(al(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await pl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],n=s.slice(1,3)[1];console.log(_c(r,n));let i=ie.default.basename(e.pathname),o=await cl(t,Sc(i));return console.log(Pc(i)),o}}return ie.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 ll(t){try{return zc.default.readFileSync(t,"utf8")}catch{return""}}function fl(t){return(0,Gc.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function ul(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function ml(t,e){let s=fl(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function dl(t){let e=z.default.join(t,".gitignore"),s=ll(e),r=(0,Hc.default)();return s?r.add(s):console.log(kc(t)),(await(0,Vc.default)("**/*",{cwd:t,dot:!0})).filter(i=>!r.ignores(i))}async function Xc(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),n=z.default.join(r,e),i=s.zipSource?t:n,o=require(z.default.join(i,"manifest.json")),c=ml(o,s),p=ul(e),l=z.default.join(n,`${c}.${p}`),u=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log(Ec(e));let d=new $r.default;(await dl(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(u)}if(s.zip){console.log(""),console.log(jc(l));let d=new $r.default;d.addLocalFolder(n),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log($c(e,c,u,l))):s.zip?(console.log(""),console.log(Cc(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Dc(c,p,e,u)))}catch(r){throw console.error(Lc(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)&&gl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function gl(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",n=B(s,{...e,browser:r,mode:"production"}),i=n.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=ee(s)({...n,plugins:i}),p=(0,Qc.merge)(c),l=(0,Kc.default)(p);await new Promise((u,d)=>{l.run(async(g,y)=>{if(g)return console.error(g.stack||g),d(g);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()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var ip=a(require("fs")),op=a(require("path"));var Fr=a(require("path")),tp=a(require("webpack")),sp=a(require("webpack-dev-server")),rp=require("webpack-merge");function Lr(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function np(t,{...e}){let s=B(t,{...e,mode:"development"}),n=ee(t)(s),i=(0,rp.merge)(n),o=(0,tp.default)(i),c={host:"127.0.0.1",allowedHosts:"all",static:Fr.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:et(t)?void 0:{paths:[Fr.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",()=>{Lr(p)}),process.on("SIGINT",()=>{Lr(p)}),process.on("SIGTERM",()=>{Lr(p)})}var ze=a(require("path")),Ir=a(require("fs/promises"));async function Ar(t){let e=ze.default.join(t,"extension-env.d.ts"),s=ze.default.join(__dirname,"types"),r=ze.default.relative(t,s),n=process.env.EXTENSION_ENV==="development"?r:"extension-develop/dist/types",i=`// Required Extension.js types for TypeScript projects.
183
183
  // This file is auto-generated and should not be excluded.
184
184
  // If you need extra types, consider creating a new *.d.ts and
185
185
  // referencing it in the "include" array of your tsconfig.json file.
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.1",
12
+ "version": "2.0.0-alpha.2",
13
13
  "description": "The develop step of Extension.js",
14
14
  "main": "./dist/module.js",
15
15
  "types": "./dist/module.d.ts",