extension-develop 3.1.0-next.8 → 3.2.0-next.2

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 (28) hide show
  1. package/dist/547.js +14 -14
  2. package/dist/content-script-wrapper.js +4 -1
  3. package/dist/ensure-hmr-for-scripts.js +2 -0
  4. package/dist/extension-js-devtools/chrome/pages/centralized-logger.css +1 -1
  5. package/dist/extension-js-devtools/chrome/pages/centralized-logger.js +4 -5
  6. package/dist/extension-js-devtools/chrome/pages/welcome.css +1 -1
  7. package/dist/extension-js-devtools/chrome/pages/welcome.js +4 -4
  8. package/dist/extension-js-devtools/chromium/pages/centralized-logger.css +1 -1
  9. package/dist/extension-js-devtools/chromium/pages/centralized-logger.js +4 -5
  10. package/dist/extension-js-devtools/chromium/pages/welcome.css +1 -1
  11. package/dist/extension-js-devtools/chromium/pages/welcome.js +4 -4
  12. package/dist/extension-js-devtools/edge/pages/centralized-logger.css +1 -1
  13. package/dist/extension-js-devtools/edge/pages/centralized-logger.js +4 -5
  14. package/dist/extension-js-devtools/edge/pages/welcome.css +1 -1
  15. package/dist/extension-js-devtools/edge/pages/welcome.js +4 -4
  16. package/dist/extension-js-devtools/firefox/pages/centralized-logger.css +1 -1
  17. package/dist/extension-js-devtools/firefox/pages/centralized-logger.js +4 -5
  18. package/dist/extension-js-devtools/firefox/pages/welcome.css +1 -1
  19. package/dist/extension-js-devtools/firefox/pages/welcome.js +4 -4
  20. package/dist/module.js +426 -132
  21. package/package.json +1 -2
  22. package/dist/add-centralized-logger-script-background.js +0 -220
  23. package/dist/add-centralized-logger-script-content.js +0 -172
  24. package/dist/add-centralized-logger-script.js +0 -323
  25. package/dist/extension-js-devtools/chrome/logo.png +0 -0
  26. package/dist/extension-js-devtools/chromium/logo.png +0 -0
  27. package/dist/extension-js-devtools/edge/logo.png +0 -0
  28. package/dist/extension-js-devtools/firefox/logo.png +0 -0
package/dist/module.js CHANGED
@@ -127144,6 +127144,12 @@ var __webpack_modules__ = {
127144
127144
  }
127145
127145
  }
127146
127146
  const printedKeys = new Set();
127147
+ function readUpdateMessageOnce() {
127148
+ const message = process.env.EXTENSION_CLI_UPDATE_MESSAGE;
127149
+ if (!message) return null;
127150
+ delete process.env.EXTENSION_CLI_UPDATE_MESSAGE;
127151
+ return message;
127152
+ }
127147
127153
  function keyFor(browser, outPath, hp) {
127148
127154
  const host = (hp?.host || '127.0.0.1').toString();
127149
127155
  const port = hp?.port == null ? '' : String(hp.port);
@@ -127170,8 +127176,11 @@ var __webpack_modules__ = {
127170
127176
  };
127171
127177
  console.log(messages.io8());
127172
127178
  console.log(messages.e_P(manifest, opts.browser, message, opts.browserVersionLine));
127179
+ const updateMessage = readUpdateMessageOnce();
127180
+ if (updateMessage) console.log(updateMessage);
127173
127181
  console.log(messages.io8());
127174
127182
  markBannerPrinted();
127183
+ process.env.EXTENSION_CLI_BANNER_PRINTED = 'true';
127175
127184
  printedKeys.add(k);
127176
127185
  return true;
127177
127186
  }
@@ -127194,6 +127203,8 @@ var __webpack_modules__ = {
127194
127203
  };
127195
127204
  console.log(messages.io8());
127196
127205
  console.log(messages.e_P(manifest, opts.browser, message, browserLabel));
127206
+ const updateMessage = readUpdateMessageOnce();
127207
+ if (updateMessage) console.log(updateMessage);
127197
127208
  console.log(messages.io8());
127198
127209
  } else {
127199
127210
  const message = {
@@ -127207,14 +127218,19 @@ var __webpack_modules__ = {
127207
127218
  };
127208
127219
  console.log(messages.io8());
127209
127220
  console.log(messages.e_P(manifest, opts.browser, message, browserLabel));
127221
+ const updateMessage = readUpdateMessageOnce();
127222
+ if (updateMessage) console.log(updateMessage);
127210
127223
  console.log(messages.io8());
127211
127224
  }
127212
127225
  } catch {
127213
127226
  console.log(messages.io8());
127214
127227
  console.log(webpack_lib_messages.Al(opts.outPath, browserLabel));
127228
+ const updateMessage = readUpdateMessageOnce();
127229
+ if (updateMessage) console.log(updateMessage);
127215
127230
  console.log(messages.io8());
127216
127231
  }
127217
127232
  markBannerPrinted();
127233
+ process.env.EXTENSION_CLI_BANNER_PRINTED = 'true';
127218
127234
  printedKeys.add(k);
127219
127235
  return true;
127220
127236
  }
@@ -127598,7 +127614,7 @@ var __webpack_modules__ = {
127598
127614
  return body.join('\n') + '\n';
127599
127615
  }
127600
127616
  function firefoxLaunchCalled() {
127601
- return `${getLoggingPrefix('info')} launchFirefox called!`;
127617
+ return `${getLoggingPrefix('info')} Firefox launch requested.`;
127602
127618
  }
