extension-develop 2.0.0 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +230 -0
  2. package/dist/add-content-script-wrapper.js +1777 -0
  3. package/dist/add-hmr-accept-code.js +95 -3
  4. package/dist/build.d.ts +2 -0
  5. package/dist/cleanup.d.ts +1 -0
  6. package/dist/deprecated-shadow-root.js +115 -14
  7. package/dist/dev.d.ts +2 -0
  8. package/dist/develop-lib/config-types.d.ts +85 -0
  9. package/dist/develop-lib/extract-from-zip.d.ts +1 -0
  10. package/dist/develop-lib/find-nearest-package.d.ts +2 -0
  11. package/dist/develop-lib/generate-extension-types.d.ts +1 -0
  12. package/dist/develop-lib/generate-zip.d.ts +2 -0
  13. package/dist/develop-lib/get-extension-config.d.ts +6 -0
  14. package/dist/develop-lib/get-project-path.d.ts +6 -0
  15. package/dist/develop-lib/install-dependencies.d.ts +2 -0
  16. package/dist/develop-lib/messages.d.ts +35 -0
  17. package/dist/develop-lib/validate-user-dependencies.d.ts +1 -0
  18. package/dist/ensure-hmr-for-scripts.js +74 -3
  19. package/dist/extensions/chrome-manager-extension/background.js +1 -1
  20. package/dist/extensions/chrome-manager-extension/define-initial-tab.js +11 -1
  21. package/dist/extensions/chrome-manager-extension/images/logo.png +0 -0
  22. package/dist/extensions/chrome-manager-extension/manifest.json +3 -3
  23. package/dist/extensions/chrome-manager-extension/pages/welcome.html +3 -6
  24. package/dist/extensions/chrome-manager-extension/reload-service.js +214 -62
  25. package/dist/extensions/chromium-based-manager-extension/background.js +1 -1
  26. package/dist/extensions/chromium-based-manager-extension/define-initial-tab.js +11 -1
  27. package/dist/extensions/chromium-based-manager-extension/images/logo.png +0 -0
  28. package/dist/extensions/chromium-based-manager-extension/manifest.json +3 -3
  29. package/dist/extensions/chromium-based-manager-extension/pages/welcome.html +3 -6
  30. package/dist/extensions/chromium-based-manager-extension/reload-service.js +185 -28
  31. package/dist/extensions/edge-manager-extension/background.js +1 -1
  32. package/dist/extensions/edge-manager-extension/define-initial-tab.js +11 -1
  33. package/dist/extensions/edge-manager-extension/images/logo.png +0 -0
  34. package/dist/extensions/edge-manager-extension/manifest.json +3 -3
  35. package/dist/extensions/edge-manager-extension/pages/welcome.html +3 -6
  36. package/dist/extensions/edge-manager-extension/reload-service.js +223 -69
  37. package/dist/extensions/firefox-manager-extension/background.js +40 -12
  38. package/dist/extensions/firefox-manager-extension/define-initial-tab.js +16 -14
  39. package/dist/extensions/firefox-manager-extension/images/logo.png +0 -0
  40. package/dist/extensions/firefox-manager-extension/manifest.json +4 -5
  41. package/dist/extensions/firefox-manager-extension/pages/welcome.html +3 -6
  42. package/dist/extensions/firefox-manager-extension/reload-service.js +113 -75
  43. package/dist/extensions/gecko-based-manager-extension/background.js +1 -1
  44. package/dist/extensions/gecko-based-manager-extension/define-initial-tab.js +13 -6
  45. package/dist/extensions/gecko-based-manager-extension/images/logo.png +0 -0
  46. package/dist/extensions/gecko-based-manager-extension/manifest.json +3 -3
  47. package/dist/extensions/gecko-based-manager-extension/pages/welcome.html +3 -6
  48. package/dist/extensions/gecko-based-manager-extension/reload-service.js +54 -26
  49. package/dist/inject-chromium-client-loader.js +146 -22
  50. package/dist/inject-firefox-client-loader.js +166 -47
  51. package/dist/minimum-chromium-file.js +25 -0
  52. package/dist/minimum-content-file.js +5 -0
  53. package/dist/minimum-firefox-file.js +17 -0
  54. package/dist/minimum-script-file.js +5 -0
  55. package/dist/module.d.ts +8 -95
  56. package/dist/module.js +10703 -128
  57. package/dist/preview.d.ts +2 -0
  58. package/dist/rslib.config.d.ts +3 -0
  59. package/dist/start.d.ts +2 -0
  60. package/dist/types.d.ts +11 -0
  61. package/dist/vitest.config.d.mts +2 -0
  62. package/dist/webpack/dev-server.d.ts +3 -0
  63. package/dist/webpack/plugin-browsers/browsers-lib/add-progress-bar.d.ts +1 -0
  64. package/dist/webpack/plugin-browsers/browsers-lib/constants.d.ts +5 -0
  65. package/dist/webpack/plugin-browsers/browsers-lib/dynamic-extension-manager.d.ts +35 -0
  66. package/dist/webpack/plugin-browsers/browsers-lib/html-merge.d.ts +1 -0
  67. package/dist/webpack/plugin-browsers/browsers-lib/instance-manager.d.ts +71 -0
  68. package/dist/webpack/plugin-browsers/browsers-lib/messages.d.ts +161 -0
  69. package/dist/webpack/plugin-browsers/browsers-lib/rdp-wire.d.ts +7 -0
  70. package/dist/webpack/plugin-browsers/browsers-lib/shared-utils.d.ts +16 -0
  71. package/dist/webpack/plugin-browsers/browsers-types.d.ts +131 -0
  72. package/dist/webpack/plugin-browsers/index.d.ts +41 -0
  73. package/dist/webpack/plugin-browsers/run-chromium/browser-config.d.ts +3 -0
  74. package/dist/webpack/plugin-browsers/run-chromium/create-profile.d.ts +10 -0
  75. package/dist/webpack/plugin-browsers/run-chromium/index.d.ts +28 -0
  76. package/dist/webpack/plugin-browsers/run-chromium/master-preferences.d.ts +161 -0
  77. package/dist/webpack/plugin-browsers/run-chromium/setup-chrome-inspection/cdp-client.d.ts +29 -0
  78. package/dist/webpack/plugin-browsers/run-chromium/setup-chrome-inspection/index.d.ts +25 -0
  79. package/dist/webpack/plugin-browsers/run-firefox/firefox/binary-detector.d.ts +15 -0
  80. package/dist/webpack/plugin-browsers/run-firefox/firefox/browser-config.d.ts +7 -0
  81. package/dist/webpack/plugin-browsers/run-firefox/firefox/create-profile.d.ts +13 -0
  82. package/dist/webpack/plugin-browsers/run-firefox/firefox/master-preferences.d.ts +95 -0
  83. package/dist/webpack/plugin-browsers/run-firefox/index.d.ts +26 -0
  84. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/index.d.ts +13 -0
  85. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/message-utils.d.ts +2 -0
  86. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/messaging-client.d.ts +42 -0
  87. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/setup-firefox-inspection.d.ts +31 -0
  88. package/dist/webpack/plugin-compatibility/feature-browser-specific-fields.d.ts +9 -0
  89. package/dist/webpack/plugin-compatibility/feature-polyfill.d.ts +12 -0
  90. package/dist/webpack/plugin-compatibility/index.d.ts +13 -0
  91. package/dist/webpack/plugin-compilation/clean-dist.d.ts +8 -0
  92. package/dist/webpack/plugin-compilation/env.d.ts +9 -0
  93. package/dist/webpack/plugin-compilation/index.d.ts +12 -0
  94. package/dist/webpack/plugin-css/common-style-loaders.d.ts +8 -0
  95. package/dist/webpack/plugin-css/css-in-content-script-loader.d.ts +11 -0
  96. package/dist/webpack/plugin-css/css-in-html-loader.d.ts +8 -0
  97. package/dist/webpack/plugin-css/css-tools/less.d.ts +4 -0
  98. package/dist/webpack/plugin-css/css-tools/postcss.d.ts +3 -0
  99. package/dist/webpack/plugin-css/css-tools/sass.d.ts +4 -0
  100. package/dist/webpack/plugin-css/css-tools/stylelint.d.ts +4 -0
  101. package/dist/webpack/plugin-css/css-tools/tailwind.d.ts +2 -0
  102. package/dist/webpack/plugin-css/index.d.ts +9 -0
  103. package/dist/webpack/plugin-css/is-content-script.d.ts +1 -0
  104. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/action.d.ts +2 -0
  105. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/background.d.ts +2 -0
  106. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/browser_action.d.ts +2 -0
  107. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/chrome_url_overrides.d.ts +2 -0
  108. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/devtools_page.d.ts +2 -0
  109. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/index.d.ts +2 -0
  110. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/options_ui.d.ts +2 -0
  111. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/page_action.d.ts +2 -0
  112. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/sandbox.d.ts +2 -0
  113. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/side_panel.d.ts +2 -0
  114. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/sidebar_action.d.ts +2 -0
  115. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/action.d.ts +2 -0
  116. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/browser_action.d.ts +2 -0
  117. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/browser_action.theme_icons.d.ts +2 -0
  118. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/icons.d.ts +2 -0
  119. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/index.d.ts +2 -0
  120. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/normalize.d.ts +6 -0
  121. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/page_action.d.ts +2 -0
  122. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/sidebar_action.d.ts +2 -0
  123. package/dist/webpack/plugin-extension/data/manifest-fields/index.d.ts +19 -0
  124. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/declarative_net_request.d.ts +2 -0
  125. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/index.d.ts +2 -0
  126. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/storage.d.ts +2 -0
  127. package/dist/webpack/plugin-extension/data/manifest-fields/locales-fields/index.d.ts +1 -0
  128. package/dist/webpack/plugin-extension/data/manifest-fields/normalize.d.ts +10 -0
  129. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/background.d.ts +2 -0
  130. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/content_scripts.d.ts +2 -0
  131. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/index.d.ts +2 -0
  132. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/service_worker.d.ts +2 -0
  133. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/user_scripts.d.ts +2 -0
  134. package/dist/webpack/plugin-extension/data/manifest-fields/web-resources-fields/index.d.ts +2 -0
  135. package/dist/webpack/plugin-extension/data/special-folders/generate-entries.d.ts +4 -0
  136. package/dist/webpack/plugin-extension/data/special-folders/index.d.ts +12 -0
  137. package/dist/webpack/plugin-extension/feature-html/__spec__/html-lib/test-utils.d.ts +18 -0
  138. package/dist/webpack/plugin-extension/feature-html/html-lib/parse-html.d.ts +8 -0
  139. package/dist/webpack/plugin-extension/feature-html/html-lib/patch-html.d.ts +8 -0
  140. package/dist/webpack/plugin-extension/feature-html/html-lib/utils.d.ts +18 -0
  141. package/dist/webpack/plugin-extension/feature-html/index.d.ts +37 -0
  142. package/dist/webpack/plugin-extension/feature-html/steps/add-assets-to-compilation.d.ts +11 -0
  143. package/dist/webpack/plugin-extension/feature-html/steps/add-scripts-and-styles-to-compilation.d.ts +10 -0
  144. package/dist/webpack/plugin-extension/feature-html/steps/add-to-file-dependencies.d.ts +10 -0
  145. package/dist/webpack/plugin-extension/feature-html/steps/emit-html-file.d.ts +9 -0
  146. package/dist/webpack/plugin-extension/feature-html/steps/ensure-hmr-for-scripts.d.ts +2 -0
  147. package/dist/webpack/plugin-extension/feature-html/steps/handle-common-errors.d.ts +10 -0
  148. package/dist/webpack/plugin-extension/feature-html/steps/minimum-script-file.d.ts +1 -0
  149. package/dist/webpack/plugin-extension/feature-html/steps/throw-if-recompile-is-needed.d.ts +13 -0
  150. package/dist/webpack/plugin-extension/feature-html/steps/update-html-file.d.ts +10 -0
  151. package/dist/webpack/plugin-extension/feature-icons/index.d.ts +25 -0
  152. package/dist/webpack/plugin-extension/feature-icons/steps/add-to-file-dependencies.d.ts +9 -0
  153. package/dist/webpack/plugin-extension/feature-icons/steps/emit-file.d.ts +9 -0
  154. package/dist/webpack/plugin-extension/feature-json/index.d.ts +18 -0
  155. package/dist/webpack/plugin-extension/feature-locales/get-locales.d.ts +1 -0
  156. package/dist/webpack/plugin-extension/feature-locales/index.d.ts +13 -0
  157. package/dist/webpack/plugin-extension/feature-manifest/index.d.ts +23 -0
  158. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/background.d.ts +10 -0
  159. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/chrome_url_overrides.d.ts +8 -0
  160. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/commands.d.ts +16 -0
  161. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/content_scripts.d.ts +7 -0
  162. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/content_security_policy.d.ts +4 -0
  163. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/devtools_page.d.ts +4 -0
  164. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/icons.d.ts +6 -0
  165. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/index.d.ts +2 -0
  166. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/omnibox.d.ts +2 -0
  167. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/options_page.d.ts +4 -0
  168. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/options_ui.d.ts +8 -0
  169. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/page_action.d.ts +8 -0
  170. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/permissions.d.ts +4 -0
  171. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/sandbox.d.ts +7 -0
  172. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/sidebar_action.d.ts +2 -0
  173. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/storage.d.ts +6 -0
  174. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/theme.d.ts +2 -0
  175. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/user_scripts.d.ts +2 -0
  176. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/web_accessible_resources.d.ts +9 -0
  177. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/index.d.ts +2 -0
  178. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/background.d.ts +10 -0
  179. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/browser_action.d.ts +12 -0
  180. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/chrome_settings_overrides.d.ts +24 -0
  181. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/index.d.ts +2 -0
  182. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/page_action.d.ts +1 -0
  183. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/sidebar_action.d.ts +1 -0
  184. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/theme_experiment.d.ts +2 -0
  185. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/action.d.ts +8 -0
  186. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/background.d.ts +10 -0
  187. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/declarative_net_request.d.ts +2 -0
  188. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/host_permissions.d.ts +2 -0
  189. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/index.d.ts +2 -0
  190. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/side_panel.d.ts +2 -0
  191. package/dist/webpack/plugin-extension/feature-manifest/steps/add-dependencies.d.ts +6 -0
  192. package/dist/webpack/plugin-extension/feature-manifest/steps/check-manifest-files.d.ts +17 -0
  193. package/dist/webpack/plugin-extension/feature-manifest/steps/emit-manifest.d.ts +7 -0
  194. package/dist/webpack/plugin-extension/feature-manifest/steps/throw-if-recompile.d.ts +11 -0
  195. package/dist/webpack/plugin-extension/feature-manifest/steps/update-manifest.d.ts +9 -0
  196. package/dist/webpack/plugin-extension/feature-scripts/index.d.ts +27 -0
  197. package/dist/webpack/plugin-extension/feature-scripts/scripts-lib/utils.d.ts +3 -0
  198. package/dist/webpack/plugin-extension/feature-scripts/steps/add-content-script-wrapper.d.ts +2 -0
  199. package/dist/webpack/plugin-extension/feature-scripts/steps/add-hmr-accept-code.d.ts +2 -0
  200. package/dist/webpack/plugin-extension/feature-scripts/steps/add-public-path-for-main-world.d.ts +11 -0
  201. package/dist/webpack/plugin-extension/feature-scripts/steps/add-public-path-runtime-module.d.ts +4 -0
  202. package/dist/webpack/plugin-extension/feature-scripts/steps/add-scripts.d.ts +9 -0
  203. package/dist/webpack/plugin-extension/feature-scripts/steps/deprecated-shadow-root.d.ts +2 -0
  204. package/dist/webpack/plugin-extension/feature-scripts/steps/javascript-content-script-wrapper.d.ts +1 -0
  205. package/dist/webpack/plugin-extension/feature-scripts/steps/preact-content-script-wrapper.d.ts +1 -0
  206. package/dist/webpack/plugin-extension/feature-scripts/steps/react-content-script-wrapper.d.ts +1 -0
  207. package/dist/webpack/plugin-extension/feature-scripts/steps/svelte-content-script-wrapper.d.ts +1 -0
  208. package/dist/webpack/plugin-extension/feature-scripts/steps/typescript-content-script-wrapper.d.ts +1 -0
  209. package/dist/webpack/plugin-extension/feature-scripts/steps/vue-content-script-wrapper.d.ts +1 -0
  210. package/dist/webpack/plugin-extension/feature-special-folders/copy-public-folder.d.ts +14 -0
  211. package/dist/webpack/plugin-extension/feature-special-folders/index.d.ts +19 -0
  212. package/dist/webpack/plugin-extension/feature-special-folders/warn-upon-folder-changes.d.ts +7 -0
  213. package/dist/webpack/plugin-extension/feature-web-resources/clean-matches.d.ts +7 -0
  214. package/dist/webpack/plugin-extension/feature-web-resources/index.d.ts +18 -0
  215. package/dist/webpack/plugin-extension/index.d.ts +10 -0
  216. package/dist/webpack/plugin-js-frameworks/index.d.ts +13 -0
  217. package/dist/webpack/plugin-js-frameworks/js-tools/babel.d.ts +16 -0
  218. package/dist/webpack/plugin-js-frameworks/js-tools/preact.d.ts +3 -0
  219. package/dist/webpack/plugin-js-frameworks/js-tools/react.d.ts +3 -0
  220. package/dist/webpack/plugin-js-frameworks/js-tools/svelte.d.ts +3 -0
  221. package/dist/webpack/plugin-js-frameworks/js-tools/typescript.d.ts +36 -0
  222. package/dist/webpack/plugin-js-frameworks/js-tools/vue.d.ts +3 -0
  223. package/dist/webpack/plugin-js-frameworks/load-loader-options.d.ts +1 -0
  224. package/dist/webpack/plugin-reload/index.d.ts +13 -0
  225. package/dist/webpack/plugin-reload/reload-lib/messages.d.ts +106 -0
  226. package/dist/webpack/plugin-reload/reload-types.d.ts +14 -0
  227. package/dist/webpack/plugin-reload/start-server.d.ts +4 -0
  228. package/dist/webpack/plugin-reload/steps/create-web-socket-server/index.d.ts +14 -0
  229. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/broadcast-message.d.ts +2 -0
  230. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/message-dispatcher.d.ts +2 -0
  231. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/servers.d.ts +2 -0
  232. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/index.d.ts +3 -0
  233. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/inject-chromium-client-loader.d.ts +9 -0
  234. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/minimum-chromium-file.d.ts +0 -0
  235. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/index.d.ts +3 -0
  236. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/inject-firefox-client-loader.d.ts +9 -0
  237. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/minimum-firefox-file.d.ts +0 -0
  238. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/index.d.ts +9 -0
  239. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-background.d.ts +15 -0
  240. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-csp.d.ts +5 -0
  241. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-externally-connectable.d.ts +10 -0
  242. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-web-resources.d.ts +10 -0
  243. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/generate-manager-extension.d.ts +15 -0
  244. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/index.d.ts +10 -0
  245. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/target-web-extension-plugin/index.d.ts +13 -0
  246. package/dist/webpack/plugin-static-assets/index.d.ts +12 -0
  247. package/dist/webpack/webpack-config.d.ts +14 -0
  248. package/dist/webpack/webpack-lib/auto-exit.d.ts +1 -0
  249. package/dist/webpack/webpack-lib/constants.d.ts +4 -0
  250. package/dist/webpack/webpack-lib/messages.d.ts +121 -0
  251. package/dist/webpack/webpack-lib/port-manager.d.ts +27 -0
  252. package/dist/webpack/webpack-lib/utils.d.ts +23 -0
  253. package/dist/webpack/webpack-types.d.ts +49 -0
  254. package/package.json +64 -29
  255. package/dist/depreacated-shadow-root.js +0 -34
  256. package/dist/inject-content-css-during-dev.js +0 -10
  257. package/dist/minimum-chromium-file.mjs +0 -1
  258. package/dist/minimum-content-file.mjs +0 -1
  259. package/dist/minimum-firefox-file.mjs +0 -1
  260. package/dist/resolver-loader.js +0 -1
  261. package/dist/resolver-module.mjs +0 -1
  262. package/dist/tailwind.config.js +0 -25
  263. /package/dist/{minimum-script-file.mjs → webpack/plugin-extension/feature-scripts/steps/minimum-content-file.d.ts} +0 -0
