extension-develop 2.0.0-alpha.6 → 2.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/inject-chromium-client-loader.js +2 -2
- package/dist/inject-firefox-client-loader.js +38 -43
- package/dist/minimum-firefox-file.mjs +1 -1
- package/dist/module.js +51 -51
- package/dist/resolver-module.js +1 -1
- package/dist/run-chrome-profile/BrowserMetrics-spare.pma +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsState +3 -3
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/15145040f7f12f31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/878b0f723bb46fc9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93d81321f8c35eab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0861135386d2c738_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/218fe828c74bdb99_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8b87aab6067c9ad5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a8bfd7ab3bf7adbd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Cookies +0 -0
- package/dist/run-chrome-profile/Default/DIPS +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/index +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/index +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/LOG +2 -2
- package/dist/run-chrome-profile/Default/Extension Scripts/LOG +2 -2
- package/dist/run-chrome-profile/Default/Extension State/LOG +2 -2
- package/dist/run-chrome-profile/Default/Favicons +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/index +0 -0
- package/dist/run-chrome-profile/Default/History +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG +2 -2
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG +2 -2
- package/dist/run-chrome-profile/Default/Network Action Predictor +0 -0
- package/dist/run-chrome-profile/Default/Network Persistent State +1 -1
- package/dist/run-chrome-profile/Default/Preferences +1 -1
- package/dist/run-chrome-profile/Default/README +1 -0
- package/dist/run-chrome-profile/Default/Reporting and NEL and b/package/dist/run-chrome-profile/Default/Reporting → NEL +0 -0
- package/dist/run-chrome-profile/Default/Secure Preferences +1 -1
- package/dist/run-chrome-profile/Default/Service Worker/Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOG +2 -2
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/4cb013792b196a35_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/ba23d8ecda68de77_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/f1cdccba37924bda_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/LOG +2 -2
- package/dist/run-chrome-profile/Default/Sessions/Session_13369612028610979 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Tabs_13369613143160919 +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Shortcuts +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG +2 -2
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG +2 -2
- package/dist/run-chrome-profile/Default/TransportSecurity +1 -1
- package/dist/run-chrome-profile/Default/Visited Links +0 -0
- package/dist/run-chrome-profile/Default/Web Data +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/QuotaManager +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/000003.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/LOG +2 -2
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/000003.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG +2 -2
- package/dist/run-chrome-profile/GrShaderCache/data_0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/index +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_1 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/index +0 -0
- package/dist/run-chrome-profile/Last Version +1 -1
- package/dist/run-chrome-profile/Local State +1 -1
- package/dist/run-chrome-profile/ShaderCache/data_0 +0 -0
- package/dist/run-chrome-profile/ShaderCache/data_1 +0 -0
- package/dist/run-chrome-profile/ShaderCache/data_2 +0 -0
- package/dist/run-chrome-profile/ShaderCache/index +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/AF38EA208FBF34C2/model-info.pb +0 -0
- package/dist/run-chrome-profile/{Default/Download Service/Files/bfe06c15-9fb0-47d9-96c8-76bfcbeb6b62 → optimization_guide_model_store/40/E6DC4029A1E4B4C1/AF38EA208FBF34C2/ts.bin} +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/40/E6DC4029A1E4B4C1/AF38EA208FBF34C2/ts_spm.model +0 -0
- package/dist/run-chrome-profile/segmentation_platform/ukm_db +0 -0
- package/dist/run-chrome-profile/segmentation_platform/ukm_db-journal +0 -0
- package/package.json +2 -2
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02c29236cd5569d9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/03ada532059b8034_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0459b9a7cfd70de3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/05799f52e5952cd2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06195bf42f479a94_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/07fe48e48012f5d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0ea2c96059a665f6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0ea3b4f0e5162928_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/12ef1faa6ef6be0a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/13f437647a98d690_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/145f227183d831da_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18a6eaf2b8d9fbc0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1ebd72816b0318a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f51e51f7996f15c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/20678633ad45c417_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2238abf5762da3dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2489a6e5fef8aaf5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/257b9ada9582cd59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2801bdb9a57cff49_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2990d4ed71357caa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c8a7228e0e70e66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2e1b9c8a11107ee6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f3eb5d2d4a2ba05_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/33ce9c12870d4d23_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3432d5676097c5a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/348fb371b598ad8a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/350415634e9b147e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3754df2089a6f98b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/391767af871c7832_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3af7b7d3103f4ace_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3b442ce473a38989_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/40106f9b01933186_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/42bf217bf0a7e353_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/465712846aea785a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/470625340df0dfe1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ab06f1798ba83da_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4fcac79a0c1e1209_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/51491aecf6b1cee3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/52f321c33b61553e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54843c16a8099926_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/57ee31f65792ee6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5db3346161a360a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/62c7b12575514dd8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/682976dc8929dd6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6bc68d2e236f96ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6c53d9f7f750a482_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d4c2ade9755855d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/75ab22151891a422_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76104defb65db535_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76b768fac1dc203a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/78ed79bc5487503a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a7c4b374713c348_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7bf1a9bcdeb4a7c3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84b039c3dce94d8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8652112b6b47c8b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c254b6cc2f9386c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c254b6cc2f9386c_s +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8cd491e55ec2145c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8d15b7cb73fbdeb6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8d664b746d6de0c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91012f57f9a93f0a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91395c0d10305e0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91f1060db473f52b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93b57958efb5aa68_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9669ea8a3f42aa8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/99e52c51723f6677_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a122405e9d8df54d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a668aabbaa0c7a63_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b139f7fe5f22a238_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b4d7a9ccda716cbf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b78e34266a3d86fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b7fa6be9247e36e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b950b5c2fef0ffee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bb73f56848fa23a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd47e3de76bb850d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c04715c53c59ea58_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c1eac51e21ad7087_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c1eac51e21ad7087_s +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c946e07ac7aca023_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d101f7601b3e93d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d3efbf950afdd763_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d5ef4102b488ce71_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d72eac7c5c5d934c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dff742c317ed3c37_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e21225da5286558f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e50c540666156d26_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e7941bcf8caa54d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e85ac8952d7783d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea002b3ad1e1dac9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ee78b6ff81595a2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef174336c496ff3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fc33d55f53e3840a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fec787df53d1fc90_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/067673da229925b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/09ebbbf86d3957d1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a104ab1be75c9ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a8ff373976a81f8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1995cf66fbe72164_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2265af44069323e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2290104c219b710e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/252ff20f6c4ad41a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/29e4cc04c426d148_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3032ae959113cef9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/32205809d2db82fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3641b3a1972d5585_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3ab5cfc161dd9d59_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/50e812c864e921e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5130b1979b8f3180_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5925a9fed0828b1a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/59bf18886d946b45_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/60605a2001016a5f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/646b4abc4d2cb194_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/701aeeb23987a09f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/74aa2a778d4f560e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/76daca9c4adf11b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7f22313d4c1575dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/86a1e305a40b55e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8746c7a361028fbd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8c2133aa69d5888a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9a9299ecfcf06184_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d15e209f9b5dff9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d5444cccaaad4a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a475220d34fb49fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a8461c1da16110cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aa9c4d643d3e078d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ab111c103a093afe_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ab6a1b85cb3e3e18_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aba975aebc649b70_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/acefba6d46935197_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aded9cecdad563a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b09a7279f3c055b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b1072107c65411ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b41673332e77bbaa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b6911f2a21e78f5f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b7ba99089daea5e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b9e93b46383d04a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c507467488260492_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c90703cdd5c1e252_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cc92de16a209a21a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cd0639554fa9c5ee_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d5862a4e25d4fa4a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8422ce5022907b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dfa228b63bc75053_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dfadf478342431e2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e88a435dcfad84b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e9cbe518f3e3f4c9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ea12d9bacfdec6c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f33ab412cf9dd421_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f4741c2f2373503b_0 +0 -0
- package/dist/run-chrome-profile/Default/SCT Auditing Pending Reports +0 -1
- package/dist/run-chrome-profile/Default/Sessions/Session_13369248220109744 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Tabs_13369248282817730 +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOG +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/000003.log +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOG +0 -2
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/MANIFEST-000001 +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/{2B4FB0CD70D37A3B → 83498AAC5129B4C9}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/{2B4FB0CD70D37A3B → 83498AAC5129B4C9}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{12059E94B1D721E9 → 091363AF9AAB870D}/VERSION.txt +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{12059E94B1D721E9 → 091363AF9AAB870D}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{12059E94B1D721E9 → 091363AF9AAB870D}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/{12059E94B1D721E9 → 091363AF9AAB870D}/override_list.pb.gz +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/{D75F14FC82782FA2 → 1FAC079E150B82B8}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/{D75F14FC82782FA2 → 1FAC079E150B82B8}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/{EF883883595D3464 → 0A8459293DCDF4EC}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/{EF883883595D3464 → 0A8459293DCDF4EC}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{3A9A7DA951DE9C51 → 36D0CEB2EE29E24C}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{3A9A7DA951DE9C51 → 36D0CEB2EE29E24C}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/{3A9A7DA951DE9C51 → 36D0CEB2EE29E24C}/visual_model_desktop.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/{FFBCC5E2C9844D5E → E8E600AB84953329}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/{FFBCC5E2C9844D5E → E8E600AB84953329}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/{18A4D0F67FA8506A → 6742B22ABD83D206}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/{18A4D0F67FA8506A → 6742B22ABD83D206}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/{55969D51D0C100B3 → 96C88A9013086DAA}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/{55969D51D0C100B3 → 96C88A9013086DAA}/model.tflite +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/{4662B97715A7FA9A → 982B7EFA69515501}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/{4662B97715A7FA9A → 982B7EFA69515501}/model.tflite +0 -0
- /package/dist/run-chrome-profile/{Default/VideoDecodeStats/LOCK → optimization_guide_model_store/40/E6DC4029A1E4B4C1/AF38EA208FBF34C2/model.tflite} +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/{D611AD771F790F0B → 61ACFC9F9DA677F3}/model-info.pb +0 -0
- /package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/{D611AD771F790F0B → 61ACFC9F9DA677F3}/model.tflite +0 -0
package/dist/module.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
"use strict";var
|
|
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})},Ar=(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)):{},Ar(e||!t||!t.__esModule?Ge(s,"default",{value:t,enumerable:!0}):s,t)),Ep=t=>Ar(Ge({},"__esModule",{value:!0}),t);var Ns=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.7",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:()=>tp,extensionDev:()=>cp,extensionPreview:()=>mp,extensionStart:()=>bp});module.exports=Ep(bl);var Yc=a(require("fs")),Kc=a(require("path")),Qc=a(require("webpack")),ep=require("webpack-merge");var ze=a(require("path"));var di=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),fi=a(require("dotenv-webpack"));var qs=a(require("path")),u=require("@colors/colors/safe");var Mr=a(require("path")),Xe=Mr.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 Tr(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Rr(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 Nr(t,e,s){return`${w(t,"info")} ${(0,u.magenta)(e)} Integration Found
|
|
2
2
|
|
|
3
|
-
Installing required setup dependencies via ${(0,u.brightYellow)(s)}. This is a one time operation...`}function
|
|
3
|
+
Installing required setup dependencies via ${(0,u.brightYellow)(s)}. This is a one time operation...`}function qr(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
|
|
4
4
|
|
|
5
|
-
Run the program again to start hacking with ${(0,u.magenta)(e)} support.`}function
|
|
5
|
+
Run the program again to start hacking with ${(0,u.magenta)(e)} support.`}function Ur(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
|
|
7
|
+
Installing ${(0,u.magenta)(e)} dependencies in Extension.js root. This only happens for authors and contributors.`}function Wr(t,e){return`${w(t,"success")} ${e} Dependencies Installed ${(0,u.brightGreen)("Successfully")}.`}function Br(t,e,s){return`${w(t,"error")} ${(0,u.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
|
|
9
|
+
Failed to detect package manager or install ${(0,u.magenta)(e)} dependencies: ${(0,u.red)(s?.toString()||"")}`}function Jr(t){return`${w(t,"error")} No Service Worker Support
|
|
10
10
|
|
|
11
11
|
Firefox does not support the ${(0,u.brightYellow)("background.service_worker")} field yet.
|
|
12
12
|
Update your manifest.json file to use ${(0,u.brightYellow)("background.scripts")} instead.
|
|
13
13
|
|
|
14
|
-
Read more: ${(0,u.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function
|
|
14
|
+
Read more: ${(0,u.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function zr(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
|
|
16
|
+
Manifest includes insecure content-security-policy value ${(0,u.brightYellow)("'unsafe-eval'")} in directive ${(0,u.brightBlue)("'script-src'")}.`}function Hr(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
|
|
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 Vr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
|
|
19
19
|
|
|
20
20
|
Field ${(0,u.brightYellow)("web_accessible_resources")} must be a string array in Manifest version 2.
|
|
21
21
|
|
|
22
|
-
Read more: ${Pe(e)}`}function
|
|
22
|
+
Read more: ${Pe(e)}`}function Gr(t,e){return`${w(t,"error")} Wrong Manifest Field Type
|
|
23
23
|
|
|
24
24
|
Field ${(0,u.brightYellow)("web_accessible_resources")} must be an array of objects in Manifest version 3.
|
|
25
25
|
|
|
26
|
-
Read more: ${Pe(e)}`}function
|
|
26
|
+
Read more: ${Pe(e)}`}function Xr(t,e,s){let i=s?.schemaPath?.split("/"),n=i?.slice(i.length-2).shift();return`${w(t,"error")} Deprecated Field
|
|
27
27
|
|
|
28
28
|
Field ${(0,u.brightYellow)(n||"")} is deprecated in Manifest V3. Update your manifest.json file to run your extension.
|
|
29
29
|
|
|
30
|
-
Read more: ${Pe(e)}`}function
|
|
30
|
+
Read more: ${Pe(e)}`}function Zr(t,e,s){let r=e?.instancePath.replaceAll("/",".").slice(1)||"",i=e?.params.type;return`${w(t,"error")} Invalid Manifest Field
|
|
31
31
|
|
|
32
32
|
Field ${(0,u.brightYellow)(r)} must be of type ${(0,u.brightBlue)(i)}.
|
|
33
33
|
|
|
34
|
-
Read more: ${Pe(s)}`}function
|
|
34
|
+
Read more: ${Pe(s)}`}function Yr(t,e,s){return`${w(t,"error")} Missing Required Manifest Field
|
|
35
35
|
|
|
36
36
|
Field ${(0,u.brightYellow)(s||"")} is required. Update your manifest.json file to run your extension.
|
|
37
37
|
|
|
38
|
-
Read more: ${Pe(e)}`}function
|
|
38
|
+
Read more: ${Pe(e)}`}function Kr(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
|
|
41
|
+
Remove the duplicate entry and try again.`;if(e.startsWith("content_scripts"))return r}function Qr(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
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(
|
|
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(qs.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})
|
|
46
46
|
|
|
47
47
|
`:r;return`${w(t,"error")} File Not Found
|
|
48
48
|
|
|
@@ -54,60 +54,60 @@ ${n?`Check the ${(0,u.brightYellow)("pages")} folder in your project root direct
|
|
|
54
54
|
|
|
55
55
|
Check the ${(0,u.brightYellow)(e)} field in your manifest.json file.
|
|
56
56
|
|
|
57
|
-
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function
|
|
57
|
+
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function ei(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
|
|
59
|
+
Ensure you have a manifest.json file at the root directory of your project.`}function ti(t,e){return`${w(t,"error")} Invalid Manifest
|
|
60
60
|
|
|
61
|
-
Update your manifest.json file and try again. `+e}function
|
|
61
|
+
Update your manifest.json file and try again. `+e}function si(t,e){let s=e&&`${(0,u.gray)("PATH")} ${(0,u.red)("REMOVED")} ${(0,u.underline)(e)}
|
|
62
62
|
`,r=t&&`${(0,u.gray)("PATH")} ${(0,u.brightGreen)("ADDED")} ${(0,u.underline)(t)}`;return`Manifest Entry Point Modification
|
|
63
63
|
|
|
64
64
|
Changing the path of ${(0,u.brightYellow)("<script>")} or ${(0,u.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
|
|
65
65
|
|
|
66
|
-
`+s+r}function
|
|
66
|
+
`+s+r}function ri(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
68
|
${n} ${(0,u.brightYellow)(r)} in the ${(0,u.underline)(s+"/")} folder after compilation requires a server restart.
|
|
69
69
|
|
|
70
|
-
${(0,u.gray)("PATH")} ${(0,u.underline)(i)}`}function
|
|
70
|
+
${(0,u.gray)("PATH")} ${(0,u.underline)(i)}`}function ii(t){return`${w(t,"warn")}`+v(t,"TypeScript").replace(".",`but no config file was found. Creating ${(0,u.brightYellow)("tsconfig.json")}...`)}function Us(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
72
|
${(0,u.bold)((0,u.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 ${
|
|
77
|
+
- Your extension is set as enabled in ${(0,u.underline)(i)}- No previous ${Tr(e)} browser instance is open
|
|
78
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.
|
|
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=
|
|
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=Ns().version;return`
|
|
83
83
|
\u{1F9E9} ${(0,u.brightGreen)("Extension.js")} ${(0,u.gray)(`${l}`)}
|
|
84
84
|
Extension Name ${(0,u.gray)(c)}
|
|
85
85
|
Extension Version ${(0,u.gray)(p)}
|
|
86
|
-
Extension ID ${(0,u.gray)(n)}`}function
|
|
86
|
+
Extension ID ${(0,u.gray)(n)}`}function ni(t){return`This is your first run using Extension.js via ${Tr(t)}. Welcome! \u{1F389}
|
|
87
87
|
|
|
88
|
-
\u{1F9E9} Learn more at ${(0,u.underline)("https://extension.js.org")}`}function
|
|
88
|
+
\u{1F9E9} Learn more at ${(0,u.underline)("https://extension.js.org")}`}function oi(t,e){return`${w(t,"error")} WebSocket: ${e}`}function ai(t,e,s){return`
|
|
89
89
|
|
|
90
90
|
${(0,u.bold)((0,u.red)("ERROR"))} in ${w(t,"error")} File Not Found
|
|
91
91
|
|
|
92
92
|
Check the ${(0,u.brightYellow)(e.replace("/","."))} field in your manifest.json file.
|
|
93
93
|
|
|
94
|
-
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}}`}function
|
|
94
|
+
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}}`}function ci(t,e){return`${w(t,"error")} HTML Entry Point Modification
|
|
95
95
|
|
|
96
96
|
Changing the path of ${(0,u.brightYellow)("<script>")} or ${(0,u.brightYellow)('<link rel="stylesheet">')} files after compilation requires a server restart.
|
|
97
97
|
|
|
98
|
-
${(0,u.gray)("PATH")} ${e}`}function
|
|
98
|
+
${(0,u.gray)("PATH")} ${e}`}function Cp(t,e,s){return`${w(t,"error")} File Not Found
|
|
99
99
|
|
|
100
100
|
Check your ${(0,u.brightYellow)("<script>")} tags in ${(0,u.underline)(e)}.
|
|
101
101
|
|
|
102
|
-
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function
|
|
102
|
+
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Dp(t,e,s){return`${w(t,"error")} File Not Found
|
|
103
103
|
|
|
104
104
|
Check your ${(0,u.brightYellow)("<link>")} tags in ${(0,u.underline)(e)}.
|
|
105
105
|
|
|
106
|
-
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function
|
|
106
|
+
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function Fp(t,e,s){let r=qs.default.extname(s);return`${w(t,"error")} File Not Found
|
|
107
107
|
|
|
108
108
|
Check your ${(0,u.brightYellow)("*"+r)} assets in ${(0,u.underline)(e)}.
|
|
109
109
|
|
|
110
|
-
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function
|
|
110
|
+
${(0,u.red)("NOT FOUND")} ${(0,u.underline)(s)}`}function pi(){return`${(0,u.brightYellow)("Note")}: Firefox requires a secure certificate for localhost connections, needed for the reloader to work.
|
|
111
111
|
By default, your ${(0,u.brightYellow)("manifest.json")} file is not being watched. To enable this feature, run:
|
|
112
112
|
|
|
113
113
|
npx -y mkcert-cli \\
|
|
@@ -117,35 +117,35 @@ By default, your ${(0,u.brightYellow)("manifest.json")} file is not being watche
|
|
|
117
117
|
|
|
118
118
|
This will enable the secure certificate needed for Firefox via ${(0,u.bold)("mkcert")}.
|
|
119
119
|
|
|
120
|
-
Learn more about ${(0,u.bold)("mkcert")}: ${(0,u.underline)("https://github.com/FiloSottile/mkcert")}`}function
|
|
120
|
+
Learn more about ${(0,u.bold)("mkcert")}: ${(0,u.underline)("https://github.com/FiloSottile/mkcert")}`}function li(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(Wr(i)),new di.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 qs=a(require("fs")),gi=a(require("path")),Qe=class{apply(e){let s=gi.default.join(e.options.output.path||"","hot");qs.default.existsSync(s)&&(qs.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 hi.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(qr(r,s))})}};var Ti=a(require("path")),Ri=a(require("mini-css-extract-plugin"));var Li=a(require("mini-css-extract-plugin"));var ce=a(require("path")),Ee=a(require("fs"));var ke=a(require("path")),tt=a(require("fs")),Us=require("child_process"),yi=require("detect-package-manager");function bi(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")),Ws(n||"")}function Ws(t){return t.replace(/\\/g,"/")}function S(t,e={}){if(!e)return!1;let s=Ws(t);return Object.values(e).some(i=>{if(typeof i!="string")return!1;let n=Ws(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,yi.detect)();console.log(Ur(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,Us.execSync)(i,{stdio:"inherit"}),await new Promise(n=>setTimeout(n,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(Br(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,Us.execSync)(i,{stdio:"inherit"})),console.log(Jr(t,e))}catch(r){console.error(zr(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 wi(t){return!tt.default.existsSync(ke.default.resolve(__dirname,`run-${t}-profile`))}function xi(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 vi=!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=Op(t),i=require(e),n=i.devDependencies&&i.devDependencies.tailwindcss,o=i.dependencies&&i.dependencies.tailwindcss,c=!!r&&!!(n||o);if(c&&!vi){let l=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(l,"Tailwind")),vi=!0}return c}function Op(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")),Si=a(require("fs"));var _i=!1;function je(t){let e=nt.default.join(t,"package.json"),s=nt.default.join(t,"manifest.json");if(!Si.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(!_i){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"SASS")),_i=!0}return!0}return!1}async function Pi(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")),Ei=a(require("fs"));var ki=!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(!Ei.default.existsSync(e))return!1;let n=require(e),o=n.devDependencies&&n.devDependencies.less,c=n.dependencies&&n.dependencies.less;return o||c?(ki||(process.env.EXTENSION_ENV==="development"&&console.log(v(i,"LESS")),ki=!0),!0):!1}async function ji(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 Ap(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 $i(t,e){if(!Ap(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")),Fi=a(require("fs"));var Ci=!1;function Ce(t){let e=ct.default.join(t,"package.json"),s=ct.default.join(t,"manifest.json");if(!Fi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.vue,n=r.dependencies&&r.dependencies.vue;if((i||n)&&!Ci){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Vue")),Ci=!0}return!!i||!!n}async function Di(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=Li.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 $i(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 Ai(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 Ii=!1;function Oi(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=!!Ai(t);if(i&&!Ii){let o=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(o,"Stylelint")),Ii=!0}return i}async function Mi(t){if(!Oi(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:Oi(t)?Ai(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=Ti.default.dirname(this.manifestPath),r=[new Ri.default];r.forEach(p=>p.apply(e));let i=await Mi(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 Pi(s,this.mode),c=await ji(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 Bs=a(require("path"));var fe=a(require("path")),mt=a(require("fs"));var ut=a(require("path")),qi=a(require("fs"));var Ni=!1;function X(t){let e=ut.default.join(t,"package.json"),s=ut.default.join(t,"manifest.json");if(!qi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.preact,n=r.dependencies&&r.dependencies.preact;if((i||n)&&!Ni){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Preact")),Ni=!0}return!!i||!!n}async function Ui(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 Wi=!1;function R(t){let e=ue.default.join(t,"package.json");if(!ft.default.existsSync(e))return!1;let s=Tp(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 Wi||((o||c)&&(s?process.env.EXTENSION_ENV==="development"&&console.log(v(n,"TypeScript")):(console.log(oi(i)),Rp(t))),Wi=!0),!!s&&!!(o||c)}function Mp(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 Tp(t){let e=ue.default.join(t,"tsconfig.json");if(ft.default.existsSync(e))return e}function Rp(t){ft.default.writeFileSync(ue.default.join(t,"tsconfig.json"),JSON.stringify(Mp(t,{mode:"development"}),null,2))}async function Bi(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 Ji=!1,zi=[".babelrc",".babelrc.json",".babelrc.js",".babelrc.cjs","babel.config.json","babel.config.js","babel.config.cjs"];function Np(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=zi.some(c=>mt.default.existsSync(fe.default.join(t,c)))||!!i||!!n;if(o&&!Ji){let p=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(v(p,"Babel")),Ji=!0}return o}function qp(t){for(let e of zi){let s=fe.default.join(t,e);if(mt.default.existsSync(s))return s}}function Up(t,e){let s=require("babel-preset-modern-browser-extension").default;return{cacheDirectory:!1,cacheCompression:!1,babelrc:!1,configFile:qp(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 Hi(t,e){if(!Np(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 Bi(e);return{plugins:void 0,loaders:[{test:s,include:e,exclude:/node_modules/,loader:require.resolve("babel-loader"),options:Up(e,{mode:r,typescript:i})}],alias:void 0}}var dt=a(require("path")),Gi=a(require("fs"));var Vi=!1;function me(t){let e=dt.default.join(t,"package.json"),s=dt.default.join(t,"manifest.json");if(!Gi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.react,n=r.dependencies&&r.dependencies.react;if((i||n)&&!Vi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"React")),Vi=!0}return!!i||!!n}async function Xi(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=Bs.default.dirname(this.manifestPath),r=await Hi(e,s),i=await Xi(s),n=await Ui(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:[Bs.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 An=a(require("path"));var Zi=a(require("path"));function Yi(t,e){if(!e||!e.action||!e.action.default_popup)return;let s=e.action.default_popup;return Zi.default.join(t,s)}var Ki=a(require("path"));function Qi(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let s=e.browser_action.default_popup;return Ki.default.join(t,s)}var ht=a(require("path"));function en(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 tn=a(require("path"));function sn(t,e){if(!e||!e.devtools_page)return;let s=e.devtools_page;return tn.default.join(t,s)}var Js=a(require("path"));function rn(t,e){if(e.options_page){let r=e.options_page;return Js.default.join(t,r)}if(!e||!e.options_ui||!e.options_ui.page)return;let s=e.options_ui.page;return Js.default.join(t,s)}var nn=a(require("path"));function on(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let s=e.page_action.default_popup;return nn.default.join(t,s)}var an=a(require("path"));function cn(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}`]=an.default.join(t,n);return r}var pn=a(require("path"));function ln(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let s=e.side_panel.default_path;return pn.default.join(t,s)}var un=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 un.default.join(t,s)}function Fe(t,e){return{"action/default_popup":Yi(t,e),"browser_action/default_popup":Qi(t,e),...en(t,e),devtools_page:sn(t,e),"options_ui/page":rn(t,e),"page_action/default_popup":on(t,e),...cn(t,e),"side_panel/default_path":ln(t,e),"sidebar_action/default_panel":fn(t,e)}}var zs=a(require("path"));function mn(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return zs.default.join(t,e.action.default_icon);let s=[];for(let r in e.action.default_icon)s.push(zs.default.join(t,e.action.default_icon[r]));return s}var Hs=a(require("path"));function dn(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let s=[];if(typeof e.browser_action.default_icon=="string")return Hs.default.join(t,e.browser_action.default_icon);for(let r in e.browser_action.default_icon){let i=e.browser_action.default_icon[r]=Hs.default.join(t,e.browser_action.default_icon[r]);s.push(i)}return s}var Vs=a(require("path"));function gn(t,e){if(!(!e||!e.browser_action||!e.browser_action.theme_icons)){for(let s of e.browser_action.theme_icons)s.light&&(s.light=Vs.default.join(t,s.light)),s.dark&&(s.dark=Vs.default.join(t,s.dark)),s.size&&delete s.size;return e.browser_action.theme_icons}}var hn=a(require("path"));function yn(t,e){if(!e||!e.icons)return;let s=[];for(let r in e.icons){let i=hn.default.join(t,e.icons[r]);s.push(i)}return s}var Gs=a(require("path"));function bn(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return Gs.default.join(t,e.page_action.default_icon);let s=[];for(let r in e.page_action.default_icon){let i=Gs.default.join(t,e.page_action.default_icon[r]);s.push(i)}return s}var wn=a(require("path"));function xn(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:wn.default.join(t,e.sidebar_action.default_icon)}function vn(t,e){return{action:mn(t,e),browser_action:dn(t,e),"browser_action/theme_icons":gn(t,e),icons:yn(t,e),page_action:bn(t,e),sidebar_action:xn(t,e)}}var _n=a(require("path"));function Sn(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}`]=_n.default.join(t,i.path)}),s)}var Pn=a(require("path"));function kn(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let s=e.storage.managed_schema;return Pn.default.join(t,s)}function En(t,e){return{...Sn(t,e),"storage/managed_schema":kn(t,e)}}var jn=a(require("path"));function $n(t,e){if(!e||!e.background)return;let s=e.background.scripts;if(s)return s.map(r=>jn.default.join(t,r))}var Cn=a(require("path"));function Fn(t,e){if(!e||!e.background)return;let s=e.background.service_worker;if(s)return Cn.default.join(t,s)}var Xs=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=>Xs.default.join(t,o))},r=n=>{if(n.css?.length!==0)return n.css?.map(o=>Xs.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 Ln=a(require("path"));function In(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let s=e.user_scripts.api_script;return Ln.default.join(t,s)}function De(t,e){return{"background/scripts":$n(t,e),"background/service_worker":Fn(t,e),...Dn(t,e),"user_scripts/api_script":In(t,e)}}function On(t){if(!(!t||!t.web_accessible_resources||!t.web_accessible_resources.length))return t.web_accessible_resources}function Wp(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 Mn({manifestPath:t}){let e=An.default.dirname(t),s=require(t),r=Wp(s);return{html:Fe(e,r),icons:vn(e,r),json:En(e,r),scripts:De(e,r),web_accessible_resources:On(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 Tn({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")),Rn=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 Rn.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 Nn=a(require("fs")),St=a(require("webpack")),qn=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=Nn.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(ri(l,c)));return}let n=JSON.stringify(i,null,2);s.emitAsset("manifest.json",new qn.sources.RawSource(n))})})}};var jt=require("webpack");function Un(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 Wn=a(require("path"));var Pt=t=>Wn.default.basename(t);function Bn(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 Jn(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 zn(t,e){return{...Un(t,e),...Bn(t,e),...Jn(t,e)}}var Vn=a(require("path"));var Hn=t=>Vn.default.basename(t);function Gn(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/${Hn(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([s,r])=>[s,g(`action/${Hn(r)}`,r,e)]))}}}}function Xn(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 Zn(t,e){return{...Gn(t,e),...Xn(t,e),...kt(t,e)}}function Yn(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:g("background/page.html",t.background.page,e)}}}}function Kn(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 Qn(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 eo(t,e){return t.devtools_page&&{devtools_page:g("devtools_page.html",t.devtools_page,e)}}var to=a(require("path"));var Bp=t=>to.default.basename(t);function so(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([s,r])=>[s,g(`icons/${Bp(r)}`,r,e)]))}}function ro(t,e){return t.options_page&&{options_page:g("options_ui/page.html",t.options_page,e)}}function io(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 oo=a(require("path"));var no=t=>oo.default.basename(t);function ao(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/${no(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/${no(r)}`,r,e)]))}}}}function co(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 po=a(require("path"));var Jp=t=>po.default.basename(t);function lo(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/${Jp(t.sidebar_action.default_icon)}`,t.sidebar_action.default_icon,e)}}}}function uo(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:g("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var fo=a(require("path"));var zp=t=>fo.default.basename(t);function mo(t,e){return t.theme&&{theme:{...t.theme,...t.theme.images&&{images:{...t.theme.images,theme_frame:g(`theme/images/${zp(t.theme.images.theme_frame)}`,t.theme.images.theme_frame,e)}}}}}function go(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 ho(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function yo(t,e){return{...Yn(t,e),...Kn(t,e),...Qn(t,e),...eo(t,e),...so(t,e),...ro(t,e),...io(t,e),...ao(t,e),...co(t,e),...kt(t,e),...lo(t,e),...uo(t,e),...mo(t,e),...go(t,e),...ho(t)}}function bo(t,e,s){let r=e||require(t);return JSON.stringify({...r,...yo(r,s),...zn(r,s),...Zn(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=bo(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 wo=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=>{wo.default.existsSync(i)&&(r.has(i)||(r.add(i),s.fileDependencies.add(i)))})})}};var xo=a(require("fs")),vo=a(require("path")),Ft=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=vo.default.extname(d),$=require(this.manifestPath).name||"Extension.js",P=ae($,p,d);xo.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:Ft.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT},()=>{let r=Ft.default.WebpackError;this.handleErrors(s,r)})})}};var _o=a(require("fs")),Lt=a(require("webpack"));var Dt=class{manifestPath;browser;includeList;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.includeList=e.includeList}flattenAndSort(e){return e.flat(1/0).sort()}apply(e){e.hooks.watchRun.tapAsync("manifest:throw-if-recompile-is-needed",(s,r)=>{if((s.modifiedFiles||new Set).has(this.manifestPath)){let n=s.options.context||"",o=`${n}/package.json`;if(!_o.default.existsSync(o)){r();return}let c=require(this.manifestPath),p=rt(c,this.browser),l=this.flattenAndSort(Object.values(Fe(n,p))),f=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||"{}"),P=this.flattenAndSort(Object.values(Fe(n,$))),q=this.flattenAndSort(Object.values(De(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=ii(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 Dt({manifestPath:this.manifestPath,browser:this.browser,includeList:this.includeList}).apply(e)}};var er=a(require("path"));var Ys=a(require("fs")),Mt=a(require("webpack")),jo=require("webpack");var So=a(require("fs")),he=a(require("path")),Po=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 F(t,e){let s={css:[],js:[],static:[]};if(!t)return s;let r=e||So.default.readFileSync(t,{encoding:"utf8"}),i=Po.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 ko(t,e,s){let r=Object.keys(t).find(n=>{let o=t[n];return t[n]===e||F(o)?.js?.includes(e)||F(o)?.css?.includes(e)})||"",i=Zs(e);return r?`/${r.replace(i,"")}${s}`:`${e.replace(i,"")}${s}`}function Zs(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 Eo(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(!Ys.default.existsSync(p)){let f=ae(r,c,p);i.warnings.push(new Mt.default.WebpackError(f));return}let l=Ys.default.readFileSync(p,"utf8");if(!S(p,this.excludeList)){let f=new jo.sources.RawSource(l),d=Z(c,".html");i.emitAsset(d,f)}}}})})}};var Tt=a(require("fs")),ye=a(require("path")),$o=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=F(o,l)?.static,d=[...new Set(f)];for(let h of d)if(!h.includes("public/")){if(!Tt.default.existsSync(h)&&!Eo(h,this.includeList)&&!ye.default.basename(h).startsWith("#")){let U=Ze(require(this.manifestPath).name,o,h);s.warnings.push(new $o.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=F(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),Mr=ye.default.join("assets",ye.default.basename(H));s.getAsset(Mr)||s.emitAsset(Mr,W)})}else s.emitAsset(P,$)}}}}})})}};var Co=a(require("path")),Ks=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(!Ks.default.existsSync(n))return;let o=F(n),c=o?.js||[],p=o?.css||[],l=[...c,...p].filter(f=>!S(f,this.excludeList));if(e.options.mode==="development"){let f=Co.default.resolve(__dirname,"minimum-script-file.mjs");l.push(f)}Ks.default.existsSync(n)&&(S(n,this.excludeList)||(e.options.entry={...e.options.entry,[i]:{import:l}}))}}}};var Ut=require("webpack");var Qs=a(require("fs")),Y=a(require("path")),D=a(require("parse5-utils"));function Fo(t,e,s,r,i){let n=Qs.default.readFileSync(s,{encoding:"utf8"}),o=D.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=Zs(P),U=S(Y.default.resolve($,d),i),H=Y.default.join("/",Y.default.normalize(d)),_e=bi(P,r);switch(y){case"script":{U?l=D.default.setAttribute(h,"src",H):(l=D.default.remove(h),p=!0);break}case"css":{U?l=D.default.setAttribute(h,"href",H):(l=D.default.remove(h),c=!0);break}case"staticHref":case"staticSrc":{if(U)l=D.default.setAttribute(h,y==="staticSrc"?"src":"href",H);else if(_e){let W=ko(r,P,q);l=D.default.setAttribute(h,y==="staticSrc"?"src":"href",W)}else{let W=Y.default.join("assets",Y.default.basename(P,q));Qs.default.existsSync(P)&&(l=D.default.setAttribute(h,y==="staticSrc"?"src":"href",Z(W,"",!0)))}break}default:break}}),f.nodeName==="head"&&c&&t.options.mode==="production"){let d=D.default.createNode("link");d.attrs=[{name:"rel",value:"stylesheet"},{name:"href",value:Z(e,".css",!0)}],D.default.append(f,d)}if(f.nodeName==="body"&&(p||t.options.mode!=="production")){let d=D.default.createNode("script");d.attrs=[{name:"src",value:Z(e,".js",!0)}],D.default.append(f,d)}}return D.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=Fo(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 Do=a(require("fs")),Lo=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:Lo.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=F(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 Io=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(!Io.default.existsSync(i)){let o=require(this.manifestPath).name||"Extension.js";console.error(ae(o,s,i)),process.exit(1)}this.initialHtmlAssets[i]={js:F(i)?.js||[],css:F(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=F(o)?.js||[],p=F(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(li(d,o))}}i()})}};var Oo=a(require("fs")),Ao=require("webpack");function Vp(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(!Oo.default.existsSync(c))return null;let p=F(c),l=p?.js||[],f=p?.css||[];if(l.includes(n)||f.includes(n)){let d=Ze(require(t).name,c,n);return new Ao.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=Vp(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:[er.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(er.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 tr=a(require("fs")),Mo=a(require("path"));function To(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>{let n=tr.default.existsSync(i)&&!S(i,e),o=Mo.default.extname(i);return n&&(o===".js"||o===".mjs"||o===".jsx"||o===".ts"||o===".tsx")})}function Ro(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>tr.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=To(n,this.excludeList),c=Ro(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"),Gp=['var isBrowser = !!(() => { try { return browser.runtime.getURL("/") } catch(e) {} })()','var isChrome = !!(() => { try { return chrome.runtime.getURL("/") } catch(e) {} })()'],Xp=[...Gp,`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=Zp();return r.addRuntimeModule(i,n),!0})})}};function Zp(){class t extends te.RuntimeModule{constructor(){super("publicPath",te.RuntimeModule.STAGE_BASIC)}generate(){let s=this.compilation?.outputOptions.publicPath;return te.Template.asString([...Xp,`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(mi(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 rr=a(require("path")),Ae=a(require("fs")),ir=a(require("webpack")),Me=require("webpack");var be=a(require("path")),Zt=a(require("fs"));function sr(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 ir.default.WebpackError(si(i)));return}if(s.errors.length>0)return;let n=sr(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 ir.default.WebpackError(Ye(i,c,l)));return}let f=Ae.default.readFileSync(l),d=new Me.sources.RawSource(f),h=e.options.context||rr.default.dirname(this.manifestPath);if(!S(l,this.excludeList)){let y=rr.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=sr(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")),No=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 No.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 nr=a(require("fs")),qo=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(!nr.default.existsSync(p))continue;if(!S(p,this.excludeList)){let l=nr.default.readFileSync(p),f=new ts.sources.RawSource(l),d=qo.default.basename(p),y=`${n.endsWith("theme_icons")?n.replace("theme_icons",""):n}/${d}`;s.emitAsset(y,f)}}}})})}};var Uo=a(require("fs")),Wo=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:Wo.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);Uo.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")),Bo=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=Bo.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")),or=a(require("chokidar"));var as=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,s,r){let i=N.relative(process.cwd(),s),p=ni(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=or.watch(r,{ignoreInitial:!0}),o=or.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=Mn({manifestPath:s}),i=Tn({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 Jo=a(require("path")),zo=a(require("ws")),us=a(require("browser-extension-manifest-fields"));function ls(t,e){t.clients.forEach(s=>{s.readyState===zo.default.OPEN&&s.send(JSON.stringify(e))})}function Ho(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}Jo.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 cr=a(require("path")),Zo=a(require("fs")),qe=a(require("ws"));var Ne=a(require("path")),Yp=a(require("http")),Go=a(require("https")),ar=a(require("fs"));var Vo=t=>{if(!ar.default.existsSync(t))return;let e=Ne.default.basename(t);return ar.default.readFileSync(Ne.default.join(__dirname,"certs",e))};function Xo(t,e){let s={key:Vo(Ne.default.join(__dirname,"certs","localhost.key")),cert:Vo(Ne.default.join(__dirname,"certs","localhost.cert"))},r=Go.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 Kp(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:Xo(t,e+2).server});default:return new qe.default.Server({host:"localhost",port:8888})}}async function Yo(t,e){let s=t.options.context||"",r=require(cr.default.join(s,"manifest.json")),i=r.name||"Extension.js",n=e.port||8e3,o=Kp(i,n,e.browser);if(o.on("connection",c=>{c.send(JSON.stringify({status:"serverReady"})),c.on("error",p=>{console.log(ci(i,p))}),c.on("message",p=>{let l=JSON.parse(p.toString());if(l.status==="clientReady"){let f=require(cr.default.join(s,"manifest.json"));setTimeout(()=>{console.log(Ns(f,e.browser,l)),console.log("")},2500),wi(e.browser)&&setTimeout(()=>{console.log(ai(e.browser))},5e3)}})}),e.browser==="firefox"&&!Zo.default.existsSync(Xe)){let c=xi(r);console.log(Ns(r,e.browser,c)),console.log(""),console.log(ui()),console.log("")}return o}var Ko=a(require("path")),pr=a(require("fs"));function Qo(t,e){let s=Ko.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let r=pr.default.readFileSync(s,"utf8"),i=r.replace(/__RELOAD_PORT__/g,e.toString());i!==r&&pr.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;Qo(this.browser,this.port);let s=await Yo(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&&Ho(s,this.manifestPath,o),i()})}};var lr=a(require("path"));function ur(t,e){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[lr.default.dirname(e)],exclude:/node_modules/,use:[{loader:lr.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:e}}]})}var fr=a(require("path"));function mr(t,e){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[fr.default.dirname(e)],exclude:/node_modules/,use:[{loader:fr.default.resolve(__dirname,"./inject-firefox-client-loader"),options:{manifestPath:e}}]})}var fs=require("webpack");var dr=a(require("content-security-policy-parser"));function ea(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,dr.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 ta(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self'; "};let s=(0,dr.default)(e.extension_pages||""),r="";for(let i in s)r+=`${i} ${s.get(i)?.join(" ")}; `;return{extension_pages:r.trim()}}function sa(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 ra(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function gr(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 hr(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 yr=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?ta(s):ea(s),...s.manifest_version===3?s.permissions?{permissions:[...new Set(["scripting",...s.permissions])]}:{permissions:["scripting"]}:{},...gr(s,this.browser),...hr(s),web_accessible_resources:s.manifest_version===3?ra(s):sa(s)},i=JSON.stringify(r,null,2),n=new fs.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:fs.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)})})}},ia=yr;var br=a(require("fs")),we=a(require("path")),na=a(require("webpack-target-webextension"));var wr=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=pi(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 na.default({background:this.getEntryName(s),weakRuntimeCheck:!0}).apply(e)}},oa=wr;var xr=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){Se.includes(this.browser)&&ur(e,this.manifestPath),this.browser==="firefox"&&mr(e,this.manifestPath),new ia({manifestPath:this.manifestPath,browser:this.browser}).apply(e),new oa({manifestPath:this.manifestPath,browser:this.browser}).apply(e)}},aa=xr;var ms=class{static name="plugin-reload";manifestPath;browser;port;stats;autoReload;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.port=e.port,this.stats=e.stats,this.autoReload=e.autoReload}apply(e){e.options.mode==="development"&&new We({manifestPath:this.manifestPath,browser:this.browser,port:this.port,stats:this.stats}).apply(e),e.options.mode==="development"&&new aa({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var ca=a(require("webpack")),ds=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new ca.default.ProvidePlugin({browser:require.resolve("webextension-polyfill")}).apply(e)}};var hs=require("webpack");var gs=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:hs.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE},()=>{let r=G(s,this.manifestPath),i=this.patchManifest(r),n=new hs.sources.RawSource(i);s.updateAsset("manifest.json",n)})})}};var ys=class{static name="plugin-compatibility";manifestPath;browser;polyfill;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome",this.polyfill=e.polyfill||!1}async apply(e){this.polyfill&&this.browser!=="firefox"&&new ds({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new gs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e)}};var wa=a(require("fs"));var pa=a(require("webpack")),la=a(require("content-security-policy-parser"));function ua(t){let e=t.content_security_policy,s=t.content_security_policy?.extension_pages,r=i=>{if(!i)return;let n=(0,la.default)(i);if(n.get("script-src")&&n.get("script-src")?.includes("'unsafe-eval'")){let o=t.name||"Extension.js";return Vr(o)}};if(t.manifest_version===3){let i=e?r(s):void 0;if(i)return new pa.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(Xr(n,e));if(t.manifest_version===3&&!i)return new vr.default.WebpackError(Zr(n,e))}return null}var ma=a(require("webpack"));function da(t,e){if(e==="firefox"&&t.background?.service_worker){let s=t.name||"Extension.js";return new ma.default.WebpackError(Hr(s))}return null}var ga=a(require("path")),ha=a(require("fs")),ya=a(require("webpack"));function ba(t,e){let s=ga.default.join(e.options.context||"","_locales"),r=t.name||"Extension.js";return ha.default.existsSync(s)&&!t.default_locale?new ya.default.WebpackError(Gr(r)):null}var bs=class{options;constructor(e){this.options=e}handleRuntimeErrors(e,s,r){let i=ua(s),n=fa(s,r),o=da(s,r),c=ba(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(wa.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleRuntimeErrors(s,n,o),r()})}};var Fa=a(require("fs")),Da=a(require("ajv"));var xa={$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 va(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 _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",c=e?.params.missingProperty;t.errors.push(new Sa.WebpackError(Qr(o,s,c)))}var ka=a(require("path")),Ea=require("webpack");function ja(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(Kr(o,e,s)))}var $a=a(require("path")),Ca=require("webpack");function _r(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 Ca.WebpackError(Yr(o,s,e)))}var ws=class{options;constructor(e){this.options=e}handleSchemaErrors(e,s,r){let i=new Da.default;va(i);let n={allOf:[xa]},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"){Pa(e,l,r);return}p&&(l?.keyword==="type"&&ja(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(Fa.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleSchemaErrors(s,n,o),r()})}};var Oa=a(require("fs")),Pr=a(require("path"));var Sr=a(require("webpack"));function La(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(ei(t,r))}return null}function Ia(t,e){let s=require(t);return e.message.includes("Top-level-await is only supported in EcmaScript Modules")?new Sr.default.WebpackError(ti(s.name)):null}var xs=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=Pr.default.join(Pr.default.dirname(this.manifestPath),"package.json");if(!Oa.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=La(r,o),l=Ia(r,o);p&&(i.errors[c]=p),l&&(i.errors[c]=l)}),n()})})}};var vs=class{static name="plugin-errors";manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){new bs({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new ws({manifestPath:this.manifestPath,browser:this.browser||"chrome"}).apply(e),new xs({manifestPath:this.manifestPath}).apply(e)}};var xc=a(require("os")),Er=a(require("path"));var rc=a(require("fs")),ic=require("child_process");var re=a(require("path")),Es=a(require("fs"));var Aa={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}},Ma={...Aa},Ta={...Aa};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 _s(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 Ss(t,e){let s=Be(t),r=e=="null"?`${s} browser is not installed.
|
|
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(qr(i)),new fi.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 Ws=a(require("fs")),mi=a(require("path")),Qe=class{apply(e){let s=mi.default.join(e.options.output.path||"","hot");Ws.default.existsSync(s)&&(Ws.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 di.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(Rr(r,s))})}};var Ai=a(require("path")),Mi=a(require("mini-css-extract-plugin"));var Di=a(require("mini-css-extract-plugin"));var ce=a(require("path")),Ee=a(require("fs"));var ke=a(require("path")),tt=a(require("fs")),Bs=require("child_process"),gi=require("detect-package-manager");function hi(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")),Js(n||"")}function Js(t){return t.replace(/\\/g,"/")}function S(t,e={}){if(!e)return!1;let s=Js(t);return Object.values(e).some(i=>{if(typeof i!="string")return!1;let n=Js(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,gi.detect)();console.log(Nr(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,Bs.execSync)(i,{stdio:"inherit"}),await new Promise(n=>setTimeout(n,2e3)),process.env.EXTENSION_ENV==="development"&&(console.log(Ur(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,Bs.execSync)(i,{stdio:"inherit"})),console.log(Wr(t,e))}catch(r){console.error(Br(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 yi(t){return!tt.default.existsSync(ke.default.resolve(__dirname,`run-${t}-profile`))}function bi(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 wi=!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&&!wi){let l=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(l,"Tailwind")),wi=!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")),vi=a(require("fs"));var xi=!1;function je(t){let e=nt.default.join(t,"package.json"),s=nt.default.join(t,"manifest.json");if(!vi.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(!xi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"SASS")),xi=!0}return!0}return!1}async function _i(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")),Pi=a(require("fs"));var Si=!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(!Pi.default.existsSync(e))return!1;let n=require(e),o=n.devDependencies&&n.devDependencies.less,c=n.dependencies&&n.dependencies.less;return o||c?(Si||(process.env.EXTENSION_ENV==="development"&&console.log(v(i,"LESS")),Si=!0),!0):!1}async function ki(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 Ei(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")),$i=a(require("fs"));var ji=!1;function Ce(t){let e=ct.default.join(t,"package.json"),s=ct.default.join(t,"manifest.json");if(!$i.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.vue,n=r.dependencies&&r.dependencies.vue;if((i||n)&&!ji){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Vue")),ji=!0}return!!i||!!n}async function Ci(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=Di.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 Ei(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 Ii(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 Fi=!1;function Li(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=!!Ii(t);if(i&&!Fi){let o=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(o,"Stylelint")),Fi=!0}return i}async function Oi(t){if(!Li(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:Li(t)?Ii(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=Ai.default.dirname(this.manifestPath),r=[new Mi.default];r.forEach(p=>p.apply(e));let i=await Oi(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 _i(s,this.mode),c=await ki(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 zs=a(require("path"));var fe=a(require("path")),mt=a(require("fs"));var ut=a(require("path")),Ri=a(require("fs"));var Ti=!1;function X(t){let e=ut.default.join(t,"package.json"),s=ut.default.join(t,"manifest.json");if(!Ri.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.preact,n=r.dependencies&&r.dependencies.preact;if((i||n)&&!Ti){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"Preact")),Ti=!0}return!!i||!!n}async function Ni(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 qi=!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 qi||((o||c)&&(s?process.env.EXTENSION_ENV==="development"&&console.log(v(n,"TypeScript")):(console.log(ii(i)),Mp(t))),qi=!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 Ui(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 Wi=!1,Bi=[".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=Bi.some(c=>mt.default.existsSync(fe.default.join(t,c)))||!!i||!!n;if(o&&!Wi){let p=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&process.env.EXTENSION_ENV==="development"&&console.log(v(p,"Babel")),Wi=!0}return o}function Rp(t){for(let e of Bi){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 Ji(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 Ui(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")),Hi=a(require("fs"));var zi=!1;function me(t){let e=dt.default.join(t,"package.json"),s=dt.default.join(t,"manifest.json");if(!Hi.default.existsSync(e))return!1;let r=require(e),i=r.devDependencies&&r.devDependencies.react,n=r.dependencies&&r.dependencies.react;if((i||n)&&!zi){let c=require(s).name||"Extension.js";process.env.EXTENSION_ENV==="development"&&console.log(v(c,"React")),zi=!0}return!!i||!!n}async function Vi(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=zs.default.dirname(this.manifestPath),r=await Ji(e,s),i=await Vi(s),n=await Ni(s),o=await Ci(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:[zs.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 In=a(require("path"));var Gi=a(require("path"));function Xi(t,e){if(!e||!e.action||!e.action.default_popup)return;let s=e.action.default_popup;return Gi.default.join(t,s)}var Zi=a(require("path"));function Yi(t,e){if(!e||!e.browser_action||!e.browser_action.default_popup)return;let s=e.browser_action.default_popup;return Zi.default.join(t,s)}var ht=a(require("path"));function Ki(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 Qi=a(require("path"));function en(t,e){if(!e||!e.devtools_page)return;let s=e.devtools_page;return Qi.default.join(t,s)}var Hs=a(require("path"));function tn(t,e){if(e.options_page){let r=e.options_page;return Hs.default.join(t,r)}if(!e||!e.options_ui||!e.options_ui.page)return;let s=e.options_ui.page;return Hs.default.join(t,s)}var sn=a(require("path"));function rn(t,e){if(!e||!e.page_action||!e.page_action.default_popup)return;let s=e.page_action.default_popup;return sn.default.join(t,s)}var nn=a(require("path"));function on(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}`]=nn.default.join(t,n);return r}var an=a(require("path"));function cn(t,e){if(!e||!e.side_panel||!e.side_panel.default_path)return;let s=e.side_panel.default_path;return an.default.join(t,s)}var pn=a(require("path"));function ln(t,e){if(!e||!e.sidebar_action||!e.sidebar_action.default_panel)return;let s=e.sidebar_action.default_panel;return pn.default.join(t,s)}function De(t,e){return{"action/default_popup":Xi(t,e),"browser_action/default_popup":Yi(t,e),...Ki(t,e),devtools_page:en(t,e),"options_ui/page":tn(t,e),"page_action/default_popup":rn(t,e),...on(t,e),"side_panel/default_path":cn(t,e),"sidebar_action/default_panel":ln(t,e)}}var Vs=a(require("path"));function un(t,e){if(!e||!e.action||!e.action.default_icon)return;if(typeof e.action.default_icon=="string")return Vs.default.join(t,e.action.default_icon);let s=[];for(let r in e.action.default_icon)s.push(Vs.default.join(t,e.action.default_icon[r]));return s}var Gs=a(require("path"));function fn(t,e){if(!e||!e.browser_action||!e.browser_action.default_icon)return;let s=[];if(typeof e.browser_action.default_icon=="string")return Gs.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]=Gs.default.join(t,e.browser_action.default_icon[r]);s.push(i)}return s}var Xs=a(require("path"));function mn(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=Xs.default.join(t,s.light)),s.dark&&(s.dark=Xs.default.join(t,s.dark)),s.size&&delete s.size;return e.browser_action.theme_icons}}var dn=a(require("path"));function gn(t,e){if(!e||!e.icons)return;let s=[];for(let r in e.icons){let i=dn.default.join(t,e.icons[r]);s.push(i)}return s}var Zs=a(require("path"));function hn(t,e){if(!e||!e.page_action||!e.page_action.default_icon)return;if(typeof e.page_action.default_icon=="string")return Zs.default.join(t,e.page_action.default_icon);let s=[];for(let r in e.page_action.default_icon){let i=Zs.default.join(t,e.page_action.default_icon[r]);s.push(i)}return s}var yn=a(require("path"));function bn(t,e){return!e||!e.sidebar_action||!e.sidebar_action.default_icon?void 0:yn.default.join(t,e.sidebar_action.default_icon)}function wn(t,e){return{action:un(t,e),browser_action:fn(t,e),"browser_action/theme_icons":mn(t,e),icons:gn(t,e),page_action:hn(t,e),sidebar_action:bn(t,e)}}var xn=a(require("path"));function vn(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}`]=xn.default.join(t,i.path)}),s)}var _n=a(require("path"));function Sn(t,e){if(!e||!e.storage||!e.storage.managed_schema)return;let s=e.storage.managed_schema;return _n.default.join(t,s)}function Pn(t,e){return{...vn(t,e),"storage/managed_schema":Sn(t,e)}}var kn=a(require("path"));function En(t,e){if(!e||!e.background)return;let s=e.background.scripts;if(s)return s.map(r=>kn.default.join(t,r))}var jn=a(require("path"));function $n(t,e){if(!e||!e.background)return;let s=e.background.service_worker;if(s)return jn.default.join(t,s)}var Ys=a(require("path"));function Cn(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=>Ys.default.join(t,o))},r=n=>{if(n.css?.length!==0)return n.css?.map(o=>Ys.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 Dn=a(require("path"));function Fn(t,e){if(!e||!e.user_scripts||!e.user_scripts.api_script)return;let s=e.user_scripts.api_script;return Dn.default.join(t,s)}function Fe(t,e){return{"background/scripts":En(t,e),"background/service_worker":$n(t,e),...Cn(t,e),"user_scripts/api_script":Fn(t,e)}}function Ln(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 On({manifestPath:t}){let e=In.default.dirname(t),s=require(t),r=qp(s);return{html:De(e,r),icons:wn(e,r),json:Pn(e,r),scripts:Fe(e,r),web_accessible_resources:Ln(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 An({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")),Mn=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 Mn.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 Tn=a(require("fs")),St=a(require("webpack")),Rn=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=Tn.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(ti(l,c)));return}let n=JSON.stringify(i,null,2);s.emitAsset("manifest.json",new Rn.sources.RawSource(n))})})}};var jt=require("webpack");function Nn(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 qn=a(require("path"));var Pt=t=>qn.default.basename(t);function Un(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 Wn(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 Bn(t,e){return{...Nn(t,e),...Un(t,e),...Wn(t,e)}}var zn=a(require("path"));var Jn=t=>zn.default.basename(t);function Hn(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/${Jn(t.action.default_icon)}`,t.action.default_icon,e):Object.fromEntries(Object.entries(t.action.default_icon).map(([s,r])=>[s,g(`action/${Jn(r)}`,r,e)]))}}}}function Vn(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 Gn(t,e){return{...Hn(t,e),...Vn(t,e),...kt(t,e)}}function Xn(t,e){return t.background&&t.background.page&&{background:{...t.background,...t.background.page&&{page:g("background/page.html",t.background.page,e)}}}}function Zn(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 Yn(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 Kn(t,e){return t.devtools_page&&{devtools_page:g("devtools_page.html",t.devtools_page,e)}}var Qn=a(require("path"));var Up=t=>Qn.default.basename(t);function eo(t,e){return t.icons&&{icons:Object.fromEntries(Object.entries(t.icons).map(([s,r])=>[s,g(`icons/${Up(r)}`,r,e)]))}}function to(t,e){return t.options_page&&{options_page:g("options_ui/page.html",t.options_page,e)}}function so(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 io=a(require("path"));var ro=t=>io.default.basename(t);function no(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/${ro(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/${ro(r)}`,r,e)]))}}}}function oo(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 ao=a(require("path"));var Wp=t=>ao.default.basename(t);function co(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 po(t,e){return t.storage&&{storage:{...t.storage.managed_schema&&{managed_schema:g("storage/managed_schema.json",t.storage.managed_schema,e)}}}}var lo=a(require("path"));var Bp=t=>lo.default.basename(t);function uo(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 fo(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 mo(t){return t.web_accessible_resources&&t.web_accessible_resources.length&&{web_accessible_resources:t.web_accessible_resources}}function go(t,e){return{...Xn(t,e),...Zn(t,e),...Yn(t,e),...Kn(t,e),...eo(t,e),...to(t,e),...so(t,e),...no(t,e),...oo(t,e),...kt(t,e),...co(t,e),...po(t,e),...uo(t,e),...fo(t,e),...mo(t)}}function ho(t,e,s){let r=e||require(t);return JSON.stringify({...r,...go(r,s),...Bn(r,s),...Gn(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=ho(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 yo=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=>{yo.default.existsSync(i)&&(r.has(i)||(r.add(i),s.fileDependencies.add(i)))})})}};var bo=a(require("fs")),wo=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=wo.default.extname(d),$=require(this.manifestPath).name||"Extension.js",P=ae($,p,d);bo.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 xo=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(!xo.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=si(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 sr=a(require("path"));var Qs=a(require("fs")),Mt=a(require("webpack")),ko=require("webpack");var vo=a(require("fs")),he=a(require("path")),_o=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||vo.default.readFileSync(t,{encoding:"utf8"}),i=_o.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 So(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=Ks(e);return r?`/${r.replace(i,"")}${s}`:`${e.replace(i,"")}${s}`}function Ks(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 Po(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(!Qs.default.existsSync(p)){let f=ae(r,c,p);i.warnings.push(new Mt.default.WebpackError(f));return}let l=Qs.default.readFileSync(p,"utf8");if(!S(p,this.excludeList)){let f=new ko.sources.RawSource(l),d=Z(c,".html");i.emitAsset(d,f)}}}})})}};var Tt=a(require("fs")),ye=a(require("path")),Eo=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)&&!Po(h,this.includeList)&&!ye.default.basename(h).startsWith("#")){let U=Ze(require(this.manifestPath).name,o,h);s.warnings.push(new Eo.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),Or=ye.default.join("assets",ye.default.basename(H));s.getAsset(Or)||s.emitAsset(Or,W)})}else s.emitAsset(P,$)}}}}})})}};var jo=a(require("path")),er=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(!er.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=jo.default.resolve(__dirname,"minimum-script-file.mjs");l.push(f)}er.default.existsSync(n)&&(S(n,this.excludeList)||(e.options.entry={...e.options.entry,[i]:{import:l}}))}}}};var Ut=require("webpack");var tr=a(require("fs")),Y=a(require("path")),F=a(require("parse5-utils"));function $o(t,e,s,r,i){let n=tr.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=Ks(P),U=S(Y.default.resolve($,d),i),H=Y.default.join("/",Y.default.normalize(d)),_e=hi(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=So(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));tr.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=$o(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 Co=a(require("fs")),Do=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:Do.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(Co.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 Fo=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(!Fo.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(ci(d,o))}}i()})}};var Lo=a(require("fs")),Io=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(!Lo.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 Io.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:[sr.default.dirname(this.manifestPath)],exclude:/node_modules/,use:[{loader:require.resolve(sr.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 rr=a(require("fs")),Oo=a(require("path"));function Ao(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>{let n=rr.default.existsSync(i)&&!S(i,e),o=Oo.default.extname(i);return n&&(o===".js"||o===".mjs"||o===".jsx"||o===".ts"||o===".tsx")})}function Mo(t,e){return(Array.isArray(t)?t||[]:t?[t]:[]).filter(i=>rr.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=Ao(n,this.excludeList),c=Mo(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(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:[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 nr=a(require("path")),Ae=a(require("fs")),or=a(require("webpack")),Me=require("webpack");var be=a(require("path")),Zt=a(require("fs"));function ir(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 or.default.WebpackError(ei(i)));return}if(s.errors.length>0)return;let n=ir(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 or.default.WebpackError(Ye(i,c,l)));return}let f=Ae.default.readFileSync(l),d=new Me.sources.RawSource(f),h=e.options.context||nr.default.dirname(this.manifestPath);if(!S(l,this.excludeList)){let y=nr.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=ir(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")),To=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 To.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 ar=a(require("fs")),Ro=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(!ar.default.existsSync(p))continue;if(!S(p,this.excludeList)){let l=ar.default.readFileSync(p),f=new ts.sources.RawSource(l),d=Ro.default.basename(p),y=`${n.endsWith("theme_icons")?n.replace("theme_icons",""):n}/${d}`;s.emitAsset(y,f)}}}})})}};var No=a(require("fs")),qo=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:qo.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);No.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")),Uo=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=Uo.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")),cr=a(require("chokidar"));var as=class{manifestPath;constructor(e){this.manifestPath=e}throwCompilationError(e,s,r){let i=N.relative(process.cwd(),s),p=ri(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=cr.watch(r,{ignoreInitial:!0}),o=cr.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=On({manifestPath:s}),i=An({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 Wo=a(require("path")),Bo=a(require("ws")),us=a(require("browser-extension-manifest-fields"));function ls(t,e){t.clients.forEach(s=>{s.readyState===Bo.default.OPEN&&s.send(JSON.stringify(e))})}function Jo(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}Wo.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 lr=a(require("path")),Go=a(require("fs")),qe=a(require("ws"));var Ne=a(require("path")),Xp=a(require("http")),Ho=a(require("https")),pr=a(require("fs"));var zo=t=>{if(!pr.default.existsSync(t))return;let e=Ne.default.basename(t);return pr.default.readFileSync(Ne.default.join(__dirname,"certs",e))};function Vo(t,e){let s={key:zo(Ne.default.join(__dirname,"certs","localhost.key")),cert:zo(Ne.default.join(__dirname,"certs","localhost.cert"))},r=Ho.default.createServer(s,(i,n)=>{n.writeHead(200),n.end()});return r.on("error",i=>{throw console.error(li(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:Vo(t,e+2).server});default:return new qe.default.Server({host:"localhost",port:8888})}}async function Xo(t,e){let s=t.options.context||"",r=require(lr.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(oi(i,p))}),c.on("message",p=>{let l=JSON.parse(p.toString());if(l.status==="clientReady"){let f=require(lr.default.join(s,"manifest.json"));setTimeout(()=>{console.log(Us(f,e.browser,l)),console.log("")},2500),yi(e.browser)&&setTimeout(()=>{console.log(ni(e.browser))},5e3)}})}),e.browser==="firefox"&&!Go.default.existsSync(Xe)){let c=bi(r);console.log(Us(r,e.browser,c)),console.log(""),console.log(pi()),console.log("")}return o}var Zo=a(require("path")),ur=a(require("fs"));function Yo(t,e){let s=Zo.default.resolve(__dirname,`./extensions/${t}-manager-extension/reload-service.js`);try{let r=ur.default.readFileSync(s,"utf8"),i=r.replace(/__RELOAD_PORT__/g,e.toString());i!==r&&ur.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;Yo(this.browser,this.port);let s=await Xo(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&&Jo(s,this.manifestPath,o),i()})}};var fr=a(require("path"));function Ko(t,e,s){t.options.module.rules.push({test:/\.(js|mjs|jsx|mjsx|ts|mts|tsx|mtsx)$/,include:[fr.default.dirname(s)],exclude:/node_modules/,use:[{loader:fr.default.resolve(__dirname,"./inject-chromium-client-loader"),options:{manifestPath:s,browser:e}}]})}var mr=a(require("path"));function Qo(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-firefox-client-loader"),options:{manifestPath:s,browser:e}}]})}var ms=require("webpack");var dr=a(require("content-security-policy-parser"));function ea(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,dr.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 ta(t){let e=t.content_security_policy;if(!e)return{extension_pages:"script-src 'self'; object-src 'self'; "};let s=(0,dr.default)(e.extension_pages||""),r="";for(let i in s)r+=`${i} ${s.get(i)?.join(" ")}; `;return{extension_pages:r.trim()}}function sa(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 ra(t){let e=["/*.json","/*.js","/*.css"];return[...t.web_accessible_resources||[],{resources:e,matches:["<all_urls>"]}]}function gr(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 hr(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?ta(s):ea(s),...s.manifest_version===3?s.permissions?{permissions:[...new Set(["scripting",...s.permissions])]}:{permissions:["scripting"]}:{},...gr(s,this.browser),...hr(s),web_accessible_resources:s.manifest_version===3?ra(s):sa(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 yr=a(require("fs")),we=a(require("path")),ia=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(!yr.default.existsSync(e)&&this.manifestPath){let i=require(this.manifestPath).name||"Extension.js",n=ai(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||!yr.default.lstatSync(this.manifestPath).isFile())return;let s=require(this.manifestPath);this.handleBackground(e,this.browser,s),new ia.default({background:this.getEntryName(s),weakRuntimeCheck:!0}).apply(e)}};var br=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser||"chrome"}apply(e){Se.includes(this.browser)&&Ko(e,this.browser,this.manifestPath),this.browser==="firefox"&&Qo(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)}},na=br;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 na({manifestPath:this.manifestPath,browser:this.browser,autoReload:this.autoReload,stats:this.stats}).apply(e)}};var oa=a(require("webpack")),hs=class{manifestPath;browser;constructor(e){this.manifestPath=e.manifestPath,this.browser=e.browser}apply(e){new oa.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 ya=a(require("fs"));var aa=a(require("webpack")),ca=a(require("content-security-policy-parser"));function pa(t){let e=t.content_security_policy,s=t.content_security_policy?.extension_pages,r=i=>{if(!i)return;let n=(0,ca.default)(i);if(n.get("script-src")&&n.get("script-src")?.includes("'unsafe-eval'")){let o=t.name||"Extension.js";return zr(o)}};if(t.manifest_version===3){let i=e?r(s):void 0;if(i)return new aa.default.WebpackError(i)}return null}var wr=a(require("webpack"));function la(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 wr.default.WebpackError(Vr(n,e));if(t.manifest_version===3&&!i)return new wr.default.WebpackError(Gr(n,e))}return null}var ua=a(require("webpack"));function fa(t,e){if(e==="firefox"&&t.background?.service_worker){let s=t.name||"Extension.js";return new ua.default.WebpackError(Jr(s))}return null}var ma=a(require("path")),da=a(require("fs")),ga=a(require("webpack"));function ha(t,e){let s=ma.default.join(e.options.context||"","_locales"),r=t.name||"Extension.js";return da.default.existsSync(s)&&!t.default_locale?new ga.default.WebpackError(Hr(r)):null}var xs=class{options;constructor(e){this.options=e}handleRuntimeErrors(e,s,r){let i=pa(s),n=la(s,r),o=fa(s,r),c=ha(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(ya.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleRuntimeErrors(s,n,o),r()})}};var $a=a(require("fs")),Ca=a(require("ajv"));var ba={$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 wa(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 xa=a(require("path")),va=require("webpack");function _a(t,e,s){let r=t.options.context||"",i=xa.default.join(r,"manifest.json"),o=require(i).name||"Extension.js",c=e?.params.missingProperty;t.errors.push(new va.WebpackError(Yr(o,s,c)))}var Sa=a(require("path")),Pa=require("webpack");function ka(t,e,s){let r=t.options.context||"",i=Sa.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new Pa.WebpackError(Zr(o,e,s)))}var Ea=a(require("path")),ja=require("webpack");function xr(t,e,s){let r=t.options.context||"",i=Ea.default.join(r,"manifest.json"),o=require(i).name||"Extension.js";t.warnings.push(new ja.WebpackError(Xr(o,s,e)))}var vs=class{options;constructor(e){this.options=e}handleSchemaErrors(e,s,r){let i=new Ca.default;wa(i);let n={allOf:[ba]},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"){_a(e,l,r);return}p&&(l?.keyword==="type"&&ka(e,l,r),l?.keyword==="not"&&xr(e,l,r))}}apply(e){e.hooks.afterCompile.tapAsync("CompatPlugin (module)",(s,r)=>{let i=this.options.manifestPath,n=JSON.parse($a.default.readFileSync(i,"utf-8")),o=this.options.browser||"chrome";this.handleSchemaErrors(s,n,o),r()})}};var La=a(require("fs")),_r=a(require("path"));var vr=a(require("webpack"));function Da(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 vr.default.WebpackError(Kr(t,r))}return null}function Fa(t,e){let s=require(t);return e.message.includes("Top-level-await is only supported in EcmaScript Modules")?new vr.default.WebpackError(Qr(s.name)):null}var _s=class{manifestPath;constructor(e){this.manifestPath=e.manifestPath}apply(e){let s=_r.default.join(_r.default.dirname(this.manifestPath),"package.json");if(!La.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=Da(r,o),l=Fa(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 bc=a(require("os")),Pr=a(require("path"));var tc=a(require("fs")),sc=require("child_process");var re=a(require("path")),$s=a(require("fs"));var Ia={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}},Oa={...Ia},Aa={...Ia};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.
|
|
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
|
|
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 Ma(t){return`${E(t,"success")} Instance already running.`}function Ta(t){return`${E(t,"info")} Instance exited.`}function Ra(t){return`${E(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
|
|
135
|
+
Read more: ${(0,x.underline)("https://bugzilla.mozilla.org/show_bug.cgi?id=1573659")}.`}function Na(t,e){return`${E(t,"error")} Error launching ${Be(t)}. Error:
|
|
136
136
|
|
|
137
|
-
${(0,x.red)(e)}`}function
|
|
137
|
+
${(0,x.red)(e)}`}function qa(t,e){return`${E(t,"error")} ${(0,x.red)(e.stack)}`}function Ua(t){return`${E(t,"error")} Unable to connect to ${Be(t)}. Too many retries.`}function Wa(t,e){return`${E(t,"error")} Error while installing temporary addon: ${(0,x.red)(e)}`}function Ba(t,e){return`${E(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 Ha(t){return`${E(t,"error")} Error parsing message length.`}function Va(t){return`${E(t,"error")} MessagingClient connection closed.`}function Ga(t,e){return`${E(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Xa(t){return`${E(t,"error")} MessagingClient connection closed.`}function Za(t,e){return`${E(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Ya(t,e){return`${E(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Ka(t,e){return`${E(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Qa(t,e){return`${E(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var ec=a(require("progress"));function ks(t,e){let r=new ec.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 tc(t,e,s){if(Es.default.existsSync(re.default.resolve(__dirname,`run-${t}-profile`)))return e||re.default.resolve(__dirname,`run-${t}-profile`);let i=JSON.stringify(t==="chrome"?Ma:Ta);return s||ks(Ps(t),()=>{let n=re.default.resolve(__dirname,`run-${t}-profile`),o=re.default.join(n,"Default");Es.default.mkdirSync(o,{recursive:!0});let c=re.default.join(o,"Preferences");Es.default.writeFileSync(c,i,"utf8")}),re.default.resolve(__dirname,`run-${t}-profile`)}function sc(t){let e=Array.isArray(t.extension)?t.extension:[t.extension],s=tc(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}rc.default.existsSync(s)||(console.error(Ss(e,s)),process.exit());let r=sc(this),i=this.startingUrl?[this.startingUrl,...r]:[...r],n=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,ic.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(_s(this.browser,r.compilation.options.mode))},2e3),s=!0,i()})}};var bc=a(require("fs")),wc=require("child_process");var Je=a(require("fs")),js=a(require("path")),nc=a(require("os")),oc=a(require("which")),ac=process.platform==="darwin",el=process.platform==="win32",tl=!ac&&!el;function sl(){if(tl)try{return oc.default.sync("firefox")}catch{return null}else if(ac){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=js.default.join(nc.default.homedir(),t.slice(1));return Je.default.existsSync(t)?t:Je.default.existsSync(e)?e:null}else{let t=js.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=js.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 $s=sl();var pc=a(require("path")),Cs=a(require("fs")),kr=a(require("firefox-profile"));var rl={"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 cc(t){return{...rl,...t}}function lc(t,e){let s=cc(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 il(t,e){let s=new kr.default({destinationDirectory:t});return lc(s,e)}function nl(t,e,s){let r;if(Cs.default.statSync(e).isDirectory())r=e;else throw new Error(za(t,e));let n=new kr.default({destinationDirectory:r});return lc(n,s)}function uc(t,e,s,r){let i,n=e||pc.default.resolve(__dirname,"run-firefox-data-dir");return Cs.default.existsSync(n)?i=nl(t,n,s||{}):(r||ks(Ps(t),()=>{}),Cs.default.mkdirSync(n,{recursive:!0}),i=il(n,s||{})),i}async function fc(t,e){let{browser:s,startingUrl:r,preferences:i,userDataDir:n,browserConsole:o=!1,browserFlags:c=[]}=e,p=uc(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 yc=a(require("path"));var mc=a(require("net")),dc=a(require("events"));function ol(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(Ha(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 Fs=class extends dc.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=mc.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(Va("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(Ga("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(Xa("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(Za("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}=ol("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Ya("firefox",r))),i&&this.disconnect(),!i):s?(this.handleMessage(s),!0):!1}handleMessage(e){if(!e.from){this.emit("error",new Error(Ka("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(Qa("firefox",JSON.stringify(e))))}onError(e){this.emit("error",e)}onEnd(){this.emit("end")}onTimeout(){this.emit("timeout")}};function gc(t){return t instanceof Error?String(t):`${t.error}: ${t.message}`}function hc(t,e){return Array.isArray(t)&&t.includes(e.code)?!0:e.code===t}var al=150,cl=1e3,Ds=class{options;constructor(e){this.options=e}async connectClient(e){let s;for(let r of Array.from({length:al}))try{let i=new Fs;return await i.connect(e),i}catch(i){if(hc("ECONNREFUSED",i))await new Promise(n=>setTimeout(n,cl)),s=i;else throw console.error(Wa(this.options.browser,i.stack)),i}throw console.error(Ba(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=yc.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=gc(d);throw new Error(Ja(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 Ls=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 "${$s}" --foreground --no-remote`;bc.default.existsSync($s)||(console.error(Ss(this.browser,$s)),process.exit());let r=await fc(e,this),i=`${s} ${r}`;ie=(0,wc.exec)(i,(o,c,p)=>{if(o!=null)throw o;p.includes("Unable to move the cache")?console.log(Ra(this.browser)):(console.log(Na(this.browser)),process.exit())}),process.env.EXTENSION_ENV==="development"&&(ie.stdout?.pipe(process.stdout),ie.stderr?.pipe(process.stderr));let n=new Ds(this);try{await n.installAddons(e)}catch(o){o?.toString()?.includes("background.service_worker is currently disabled")&&(console.error(qa(this.browser)),process.exit(1)),console.error(Ua(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(_s(this.browser,r.compilation.options.mode))},2e3),await this.launchFirefox(e),s=!0,i()})}};var Is=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(xc.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 Ls({...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 vs({manifestPath:s,browser:e.browser}),new ys({manifestPath:s,browser:e.browser,polyfill:e.polyfill}),new ps({manifestPath:s,browser:e.browser,mode:e.mode}),new ms({manifestPath:s,browser:e.browser,stats:!0,port:e.port||8e3}),!e.noOpen&&new Is({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")),Vc=a(require("go-git-it"));var He=a(require("path")),Os=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 As(t){let e=t==="firefox"?"Add-on":"Extension";return`${j("info")} Building ${ne(t)} ${e} package...`}function Ms(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=vc(t,i).defaultLocale,f=vc(t,i).otherLocales.join(", "),d=`${l} ${f&&", "+f}`,h=c&&c.length,y=p&&p.length,$=Ts().version;return`
|
|
141
|
+
Please provide a valid directory path.`}function Ja(t){return`${E(t,"error")} Error parsing message length.`}function za(t){return`${E(t,"error")} MessagingClient connection closed.`}function Ha(t,e){return`${E(t,"error")} Unexpected MessagingClient request without target actor: ${(0,x.brightYellow)(e)}`}function Va(t){return`${E(t,"error")} MessagingClient connection closed.`}function Ga(t,e){return`${E(t,"error")} Target actor ${(0,x.brightYellow)(e)} already has an active request.`}function Xa(t,e){return`${E(t,"error")} Error parsing packet: ${(0,x.red)(e)}`}function Za(t,e){return`${E(t,"error")} Message received without a sender actor: ${(0,x.brightYellow)(JSON.stringify(e))}`}function Ya(t,e){return`${E(t,"error")} Received unexpected message: ${(0,x.red)(e)}`}var Ka=a(require("progress"));function js(t,e){let r=new Ka.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 Qa(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"?Oa:Aa);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 ec(t){let e=Array.isArray(t.extension)?t.extension:[t.extension],s=Qa(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}tc.default.existsSync(s)||(console.error(ks(e,s)),process.exit());let r=ec(this),i=this.startingUrl?[this.startingUrl,...r]:[...r],n=process.env.EXTENSION_ENV==="development"?"inherit":"ignore",o=(0,sc.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 hc=a(require("fs")),yc=require("child_process");var Je=a(require("fs")),Cs=a(require("path")),rc=a(require("os")),ic=a(require("which")),nc=process.platform==="darwin",Kp=process.platform==="win32",Qp=!nc&&!Kp;function el(){if(Qp)try{return ic.default.sync("firefox")}catch{return null}else if(nc){let t="/Applications/Firefox.app/Contents/MacOS/firefox",e=Cs.default.join(rc.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 ac=a(require("path")),Fs=a(require("fs")),Sr=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 oc(t){return{...tl,...t}}function cc(t,e){let s=oc(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 Sr.default({destinationDirectory:t});return cc(s,e)}function rl(t,e,s){let r;if(Fs.default.statSync(e).isDirectory())r=e;else throw new Error(Ba(t,e));let n=new Sr.default({destinationDirectory:r});return cc(n,s)}function pc(t,e,s,r){let i,n=e||ac.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 lc(t,e){let{browser:s,startingUrl:r,preferences:i,userDataDir:n,browserConsole:o=!1,browserFlags:c=[]}=e,p=pc(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 gc=a(require("path"));var uc=a(require("net")),fc=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(Ja(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 fc.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(za("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(Ha("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(Va("firefox"));try{let r=`${Buffer.from(JSON.stringify(e)).length}:${JSON.stringify(e)}`;this.connection.write(r),this.expectReply(e.to,s)}catch(r){s.reject(r)}return!1})}expectReply(e,s){if(this.activeRequests.has(e))throw new Error(Ga("firefox",e));this.activeRequests.set(e,s)}onData(e){for(this.incomingData=Buffer.concat([this.incomingData,e]);this.readMessage(););}readMessage(){let{remainingData:e,parsedMessage:s,error:r,fatal:i}=il("firefox",this.incomingData);return this.incomingData=e,r?(this.emit("error",new Error(Xa("firefox",r))),i&&this.disconnect(),!i):s?(this.handleMessage(s),!0):!1}handleMessage(e){if(!e.from){this.emit("error",new Error(Za("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(Ya("firefox",JSON.stringify(e))))}onError(e){this.emit("error",e)}onEnd(){this.emit("end")}onTimeout(){this.emit("timeout")}};function mc(t){return t instanceof Error?String(t):`${t.error}: ${t.message}`}function dc(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(dc("ECONNREFUSED",i))await new Promise(n=>setTimeout(n,ol)),s=i;else throw console.error(qa(this.options.browser,i.stack)),i}throw console.error(Ua(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=gc.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=mc(d);throw new Error(Wa(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`;hc.default.existsSync(Ds)||(console.error(ks(this.browser,Ds)),process.exit());let r=await lc(e,this),i=`${s} ${r}`;ie=(0,yc.exec)(i,(o,c,p)=>{if(o!=null)throw o;p.includes("Unable to move the cache")?console.log(Ma(this.browser)):(console.log(Ta(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(Ra(this.browser)),process.exit(1)),console.error(Na(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"?Pr.default.join(bc.default.tmpdir(),"extension-js",s,"profile"):Pr.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")),zc=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=wc(t,i).defaultLocale,f=wc(t,i).otherLocales.join(", "),d=`${l} ${f&&", "+f}`,h=c&&c.length,y=p&&p.length,$=Ns().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
146
|
Host Permissions ${(0,m.gray)(h?c.join(", "):"Browser defaults")}
|
|
147
147
|
Permissions ${(0,m.gray)(y?p.join(", "):"Browser defaults")}
|
|
148
|
-
`}function
|
|
148
|
+
`}function xc(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 vc(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...
|
|
149
149
|
|
|
150
150
|
`,p=`
|
|
151
151
|
Build completed in ${((r?.time||0)/1e3).toFixed(2)} seconds.
|
|
@@ -153,29 +153,29 @@ Build completed in ${((r?.time||0)/1e3).toFixed(2)} seconds.
|
|
|
153
153
|
`,f=`Build Status: ${e?.hasErrors()?(0,m.red)("Failed"):(0,m.brightGreen)("Success")}
|
|
154
154
|
`,d=`
|
|
155
155
|
Version: ${(0,m.gray)(n.version)}
|
|
156
|
-
`,h=`Size: ${(0,m.gray)(
|
|
157
|
-
`,y="";return y+=c,y+=
|
|
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 _c(){return`${j("success")} No errors or warnings found. Your extension is ${(0,m.brightGreen)("ready for deployment")}.`}function Sc(t,e){return`${j("success")} Fetching data...
|
|
158
158
|
|
|
159
|
-
${(0,m.gray)("URL")} ${(0,m.underline)(`https://github.com/${t}/${e}`)}`}function
|
|
159
|
+
${(0,m.gray)("URL")} ${(0,m.underline)(`https://github.com/${t}/${e}`)}`}function Pc(t){return`${j("success")} Downloading ${(0,m.cyan)(t)}...`}function kc(t){return`
|
|
160
160
|
${j("success")} Creating a new browser extension...
|
|
161
161
|
|
|
162
|
-
${(0,m.gray)("PATH")} ${(0,m.underline)(`${process.cwd()}/${t}`)}`}function
|
|
162
|
+
${(0,m.gray)("PATH")} ${(0,m.underline)(`${process.cwd()}/${t}`)}`}function Ec(t){return`${j("success")} No ${(0,m.brightYellow)(".gitignore")} found, zipping all the content inside path:
|
|
163
163
|
|
|
164
|
-
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function
|
|
164
|
+
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function jc(t){return`${j("success")} Packaging source files. Files in ${(0,m.brightYellow)(".gitignore")} will be excluded...
|
|
165
165
|
|
|
166
|
-
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}.`}function
|
|
166
|
+
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}.`}function $c(t){return`${j("success")} Packaging extension distribution files...
|
|
167
167
|
|
|
168
|
-
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function
|
|
168
|
+
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Cc(t,e,s,r){return`\u{1F4E6} Package name: ${(0,m.brightYellow)(`${e}`)}, Target Browser: ${`${ne(t)}`}
|
|
169
169
|
${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${s}`)} (source)
|
|
170
|
-
${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (distribution)`}function
|
|
171
|
-
${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (distribution)`}function
|
|
172
|
-
${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (source)`}function
|
|
170
|
+
${(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}.${e}`)}, Target Browser: ${`${ne(s)}`}
|
|
171
|
+
${(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}-source.${e}`)}, Target Browser: ${`${ne(s)}`}
|
|
172
|
+
${(0,m.gray)("\u2514\u2500")} ${(0,m.underline)(`${r}`)} (source)`}function Lc(t){return`${j("error")} Failed to compress extension package. ${t}`}function Ic(t){return`${j("info")} ${t.name} (v${t.version}) has no type definitions. Writing...`}function Oc(t){return`${j("error")} Failed to write the extension type definition. ${(0,m.red)(t)}`}function Ac(t){return`${j("success")} Downloading extension...
|
|
173
173
|
|
|
174
|
-
${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function
|
|
174
|
+
${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function Mc(t){return`${j("success")} Unpackaging browser extension...
|
|
175
175
|
|
|
176
|
-
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function
|
|
177
|
-
`,typeof t[r]=="object"&&!t[r].size&&(s+=
|
|
178
|
-
${
|
|
176
|
+
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Tc(){return`${j("success")} Browser extension unpackaged successfully. Compiling...`}function Rc(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 wc(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 Nc(t){return`${(t/1024).toFixed(2)}KB`}function al(t){let e=0;return t?.forEach(s=>{e+=s.size}),Nc(e)}function qc(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?` (${Nc(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+=qc(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
|
+
${qc(e)}`}function Uc(t){return`${j("info")} is using ${(0,m.magenta)(t)}. ${(0,m.brightYellow)("This is very experimental")}.`}var kr=a(require("fs/promises")),Er=a(require("path")),Wc=a(require("axios")),Bc=a(require("adm-zip"));async function Jc(t,e){let s=t.split("?")[0];try{console.log(Ac(s));let r=await(0,Wc.default)({url:t,method:"GET",responseType:"arraybuffer"}),i=Er.default.basename(s),n=Er.default.join(e,`${i}.zip`);await kr.default.writeFile(n,r.data),console.log(Mc(n)),new Bc.default(n).extractAllTo(e,!0),await kr.default.unlink(n),console.log(Tc())}catch(r){throw console.error(Rc(r)),r}}var pl=t=>{try{return new URL(t),!0}catch{return!1}};async function ll(t,e){return await(0,zc.default)(t,process.cwd(),e),oe.default.resolve(process.cwd(),oe.default.basename(t))}async function ul(t){return await Jc(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(Sc(r,i));let n=oe.default.basename(e.pathname),o=await ll(t,Pc(n));return console.log(kc(n)),o}}return oe.default.resolve(process.cwd(),t)}var z=a(require("path")),Hc=a(require("fs")),Vc=a(require("ignore")),Gc=a(require("tiny-glob")),jr=a(require("adm-zip")),Xc=a(require("slugify"));function fl(t){try{return Hc.default.readFileSync(t,"utf8")}catch{return""}}function ml(t){return(0,Xc.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,Vc.default)();return s?r.add(s):console.log(Ec(t)),(await(0,Gc.default)("**/*",{cwd:t,dot:!0})).filter(n=>!r.ignores(n))}async function Zc(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(jc(e));let d=new jr.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($c(l));let d=new jr.default;d.addLocalFolder(i),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log(Cc(e,c,f,l))):s.zip?(console.log(""),console.log(Dc(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Fc(c,p,e,f)))}catch(r){throw console.error(Lc(r)),r}}var $r=a(require("fs")),Cr=a(require("path"));function ee(t){let e=Cr.default.join(t,"extension.config.js");if($r.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=Cr.default.join(t,"extension.config.js");return $r.default.existsSync(e)?(console.log(Uc("extension.config.js")),!0):!1}async function tp(t,e){let s=await Q(t);!t?.startsWith("http")&&!Yc.default.existsSync(Kc.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,ep.merge)(c),l=(0,Qc.default)(p);await new Promise((f,d)=>{l.run(async(h,y)=>{if(h)return console.error(h.stack||h),d(h);console.log(vc(s,y,r)),(e?.zip||e?.zipSource)&&await Zc(s,{...e,browser:r}),y?.hasErrors()?(console.log(y.toString({colors:!0})),process.exit(1)):(console.log(_c()),f())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var op=a(require("fs")),ap=a(require("path"));var Fr=a(require("path")),sp=a(require("webpack")),rp=a(require("webpack-dev-server")),ip=require("webpack-merge");function Dr(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"}),i=ee(t)(s),n=(0,ip.merge)(i),o=(0,sp.default)(n),c={host:"127.0.0.1",allowedHosts:"all",static:Fr.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:st(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 rp.default(c,o);p.startCallback(l=>{l!=null&&console.log(`Error in the Extension.js runner: ${l.stack||""}`)}),process.on("ERROR",()=>{Dr(p)}),process.on("SIGINT",()=>{Dr(p)}),process.on("SIGTERM",()=>{Dr(p)})}var Ve=a(require("path")),Lr=a(require("fs/promises"));async function Ir(t){let e=Ve.default.join(t,"extension-env.d.ts"),s=Ve.default.join(__dirname,"types"),r=Ve.default.relative(t,s),i=process.env.EXTENSION_ENV==="development"?r:"extension-develop/dist/types",n=`// Required Extension.js types for TypeScript projects.
|
|
179
179
|
// This file is auto-generated and should not be excluded.
|
|
180
180
|
// If you need extra types, consider creating a new *.d.ts and
|
|
181
181
|
// referencing it in the "include" array of your tsconfig.json file.
|
|
@@ -184,4 +184,4 @@ ${Wc(e)}`}function Bc(t){return`${j("info")} is using ${(0,m.magenta)(t)}. ${(0,
|
|
|
184
184
|
|
|
185
185
|
// Polyfill types for browser.* APIs.
|
|
186
186
|
/// <reference types="${i}/polyfill.d.ts" />
|
|
187
|
-
`;try{await
|
|
187
|
+
`;try{await Lr.default.access(e)}catch{let c=require(Ve.default.join(t,"manifest.json"));console.log(Ic(c));try{await Lr.default.writeFile(e,n)}catch(p){console.log(Oc(p))}}}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 Ir(s),await np(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(xc("production",r))},1500))})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}0&&(module.exports={extensionBuild,extensionDev,extensionPreview,extensionStart});
|