127603
127619
  function firefoxBinaryArgsExtracted(args) {
127604
127620
  return `${getLoggingPrefix('info')} Firefox binary args extracted: ${pintor__rspack_import_0_default().gray(args)}`;
@@ -127640,7 +127656,7 @@ var __webpack_modules__ = {
127640
127656
  return `${getLoggingPrefix('info')} Waiting for Firefox to be ready with remote debugging...`;
127641
127657
  }
127642
127658
  function firefoxRemoteDebuggingReady() {
127643
- return `${getLoggingPrefix('success')} Firefox is ready with remote debugging!`;
127659
+ return `${getLoggingPrefix('success')} Firefox is ready with remote debugging.`;
127644
127660
  }
127645
127661
  function sourceInspectorFirefoxNotReadyYet(retries, maxRetries) {
127646
127662
  return `${getLoggingPrefix('warn')} Firefox not ready yet, retrying... (${pintor__rspack_import_0_default().gray(retries.toString())}/${pintor__rspack_import_0_default().gray(maxRetries.toString())})`;
@@ -127649,7 +127665,7 @@ var __webpack_modules__ = {
127649
127665
  return `${getLoggingPrefix('info')} Waiting for Chrome to be ready with remote debugging...`;
127650
127666
  }
127651
127667
  function chromeRemoteDebuggingReady() {
127652
- return `${getLoggingPrefix('success')} Chrome is ready with remote debugging!`;
127668
+ return `${getLoggingPrefix('success')} Chrome is ready with remote debugging.`;
127653
127669
  }
127654
127670
  function sourceInspectorChromeNotReadyYet(retries, maxRetries) {
127655
127671
  return `${getLoggingPrefix('warn')} Chrome not ready yet, retrying... (${pintor__rspack_import_0_default().gray(retries.toString())}/${pintor__rspack_import_0_default().gray(maxRetries.toString())})`;
@@ -127679,7 +127695,7 @@ var __webpack_modules__ = {
127679
127695
  return `${getLoggingPrefix('success')} Chrome is attached to the target with session ID: ${pintor__rspack_import_0_default().gray(sessionId)}`;
127680
127696
  }
127681
127697
  function sourceInspectorHTMLExtractionComplete() {
127682
- return `${getLoggingPrefix('success')} Chrome HTML extraction is complete`;
127698
+ return `${getLoggingPrefix('success')} Chrome HTML extraction is complete.`;
127683
127699
  }
127684
127700
  function sourceInspectorInspectionFailed(error) {
127685
127701
  return `${getLoggingPrefix('error')} Failed to inspect Chrome source: ${pintor__rspack_import_0_default().red(error)}`;
@@ -127736,7 +127752,7 @@ var __webpack_modules__ = {
127736
127752
  return `${getLoggingPrefix('error')} Failed to update Chrome HTML: ${pintor__rspack_import_0_default().red(error)}`;
127737
127753
  }
127738
127754
  function sourceInspectorCleanupComplete() {
127739
- return `${getLoggingPrefix('success')} Chrome source inspector cleaned up`;
127755
+ return `${getLoggingPrefix('success')} Chrome source inspector cleaned up.`;
127740
127756
  }
127741
127757
  function sourceInspectorCleanupError(error) {
127742
127758
  return `${getLoggingPrefix('error')} Error during Chrome cleanup: ${pintor__rspack_import_0_default().red(error)}`;
@@ -127843,7 +127859,13 @@ var __webpack_modules__ = {
127843
127859
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) return `${getLoggingPrefix('error')} No management API info received from client for ${manifestName}. Investigate.`;
127844
127860
  }
127845
127861
  const { name = '', version: version1 = '' } = management;
127846
- const extensionVersion = require1('../../../package.json').version;
127862
+ const extensionVersion = process.env.EXTENSION_CLI_VERSION || (()=>{
127863
+ try {
127864
+ return require1('../../../package.json').version;
127865
+ } catch {
127866
+ return 'unknown';
127867
+ }
127868
+ })();
127847
127869
  let effectiveBrowserLine = browserVersionLine && browserVersionLine.trim().length > 0 ? browserVersionLine.trim() : '';
127848
127870
  if (!effectiveBrowserLine) try {
127849
127871
  if ('chromium' === browser || 'chromium-based' === browser) {
@@ -128804,7 +128826,7 @@ var __webpack_modules__ = {
128804
128826
  group: process.getgid?.()
128805
128827
  }
128806
128828
  });
128807
- this.logger.debug?.('[plugin-browsers] Final Chrome flags:', launchArgs.join(' '));
128829
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) this.logger.debug?.('[plugin-browsers] Final Chrome flags:', launchArgs.join(' '));
128808
128830
  child.on('close', (code)=>{
128809
128831
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) this.logger.info(messages.nnm(code || 0));
128810
128832
  });
@@ -130563,15 +130585,15 @@ var __webpack_modules__ = {
130563
130585
  "./webpack/plugin-css/css-lib/integrations.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
130564
130586
  "use strict";
130565
130587
  __webpack_require__.d(__webpack_exports__, {
130566
- t: ()=>installOptionalDependencies,
130567
- w: ()=>hasDependency
130588
+ Dy: ()=>installOptionalDependenciesBatch,
130589
+ tm: ()=>installOptionalDependencies,
130590
+ ws: ()=>hasDependency
130568
130591
  });
130569
130592
  var path__rspack_import_0 = __webpack_require__("path");
130570
130593
  var fs__rspack_import_1 = __webpack_require__("fs");
130571
130594
  var child_process__rspack_import_2 = __webpack_require__("child_process");
130572
130595
  var pintor__rspack_import_3 = __webpack_require__("pintor");
130573
130596
  var pintor__rspack_import_3_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_3);
130574
- var package_manager_detector__rspack_import_4 = __webpack_require__("package-manager-detector");
130575
130597
  function parseJsonSafe(text) {
130576
130598
  const s = text && 0xfeff === text.charCodeAt(0) ? text.slice(1) : text;
130577
130599
  return JSON.parse(s || '{}');
@@ -130584,31 +130606,87 @@ var __webpack_modules__ = {
130584
130606
  if (process.env['npm_execpath']) return 'npm';
130585
130607
  return false;
130586
130608
  }
130609
+ function getPackageManagerFromEnv() {
130610
+ const ua = process.env.npm_config_user_agent;
130611
+ if (ua) {
130612
+ if (ua.includes('pnpm')) return 'pnpm';
130613
+ if (ua.includes('yarn')) return 'yarn';
130614
+ if (ua.includes('bun')) return 'bun';
130615
+ if (ua.includes('npm')) return 'npm';
130616
+ }
130617
+ const execPath = process.env.npm_execpath || process.env.NPM_EXEC_PATH;
130618
+ if (execPath) {
130619
+ if (execPath.includes('pnpm')) return 'pnpm';
130620
+ if (execPath.includes('yarn')) return 'yarn';
130621
+ if (execPath.includes('bun')) return 'bun';
130622
+ if (execPath.includes('npm')) return 'npm';
130623
+ }
130624
+ }
130625
+ async function resolvePackageManager() {
130626
+ const envPm = getPackageManagerFromEnv();
130627
+ if (envPm) return envPm;
130628
+ return 'npm';
130629
+ }
130630
+ function getOptionalInstallCommand(pm, dependencies) {
130631
+ const quotedDir = JSON.stringify(__dirname);
130632
+ const pmName = pm;
130633
+ if ('yarn' === pmName) return `yarn --silent add ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130634
+ if ('npm' === pmName || isFromNpx()) return `npm --silent install ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130635
+ if (isFromPnpx()) return `pnpm --silent add ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130636
+ const fallback = pmName || 'npm';
130637
+ return `${fallback} --silent install ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130638
+ }
130639
+ function getRootInstallCommand(pm) {
130640
+ const pmName = pm;
130641
+ if ('yarn' === pmName) return "yarn install --silent";
130642
+ if ('npm' === pmName || isFromNpx()) return "npm install --silent";
130643
+ if (isFromPnpx()) return "pnpm install --silent";
130644
+ return `${pmName || 'npm'} install --silent`;
130645
+ }
130646
+ function formatToolingLabel(integrations, fallback) {
130647
+ const list = integrations && integrations.length > 0 ? integrations.join('/') : fallback;
130648
+ return `Setting up ${list} tooling...`;
130649
+ }
130587
130650
  async function installOptionalDependencies(integration, dependencies) {
130651
+ if (!dependencies.length) return;
130588
130652
  try {
130589
- const pm = await (0, package_manager_detector__rspack_import_4.detect)();
130590
- let installCommand = '';
130591
- const quotedDir = JSON.stringify(__dirname);
130592
- if (pm?.name === 'yarn') installCommand = `yarn --silent add ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130593
- else if (pm?.name === 'npm' || isFromNpx()) installCommand = `npm --silent install ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130594
- else if (isFromPnpx()) installCommand = `pnpm --silent add ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130595
- else {
130596
- const pmName = 'string' == typeof pm ? pm : pm?.name || 'npm';
130597
- installCommand = `${pmName} --silent install ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130653
+ const pm = await resolvePackageManager();
130654
+ const installCommand = getOptionalInstallCommand(pm, dependencies);
130655
+ console.log(formatToolingLabel([
130656
+ integration
130657
+ ], integration));
130658
+ (0, child_process__rspack_import_2.execSync)(installCommand, {
130659
+ stdio: 'inherit'
130660
+ });
130661
+ await new Promise((r)=>setTimeout(r, 500));
130662
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) {
130663
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} [${integration}] Installing root dependencies for dev...`);
130664
+ (0, child_process__rspack_import_2.execSync)(getRootInstallCommand(pm), {
130665
+ stdio: 'ignore'
130666
+ });
130667
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} ${integration} tooling ready.`);
130598
130668
  }
130599
- console.log(`[${integration}] Installing optional dependencies...`);
130669
+ } catch (error) {
130670
+ console.error(`[${integration}] Failed to install dependencies.`, error);
130671
+ }
130672
+ }
130673
+ async function installOptionalDependenciesBatch(integration, dependencies, integrations) {
130674
+ if (!dependencies.length) return;
130675
+ try {
130676
+ const pm = await resolvePackageManager();
130677
+ const installCommand = getOptionalInstallCommand(pm, dependencies);
130678
+ console.log(formatToolingLabel(integrations, integration));
130600
130679
  (0, child_process__rspack_import_2.execSync)(installCommand, {
130601
130680
  stdio: 'inherit'
130602
130681
  });
130603
130682
  await new Promise((r)=>setTimeout(r, 500));
130604
130683
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) {
130605
130684
  console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} [${integration}] Installing root dependencies for dev...`);
130606
- const devInstall = pm?.name === 'yarn' ? "yarn install --silent" : pm?.name === 'npm' || isFromNpx() ? "npm install --silent" : isFromPnpx() ? "pnpm install --silent" : `${'string' == typeof pm ? pm : pm?.name || 'npm'} install --silent`;
130607
- (0, child_process__rspack_import_2.execSync)(devInstall, {
130685
+ (0, child_process__rspack_import_2.execSync)(getRootInstallCommand(pm), {
130608
130686
  stdio: 'ignore'
130609
130687
  });
130688
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} ${integration} tooling ready.`);
130610
130689
  }
