extension-develop 4.1.19 → 4.1.21

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 (76) hide show
  1. package/dist/672~0.mjs +24 -1
  2. package/dist/747~0.mjs +4 -2
  3. package/dist/832~0.mjs +26 -6
  4. package/dist/840~0.mjs +507 -26
  5. package/dist/950~0.mjs +18 -26
  6. package/dist/dev-server/control-bridge/actions-file.d.ts +0 -1
  7. package/dist/dev-server/control-bridge/broker.d.ts +6 -4
  8. package/dist/dev-server/control-bridge/contracts.d.ts +1 -1
  9. package/dist/dev-server/control-bridge/logs-file.d.ts +0 -1
  10. package/dist/dev-server/control-bridge/producer-runtime.d.ts +1 -2
  11. package/dist/dev-server~0.mjs +19 -5
  12. package/dist/extension-js-devtools/edge/manifest.json +0 -1
  13. package/dist/lib/addon-lint.d.ts +4 -1
  14. package/dist/lib/chunk-dependency-provenance.d.ts +14 -0
  15. package/dist/lib/constants.d.ts +1 -0
  16. package/dist/lib/ensure-develop-artifacts.d.ts +0 -7
  17. package/dist/lib/has-dependency.d.ts +0 -5
  18. package/dist/lib/manifest-utils.d.ts +2 -0
  19. package/dist/lib/merge-options.d.ts +0 -40
  20. package/dist/lib/messages.d.ts +4 -4
  21. package/dist/lib/package-manager.d.ts +2 -0
  22. package/dist/lib/project-manifest.d.ts +0 -1
  23. package/dist/lib/session-paths.d.ts +0 -22
  24. package/dist/plugin-browsers/index.d.ts +0 -7
  25. package/dist/plugin-browsers/safari-dev-plugin.d.ts +4 -0
  26. package/dist/plugin-compatibility/feature-polyfill.d.ts +0 -4
  27. package/dist/plugin-compilation/env.d.ts +2 -5
  28. package/dist/plugin-css/css-lib/dead-url-refs.d.ts +0 -6
  29. package/dist/plugin-css/css-lib/inline-content-script-css.d.ts +0 -15
  30. package/dist/plugin-css/css-lib/resolve-css-asset.d.ts +0 -8
  31. package/dist/plugin-js-frameworks/js-frameworks-lib/messages.d.ts +1 -0
  32. package/dist/plugin-js-frameworks/js-tools/solid.d.ts +3 -0
  33. package/dist/plugin-js-frameworks/js-tools/typescript.d.ts +16 -0
  34. package/dist/plugin-perf-budgets/categorize.d.ts +2 -1
  35. package/dist/plugin-perf-budgets/index.d.ts +1 -22
  36. package/dist/plugin-playwright/index.d.ts +3 -2
  37. package/dist/plugin-reload/index.d.ts +1 -1
  38. package/dist/plugin-reload/reload-dispatch.d.ts +6 -3
  39. package/dist/plugin-reload/steps/setup-chunk-loading-target.d.ts +0 -13
  40. package/dist/plugin-special-folders/index.d.ts +0 -9
  41. package/dist/plugin-web-extension/feature-html/html-lib/utils.d.ts +0 -1
  42. package/dist/plugin-web-extension/feature-html/index.d.ts +0 -27
  43. package/dist/plugin-web-extension/feature-icons/index.d.ts +0 -12
  44. package/dist/plugin-web-extension/feature-json/index.d.ts +0 -9
  45. package/dist/plugin-web-extension/feature-locales/index.d.ts +0 -4
  46. package/dist/plugin-web-extension/feature-manifest/index.d.ts +0 -10
  47. package/dist/plugin-web-extension/feature-manifest/manifest-lib/filter-key-edge.d.ts +5 -0
  48. package/dist/plugin-web-extension/feature-manifest/manifest-lib/filter-keys-safari.d.ts +11 -0
  49. package/dist/plugin-web-extension/feature-manifest/manifest-lib/gecko-data-collection.d.ts +0 -12
  50. package/dist/plugin-web-extension/feature-manifest/manifest-lib/legacy-paths.d.ts +0 -13
  51. package/dist/plugin-web-extension/feature-manifest/manifest-lib/sanitize-fatal-shapes.d.ts +0 -36
  52. package/dist/plugin-web-extension/feature-manifest/messages.d.ts +20 -0
  53. package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults-lib/dev-injected-hosts.d.ts +0 -5
  54. package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults-lib/emitted-evidence.d.ts +22 -0
  55. package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults-lib/patch-background.d.ts +9 -0
  56. package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults-lib/patch-web-resources.d.ts +7 -16
  57. package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults.d.ts +6 -2
  58. package/dist/plugin-web-extension/feature-manifest/steps/patch-war.d.ts +0 -5
  59. package/dist/plugin-web-extension/feature-manifest/steps/patch-webkit-background.d.ts +2 -0
  60. package/dist/plugin-web-extension/feature-manifest/steps/update-manifest.d.ts +1 -0
  61. package/dist/plugin-web-extension/feature-manifest/steps/warn-gecko-unsupported-apis.d.ts +119 -26
  62. package/dist/plugin-web-extension/feature-scripts/index.d.ts +0 -10
  63. package/dist/plugin-web-extension/feature-scripts/messages.d.ts +5 -0
  64. package/dist/plugin-web-extension/feature-scripts/steps/native-geturl-import-loader.d.ts +0 -3
  65. package/dist/plugin-web-extension/feature-scripts/steps/warn-page-context-worker.d.ts +5 -0
  66. package/dist/plugin-web-extension/feature-web-resources/collect-entry-imports.d.ts +1 -0
  67. package/dist/plugin-web-extension/feature-web-resources/index.d.ts +0 -10
  68. package/dist/plugin-web-extension/feature-web-resources/web-resources-lib/clean-matches.d.ts +0 -6
  69. package/dist/plugin-web-extension/feature-web-resources/web-resources-lib/messages.d.ts +1 -0
  70. package/dist/plugin-web-extension/feature-web-resources/web-resources-lib/unreachable-resources.d.ts +9 -0
  71. package/dist/plugin-web-extension/shared/discover-devtools-panels.d.ts +0 -6
  72. package/dist/plugin-web-extension/shared/paths.d.ts +0 -1
  73. package/dist/rspack-config.d.ts +1 -1
  74. package/dist/rspack-config~0.mjs +1074 -574
  75. package/package.json +1 -1
  76. package/runtime/process-shim.cjs +2 -0
