extension-develop 3.1.0-next.7 → 3.1.1

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 (32) 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 +506 -186
  21. package/package.json +1 -1
  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
  29. package/dist/extension-js-theme/chrome/manifest.json +0 -65
  30. package/dist/extension-js-theme/chromium/manifest.json +0 -65
  31. package/dist/extension-js-theme/edge/manifest.json +0 -65
  32. package/dist/extension-js-theme/firefox/manifest.json +0 -6
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,8 +130585,9 @@ 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");
@@ -130584,31 +130607,79 @@ var __webpack_modules__ = {
130584
130607
  if (process.env['npm_execpath']) return 'npm';
130585
130608
  return false;
130586
130609
  }
130610
+ function getPackageManagerFromEnv() {
130611
+ const ua = process.env.npm_config_user_agent;
130612
+ if (!ua) return;
130613
+ if (ua.includes('pnpm')) return 'pnpm';
130614
+ if (ua.includes('yarn')) return 'yarn';
130615
+ if (ua.includes('bun')) return 'bun';
130616
+ if (ua.includes('npm')) return 'npm';
130617
+ }
130618
+ async function resolvePackageManager() {
130619
+ const envPm = getPackageManagerFromEnv();
130620
+ if (envPm) return envPm;
130621
+ return (0, package_manager_detector__rspack_import_4.detect)();
130622
+ }
130623
+ function getOptionalInstallCommand(pm, dependencies) {
130624
+ const quotedDir = JSON.stringify(__dirname);
130625
+ const pmName = 'string' == typeof pm ? pm : pm?.name;
130626
+ if ('yarn' === pmName) return `yarn --silent add ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130627
+ if ('npm' === pmName || isFromNpx()) return `npm --silent install ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130628
+ if (isFromPnpx()) return `pnpm --silent add ${dependencies.join(' ')} --prefix ${quotedDir} --save-optional`;
130629
+ const fallback = pmName || 'npm';
130630
+ return `${fallback} --silent install ${dependencies.join(' ')} --cwd ${quotedDir} --optional`;
130631
+ }
130632
+ function getRootInstallCommand(pm) {
130633
+ const pmName = 'string' == typeof pm ? pm : pm?.name;
130634
+ if ('yarn' === pmName) return "yarn install --silent";
130635
+ if ('npm' === pmName || isFromNpx()) return "npm install --silent";
130636
+ if (isFromPnpx()) return "pnpm install --silent";
130637
+ return `${pmName || 'npm'} install --silent`;
130638
+ }
130639
+ function formatToolingLabel(integrations, fallback) {
130640
+ const list = integrations && integrations.length > 0 ? integrations.join('/') : fallback;
130641
+ return `Setting up ${list} tooling...`;
130642
+ }
130587
130643
  async function installOptionalDependencies(integration, dependencies) {
130644
+ if (!dependencies.length) return;
130588
130645
  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`;
130646
+ const pm = await resolvePackageManager();
130647
+ const installCommand = getOptionalInstallCommand(pm, dependencies);
130648
+ console.log(formatToolingLabel([
130649
+ integration
130650
+ ], integration));
130651
+ (0, child_process__rspack_import_2.execSync)(installCommand, {
130652
+ stdio: 'inherit'
130653
+ });
130654
+ await new Promise((r)=>setTimeout(r, 500));
130655
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) {
130656
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} [${integration}] Installing root dependencies for dev...`);
130657
+ (0, child_process__rspack_import_2.execSync)(getRootInstallCommand(pm), {
130658
+ stdio: 'ignore'
130659
+ });
130660
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} ${integration} tooling ready.`);
130598
130661
  }
130599
- console.log(`[${integration}] Installing optional dependencies...`);
130662
+ } catch (error) {
130663
+ console.error(`[${integration}] Failed to install dependencies.`, error);
130664
+ }
130665
+ }
130666
+ async function installOptionalDependenciesBatch(integration, dependencies, integrations) {
130667
+ if (!dependencies.length) return;
130668
+ try {
130669
+ const pm = await resolvePackageManager();
130670
+ const installCommand = getOptionalInstallCommand(pm, dependencies);
130671
+ console.log(formatToolingLabel(integrations, integration));
130600
130672
  (0, child_process__rspack_import_2.execSync)(installCommand, {
130601
130673
  stdio: 'inherit'
130602
130674
  });
130603
130675
  await new Promise((r)=>setTimeout(r, 500));
130604
130676
  if ('true' === process.env.EXTENSION_AUTHOR_MODE) {
130605
130677
  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, {
130678
+ (0, child_process__rspack_import_2.execSync)(getRootInstallCommand(pm), {
130608
130679
  stdio: 'ignore'
130609
130680
  });
130681
+ console.log(`${pintor__rspack_import_3_default().brightMagenta('►►► Author says')} ${integration} tooling ready.`);
130610
130682
  }
130611
- console.log(`[${integration}] Dependencies installed successfully.`);
130612
130683
  } catch (error) {
130613
130684
  console.error(`[${integration}] Failed to install dependencies.`, error);
130614
130685
  }
@@ -130714,7 +130785,7 @@ var __webpack_modules__ = {
130714
130785
  var _css_lib_is_content_script__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/is-content-script.ts");
130715
130786
  let userMessageDelivered = false;
130716
130787
  function isUsingLess(projectPath) {
130717
- if ((0, _css_lib_integrations__rspack_import_3.w)(projectPath, 'less')) {
130788
+ if ((0, _css_lib_integrations__rspack_import_3.ws)(projectPath, 'less')) {
130718
130789
  if (!userMessageDelivered) {
130719
130790
  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
130791
  userMessageDelivered = true;
@@ -130733,7 +130804,7 @@ var __webpack_modules__ = {
130733
130804
  'less',
130734
130805
  'less-loader'
130735
130806
  ];
130736
- await (0, _css_lib_integrations__rspack_import_3.t)('LESS', lessDependencies);
130807
+ await (0, _css_lib_integrations__rspack_import_3.tm)('LESS', lessDependencies);
130737
130808
  console.log(_css_lib_messages__rspack_import_2.Jv('LESS'));
130738
130809
  process.exit(0);
130739
130810
  }
@@ -130808,7 +130879,7 @@ var __webpack_modules__ = {
130808
130879
  }
130809
130880
  }
130810
130881
  function isUsingPostCss(projectPath) {
130811
- if ((0, _css_lib_integrations__rspack_import_5.w)(projectPath, 'postcss')) {
130882
+ if ((0, _css_lib_integrations__rspack_import_5.ws)(projectPath, 'postcss')) {
130812
130883
  if (!userMessageDelivered) {
130813
130884
  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
130885
  userMessageDelivered = true;
@@ -130858,7 +130929,7 @@ var __webpack_modules__ = {
130858
130929
  'postcss',
130859
130930
  'postcss-loader'
130860
130931
  ];
130861
- await (0, _css_lib_integrations__rspack_import_5.t)('PostCSS', postCssDependencies);
130932
+ await (0, _css_lib_integrations__rspack_import_5.tm)('PostCSS', postCssDependencies);
130862
130933
  }
130863
130934
  console.log(_css_lib_messages__rspack_import_4.Jv('PostCSS'));
130864
130935
  process.exit(0);
@@ -130930,7 +131001,7 @@ var __webpack_modules__ = {
130930
131001
  var _css_lib_integrations__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
130931
131002
  let userMessageDelivered = false;
130932
131003
  function isUsingSass(projectPath) {
130933
- if ((0, _css_lib_integrations__rspack_import_4.w)(projectPath, 'sass')) {
131004
+ if ((0, _css_lib_integrations__rspack_import_4.ws)(projectPath, 'sass')) {
130934
131005
  if (!userMessageDelivered) {
130935
131006
  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
131007
  userMessageDelivered = true;
@@ -130981,11 +131052,11 @@ var __webpack_modules__ = {
130981
131052
  'postcss-scss',
130982
131053
  'postcss-preset-env'
130983
131054
  ];
130984
- await (0, _css_lib_integrations__rspack_import_4.t)('PostCSS', postCssDependencies);
131055
+ await (0, _css_lib_integrations__rspack_import_4.tm)('PostCSS', postCssDependencies);
130985
131056
  const sassDependencies = [
130986
131057
  'sass-loader'
130987
131058
  ];
130988
- await (0, _css_lib_integrations__rspack_import_4.t)('SASS', sassDependencies);
131059
+ await (0, _css_lib_integrations__rspack_import_4.tm)('SASS', sassDependencies);
130989
131060
  console.log(_css_lib_messages__rspack_import_3.Jv('SASS'));
130990
131061
  process.exit(0);
130991
131062
  }
@@ -131026,7 +131097,7 @@ var __webpack_modules__ = {
131026
131097
  var _css_lib_integrations__rspack_import_4 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
131027
131098
  let userMessageDelivered = false;
131028
131099
  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');
131100
+ const isUsingTailwind = (0, _css_lib_integrations__rspack_import_4.ws)(projectPath, 'tailwindcss') || (0, _css_lib_integrations__rspack_import_4.ws)(projectPath, '@tailwindcss/postcss');
131030
131101
  if (isUsingTailwind) {
131031
131102
  if (!userMessageDelivered) {
131032
131103
  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 +131118,10 @@ var __webpack_modules__ = {
131047
131118
  "./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131048
131119
  "use strict";
131049
131120
  __webpack_require__.d(__webpack_exports__, {
131121
+ Dy: ()=>_plugin_css_css_lib_integrations__rspack_import_0.Dy,
131050
131122
  qQ: ()=>isUsingJSFramework,
131051
- tm: ()=>_plugin_css_css_lib_integrations__rspack_import_0.t,
131052
- ws: ()=>_plugin_css_css_lib_integrations__rspack_import_0.w
131123
+ tm: ()=>_plugin_css_css_lib_integrations__rspack_import_0.tm,
131124
+ ws: ()=>_plugin_css_css_lib_integrations__rspack_import_0.ws
131053
131125
  });
131054
131126
  var _plugin_css_css_lib_integrations__rspack_import_0 = __webpack_require__("./webpack/plugin-css/css-lib/integrations.ts");
131055
131127
  function isUsingJSFramework(projectPath) {
@@ -131061,7 +131133,7 @@ var __webpack_modules__ = {
131061
131133
  'solid-js',
131062
131134
  'preact'
131063
131135
  ];
131064
- return frameworks.some((fw)=>__webpack_require__("./webpack/plugin-css/css-lib/integrations.ts").w(projectPath, fw));
131136
+ return frameworks.some((fw)=>__webpack_require__("./webpack/plugin-css/css-lib/integrations.ts").ws(projectPath, fw));
131065
131137
  }
131066
131138
  },
131067
131139
  "./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -131114,6 +131186,7 @@ var __webpack_modules__ = {
131114
131186
  Jv: ()=>youAreAllSet,
131115
131187
  LR: ()=>creatingTSConfig,
131116
131188
  MH: ()=>jsFrameworksConfigsDetected,
131189
+ Q2: ()=>optionalDepsReady,
131117
131190
  Ty: ()=>isUsingCustomLoader,
131118
131191
  jH: ()=>jsFrameworksIntegrationsEnabled,
131119
131192
  zA: ()=>isUsingIntegration
@@ -131126,6 +131199,10 @@ var __webpack_modules__ = {
131126
131199
  function youAreAllSet(name) {
131127
131200
  return `${pintor__rspack_import_0_default().green('►►►')} ${name} installation completed. Run again to proceed.`;
131128
131201
  }
131202
+ function optionalDepsReady(integrations) {
131203
+ const list = integrations.length > 0 ? integrations.map((name)=>pintor__rspack_import_0_default().yellow(name)).join(', ') : pintor__rspack_import_0_default().gray('optional');
131204
+ return `${pintor__rspack_import_0_default().green('►►►')} All set — ${list} tooling is ready.`;
131205
+ }
131129
131206
  function creatingTSConfig() {
131130
131207
  return `${pintor__rspack_import_0_default().gray('►►►')} Creating default tsconfig.json...`;
131131
131208
  }
@@ -131294,7 +131371,8 @@ var __webpack_modules__ = {
131294
131371
  "./webpack/plugin-js-frameworks/js-tools/svelte.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131295
131372
  "use strict";
131296
131373
  __webpack_require__.d(__webpack_exports__, {
131297
- X: ()=>maybeUseSvelte
131374
+ X: ()=>maybeUseSvelte,
131375
+ a: ()=>isUsingSvelte
131298
131376
  });
131299
131377
  var path__rspack_import_0 = __webpack_require__("path");
131300
131378
  var _js_frameworks_lib_messages__rspack_import_1 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
@@ -131434,8 +131512,7 @@ var __webpack_modules__ = {
131434
131512
  "use strict";
131435
131513
  __webpack_require__.d(__webpack_exports__, {
131436
131514
  eE: ()=>isUsingTypeScript,
131437
- hB: ()=>getUserTypeScriptConfigFile,
131438
- vv: ()=>maybeUseTypeScript
131515
+ hB: ()=>getUserTypeScriptConfigFile
131439
131516
  });
131440
131517
  var path__rspack_import_0 = __webpack_require__("path");
131441
131518
  var fs__rspack_import_1 = __webpack_require__("fs");
@@ -131460,16 +131537,22 @@ var __webpack_modules__ = {
131460
131537
  const entries = fs__rspack_import_1.readdirSync(projectPath, {
131461
131538
  withFileTypes: true
131462
131539
  });
131463
- return entries.some((e)=>{
131464
- if (e.isFile()) return /\.(ts|tsx|mts|mtsx)$/i.test(e.name);
131465
- if (e.isDirectory()) {
131540
+ return entries.some((entry)=>{
131541
+ if (entry.isFile()) {
131542
+ const name = entry.name;
131543
+ if (!/\.(ts|tsx|mts|mtsx)$/i.test(name)) return false;
131544
+ if (/\.(d\.ts|d\.mts|d\.mtsx)$/i.test(name)) return false;
131545
+ if (/\.(spec|test)\.(ts|tsx|mts|mtsx)$/i.test(name)) return false;
131546
+ return true;
131547
+ }
131548
+ if (entry.isDirectory()) {
131466
131549
  if (![
131467
131550
  'src',
131468
131551
  'content',
131469
131552
  'sidebar',
131470
131553
  'background'
131471
- ].includes(e.name)) return false;
131472
- const sub = path__rspack_import_0.join(projectPath, e.name);
131554
+ ].includes(entry.name)) return false;
131555
+ const sub = path__rspack_import_0.join(projectPath, entry.name);
131473
131556
  return hasTypeScriptSourceFiles(sub);
131474
131557
  }
131475
131558
  return false;
@@ -131542,31 +131625,19 @@ var __webpack_modules__ = {
131542
131625
  mode: 'development'
131543
131626
  }), null, 2));
131544
131627
  }
131545
- async function maybeUseTypeScript(projectPath) {
131546
- if (!isUsingTypeScript(projectPath)) return false;
131547
- try {
131548
- require.resolve("typescript");
131549
- } catch (e) {
131550
- const typescriptDependencies = [
131551
- "typescript"
131552
- ];
131553
- await (0, _frameworks_lib_integrations__rspack_import_4.tm)('TypeScript', typescriptDependencies);
131554
- console.log(_js_frameworks_lib_messages__rspack_import_3.Jv('TypeScript'));
131555
- process.exit(0);
131556
- }
131557
- return true;
131558
- }
131559
131628
  },
131560
131629
  "./webpack/plugin-js-frameworks/js-tools/vue.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
131561
131630
  "use strict";
131562
131631
  __webpack_require__.d(__webpack_exports__, {
131563
- K: ()=>maybeUseVue
131632
+ K: ()=>maybeUseVue,
131633
+ L: ()=>isUsingVue
131564
131634
  });
131565
- var pintor__rspack_import_0 = __webpack_require__("pintor");
131566
- var pintor__rspack_import_0_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_0);
131567
- var _js_frameworks_lib_messages__rspack_import_1 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
131568
- var _frameworks_lib_integrations__rspack_import_2 = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
131569
- var _js_frameworks_lib_load_loader_options__rspack_import_3 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts");
131635
+ var _rspack_core__rspack_import_0 = __webpack_require__("@rspack/core");
131636
+ var pintor__rspack_import_1 = __webpack_require__("pintor");
131637
+ var pintor__rspack_import_1_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_1);
131638
+ var _js_frameworks_lib_messages__rspack_import_2 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
131639
+ var _frameworks_lib_integrations__rspack_import_3 = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
131640
+ var _js_frameworks_lib_load_loader_options__rspack_import_4 = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/load-loader-options.ts");
131570
131641
  let userMessageDelivered = false;
131571
131642
  let cachedVueLoaderPlugin;
131572
131643
  function getVueLoaderPlugin() {
@@ -131581,14 +131652,14 @@ var __webpack_modules__ = {
131581
131652
  } catch {}
131582
131653
  }
131583
131654
  function isUsingVue(projectPath) {
131584
- const using = (0, _frameworks_lib_integrations__rspack_import_2.ws)(projectPath, 'vue');
131655
+ const using = (0, _frameworks_lib_integrations__rspack_import_3.ws)(projectPath, 'vue');
131585
131656
  if (using && !userMessageDelivered) {
131586
- 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')}`);
131657
+ 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')}`);
131587
131658
  userMessageDelivered = true;