130611
- console.log(`[${integration}] Dependencies installed successfully.`);
130612
130690
  } catch (error) {
130613
130691
  console.error(`[${integration}] Failed to install dependencies.`, error);
130614
130692
  }
@@ -130714,7 +130792,7 @@ var __webpack_modules__ = {
130714
130792
  var _css_lib_is_content_script__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/is-content-script.ts");
130715
130793
  let userMessageDelivered = false;
130716
130794
  function isUsingLess(projectPath) {
130717
- if ((0, _css_lib_integrations__rspack_import_3.w)(projectPath, 'less')) {
130795
+ if ((0, _css_lib_integrations__rspack_import_3.ws)(projectPath, 'less')) {
130718
130796
  if (!userMessageDelivered) {
130719
130797
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_1_default().brightMagenta('►►► Author says')} ${_css_lib_messages__rspack_import_2.zA('LESS')}`);
130720
130798
  userMessageDelivered = true;
@@ -130733,7 +130811,7 @@ var __webpack_modules__ = {
130733
130811
  'less',
130734
130812
  'less-loader'
130735
130813
  ];
130736
- await (0, _css_lib_integrations__rspack_import_3.t)('LESS', lessDependencies);
130814
+ await (0, _css_lib_integrations__rspack_import_3.tm)('LESS', lessDependencies);
130737
130815
  console.log(_css_lib_messages__rspack_import_2.Jv('LESS'));
130738
130816
  process.exit(0);
130739
130817
  }
@@ -130808,7 +130886,7 @@ var __webpack_modules__ = {
130808
130886
  }
130809
130887
  }
130810
130888
  function isUsingPostCss(projectPath) {
130811
- if ((0, _css_lib_integrations__rspack_import_5.w)(projectPath, 'postcss')) {
130889
+ if ((0, _css_lib_integrations__rspack_import_5.ws)(projectPath, 'postcss')) {
130812
130890
  if (!userMessageDelivered) {
130813
130891
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} ${_css_lib_messages__rspack_import_4.zA('PostCSS')}`);
130814
130892
  userMessageDelivered = true;
@@ -130858,7 +130936,7 @@ var __webpack_modules__ = {
130858
130936
  'postcss',
130859
130937
  'postcss-loader'
130860
130938
  ];
130861
- await (0, _css_lib_integrations__rspack_import_5.t)('PostCSS', postCssDependencies);
130939
+ await (0, _css_lib_integrations__rspack_import_5.tm)('PostCSS', postCssDependencies);
130862
130940
  }
130863
130941
  console.log(_css_lib_messages__rspack_import_4.Jv('PostCSS'));
130864
130942
  process.exit(0);
@@ -130930,7 +131008,7 @@ var __webpack_modules__ = {
130930
131008
  var _css_lib_integrations__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
130931
131009
  let userMessageDelivered = false;
130932
131010
  function isUsingSass(projectPath) {
130933
- if ((0, _css_lib_integrations__rspack_import_4.w)(projectPath, 'sass')) {
131011
+ if ((0, _css_lib_integrations__rspack_import_4.ws)(projectPath, 'sass')) {
130934
131012
  if (!userMessageDelivered) {
130935
131013
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_2_default().brightMagenta('►►► Author says')} ${_css_lib_messages__rspack_import_3.zA('SASS')}`);
130936
131014
  userMessageDelivered = true;
@@ -130981,11 +131059,11 @@ var __webpack_modules__ = {
130981
131059
  'postcss-scss',
130982
131060
  'postcss-preset-env'
130983
131061
  ];
130984
- await (0, _css_lib_integrations__rspack_import_4.t)('PostCSS', postCssDependencies);
131062
+ await (0, _css_lib_integrations__rspack_import_4.tm)('PostCSS', postCssDependencies);
130985
131063
  const sassDependencies = [
130986
131064
  'sass-loader'
130987
131065
  ];
130988
- await (0, _css_lib_integrations__rspack_import_4.t)('SASS', sassDependencies);
131066
+ await (0, _css_lib_integrations__rspack_import_4.tm)('SASS', sassDependencies);
130989
131067
  console.log(_css_lib_messages__rspack_import_3.Jv('SASS'));
130990
131068
  process.exit(0);
130991
131069
  }
@@ -131026,7 +131104,7 @@ var __webpack_modules__ = {
131026
131104
  var _css_lib_integrations__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
131027
131105
  let userMessageDelivered = false;
131028
131106
  function isUsingTailwind(projectPath) {
131029
- const isUsingTailwind = (0, _css_lib_integrations__rspack_import_4.w)(projectPath, 'tailwindcss') || (0, _css_lib_integrations__rspack_import_4.w)(projectPath, '@tailwindcss/postcss');
131107
+ const isUsingTailwind = (0, _css_lib_integrations__rspack_import_4.ws)(projectPath, 'tailwindcss') || (0, _css_lib_integrations__rspack_import_4.ws)(projectPath, '@tailwindcss/postcss');
131030
131108
  if (isUsingTailwind) {
131031
131109
  if (!userMessageDelivered) {
131032
131110
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_2_default().brightMagenta('►►► Author says')} ${_css_lib_messages__rspack_import_3.zA('Tailwind')}`);
@@ -131047,9 +131125,10 @@ var __webpack_modules__ = {
131047
131125
  "./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131048
131126
  "use strict";
131049
131127
  __webpack_require__.d(__webpack_exports__, {
131128
+ Dy: ()=>_plugin_css_css_lib_integrations__rspack_import_0.Dy,
131050
131129
  qQ: ()=>isUsingJSFramework,
131051
- tm: ()=>_plugin_css_css_lib_integrations__rspack_import_0.t,
131052
- ws: ()=>_plugin_css_css_lib_integrations__rspack_import_0.w
131130
+ tm: ()=>_plugin_css_css_lib_integrations__rspack_import_0.tm,
131131
+ ws: ()=>_plugin_css_css_lib_integrations__rspack_import_0.ws
131053
131132
  });
131054
131133
  var _plugin_css_css_lib_integrations__rspack_import_0 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
131055
131134
  function isUsingJSFramework(projectPath) {
@@ -131061,7 +131140,7 @@ var __webpack_modules__ = {
131061
131140
  'solid-js',
131062
131141
  'preact'
131063
131142
  ];
131064
- return frameworks.some((fw)=>__webpack_require__("./webpack/plugin-css/css-lib/integrations.ts").w(projectPath, fw));
131143
+ return frameworks.some((fw)=>__webpack_require__("./webpack/plugin-css/css-lib/integrations.ts").ws(projectPath, fw));
131065
131144
  }
131066
131145
  },
131067
131146
  "./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -131114,6 +131193,7 @@ var __webpack_modules__ = {
131114
131193
  Jv: ()=>youAreAllSet,
131115
131194
  LR: ()=>creatingTSConfig,
131116
131195
  MH: ()=>jsFrameworksConfigsDetected,
131196
+ Q2: ()=>optionalDepsReady,
131117
131197
  Ty: ()=>isUsingCustomLoader,
131118
131198
  jH: ()=>jsFrameworksIntegrationsEnabled,
131119
131199
  zA: ()=>isUsingIntegration
@@ -131126,6 +131206,10 @@ var __webpack_modules__ = {
131126
131206
  function youAreAllSet(name) {
131127
131207
  return `${pintor__rspack_import_0_default().green('►►►')} ${name} installation completed. Run again to proceed.`;
131128
131208
  }
131209
+ function optionalDepsReady(integrations) {
131210
+ const list = integrations.length > 0 ? integrations.map((name)=>pintor__rspack_import_0_default().yellow(name)).join(', ') : pintor__rspack_import_0_default().gray('optional');
131211
+ return `${pintor__rspack_import_0_default().green('►►►')} All set — ${list} tooling is ready.`;
131212
+ }
131129
131213
  function creatingTSConfig() {
131130
131214
  return `${pintor__rspack_import_0_default().gray('►►►')} Creating default tsconfig.json...`;
131131
131215
  }
@@ -131294,7 +131378,8 @@ var __webpack_modules__ = {
131294
131378
  "./webpack/plugin-js-frameworks/js-tools/svelte.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131295
131379
  "use strict";
131296
131380
  __webpack_require__.d(__webpack_exports__, {
131297
- X: ()=>maybeUseSvelte
131381
+ X: ()=>maybeUseSvelte,
131382
+ a: ()=>isUsingSvelte
131298
131383
  });
131299
131384
  var path__rspack_import_0 = __webpack_require__("path");
131300
131385
  var _js_frameworks_lib_messages__rspack_import_1 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
@@ -131434,8 +131519,7 @@ var __webpack_modules__ = {
131434
131519
  "use strict";
131435
131520
  __webpack_require__.d(__webpack_exports__, {
131436
131521
  eE: ()=>isUsingTypeScript,
131437
- hB: ()=>getUserTypeScriptConfigFile,
131438
- vv: ()=>maybeUseTypeScript
131522
+ hB: ()=>getUserTypeScriptConfigFile
131439
131523
  });
131440
131524
  var path__rspack_import_0 = __webpack_require__("path");
131441
131525
  var fs__rspack_import_1 = __webpack_require__("fs");
@@ -131548,31 +131632,19 @@ var __webpack_modules__ = {
131548
131632
  mode: 'development'
131549
131633
  }), null, 2));
131550
131634
  }
131551
- async function maybeUseTypeScript(projectPath) {
131552
- if (!isUsingTypeScript(projectPath)) return false;
131553
- try {
131554
- require.resolve("typescript");
131555
- } catch (e) {
131556
- const typescriptDependencies = [
131557
- "typescript"
131558
- ];
131559
- await (0, _frameworks_lib_integrations__rspack_import_4.tm)('TypeScript', typescriptDependencies);
131560
- console.log(_js_frameworks_lib_messages__rspack_import_3.Jv('TypeScript'));
131561
- process.exit(0);
131562
- }
131563
- return true;
131564
- }
131565
131635
  },
131566
131636
  "./webpack/plugin-js-frameworks/js-tools/vue.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131567
131637
  "use strict";
131568
131638
  __webpack_require__.d(__webpack_exports__, {
131569
- K: ()=>maybeUseVue
131639
+ K: ()=>maybeUseVue,
131640
+ L: ()=>isUsingVue
131570
131641
  });
131571
- var pintor__rspack_import_0 = __webpack_require__("pintor");
131572
- var pintor__rspack_import_0_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_0);
131573
- var _js_frameworks_lib_messages__rspack_import_1 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
131574
- var _frameworks_lib_integrations__rspack_import_2 = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
131575
- var _js_frameworks_lib_load_loader_options__rspack_import_3 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts");
131642
+ var _rspack_core__rspack_import_0 = __webpack_require__("@rspack/core");
131643
+ var pintor__rspack_import_1 = __webpack_require__("pintor");
131644
+ var pintor__rspack_import_1_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_1);
131645
+ var _js_frameworks_lib_messages__rspack_import_2 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
131646
+ var _frameworks_lib_integrations__rspack_import_3 = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
131647
+ var _js_frameworks_lib_load_loader_options__rspack_import_4 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts");
131576
131648
  let userMessageDelivered = false;
131577
131649
  let cachedVueLoaderPlugin;
131578
131650
  function getVueLoaderPlugin() {
@@ -131587,14 +131659,14 @@ var __webpack_modules__ = {
131587
131659
  } catch {}
131588
131660
  }
131589
131661
  function isUsingVue(projectPath) {
131590
- const using = (0, _frameworks_lib_integrations__rspack_import_2.ws)(projectPath, 'vue');
131662
+ const using = (0, _frameworks_lib_integrations__rspack_import_3.ws)(projectPath, 'vue');
131591
131663
  if (using && !userMessageDelivered) {
131592
- if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_0_default().brightMagenta('►►► Author says')} ${_js_frameworks_lib_messages__rspack_import_1.zA('Vue')}`);
131664
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${pintor__rspack_import_1_default().brightMagenta('►►► Author says')} ${_js_frameworks_lib_messages__rspack_import_2.zA('Vue')}`);
131593
131665
  userMessageDelivered = true;
131594
131666
  }