package/dist/672~0.mjs CHANGED
@@ -104,6 +104,16 @@ function findDroppedVendorKeys(manifest, browser) {
104
104
  walk(manifest, '');
105
105
  return found;
106
106
  }
107
+ function isValidManifestVersion(value) {
108
+ return 2 === value || 3 === value;
109
+ }
110
+ function findPrefixedManifestVersionKeys(manifest) {
111
+ if (!manifest || 'object' != typeof manifest) return [];
112
+ return Object.keys(manifest).filter((key)=>{
113
+ const colon = key.indexOf(':');
114
+ return colon > 0 && 'manifest_version' === key.substring(colon + 1);
115
+ });
116
+ }
107
117
  const THEME_DISQUALIFYING_KEYS = [
108
118
  'background',
109
119
  "content_scripts",
@@ -198,6 +208,19 @@ function entrySplitAcrossInitialFiles(entryName, surface, ownFile, extraFiles) {
198
208
  lines.push(`Only a user-set optimization.splitChunks cache group does this. Use chunks: 'async' and import() the shared module: ${pintor.blue(SPLIT_ENTRY_RECIPE_URL)}`);
199
209
  return lines.join('\n');
200
210
  }
211
+ const PAGE_CONTEXT_SURFACES = {
212
+ content_script: "a content script",
213
+ script: "an injected script"
214
+ };
215
+ function workerStartedFromPageContext(assetName, surface) {
216
+ const lines = [];
217
+ lines.push(`${assetName} starts a worker from an extension URL, which the browser refuses in ${PAGE_CONTEXT_SURFACES[surface]}.`);
218
+ lines.push(`${pintor.gray('SCRIPT')} ${pintor.underline(assetName)}`);
219
+ lines.push("The worker file ships, but a worker script must be same-origin with the document that starts it, and this document is the page, so the worker never runs. Chromium throws a SecurityError and Firefox fires an error event on the worker.");
220
+ lines.push(`- Fetch the worker file first and start the worker from a blob: ${pintor.blue("new Worker(URL.createObjectURL(new Blob([await (await fetch(chrome.runtime.getURL('worker.js'))).text()])))")}`);
221
+ lines.push("- Or start the worker from an extension page, where the document is the extension and this spelling works as written.");
222
+ return lines.join('\n');
223
+ }
201
224
  function fetchedFileDependencyMissing(assetName, literal, expectedPath) {
202
225
  const lines = [];
203
226
  lines.push(`${assetName} loads '${literal}' at runtime (fetch/XMLHttpRequest/new URL), but the file isn't in the output.`);
@@ -243,4 +266,4 @@ function compiledSourceSpelling(assetName, api, literal, emittedPath) {
243
266
  lines.push(`Reference the emitted path: ${pintor.blue(emittedPath)}.`);
244
267
  return lines.join('\n');
245
268
  }
246
- export { compiledSourceSpelling, entrySplitAcrossInitialFiles, fetchedFileDependencyMissing, filterKeysForThisBrowser, findDroppedVendorKeys, getURLDependencyMissing, importScriptsDependencyMissing, injectedCompiledSourceLiteral, injectedFileDependencyMissing, isStaticTheme, isStaticThemeSource, reservedScriptsFolder, runtimeSetSurfaceDependencyMissing, staticImportDependencyMissing };
269
+ export { compiledSourceSpelling, entrySplitAcrossInitialFiles, fetchedFileDependencyMissing, filterKeysForThisBrowser, findDroppedVendorKeys, findPrefixedManifestVersionKeys, getURLDependencyMissing, importScriptsDependencyMissing, injectedCompiledSourceLiteral, injectedFileDependencyMissing, isStaticTheme, isStaticThemeSource, isValidManifestVersion, reservedScriptsFolder, runtimeSetSurfaceDependencyMissing, staticImportDependencyMissing, workerStartedFromPageContext };
package/dist/747~0.mjs CHANGED
@@ -69,10 +69,12 @@ function toRuntimeStylesheetModule(css) {
69
69
  `var __extjsCssText = ${JSON.stringify(css)};`,
70
70
  'function __extjsExtensionRoot() {',
71
71
  ' try {',
72
- ' if (typeof browser === "object" && browser && browser.runtime && typeof browser.runtime.getURL === "function") return String(browser.runtime.getURL("/"));',
72
+ ' var b = globalThis.browser;',
73
+ ' if (typeof b === "object" && b && b.runtime && typeof b.runtime.getURL === "function") return String(b.runtime.getURL("/"));',
73
74
  ' } catch (error) {}',
74
75
  ' try {',
75
- ' if (typeof chrome === "object" && chrome && chrome.runtime && typeof chrome.runtime.getURL === "function") return String(chrome.runtime.getURL("/"));',
76
+ ' var c = globalThis.chrome;',
77
+ ' if (typeof c === "object" && c && c.runtime && typeof c.runtime.getURL === "function") return String(c.runtime.getURL("/"));',
76
78
  ' } catch (error) {}',
77
79
  ' try {',
78
80
  ' var base = (typeof globalThis === "object" && globalThis && globalThis.__EXTJS_EXTENSION_BASE__) ? String(globalThis.__EXTJS_EXTENSION_BASE__) : "";',
package/dist/832~0.mjs CHANGED
@@ -19,7 +19,7 @@ import * as __rspack_external_node_fs_1b05aee1 from "node:fs";
19
19
  import * as __rspack_external_node_os_4f3c9d58 from "node:os";
20
20
  import * as __rspack_external_node_path_806ed179 from "node:path";
21
21
  import * as __rspack_external_node_vm_ef240610 from "node:vm";
22
- var package_namespaceObject = /*#__PURE__*/ JSON.parse('{"rE":"4.1.19","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.2.3","@rspack/dev-server":"2.1.0","@rspack/plugin-preact-refresh":"2.0.1","@rspack/plugin-react-refresh":"2.0.2","@vue/compiler-sfc":"3.5.26","acorn":"^8.16.0","browser-extension-manifest-fields":"^3.0.1","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","es-module-lexer":"^3.0.2","extension-from-store":"^0.2.5","fflate":"^0.8.3","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.6.7","less-loader":"13.0.0","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.23","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","prefers-yarn":"2.0.1","react-refresh":"0.18.0","sass-loader":"17.0.0","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","vue":"3.5.26","vue-loader":"17.4.2","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3","ws":"^8.20.1"}}');
22
+ var package_namespaceObject = /*#__PURE__*/ JSON.parse('{"rE":"4.1.21","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.2.3","@rspack/dev-server":"2.1.0","@rspack/plugin-preact-refresh":"2.0.1","@rspack/plugin-react-refresh":"2.0.2","@vue/compiler-sfc":"3.5.26","acorn":"^8.16.0","browser-extension-manifest-fields":"^3.0.1","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","es-module-lexer":"^3.0.2","extension-from-store":"^0.2.5","fflate":"^0.8.3","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.6.7","less-loader":"13.0.0","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.23","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","prefers-yarn":"2.0.1","react-refresh":"0.18.0","sass-loader":"17.0.0","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","vue":"3.5.26","vue-loader":"17.4.2","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3","ws":"^8.20.1"}}');
23
23
  const preloadedEnvKeys = new Set();
24
24
  function getPreloadedEnvKeys() {
25
25
  return preloadedEnvKeys;
@@ -682,7 +682,8 @@ function createPlaywrightMetadataWriter(options) {
682
682
  }
683
683
  if ('string' == typeof prev.executorAttachedAt) {
684
684
  payload.executorAttachedAt = prev.executorAttachedAt;
685
- payload.runtime = 'attached';
685
+ payload.runtime = 'detached' === prev.runtime ? 'detached' : 'attached';
686
+ if ('string' == typeof prev.executorDetachedAt) payload.executorDetachedAt = prev.executorDetachedAt;
686
687
  }
687
688
  if ('starting' !== status && 'string' == typeof prev.extensionLoadRefusedAt) {
688
689
  const target = payload;
@@ -738,14 +739,25 @@ function createPlaywrightMetadataWriter(options) {
738
739
  compiledAt: null
739
740
  });
740
741
  },
741
- writeShutdown () {
742
+ writeShutdown (message = 'the dev session ended (watch closed)') {
742
743
  if (foreignLiveDevSession) return;
743
744
  try {
744
745
  if (!__rspack_external_node_fs_1b05aee1.existsSync(readyPath)) return;
745
746
  const prev = JSON.parse(__rspack_external_node_fs_1b05aee1.readFileSync(readyPath, 'utf-8'));
746
747
  prev.status = 'stopped';
747
748
  prev.code = 'shutdown';
748
- prev.message = 'the dev session ended (watch closed)';
749
+ prev.message = message;
750
+ prev.ts = nowISO();
751
+ writeJsonAtomic(readyPath, prev);
752
+ } catch {}
753
+ },
754
+ stampExecutorDetached () {
755
+ try {
756
+ if (!__rspack_external_node_fs_1b05aee1.existsSync(readyPath)) return;
757
+ const prev = JSON.parse(__rspack_external_node_fs_1b05aee1.readFileSync(readyPath, 'utf-8'));
758
+ if ('string' != typeof prev.executorAttachedAt) return;
759
+ prev.runtime = 'detached';
760
+ prev.executorDetachedAt = nowISO();
749
761
  prev.ts = nowISO();
750
762
  writeJsonAtomic(readyPath, prev);
751
763
  } catch {}
@@ -754,9 +766,14 @@ function createPlaywrightMetadataWriter(options) {
754
766
  try {
755
767
  if (!__rspack_external_node_fs_1b05aee1.existsSync(readyPath)) return;
756
768
  const prev = JSON.parse(__rspack_external_node_fs_1b05aee1.readFileSync(readyPath, 'utf-8'));
757
- if ('string' == typeof prev.executorAttachedAt) return;
758
- prev.executorAttachedAt = nowISO();
759
769
  prev.runtime = 'attached';
770
+ delete prev.executorDetachedAt;
771
+ if ('string' == typeof prev.executorAttachedAt) {
772
+ prev.ts = nowISO();
773
+ writeJsonAtomic(readyPath, prev);
774
+ return;
775
+ }
776
+ prev.executorAttachedAt = nowISO();
760
777
  if ('string' == typeof prev.extensionLoadRefusedAt) {
761
778
  delete prev.extensionLoadRefusedAt;
762
779
  delete prev.extensionLoadRefusedReason;
@@ -1854,5 +1871,8 @@ async function extensionPreview(pathOrRemoteUrl, previewOptions, browserLauncher
1854
1871
  if (!browserLauncher) throw new Error("extensionPreview requires a browserLauncher callback. The browser launch code has moved to programs/extension/browsers/.");
1855
1872
  await browserLauncher(resolvedOpts);
1856
1873
  metadata.writeReady();
1874
+ process.once('exit', ()=>{
1875
+ metadata.writeShutdown(`the ${metadataCommand} session ended`);
1876
+ });
1857
1877
  }
1858
1878
  export { BUILD_COMMAND_DEFAULTS, DEV_COMMAND_DEFAULTS, PlaywrightPlugin, START_BUILD_DEFAULTS, assertNoManagedDependencyConflicts, autoExitForceKill, autoExitModeEnabled, autoExitTriggered, browserRunnerDisabled, bundlerFatalError, bundlerRecompiling, computeExtensionsToLoad, createPlaywrightMetadataWriter, devServerRestarting, devServerStartTimeout, extensionJsRunnerError, extensionPreview, getPreloadedEnvKeys, getSessionRunId, getSpecialFoldersDataForCompiler, getSpecialFoldersDataForProjectRoot, loadBrowserConfig, loadCommandConfig, loadCustomConfig, loadProjectConfigDefaults, mergeOptionLayers, messages_ready, noEntrypointsDetected, package_namespaceObject, portInUse, publicFolderShadowed, publicMustBeAtProjectRoot, resolveCompanionExtensionDirs, resolveCompanionExtensionsConfig, runnerCleanupError, runnerUncaughtException, runnerUnhandledRejection, sanitize, serverRestartRequiredFromSpecialFolderMessageOnly, shouldWarnPortConflict, spacerLine, specialFolderChangeDetected, specialFoldersSetupSummary, stampReadyDistExtensionId, stampReadyKnownExtensionId, withDarkMode };