extension 4.0.32 → 4.0.34

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/browsers.cjs CHANGED
@@ -168,7 +168,9 @@ var __webpack_modules__ = {
168
168
  async function printProdBannerOnce(opts) {
169
169
  const k = keyFor(opts.browser, opts.outPath);
170
170
  if (printedKeys.has(k) || (0, _helpers_messaging__rspack_import_3.VR)(baseKeyFor(opts.browser, opts.outPath))) return true;
171
- const browserLabel = (0, _helpers_messaging__rspack_import_3.A6)(String(opts.browser || 'unknown'), _messages__rspack_import_5.GK(String(opts.browser || ''), opts.browserVersionLine));
171
+ const browserLabel = (0, _helpers_messaging__rspack_import_3.A6)(String(opts.browser || 'unknown'), _messages__rspack_import_5.GK(String(opts.browser || ''), opts.browserVersionLine, {
172
+ pinned: 'pinned' === opts.binaryProvenance
173
+ }));
172
174
  try {
173
175
  const manifestPath = node_path__rspack_import_2.join(opts.outPath, 'manifest.json');
174
176
  const manifest = JSON.parse(node_fs__rspack_import_1.readFileSync(manifestPath, 'utf-8'));
@@ -453,9 +455,10 @@ var __webpack_modules__ = {
453
455
  function capitalizedBrowserName(browser) {
454
456
  return `${browser.charAt(0).toUpperCase() + browser.slice(1)}`;
455
457
  }
456
- function resolveBrowserVersionLine(browser, pinnedLine) {
458
+ function resolveBrowserVersionLine(browser, pinnedLine, opts) {
457
459
  const pinned = String(pinnedLine || '').trim();
458
460
  if (pinned) return pinned;
461
+ if (opts?.pinned) return '';
459
462
  try {
460
463
  if ('chromium' === browser || 'chromium-based' === browser) {
461
464
  const p = chromium_location__rspack_import_5_default()();
@@ -816,7 +819,9 @@ var __webpack_modules__ = {
816
819
  return 'unknown';
817
820
  }
818
821
  })();
819
- const baseBrowserLabel = (0, _helpers_messaging__rspack_import_9.A6)(String(browser || 'unknown'), resolveBrowserVersionLine(browser, browserVersionLine));
822
+ const baseBrowserLabel = (0, _helpers_messaging__rspack_import_9.A6)(String(browser || 'unknown'), resolveBrowserVersionLine(browser, browserVersionLine, {
823
+ pinned: opts?.binaryProvenance === 'pinned'
824
+ }));
820
825
  const provenanceNote = binaryProvenanceNote(opts?.binaryProvenance);
821
826
  const browserLabel = provenanceNote ? `${baseBrowserLabel} ${provenanceNote}` : baseBrowserLabel;
822
827
  const binaryRowValue = provenanceNote ? collapseHomeDirInCardValue(String(opts?.binaryPath || '').trim()) : '';
@@ -1082,24 +1087,57 @@ var __webpack_modules__ = {
1082
1087
  if (node_fs__rspack_import_0.existsSync(chromeNested)) scanRoots.push(chromeNested);
1083
1088
  }
1084
1089
  const versionDirPattern = /^(mac|mac_arm|win32|win64|linux)/i;
1085
- const candidateFiles = [];
1090
+ const versionDirs = [];
1086
1091
  for (const root of scanRoots)try {
1087
1092
  const entries = node_fs__rspack_import_0.readdirSync(root, {
1088
1093
  withFileTypes: true
1089
1094
  });
1090
- const versionDirs = entries.filter((entry)=>entry.isDirectory() && versionDirPattern.test(entry.name)).map((entry)=>node_path__rspack_import_1.join(root, entry.name));
1091
- for (const dir of versionDirs)candidateFiles.push(...buildCandidates(dir, browser));
1092
- } catch {}
1093
- for (const candidate of candidateFiles)try {
1094
- if (candidate && node_fs__rspack_import_0.existsSync(candidate)) return candidate;
1095
+ for (const entry of entries)if (entry.isDirectory() && versionDirPattern.test(entry.name)) versionDirs.push(node_path__rspack_import_1.join(root, entry.name));
1095
1096
  } catch {}
1097
+ versionDirs.sort(compareManagedBuildDirsNewestFirst);
1096
1098
  const names = executableNamesFor(browser);
1099
+ for (const dir of versionDirs){
1100
+ for (const candidate of buildCandidates(dir, browser))if (isUsableBinaryPath(candidate)) return candidate;
1101
+ const found = findExecutableUnder(dir, names, 6);
1102
+ if (found) return found;
1103
+ }
1097
1104
  for (const root of scanRoots){
1098
1105
  const found = findExecutableUnder(root, names, 6);
1099
1106
  if (found) return found;
1100
1107
  }
1101
1108
  return null;
1102
1109
  }
1110
+ const MANAGED_BUILD_DIR_PREFIX = /^(?:mac_arm|mac-arm|mac|win64|win32|linux64|linux)[-_]/i;
1111
+ function parseManagedBuildId(dirName) {
1112
+ const name = String(dirName || '');
1113
+ const buildId = name.replace(MANAGED_BUILD_DIR_PREFIX, '');
1114
+ return buildId.split(/[^\d]+/).filter(Boolean).map((part)=>Number(part)).filter((part)=>Number.isFinite(part));
1115
+ }
1116
+ function compareManagedBuildDirNames(a, b) {
1117
+ const partsA = parseManagedBuildId(a);
1118
+ const partsB = parseManagedBuildId(b);
1119
+ const length = Math.max(partsA.length, partsB.length);
1120
+ for(let i = 0; i < length; i++){
1121
+ const na = partsA[i] ?? 0;
1122
+ const nb = partsB[i] ?? 0;
1123
+ if (na !== nb) return na - nb;
1124
+ }
1125
+ return String(a).localeCompare(String(b));
1126
+ }
1127
+ function compareManagedBuildDirsNewestFirst(a, b) {
1128
+ const byBuild = compareManagedBuildDirNames(node_path__rspack_import_1.basename(b), node_path__rspack_import_1.basename(a));
1129
+ if (0 !== byBuild) return byBuild;
1130
+ let timeA = 0;
1131
+ let timeB = 0;
1132
+ try {
1133
+ timeA = node_fs__rspack_import_0.statSync(a).mtimeMs;
1134
+ } catch {}
1135
+ try {
1136
+ timeB = node_fs__rspack_import_0.statSync(b).mtimeMs;
1137
+ } catch {}
1138
+ if (timeA !== timeB) return timeB - timeA;
1139
+ return node_path__rspack_import_1.basename(b).localeCompare(node_path__rspack_import_1.basename(a));
1140
+ }
1103
1141
  function resolveChromiumFamilyFallback(compilation, requested = 'chromium') {
1104
1142
  const candidates = 'chrome' === requested ? [
1105
1143
  'chromium',
@@ -1133,6 +1171,13 @@ var __webpack_modules__ = {
1133
1171
  else out.push(node_path__rspack_import_1.join(dir, 'firefox'));
1134
1172
  return out;
1135
1173
  }
1174
+ function isUsableBinaryPath(candidate) {
1175
+ try {
1176
+ return Boolean(candidate) && node_fs__rspack_import_0.statSync(candidate).isFile();
1177
+ } catch {
1178
+ return false;
1179
+ }
1180
+ }
1136
1181
  function executableNamesFor(browser) {
1137
1182
  if ('chrome' === browser) return 'win32' === process.platform ? [
1138
1183
  'chrome.exe'
@@ -1151,6 +1196,7 @@ var __webpack_modules__ = {
1151
1196
  if ('edge' === browser) return 'win32' === process.platform ? [
1152
1197
  'msedge.exe'
1153
1198
  ] : [
1199
+ 'Microsoft Edge',
1154
1200
  'msedge',
1155
1201
  'microsoft-edge'
1156
1202
  ];
@@ -1543,6 +1589,9 @@ var __webpack_modules__ = {
1543
1589
  var node_net__rspack_import_1 = __webpack_require__("node:net");
1544
1590
  var node_os__rspack_import_2 = __webpack_require__("node:os");
1545
1591
  var node_path__rspack_import_3 = __webpack_require__("node:path");
1592
+ var chrome_location2__rspack_import_4 = __webpack_require__("chrome-location2");
1593
+ var chromium_location__rspack_import_5 = __webpack_require__("chromium-location");
1594
+ var edge_location__rspack_import_6 = __webpack_require__("edge-location");
1546
1595
  __webpack_require__("./browsers/browsers-lib/constants.ts");
1547
1596
  const MANAGED_EPHEMERAL_PROFILE_MARKER = '.extension-js-managed-profile';
1548
1597
  function shortInstanceId(instanceId) {
@@ -1561,8 +1610,12 @@ var __webpack_modules__ = {
1561
1610
  const finalPort = 'number' == typeof parsed && Number.isFinite(parsed) && parsed > 0 ? parsed : devServerPort;
1562
1611
  return 'number' == typeof finalPort && finalPort > 0 ? finalPort + 100 : defaultPort;
1563
1612
  }
1564
- function filterBrowserFlags(defaultFlags, excludeFlags = []) {
1565
- return defaultFlags.filter((flag)=>!excludeFlags.some((excludeFlag)=>flag === excludeFlag));
1613
+ function filterBrowserFlags(flags, excludeFlags = []) {
1614
+ return flags.filter((flag)=>!excludeFlags.some((excludeFlag)=>{
1615
+ if (!excludeFlag) return false;
1616
+ if (flag === excludeFlag) return true;
1617
+ return flag.startsWith(`${excludeFlag}=`) || flag.startsWith(`${excludeFlag},`);
1618
+ }));
1566
1619
  }
1567
1620
  function chooseChromiumBinaryPreferringStable(opts) {
1568
1621
  const managed = opts.managedSnapshotBinary;
@@ -1605,6 +1658,28 @@ var __webpack_modules__ = {
1605
1658
  const underManagedRoot = relative.length > 0 && !relative.startsWith('..') && !node_path__rspack_import_3.isAbsolute(relative);
1606
1659
  return underManagedRoot ? 'managed' : 'system';
1607
1660
  }
1661
+ function probeChromiumBinaryVersion(bin, browser) {
1662
+ const target = String(browser || '');
1663
+ const probes = [];
1664
+ if ('edge' === target) probes.push(()=>(0, edge_location__rspack_import_6.getEdgeVersion)(bin, {
1665
+ allowExec: true
1666
+ }));
1667
+ if ('chromium' === target || 'chromium-based' === target) probes.push(()=>(0, chromium_location__rspack_import_5.getChromiumVersion)(bin, {
1668
+ allowExec: true
1669
+ }));
1670
+ probes.push(()=>(0, chrome_location2__rspack_import_4.getChromeVersion)(bin, {
1671
+ allowExec: true
1672
+ }), ()=>(0, chromium_location__rspack_import_5.getChromiumVersion)(bin, {
1673
+ allowExec: true
1674
+ }), ()=>(0, edge_location__rspack_import_6.getEdgeVersion)(bin, {
1675
+ allowExec: true
1676
+ }));
1677
+ for (const probe of probes)try {
1678
+ const line = probe();
1679
+ if (line && String(line).trim()) return String(line).trim();
1680
+ } catch {}
1681
+ return '';
1682
+ }
1608
1683
  function parseEnvBrowserFlags(raw) {
1609
1684
  return String(raw || '').split(/\s+/).map((flag)=>flag.trim()).filter(Boolean);
1610
1685
  }
@@ -1787,7 +1862,8 @@ var __webpack_modules__ = {
1787
1862
  ci: ()=>isProfileLockedError,
1788
1863
  jl: ()=>deriveDebugPortWithInstance,
1789
1864
  ov: ()=>filterBrowserFlags,
1790
- sW: ()=>removeManagedEphemeralProfile
1865
+ sW: ()=>removeManagedEphemeralProfile,
1866
+ yO: ()=>probeChromiumBinaryVersion
1791
1867
  });
1792
1868
  },
1793
1869
  "./browsers/browsers-lib/wsl-support.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -2538,7 +2614,7 @@ var __webpack_modules__ = {
2538
2614
  '--remote-debugging-pipe'
2539
2615
  ] : [],
2540
2616
  ...filteredFlags,
2541
- ...configOptions.browserFlags || [],
2617
+ ...(0, shared_utils.ov)(configOptions.browserFlags || [], excludeFlags),
2542
2618
  ...(0, shared_utils.W0)(process.env.EXTENSION_BROWSER_FLAGS)
2543
2619
  ];
2544
2620
  if ((0, shared_utils.ZO)() && !baseFlags.some((flag)=>flag.startsWith('--headless'))) baseFlags.push('--headless=new');
@@ -2807,7 +2883,16 @@ var __webpack_modules__ = {
2807
2883
  });
2808
2884
  }
2809
2885
  async launchChromium(compilation, opts) {
2810
- if (this.options?.dryRun || process.env.VITEST || process.env.VITEST_WORKER_ID) return void logChromiumDryRun('chromium-mock-binary', []);
2886
+ if (this.options?.chromiumBinary) {
2887
+ const requested = String(this.options.chromiumBinary);
2888
+ const normalizedEarly = (0, wsl_support.f7)(requested);
2889
+ if (!normalizedEarly || !external_node_fs_.existsSync(normalizedEarly)) {
2890
+ (0, messaging.Gg)(messages.Sp(requested));
2891
+ if (process.env.VITEST || process.env.VITEST_WORKER_ID) throw new Error(`Invalid --chromium-binary path: ${requested}`);
2892
+ process.exit(1);
2893
+ }
2894
+ }
2895
+ if (this.options?.dryRun || process.env.VITEST || process.env.VITEST_WORKER_ID) return void logChromiumDryRun(this.options?.chromiumBinary ? (0, wsl_support.f7)(String(this.options.chromiumBinary)) : 'chromium-mock-binary', []);
2811
2896
  const browser = this.options?.browser;
2812
2897
  let browserBinaryLocation = null;
2813
2898
  let printedGuidance = false;
@@ -2867,8 +2952,18 @@ var __webpack_modules__ = {
2867
2952
  this.printEnhancedPuppeteerInstallHint(compilation, raw, browserName);
2868
2953
  printedGuidance = true;
2869
2954
  };
2870
- browserBinaryLocation = resolveManagedBinary();
2871
- if ('chromium' === browser && browserBinaryLocation) {
2955
+ const requestedPin = this.options?.chromiumBinary != null ? String(this.options.chromiumBinary) : '';
2956
+ if (requestedPin) {
2957
+ const normalized = normalizePath(requestedPin);
2958
+ if (!normalized || !isUsableBinary(normalized)) {
2959
+ (0, messaging.Gg)(messages.Sp(requestedPin));
2960
+ if (process.env.VITEST || process.env.VITEST_WORKER_ID) throw new Error(`Invalid --chromium-binary path: ${requestedPin}`);
2961
+ process.exit(1);
2962
+ }
2963
+ browserBinaryLocation = normalized;
2964
+ binaryPinnedByFlag = true;
2965
+ } else browserBinaryLocation = resolveManagedBinary();
2966
+ if ('chromium' === browser && browserBinaryLocation && !binaryPinnedByFlag) {
2872
2967
  let systemBinary = null;
2873
2968
  try {
2874
2969
  const env = {
@@ -2894,7 +2989,7 @@ var __webpack_modules__ = {
2894
2989
  }
2895
2990
  }
2896
2991
  let skipDetection = Boolean(browserBinaryLocation);
2897
- if (!browserBinaryLocation && (0, wsl_support.EV)()) {
2992
+ if (!binaryPinnedByFlag && !browserBinaryLocation && (0, wsl_support.EV)()) {
2898
2993
  const linuxFallback = resolveWslLinuxBinary(browser);
2899
2994
  if (linuxFallback) {
2900
2995
  browserBinaryLocation = linuxFallback;
@@ -2907,16 +3002,8 @@ var __webpack_modules__ = {
2907
3002
  }
2908
3003
  }
2909
3004
  }
2910
- browserBinaryLocation = preferRealChromeBinary(browserBinaryLocation);
2911
- const getBrowserVersionLine = (bin)=>{
2912
- try {
2913
- if ('edge' === browser) return (0, external_edge_location_.getEdgeVersion)(bin) || '';
2914
- if ('chromium' === browser || 'chromium-based' === browser) return (0, external_chromium_location_.getChromiumVersion)(bin) || '';
2915
- return (0, external_chrome_location2_.getChromeVersion)(bin) || '';
2916
- } catch {
2917
- return '';
2918
- }
2919
- };
3005
+ if (!binaryPinnedByFlag) browserBinaryLocation = preferRealChromeBinary(browserBinaryLocation);
3006
+ const getBrowserVersionLine = (bin)=>shared_utils.yO(bin, String(browser || ''));
2920
3007
  const looksOfficialChromeBinaryPath = (bin)=>{
2921
3008
  const p = String(bin || '');
2922
3009
  if (!p) return false;
@@ -2971,7 +3058,7 @@ var __webpack_modules__ = {
2971
3058
  return null;
2972
3059
  }
2973
3060
  };
2974
- switch(browser){
3061
+ if (!binaryPinnedByFlag) switch(browser){
2975
3062
  case 'chrome':
2976
3063
  if (isAuthorMode) (0, messaging._w)(messages.Gq(browser));
2977
3064
  if (!skipDetection) browserBinaryLocation = resolveChromeLikeBinary();
@@ -2993,15 +3080,6 @@ var __webpack_modules__ = {
2993
3080
  break;
2994
3081
  case 'chromium':
2995
3082
  if (isAuthorMode) (0, messaging._w)(messages.Gq(browser));
2996
- if (this.options?.chromiumBinary) {
2997
- const normalized = normalizePath(String(this.options.chromiumBinary));
2998
- if (!normalized || !external_node_fs_.existsSync(normalized)) {
2999
- (0, messaging.Gg)(messages.Sp(String(this.options.chromiumBinary)));
3000
- process.exit(1);
3001
- }
3002
- browserBinaryLocation = normalized;
3003
- binaryPinnedByFlag = true;
3004
- }
3005
3083
  if (!browserBinaryLocation && !skipDetection) try {
3006
3084
  const env = managedEnvFor('chromium');
3007
3085
  const p = external_chromium_location_default()({
@@ -3055,36 +3133,20 @@ var __webpack_modules__ = {
3055
3133
  }
3056
3134
  break;
3057
3135
  case 'chromium-based':
3058
- browserBinaryLocation = this.options?.chromiumBinary || null;
3059
- if (this.options?.chromiumBinary) {
3060
- const normalized = normalizePath(String(this.options.chromiumBinary));
3061
- if (!normalized || !external_node_fs_.existsSync(normalized)) {
3062
- (0, messaging.Gg)(messages.Sp(String(this.options.chromiumBinary)));
3063
- process.exit(1);
3064
- }
3065
- browserBinaryLocation = normalized;
3066
- binaryPinnedByFlag = true;
3067
- } else {
3068
- (0, messaging.Gg)(messages.ne());
3069
- process.exit(1);
3070
- }
3071
- if (!browserBinaryLocation && !skipDetection) try {
3072
- const env = managedEnvFor('chromium');
3073
- const p = external_chromium_location_default()({
3074
- env
3075
- });
3076
- const normalized = normalizePath(p || null);
3077
- if (normalized && 'string' == typeof normalized) {
3078
- if (external_node_fs_.existsSync(normalized)) browserBinaryLocation = normalized;
3079
- }
3080
- } catch {}
3081
- if (!browserBinaryLocation) browserBinaryLocation = resolveWslFallback();
3136
+ (0, messaging.Gg)(messages.ne());
3137
+ if (process.env.VITEST || process.env.VITEST_WORKER_ID) throw new Error('chromium-based requires --chromium-binary');
3138
+ process.exit(1);
3082
3139
  break;
3083
3140
  default:
3084
3141
  browserBinaryLocation = resolveChromeLikeBinary();
3085
3142
  break;
3086
3143
  }
3087
3144
  if (!browserBinaryLocation || !external_node_fs_.existsSync(browserBinaryLocation)) {
3145
+ if (binaryPinnedByFlag) {
3146
+ (0, messaging.Gg)(messages.Sp(requestedPin));
3147
+ if (process.env.VITEST || process.env.VITEST_WORKER_ID) throw new Error(`Invalid --chromium-binary path: ${requestedPin}`);
3148
+ process.exit(1);
3149
+ }
3088
3150
  browserBinaryLocation = browserBinaryLocation || resolveManagedBinary();
3089
3151
  if (!browserBinaryLocation) browserBinaryLocation = resolveWslFallback();
3090
3152
  if ((!browserBinaryLocation || !external_node_fs_.existsSync(browserBinaryLocation)) && ('chrome' === browser || 'chromium' === browser)) {
@@ -3652,7 +3714,7 @@ var __webpack_modules__ = {
3652
3714
  const { browser, profile, browserFlags = [] } = configOptions;
3653
3715
  const binaryArgs = [];
3654
3716
  const excludeFlags = configOptions.excludeBrowserFlags || [];
3655
- const filteredFlags = (browserFlags || []).filter((flag)=>excludeFlags.every((ex)=>!String(flag).startsWith(ex)));
3717
+ const filteredFlags = (0, shared_utils.ov)((browserFlags || []).map(String), excludeFlags);
3656
3718
  if (filteredFlags.length > 0) binaryArgs.push(...filteredFlags);
3657
3719
  binaryArgs.push(...(0, shared_utils.W0)(process.env.EXTENSION_BROWSER_FLAGS));
3658
3720
  if (configOptions.startingUrl && !configOptions.noOpen) binaryArgs.push('--url', String(configOptions.startingUrl));
@@ -5174,18 +5236,16 @@ var __webpack_modules__ = {
5174
5236
  },
5175
5237
  "./browsers/run-only.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
5176
5238
  var node_fs__rspack_import_0 = __webpack_require__("node:fs");
5177
- var chrome_location2__rspack_import_1 = __webpack_require__("chrome-location2");
5178
- var chromium_location__rspack_import_2 = __webpack_require__("chromium-location");
5179
- var edge_location__rspack_import_3 = __webpack_require__("edge-location");
5180
- var firefox_location2__rspack_import_4 = __webpack_require__("firefox-location2");
5181
- var _browsers_lib_banner__rspack_import_5 = __webpack_require__("./browsers/browsers-lib/banner.ts");
5182
- var _browsers_lib_browser_family__rspack_import_6 = __webpack_require__("./browsers/browsers-lib/browser-family.ts");
5183
- var _browsers_lib_output_binaries_resolver__rspack_import_7 = __webpack_require__("./browsers/browsers-lib/output-binaries-resolver.ts");
5184
- var _browsers_lib_runtime_options__rspack_import_12 = __webpack_require__("./browsers/browsers-lib/runtime-options.ts");
5185
- var _run_chromium_chromium_context__rspack_import_10 = __webpack_require__("./browsers/run-chromium/chromium-context/index.ts");
5186
- var _run_chromium_chromium_launch__rspack_import_8 = __webpack_require__("./browsers/run-chromium/chromium-launch/index.ts");
5187
- var _run_firefox_firefox_context__rspack_import_11 = __webpack_require__("./browsers/run-firefox/firefox-context/index.ts");
5188
- var _run_firefox_firefox_launch__rspack_import_9 = __webpack_require__("./browsers/run-firefox/firefox-launch/index.ts");
5239
+ var firefox_location2__rspack_import_1 = __webpack_require__("firefox-location2");
5240
+ var _browsers_lib_banner__rspack_import_2 = __webpack_require__("./browsers/browsers-lib/banner.ts");
5241
+ var _browsers_lib_browser_family__rspack_import_3 = __webpack_require__("./browsers/browsers-lib/browser-family.ts");
5242
+ var _browsers_lib_output_binaries_resolver__rspack_import_4 = __webpack_require__("./browsers/browsers-lib/output-binaries-resolver.ts");
5243
+ var _browsers_lib_runtime_options__rspack_import_10 = __webpack_require__("./browsers/browsers-lib/runtime-options.ts");
5244
+ var _browsers_lib_shared_utils__rspack_import_5 = __webpack_require__("./browsers/browsers-lib/shared-utils.ts");
5245
+ var _run_chromium_chromium_context__rspack_import_8 = __webpack_require__("./browsers/run-chromium/chromium-context/index.ts");
5246
+ var _run_chromium_chromium_launch__rspack_import_6 = __webpack_require__("./browsers/run-chromium/chromium-launch/index.ts");
5247
+ var _run_firefox_firefox_context__rspack_import_9 = __webpack_require__("./browsers/run-firefox/firefox-context/index.ts");
5248
+ var _run_firefox_firefox_launch__rspack_import_7 = __webpack_require__("./browsers/run-firefox/firefox-launch/index.ts");
5189
5249
  function createPreviewCompilationLike(opts) {
5190
5250
  return {
5191
5251
  options: {
@@ -5271,26 +5331,29 @@ var __webpack_modules__ = {
5271
5331
  }
5272
5332
  function resolvePinnedBinaryVersionLine(opts) {
5273
5333
  try {
5274
- if ((0, _browsers_lib_browser_family__rspack_import_6.M_)(opts.browser)) {
5334
+ if ((0, _browsers_lib_browser_family__rspack_import_3.M_)(opts.browser)) {
5275
5335
  if (!opts.geckoBinary || !node_fs__rspack_import_0.existsSync(opts.geckoBinary)) return;
5276
- return (0, firefox_location2__rspack_import_4.getFirefoxVersion)(opts.geckoBinary) || void 0;
5336
+ return (0, firefox_location2__rspack_import_1.getFirefoxVersion)(opts.geckoBinary) || void 0;
5277
5337
  }
5278
5338
  if (!opts.chromiumBinary || !node_fs__rspack_import_0.existsSync(opts.chromiumBinary)) return;
5279
- if ('edge' === opts.browser) return (0, edge_location__rspack_import_3.getEdgeVersion)(opts.chromiumBinary) || void 0;
5280
- if ('chromium' === opts.browser || 'chromium-based' === opts.browser) return (0, chromium_location__rspack_import_2.getChromiumVersion)(opts.chromiumBinary) || void 0;
5281
- return (0, chrome_location2__rspack_import_1.getChromeVersion)(opts.chromiumBinary) || void 0;
5339
+ return (0, _browsers_lib_shared_utils__rspack_import_5.yO)(opts.chromiumBinary, String(opts.browser)) || void 0;
5282
5340
  } catch {
5283
5341
  return;
5284
5342
  }
5285
5343
  }
5286
5344
  function buildPreviewBannerOptions(opts) {
5345
+ const chromiumPinned = !(0, _browsers_lib_browser_family__rspack_import_3.M_)(opts.browser) && 'string' == typeof opts.chromiumBinary && node_fs__rspack_import_0.existsSync(opts.chromiumBinary);
5287
5346
  return {
5288
5347
  browser: opts.browser,
5289
5348
  outPath: opts.outPath,
5290
5349
  includeExtensionId: true,
5291
5350
  includeRunId: false,
5292
5351
  readyPath: opts.readyPath,
5293
- browserVersionLine: resolvePinnedBinaryVersionLine(opts)
5352
+ browserVersionLine: resolvePinnedBinaryVersionLine(opts),
5353
+ ...chromiumPinned ? {
5354
+ binaryPath: opts.chromiumBinary,
5355
+ binaryProvenance: 'pinned'
5356
+ } : {}
5294
5357
  };
5295
5358
  }
5296
5359
  async function runOnlyPreviewBrowser(opts) {
@@ -5306,21 +5369,21 @@ var __webpack_modules__ = {
5306
5369
  const compilationLike = createPreviewCompilationLike(opts);
5307
5370
  const previewPluginOptions = buildPreviewPluginOptions(opts);
5308
5371
  const bannerOptions = buildPreviewBannerOptions(opts);
5309
- (0, _browsers_lib_output_binaries_resolver__rspack_import_7.LB)(compilationLike);
5310
- if ((0, _browsers_lib_browser_family__rspack_import_6.rG)(opts.browser)) {
5311
- const ctx = (0, _run_chromium_chromium_context__rspack_import_10.g)();
5312
- const launcher = new _run_chromium_chromium_launch__rspack_import_8.f(buildPreviewChromiumOptions(opts), ctx);
5313
- await (0, _browsers_lib_banner__rspack_import_5.MK)(bannerOptions);
5372
+ (0, _browsers_lib_output_binaries_resolver__rspack_import_4.LB)(compilationLike);
5373
+ if ((0, _browsers_lib_browser_family__rspack_import_3.rG)(opts.browser)) {
5374
+ const ctx = (0, _run_chromium_chromium_context__rspack_import_8.g)();
5375
+ const launcher = new _run_chromium_chromium_launch__rspack_import_6.f(buildPreviewChromiumOptions(opts), ctx);
5376
+ await (0, _browsers_lib_banner__rspack_import_2.MK)(bannerOptions);
5314
5377
  await launcher.runOnce(compilationLike, {
5315
5378
  enableCdpPostLaunch: false
5316
5379
  });
5317
5380
  return;
5318
5381
  }
5319
- if ((0, _browsers_lib_browser_family__rspack_import_6.M_)(opts.browser)) {
5320
- const ctx = (0, _run_firefox_firefox_context__rspack_import_11.D)();
5321
- const launcher = new _run_firefox_firefox_launch__rspack_import_9.c(buildPreviewFirefoxOptions(opts), ctx);
5322
- await (0, _browsers_lib_banner__rspack_import_5.MK)(bannerOptions);
5323
- await launcher.runOnce(compilationLike, (0, _browsers_lib_runtime_options__rspack_import_12.zU)(previewPluginOptions, 'production', {
5382
+ if ((0, _browsers_lib_browser_family__rspack_import_3.M_)(opts.browser)) {
5383
+ const ctx = (0, _run_firefox_firefox_context__rspack_import_9.D)();
5384
+ const launcher = new _run_firefox_firefox_launch__rspack_import_7.c(buildPreviewFirefoxOptions(opts), ctx);
5385
+ await (0, _browsers_lib_banner__rspack_import_2.MK)(bannerOptions);
5386
+ await launcher.runOnce(compilationLike, (0, _browsers_lib_runtime_options__rspack_import_10.zU)(previewPluginOptions, 'production', {
5324
5387
  persistProfile: previewPluginOptions.persistProfile,
5325
5388
  geckoBinary: previewPluginOptions.geckoBinary
5326
5389
  }));