131595
131667
  return using;
131596
131668
  }
131597
- async function maybeUseVue(projectPath) {
131669
+ async function maybeUseVue(projectPath, mode = 'development') {
131598
131670
  if (!isUsingVue(projectPath)) return;
131599
131671
  try {
131600
131672
  require.resolve('vue-loader');
@@ -131603,13 +131675,13 @@ var __webpack_modules__ = {
131603
131675
  'vue-loader',
131604
131676
  '@vue/compiler-sfc'
131605
131677
  ];
131606
- await (0, _frameworks_lib_integrations__rspack_import_2.tm)('Vue', vueDependencies);
131607
- console.log(_js_frameworks_lib_messages__rspack_import_1.Jv('Vue'));
131678
+ await (0, _frameworks_lib_integrations__rspack_import_3.tm)('Vue', vueDependencies);
131679
+ console.log(_js_frameworks_lib_messages__rspack_import_2.Jv('Vue'));
131608
131680
  process.exit(0);
131609
131681
  }
131610
131682
  const VueLoaderPlugin = getVueLoaderPlugin();
131611
131683
  if (!VueLoaderPlugin) throw new Error('[Vue] vue-loader is installed but VueLoaderPlugin could not be resolved.');
131612
- const customOptions = await (0, _js_frameworks_lib_load_loader_options__rspack_import_3.g)(projectPath, 'vue');
131684
+ const customOptions = await (0, _js_frameworks_lib_load_loader_options__rspack_import_4.g)(projectPath, 'vue');
131613
131685
  const defaultLoaders = [
131614
131686
  {
131615
131687
  test: /\.vue$/,
@@ -131622,8 +131694,14 @@ var __webpack_modules__ = {
131622
131694
  exclude: /node_modules/
131623
131695
  }
131624
131696
  ];
131697
+ const isProd = 'production' === mode;
131625
131698
  const defaultPlugins = [
131626
- new VueLoaderPlugin()
131699
+ new VueLoaderPlugin(),
131700
+ new _rspack_core__rspack_import_0.DefinePlugin({
131701
+ __VUE_OPTIONS_API__: JSON.stringify(true),
131702
+ __VUE_PROD_DEVTOOLS__: JSON.stringify(!isProd),
131703
+ __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(!isProd)
131704
+ })
131627
131705
  ];
131628
131706
  return {
131629
131707
  plugins: defaultPlugins,
@@ -132463,10 +132541,6 @@ var __webpack_modules__ = {
132463
132541
  "use strict";
132464
132542
  module.exports = require("os");
132465
132543
  },
132466
- "package-manager-detector" (module) {
132467
- "use strict";
132468
- module.exports = require("package-manager-detector");
132469
- },
132470
132544
  "parse5-utilities" (module) {
132471
132545
  "use strict";
132472
132546
  module.exports = require("parse5-utilities");
@@ -132513,7 +132587,7 @@ var __webpack_modules__ = {
132513
132587
  },
132514
132588
  "./package.json" (module) {
132515
132589
  "use strict";
132516
- module.exports = JSON.parse('{"rE":"3.1.0-next.8","El":{"@rspack/core":"^1.7.2","@rspack/dev-server":"^1.1.5","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","chokidar":"^5.0.0","chrome-location2":"4.0.0","chromium-location":"2.0.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","edge-location":"2.2.0","firefox-location2":"3.0.0","go-git-it":"^5.0.3","ignore":"^7.0.5","loader-utils":"^3.3.1","magic-string":"^0.30.21","package-manager-detector":"^1.6.0","parse5":"^8.0.0","parse5-utilities":"^1.0.0","pintor":"0.3.0","schema-utils":"^4.3.3","tiny-glob":"^0.2.9","unique-names-generator":"^4.7.1","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3","ws":"^8.19.0"}}');
132590
+ module.exports = JSON.parse('{"rE":"3.2.0-next.2","El":{"@rspack/core":"^1.7.2","@rspack/dev-server":"^1.1.5","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","chokidar":"^5.0.0","chrome-location2":"4.0.0","chromium-location":"2.0.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","edge-location":"2.2.0","firefox-location2":"3.0.0","go-git-it":"^5.0.3","ignore":"^7.0.5","loader-utils":"^3.3.1","magic-string":"^0.30.21","parse5":"^8.0.0","parse5-utilities":"^1.0.0","pintor":"0.3.0","schema-utils":"^4.3.3","tiny-glob":"^0.2.9","unique-names-generator":"^4.7.1","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3","ws":"^8.19.0"}}');
132517
132591
  }
132518
132592
  };
132519
132593
  var __webpack_module_cache__ = {};
@@ -132590,8 +132664,20 @@ var __webpack_exports__ = {};
132590
132664
  extensionStart: ()=>extensionStart,
132591
132665
  ensureDependencies: ()=>ensureDependencies,
132592
132666
  extensionPreview: ()=>extensionPreview,
132593
- extensionBuild: ()=>extensionBuild
132667
+ extensionBuild: ()=>extensionBuild,
132668
+ preflightOptionalDependenciesForProject: ()=>preflightOptionalDependenciesForProject
132594
132669
  });
132670
+ function getBuildSummary(browser, info) {
132671
+ const assets = info?.assets || [];
132672
+ return {
132673
+ browser,
132674
+ total_assets: assets.length,
132675
+ total_bytes: assets.reduce((n, a)=>n + (a.size || 0), 0),
132676
+ largest_asset_bytes: assets.reduce((m, a)=>Math.max(m, a.size || 0), 0),
132677
+ warnings_count: (info?.warnings || []).length,
132678
+ errors_count: (info?.errors || []).length
132679
+ };
132680
+ }
132595
132681
  var external_path_ = __webpack_require__("path");
132596
132682
  var external_fs_ = __webpack_require__("fs");
132597
132683
  var messages = __webpack_require__("./webpack/webpack-lib/messages.ts");
@@ -132813,39 +132899,6 @@ var __webpack_exports__ = {};
132813
132899
  }
132814
132900
  }
