extension-develop 2.0.0-alpha.4 → 2.0.0-alpha.6
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/ensure-hmr-for-scripts.js +2 -2
- package/dist/extensions/{manager-extension → chrome-manager-extension}/reload-service.js +12 -20
- package/dist/extensions/chromium-manager-extension/background.js +58 -0
- package/dist/extensions/chromium-manager-extension/define-initial-tab.js +67 -0
- package/dist/extensions/chromium-manager-extension/manifest.json +17 -0
- package/dist/extensions/chromium-manager-extension/pages/welcome.js +34 -0
- package/dist/extensions/chromium-manager-extension/reload-service.js +145 -0
- package/dist/extensions/edge-manager-extension/background.js +58 -0
- package/dist/extensions/edge-manager-extension/define-initial-tab.js +67 -0
- package/dist/extensions/edge-manager-extension/manifest.json +17 -0
- package/dist/extensions/edge-manager-extension/pages/sakura-dark.css +268 -0
- package/dist/extensions/edge-manager-extension/pages/sakura.css +267 -0
- package/dist/extensions/edge-manager-extension/pages/welcome.html +49 -0
- package/dist/extensions/edge-manager-extension/pages/welcome.js +34 -0
- package/dist/extensions/edge-manager-extension/public/logo.png +0 -0
- package/dist/extensions/edge-manager-extension/reload-service.js +145 -0
- package/dist/extensions/firefox-manager-extension/pages/sakura-dark.css +268 -0
- package/dist/extensions/firefox-manager-extension/pages/sakura.css +267 -0
- package/dist/extensions/firefox-manager-extension/pages/welcome.html +49 -0
- package/dist/extensions/firefox-manager-extension/public/logo.png +0 -0
- package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/reload-service.js +2 -2
- package/dist/inject-content-css-during-dev.js +3 -3
- package/dist/module.js +58 -60
- package/dist/resolver-module.js +1 -1
- package/dist/run-chrome-profile/ChromeFeatureState +6 -0
- package/dist/run-chrome-profile/Default/Affiliation Database +0 -0
- package/dist/run-chrome-profile/Default/Affiliation Database-journal +0 -0
- package/dist/run-chrome-profile/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/dist/run-chrome-profile/Default/AutofillStrikeDatabase/LOG +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsSiteData +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsSiteData-journal +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsState +12 -0
- package/dist/run-chrome-profile/Default/BudgetDatabase/LOCK +0 -0
- package/dist/run-chrome-profile/Default/BudgetDatabase/LOG +0 -0
- 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/15145040f7f12f31_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/93d81321f8c35eab_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/Cache/Cache_Data/index +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/ClientCertificates/LOCK +0 -0
- package/dist/run-chrome-profile/Default/ClientCertificates/LOG +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/067673da229925b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0861135386d2c738_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/218fe828c74bdb99_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/a8bfd7ab3bf7adbd_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/Code Cache/js/index +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 +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/Cookies-journal +0 -0
- package/dist/run-chrome-profile/Default/DIPS +0 -0
- package/dist/run-chrome-profile/Default/DIPS-journal +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_3 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/index +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_3 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/index +0 -0
- package/dist/run-chrome-profile/Default/Download Service/EntryDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Download Service/EntryDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Download Service/Files/bfe06c15-9fb0-47d9-96c8-76bfcbeb6b62 +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Extension Rules/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/LOG +2 -0
- package/dist/run-chrome-profile/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/LOG +2 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Extension State/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension State/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Extension State/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension State/LOG +2 -0
- package/dist/run-chrome-profile/Default/Extension State/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Favicons +0 -0
- package/dist/run-chrome-profile/Default/Favicons-journal +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/EventDB/LOG +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/data_3 +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/History-journal +0 -0
- package/dist/run-chrome-profile/Default/LOCK +0 -0
- package/dist/run-chrome-profile/Default/LOG +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/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG +2 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG +2 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Login Data +0 -0
- package/dist/run-chrome-profile/Default/Login Data For Account +0 -0
- package/dist/run-chrome-profile/Default/Login Data For Account-journal +0 -0
- package/dist/run-chrome-profile/Default/Login Data-journal +0 -0
- package/dist/run-chrome-profile/Default/Network Action Predictor +0 -0
- package/dist/run-chrome-profile/Default/Network Action Predictor-journal +0 -0
- package/dist/run-chrome-profile/Default/Network Persistent State +1 -0
- package/dist/run-chrome-profile/Default/PersistentOriginTrials/LOCK +0 -0
- package/dist/run-chrome-profile/Default/PersistentOriginTrials/LOG +0 -0
- package/dist/run-chrome-profile/Default/Preferences +1 -0
- package/dist/run-chrome-profile/Default/PreferredApps +1 -0
- NEL +0 -0
- package/dist/run-chrome-profile/Default/Reporting and NEL-journal +0 -0
- package/dist/run-chrome-profile/Default/SCT Auditing Pending Reports +1 -0
- package/dist/run-chrome-profile/Default/Safe Browsing Cookies +0 -0
- package/dist/run-chrome-profile/Default/Safe Browsing Cookies-journal +0 -0
- package/dist/run-chrome-profile/Default/Secure Preferences +1 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SegmentInfoDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SegmentInfoDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalStorageConfigDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOG +2 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/MANIFEST-000001 +0 -0
- 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 +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/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Session Storage/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/LOG +2 -0
- package/dist/run-chrome-profile/Default/Session Storage/MANIFEST-000001 +0 -0
- 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/Shared Dictionary/cache/index +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/db +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/db-journal +0 -0
- package/dist/run-chrome-profile/Default/SharedStorage +0 -0
- package/dist/run-chrome-profile/Default/Shortcuts +0 -0
- package/dist/run-chrome-profile/Default/Shortcuts-journal +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG +2 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG +2 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Top Sites +0 -0
- package/dist/run-chrome-profile/Default/Top Sites-journal +0 -0
- package/dist/run-chrome-profile/Default/TransportSecurity +1 -0
- package/dist/run-chrome-profile/Default/Trust Tokens +0 -0
- package/dist/run-chrome-profile/Default/Trust Tokens-journal +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOCK +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOG +0 -0
- 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/Web Data-journal +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 +1 -0
- 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 +2 -0
- 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/Default/WebStorage/QuotaManager +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/QuotaManager-journal +0 -0
- package/dist/run-chrome-profile/Default/chrome_cart_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/chrome_cart_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/commerce_subscription_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/commerce_subscription_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/coupon_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/coupon_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/discounts_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/discounts_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/dist/run-chrome-profile/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/dist/run-chrome-profile/Default/optimization_guide_hint_cache_store/LOCK +0 -0
- package/dist/run-chrome-profile/Default/optimization_guide_hint_cache_store/LOG +0 -0
- package/dist/run-chrome-profile/Default/parcel_tracking_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/parcel_tracking_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/000003.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/LOG +2 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/000003.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/CURRENT +1 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOCK +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG +2 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/trusted_vault.pb +2 -0
- 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_0 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_1 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_2 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_3 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/index +0 -0
- package/dist/run-chrome-profile/Last Version +1 -0
- package/dist/run-chrome-profile/Local State +1 -0
- 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/data_3 +0 -0
- package/dist/run-chrome-profile/ShaderCache/index +0 -0
- package/dist/run-chrome-profile/Variations +1 -0
- package/dist/run-chrome-profile/first_party_sets.db +0 -0
- package/dist/run-chrome-profile/first_party_sets.db-journal +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/2B4FB0CD70D37A3B/model-info.pb +1 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/2B4FB0CD70D37A3B/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/12059E94B1D721E9/VERSION.txt +4 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/12059E94B1D721E9/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/12059E94B1D721E9/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/12059E94B1D721E9/override_list.pb.gz +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/D75F14FC82782FA2/model-info.pb +1 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/D75F14FC82782FA2/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/EF883883595D3464/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/EF883883595D3464/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/3A9A7DA951DE9C51/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/3A9A7DA951DE9C51/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/3A9A7DA951DE9C51/visual_model_desktop.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/FFBCC5E2C9844D5E/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/FFBCC5E2C9844D5E/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/18A4D0F67FA8506A/model-info.pb +3 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/31/E6DC4029A1E4B4C1/18A4D0F67FA8506A/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/55969D51D0C100B3/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/32/E6DC4029A1E4B4C1/55969D51D0C100B3/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/4662B97715A7FA9A/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/34/E6DC4029A1E4B4C1/4662B97715A7FA9A/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/D611AD771F790F0B/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/D611AD771F790F0B/model.tflite +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/extensions/{manager-extension → chrome-manager-extension}/background.js +0 -0
- /package/dist/extensions/{manager-extension → chrome-manager-extension}/define-initial-tab.js +0 -0
- /package/dist/extensions/{manager-extension → chrome-manager-extension}/manifest.json +0 -0
- /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/sakura-dark.css +0 -0
- /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/sakura.css +0 -0
- /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/pages/welcome.html +0 -0
- /package/dist/extensions/{manager-extension → chrome-manager-extension}/pages/welcome.js +0 -0
- /package/dist/extensions/{manager-extension-firefox → chrome-manager-extension}/public/logo.png +0 -0
- /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/sakura-dark.css +0 -0
- /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/sakura.css +0 -0
- /package/dist/extensions/{manager-extension → chromium-manager-extension}/pages/welcome.html +0 -0
- /package/dist/extensions/{manager-extension → chromium-manager-extension}/public/logo.png +0 -0
- /package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/background.js +0 -0
- /package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/define-initial-tab.js +0 -0
- /package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/manifest.json +0 -0
- /package/dist/extensions/{manager-extension-firefox → firefox-manager-extension}/pages/welcome.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var D=Object.create;var m=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var U=(t,n)=>{for(var s in n)m(t,s,{get:n[s],enumerable:!0})},b=(t,n,s,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of _(n))!C.call(t,r)&&r!==s&&m(t,r,{get:()=>n[r],enumerable:!(e=A(n,r))||e.enumerable});return t};var a=(t,n,s)=>(s=t!=null?D(P(t)):{},b(n||!t||!t.__esModule?m(s,"default",{value:t,enumerable:!0}):s,t)),L=t=>b(m({},"__esModule",{value:!0}),t);var Y={};U(Y,{default:()=>k});module.exports=L(Y);var x=a(require("path")),S=a(require("fs")),T=require("loader-utils"),M=require("schema-utils");var v=a(require("fs")),d=a(require("path")),E=a(require("parse5-utils"));var p=a(require("parse5-utils"));function g(t){try{return new URL(t),!0}catch{return!1}}function h(t,n){let{childNodes:s=[]}=t;for(let e of s)if(e.nodeName==="script"){let r=p.default.getAttribute(e,"src");if(!r||g(r))continue;n({filePath:r,childNode:e,assetType:"script"})}else if(e.nodeName==="link"){let r=p.default.getAttribute(e,"href"),o=p.default.getAttribute(e,"rel");if(!r||g(r))continue;n(o==="dns-prefetch"||o==="icon"||o==="manifest"||o==="modulepreload"||o==="preconnect"||o==="prefetch"||o==="preload"||o==="prerender"?{filePath:r,childNode:e,assetType:"staticHref"}:{filePath:r,childNode:e,assetType:"css"})}else if(e.nodeName==="a"||e.nodeName==="area"){let r=p.default.getAttribute(e,"href");if(!r||g(r))continue;n({filePath:r,childNode:e,assetType:"staticHref"})}else if(e.nodeName==="audio"||e.nodeName==="embed"||e.nodeName==="iframe"||e.nodeName==="img"||e.nodeName==="input"||e.nodeName==="source"||e.nodeName==="track"||e.nodeName==="video"){let r=p.default.getAttribute(e,"src");if(!r||g(r))continue;n({filePath:r,childNode:e,assetType:"staticSrc"})}else h(e,n)}function N(t,n){let s={css:[],js:[],static:[]};if(!t)return s;let e=n||v.default.readFileSync(t,{encoding:"utf8"}),r=E.default.parse(e),o=(i,c)=>d.default.join(d.default.dirname(i),c.startsWith("/")?d.default.relative(d.default.dirname(i),c):c);for(let i of r.childNodes)if(i.nodeName==="html"){for(let c of i.childNodes)(c.nodeName==="head"||c.nodeName==="body")&&h(c,({filePath:u,assetType:y})=>{let f=o(t,u);switch(y){case"script":s.js?.push(f);break;case"css":s.css?.push(f);break;case"staticSrc":case"staticHref":if(u.startsWith("#"))break;s.static?.push(f);break;default:break}});return{css:s.css,js:s.js,static:s.static}}}var O=a(require("path")),$=a(require("fs")),z=require("child_process"),J=require("detect-package-manager");var q=a(require("path")),l=require("@colors/colors/safe");var j=a(require("path")),H=j.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),F=["chrome","edge"],W=["firefox"],Z=[...F,...W];function w(t){let n=O.default.join(t,"package.json");if(!$.default.existsSync(n))return!1;let s=JSON.parse($.default.readFileSync(n,"utf-8")),e=["react","vue","@angular/core","svelte","solid-js","preact"],r=s.dependencies||{},o=s.devDependencies||{};for(let i of e)if(r[i]||o[i])return!0;return!1}var V={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"},includeList:{type:"object"},excludeList:{type:"object"}}};function k(t){let n=this.getOptions(),s=n.manifestPath,e=x.default.dirname(s);(0,M.validate)(V,n,{name:"html:ensure-hmr-for-scripts",baseDataPath:"options"});let r=(0,T.urlToRequest)(this.resourcePath),o=`
|
|
2
2
|
if (import.meta.webpackHot) { import.meta.webpackHot.accept() };
|
|
3
|
-
`;if(
|
|
3
|
+
`;if(w(e))return t;let i=n.includeList||{};for(let c of Object.entries(i)){let[,u]=c;if(u){if(!S.default.existsSync(u))return;let f=N(u)?.js||[];for(let R of f){let I=x.default.resolve(e,R);if(r.includes(I))return`${o}${t}`}}}return t}
|
|
@@ -7,38 +7,28 @@ export async function connect() {
|
|
|
7
7
|
return
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
// Attempt to connect using wss (secure WebSocket)
|
|
12
|
-
webSocket = new WebSocket('wss://localhost:__RELOAD_PORT__')
|
|
13
|
-
} catch (error) {
|
|
14
|
-
console.warn(
|
|
15
|
-
'Extension.js ►►► Secure WebSocket (wss) failed, falling back to ws.',
|
|
16
|
-
error
|
|
17
|
-
)
|
|
18
|
-
// If wss fails, fallback to ws (non-secure WebSocket)
|
|
19
|
-
webSocket = new WebSocket('ws://localhost:__RELOAD_PORT__')
|
|
20
|
-
}
|
|
10
|
+
webSocket = new WebSocket('ws://localhost:__RELOAD_PORT__')
|
|
21
11
|
|
|
22
12
|
webSocket.onerror = (event) => {
|
|
23
|
-
console.error(`
|
|
13
|
+
console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
|
|
24
14
|
webSocket.close()
|
|
25
15
|
}
|
|
26
16
|
|
|
27
17
|
webSocket.onopen = () => {
|
|
28
|
-
console.info(`
|
|
18
|
+
console.info(`[Reload Service] Connection opened.`)
|
|
29
19
|
}
|
|
30
20
|
|
|
31
21
|
webSocket.onmessage = async (event) => {
|
|
32
22
|
const message = JSON.parse(event.data)
|
|
33
23
|
|
|
34
24
|
if (message.status === 'serverReady') {
|
|
35
|
-
console.info('
|
|
25
|
+
console.info('[Reload Service] Connection ready.')
|
|
36
26
|
await requestInitialLoadData()
|
|
37
27
|
}
|
|
38
28
|
|
|
39
29
|
if (message.changedFile) {
|
|
40
30
|
console.info(
|
|
41
|
-
`
|
|
31
|
+
`[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
|
|
42
32
|
)
|
|
43
33
|
|
|
44
34
|
await messageAllExtensions(message.changedFile)
|
|
@@ -46,7 +36,7 @@ export async function connect() {
|
|
|
46
36
|
}
|
|
47
37
|
|
|
48
38
|
webSocket.onclose = () => {
|
|
49
|
-
console.info('
|
|
39
|
+
console.info('[Reload Service] Connection closed.')
|
|
50
40
|
webSocket = null
|
|
51
41
|
}
|
|
52
42
|
}
|
|
@@ -66,6 +56,8 @@ async function getDevExtensions() {
|
|
|
66
56
|
return (
|
|
67
57
|
// Do not include itself
|
|
68
58
|
extension.id !== chrome.runtime.id &&
|
|
59
|
+
// Manager extension
|
|
60
|
+
extension.id !== 'hkklidinfhnfidkjiknmmbmcloigimco' &&
|
|
69
61
|
// Show only unpackaged extensions
|
|
70
62
|
extension.installType === 'development'
|
|
71
63
|
)
|
|
@@ -81,7 +73,7 @@ async function messageAllExtensions(changedFile) {
|
|
|
81
73
|
const reloadAll = devExtensions.map((extension) => {
|
|
82
74
|
chrome.runtime.sendMessage(extension.id, {changedFile}, (response) => {
|
|
83
75
|
if (response) {
|
|
84
|
-
console.info('
|
|
76
|
+
console.info('[Reload Service] Extension reloaded and ready.')
|
|
85
77
|
}
|
|
86
78
|
})
|
|
87
79
|
|
|
@@ -90,7 +82,7 @@ async function messageAllExtensions(changedFile) {
|
|
|
90
82
|
|
|
91
83
|
await Promise.all(reloadAll)
|
|
92
84
|
} else {
|
|
93
|
-
console.info('
|
|
85
|
+
console.info('[Reload Service] External extension is not ready.')
|
|
94
86
|
}
|
|
95
87
|
}
|
|
96
88
|
|
|
@@ -118,7 +110,7 @@ async function requestInitialLoadData() {
|
|
|
118
110
|
|
|
119
111
|
const responses = await Promise.all(messagePromises)
|
|
120
112
|
|
|
121
|
-
// We received the info from the
|
|
113
|
+
// We received the info from the use extension.
|
|
122
114
|
// All good, client is ready. Inform the server.
|
|
123
115
|
if (webSocket && webSocket.readyState === WebSocket.OPEN) {
|
|
124
116
|
const message = JSON.stringify({
|
|
@@ -145,7 +137,7 @@ export function keepAlive() {
|
|
|
145
137
|
const keepAliveIntervalId = setInterval(() => {
|
|
146
138
|
if (webSocket) {
|
|
147
139
|
webSocket.send(JSON.stringify({status: 'ping'}))
|
|
148
|
-
console.info('
|
|
140
|
+
console.info('[Reload Service] Listening for changes...')
|
|
149
141
|
} else {
|
|
150
142
|
clearInterval(keepAliveIntervalId)
|
|
151
143
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {createExtensionsPageTab, handleFirstRun} from './define-initial-tab.js'
|
|
2
|
+
import {connect, disconnect, keepAlive} from './reload-service.js'
|
|
3
|
+
|
|
4
|
+
function bgGreen(str) {
|
|
5
|
+
return `background: #0A0C10; color: #26FFB8; ${str}`
|
|
6
|
+
}
|
|
7
|
+
chrome.tabs.query({active: true}, async ([initialTab]) => {
|
|
8
|
+
console.log(
|
|
9
|
+
`%c
|
|
10
|
+
██████████████████████████████████████████████████████████
|
|
11
|
+
██████████████████████████████████████████████████████████
|
|
12
|
+
████████████████████████████ ██████████████████████████
|
|
13
|
+
█████████████████████████ ██████ ███████████████
|
|
14
|
+
███████████████████████ ███ ███ ████████████
|
|
15
|
+
██████████████████████ ██████ ███ ███████████
|
|
16
|
+
███████████████████████ ██████ ██████ ███████████
|
|
17
|
+
████████████████ ██████ ██████████████ ███████████
|
|
18
|
+
█████████████ ████ ████████████ ████████████
|
|
19
|
+
███████████ ██ █████████████ ███████████████
|
|
20
|
+
██████████ ██████ █████████████████ █████████████
|
|
21
|
+
███████████ ████████████████████████████ ███████████
|
|
22
|
+
█████████████ █████████████████ ██████ ██████████
|
|
23
|
+
███████████████ ██████████████ ██ ██████████
|
|
24
|
+
████████████ ████████████ ████ █████████████
|
|
25
|
+
███████████ █████████████ ██████ ███████████████
|
|
26
|
+
███████████ ██████ ██████ ███████████████████████
|
|
27
|
+
███████████ ████ ██████ ██████████████████████
|
|
28
|
+
████████████ ██ ███ ███████████████████████
|
|
29
|
+
███████████████ ██████ █████████████████████████
|
|
30
|
+
██████████████████████████ ████████████████████████████
|
|
31
|
+
██████████████████████████████████████████████████████████
|
|
32
|
+
██████████████████████████████████████████████████████████
|
|
33
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js Authors.
|
|
34
|
+
`,
|
|
35
|
+
bgGreen('')
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
if (
|
|
39
|
+
initialTab.url === 'chrome://newtab/' ||
|
|
40
|
+
initialTab.url === 'chrome://welcome/'
|
|
41
|
+
) {
|
|
42
|
+
await handleFirstRun()
|
|
43
|
+
} else {
|
|
44
|
+
createExtensionsPageTab(initialTab, 'chrome://extensions/')
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
chrome.runtime.onInstalled.addListener(async () => {
|
|
49
|
+
let isConnected = false
|
|
50
|
+
|
|
51
|
+
if (isConnected) {
|
|
52
|
+
disconnect()
|
|
53
|
+
} else {
|
|
54
|
+
await connect()
|
|
55
|
+
isConnected = true
|
|
56
|
+
keepAlive()
|
|
57
|
+
}
|
|
58
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
async function getDevExtension() {
|
|
2
|
+
const allExtensions = await new Promise((resolve) => {
|
|
3
|
+
chrome.management.getAll(resolve)
|
|
4
|
+
})
|
|
5
|
+
|
|
6
|
+
const devExtensions = allExtensions.filter((extension) => {
|
|
7
|
+
return (
|
|
8
|
+
// Do not include itself
|
|
9
|
+
extension.id !== chrome.runtime.id &&
|
|
10
|
+
// Reload extension
|
|
11
|
+
extension.id !== 'igcijhgmihmjbbahdabahfbpffalcfnn' &&
|
|
12
|
+
// Show only unpackaged extensions
|
|
13
|
+
extension.installType === 'development'
|
|
14
|
+
)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
return devExtensions[0]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Ideas here are adapted from
|
|
21
|
+
// https://github.com/jeremyben/webpack-chrome-extension-launcher
|
|
22
|
+
// Released under MIT license.
|
|
23
|
+
|
|
24
|
+
// Create a new tab and set it to background.
|
|
25
|
+
// We want the user-selected page to be active,
|
|
26
|
+
// not chrome://extensions.
|
|
27
|
+
export function createExtensionsPageTab(initialTab, url) {
|
|
28
|
+
// Check if url tab is open
|
|
29
|
+
chrome.tabs.query({url: 'chrome://extensions/'}, (tabs) => {
|
|
30
|
+
const extensionsTabExist = tabs.length > 0
|
|
31
|
+
|
|
32
|
+
// Return if url exists
|
|
33
|
+
if (extensionsTabExist) return
|
|
34
|
+
|
|
35
|
+
// Create an inactive tab
|
|
36
|
+
chrome.tabs.create(
|
|
37
|
+
{url, active: false},
|
|
38
|
+
function setBackgroundTab(extensionsTab) {
|
|
39
|
+
// Get current url tab and move it left.
|
|
40
|
+
// This action auto-activates the tab
|
|
41
|
+
chrome.tabs.move(extensionsTab.id, {index: 0}, () => {
|
|
42
|
+
// Get user-selected initial page tab and activate the right tab
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
chrome.tabs.update(initialTab.id, {active: true})
|
|
45
|
+
}, 500)
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Function to handle first run logic
|
|
53
|
+
export async function handleFirstRun() {
|
|
54
|
+
chrome.tabs.update({url: 'chrome://extensions/'})
|
|
55
|
+
|
|
56
|
+
const devExtension = await getDevExtension()
|
|
57
|
+
|
|
58
|
+
chrome.storage.local.get(devExtension.id, (result) => {
|
|
59
|
+
if (result[devExtension.id] && result[devExtension.id].didRun) {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
chrome.tabs.create({url: 'pages/welcome.html'})
|
|
64
|
+
// Ensure the welcome page shows only once per extension installation
|
|
65
|
+
chrome.storage.local.set({[devExtension.id]: {didRun: true}})
|
|
66
|
+
})
|
|
67
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Extension Manager",
|
|
3
|
+
"description": "Extension.js developer tools for tabs and reload management.",
|
|
4
|
+
"version": "1.0",
|
|
5
|
+
"manifest_version": 3,
|
|
6
|
+
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAolEJq/DBHxY5dBpOqBRWNCl7vRPBvJPlpEzF19fYFVzzaH44AF6+sKjN3jwIKlsgI82F3TIuwoNFiN1yBu5Unf8SVBE4BTO92P02/ACcGYQxicgCLFUGQKlq4uSrwSPaBYl7FHcYl5SERgxnIGCGnaGMdL2vC7waCj2/U/iKoBF9I1lBH9/aKCSjTd3h2UYo7gg6n5nY/ENbzylDt42T3ATmvnVJfYhSNKA9Dv/zryknfnHYYgBKHtz7pDZwWnYdxs78n2VEKwGj7TgbXuIPDpCkrMnU9PTKpHbXFYARA4H9qYORQmYazfIxUZRnKQNSR+GAOGrb8JK+ijeQdwzDAwIDAQAB",
|
|
7
|
+
"background": {
|
|
8
|
+
"service_worker": "background.js",
|
|
9
|
+
"type": "module"
|
|
10
|
+
},
|
|
11
|
+
"icons": {
|
|
12
|
+
"16": "./public/logo.png",
|
|
13
|
+
"48": "./public/logo.png",
|
|
14
|
+
"128": "./public/logo.png"
|
|
15
|
+
},
|
|
16
|
+
"permissions": ["management", "tabs", "storage"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
async function getUserExtension() {
|
|
2
|
+
const allExtensions = await chrome.management.getAll()
|
|
3
|
+
|
|
4
|
+
return allExtensions.filter((extension) => {
|
|
5
|
+
return (
|
|
6
|
+
// Do not include itself
|
|
7
|
+
extension.id !== chrome.runtime.id &&
|
|
8
|
+
// Reload extension
|
|
9
|
+
extension.id !== 'igcijhgmihmjbbahdabahfbpffalcfnn' &&
|
|
10
|
+
// Show only unpackaged extensions
|
|
11
|
+
extension.installType === 'development'
|
|
12
|
+
)
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async function onStartup() {
|
|
17
|
+
const userExtension = await getUserExtension()
|
|
18
|
+
const extensionName = document.getElementById('extensionName')
|
|
19
|
+
const extensionDescription = document.getElementById('extensionDescription')
|
|
20
|
+
|
|
21
|
+
extensionName.innerText = userExtension[0].name
|
|
22
|
+
extensionName.title = `• Name: ${userExtension[0].name}
|
|
23
|
+
• ID: ${userExtension[0].id}
|
|
24
|
+
• Version: ${userExtension[0].version}`
|
|
25
|
+
|
|
26
|
+
extensionDescription.innerText = userExtension[0].description
|
|
27
|
+
|
|
28
|
+
const learnMore = document.getElementById('learnMore')
|
|
29
|
+
learnMore.addEventListener('click', () => {
|
|
30
|
+
chrome.tabs.create({url: 'https://extension.js.org/'})
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
onStartup()
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
const TEN_SECONDS_MS = 10 * 1000
|
|
2
|
+
let webSocket = null
|
|
3
|
+
|
|
4
|
+
export async function connect() {
|
|
5
|
+
if (webSocket) {
|
|
6
|
+
// If already connected, do nothing
|
|
7
|
+
return
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
webSocket = new WebSocket('ws://localhost:__RELOAD_PORT__')
|
|
11
|
+
|
|
12
|
+
webSocket.onerror = (event) => {
|
|
13
|
+
console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
|
|
14
|
+
webSocket.close()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
webSocket.onopen = () => {
|
|
18
|
+
console.info(`[Reload Service] Connection opened.`)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
webSocket.onmessage = async (event) => {
|
|
22
|
+
const message = JSON.parse(event.data)
|
|
23
|
+
|
|
24
|
+
if (message.status === 'serverReady') {
|
|
25
|
+
console.info('[Reload Service] Connection ready.')
|
|
26
|
+
await requestInitialLoadData()
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (message.changedFile) {
|
|
30
|
+
console.info(
|
|
31
|
+
`[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
await messageAllExtensions(message.changedFile)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
webSocket.onclose = () => {
|
|
39
|
+
console.info('[Reload Service] Connection closed.')
|
|
40
|
+
webSocket = null
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function disconnect() {
|
|
45
|
+
if (webSocket) {
|
|
46
|
+
webSocket.close()
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function getDevExtensions() {
|
|
51
|
+
const allExtensions = await new Promise((resolve) => {
|
|
52
|
+
chrome.management.getAll(resolve)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
return allExtensions.filter((extension) => {
|
|
56
|
+
return (
|
|
57
|
+
// Do not include itself
|
|
58
|
+
extension.id !== chrome.runtime.id &&
|
|
59
|
+
// Manager extension
|
|
60
|
+
extension.id !== 'hkklidinfhnfidkjiknmmbmcloigimco' &&
|
|
61
|
+
// Show only unpackaged extensions
|
|
62
|
+
extension.installType === 'development'
|
|
63
|
+
)
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async function messageAllExtensions(changedFile) {
|
|
68
|
+
// Check if the external extension is ready
|
|
69
|
+
const isExtensionReady = await checkExtensionReadiness()
|
|
70
|
+
|
|
71
|
+
if (isExtensionReady) {
|
|
72
|
+
const devExtensions = await getDevExtensions()
|
|
73
|
+
const reloadAll = devExtensions.map((extension) => {
|
|
74
|
+
chrome.runtime.sendMessage(extension.id, {changedFile}, (response) => {
|
|
75
|
+
if (response) {
|
|
76
|
+
console.info('[Reload Service] Extension reloaded and ready.')
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
return true
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
await Promise.all(reloadAll)
|
|
84
|
+
} else {
|
|
85
|
+
console.info('[Reload Service] External extension is not ready.')
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async function requestInitialLoadData() {
|
|
90
|
+
const devExtensions = await getDevExtensions()
|
|
91
|
+
|
|
92
|
+
const messagePromises = devExtensions.map(async (extension) => {
|
|
93
|
+
return await new Promise((resolve) => {
|
|
94
|
+
chrome.runtime.sendMessage(
|
|
95
|
+
extension.id,
|
|
96
|
+
{initialLoadData: true},
|
|
97
|
+
(response) => {
|
|
98
|
+
if (chrome.runtime.lastError) {
|
|
99
|
+
console.error(
|
|
100
|
+
`Error sending message to ${extension.id}: ${chrome.runtime.lastError.message}`
|
|
101
|
+
)
|
|
102
|
+
resolve(null)
|
|
103
|
+
} else {
|
|
104
|
+
resolve(response)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
const responses = await Promise.all(messagePromises)
|
|
112
|
+
|
|
113
|
+
// We received the info from the use extension.
|
|
114
|
+
// All good, client is ready. Inform the server.
|
|
115
|
+
if (webSocket && webSocket.readyState === WebSocket.OPEN) {
|
|
116
|
+
const message = JSON.stringify({
|
|
117
|
+
status: 'clientReady',
|
|
118
|
+
data: responses[0]
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
webSocket.send(message)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async function checkExtensionReadiness() {
|
|
126
|
+
// Delay for 1 second
|
|
127
|
+
await delay(1000)
|
|
128
|
+
// Assume the extension is ready
|
|
129
|
+
return true
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async function delay(ms) {
|
|
133
|
+
return await new Promise((resolve) => setTimeout(resolve, ms))
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function keepAlive() {
|
|
137
|
+
const keepAliveIntervalId = setInterval(() => {
|
|
138
|
+
if (webSocket) {
|
|
139
|
+
webSocket.send(JSON.stringify({status: 'ping'}))
|
|
140
|
+
console.info('[Reload Service] Listening for changes...')
|
|
141
|
+
} else {
|
|
142
|
+
clearInterval(keepAliveIntervalId)
|
|
143
|
+
}
|
|
144
|
+
}, TEN_SECONDS_MS)
|
|
145
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {createExtensionsPageTab, handleFirstRun} from './define-initial-tab.js'
|
|
2
|
+
import {connect, disconnect, keepAlive} from './reload-service.js'
|
|
3
|
+
|
|
4
|
+
function bgGreen(str) {
|
|
5
|
+
return `background: #0A0C10; color: #26FFB8; ${str}`
|
|
6
|
+
}
|
|
7
|
+
chrome.tabs.query({active: true}, async ([initialTab]) => {
|
|
8
|
+
console.log(
|
|
9
|
+
`%c
|
|
10
|
+
██████████████████████████████████████████████████████████
|
|
11
|
+
██████████████████████████████████████████████████████████
|
|
12
|
+
████████████████████████████ ██████████████████████████
|
|
13
|
+
█████████████████████████ ██████ ███████████████
|
|
14
|
+
███████████████████████ ███ ███ ████████████
|
|
15
|
+
██████████████████████ ██████ ███ ███████████
|
|
16
|
+
███████████████████████ ██████ ██████ ███████████
|
|
17
|
+
████████████████ ██████ ██████████████ ███████████
|
|
18
|
+
█████████████ ████ ████████████ ████████████
|
|
19
|
+
███████████ ██ █████████████ ███████████████
|
|
20
|
+
██████████ ██████ █████████████████ █████████████
|
|
21
|
+
███████████ ████████████████████████████ ███████████
|
|
22
|
+
█████████████ █████████████████ ██████ ██████████
|
|
23
|
+
███████████████ ██████████████ ██ ██████████
|
|
24
|
+
████████████ ████████████ ████ █████████████
|
|
25
|
+
███████████ █████████████ ██████ ███████████████
|
|
26
|
+
███████████ ██████ ██████ ███████████████████████
|
|
27
|
+
███████████ ████ ██████ ██████████████████████
|
|
28
|
+
████████████ ██ ███ ███████████████████████
|
|
29
|
+
███████████████ ██████ █████████████████████████
|
|
30
|
+
██████████████████████████ ████████████████████████████
|
|
31
|
+
██████████████████████████████████████████████████████████
|
|
32
|
+
██████████████████████████████████████████████████████████
|
|
33
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js Authors.
|
|
34
|
+
`,
|
|
35
|
+
bgGreen('')
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
if (
|
|
39
|
+
initialTab.url === 'chrome://newtab/' ||
|
|
40
|
+
initialTab.url === 'chrome://welcome/'
|
|
41
|
+
) {
|
|
42
|
+
await handleFirstRun()
|
|
43
|
+
} else {
|
|
44
|
+
createExtensionsPageTab(initialTab, 'chrome://extensions/')
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
chrome.runtime.onInstalled.addListener(async () => {
|
|
49
|
+
let isConnected = false
|
|
50
|
+
|
|
51
|
+
if (isConnected) {
|
|
52
|
+
disconnect()
|
|
53
|
+
} else {
|
|
54
|
+
await connect()
|
|
55
|
+
isConnected = true
|
|
56
|
+
keepAlive()
|
|
57
|
+
}
|
|
58
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
async function getDevExtension() {
|
|
2
|
+
const allExtensions = await new Promise((resolve) => {
|
|
3
|
+
chrome.management.getAll(resolve)
|
|
4
|
+
})
|
|
5
|
+
|
|
6
|
+
const devExtensions = allExtensions.filter((extension) => {
|
|
7
|
+
return (
|
|
8
|
+
// Do not include itself
|
|
9
|
+
extension.id !== chrome.runtime.id &&
|
|
10
|
+
// Reload extension
|
|
11
|
+
extension.id !== 'igcijhgmihmjbbahdabahfbpffalcfnn' &&
|
|
12
|
+
// Show only unpackaged extensions
|
|
13
|
+
extension.installType === 'development'
|
|
14
|
+
)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
return devExtensions[0]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Ideas here are adapted from
|
|
21
|
+
// https://github.com/jeremyben/webpack-chrome-extension-launcher
|
|
22
|
+
// Released under MIT license.
|
|
23
|
+
|
|
24
|
+
// Create a new tab and set it to background.
|
|
25
|
+
// We want the user-selected page to be active,
|
|
26
|
+
// not chrome://extensions.
|
|
27
|
+
export function createExtensionsPageTab(initialTab, url) {
|
|
28
|
+
// Check if url tab is open
|
|
29
|
+
chrome.tabs.query({url: 'chrome://extensions/'}, (tabs) => {
|
|
30
|
+
const extensionsTabExist = tabs.length > 0
|
|
31
|
+
|
|
32
|
+
// Return if url exists
|
|
33
|
+
if (extensionsTabExist) return
|
|
34
|
+
|
|
35
|
+
// Create an inactive tab
|
|
36
|
+
chrome.tabs.create(
|
|
37
|
+
{url, active: false},
|
|
38
|
+
function setBackgroundTab(extensionsTab) {
|
|
39
|
+
// Get current url tab and move it left.
|
|
40
|
+
// This action auto-activates the tab
|
|
41
|
+
chrome.tabs.move(extensionsTab.id, {index: 0}, () => {
|
|
42
|
+
// Get user-selected initial page tab and activate the right tab
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
chrome.tabs.update(initialTab.id, {active: true})
|
|
45
|
+
}, 500)
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Function to handle first run logic
|
|
53
|
+
export async function handleFirstRun() {
|
|
54
|
+
chrome.tabs.update({url: 'chrome://extensions/'})
|
|
55
|
+
|
|
56
|
+
const devExtension = await getDevExtension()
|
|
57
|
+
|
|
58
|
+
chrome.storage.local.get(devExtension.id, (result) => {
|
|
59
|
+
if (result[devExtension.id] && result[devExtension.id].didRun) {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
chrome.tabs.create({url: 'pages/welcome.html'})
|
|
64
|
+
// Ensure the welcome page shows only once per extension installation
|
|
65
|
+
chrome.storage.local.set({[devExtension.id]: {didRun: true}})
|
|
66
|
+
})
|
|
67
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Extension Manager",
|
|
3
|
+
"description": "Extension.js developer tools for tabs and reload management.",
|
|
4
|
+
"version": "1.0",
|
|
5
|
+
"manifest_version": 3,
|
|
6
|
+
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAolEJq/DBHxY5dBpOqBRWNCl7vRPBvJPlpEzF19fYFVzzaH44AF6+sKjN3jwIKlsgI82F3TIuwoNFiN1yBu5Unf8SVBE4BTO92P02/ACcGYQxicgCLFUGQKlq4uSrwSPaBYl7FHcYl5SERgxnIGCGnaGMdL2vC7waCj2/U/iKoBF9I1lBH9/aKCSjTd3h2UYo7gg6n5nY/ENbzylDt42T3ATmvnVJfYhSNKA9Dv/zryknfnHYYgBKHtz7pDZwWnYdxs78n2VEKwGj7TgbXuIPDpCkrMnU9PTKpHbXFYARA4H9qYORQmYazfIxUZRnKQNSR+GAOGrb8JK+ijeQdwzDAwIDAQAB",
|
|
7
|
+
"background": {
|
|
8
|
+
"service_worker": "background.js",
|
|
9
|
+
"type": "module"
|
|
10
|
+
},
|
|
11
|
+
"icons": {
|
|
12
|
+
"16": "./public/logo.png",
|
|
13
|
+
"48": "./public/logo.png",
|
|
14
|
+
"128": "./public/logo.png"
|
|
15
|
+
},
|
|
16
|
+
"permissions": ["management", "tabs", "storage"]
|
|
17
|
+
}
|