extension 4.0.20 → 4.0.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.
package/dist/49.cjs CHANGED
@@ -74,6 +74,10 @@ exports.modules = {
74
74
  } : {
75
75
  status: 'unknown'
76
76
  };
77
+ if (-32601 === result.code) return {
78
+ status: 'unknown',
79
+ unsupported: true
80
+ };
77
81
  if (PROTOCOL_ERROR_CODES.has(result.code) || !result.message) return {
78
82
  status: 'unknown'
79
83
  };
@@ -1098,6 +1102,15 @@ exports.modules = {
1098
1102
  const loadOutcome = await cdpExtensionController.verifyGuestLoaded?.() ?? {
1099
1103
  status: 'unknown'
1100
1104
  };
1105
+ if ('unknown' === loadOutcome.status && loadOutcome.unsupported) {
1106
+ const unconfirmedPath = extensionOutputPath || selectedExtensionPaths[0] || '';
1107
+ console.warn(messages.SH(unconfirmedPath));
1108
+ plugin.logSink?.({
1109
+ level: 'warn',
1110
+ text: `extension_load_unconfirmed: ${unconfirmedPath}`,
1111
+ source: 'browser'
1112
+ });
1113
+ }
1101
1114
  if ('refused' === loadOutcome.status) {
1102
1115
  const refusedPath = extensionOutputPath || selectedExtensionPaths[0] || '';
1103
1116
  console.error(messages.M6(refusedPath, loadOutcome.reason));
package/dist/browsers.cjs CHANGED
@@ -158,7 +158,7 @@ var __webpack_modules__ = {
158
158
  async function printProdBannerOnce(opts) {
159
159
  const k = keyFor(opts.browser, opts.outPath);
160
160
  if (printedKeys.has(k) || (0, _helpers_messaging__rspack_import_3.VR)(baseKeyFor(opts.browser, opts.outPath))) return true;
161
- const browserLabel = opts.browserVersionLine && opts.browserVersionLine.trim().length > 0 ? opts.browserVersionLine.trim() : String(opts.browser || 'unknown');
161
+ const browserLabel = (0, _helpers_messaging__rspack_import_3.A6)(String(opts.browser || 'unknown'), _messages__rspack_import_5.GK(String(opts.browser || ''), opts.browserVersionLine));
162
162
  try {
163
163
  const manifestPath = node_path__rspack_import_2.join(opts.outPath, 'manifest.json');
164
164
  const manifest = JSON.parse(node_fs__rspack_import_1.readFileSync(manifestPath, 'utf-8'));
@@ -433,6 +433,28 @@ var __webpack_modules__ = {
433
433
  function capitalizedBrowserName(browser) {
434
434
  return `${browser.charAt(0).toUpperCase() + browser.slice(1)}`;
435
435
  }
436
+ function resolveBrowserVersionLine(browser, pinnedLine) {
437
+ const pinned = String(pinnedLine || '').trim();
438
+ if (pinned) return pinned;
439
+ try {
440
+ if ('chromium' === browser || 'chromium-based' === browser) {
441
+ const p = chromium_location__rspack_import_5_default()();
442
+ if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) return (0, chromium_location__rspack_import_5.getChromiumVersion)(p) || 'Chromium';
443
+ } else if ('chrome' === browser) {
444
+ const p = (0, chrome_location2__rspack_import_4.locateChromeOrExplain)({
445
+ allowFallback: true
446
+ });
447
+ if (p && node_fs__rspack_import_0.existsSync(p)) return (0, chrome_location2__rspack_import_4.getChromeVersion)(p) || 'Chrome';
448
+ } else if ('edge' === browser) {
449
+ const p = edge_location__rspack_import_6_default()();
450
+ if (p && node_fs__rspack_import_0.existsSync(p)) return (0, edge_location__rspack_import_6.getEdgeVersion)(p) || 'Microsoft Edge';
451
+ } else if ('firefox' === browser) {
452
+ const p = firefox_location2__rspack_import_7_default()(true);
453
+ if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) return (0, firefox_location2__rspack_import_7.getFirefoxVersion)(p) || 'Firefox';
454
+ }
455
+ } catch {}
456
+ return '';
457
+ }
436
458
  function creatingUserProfile(profilePath) {
437
459
  return `${getLoggingPrefix('debug')} browser profile=fresh path=${profilePath}`;
438
460
  }
@@ -488,6 +510,9 @@ var __webpack_modules__ = {
488
510
  function chromiumExtensionLoadRefused(extensionPath, reason) {
489
511
  return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red('The browser refused to load this extension, so it is NOT running.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No service worker, content script, or page from this extension will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser does not pick it up, restart the dev session.";
490
512
  }
513
+ function chromiumExtensionLoadUnconfirmed(extensionPath) {
514
+ return `${getLoggingPrefix('warn')} Extension.js could not confirm that the browser loaded this extension.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThis browser rejected the debugging call that loads and verifies it, so the extension may be missing.\nChrome ignores the --load-extension switch unless the DisableLoadExtensionCommandLineSwitch policy is disabled.\nOpen chrome://extensions to check whether the extension is there, and report this if it is not.`;
515
+ }
491
516
  function geckoAddonLoadRefused(addonPath, reason) {
492
517
  return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red('The browser refused to load this add-on, so it is NOT running.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(addonPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No background script, content script, or page from this add-on will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser does not pick it up, restart the dev session.";
493
518
  }
@@ -762,26 +787,7 @@ var __webpack_modules__ = {
762
787
  return 'unknown';
763
788
  }
764
789
  })();
765
- let effectiveBrowserLine = browserVersionLine && browserVersionLine.trim().length > 0 ? browserVersionLine.trim() : '';
766
- if (!effectiveBrowserLine) try {
767
- if ('chromium' === browser || 'chromium-based' === browser) {
768
- const p = chromium_location__rspack_import_5_default()();
769
- if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, chromium_location__rspack_import_5.getChromiumVersion)(p) || 'Chromium';
770
- } else if ('chrome' === browser) {
771
- const p = (0, chrome_location2__rspack_import_4.locateChromeOrExplain)({
772
- allowFallback: true
773
- });
774
- if (p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, chrome_location2__rspack_import_4.getChromeVersion)(p) || 'Chrome';
775
- } else if ('edge' === browser) {
776
- const p = edge_location__rspack_import_6_default()();
777
- if (p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, edge_location__rspack_import_6.getEdgeVersion)(p) || 'Microsoft Edge';
778
- } else if ('firefox' === browser) {
779
- const p = firefox_location2__rspack_import_7_default()(true);
780
- if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, firefox_location2__rspack_import_7.getFirefoxVersion)(p) || 'Firefox';
781
- }
782
- } catch {}
783
- let browserLabel = effectiveBrowserLine && effectiveBrowserLine.trim().length > 0 ? effectiveBrowserLine.trim() : capitalize(String(browser || 'unknown'));
784
- if (browserLabel && !/[a-zA-Z]/.test(browserLabel)) browserLabel = `${capitalize(String(browser || 'unknown'))} ${browserLabel}`;
790
+ const browserLabel = (0, _helpers_messaging__rspack_import_9.A6)(String(browser || 'unknown'), resolveBrowserVersionLine(browser, browserVersionLine));
785
791
  const cleanId = String(id || '').trim();
786
792
  const includeExtensionId = opts?.includeExtensionId !== false;
787
793
  const updateNotice = updateSuffix ? ` ${updateSuffix}` : '';
@@ -879,6 +885,7 @@ var __webpack_modules__ = {
879
885
  Fm: ()=>connectionClosedError,
880
886
  G3: ()=>safariRequiresMacOS,
881
887
  GB: ()=>waitingForBrowserDebugger,
888
+ GK: ()=>resolveBrowserVersionLine,
882
889
  Gq: ()=>locatingBrowser,
883
890
  H1: ()=>safariRegenerationDiscards,
884
891
  HH: ()=>messageWithoutSenderError,
@@ -897,6 +904,7 @@ var __webpack_modules__ = {
897
904
  Nk: ()=>chromiumDryRunNotLaunching,
898
905
  Q0: ()=>chromiumDryRunBinary,
899
906
  Rl: ()=>safariBuilt,
907
+ SH: ()=>chromiumExtensionLoadUnconfirmed,
900
908
  Sp: ()=>invalidChromiumBinaryPath,
901
909
  TF: ()=>enhancedProcessManagementCleanupError,
902
910
  Te: ()=>cdpClientTargetWebSocketUrlStored,
@@ -5709,6 +5717,14 @@ var __webpack_modules__ = {
5709
5717
  ...body
5710
5718
  ].join('\n');
5711
5719
  }
5720
+ function browserRowValue(browser, versionLine) {
5721
+ const name = String(browser || '').trim() || 'unknown';
5722
+ const display = name.charAt(0).toUpperCase() + name.slice(1);
5723
+ const line = String(versionLine || '').trim();
5724
+ if (!line) return display;
5725
+ if (!/[a-zA-Z]/.test(line)) return `${display} ${line}`;
5726
+ return line.charAt(0).toUpperCase() + line.slice(1);
5727
+ }
5712
5728
  const CARD_KEYS_ENV = 'EXTENSION_CLI_CARD_KEYS';
5713
5729
  const CARD_KEYS_SEPARATOR = '\u001f';
5714
5730
  function isCardKeyClaimed(key) {
@@ -5736,6 +5752,7 @@ var __webpack_modules__ = {
5736
5752
  return 'Extension';
5737
5753
  }
5738
5754
  __webpack_require__.d(__webpack_exports__, {
5755
+ A6: ()=>browserRowValue,
5739
5756
  Nr: ()=>card,
5740
5757
  Pl: ()=>prefix,
5741
5758
  T_: ()=>artifactNoun,
package/dist/cli.cjs CHANGED
@@ -159,7 +159,7 @@ var __webpack_modules__ = {
159
159
  async function printProdBannerOnce(opts) {
160
160
  const k = keyFor(opts.browser, opts.outPath);
161
161
  if (printedKeys.has(k) || (0, _helpers_messaging__rspack_import_3.VR)(baseKeyFor(opts.browser, opts.outPath))) return true;
162
- const browserLabel = opts.browserVersionLine && opts.browserVersionLine.trim().length > 0 ? opts.browserVersionLine.trim() : String(opts.browser || 'unknown');
162
+ const browserLabel = (0, _helpers_messaging__rspack_import_3.A6)(String(opts.browser || 'unknown'), _messages__rspack_import_5.GK(String(opts.browser || ''), opts.browserVersionLine));
163
163
  try {
164
164
  const manifestPath = node_path__rspack_import_2.join(opts.outPath, 'manifest.json');
165
165
  const manifest = JSON.parse(node_fs__rspack_import_1.readFileSync(manifestPath, 'utf-8'));
@@ -434,6 +434,28 @@ var __webpack_modules__ = {
434
434
  function capitalizedBrowserName(browser) {
435
435
  return `${browser.charAt(0).toUpperCase() + browser.slice(1)}`;
436
436
  }
437
+ function resolveBrowserVersionLine(browser, pinnedLine) {
438
+ const pinned = String(pinnedLine || '').trim();
439
+ if (pinned) return pinned;
440
+ try {
441
+ if ('chromium' === browser || 'chromium-based' === browser) {
442
+ const p = chromium_location__rspack_import_5_default()();
443
+ if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) return (0, chromium_location__rspack_import_5.getChromiumVersion)(p) || 'Chromium';
444
+ } else if ('chrome' === browser) {
445
+ const p = (0, chrome_location2__rspack_import_4.locateChromeOrExplain)({
446
+ allowFallback: true
447
+ });
448
+ if (p && node_fs__rspack_import_0.existsSync(p)) return (0, chrome_location2__rspack_import_4.getChromeVersion)(p) || 'Chrome';
449
+ } else if ('edge' === browser) {
450
+ const p = edge_location__rspack_import_6_default()();
451
+ if (p && node_fs__rspack_import_0.existsSync(p)) return (0, edge_location__rspack_import_6.getEdgeVersion)(p) || 'Microsoft Edge';
452
+ } else if ('firefox' === browser) {
453
+ const p = firefox_location2__rspack_import_7_default()(true);
454
+ if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) return (0, firefox_location2__rspack_import_7.getFirefoxVersion)(p) || 'Firefox';
455
+ }
456
+ } catch {}
457
+ return '';
458
+ }
437
459
  function creatingUserProfile(profilePath) {
438
460
  return `${getLoggingPrefix('debug')} browser profile=fresh path=${profilePath}`;
439
461
  }
@@ -489,6 +511,9 @@ var __webpack_modules__ = {
489
511
  function chromiumExtensionLoadRefused(extensionPath, reason) {
490
512
  return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red('The browser refused to load this extension, so it is NOT running.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No service worker, content script, or page from this extension will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser does not pick it up, restart the dev session.";
491
513
  }
514
+ function chromiumExtensionLoadUnconfirmed(extensionPath) {
515
+ return `${getLoggingPrefix('warn')} Extension.js could not confirm that the browser loaded this extension.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThis browser rejected the debugging call that loads and verifies it, so the extension may be missing.\nChrome ignores the --load-extension switch unless the DisableLoadExtensionCommandLineSwitch policy is disabled.\nOpen chrome://extensions to check whether the extension is there, and report this if it is not.`;
516
+ }
492
517
  function geckoAddonLoadRefused(addonPath, reason) {
493
518
  return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red('The browser refused to load this add-on, so it is NOT running.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(addonPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No background script, content script, or page from this add-on will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser does not pick it up, restart the dev session.";
494
519
  }
@@ -763,26 +788,7 @@ var __webpack_modules__ = {
763
788
  return 'unknown';
764
789
  }
765
790
  })();
766
- let effectiveBrowserLine = browserVersionLine && browserVersionLine.trim().length > 0 ? browserVersionLine.trim() : '';
767
- if (!effectiveBrowserLine) try {
768
- if ('chromium' === browser || 'chromium-based' === browser) {
769
- const p = chromium_location__rspack_import_5_default()();
770
- if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, chromium_location__rspack_import_5.getChromiumVersion)(p) || 'Chromium';
771
- } else if ('chrome' === browser) {
772
- const p = (0, chrome_location2__rspack_import_4.locateChromeOrExplain)({
773
- allowFallback: true
774
- });
775
- if (p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, chrome_location2__rspack_import_4.getChromeVersion)(p) || 'Chrome';
776
- } else if ('edge' === browser) {
777
- const p = edge_location__rspack_import_6_default()();
778
- if (p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, edge_location__rspack_import_6.getEdgeVersion)(p) || 'Microsoft Edge';
779
- } else if ('firefox' === browser) {
780
- const p = firefox_location2__rspack_import_7_default()(true);
781
- if (p && 'string' == typeof p && node_fs__rspack_import_0.existsSync(p)) effectiveBrowserLine = (0, firefox_location2__rspack_import_7.getFirefoxVersion)(p) || 'Firefox';
782
- }
783
- } catch {}
784
- let browserLabel = effectiveBrowserLine && effectiveBrowserLine.trim().length > 0 ? effectiveBrowserLine.trim() : capitalize(String(browser || 'unknown'));
785
- if (browserLabel && !/[a-zA-Z]/.test(browserLabel)) browserLabel = `${capitalize(String(browser || 'unknown'))} ${browserLabel}`;
791
+ const browserLabel = (0, _helpers_messaging__rspack_import_9.A6)(String(browser || 'unknown'), resolveBrowserVersionLine(browser, browserVersionLine));
786
792
  const cleanId = String(id || '').trim();
787
793
  const includeExtensionId = opts?.includeExtensionId !== false;
788
794
  const updateNotice = updateSuffix ? ` ${updateSuffix}` : '';
@@ -880,6 +886,7 @@ var __webpack_modules__ = {
880
886
  Fm: ()=>connectionClosedError,
881
887
  G3: ()=>safariRequiresMacOS,
882
888
  GB: ()=>waitingForBrowserDebugger,
889
+ GK: ()=>resolveBrowserVersionLine,
883
890
  Gq: ()=>locatingBrowser,
884
891
  H1: ()=>safariRegenerationDiscards,
885
892
  HH: ()=>messageWithoutSenderError,
@@ -898,6 +905,7 @@ var __webpack_modules__ = {
898
905
  Nk: ()=>chromiumDryRunNotLaunching,
899
906
  Q0: ()=>chromiumDryRunBinary,
900
907
  Rl: ()=>safariBuilt,
908
+ SH: ()=>chromiumExtensionLoadUnconfirmed,
901
909
  Sp: ()=>invalidChromiumBinaryPath,
902
910
  TF: ()=>enhancedProcessManagementCleanupError,
903
911
  Te: ()=>cdpClientTargetWebSocketUrlStored,
@@ -5721,6 +5729,14 @@ var __webpack_modules__ = {
5721
5729
  ...body
5722
5730
  ].join('\n');
5723
5731
  }
5732
+ function browserRowValue(browser, versionLine) {
5733
+ const name = String(browser || '').trim() || 'unknown';
5734
+ const display = name.charAt(0).toUpperCase() + name.slice(1);
5735
+ const line = String(versionLine || '').trim();
5736
+ if (!line) return display;
5737
+ if (!/[a-zA-Z]/.test(line)) return `${display} ${line}`;
5738
+ return line.charAt(0).toUpperCase() + line.slice(1);
5739
+ }
5724
5740
  const CARD_KEYS_ENV = 'EXTENSION_CLI_CARD_KEYS';
5725
5741
  const CARD_KEYS_SEPARATOR = '\u001f';
5726
5742
  function isCardKeyClaimed(key) {
@@ -5912,6 +5928,7 @@ var __webpack_modules__ = {
5912
5928
  }
5913
5929
  };
5914
5930
  __webpack_require__.d(__webpack_exports__, {
5931
+ A6: ()=>browserRowValue,
5915
5932
  Nr: ()=>card,
5916
5933
  Pl: ()=>prefix,
5917
5934
  T_: ()=>artifactNoun,
@@ -1,6 +1,7 @@
1
1
  import type { BrowserType } from '../browsers-types';
2
2
  type Browser = BrowserType;
3
3
  export declare function capitalizedBrowserName(browser: Browser): string;
4
+ export declare function resolveBrowserVersionLine(browser: string, pinnedLine?: string): string;
4
5
  export declare function creatingUserProfile(profilePath: string): string;
5
6
  export declare function browserInstanceExited(browser: Browser): string;
6
7
  export declare function cdpClientAttachedToTarget(sessionId: string, targetType: string): string;
@@ -17,6 +18,7 @@ export declare function unsupportedManifestVersionOnChromium(extensionPath: stri
17
18
  export declare function chromiumInvalidMatchPatterns(extensionPath: string, patterns: string[]): string;
18
19
  export declare function chromiumManifestLoadBlockers(extensionPath: string, blockers: string[]): string;
19
20
  export declare function chromiumExtensionLoadRefused(extensionPath: string, reason: string): string;
21
+ export declare function chromiumExtensionLoadUnconfirmed(extensionPath: string): string;
20
22
  export declare function geckoAddonLoadRefused(addonPath: string, reason: string): string;
21
23
  export declare function devChannelSnapshotInUse(binaryPath: string): string;
22
24
  export declare function browserLaunchError(browser: Browser, error: unknown): string;
@@ -9,6 +9,7 @@ export type LoadUnpackedOutcome = {
9
9
  reason: string;
10
10
  } | {
11
11
  status: 'unknown';
12
+ unsupported?: boolean;
12
13
  };
13
14
  export declare function loadUnpacked(cdp: CDPClient, outPath: string): Promise<LoadUnpackedOutcome>;
14
15
  export declare function loadUnpackedIfNeeded(cdp: CDPClient, outPath: string): Promise<string | null>;
@@ -20,6 +20,7 @@ export interface CardInput {
20
20
  rows?: CardRow[];
21
21
  }
22
22
  export declare function card(input?: CardInput): string;
23
+ export declare function browserRowValue(browser: string, versionLine?: string): string;
23
24
  export declare function isCardKeyClaimed(key: string): boolean;
24
25
  export declare function claimCardKey(key: string): boolean;
25
26
  export declare function artifactNoun(browser: string): 'Add-on' | 'Extension';
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "extension": "./bin/extension.cjs"
39
39
  },
40
40
  "name": "extension",
41
- "version": "4.0.20",
41
+ "version": "4.0.21",
42
42
  "description": "The cross-browser extension framework. Build Chrome, Edge, Firefox, and Safari extensions with no build configuration.",
43
43
  "homepage": "https://extension.js.org/",
44
44
  "bugs": {
@@ -106,9 +106,9 @@
106
106
  "vivaldi-location2": "2.1.0",
107
107
  "waterfox-location": "2.1.0",
108
108
  "yandex-location": "2.1.0",
109
- "extension-create": "4.0.20",
110
- "extension-develop": "4.0.20",
111
- "extension-install": "4.0.20",
109
+ "extension-create": "4.0.21",
110
+ "extension-develop": "4.0.21",
111
+ "extension-install": "4.0.21",
112
112
  "commander": "^15.0.0",
113
113
  "pintor": "0.3.0",
114
114
  "semver": "^7.7.3",