132815
132901
  var paths = __webpack_require__("./webpack/webpack-lib/paths.ts");
132816
- function getBuildSummary(browser, info) {
132817
- const assets = info?.assets || [];
132818
- return {
132819
- browser,
132820
- total_assets: assets.length,
132821
- total_bytes: assets.reduce((n, a)=>n + (a.size || 0), 0),
132822
- largest_asset_bytes: assets.reduce((m, a)=>Math.max(m, a.size || 0), 0),
132823
- warnings_count: (info?.warnings || []).length,
132824
- errors_count: (info?.errors || []).length
132825
- };
132826
- }
132827
- var react = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/react.ts");
132828
- var preact = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/preact.ts");
132829
- var vue = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/vue.ts");
132830
- var svelte = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/svelte.ts");
132831
- var typescript = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/typescript.ts");
132832
- var sass = __webpack_require__("./webpack/plugin-css/css-tools/sass.ts");
132833
- var less = __webpack_require__("./webpack/plugin-css/css-tools/less.ts");
132834
- var postcss = __webpack_require__("./webpack/plugin-css/css-tools/postcss.ts");
132835
- async function preflightOptionalDependencies(projectStructure, mode) {
132836
- const { packageJsonDir } = (0, paths.fu)(projectStructure);
132837
- const projectPath = packageJsonDir;
132838
- await (0, typescript.vv)(projectPath);
132839
- await (0, react.b)(projectPath);
132840
- await (0, preact.b)(projectPath);
132841
- await (0, vue.K)(projectPath);
132842
- await (0, svelte.X)(projectPath, mode);
132843
- await (0, sass.IZ)(projectPath);
132844
- await (0, less.V)(projectPath, projectStructure.manifestPath);
132845
- await (0, postcss.t)(projectPath, {
132846
- mode
132847
- });
132848
- }
132849
132902
  function findExtensionDevelopRoot() {
132850
132903
  const webpackLibDir = __dirname;
132851
132904
  const webpackDir = external_path_.resolve(webpackLibDir, '..');
@@ -132880,20 +132933,28 @@ var __webpack_exports__ = {};
132880
132933
  return Object.keys(dependencies).filter((dep)=>!isDependencyInstalled(dep, packageRoot));
132881
132934
  }
