extension-develop 0.0.0-next-20250825144602

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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +230 -0
  3. package/dist/add-content-script-wrapper.js +1777 -0
  4. package/dist/add-hmr-accept-code.js +96 -0
  5. package/dist/build.d.ts +2 -0
  6. package/dist/cleanup.d.ts +1 -0
  7. package/dist/deprecated-shadow-root.js +135 -0
  8. package/dist/dev.d.ts +2 -0
  9. package/dist/develop-lib/config-types.d.ts +85 -0
  10. package/dist/develop-lib/extract-from-zip.d.ts +1 -0
  11. package/dist/develop-lib/find-nearest-package.d.ts +2 -0
  12. package/dist/develop-lib/generate-extension-types.d.ts +1 -0
  13. package/dist/develop-lib/generate-zip.d.ts +2 -0
  14. package/dist/develop-lib/get-extension-config.d.ts +6 -0
  15. package/dist/develop-lib/get-project-path.d.ts +6 -0
  16. package/dist/develop-lib/install-dependencies.d.ts +2 -0
  17. package/dist/develop-lib/messages.d.ts +35 -0
  18. package/dist/develop-lib/validate-user-dependencies.d.ts +1 -0
  19. package/dist/ensure-hmr-for-scripts.js +74 -0
  20. package/dist/extensions/chrome-manager-extension/background.js +58 -0
  21. package/dist/extensions/chrome-manager-extension/define-initial-tab.js +77 -0
  22. package/dist/extensions/chrome-manager-extension/images/logo.png +0 -0
  23. package/dist/extensions/chrome-manager-extension/manifest.json +17 -0
  24. package/dist/extensions/chrome-manager-extension/pages/sakura-dark.css +268 -0
  25. package/dist/extensions/chrome-manager-extension/pages/sakura.css +267 -0
  26. package/dist/extensions/chrome-manager-extension/pages/welcome.html +46 -0
  27. package/dist/extensions/chrome-manager-extension/pages/welcome.js +34 -0
  28. package/dist/extensions/chrome-manager-extension/reload-service.js +297 -0
  29. package/dist/extensions/chromium-based-manager-extension/background.js +58 -0
  30. package/dist/extensions/chromium-based-manager-extension/define-initial-tab.js +77 -0
  31. package/dist/extensions/chromium-based-manager-extension/images/logo.png +0 -0
  32. package/dist/extensions/chromium-based-manager-extension/manifest.json +17 -0
  33. package/dist/extensions/chromium-based-manager-extension/pages/sakura-dark.css +268 -0
  34. package/dist/extensions/chromium-based-manager-extension/pages/sakura.css +267 -0
  35. package/dist/extensions/chromium-based-manager-extension/pages/welcome.html +46 -0
  36. package/dist/extensions/chromium-based-manager-extension/pages/welcome.js +34 -0
  37. package/dist/extensions/chromium-based-manager-extension/reload-service.js +302 -0
  38. package/dist/extensions/edge-manager-extension/background.js +58 -0
  39. package/dist/extensions/edge-manager-extension/define-initial-tab.js +77 -0
  40. package/dist/extensions/edge-manager-extension/images/logo.png +0 -0
  41. package/dist/extensions/edge-manager-extension/manifest.json +17 -0
  42. package/dist/extensions/edge-manager-extension/pages/sakura-dark.css +268 -0
  43. package/dist/extensions/edge-manager-extension/pages/sakura.css +267 -0
  44. package/dist/extensions/edge-manager-extension/pages/welcome.html +46 -0
  45. package/dist/extensions/edge-manager-extension/pages/welcome.js +34 -0
  46. package/dist/extensions/edge-manager-extension/reload-service.js +299 -0
  47. package/dist/extensions/firefox-manager-extension/background.js +85 -0
  48. package/dist/extensions/firefox-manager-extension/define-initial-tab.js +64 -0
  49. package/dist/extensions/firefox-manager-extension/images/logo.png +0 -0
  50. package/dist/extensions/firefox-manager-extension/manifest.json +15 -0
  51. package/dist/extensions/firefox-manager-extension/pages/sakura-dark.css +268 -0
  52. package/dist/extensions/firefox-manager-extension/pages/sakura.css +267 -0
  53. package/dist/extensions/firefox-manager-extension/pages/welcome.html +46 -0
  54. package/dist/extensions/firefox-manager-extension/pages/welcome.js +34 -0
  55. package/dist/extensions/firefox-manager-extension/reload-service.js +168 -0
  56. package/dist/extensions/gecko-based-manager-extension/background.js +57 -0
  57. package/dist/extensions/gecko-based-manager-extension/define-initial-tab.js +69 -0
  58. package/dist/extensions/gecko-based-manager-extension/images/logo.png +0 -0
  59. package/dist/extensions/gecko-based-manager-extension/manifest.json +16 -0
  60. package/dist/extensions/gecko-based-manager-extension/pages/sakura-dark.css +268 -0
  61. package/dist/extensions/gecko-based-manager-extension/pages/sakura.css +267 -0
  62. package/dist/extensions/gecko-based-manager-extension/pages/welcome.html +46 -0
  63. package/dist/extensions/gecko-based-manager-extension/pages/welcome.js +34 -0
  64. package/dist/extensions/gecko-based-manager-extension/reload-service.js +158 -0
  65. package/dist/inject-chromium-client-loader.js +176 -0
  66. package/dist/inject-firefox-client-loader.js +169 -0
  67. package/dist/minimum-chromium-file.js +25 -0
  68. package/dist/minimum-content-file.js +5 -0
  69. package/dist/minimum-firefox-file.js +17 -0
  70. package/dist/minimum-script-file.js +5 -0
  71. package/dist/module.d.ts +8 -0
  72. package/dist/module.js +10846 -0
  73. package/dist/preview.d.ts +2 -0
  74. package/dist/rslib.config.d.ts +3 -0
  75. package/dist/start.d.ts +2 -0
  76. package/dist/types.d.ts +11 -0
  77. package/dist/vitest.config.d.mts +2 -0
  78. package/dist/webpack/dev-server.d.ts +3 -0
  79. package/dist/webpack/plugin-browsers/browsers-lib/add-progress-bar.d.ts +1 -0
  80. package/dist/webpack/plugin-browsers/browsers-lib/constants.d.ts +5 -0
  81. package/dist/webpack/plugin-browsers/browsers-lib/dynamic-extension-manager.d.ts +35 -0
  82. package/dist/webpack/plugin-browsers/browsers-lib/html-merge.d.ts +1 -0
  83. package/dist/webpack/plugin-browsers/browsers-lib/instance-manager.d.ts +73 -0
  84. package/dist/webpack/plugin-browsers/browsers-lib/messages.d.ts +164 -0
  85. package/dist/webpack/plugin-browsers/browsers-lib/rdp-wire.d.ts +7 -0
  86. package/dist/webpack/plugin-browsers/browsers-lib/shared-utils.d.ts +16 -0
  87. package/dist/webpack/plugin-browsers/browsers-types.d.ts +131 -0
  88. package/dist/webpack/plugin-browsers/index.d.ts +41 -0
  89. package/dist/webpack/plugin-browsers/run-chromium/browser-config.d.ts +3 -0
  90. package/dist/webpack/plugin-browsers/run-chromium/create-profile.d.ts +10 -0
  91. package/dist/webpack/plugin-browsers/run-chromium/index.d.ts +28 -0
  92. package/dist/webpack/plugin-browsers/run-chromium/master-preferences.d.ts +161 -0
  93. package/dist/webpack/plugin-browsers/run-chromium/setup-chrome-inspection/cdp-client.d.ts +29 -0
  94. package/dist/webpack/plugin-browsers/run-chromium/setup-chrome-inspection/index.d.ts +25 -0
  95. package/dist/webpack/plugin-browsers/run-firefox/firefox/binary-detector.d.ts +15 -0
  96. package/dist/webpack/plugin-browsers/run-firefox/firefox/browser-config.d.ts +7 -0
  97. package/dist/webpack/plugin-browsers/run-firefox/firefox/create-profile.d.ts +13 -0
  98. package/dist/webpack/plugin-browsers/run-firefox/firefox/master-preferences.d.ts +95 -0
  99. package/dist/webpack/plugin-browsers/run-firefox/index.d.ts +26 -0
  100. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/index.d.ts +13 -0
  101. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/message-utils.d.ts +2 -0
  102. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/messaging-client.d.ts +42 -0
  103. package/dist/webpack/plugin-browsers/run-firefox/remote-firefox/setup-firefox-inspection.d.ts +31 -0
  104. package/dist/webpack/plugin-compatibility/feature-browser-specific-fields.d.ts +9 -0
  105. package/dist/webpack/plugin-compatibility/feature-polyfill.d.ts +12 -0
  106. package/dist/webpack/plugin-compatibility/index.d.ts +13 -0
  107. package/dist/webpack/plugin-compilation/clean-dist.d.ts +8 -0
  108. package/dist/webpack/plugin-compilation/env.d.ts +9 -0
  109. package/dist/webpack/plugin-compilation/index.d.ts +12 -0
  110. package/dist/webpack/plugin-css/common-style-loaders.d.ts +8 -0
  111. package/dist/webpack/plugin-css/css-in-content-script-loader.d.ts +11 -0
  112. package/dist/webpack/plugin-css/css-in-html-loader.d.ts +8 -0
  113. package/dist/webpack/plugin-css/css-tools/less.d.ts +4 -0
  114. package/dist/webpack/plugin-css/css-tools/postcss.d.ts +3 -0
  115. package/dist/webpack/plugin-css/css-tools/sass.d.ts +4 -0
  116. package/dist/webpack/plugin-css/css-tools/stylelint.d.ts +4 -0
  117. package/dist/webpack/plugin-css/css-tools/tailwind.d.ts +2 -0
  118. package/dist/webpack/plugin-css/index.d.ts +9 -0
  119. package/dist/webpack/plugin-css/is-content-script.d.ts +1 -0
  120. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/action.d.ts +2 -0
  121. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/background.d.ts +2 -0
  122. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/browser_action.d.ts +2 -0
  123. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/chrome_url_overrides.d.ts +2 -0
  124. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/devtools_page.d.ts +2 -0
  125. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/index.d.ts +2 -0
  126. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/options_ui.d.ts +2 -0
  127. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/page_action.d.ts +2 -0
  128. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/sandbox.d.ts +2 -0
  129. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/side_panel.d.ts +2 -0
  130. package/dist/webpack/plugin-extension/data/manifest-fields/html-fields/sidebar_action.d.ts +2 -0
  131. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/action.d.ts +2 -0
  132. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/browser_action.d.ts +2 -0
  133. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/browser_action.theme_icons.d.ts +2 -0
  134. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/icons.d.ts +2 -0
  135. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/index.d.ts +2 -0
  136. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/normalize.d.ts +6 -0
  137. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/page_action.d.ts +2 -0
  138. package/dist/webpack/plugin-extension/data/manifest-fields/icons-fields/sidebar_action.d.ts +2 -0
  139. package/dist/webpack/plugin-extension/data/manifest-fields/index.d.ts +19 -0
  140. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/declarative_net_request.d.ts +2 -0
  141. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/index.d.ts +2 -0
  142. package/dist/webpack/plugin-extension/data/manifest-fields/json-fields/storage.d.ts +2 -0
  143. package/dist/webpack/plugin-extension/data/manifest-fields/locales-fields/index.d.ts +1 -0
  144. package/dist/webpack/plugin-extension/data/manifest-fields/normalize.d.ts +10 -0
  145. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/background.d.ts +2 -0
  146. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/content_scripts.d.ts +2 -0
  147. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/index.d.ts +2 -0
  148. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/service_worker.d.ts +2 -0
  149. package/dist/webpack/plugin-extension/data/manifest-fields/scripts-fields/user_scripts.d.ts +2 -0
  150. package/dist/webpack/plugin-extension/data/manifest-fields/web-resources-fields/index.d.ts +2 -0
  151. package/dist/webpack/plugin-extension/data/special-folders/generate-entries.d.ts +4 -0
  152. package/dist/webpack/plugin-extension/data/special-folders/index.d.ts +12 -0
  153. package/dist/webpack/plugin-extension/feature-html/__spec__/html-lib/test-utils.d.ts +18 -0
  154. package/dist/webpack/plugin-extension/feature-html/html-lib/parse-html.d.ts +8 -0
  155. package/dist/webpack/plugin-extension/feature-html/html-lib/patch-html.d.ts +8 -0
  156. package/dist/webpack/plugin-extension/feature-html/html-lib/utils.d.ts +18 -0
  157. package/dist/webpack/plugin-extension/feature-html/index.d.ts +37 -0
  158. package/dist/webpack/plugin-extension/feature-html/steps/add-assets-to-compilation.d.ts +11 -0
  159. package/dist/webpack/plugin-extension/feature-html/steps/add-scripts-and-styles-to-compilation.d.ts +10 -0
  160. package/dist/webpack/plugin-extension/feature-html/steps/add-to-file-dependencies.d.ts +10 -0
  161. package/dist/webpack/plugin-extension/feature-html/steps/emit-html-file.d.ts +9 -0
  162. package/dist/webpack/plugin-extension/feature-html/steps/ensure-hmr-for-scripts.d.ts +2 -0
  163. package/dist/webpack/plugin-extension/feature-html/steps/handle-common-errors.d.ts +10 -0
  164. package/dist/webpack/plugin-extension/feature-html/steps/minimum-script-file.d.ts +1 -0
  165. package/dist/webpack/plugin-extension/feature-html/steps/throw-if-recompile-is-needed.d.ts +13 -0
  166. package/dist/webpack/plugin-extension/feature-html/steps/update-html-file.d.ts +10 -0
  167. package/dist/webpack/plugin-extension/feature-icons/index.d.ts +25 -0
  168. package/dist/webpack/plugin-extension/feature-icons/steps/add-to-file-dependencies.d.ts +9 -0
  169. package/dist/webpack/plugin-extension/feature-icons/steps/emit-file.d.ts +9 -0
  170. package/dist/webpack/plugin-extension/feature-json/index.d.ts +18 -0
  171. package/dist/webpack/plugin-extension/feature-locales/get-locales.d.ts +1 -0
  172. package/dist/webpack/plugin-extension/feature-locales/index.d.ts +13 -0
  173. package/dist/webpack/plugin-extension/feature-manifest/index.d.ts +23 -0
  174. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/background.d.ts +10 -0
  175. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/chrome_url_overrides.d.ts +8 -0
  176. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/commands.d.ts +16 -0
  177. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/content_scripts.d.ts +7 -0
  178. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/content_security_policy.d.ts +4 -0
  179. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/devtools_page.d.ts +4 -0
  180. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/icons.d.ts +6 -0
  181. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/index.d.ts +2 -0
  182. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/omnibox.d.ts +2 -0
  183. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/options_page.d.ts +4 -0
  184. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/options_ui.d.ts +8 -0
  185. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/page_action.d.ts +8 -0
  186. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/permissions.d.ts +4 -0
  187. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/sandbox.d.ts +7 -0
  188. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/sidebar_action.d.ts +2 -0
  189. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/storage.d.ts +6 -0
  190. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/theme.d.ts +2 -0
  191. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/user_scripts.d.ts +2 -0
  192. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/common/web_accessible_resources.d.ts +9 -0
  193. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/index.d.ts +2 -0
  194. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/background.d.ts +10 -0
  195. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/browser_action.d.ts +12 -0
  196. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/chrome_settings_overrides.d.ts +24 -0
  197. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/index.d.ts +2 -0
  198. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/page_action.d.ts +1 -0
  199. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/sidebar_action.d.ts +1 -0
  200. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv2/theme_experiment.d.ts +2 -0
  201. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/action.d.ts +8 -0
  202. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/background.d.ts +10 -0
  203. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/declarative_net_request.d.ts +2 -0
  204. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/host_permissions.d.ts +2 -0
  205. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/index.d.ts +2 -0
  206. package/dist/webpack/plugin-extension/feature-manifest/manifest-overrides/mv3/side_panel.d.ts +2 -0
  207. package/dist/webpack/plugin-extension/feature-manifest/steps/add-dependencies.d.ts +6 -0
  208. package/dist/webpack/plugin-extension/feature-manifest/steps/check-manifest-files.d.ts +17 -0
  209. package/dist/webpack/plugin-extension/feature-manifest/steps/emit-manifest.d.ts +7 -0
  210. package/dist/webpack/plugin-extension/feature-manifest/steps/throw-if-recompile.d.ts +11 -0
  211. package/dist/webpack/plugin-extension/feature-manifest/steps/update-manifest.d.ts +9 -0
  212. package/dist/webpack/plugin-extension/feature-scripts/index.d.ts +27 -0
  213. package/dist/webpack/plugin-extension/feature-scripts/scripts-lib/utils.d.ts +3 -0
  214. package/dist/webpack/plugin-extension/feature-scripts/steps/add-content-script-wrapper.d.ts +2 -0
  215. package/dist/webpack/plugin-extension/feature-scripts/steps/add-hmr-accept-code.d.ts +2 -0
  216. package/dist/webpack/plugin-extension/feature-scripts/steps/add-public-path-for-main-world.d.ts +11 -0
  217. package/dist/webpack/plugin-extension/feature-scripts/steps/add-public-path-runtime-module.d.ts +4 -0
  218. package/dist/webpack/plugin-extension/feature-scripts/steps/add-scripts.d.ts +9 -0
  219. package/dist/webpack/plugin-extension/feature-scripts/steps/deprecated-shadow-root.d.ts +2 -0
  220. package/dist/webpack/plugin-extension/feature-scripts/steps/javascript-content-script-wrapper.d.ts +1 -0
  221. package/dist/webpack/plugin-extension/feature-scripts/steps/minimum-content-file.d.ts +0 -0
  222. package/dist/webpack/plugin-extension/feature-scripts/steps/preact-content-script-wrapper.d.ts +1 -0
  223. package/dist/webpack/plugin-extension/feature-scripts/steps/react-content-script-wrapper.d.ts +1 -0
  224. package/dist/webpack/plugin-extension/feature-scripts/steps/svelte-content-script-wrapper.d.ts +1 -0
  225. package/dist/webpack/plugin-extension/feature-scripts/steps/typescript-content-script-wrapper.d.ts +1 -0
  226. package/dist/webpack/plugin-extension/feature-scripts/steps/vue-content-script-wrapper.d.ts +1 -0
  227. package/dist/webpack/plugin-extension/feature-special-folders/copy-public-folder.d.ts +14 -0
  228. package/dist/webpack/plugin-extension/feature-special-folders/index.d.ts +19 -0
  229. package/dist/webpack/plugin-extension/feature-special-folders/warn-upon-folder-changes.d.ts +7 -0
  230. package/dist/webpack/plugin-extension/feature-web-resources/clean-matches.d.ts +7 -0
  231. package/dist/webpack/plugin-extension/feature-web-resources/index.d.ts +18 -0
  232. package/dist/webpack/plugin-extension/index.d.ts +10 -0
  233. package/dist/webpack/plugin-js-frameworks/index.d.ts +13 -0
  234. package/dist/webpack/plugin-js-frameworks/js-tools/babel.d.ts +16 -0
  235. package/dist/webpack/plugin-js-frameworks/js-tools/preact.d.ts +3 -0
  236. package/dist/webpack/plugin-js-frameworks/js-tools/react.d.ts +3 -0
  237. package/dist/webpack/plugin-js-frameworks/js-tools/svelte.d.ts +3 -0
  238. package/dist/webpack/plugin-js-frameworks/js-tools/typescript.d.ts +36 -0
  239. package/dist/webpack/plugin-js-frameworks/js-tools/vue.d.ts +3 -0
  240. package/dist/webpack/plugin-js-frameworks/load-loader-options.d.ts +1 -0
  241. package/dist/webpack/plugin-reload/index.d.ts +13 -0
  242. package/dist/webpack/plugin-reload/reload-lib/messages.d.ts +106 -0
  243. package/dist/webpack/plugin-reload/reload-types.d.ts +14 -0
  244. package/dist/webpack/plugin-reload/start-server.d.ts +4 -0
  245. package/dist/webpack/plugin-reload/steps/create-web-socket-server/index.d.ts +14 -0
  246. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/broadcast-message.d.ts +2 -0
  247. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/message-dispatcher.d.ts +2 -0
  248. package/dist/webpack/plugin-reload/steps/create-web-socket-server/web-socket-server/servers.d.ts +2 -0
  249. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/index.d.ts +3 -0
  250. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/inject-chromium-client-loader.d.ts +9 -0
  251. package/dist/webpack/plugin-reload/steps/setup-chromium-reload-client/minimum-chromium-file.d.ts +0 -0
  252. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/index.d.ts +3 -0
  253. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/inject-firefox-client-loader.d.ts +9 -0
  254. package/dist/webpack/plugin-reload/steps/setup-firefox-reload-client/minimum-firefox-file.d.ts +0 -0
  255. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/index.d.ts +9 -0
  256. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-background.d.ts +15 -0
  257. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-csp.d.ts +5 -0
  258. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-externally-connectable.d.ts +10 -0
  259. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/apply-manifest-dev-defaults/patch-web-resources.d.ts +10 -0
  260. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/generate-manager-extension.d.ts +15 -0
  261. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/index.d.ts +10 -0
  262. package/dist/webpack/plugin-reload/steps/setup-reload-strategy/target-web-extension-plugin/index.d.ts +13 -0
  263. package/dist/webpack/plugin-static-assets/index.d.ts +12 -0
  264. package/dist/webpack/webpack-config.d.ts +14 -0
  265. package/dist/webpack/webpack-lib/auto-exit.d.ts +1 -0
  266. package/dist/webpack/webpack-lib/constants.d.ts +4 -0
  267. package/dist/webpack/webpack-lib/messages.d.ts +121 -0
  268. package/dist/webpack/webpack-lib/port-manager.d.ts +27 -0
  269. package/dist/webpack/webpack-lib/utils.d.ts +23 -0
  270. package/dist/webpack/webpack-types.d.ts +49 -0
  271. package/package.json +143 -0