@@ -1,62 +1,135 @@
1
1
  let webSocket = null
2
+ let triedWsFallback = false
2
3
 
3
- export async function connect() {
4
+ // Get instance ID from the service worker context
5
+ const instanceId = '__INSTANCE_ID__'
6
+
7
+ async function connect() {
4
8
  if (webSocket) {
5
9
  // If already connected, do nothing
6
10
  return
7
11
  }
8
12
 
9
- webSocket = new WebSocket('wss://127.0.0.1:8002')
13
+ const port = '__RELOAD_PORT__'
14
+ let reconnectAttempts = 0
15
+ const maxReconnectAttempts = 10
16
+ const baseBackoffMs = 250
17
+ const maxBackoffMs = 5000
10
18
 
11
- webSocket.onerror = (event) => {
12
- console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
13
- webSocket.close()
14
- }
19
+ const connectTo = (url) => {
20
+ webSocket = new WebSocket(url)
15
21
 
16
- webSocket.onopen = () => {
17
- console.info(`[Reload Service] Connection opened.`)
18
- }
19
-
20
- webSocket.onmessage = async (event) => {
21
- const message = JSON.parse(event.data)
22
-
23
- if (message.status === 'serverReady') {
24
- console.info('[Reload Service] Connection ready.')
25
- await requestInitialLoadData()
22
+ webSocket.onerror = (_event) => {
23
+ try {
24
+ webSocket && webSocket.close()
25
+ } catch {}
26
+ if (!triedWsFallback) {
27
+ triedWsFallback = true
28
+ connectTo(`ws://127.0.0.1:${port}`)
29
+ }
26
30
  }
27
31
 
28
- if (message.changedFile) {
32
+ webSocket.onopen = () => {
33
+ reconnectAttempts = 0
29
34
  console.info(
30
- `[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
35
+ `[Extension.js] Connection opened. Listening on port ${port}...`
31
36
  )
37
+ }
38
+
39
+ let reloadDebounce
40
+ webSocket.onmessage = async (event) => {
41
+ const message = JSON.parse(event.data)
42
+
43
+ // Only process messages for this instance
44
+ if (message.instanceId && message.instanceId !== instanceId) {
45
+ console.log(
46
+ `[Reload Service] Ignoring message from wrong instance: ${message.instanceId} (expected: ${instanceId})`
47
+ )
48
+ return
49
+ }
32
50
 
33
- await messageAllExtensions(message.changedFile)
51
+ if (message.status === 'serverReady') {
52
+ console.info(
53
+ `[Extension.js] Server ready. Requesting initial load data...`
54
+ )
55
+ await requestInitialLoadData()
56
+ }
57
+
58
+ if (message.changedFile) {
59
+ clearTimeout(reloadDebounce)
60
+ reloadDebounce = setTimeout(async () => {
61
+ await messageAllExtensions(message.changedFile)
62
+ }, 200)
63
+ }
34
64
  }
35
- }
36
65
 
37
- webSocket.onclose = () => {
38
- console.info('[Reload Service] Connection closed.')
39
- webSocket = null
66
+ webSocket.onclose = () => {
67
+ console.info('[Extension.js] Connection closed.')
68
+ webSocket = null
69
+ if (reconnectAttempts >= maxReconnectAttempts) return
70
+ reconnectAttempts++
71
+ const backoff = Math.min(
72
+ maxBackoffMs,
73
+ baseBackoffMs * 2 ** reconnectAttempts
74
+ )
75
+ setTimeout(() => connectTo(url), backoff)
76
+ }
40
77
  }
78
+
79
+ connectTo(`wss://127.0.0.1:${port}`)
41
80
  }
42
81
 
43
- export function disconnect() {
82
+ function disconnect() {
44
83
  if (webSocket) {
45
84
  webSocket.close()
46
85
  }
47
86
  }
48
87
 
88
+ async function requestInitialLoadData() {
89
+ const devExtensions = await getDevExtensions()
90
+
91
+ for (const extension of devExtensions) {
92
+ try {
93
+ const response = await browser.runtime.sendMessage(extension.id, {
94
+ initialLoadData: true
95
+ })
96
+
97
+ if (response) {
98
+ // Send the response back to the server with instance ID
99
+ webSocket.send(
100
+ JSON.stringify({
101
+ status: 'clientReady',
102
+ instanceId: instanceId,
103
+ data: response
104
+ })
105
+ )
106
+ }
107
+ } catch (error) {
108
+ console.error(
109
+ `Error sending message to ${extension.id}: ${error.message}`
110
+ )
111
+ }
112
+ }
113
+ }
114
+
49
115
  async function getDevExtensions() {
50
- const allExtensions = await browser.management.getAll()
116
+ const allExtensions = await new Promise((resolve) => {
117
+ try {
118
+ // Firefox MV2 supports callback-style getAll
119
+ browser.management.getAll(resolve)
120
+ } catch {
121
+ // Fallback to promise-based API
122
+ browser.management.getAll().then(resolve)
123
+ }
124
+ })
51
125
 
52
126
  return allExtensions.filter((extension) => {
53
127
  return (
54
128
  // Do not include itself
55
129
  extension.id !== browser.runtime.id &&
56
- // Manager extension
57
- extension.name !== 'Add-On Manager' &&
58
- // Show only unpackaged extensions
59
- extension.installType === 'development'
130
+ // Show only unpackaged extensions (Firefox reports "temporary")
131
+ (extension.installType === 'development' ||
132
+ extension.installType === 'temporary')
60
133
  )
61
134
  })
62
135
  }
@@ -70,7 +143,9 @@ async function messageAllExtensions(changedFile) {
70
143
  for (const extension of devExtensions) {
71
144
  try {
72
145
  await browser.runtime.sendMessage(extension.id, {changedFile})
73
- console.info('[Reload Service] Add-On reloaded and ready.')
146
+ console.info(
147
+ `[Extension.js] Add-On reloaded and ready for instance ${instanceId}.`
148
+ )
74
149
  } catch (error) {
75
150
  console.error(
76
151
  `Error sending message to ${extension.id}: ${error.message}`
@@ -78,53 +153,16 @@ async function messageAllExtensions(changedFile) {
78
153
  }
79
154
  }
80
155
  } else {
81
- console.info('[Reload Service] External extension is not ready.')
82
- }
83
- }
84
-
85
- async function requestInitialLoadData() {
86
- const devExtensions = await getDevExtensions()
87
-
88
- const responses = await Promise.all(
89
- devExtensions.map(async (extension) => {
90
- try {
91
- const result = await browser.runtime.sendMessage(extension.id, {
92
- initialLoadData: true
93
- })
94
-
95
- return result
96
- } catch (error) {
97
- console.error(
98
- `Error sending message to ${extension.id}: ${error.message}`
99
- )
100
- return null
101
- }
102
- })
103
- )
104
-
105
- // We received the info from the use extension.
106
- // All good, client is ready. Inform the server.
107
- if (webSocket && webSocket.readyState === WebSocket.OPEN) {
108
- const message = JSON.stringify({
109
- status: 'clientReady',
110
- data: responses.find((response) => response !== null)
111
- })
112
-
113
- webSocket.send(message)
156
+ console.info(
157
+ `[Extension.js] External extension is not ready for instance ${instanceId}.`
158
+ )
114
159
  }
115
160
  }
116
161
 
117
162
  async function checkExtensionReadiness() {
118
- // Delay for 1 second
119
- await delay(1000)
120
- // Assume the extension is ready
121
- return true
122
- }
123
-
124
- async function delay(ms) {
125
- return await new Promise((resolve) => setTimeout(resolve, ms)).catch(
126
- (error) => {
127
- console.error(`Error delaying: ${error.message}`)
128
- }
129
- )
163
+ return new Promise((resolve) => {
164
+ setTimeout(() => {
165
+ resolve(true)
166
+ }, 1000)
167
+ })
130
168
  }
@@ -2,7 +2,7 @@ import {handleFirstRun} from './define-initial-tab.js'
2
2
  import {connect, disconnect} from './reload-service.js'
3
3
 
4
4
  function bgGreen(str) {
5
- return `background: #0A0C10; color: #26FFB8; ${str}`
5
+ return `background: transparent; color: #0971fe; ${str}`
6
6
  }
7
7
 
8
8
  async function handleTabOnExtensionLoad() {
@@ -4,7 +4,7 @@ async function getDevExtension() {
4
4
  return allExtensions.filter((extension) => {
5
5
  return (
6
6
  // Reload extension
7
- extension.name !== 'Extension Manager' &&
7
+ extension.name !== 'Extension.js DevTools' &&
8
8
  // Show only unpackaged extensions
9
9
  extension.installType === 'development'
10
10
  )
@@ -31,7 +31,7 @@ export async function createFirefoxAddonsTab(initialTab, url) {
31
31
  // Reactivate the user-selected initial page tab
32
32
  await browser.tabs.update(initialTab.id, {active: true})
33
33
  } catch (error) {
34
- console.error('Error creating and manipulating tabs:', error)
34
+ console.error('[Extension.js] Error creating and manipulating tabs:', error)
35
35
  }
36
36
  }
37
37
 
@@ -41,7 +41,7 @@ export async function handleFirstRun() {
41
41
  const devExtension = await getDevExtension()
42
42
 
43
43
  if (!devExtension) {
44
- console.warn('No development extensions found')
44
+ console.warn('[Extension.js] No development extensions found')
45
45
  return
46
46
  }
47
47
 
@@ -51,12 +51,19 @@ export async function handleFirstRun() {
51
51
  return
52
52
  }
53
53
 
54
- // Open the welcome page
55
- await browser.tabs.create({url: './pages/welcome.html'})
54
+ // Open the welcome page only if not already open
55
+ const welcomeUrl = browser.runtime.getURL('./pages/welcome.html')
56
+ const existingWelcome = await browser.tabs.query({url: welcomeUrl})
57
+ if (!existingWelcome || existingWelcome.length === 0) {
58
+ await browser.tabs.create({url: './pages/welcome.html'})
59
+ }
56
60
 
57
61
  // Ensure the welcome page shows only once per extension installation
58
62
  await browser.storage.local.set({[devExtension.id]: {didRun: true}})
59
63
  } catch (error) {
60
- console.error('Error handling tabs on extension load:', error)
64
+ console.error(
65
+ '[Extension.js] Error handling tabs on extension load:',
66
+ error
67
+ )
61
68
  }
62
69
  }
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "Extension Manager",
3
- "description": "Extension.js developer tools for tabs and reload management.",
4
- "version": "1.0",
2
+ "name": "Extension.js DevTools",
3
+ "description": "Extension.js built-in developer tools for browser instance ID __INSTANCE_ID__",
4
+ "version": "1.0.0",
5
5
  "manifest_version": 2,
6
6
  "background": {
7
7
  "scripts": ["background.js"],
@@ -3,10 +3,7 @@
3
3
  <head>
4
4
  <title>Welcome!</title>
5
5
  <meta charset="UTF-8" />
6
- <link
7
- rel="icon"
8
- href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🧩</text></svg>"
9
- />
6
+ <link rel="icon" type="image/png" href="../images/logo.png" />
10
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
8
  <link rel="stylesheet" href="./sakura.css" media="screen" />
12
9
  <link
@@ -37,8 +34,8 @@
37
34
  <a target="_blank" href="https://github.com/cezaraugusto/extension"
38
35
  >🧩 Extension.js</a
39
36
  >
40
- is a development tool for browser extensions with built-in support for
41
- TypeScript, WebAssembly, React, and modern JavaScript.
37
+ is a development toolkit for building cross-browser extensions with
38
+ modern web technologies.
42
39
  </p>
43
40
  <button id="learnMore">
44
41
  🧩 Learn more about developing cross-browser extensions
@@ -1,4 +1,5 @@
1
1
  let webSocket = null
2
+ let triedWsFallback = false
2
3
 
3
4
  export async function connect() {
4
5
  if (webSocket) {
@@ -6,38 +7,65 @@ export async function connect() {
6
7
  return
7
8
  }
8
9
 
9
- webSocket = new WebSocket('wss://127.0.0.1:8002')
10
+ // Get port from the placeholder that will be replaced during build
11
+ const port = '__RELOAD_PORT__'
12
+ let reconnectAttempts = 0
13
+ const maxReconnectAttempts = 10
14
+ const baseBackoffMs = 250
15
+ const maxBackoffMs = 5000
10
16
 
11
- webSocket.onerror = (event) => {
12
- console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
13
- webSocket.close()
14
- }
15
-
16
- webSocket.onopen = () => {
17
- console.info(`[Reload Service] Connection opened.`)
18
- }
19
-
20
- webSocket.onmessage = async (event) => {
21
- const message = JSON.parse(event.data)
17
+ const connectTo = (url) => {
18
+ webSocket = new WebSocket(url)
22
19
 
23
- if (message.status === 'serverReady') {
24
- console.info('[Reload Service] Connection ready.')
25
- await requestInitialLoadData()
20
+ webSocket.onerror = (_event) => {
21
+ try {
22
+ webSocket && webSocket.close()
23
+ } catch {}
24
+ if (!triedWsFallback) {
25
+ triedWsFallback = true
26
+ connectTo(`ws://127.0.0.1:${port}`)
27
+ }
26
28
  }
27
29
 
28
- if (message.changedFile) {
30
+ webSocket.onopen = () => {
31
+ reconnectAttempts = 0
29
32
  console.info(
30
- `[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
33
+ `[Extension.js] Connection opened. Listening on port ${port}...`
31
34
  )
35
+ }
36
+
37
+ let reloadDebounce
38
+ webSocket.onmessage = async (event) => {
39
+ const message = JSON.parse(event.data)
32
40
 
33
- await messageAllExtensions(message.changedFile)
41
+ if (message.status === 'serverReady') {
42
+ console.info(
43
+ `[Extension.js] Server ready. Requesting initial load data...`
44
+ )
45
+ }
46
+
47
+ if (message.changedFile) {
48
+ clearTimeout(reloadDebounce)
49
+ reloadDebounce = setTimeout(async () => {
50
+ await messageAllExtensions(message.changedFile)
51
+ }, 200)
52
+ }
34
53
  }
35
- }
36
54
 
37
- webSocket.onclose = () => {
38
- console.info('[Reload Service] Connection closed.')
39
- webSocket = null
55
+ webSocket.onclose = () => {
56
+ console.info('[Extension.js] Connection closed.')
57
+ webSocket = null
58
+ if (reconnectAttempts >= maxReconnectAttempts) return
59
+ reconnectAttempts++
60
+ const backoff = Math.min(
61
+ maxBackoffMs,
62
+ baseBackoffMs * 2 ** reconnectAttempts
63
+ )
64
+ setTimeout(() => connectTo(url), backoff)
65
+ }
40
66
  }
67
+
68
+ connectTo(`wss://127.0.0.1:${port}`)
41
69
  }
42
70
 
43
71
  export function disconnect() {
@@ -70,15 +98,15 @@ async function messageAllExtensions(changedFile) {
70
98
  for (const extension of devExtensions) {
71
99
  try {
72
100
  await browser.runtime.sendMessage(extension.id, {changedFile})
73
- console.info('[Reload Service] Add-On reloaded and ready.')
101
+ console.info('[Extension.js] Add-On reloaded and ready.')
74
102
  } catch (error) {
75
103
  console.error(
76
- `Error sending message to ${extension.id}: ${error.message}`
104
+ `[Extension.js] Error sending message to ${extension.id}: ${error.message}`
77
105
  )
78
106
  }
79
107
  }
80
108
  } else {
81
- console.info('[Reload Service] External extension is not ready.')
109
+ console.info('[Extension.js] External extension is not ready.')
82
110
  }
83
111
  }
84
112
 
@@ -124,7 +152,7 @@ async function checkExtensionReadiness() {
124
152
  async function delay(ms) {
125
153
  return await new Promise((resolve) => setTimeout(resolve, ms)).catch(
126
154
  (error) => {
127
- console.error(`Error delaying: ${error.message}`)
155
+ console.error(`[Extension.js] Error delaying: ${error.message}`)
128
156
  }
129
157
  )
130
158
  }
@@ -1,4 +1,86 @@
1
- "use strict";var F=Object.create;var u=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var T=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var _=(e,n)=>{for(var t in n)u(e,t,{get:n[t],enumerable:!0})},x=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of j(n))!N.call(e,r)&&r!==t&&u(e,r,{get:()=>n[r],enumerable:!(a=M(n,r))||a.enumerable});return e};var c=(e,n,t)=>(t=e!=null?F(T(e)):{},x(n||!e||!e.__esModule?u(t,"default",{value:e,enumerable:!0}):t,e)),O=e=>x(u({},"__esModule",{value:!0}),e);var H={};_(H,{default:()=>W});module.exports=O(H);var p=c(require("path")),b=require("loader-utils"),E=require("schema-utils");var C=c(require("path")),P=c(require("fs")),U=require("child_process"),A=require("package-manager-detector");var R=c(require("path")),s=require("@colors/colors/safe");var y=c(require("path")),S=y.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),m=["chrome","edge"],k=["firefox"],z=[...m,...k];var D=require("console");function v(e,n){return JSON.parse(JSON.stringify(e),function(r,l){let o=r.indexOf(":");if(o===-1)return l;let i=r.substring(0,o);(i===n||i==="chromium"&&m.includes(n)||i==="chromium"&&n.includes("chromium")||i==="gecko"&&n.includes("gecko"))&&(this[r.substring(o+1)]=l)})}var q={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"}}};function W(e){let n=this.getOptions(),t=n.manifestPath,a=n.browser,r=p.default.dirname(t),l=require(t),o=v(l,a);(0,E.validate)(q,n,{name:"reload:inject-background-client",baseDataPath:"options"});let i=(0,b.urlToRequest)(this.resourcePath),g=`
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ default: ()=>inject_chromium_client_loader
28
+ });
29
+ const external_path_namespaceObject = require("path");
30
+ const external_fs_namespaceObject = require("fs");
31
+ const external_loader_utils_namespaceObject = require("loader-utils");
32
+ const external_schema_utils_namespaceObject = require("schema-utils");
33
+ require("os");
34
+ require("crypto");
35
+ require("child_process");
36
+ require("package-manager-detector");
37
+ require("pintor");
38
+ external_path_namespaceObject.join(process.cwd(), 'node_modules/extension-develop/dist/certs');
39
+ const CHROMIUM_BASED_BROWSERS = [
40
+ 'chrome',
41
+ 'edge'
42
+ ];
43
+ const GECKO_BASED_BROWSERS = [
44
+ 'firefox'
45
+ ];
46
+ [
47
+ ...CHROMIUM_BASED_BROWSERS,
48
+ ...GECKO_BASED_BROWSERS
49
+ ];
50
+ function filterKeysForThisBrowser(manifest, browser) {
51
+ const patchedManifest = JSON.parse(JSON.stringify(manifest), function(key, value) {
52
+ const indexOfColon = key.indexOf(':');
53
+ if (-1 === indexOfColon) return value;
54
+ const prefix = key.substring(0, indexOfColon);
55
+ if (prefix === browser || 'chromium' === prefix && CHROMIUM_BASED_BROWSERS.includes(browser) || 'chromium' === prefix && browser.includes('chromium') || 'gecko' === prefix && browser.includes('gecko')) this[key.substring(indexOfColon + 1)] = value;
56
+ });
57
+ return patchedManifest;
58
+ }
59
+ const schema = {
60
+ type: 'object',
61
+ properties: {
62
+ test: {
63
+ type: 'string'
64
+ },
65
+ manifestPath: {
66
+ type: 'string'
67
+ }
68
+ }
69
+ };
70
+ function inject_chromium_client_loader(source) {
71
+ const options = this.getOptions();
72
+ const manifestPath = options.manifestPath;
73
+ const browser = options.browser;
74
+ const projectPath = external_path_namespaceObject.dirname(manifestPath);
75
+ const manifest = JSON.parse(external_fs_namespaceObject.readFileSync(manifestPath, 'utf-8'));
76
+ const patchedManifest = filterKeysForThisBrowser(manifest, browser);
77
+ (0, external_schema_utils_namespaceObject.validate)(schema, options, {
78
+ name: 'reload:inject-background-client',
79
+ baseDataPath: 'options'
80
+ });
81
+ const url = (0, external_loader_utils_namespaceObject.urlToRequest)(this.resourcePath);
82
+ const generalReloadCode = `
83
+ // Enhanced reload handler with cache-busting
2
84
  ;chrome.runtime.onMessageExternal.addListener(
3
85
  async (request, _sender, sendResponse) => {
4
86
  const managementInfo = await new Promise((resolve) => {
@@ -18,35 +100,77 @@
18
100
  return true
19
101
  }
20
102
 
21
- // Reload the extension runtime if the manifest or
22
- // service worker changes.
103
+ // Enhanced reload logic for critical files
23
104
  if (
105
+ request.changedFile === 'declarative_net_request' ||
24
106
  request.changedFile === 'manifest.json' ||
25
107
  request.changedFile === 'service_worker' ||
26
108
  request.changedFile === '_locales'
27
109
  ) {
28
- setTimeout(() => {
29
- sendResponse({reloaded: true})
110
+ // Force immediate reload with cache-busting
111
+ try {
112
+ // Clear any cached data
113
+ if (chrome.storage && chrome.storage.local) {
114
+ await chrome.storage.local.clear();
115
+ }
116
+
117
+ // Force reload with timestamp to bypass cache
118
+ const timestamp = Date.now();
119
+ console.log('\u{1F504} Forcing extension reload at:', timestamp);
120
+
121
+ sendResponse({reloaded: true, timestamp: timestamp})
30
122
  chrome.runtime.reload()
31
- }, 750)
123
+ } catch (error) {
124
+ console.error('\u{274C} Failed to reload extension:', error);
125
+ sendResponse({error: error.message})
126
+ }
32
127
  }
33
128
 
34
- // Reload all tabs if the contextMenus code changes.
35
- if (request.changedFile === 'contextMenus') {
36
- sendResponse({reloaded: true})
37
- chrome.tabs.query({}, (tabs) => {
38
- if (!tabs) return
39
- tabs.forEach((tab) => chrome.tabs.reload(tab.id))
40
- })
41
- }
42
-
43
- // Reload all tabs if the declarative_net_request code changes.
44
- if (request.changedFile === 'declarative_net_request') {
45
- sendResponse({reloaded: true})
46
- chrome.runtime.reload()
47
- }
48
-
49
129
  return true
50
130
  }
51
131
  );
52
- `,f=o.background;if(f){let h=f?.scripts;if(h&&o.manifest_version===2)for(let d of[h[0]]){let w=p.default.resolve(r,d);if(i.includes(w))return`${g}${e}`}let $=f?.service_worker;if($&&o.manifest_version===3){let d=p.default.resolve(r,$);if(i.includes(d))return`${g}${e}`}}return e}
132
+
133
+ // Additional cache-busting mechanism
134
+ ;(function() {
135
+ const cacheBuster = Date.now();
136
+ console.log('Background script loaded with cache buster:', cacheBuster);
137
+
138
+ // Force reload if this script is older than 1 second (optimized for faster manifest reloads)
139
+ const scriptAge = Date.now() - cacheBuster;
140
+ if (scriptAge > 1000) {
141
+ console.log('Background script is stale, forcing reload');
142
+ chrome.runtime.reload();
143
+ }
144
+ })();
145
+ `;
146
+ let manifestBg = patchedManifest.background;
147
+ if ('firefox' !== browser) {
148
+ manifestBg = manifest["chromium:background"] || manifest["chrome:background"] || manifest["edge:background"] || manifestBg;
149
+ if (manifestBg) {
150
+ const backgroundScripts = (null == manifestBg ? void 0 : manifestBg.scripts) || (null == manifestBg ? void 0 : manifestBg["chromium:scripts"]) || (null == manifestBg ? void 0 : manifestBg["chrome:scripts"]) || (null == manifestBg ? void 0 : manifestBg["edge:scripts"]);
151
+ if (backgroundScripts) {
152
+ if (2 === patchedManifest.manifest_version) for (const bgScript of [
153
+ backgroundScripts[0]
154
+ ]){
155
+ const absoluteUrl = external_path_namespaceObject.resolve(projectPath, bgScript);
156
+ if (url.includes(absoluteUrl)) return `${generalReloadCode}${source}`;
157
+ }
158
+ }
159
+ const serviceWorker = null == manifestBg ? void 0 : manifestBg.service_worker;
160
+ if (serviceWorker) {
161
+ if (3 === patchedManifest.manifest_version) {
162
+ const absoluteUrl = external_path_namespaceObject.resolve(projectPath, serviceWorker);
163
+ if (url.includes(absoluteUrl)) return `${generalReloadCode}${source}`;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ return source;
169
+ }
170
+ exports["default"] = __webpack_exports__["default"];
171
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
172
+ "default"
173
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
174
+ Object.defineProperty(exports, '__esModule', {
175
+ value: true
176
+ });