132882
132935
  const external_cross_spawn_namespaceObject = require("cross-spawn");
132883
- var external_package_manager_detector_ = __webpack_require__("package-manager-detector");
132884
- async function getInstallCommand(packageRoot) {
132885
- const hasPnpmLock = external_fs_.existsSync(external_path_.join(packageRoot, 'pnpm-lock.yaml'));
132886
- const hasYarnLock = external_fs_.existsSync(external_path_.join(packageRoot, 'yarn.lock'));
132887
- const hasNpmLock = external_fs_.existsSync(external_path_.join(packageRoot, 'package-lock.json'));
132936
+ function detectPackageManagerFromEnv() {
132937
+ const userAgent = process.env.npm_config_user_agent || '';
132938
+ if (userAgent.includes('pnpm')) return 'pnpm';
132939
+ if (userAgent.includes('yarn')) return 'yarn';
132940
+ if (userAgent.includes('npm')) return 'npm';
132941
+ const execPath = process.env.npm_execpath || process.env.NPM_EXEC_PATH || '';
132942
+ if (execPath.includes('pnpm')) return 'pnpm';
132943
+ if (execPath.includes('yarn')) return 'yarn';
132944
+ execPath.includes('npm');
132945
+ return 'npm';
132946
+ }
132947
+ function getInstallCommandForPath(cwd) {
132948
+ const hasPnpmLock = external_fs_.existsSync(external_path_.join(cwd, 'pnpm-lock.yaml'));
132949
+ const hasYarnLock = external_fs_.existsSync(external_path_.join(cwd, 'yarn.lock'));
132950
+ const hasNpmLock = external_fs_.existsSync(external_path_.join(cwd, 'package-lock.json'));
132888
132951
  if (hasPnpmLock) return 'pnpm';
132889
132952
  if (hasYarnLock) return 'yarn';
132890
132953
  if (hasNpmLock) return 'npm';
132891
- const pm = await (0, external_package_manager_detector_.detect)({
132892
- cwd: packageRoot
132893
- });
132894
- if (pm?.name === 'yarn') return 'yarn';
132895
- if (pm?.name === 'pnpm') return 'pnpm';
132896
- return 'npm';
132954
+ return detectPackageManagerFromEnv();
132955
+ }
132956
+ async function getInstallCommand(packageRoot) {
132957
+ return getInstallCommandForPath(packageRoot);
132897
132958
  }
132898
132959
  function getInstallArgs(command, dependencies, dependenciesMap) {
132899
132960
  const depsWithVersions = dependencies.map((dep)=>`${dep}@${dependenciesMap[dep]}`);
@@ -132946,19 +133007,7 @@ var __webpack_exports__ = {};
132946
133007
  }
132947
133008
  }
132948
133009
  async function install_dependencies_getInstallCommand() {
132949
- const cwd = process.cwd();
132950
- const hasPnpmLock = external_fs_.existsSync(external_path_.join(cwd, 'pnpm-lock.yaml'));
132951
- const hasYarnLock = external_fs_.existsSync(external_path_.join(cwd, 'yarn.lock'));
132952
- const hasNpmLock = external_fs_.existsSync(external_path_.join(cwd, 'package-lock.json'));
132953
- if (hasPnpmLock) return 'pnpm';
132954
- if (hasYarnLock) return 'yarn';
132955
- if (hasNpmLock) return 'npm';
132956
- const pm = await (0, external_package_manager_detector_.detect)({
132957
- cwd
132958
- });
132959
- if (pm?.name === 'yarn') return 'yarn';
132960
- if (pm?.name === 'pnpm') return 'pnpm';
132961
- return 'npm';
133010
+ return getInstallCommandForPath(process.cwd());
132962
133011
  }
132963
133012
  function install_dependencies_getInstallArgs() {
132964
133013
  return [
@@ -133021,6 +133070,230 @@ var __webpack_exports__ = {};
133021
133070
  installedUser: needsUserInstall
133022
133071
  };
133023
133072
  }