131588
131659
  }
131589
131660
  return using;
131590
131661
  }
131591
- async function maybeUseVue(projectPath) {
131662
+ async function maybeUseVue(projectPath, mode = 'development') {
131592
131663
  if (!isUsingVue(projectPath)) return;
131593
131664
  try {
131594
131665
  require.resolve('vue-loader');
@@ -131597,13 +131668,13 @@ var __webpack_modules__ = {
131597
131668
  'vue-loader',
131598
131669
  '@vue/compiler-sfc'
131599
131670
  ];
131600
- await (0, _frameworks_lib_integrations__rspack_import_2.tm)('Vue', vueDependencies);
131601
- console.log(_js_frameworks_lib_messages__rspack_import_1.Jv('Vue'));
131671
+ await (0, _frameworks_lib_integrations__rspack_import_3.tm)('Vue', vueDependencies);
131672
+ console.log(_js_frameworks_lib_messages__rspack_import_2.Jv('Vue'));
131602
131673
  process.exit(0);
131603
131674
  }
131604
131675
  const VueLoaderPlugin = getVueLoaderPlugin();
131605
131676
  if (!VueLoaderPlugin) throw new Error('[Vue] vue-loader is installed but VueLoaderPlugin could not be resolved.');
131606
- const customOptions = await (0, _js_frameworks_lib_load_loader_options__rspack_import_3.g)(projectPath, 'vue');
131677
+ const customOptions = await (0, _js_frameworks_lib_load_loader_options__rspack_import_4.g)(projectPath, 'vue');
131607
131678
  const defaultLoaders = [
131608
131679
  {
131609
131680
  test: /\.vue$/,
@@ -131616,8 +131687,14 @@ var __webpack_modules__ = {
131616
131687
  exclude: /node_modules/
131617
131688
  }
131618
131689
  ];
131690
+ const isProd = 'production' === mode;
131619
131691
  const defaultPlugins = [
131620
- new VueLoaderPlugin()
131692
+ new VueLoaderPlugin(),
131693
+ new _rspack_core__rspack_import_0.DefinePlugin({
131694
+ __VUE_OPTIONS_API__: JSON.stringify(true),
131695
+ __VUE_PROD_DEVTOOLS__: JSON.stringify(!isProd),
131696
+ __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(!isProd)
131697
+ })
131621
131698
  ];
131622
131699
  return {
131623
131700
  plugins: defaultPlugins,
@@ -132006,6 +132083,7 @@ var __webpack_modules__ = {
132006
132083
  Cf: ()=>buildSuccess,
132007
132084
  F$: ()=>downloadingProjectPath,
132008
132085
  F_: ()=>packagingDistributionFiles,
132086
+ G2: ()=>installingRequiredDependencies,
132009
132087
  GW: ()=>failedToDownloadOrExtractZIPFileError,
132010
132088
  H3: ()=>managedDependencyConflict,
132011
132089
  I: ()=>buildWebpack,
@@ -132016,9 +132094,9 @@ var __webpack_modules__ = {
132016
132094
  Ud: ()=>downloadingText,
132017
132095
  Ut: ()=>treeWithDistFilesbrowser,
132018
132096
  V_: ()=>previewing,
132019
- Vy: ()=>installingDependencies,
132020
132097
  W4: ()=>creatingProjectPath,
132021
132098
  W6: ()=>treeWithSourceAndDistFiles,
132099
+ Z0: ()=>dependenciesInstalledRunAgain,
132022
132100
  _A: ()=>debugBrowser,
132023
132101
  aw: ()=>debugContextPath,
132024
132102
  ax: ()=>downloadedProjectFolderNotFound,
@@ -132090,6 +132168,12 @@ var __webpack_modules__ = {
132090
132168
  function previewing(browser) {
132091
132169
  return `${getLoggingPrefix('info')} Previewing the extension on ${capitalizedBrowserName(browser)}...`;
132092
132170
  }
132171
+ function installingRequiredDependencies() {
132172
+ return `${getLoggingPrefix('info')} Installing required dependencies...`;
132173
+ }
132174
+ function dependenciesInstalledRunAgain() {
132175
+ return `${getLoggingPrefix('success')} Dependencies installed. Run the command again to proceed.`;
132176
+ }
132093
132177
  function buildWebpack(projectDir, stats, browser) {
132094
132178
  const statsJson = stats?.toJson();
132095
132179
  const manifestPath = path__rspack_import_1.join(projectDir, 'manifest.json');
@@ -132217,9 +132301,6 @@ var __webpack_modules__ = {
132217
132301
  function isUsingExperimentalConfig(integration) {
132218
132302
  return `${getLoggingPrefix('info')} Using ${pintor__rspack_import_2_default().yellow(integration)}.`;
132219
132303
  }
132220
- function installingDependencies() {
132221
- return `${getLoggingPrefix('info')} Installing project dependencies...`;
132222
- }
132223
132304
  function debugDirs(manifestDir, packageJsonDir) {
132224
132305
  return `${getLoggingPrefix('info')} Directories\n${pintor__rspack_import_2_default().gray('MANIFEST_DIR')} ${pintor__rspack_import_2_default().underline(manifestDir)}\n${pintor__rspack_import_2_default().gray('PACKAGE_JSON_DIR')} ${pintor__rspack_import_2_default().underline(packageJsonDir)}`;
132225
132306
  }
@@ -132503,7 +132584,7 @@ var __webpack_modules__ = {
132503
132584
  },
132504
132585
  "./package.json" (module) {
132505
132586
  "use strict";
132506
- module.exports = JSON.parse('{"rE":"3.1.0-next.7","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"}}');
132587
+ module.exports = JSON.parse('{"rE":"3.1.1","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"}}');
132507
132588
  }
132508
132589
  };
132509
132590
  var __webpack_module_cache__ = {};
@@ -132578,9 +132659,22 @@ var __webpack_exports__ = {};
132578
132659
  __webpack_require__.d(__webpack_exports__, {
132579
132660
  extensionDev: ()=>extensionDev,
132580
132661
  extensionStart: ()=>extensionStart,
132662
+ ensureDependencies: ()=>ensureDependencies,
132581
132663
  extensionPreview: ()=>extensionPreview,
132582
- extensionBuild: ()=>extensionBuild
132664
+ extensionBuild: ()=>extensionBuild,
132665
+ preflightOptionalDependenciesForProject: ()=>preflightOptionalDependenciesForProject
132583
132666
  });
132667
+ function getBuildSummary(browser, info) {
132668
+ const assets = info?.assets || [];
132669
+ return {
132670
+ browser,
132671
+ total_assets: assets.length,
132672
+ total_bytes: assets.reduce((n, a)=>n + (a.size || 0), 0),
132673
+ largest_asset_bytes: assets.reduce((m, a)=>Math.max(m, a.size || 0), 0),
132674
+ warnings_count: (info?.warnings || []).length,
132675
+ errors_count: (info?.errors || []).length
132676
+ };
132677
+ }
132584
132678
  var external_path_ = __webpack_require__("path");
132585
132679
  var external_fs_ = __webpack_require__("fs");
132586
132680
  var messages = __webpack_require__("./webpack/webpack-lib/messages.ts");
@@ -132770,62 +132864,6 @@ var __webpack_exports__ = {};
132770
132864
  };
132771
132865
  }
132772
132866
  var config_loader = __webpack_require__("./webpack/webpack-lib/config-loader.ts");
132773
- const external_cross_spawn_namespaceObject = require("cross-spawn");
132774
- var external_package_manager_detector_ = __webpack_require__("package-manager-detector");
132775
- async function getInstallCommand() {
132776
- const cwd = process.cwd();
132777
- const hasPnpmLock = external_fs_.existsSync(external_path_.join(cwd, 'pnpm-lock.yaml'));
132778
- const hasYarnLock = external_fs_.existsSync(external_path_.join(cwd, 'yarn.lock'));
132779
- const hasNpmLock = external_fs_.existsSync(external_path_.join(cwd, 'package-lock.json'));
132780
- if (hasPnpmLock) return 'pnpm';
132781
- if (hasYarnLock) return 'yarn';
132782
- if (hasNpmLock) return 'npm';
132783
- const pm = await (0, external_package_manager_detector_.detect)({
132784
- cwd
132785
- });
132786
- if (pm?.name === 'yarn') return 'yarn';
132787
- if (pm?.name === 'pnpm') return 'pnpm';
132788
- return 'npm';
132789
- }
132790
- function getInstallArgs() {
132791
- return [
132792
- 'install'
132793
- ];
132794
- }
132795
- async function installDependencies(projectPath) {
132796
- const nodeModulesPath = external_path_.join(projectPath, 'node_modules');
132797
- const originalDirectory = process.cwd();
132798
- try {
132799
- process.chdir(projectPath);
132800
- const command = await getInstallCommand();
132801
- let dependenciesArgs = getInstallArgs();
132802
- if ('npm' === command) dependenciesArgs = [
132803
- ...dependenciesArgs,
132804
- '--include=dev'
132805
- ];
132806
- await external_fs_.promises.mkdir(nodeModulesPath, {
132807
- recursive: true
132808
- });
132809
- const stdio = 'true' === process.env.EXTENSION_AUTHOR_MODE ? 'inherit' : 'ignore';
132810
- const child = (0, external_cross_spawn_namespaceObject.spawn)(command, dependenciesArgs, {
132811
- stdio
132812
- });
132813
- await new Promise((resolve, reject)=>{
132814
- child.on('close', (code)=>{
132815
- if (0 !== code) reject(new Error(messages.Ke(command, dependenciesArgs, code)));
132816
- else resolve();
132817
- });
132818
- child.on('error', (error)=>{
132819
- reject(error);
132820
- });
132821
- });
132822
- } catch (error) {
132823
- console.error(messages.RB(error));
132824
- process.exit(1);
132825
- } finally{
132826
- process.chdir(originalDirectory);
132827
- }
132828
- }
132829
132867
  var package_0 = __webpack_require__("./package.json");
132830
132868
  function assertNoManagedDependencyConflicts(userPackageJsonPath, projectPath) {
132831
132869
  try {
@@ -132858,17 +132896,6 @@ var __webpack_exports__ = {};
132858
132896
  }
132859
132897
  }
132860
132898
  var paths = __webpack_require__("./webpack/webpack-lib/paths.ts");
132861
- function getBuildSummary(browser, info) {
132862
- const assets = info?.assets || [];
132863
- return {
132864
- browser,
132865
- total_assets: assets.length,
132866
- total_bytes: assets.reduce((n, a)=>n + (a.size || 0), 0),
132867
- largest_asset_bytes: assets.reduce((m, a)=>Math.max(m, a.size || 0), 0),
132868
- warnings_count: (info?.warnings || []).length,
132869
- errors_count: (info?.errors || []).length
132870
- };
132871
- }
132872
132899
  function findExtensionDevelopRoot() {
132873
132900
  const webpackLibDir = __dirname;
132874
132901
  const webpackDir = external_path_.resolve(webpackLibDir, '..');
@@ -132902,7 +132929,9 @@ var __webpack_exports__ = {};
132902
132929
  const dependencies = loadBuildDependencies();
132903
132930
  return Object.keys(dependencies).filter((dep)=>!isDependencyInstalled(dep, packageRoot));
132904
132931
  }
132905
- async function install_own_dependencies_getInstallCommand(packageRoot) {
132932
+ const external_cross_spawn_namespaceObject = require("cross-spawn");
132933
+ var external_package_manager_detector_ = __webpack_require__("package-manager-detector");
132934
+ async function getInstallCommand(packageRoot) {
132906
132935
  const hasPnpmLock = external_fs_.existsSync(external_path_.join(packageRoot, 'pnpm-lock.yaml'));
132907
132936
  const hasYarnLock = external_fs_.existsSync(external_path_.join(packageRoot, 'yarn.lock'));
132908
132937
  const hasNpmLock = external_fs_.existsSync(external_path_.join(packageRoot, 'package-lock.json'));
@@ -132916,7 +132945,7 @@ var __webpack_exports__ = {};
132916
132945
  if (pm?.name === 'pnpm') return 'pnpm';
132917
132946
  return 'npm';
132918
132947
  }
132919
- function install_own_dependencies_getInstallArgs(command, dependencies, dependenciesMap) {
132948
+ function getInstallArgs(command, dependencies, dependenciesMap) {
132920
132949
  const depsWithVersions = dependencies.map((dep)=>`${dep}@${dependenciesMap[dep]}`);
132921
132950
  if ('pnpm' === command) return [
132922
132951
  'add',
@@ -132942,8 +132971,8 @@ var __webpack_exports__ = {};
132942
132971
  const originalDirectory = process.cwd();
132943
132972
  try {
132944
132973
  process.chdir(packageRoot);
132945
- const command = await install_own_dependencies_getInstallCommand(packageRoot);
132946
- const installArgs = install_own_dependencies_getInstallArgs(command, dependencies, dependenciesMap);
132974
+ const command = await getInstallCommand(packageRoot);
132975
+ const installArgs = getInstallArgs(command, dependencies, dependenciesMap);
132947
132976
  const stdio = 'true' === process.env.EXTENSION_AUTHOR_MODE ? 'inherit' : 'ignore';
132948
132977
  console.log(`Installing build dependencies: ${dependencies.join(', ')}`);
132949
132978
  const child = (0, external_cross_spawn_namespaceObject.spawn)(command, installArgs, {
@@ -132966,40 +132995,325 @@ var __webpack_exports__ = {};
132966
132995
  process.chdir(originalDirectory);
132967
132996
  }
132968
132997
  }
132998
+ async function install_dependencies_getInstallCommand() {
132999
+ const cwd = process.cwd();
133000
+ const hasPnpmLock = external_fs_.existsSync(external_path_.join(cwd, 'pnpm-lock.yaml'));
133001
+ const hasYarnLock = external_fs_.existsSync(external_path_.join(cwd, 'yarn.lock'));
133002
+ const hasNpmLock = external_fs_.existsSync(external_path_.join(cwd, 'package-lock.json'));
133003
+ if (hasPnpmLock) return 'pnpm';
133004
+ if (hasYarnLock) return 'yarn';
133005
+ if (hasNpmLock) return 'npm';
133006
+ const pm = await (0, external_package_manager_detector_.detect)({
133007
+ cwd
133008
+ });
133009
+ if (pm?.name === 'yarn') return 'yarn';
133010
+ if (pm?.name === 'pnpm') return 'pnpm';
133011
+ return 'npm';
133012
+ }
133013
+ function install_dependencies_getInstallArgs() {
133014
+ return [
133015
+ 'install'
133016
+ ];
133017
+ }
133018
+ async function installDependencies(projectPath) {
133019
+ const nodeModulesPath = external_path_.join(projectPath, 'node_modules');
133020
+ const originalDirectory = process.cwd();
133021
+ try {
133022
+ process.chdir(projectPath);
133023
+ const command = await install_dependencies_getInstallCommand();
133024
+ let dependenciesArgs = install_dependencies_getInstallArgs();
133025
+ if ('npm' === command) dependenciesArgs = [
133026
+ ...dependenciesArgs,
133027
+ '--include=dev'
133028
+ ];
133029
+ await external_fs_.promises.mkdir(nodeModulesPath, {
133030
+ recursive: true
133031
+ });
133032
+ const stdio = 'true' === process.env.EXTENSION_AUTHOR_MODE ? 'inherit' : 'ignore';
133033
+ const child = (0, external_cross_spawn_namespaceObject.spawn)(command, dependenciesArgs, {
133034
+ stdio
133035
+ });
133036
+ await new Promise((resolve, reject)=>{
133037
+ child.on('close', (code)=>{
133038
+ if (0 !== code) reject(new Error(messages.Ke(command, dependenciesArgs, code)));
133039
+ else resolve();
133040
+ });
133041
+ child.on('error', (error)=>{
133042
+ reject(error);
133043
+ });
133044
+ });
133045
+ } catch (error) {
133046
+ console.error(messages.RB(error));
133047
+ process.exit(1);
133048
+ } finally{
133049
+ process.chdir(originalDirectory);
133050
+ }
133051
+ }
133052
+ async function ensureDependencies(projectPath, opts) {
133053
+ const packageRoot = findExtensionDevelopRoot();
133054
+ const missingBuild = packageRoot && !areBuildDependenciesInstalled(packageRoot) ? getMissingBuildDependencies(packageRoot) : [];
133055
+ const shouldInstallUserDeps = !!projectPath && !opts?.skipProjectInstall && (0, paths.Bi)((0, paths.G6)(projectPath));
133056
+ const needsBuildInstall = missingBuild.length > 0;
133057
+ const needsUserInstall = shouldInstallUserDeps;
133058
+ if (!needsBuildInstall && !needsUserInstall) return {
133059
+ installed: false,
133060
+ installedBuild: false,
133061
+ installedUser: false
133062
+ };
133063
+ console.log(messages.G2());
133064
+ if (needsBuildInstall && packageRoot) await installOwnDependencies(missingBuild, packageRoot);
133065
+ if (needsUserInstall && projectPath) await installDependencies(projectPath);
133066
+ if (opts?.showRunAgainMessage !== false) console.log(messages.Z0());
133067
+ if (opts?.exitOnInstall) process.exit(0);
133068
+ return {
133069
+ installed: true,
133070
+ installedBuild: needsBuildInstall,
133071
+ installedUser: needsUserInstall
133072
+ };
133073
+ }
133074
+ var external_pintor_ = __webpack_require__("pintor");
133075
+ var external_pintor_default = /*#__PURE__*/ __webpack_require__.n(external_pintor_);
133076
+ var external_crypto_ = __webpack_require__("crypto");
133077
+ function getPreflightCacheDir(packageRoot) {
133078
+ return external_path_.join(packageRoot, '.cache', 'extensionjs', 'preflight');
133079
+ }
133080
+ function getProjectKey(projectPath) {
133081
+ return (0, external_crypto_.createHash)('sha1').update(external_path_.resolve(projectPath)).digest('hex');
133082
+ }
133083
+ function getCacheVersionPath(cacheDir) {
133084
+ return external_path_.join(cacheDir, 'version.json');
133085
+ }
133086
+ function getProjectDepsHash(projectPath) {
133087
+ try {
133088
+ const packageJsonPath = external_path_.join(projectPath, 'package.json');
133089
+ if (!external_fs_.existsSync(packageJsonPath)) return 'no-package-json';
133090
+ const raw = external_fs_.readFileSync(packageJsonPath, 'utf8');
133091
+ const parsed = JSON.parse(raw || '{}');
133092
+ const deps = parsed?.dependencies || {};
133093
+ const devDeps = parsed?.devDependencies || {};
133094
+ const normalize = (input)=>{
133095
+ const sortedKeys = Object.keys(input).sort();
133096
+ const normalized = {};
133097
+ for (const key of sortedKeys)normalized[key] = input[key];
133098
+ return normalized;
133099
+ };
133100
+ const stable = JSON.stringify({
133101
+ dependencies: normalize(deps),
133102
+ devDependencies: normalize(devDeps)
133103
+ });
133104
+ return (0, external_crypto_.createHash)('sha1').update(stable).digest('hex');
133105
+ } catch {
133106
+ return 'invalid-package-json';
133107
+ }
133108
+ }
133109
+ function ensureCacheVersion(cacheDir) {
133110
+ const versionPath = getCacheVersionPath(cacheDir);
133111
+ const expectedVersion = package_0.rE;
133112
+ try {
133113
+ if (!external_fs_.existsSync(versionPath)) return true;
133114
+ const raw = external_fs_.readFileSync(versionPath, 'utf8');
133115
+ const data = JSON.parse(raw || '{}');
133116
+ if (data?.version !== expectedVersion) {
133117
+ external_fs_.rmSync(cacheDir, {
133118
+ recursive: true,
133119
+ force: true
133120
+ });
133121
+ return false;
133122
+ }
133123
+ return true;
133124
+ } catch {
133125
+ try {
133126
+ external_fs_.rmSync(cacheDir, {
133127
+ recursive: true,
133128
+ force: true
133129
+ });
133130
+ } catch {}
133131
+ return false;
133132
+ }
133133
+ }
133134
+ function getPreflightMarkerPath(projectPath) {
133135
+ const packageRoot = findExtensionDevelopRoot();
133136
+ if (!packageRoot) return;
133137
+ const cacheDir = getPreflightCacheDir(packageRoot);
133138
+ return external_path_.join(cacheDir, `${getProjectKey(projectPath)}.json`);
133139
+ }
133140
+ function hasPreflightMarker(projectPath) {
133141
+ const marker = getPreflightMarkerPath(projectPath);
133142
+ if (!marker) return false;
133143
+ const cacheDir = external_path_.dirname(marker);
133144
+ if (!ensureCacheVersion(cacheDir)) return false;
133145
+ if (!external_fs_.existsSync(marker)) return false;
133146
+ try {
133147
+ const raw = external_fs_.readFileSync(marker, 'utf8');
133148
+ const data = JSON.parse(raw || '{}');
133149
+ const depsHash = getProjectDepsHash(projectPath);
133150
+ if (data?.depsHash !== depsHash) {
133151
+ external_fs_.rmSync(marker, {
133152
+ force: true
133153
+ });
133154
+ return false;
133155
+ }
133156
+ return true;
133157
+ } catch {
133158
+ try {
133159
+ external_fs_.rmSync(marker, {
133160
+ force: true
133161
+ });
133162
+ } catch {}
133163
+ return false;
133164
+ }
133165
+ }
133166
+ function writePreflightMarker(projectPath) {
133167
+ const marker = getPreflightMarkerPath(projectPath);
133168
+ if (!marker) return;
133169
+ const cacheDir = external_path_.dirname(marker);
133170
+ try {
133171
+ external_fs_.mkdirSync(cacheDir, {
133172
+ recursive: true
133173
+ });
133174
+ external_fs_.writeFileSync(getCacheVersionPath(cacheDir), JSON.stringify({
133175
+ version: package_0.rE
133176
+ }));
133177
+ external_fs_.writeFileSync(marker, JSON.stringify({
133178
+ projectPath: external_path_.resolve(projectPath),
133179
+ depsHash: getProjectDepsHash(projectPath),
133180
+ version: package_0.rE,
133181
+ ts: Date.now()
133182
+ }));
133183
+ } catch {}
133184
+ }
132969
133185
  var react = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/react.ts");
132970
133186
  var preact = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/preact.ts");
132971
133187
  var vue = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/vue.ts");
132972
133188
  var svelte = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/svelte.ts");
132973
133189
  var typescript = __webpack_require__("./webpack/plugin-js-frameworks/js-tools/typescript.ts");
133190
+ var integrations = __webpack_require__("./webpack/plugin-js-frameworks/frameworks-lib/integrations.ts");
132974
133191
  var sass = __webpack_require__("./webpack/plugin-css/css-tools/sass.ts");
132975
133192
  var less = __webpack_require__("./webpack/plugin-css/css-tools/less.ts");
132976
133193
  var postcss = __webpack_require__("./webpack/plugin-css/css-tools/postcss.ts");
132977
- async function preflightOptionalDependencies(projectStructure, mode) {
133194
+ var js_frameworks_lib_messages = __webpack_require__("./webpack/plugin-js-frameworks/js-frameworks-lib/messages.ts");
133195
+ function canResolveFromProject(id, projectPath) {
133196
+ try {
133197
+ return require.resolve(id, {
133198
+ paths: [
133199
+ projectPath,
133200
+ process.cwd()
133201
+ ]
133202
+ });
133203
+ } catch {
133204
+ return;
133205
+ }
133206
+ }
133207
+ function canResolve(id) {
133208
+ try {
133209
+ return require.resolve(id);
133210
+ } catch {
133211
+ return;
133212
+ }
133213
+ }
133214
+ async function preflightOptionalDependencies(projectStructure, mode, opts) {
132978
133215
  const { packageJsonDir } = (0, paths.fu)(projectStructure);
132979
133216
  const projectPath = packageJsonDir;
132980
- await (0, typescript.vv)(projectPath);
132981
- await (0, react.b)(projectPath);
132982
- await (0, preact.b)(projectPath);
132983
- await (0, vue.K)(projectPath);
132984
- await (0, svelte.X)(projectPath, mode);
132985
- await (0, sass.IZ)(projectPath);
132986
- await (0, less.V)(projectPath, projectStructure.manifestPath);
132987
- await (0, postcss.t)(projectPath, {
132988
- mode
133217
+ if (hasPreflightMarker(projectPath)) {
133218
+ if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(`${external_pintor_default().brightMagenta('►►► Author says')} Optional deps preflight skipped (cache hit).`);
133219
+ return;
133220
+ }
133221
+ const missingOptionalDeps = new Set();
133222
+ const usedIntegrations = [];
133223
+ const usesTypeScript = (0, typescript.eE)(projectPath);
133224
+ const usesReact = (0, react.S)(projectPath);
133225
+ const usesPreact = (0, preact.K)(projectPath);
133226
+ const usesVue = (0, vue.L)(projectPath);
133227
+ const usesSvelte = (0, svelte.a)(projectPath);
133228
+ const usesSass = (0, sass.fZ)(projectPath);
133229
+ const usesLess = (0, less.K)(projectPath);
133230
+ const usesPostCss = (0, postcss.A)(projectPath);
133231
+ if (usesTypeScript && !canResolveFromProject("typescript", projectPath)) {
133232
+ missingOptionalDeps.add("typescript");
133233
+ usedIntegrations.push('TypeScript');
133234
+ }
133235
+ if (usesReact) {
133236
+ if (!canResolve('react-refresh')) missingOptionalDeps.add('react-refresh');
133237
+ if (!canResolve('@rspack/plugin-react-refresh')) missingOptionalDeps.add('@rspack/plugin-react-refresh');
133238
+ usedIntegrations.push('React');
133239
+ }
133240
+ if (usesPreact) {
133241
+ if (!canResolve('@prefresh/core')) missingOptionalDeps.add('@prefresh/core');
133242
+ if (!canResolve('@prefresh/utils')) missingOptionalDeps.add('@prefresh/utils');
133243
+ if (!canResolve('@rspack/plugin-preact-refresh')) missingOptionalDeps.add('@rspack/plugin-preact-refresh');
133244
+ if (!canResolve('preact')) missingOptionalDeps.add('preact');
133245
+ usedIntegrations.push('Preact');
133246
+ }
133247
+ if (usesVue) {
133248
+ if (!canResolve('vue-loader')) missingOptionalDeps.add('vue-loader');
133249
+ if (!canResolve('@vue/compiler-sfc')) missingOptionalDeps.add('@vue/compiler-sfc');
133250
+ usedIntegrations.push('Vue');
133251
+ }
133252
+ if (usesSvelte) {
133253
+ if (!canResolveFromProject('svelte-loader', projectPath) && !canResolve('svelte-loader')) missingOptionalDeps.add('svelte-loader');
133254
+ if (!canResolveFromProject("typescript", projectPath)) missingOptionalDeps.add("typescript");
133255
+ usedIntegrations.push('Svelte');
133256
+ }
133257
+ if (usesSass && !canResolve('sass-loader')) {
133258
+ const postCssDeps = [
133259
+ 'postcss-loader',
133260
+ 'postcss-scss',
133261
+ 'postcss-preset-env'
133262
+ ];
133263
+ for (const dep of postCssDeps)if (!canResolve(dep)) missingOptionalDeps.add(dep);
133264
+ missingOptionalDeps.add('sass-loader');
133265
+ usedIntegrations.push('Sass');
133266
+ }
133267
+ if (usesLess && !canResolve('less-loader')) {
133268
+ if (!canResolve('less')) missingOptionalDeps.add('less');
133269
+ missingOptionalDeps.add('less-loader');
133270
+ usedIntegrations.push('Less');
133271
+ }
133272
+ if (usesPostCss && !canResolve('postcss-loader') && !usesSass && !usesLess) {
133273
+ if (!canResolve('postcss')) missingOptionalDeps.add('postcss');
133274
+ missingOptionalDeps.add('postcss-loader');
133275
+ usedIntegrations.push('PostCSS');
133276
+ }
133277
+ if (missingOptionalDeps.size > 0) {
133278
+ const uniqueIntegrations = Array.from(new Set(usedIntegrations));
133279
+ await (0, integrations.Dy)('Optional', Array.from(missingOptionalDeps), uniqueIntegrations);
133280
+ if (opts?.showRunAgainMessage !== false) console.log(js_frameworks_lib_messages.Q2(uniqueIntegrations));
133281
+ if (opts?.exitOnInstall !== false) process.exit(0);
133282
+ }
133283
+ writePreflightMarker(projectPath);
133284
+ }
133285
+ function shouldRunOptionalPreflight(projectStructure) {
133286
+ const { packageJsonDir } = (0, paths.fu)(projectStructure);
133287
+ const projectPath = packageJsonDir;
133288
+ return !hasPreflightMarker(projectPath);
133289
+ }
133290
+ async function ensureProjectReady(projectStructure, mode, opts) {
133291
+ const { packageJsonDir } = (0, paths.fu)(projectStructure);
133292
+ const result = await ensureDependencies(packageJsonDir, opts);
133293
+ if (shouldRunOptionalPreflight(projectStructure)) await preflightOptionalDependencies(projectStructure, mode, {
133294
+ exitOnInstall: opts?.exitOnInstall
132989
133295
  });
133296
+ return result;
132990
133297
  }
132991
133298
  async function extensionBuild(pathOrRemoteUrl, buildOptions) {
132992
- const packageRoot = findExtensionDevelopRoot();
132993
- if (packageRoot && !areBuildDependenciesInstalled(packageRoot)) {
132994
- const missing = getMissingBuildDependencies(packageRoot);
132995
- await installOwnDependencies(missing, packageRoot);
132996
- }
132997
133299
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
132998
133300
  const isVitest = 'true' === process.env.VITEST;
132999
133301
  const shouldExitOnError = (buildOptions?.exitOnError ?? true) && !isVitest;
133000
133302
  const browser = (0, paths.YN)(buildOptions?.browser || 'chrome', buildOptions?.chromiumBinary, buildOptions?.geckoBinary || buildOptions?.firefoxBinary);
133303
+ const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133001
133304
  try {
133002
- await preflightOptionalDependencies(projectStructure, 'production');
133305
+ const depsResult = await ensureProjectReady(projectStructure, 'production', {
133306
+ skipProjectInstall: isVitest || !projectStructure.packageJsonPath,
133307
+ exitOnInstall: true
133308
+ });
133309
+ if (depsResult.installed) return {
133310
+ browser,
133311
+ total_assets: 0,
133312
+ total_bytes: 0,
133313
+ largest_asset_bytes: 0,
133314
+ warnings_count: 0,
133315
+ errors_count: 0
133316
+ };
133003
133317
  const [{ rspack }, { merge }, { handleStatsErrors }, { default: webpackConfig }] = await Promise.all([
133004
133318
  import("@rspack/core"),
133005
133319
  import("webpack-merge"),
@@ -133010,7 +133324,6 @@ var __webpack_exports__ = {};
133010
133324
  ]).then(__webpack_require__.bind(__webpack_require__, "./webpack/webpack-config.ts"))
133011
133325
  ]);
133012
133326
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
133013
- const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133014
133327
  if (projectStructure.packageJsonPath) assertNoManagedDependencyConflicts(projectStructure.packageJsonPath, manifestDir);
133015
133328
  const commandConfig = await (0, config_loader.eY)(manifestDir, 'build');
133016
133329
  const distPath = (0, paths.q4)(packageJsonDir, browser);
@@ -133037,12 +133350,6 @@ var __webpack_exports__ = {};
133037
133350
  });
133038
133351
  const compilerConfig = merge(userConfig);
133039
133352
  const compiler = rspack(compilerConfig);
133040
- if (projectStructure.packageJsonPath) {
133041
- if ((0, paths.Bi)(packageJsonDir)) {
133042
- console.log(messages.Vy());
133043
- if ('true' !== process.env.VITEST) await installDependencies(packageJsonDir);
133044
- }
133045
- }
133046
133353
  let summary = {
133047
133354
  browser,
133048
133355
  total_assets: 0,
@@ -133112,24 +133419,17 @@ var __webpack_exports__ = {};
133112
133419
  }
133113
133420
  }
133114
133421
  async function extensionDev(pathOrRemoteUrl, devOptions) {
133115
- const packageRoot = findExtensionDevelopRoot();
133116
- if (packageRoot && !areBuildDependenciesInstalled(packageRoot)) {
133117
- const missing = getMissingBuildDependencies(packageRoot);
133118
- await installOwnDependencies(missing, packageRoot);
133119
- }
133120
133422
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133121
133423
  try {
133122
133424
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
133123
133425
  const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133124
- await preflightOptionalDependencies(projectStructure, 'development');
133426
+ const depsResult = await ensureProjectReady(projectStructure, 'development', {
133427
+ skipProjectInstall: !projectStructure.packageJsonPath,
133428
+ exitOnInstall: true
133429
+ });
133430
+ if (depsResult.installed) return;
133125
133431
  if ((0, typescript.eE)(manifestDir)) await generateExtensionTypes(manifestDir, packageJsonDir);
133126
133432
  if (projectStructure.packageJsonPath) assertNoManagedDependencyConflicts(projectStructure.packageJsonPath, manifestDir);
133127
- if (projectStructure.packageJsonPath) {
133128
- if ((0, paths.Bi)(packageJsonDir)) {
133129
- console.log(messages.Vy());
133130
- await installDependencies(packageJsonDir);
133131
- }
133132
- }
133133
133433
  const browser = (0, paths.YN)(devOptions.browser || 'chrome', devOptions.chromiumBinary, devOptions.geckoBinary || devOptions.firefoxBinary);
133134
133434
  const geckoBinary = devOptions.geckoBinary || devOptions.firefoxBinary;
133135
133435
  if (debug) {
@@ -133164,6 +133464,15 @@ var __webpack_exports__ = {};
133164
133464
  var firefox_launch = __webpack_require__("./webpack/plugin-browsers/run-firefox/firefox-launch/index.ts");
133165
133465
  async function runOnlyPreviewBrowser(opts) {
133166
133466
  const sourceEnabled = false;
133467
+ let exitScheduled = false;
133468
+ const scheduleExitOnSignal = ()=>{
133469
+ if (exitScheduled) return;
133470
+ exitScheduled = true;
133471
+ setTimeout(()=>process.exit(0), 10);
133472
+ };
133473
+ process.once('SIGINT', scheduleExitOnSignal);
133474
+ process.once('SIGTERM', scheduleExitOnSignal);
133475
+ process.once('SIGHUP', scheduleExitOnSignal);
133167
133476
  const compilationLike = {
133168
133477
  options: {
133169
133478
  mode: 'production',
@@ -133281,14 +133590,14 @@ var __webpack_exports__ = {};
133281
133590
  });
133282
133591
  }
133283
133592
  async function extensionStart(pathOrRemoteUrl, startOptions) {
133284
- const packageRoot = findExtensionDevelopRoot();
133285
- if (packageRoot && !areBuildDependenciesInstalled(packageRoot)) {
133286
- const missing = getMissingBuildDependencies(packageRoot);
133287
- await installOwnDependencies(missing, packageRoot);
133288
- }
133289
133593
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133290
133594
  try {
133291
133595
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
133596
+ const depsResult = await ensureProjectReady(projectStructure, 'development', {
133597
+ skipProjectInstall: !projectStructure.packageJsonPath,
133598
+ exitOnInstall: true
133599
+ });
133600
+ if (depsResult.installed) return;
133292
133601
  const browser = (0, paths.YN)(startOptions.browser || 'chrome', startOptions.chromiumBinary, startOptions.geckoBinary || startOptions.firefoxBinary);
133293
133602
  const { manifestDir, packageJsonDir } = (0, paths.fu)(projectStructure);
133294
133603
  const commandConfig = await (0, config_loader.eY)(packageJsonDir, 'start');
@@ -133319,16 +133628,27 @@ var __webpack_exports__ = {};
133319
133628
  process.exit(1);
133320
133629
  }
133321
133630
  }
133631
+ async function preflightOptionalDependenciesForProject(pathOrRemoteUrl, mode = 'development') {
133632
+ const projectStructure = await getProjectStructure(pathOrRemoteUrl);
133633
+ await preflightOptionalDependencies(projectStructure, mode, {
133634
+ exitOnInstall: false,
133635
+ showRunAgainMessage: false
133636
+ });
133637
+ }
133322
133638
  })();
133639
+ exports.ensureDependencies = __webpack_exports__.ensureDependencies;
133323
133640
  exports.extensionBuild = __webpack_exports__.extensionBuild;
133324
133641
  exports.extensionDev = __webpack_exports__.extensionDev;
133325
133642
  exports.extensionPreview = __webpack_exports__.extensionPreview;
133326
133643
  exports.extensionStart = __webpack_exports__.extensionStart;
133644
+ exports.preflightOptionalDependenciesForProject = __webpack_exports__.preflightOptionalDependenciesForProject;
133327
133645
  for(var __rspack_i in __webpack_exports__)if (-1 === [
133646
+ "ensureDependencies",
133328
133647
  "extensionBuild",
133329
133648
  "extensionDev",
133330
133649
  "extensionPreview",
133331
- "extensionStart"
133650
+ "extensionStart",
133651
+ "preflightOptionalDependenciesForProject"
133332
133652
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
133333
133653
  Object.defineProperty(exports, '__esModule', {
133334
133654
  value: true