@@ -0,0 +1,168 @@
1
+ let webSocket = null
2
+ let triedWsFallback = false
3
+
4
+ // Get instance ID from the service worker context
5
+ const instanceId = '__INSTANCE_ID__'
6
+
7
+ async function connect() {
8
+ if (webSocket) {
9
+ // If already connected, do nothing
10
+ return
11
+ }
12
+
13
+ const port = '__RELOAD_PORT__'
14
+ let reconnectAttempts = 0
15
+ const maxReconnectAttempts = 10
16
+ const baseBackoffMs = 250
17
+ const maxBackoffMs = 5000
18
+
19
+ const connectTo = (url) => {
20
+ webSocket = new WebSocket(url)
21
+
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
+ }
30
+ }
31
+
32
+ webSocket.onopen = () => {
33
+ reconnectAttempts = 0
34
+ console.info(
35
+ `[Extension.js] Connection opened. Listening on port ${port}...`
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
+ }
50
+
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
+ }
64
+ }
65
+
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
+ }
77
+ }
78
+
79
+ connectTo(`wss://127.0.0.1:${port}`)
80
+ }
81
+
82
+ function disconnect() {
83
+ if (webSocket) {
84
+ webSocket.close()
85
+ }
86
+ }
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
+
115
+ async function getDevExtensions() {
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
+ })
125
+
126
+ return allExtensions.filter((extension) => {
127
+ return (
128
+ // Do not include itself
129
+ extension.id !== browser.runtime.id &&
130
+ // Show only unpackaged extensions (Firefox reports "temporary")
131
+ (extension.installType === 'development' ||
132
+ extension.installType === 'temporary')
133
+ )
134
+ })
135
+ }
136
+
137
+ async function messageAllExtensions(changedFile) {
138
+ // Check if the external extension is ready
139
+ const isExtensionReady = await checkExtensionReadiness()
140
+
141
+ if (isExtensionReady) {
142
+ const devExtensions = await getDevExtensions()
143
+ for (const extension of devExtensions) {
144
+ try {
145
+ await browser.runtime.sendMessage(extension.id, {changedFile})
146
+ console.info(
147
+ `[Extension.js] Add-On reloaded and ready for instance ${instanceId}.`
148
+ )
149
+ } catch (error) {
150
+ console.error(
151
+ `Error sending message to ${extension.id}: ${error.message}`
152
+ )
153
+ }
154
+ }
155
+ } else {
156
+ console.info(
157
+ `[Extension.js] External extension is not ready for instance ${instanceId}.`
158
+ )
159
+ }
160
+ }
161
+
162
+ async function checkExtensionReadiness() {
163
+ return new Promise((resolve) => {
164
+ setTimeout(() => {
165
+ resolve(true)
166
+ }, 1000)
167
+ })
168
+ }
@@ -0,0 +1,57 @@
1
+ import {handleFirstRun} from './define-initial-tab.js'
2
+ import {connect, disconnect} from './reload-service.js'
3
+
4
+ function bgGreen(str) {
5
+ return `background: transparent; color: #0971fe; ${str}`
6
+ }
7
+
8
+ async function handleTabOnExtensionLoad() {
9
+ console.log(
10
+ `%c
11
+ ██████████████████████████████████████████████████████████
12
+ ██████████████████████████████████████████████████████████
13
+ ████████████████████████████ ██████████████████████████
14
+ █████████████████████████ ██████ ███████████████
15
+ ███████████████████████ ███ ███ ████████████
16
+ ██████████████████████ ██████ ███ ███████████
17
+ ███████████████████████ ██████ ██████ ███████████
18
+ ████████████████ ██████ ██████████████ ███████████
19
+ █████████████ ████ ████████████ ████████████
20
+ ███████████ ██ █████████████ ███████████████
21
+ ██████████ ██████ █████████████████ █████████████
22
+ ███████████ ████████████████████████████ ███████████
23
+ █████████████ █████████████████ ██████ ██████████
24
+ ███████████████ ██████████████ ██ ██████████
25
+ ████████████ ████████████ ████ █████████████
26
+ ███████████ █████████████ ██████ ███████████████
27
+ ███████████ ██████ ██████ ███████████████████████
28
+ ███████████ ████ ██████ ██████████████████████
29
+ ████████████ ██ ███ ███████████████████████
30
+ ███████████████ ██████ █████████████████████████
31
+ ██████████████████████████ ████████████████████████████
32
+ ██████████████████████████████████████████████████████████
33
+ ██████████████████████████████████████████████████████████
34
+ MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js Authors.
35
+ `,
36
+ bgGreen('')
37
+ )
38
+
39
+ try {
40
+ await handleFirstRun()
41
+ } catch (error) {
42
+ console.error('Error handling tabs on extension load:', error)
43
+ }
44
+ }
45
+
46
+ browser.runtime.onInstalled.addListener(async () => {
47
+ await handleTabOnExtensionLoad()
48
+
49
+ let isConnected = false
50
+
51
+ if (isConnected) {
52
+ disconnect()
53
+ } else {
54
+ await connect()
55
+ isConnected = true
56
+ }
57
+ })
@@ -0,0 +1,69 @@
1
+ async function getDevExtension() {
2
+ const allExtensions = await browser.management.getAll()
3
+
4
+ return allExtensions.filter((extension) => {
5
+ return (
6
+ // Reload extension
7
+ extension.name !== 'Extension.js DevTools' &&
8
+ // Show only unpackaged extensions
9
+ extension.installType === 'development'
10
+ )
11
+ })[0]
12
+ }
13
+
14
+ // Create a new tab and set it to background.
15
+ export async function createFirefoxAddonsTab(initialTab, url) {
16
+ try {
17
+ // Check if an about:blank tab is already open
18
+ const tabs = await browser.tabs.query({url: 'about:blank'})
19
+ const addonsTabExist = tabs.length > 0
20
+
21
+ // Return if url exists, meaning about:blank tab is already open
22
+ if (addonsTabExist) return
23
+
24
+ // Create an inactive about:blank tab
25
+ const addonsTab = await browser.tabs.create({url, active: false})
26
+
27
+ // Get the initial page tab and move the new addons tab to the first position.
28
+ // This will auto-activate the initial page tab because we set the addons tab to inactive
29
+ await browser.tabs.move(addonsTab.id, {index: 0})
30
+
31
+ // Reactivate the user-selected initial page tab
32
+ await browser.tabs.update(initialTab.id, {active: true})
33
+ } catch (error) {
34
+ console.error('[Extension.js] Error creating and manipulating tabs:', error)
35
+ }
36
+ }
37
+
38
+ // Function to handle first run logic
39
+ export async function handleFirstRun() {
40
+ try {
41
+ const devExtension = await getDevExtension()
42
+
43
+ if (!devExtension) {
44
+ console.warn('[Extension.js] No development extensions found')
45
+ return
46
+ }
47
+
48
+ const result = await browser.storage.local.get(devExtension.id)
49
+
50
+ if (result[devExtension.id] && result[devExtension.id].didRun) {
51
+ return
52
+ }
53
+
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
+ }
60
+
61
+ // Ensure the welcome page shows only once per extension installation
62
+ await browser.storage.local.set({[devExtension.id]: {didRun: true}})
63
+ } catch (error) {
64
+ console.error(
65
+ '[Extension.js] Error handling tabs on extension load:',
66
+ error
67
+ )
68
+ }
69
+ }
@@ -0,0 +1,16 @@
1
+ {
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
+ "manifest_version": 2,
6
+ "background": {
7
+ "scripts": ["background.js"],
8
+ "type": "module"
9
+ },
10
+ "icons": {
11
+ "16": "images/logo.png",
12
+ "48": "images/logo.png",
13
+ "128": "images/logo.png"
14
+ },
15
+ "permissions": ["management", "tabs", "storage"]
16
+ }
@@ -0,0 +1,268 @@
1
+ /* $color-text: #dedce5; */
2
+ /* Sakura.css v1.5.0
3
+ * ================
4
+ * Minimal css theme.
5
+ * Project: https://github.com/oxalorg/sakura/
6
+ */
7
+ /* Body */
8
+ html {
9
+ font-size: 62.5%;
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
11
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
12
+ }
13
+
14
+ body {
15
+ font-size: 1.8rem;
16
+ line-height: 1.618;
17
+ max-width: 38em;
18
+ margin: auto;
19
+ color: #c9c9c9;
20
+ background-color: #222222;
21
+ padding: 13px;
22
+ }
23
+
24
+ @media (max-width: 684px) {
25
+ body {
26
+ font-size: 1.53rem;
27
+ }
28
+ }
29
+ @media (max-width: 382px) {
30
+ body {
31
+ font-size: 1.35rem;
32
+ }
33
+ }
34
+ h1,
35
+ h2,
36
+ h3,
37
+ h4,
38
+ h5,
39
+ h6 {
40
+ line-height: 1.1;
41
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
42
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
43
+ font-weight: 700;
44
+ margin-top: 3rem;
45
+ margin-bottom: 1.5rem;
46
+ overflow-wrap: break-word;
47
+ word-wrap: break-word;
48
+ -ms-word-break: break-all;
49
+ word-break: break-word;
50
+ }
51
+
52
+ h1 {
53
+ font-size: 2.35em;
54
+ }
55
+
56
+ h2 {
57
+ font-size: 2em;
58
+ }
59
+
60
+ h3 {
61
+ font-size: 1.75em;
62
+ }
63
+
64
+ h4 {
65
+ font-size: 1.5em;
66
+ }
67
+
68
+ h5 {
69
+ font-size: 1.25em;
70
+ }
71
+
72
+ h6 {
73
+ font-size: 1em;
74
+ }
75
+
76
+ p {
77
+ margin-top: 0px;
78
+ margin-bottom: 2.5rem;
79
+ }
80
+
81
+ small,
82
+ sub,
83
+ sup {
84
+ font-size: 75%;
85
+ }
86
+
87
+ hr {
88
+ border-color: #ffffff;
89
+ }
90
+
91
+ a {
92
+ text-decoration: none;
93
+ color: #ffffff;
94
+ }
95
+ a:visited {
96
+ color: #e6e6e6;
97
+ }
98
+ a:hover {
99
+ color: #c9c9c9;
100
+ border-bottom: 2px solid #c9c9c9;
101
+ }
102
+
103
+ ul {
104
+ padding-left: 1.4em;
105
+ margin-top: 0px;
106
+ margin-bottom: 2.5rem;
107
+ }
108
+
109
+ li {
110
+ margin-bottom: 0.4em;
111
+ }
112
+
113
+ blockquote {
114
+ margin-left: 0px;
115
+ margin-right: 0px;
116
+ padding-left: 1em;
117
+ padding-top: 0.8em;
118
+ padding-bottom: 0.8em;
119
+ padding-right: 0.8em;
120
+ border-left: 5px solid #ffffff;
121
+ margin-bottom: 2.5rem;
122
+ background-color: #4a4a4a;
123
+ }
124
+
125
+ blockquote p {
126
+ margin-bottom: 0;
127
+ }
128
+
129
+ img,
130
+ video {
131
+ height: auto;
132
+ max-width: 100%;
133
+ margin-top: 0px;
134
+ margin-bottom: 2.5rem;
135
+ }
136
+
137
+ /* Pre and Code */
138
+ pre {
139
+ background-color: #4a4a4a;
140
+ display: block;
141
+ padding: 1em;
142
+ overflow-x: auto;
143
+ margin-top: 0px;
144
+ margin-bottom: 2.5rem;
145
+ font-size: 0.9em;
146
+ }
147
+
148
+ code,
149
+ kbd,
150
+ samp {
151
+ font-size: 0.9em;
152
+ padding: 0 0.5em;
153
+ background-color: #4a4a4a;
154
+ white-space: pre-wrap;
155
+ }
156
+
157
+ pre > code {
158
+ padding: 0;
159
+ background-color: transparent;
160
+ white-space: pre;
161
+ font-size: 1em;
162
+ }
163
+
164
+ /* Tables */
165
+ table {
166
+ text-align: justify;
167
+ width: 100%;
168
+ border-collapse: collapse;
169
+ margin-bottom: 2rem;
170
+ }
171
+
172
+ td,
173
+ th {
174
+ padding: 0.5em;
175
+ border-bottom: 1px solid #4a4a4a;
176
+ }
177
+
178
+ /* Buttons, forms and input */
179
+ input,
180
+ textarea {
181
+ border: 1px solid #c9c9c9;
182
+ }
183
+ input:focus,
184
+ textarea:focus {
185
+ border: 1px solid #ffffff;
186
+ }
187
+
188
+ textarea {
189
+ width: 100%;
190
+ }
191
+
192
+ .button,
193
+ button,
194
+ input[type='submit'],
195
+ input[type='reset'],
196
+ input[type='button'],
197
+ input[type='file']::file-selector-button {
198
+ display: inline-block;
199
+ padding: 5px 10px;
200
+ text-align: center;
201
+ text-decoration: none;
202
+ white-space: nowrap;
203
+ background-color: #ffffff;
204
+ color: #222222;
205
+ border-radius: 1px;
206
+ border: 1px solid #ffffff;
207
+ cursor: pointer;
208
+ box-sizing: border-box;
209
+ }
210
+ .button[disabled],
211
+ button[disabled],
212
+ input[type='submit'][disabled],
213
+ input[type='reset'][disabled],
214
+ input[type='button'][disabled],
215
+ input[type='file']::file-selector-button[disabled] {
216
+ cursor: default;
217
+ opacity: 0.5;
218
+ }
219
+ .button:hover,
220
+ button:hover,
221
+ input[type='submit']:hover,
222
+ input[type='reset']:hover,
223
+ input[type='button']:hover,
224
+ input[type='file']::file-selector-button:hover {
225
+ background-color: #c9c9c9;
226
+ color: #222222;
227
+ outline: 0;
228
+ }
229
+ .button:focus-visible,
230
+ button:focus-visible,
231
+ input[type='submit']:focus-visible,
232
+ input[type='reset']:focus-visible,
233
+ input[type='button']:focus-visible,
234
+ input[type='file']::file-selector-button:focus-visible {
235
+ outline-style: solid;
236
+ outline-width: 2px;
237
+ }
238
+
239
+ textarea,
240
+ select,
241
+ input {
242
+ color: #c9c9c9;
243
+ padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
244
+ margin-bottom: 10px;
245
+ background-color: #4a4a4a;
246
+ border: 1px solid #4a4a4a;
247
+ border-radius: 4px;
248
+ box-shadow: none;
249
+ box-sizing: border-box;
250
+ }
251
+ textarea:focus,
252
+ select:focus,
253
+ input:focus {
254
+ border: 1px solid #ffffff;
255
+ outline: 0;
256
+ }
257
+
258
+ input[type='checkbox']:focus {
259
+ outline: 1px dotted #ffffff;
260
+ }
261
+
262
+ label,
263
+ legend,
264
+ fieldset {
265
+ display: block;
266
+ margin-bottom: 0.5rem;
267
+ font-weight: 600;
268
+ }