133073
+ var external_pintor_ = __webpack_require__("pintor");
133074
+ var external_pintor_default = /*#__PURE__*/ __webpack_require__.n(external_pintor_);
133075
+ var external_crypto_ = __webpack_require__("crypto");
133076
+ function getPreflightCacheDir(packageRoot) {
133077
+ return external_path_.join(packageRoot, '.cache', 'extensionjs', 'preflight');
133078
+ }
133079
+ function getProjectKey(projectPath) {
133080
+ return (0, external_crypto_.createHash)('sha1').update(external_path_.resolve(projectPath)).digest('hex');
133081
+ }
133082
+ function getCacheVersionPath(cacheDir) {
133083
+ return external_path_.join(cacheDir, 'version.json');
133084
+ }
133085
+ function getProjectDepsHash(projectPath) {
133086
+ try {
133087
+ const packageJsonPath = external_path_.join(projectPath, 'package.json');
133088
+ if (!external_fs_.existsSync(packageJsonPath)) return 'no-package-json';
133089
+ const raw = external_fs_.readFileSync(packageJsonPath, 'utf8');
133090
+ const parsed = JSON.parse(raw || '{}');
133091
+ const deps = parsed?.dependencies || {};
133092
+ const devDeps = parsed?.devDependencies || {};
133093
+ const normalize = (input)=>{
133094
+ const sortedKeys = Object.keys(input).sort();
133095
+ const normalized = {};
133096
+ for (const key of sortedKeys)normalized[key] = input[key];
133097
+ return normalized;
133098
+ };
133099
+ const stable = JSON.stringify({
133100
+ dependencies: normalize(deps),
133101
+ devDependencies: normalize(devDeps)
133102
+ });
133103
+ return (0, external_crypto_.createHash)('sha1').update(stable).digest('hex');
133104
+ } catch {
133105
+ return 'invalid-package-json';
133106
+ }
133107
+ }
133108
+ function ensureCacheVersion(cacheDir) {
133109
+ const versionPath = getCacheVersionPath(cacheDir);
133110
+ const expectedVersion = package_0.rE;
133111
+ try {
133112
+ if (!external_fs_.existsSync(versionPath)) return true;
133113
+ const raw = external_fs_.readFileSync(versionPath, 'utf8');
133114
+ const data = JSON.parse(raw || '{}');
133115
+ if (data?.version !== expectedVersion) {
133116
+ external_fs_.rmSync(cacheDir, {
133117
+ recursive: true,
133118
+ force: true
133119
+ });
133120
+ return false;
133121
+ }
133122
+ return true;
133123
+ } catch {
133124
+ try {
133125
+ external_fs_.rmSync(cacheDir, {
133126
+ recursive: true,
133127
+ force: true
133128
+ });
133129
+ } catch {}
133130
+ return false;
133131
+ }
133132
+ }
133133
+ function getPreflightMarkerPath(projectPath) {
133134
+ const packageRoot = findExtensionDevelopRoot();
133135
+ if (!packageRoot) return;
133136
+ const cacheDir = getPreflightCacheDir(packageRoot);
133137
+ return external_path_.join(cacheDir, `${getProjectKey(projectPath)}.json`);
133138
+ }
133139
+ function hasPreflightMarker(projectPath) {
133140
+ const marker = getPreflightMarkerPath(projectPath);
133141
+ if (!marker) return false;
133142
+ const cacheDir = external_path_.dirname(marker);
133143
+ if (!ensureCacheVersion(cacheDir)) return false;
133144
+ if (!external_fs_.existsSync(marker)) return false;
133145
+ try {
133146
+ const raw = external_fs_.readFileSync(marker, 'utf8');
133147
+ const data = JSON.parse(raw || '{}');
133148
+ const depsHash = getProjectDepsHash(projectPath);
133149
+ if (data?.depsHash !== depsHash) {
133150
+ external_fs_.rmSync(marker, {
133151
+ force: true
133152
+ });
133153
+ return false;
133154
+ }
133155
+ return true;
133156
+ } catch {
133157
+ try {
133158
+ external_fs_.rmSync(marker, {
133159
+ force: true
133160
+ });
133161
+ } catch {}
133162
+ return false;
133163
+ }
133164
+ }
133165
+ function writePreflightMarker(projectPath) {
133166
+ const marker = getPreflightMarkerPath(projectPath);
133167
+ if (!marker) return;
133168
+ const cacheDir = external_path_.dirname(marker);
133169
+ try {
133170
+ external_fs_.mkdirSync(cacheDir, {
133171
+ recursive: true
133172
+ });
133173
+ external_fs_.writeFileSync(getCacheVersionPath(cacheDir), JSON.stringify({
133174
+ version: package_0.rE
133175
+ }));
133176
+ external_fs_.writeFileSync(marker, JSON.stringify({
133177
+ projectPath: external_path_.resolve(projectPath),
133178
+ depsHash: getProjectDepsHash(projectPath),
133179
+ version: package_0.rE,
133180
+ ts: Date.now()
133181
+ }));
133182
+ } catch {}
133183
+ }
133184
+ var react = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/react.ts");
133185
+ var preact = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/preact.ts");
133186
+ var vue = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/vue.ts");
133187
+ var svelte = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/svelte.ts");
133188
+ var typescript = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/typescript.ts");
133189
+ var integrations = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
133190
+ var sass = __webpack_require__("./webpack/plugin-css/css-tools/sass.ts");
133191
+ var less = __webpack_require__("./webpack/plugin-css/css-tools/less.ts");
133192
+ var postcss = __webpack_require__("./webpack/plugin-css/css-tools/postcss.ts");
133193
+ var js_frameworks_lib_messages = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
133194
+ function canResolveFromProject(id, projectPath) {
133195
+ try {
133196
+ return require.resolve(id, {
133197
+ paths: [
133198
+ projectPath,
133199
+ process.cwd()
133200
+ ]
133201
+ });
133202
+ } catch {
133203
+ return;
133204
+ }
133205
+ }
133206
+ function canResolve(id) {
133207
+ try {
133208
+ return require.resolve(id);
133209
+ } catch {
133210
+ return;
133211
+ }
133212
+ }
133213
+ async function preflightOptionalDependencies(projectStructure, mode, opts) {
133214
+ const { packageJsonDir } = (0, paths.fu)(projectStructure);
133215
+ const projectPath = packageJsonDir;
133216
+ if (hasPreflightMarker(projectPath)) {
133217
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${external_pintor_default().brightMagenta('►►► Author says')} Optional deps preflight skipped (cache hit).`);
133218
+ return;
133219
+ }
133220
+ const missingOptionalDeps = new Set();
133221
+ const usedIntegrations = [];
133222
+ const usesTypeScript = (0, typescript.eE)(projectPath);
133223
+ const usesReact = (0, react.S)(projectPath);
133224
+ const usesPreact = (0, preact.K)(projectPath);
133225
+ const usesVue = (0, vue.L)(projectPath);
133226
+ const usesSvelte = (0, svelte.a)(projectPath);
133227
+ const usesSass = (0, sass.fZ)(projectPath);
133228
+ const usesLess = (0, less.K)(projectPath);
133229
+ const usesPostCss = (0, postcss.A)(projectPath);
133230
+ if (usesTypeScript && !canResolveFromProject("typescript", projectPath)) {
133231
+ missingOptionalDeps.add("typescript");
133232
+ usedIntegrations.push('TypeScript');
133233
+ }
133234
+ if (usesReact) {
133235
+ if (!canResolve('react-refresh')) missingOptionalDeps.add('react-refresh');
133236
+ if (!canResolve('@rspack/plugin-react-refresh')) missingOptionalDeps.add('@rspack/plugin-react-refresh');
133237
+ usedIntegrations.push('React');
133238
+ }
133239
+ if (usesPreact) {
133240
+ if (!canResolve('@prefresh/core')) missingOptionalDeps.add('@prefresh/core');
133241
+ if (!canResolve('@prefresh/utils')) missingOptionalDeps.add('@prefresh/utils');
133242
+ if (!canResolve('@rspack/plugin-preact-refresh')) missingOptionalDeps.add('@rspack/plugin-preact-refresh');
133243
+ if (!canResolve('preact')) missingOptionalDeps.add('preact');
133244
+ usedIntegrations.push('Preact');
133245
+ }
133246
+ if (usesVue) {
133247
+ if (!canResolve('vue-loader')) missingOptionalDeps.add('vue-loader');
133248
+ if (!canResolve('@vue/compiler-sfc')) missingOptionalDeps.add('@vue/compiler-sfc');
133249
+ usedIntegrations.push('Vue');
133250
+ }
133251
+ if (usesSvelte) {
133252
+ if (!canResolveFromProject('svelte-loader', projectPath) && !canResolve('svelte-loader')) missingOptionalDeps.add('svelte-loader');
133253
+ if (!canResolveFromProject("typescript", projectPath)) missingOptionalDeps.add("typescript");
133254
+ usedIntegrations.push('Svelte');
133255
+ }
133256
+ if (usesSass && !canResolve('sass-loader')) {
133257
+ const postCssDeps = [
133258
+ 'postcss-loader',
133259
+ 'postcss-scss',
133260
+ 'postcss-preset-env'
133261
+ ];
133262
+ for (const dep of postCssDeps)if (!canResolve(dep)) missingOptionalDeps.add(dep);
133263
+ missingOptionalDeps.add('sass-loader');
133264
+ usedIntegrations.push('Sass');
133265
+ }
133266
+ if (usesLess && !canResolve('less-loader')) {
133267
+ if (!canResolve('less')) missingOptionalDeps.add('less');
133268
+ missingOptionalDeps.add('less-loader');
133269
+ usedIntegrations.push('Less');
133270
+ }
133271
+ if (usesPostCss && !canResolve('postcss-loader') && !usesSass && !usesLess) {
133272
+ if (!canResolve('postcss')) missingOptionalDeps.add('postcss');
133273
+ missingOptionalDeps.add('postcss-loader');
133274
+ usedIntegrations.push('PostCSS');
133275
+ }
133276
+ if (missingOptionalDeps.size > 0) {
133277
+ const uniqueIntegrations = Array.from(new Set(usedIntegrations));
133278
+ await (0, integrations.Dy)('Optional', Array.from(missingOptionalDeps), uniqueIntegrations);
133279
+ if (opts?.showRunAgainMessage !== false) console.log(js_frameworks_lib_messages.Q2(uniqueIntegrations));
133280
+ if (opts?.exitOnInstall !== false) process.exit(0);
133281
+ }
133282
+ writePreflightMarker(projectPath);
133283
+ }
133284
+ function shouldRunOptionalPreflight(projectStructure) {
133285
+ const { packageJsonDir } = (0, paths.fu)(projectStructure);
133286
+ const projectPath = packageJsonDir;
133287
+ return !hasPreflightMarker(projectPath);
133288
+ }
133289
+ async function ensureProjectReady(projectStructure, mode, opts) {
133290
+ const { packageJsonDir } = (0, paths.fu)(projectStructure);
133291
+ const result = await ensureDependencies(packageJsonDir, opts);
133292
+ if (shouldRunOptionalPreflight(projectStructure)) await preflightOptionalDependencies(projectStructure, mode, {
133293
+ exitOnInstall: opts?.exitOnInstall
133294
+ });
133295
+ return result;
133296
+ }
133024
133297
  async function extensionBuild(pathOrRemoteUrl, buildOptions) {
133025
133298
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133026
133299
  const isVitest = 'true' === process.env.VITEST;
@@ -133028,7 +133301,7 @@ var __webpack_exports__ = {};
133028
133301
  const browser = (0, paths.YN)(buildOptions?.browser || 'chrome', buildOptions?.chromiumBinary, buildOptions?.geckoBinary || buildOptions?.firefoxBinary);
133029
133302
  const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133030
133303
  try {
133031
- const depsResult = await ensureDependencies(packageJsonDir, {
133304
+ const depsResult = await ensureProjectReady(projectStructure, 'production', {
133032
133305
  skipProjectInstall: isVitest || !projectStructure.packageJsonPath,
133033
133306
  exitOnInstall: true
133034
133307
  });
@@ -133040,7 +133313,6 @@ var __webpack_exports__ = {};
133040
133313
  warnings_count: 0,
133041
133314
  errors_count: 0
133042
133315
  };
133043
- await preflightOptionalDependencies(projectStructure, 'production');
133044
133316
  const [{ rspack }, { merge }, { handleStatsErrors }, { default: webpackConfig }] = await Promise.all([
133045
133317
  import("@rspack/core"),
133046
133318
  import("webpack-merge"),
@@ -133150,12 +133422,11 @@ var __webpack_exports__ = {};
133150
133422
  try {
133151
133423
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
133152
133424
  const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133153
- const depsResult = await ensureDependencies(packageJsonDir, {
133425
+ const depsResult = await ensureProjectReady(projectStructure, 'development', {
133154
133426
  skipProjectInstall: !projectStructure.packageJsonPath,
133155
133427
  exitOnInstall: true
133156
133428
  });
133157
133429
  if (depsResult.installed) return;
133158
- await preflightOptionalDependencies(projectStructure, 'development');
133159
133430
  if ((0, typescript.eE)(manifestDir)) await generateExtensionTypes(manifestDir, packageJsonDir);
133160
133431
  if (projectStructure.packageJsonPath) assertNoManagedDependencyConflicts(projectStructure.packageJsonPath, manifestDir);
133161
133432
  const browser = (0, paths.YN)(devOptions.browser || 'chrome', devOptions.chromiumBinary, devOptions.geckoBinary || devOptions.firefoxBinary);
@@ -133192,6 +133463,15 @@ var __webpack_exports__ = {};
133192
133463
  var firefox_launch = __webpack_require__("./webpack/plugin-browsers/run-firefox/firefox-launch/index.ts");
133193
133464
  async function runOnlyPreviewBrowser(opts) {
133194
133465
  const sourceEnabled = false;
133466
+ let exitScheduled = false;
133467
+ const scheduleExitOnSignal = ()=>{
133468
+ if (exitScheduled) return;
133469
+ exitScheduled = true;
133470
+ setTimeout(()=>process.exit(0), 10);
133471
+ };
133472
+ process.once('SIGINT', scheduleExitOnSignal);
133473
+ process.once('SIGTERM', scheduleExitOnSignal);
133474
+ process.once('SIGHUP', scheduleExitOnSignal);
133195
133475
  const compilationLike = {
133196
133476
  options: {
133197
133477
  mode: 'production',
@@ -133312,6 +133592,11 @@ var __webpack_exports__ = {};
133312
133592
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133313
133593
  try {
133314
133594
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
133595
+ const depsResult = await ensureProjectReady(projectStructure, 'development', {
133596
+ skipProjectInstall: !projectStructure.packageJsonPath,
133597
+ exitOnInstall: true
133598
+ });
133599
+ if (depsResult.installed) return;
133315
133600
  const browser = (0, paths.YN)(startOptions.browser || 'chrome', startOptions.chromiumBinary, startOptions.geckoBinary || startOptions.firefoxBinary);
133316
133601
  const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133317
133602
  const commandConfig = await (0, config_loader.eY)(packageJsonDir, 'start');
@@ -133342,18 +133627,27 @@ var __webpack_exports__ = {};
133342
133627
  process.exit(1);
133343
133628
  }
133344
133629
  }
133630
+ async function preflightOptionalDependenciesForProject(pathOrRemoteUrl, mode = 'development') {
133631
+ const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133632
+ await preflightOptionalDependencies(projectStructure, mode, {
133633
+ exitOnInstall: false,
133634
+ showRunAgainMessage: false
133635
+ });
133636
+ }
133345
133637
  })();
133346
133638
  exports.ensureDependencies = __webpack_exports__.ensureDependencies;
133347
133639
  exports.extensionBuild = __webpack_exports__.extensionBuild;
133348
133640
  exports.extensionDev = __webpack_exports__.extensionDev;
133349
133641
  exports.extensionPreview = __webpack_exports__.extensionPreview;
133350
133642
  exports.extensionStart = __webpack_exports__.extensionStart;
133643
+ exports.preflightOptionalDependenciesForProject = __webpack_exports__.preflightOptionalDependenciesForProject;
133351
133644
  for(var __rspack_i in __webpack_exports__)if (-1 === [
133352
133645
  "ensureDependencies",
133353
133646
  "extensionBuild",
133354
133647
  "extensionDev",
133355
133648
  "extensionPreview",
133356
- "extensionStart"
133649
+ "extensionStart",
133650
+ "preflightOptionalDependenciesForProject"
133357
133651
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
133358
133652
  Object.defineProperty(exports, '__esModule', {
133359
133653
  value: true