extension-develop 3.9.0-next.0 → 3.9.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.cjs CHANGED
@@ -127131,6 +127131,124 @@ var __webpack_modules__ = {
127131
127131
  });
127132
127132
  module.exports = library;
127133
127133
  },
127134
+ "./webpack/dev-server/messages.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
127135
+ "use strict";
127136
+ __webpack_require__.d(__webpack_exports__, {
127137
+ Df: ()=>autoExitForceKill,
127138
+ Gc: ()=>ready,
127139
+ Nq: ()=>bundlerFatalError,
127140
+ UF: ()=>devServerStartTimeout,
127141
+ VL: ()=>extensionJsRunnerError,
127142
+ aO: ()=>portInUse,
127143
+ bL: ()=>browserRunnerDisabled,
127144
+ eP: ()=>bundlerRecompiling,
127145
+ nI: ()=>noEntrypointsDetected,
127146
+ o6: ()=>autoExitModeEnabled,
127147
+ tJ: ()=>autoExitTriggered,
127148
+ tl: ()=>spacerLine
127149
+ });
127150
+ var fs__rspack_import_0 = __webpack_require__("fs");
127151
+ var pintor__rspack_import_1 = __webpack_require__("pintor");
127152
+ var pintor__rspack_import_1_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_1);
127153
+ function getLoggingPrefix(type) {
127154
+ const isAuthor = 'true' === process.env.EXTENSION_AUTHOR_MODE;
127155
+ if (isAuthor) {
127156
+ const base = 'error' === type ? 'ERROR Author says' : '►►► Author says';
127157
+ return pintor__rspack_import_1_default().brightMagenta(base);
127158
+ }
127159
+ if ('error' === type) return pintor__rspack_import_1_default().red('ERROR');
127160
+ if ('warn' === type) return pintor__rspack_import_1_default().brightYellow('►►►');
127161
+ if ('info' === type) return pintor__rspack_import_1_default().gray('►►►');
127162
+ return pintor__rspack_import_1_default().green('►►►');
127163
+ }
127164
+ function ready(mode, browser) {
127165
+ const extensionOutput = 'firefox' === browser || 'gecko-based' === browser || 'edge' === browser ? 'Add-on' : 'Extension';
127166
+ const b = String(browser || '');
127167
+ const cap = b.charAt(0).toUpperCase() + b.slice(1);
127168
+ const pretty = pintor__rspack_import_1_default().green('ready for ' + mode);
127169
+ return `${getLoggingPrefix('info')} ${cap} ${extensionOutput} ${pretty}.`;
127170
+ }
127171
+ function readJsonRecord(filePath) {
127172
+ try {
127173
+ return JSON.parse(fs__rspack_import_0.readFileSync(filePath, 'utf8'));
127174
+ } catch {
127175
+ return null;
127176
+ }
127177
+ }
127178
+ function capitalizeToken(value) {
127179
+ return value.split('-').filter(Boolean).map((token)=>token.charAt(0).toUpperCase() + token.slice(1)).join('-');
127180
+ }
127181
+ function getExtensionVersion() {
127182
+ return process.env.EXTENSION_DEVELOP_VERSION || process.env.EXTENSION_CLI_VERSION || (()=>{
127183
+ try {
127184
+ return __webpack_require__("./package.json").rE;
127185
+ } catch {
127186
+ return 'unknown';
127187
+ }
127188
+ })();
127189
+ }
127190
+ function browserRunnerDisabled(args) {
127191
+ const manifest = readJsonRecord(args.manifestPath);
127192
+ const ready = readJsonRecord(args.readyPath);
127193
+ const browserLabel = capitalizeToken(String(args.browser || 'unknown'));
127194
+ const runId = String(ready?.runId || '').trim();
127195
+ const pid = Number.isInteger(ready?.pid) ? String(ready?.pid) : '';
127196
+ const runLabel = runId ? `${pintor__rspack_import_1_default().gray(runId)}${pid ? ` · ${pintor__rspack_import_1_default().gray(`PID ${pid}`)}` : ''}` : pid ? pintor__rspack_import_1_default().gray(`PID ${pid}`) : pintor__rspack_import_1_default().gray('n/a');
127197
+ const extensionName = String(manifest?.name || 'Extension');
127198
+ const extensionVersion = String(manifest?.version || '').trim();
127199
+ const extensionLabel = extensionVersion ? `${extensionName} ${extensionVersion}` : extensionName;
127200
+ const extensionJsVersion = getExtensionVersion();
127201
+ return [
127202
+ ` 🧩 ${pintor__rspack_import_1_default().brightBlue('Extension.js')} ${pintor__rspack_import_1_default().gray(extensionJsVersion)}`,
127203
+ ` Browser ${pintor__rspack_import_1_default().gray(args.browserModeLabel || `${browserLabel} (build-only mode)`)}`,
127204
+ ` Extension ${pintor__rspack_import_1_default().gray(extensionLabel)}`,
127205
+ ` Run ID ${runLabel}`
127206
+ ].join('\n');
127207
+ }
127208
+ function portInUse(requestedPort, newPort) {
127209
+ return `Port: Requested port ${pintor__rspack_import_1_default().brightBlue(requestedPort.toString())} is in use; using ${pintor__rspack_import_1_default().brightBlue(newPort.toString())} instead.`;
127210
+ }
127211
+ function extensionJsRunnerError(error) {
127212
+ return `Extension.js Runner Error:\n${pintor__rspack_import_1_default().red(String(error))}`;
127213
+ }
127214
+ function autoExitModeEnabled(ms) {
127215
+ return `Auto-exit enabled. Will exit after ${pintor__rspack_import_1_default().brightBlue(ms.toString())} ms if idle.`;
127216
+ }
127217
+ function autoExitTriggered(ms) {
127218
+ return `Auto-exit triggered after ${pintor__rspack_import_1_default().brightBlue(ms.toString())} ms. Cleaning up...`;
127219
+ }
127220
+ function autoExitForceKill(ms) {
127221
+ return `Force-killing process after ${pintor__rspack_import_1_default().brightBlue(ms.toString())} ms to ensure exit.`;
127222
+ }
127223
+ function devServerStartTimeout(ms) {
127224
+ return [
127225
+ `Dev server startup is taking longer than expected (${pintor__rspack_import_1_default().brightBlue(ms.toString())} ms).`,
127226
+ "The bundler may have encountered an error before emitting the first build.",
127227
+ `If nothing else prints, try setting ${pintor__rspack_import_1_default().brightBlue('EXTENSION_VERBOSE=1')} for more logs.`
127228
+ ].join('\n');
127229
+ }
127230
+ function bundlerFatalError(error) {
127231
+ const text = error instanceof Error ? error.stack || error.message : String(error);
127232
+ return `Build failed to start:\n${pintor__rspack_import_1_default().red(text)}`;
127233
+ }
127234
+ function bundlerRecompiling() {
127235
+ return "Recompiling due to file changes…";
127236
+ }
127237
+ function noEntrypointsDetected(port) {
127238
+ return [
127239
+ "No entrypoints or assets were produced by the initial compilation.",
127240
+ `The dev server is running on 127.0.0.1:${pintor__rspack_import_1_default().brightBlue(port.toString())}, but nothing is being built.`,
127241
+ "Possible causes:",
127242
+ " • Empty or missing entry configuration.",
127243
+ " • Extension-related plugins are disabled (entries not derived from manifest).",
127244
+ " • All sources are ignored or excluded.",
127245
+ `Try enabling verbose logs with ${pintor__rspack_import_1_default().brightBlue('EXTENSION_VERBOSE=1')} or review your extension config.`
127246
+ ].join('\n');
127247
+ }
127248
+ function spacerLine() {
127249
+ return ' ';
127250
+ }
127251
+ },
127134
127252
  "./webpack/feature-special-folders/folder-extensions/resolve-config.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
127135
127253
  "use strict";
127136
127254
  __webpack_require__.d(__webpack_exports__, {
@@ -127425,6 +127543,22 @@ var __webpack_modules__ = {
127425
127543
  if ('string' != typeof value) return '';
127426
127544
  return value.trim();
127427
127545
  }
127546
+ function readReadyMetadata(readyPath) {
127547
+ if (!readyPath) return null;
127548
+ try {
127549
+ return JSON.parse(fs__rspack_import_0.readFileSync(readyPath, 'utf-8'));
127550
+ } catch {
127551
+ return null;
127552
+ }
127553
+ }
127554
+ function resolveRunLabel(ready) {
127555
+ const runId = toNormalizedId(ready?.runId);
127556
+ const pid = 'number' == typeof ready?.pid && Number.isFinite(ready.pid) ? String(ready.pid) : '';
127557
+ if (runId && pid) return `${runId} · PID ${pid}`;
127558
+ if (runId) return runId;
127559
+ if (pid) return `PID ${pid}`;
127560
+ return '';
127561
+ }
127428
127562
  function deriveChromiumExtensionIdFromManifest(manifest) {
127429
127563
  const key = toNormalizedId(manifest?.key);
127430
127564
  if (!key) return '';
@@ -127507,6 +127641,8 @@ var __webpack_modules__ = {
127507
127641
  try {
127508
127642
  const manifestPath = path__rspack_import_1.join(opts.outPath, 'manifest.json');
127509
127643
  const manifest = JSON.parse(fs__rspack_import_0.readFileSync(manifestPath, 'utf-8'));
127644
+ const ready = readReadyMetadata(opts.readyPath);
127645
+ const runLabel = opts.includeRunId ? resolveRunLabel(ready) : '';
127510
127646
  const runtimeInfo = opts.runtime ? {
127511
127647
  extensionId: opts.runtime.extensionId,
127512
127648
  name: opts.runtime.name,
@@ -127529,7 +127665,8 @@ var __webpack_modules__ = {
127529
127665
  };
127530
127666
  console.log(_messages__rspack_import_3.io8());
127531
127667
  console.log(_messages__rspack_import_3.e_P(manifest, opts.browser, message, browserLabel, updateSuffix || void 0, {
127532
- includeExtensionId: opts.includeExtensionId
127668
+ includeExtensionId: opts.includeExtensionId,
127669
+ runLabel
127533
127670
  }));
127534
127671
  console.log(_messages__rspack_import_3.io8());
127535
127672
  } else {
@@ -127544,7 +127681,8 @@ var __webpack_modules__ = {
127544
127681
  };
127545
127682
  console.log(_messages__rspack_import_3.io8());
127546
127683
  console.log(_messages__rspack_import_3.e_P(manifest, opts.browser, message, browserLabel, updateSuffix || void 0, {
127547
- includeExtensionId: opts.includeExtensionId
127684
+ includeExtensionId: opts.includeExtensionId,
127685
+ runLabel
127548
127686
  }));
127549
127687
  console.log(_messages__rspack_import_3.io8());
127550
127688
  }
@@ -128259,6 +128397,7 @@ var __webpack_modules__ = {
128259
128397
  const displayVersion = String(version1 || manifest.version || '');
128260
128398
  lines.push(` 🧩 ${pintor__rspack_import_4_default().brightBlue('Extension.js')} ${pintor__rspack_import_4_default().gray(`${extensionVersion}`)}${updateNotice}`, ` Browser ${pintor__rspack_import_4_default().gray(browserLabel)}`, ` Extension ${pintor__rspack_import_4_default().gray(displayVersion ? `${displayName} ${displayVersion}` : displayName)}`);
128261
128399
  if (includeExtensionId && cleanId) lines.push(` Extension ID ${pintor__rspack_import_4_default().gray(cleanId)}`);
128400
+ if (opts?.runLabel) lines.push(` Run ID ${pintor__rspack_import_4_default().gray(opts.runLabel)}`);
128262
128401
  return lines.join('\n');
128263
128402
  }
128264
128403
  function emptyLine() {
@@ -128662,6 +128801,7 @@ var __webpack_modules__ = {
128662
128801
  var output_binaries_resolver = __webpack_require__("./webpack/plugin-browsers/browsers-lib/output-binaries-resolver.ts");
128663
128802
  var shared_utils = __webpack_require__("./webpack/plugin-browsers/browsers-lib/shared-utils.ts");
128664
128803
  var banner = __webpack_require__("./webpack/plugin-browsers/browsers-lib/banner.ts");
128804
+ var dev_server_messages = __webpack_require__("./webpack/dev-server/messages.ts");
128665
128805
  var external_path_ = __webpack_require__("path");
128666
128806
  const masterPreferences = {
128667
128807
  alternate_error_pages: {
@@ -128951,6 +129091,7 @@ var __webpack_modules__ = {
128951
129091
  console.log(messages.E8B(chromiumConfig.join(' ')));
128952
129092
  }
128953
129093
  var extension_output_path = __webpack_require__("./webpack/plugin-browsers/run-chromium/chromium-launch/extension-output-path.ts");
129094
+ var manifest_readiness = __webpack_require__("./webpack/plugin-browsers/run-chromium/manifest-readiness.ts");
128954
129095
  var external_os_ = __webpack_require__("os");
128955
129096
  function isWslEnv() {
128956
129097
  if ('linux' !== process.platform) return false;
@@ -129042,17 +129183,6 @@ var __webpack_modules__ = {
129042
129183
  else obj[key] = value;
129043
129184
  return obj;
129044
129185
  }
129045
- async function waitForManifest(outPath, timeoutMs = 8000) {
129046
- const manifestPath = `${outPath}/manifest.json`;
129047
- const start = Date.now();
129048
- while(Date.now() - start < timeoutMs){
129049
- try {
129050
- if (external_fs_.existsSync(manifestPath)) return true;
129051
- } catch {}
129052
- await new Promise((resolve)=>setTimeout(resolve, 150));
129053
- }
129054
- return false;
129055
- }
129056
129186
  async function maybePrintDevBanner(args) {
129057
129187
  const mode = args.compilation?.options?.mode || 'development';
129058
129188
  if ('development' !== mode) return;
@@ -129060,7 +129190,9 @@ var __webpack_modules__ = {
129060
129190
  const loadExtensionFlag = args.chromiumConfig.find((flag)=>flag.startsWith('--load-extension='));
129061
129191
  const extensionOutputPath = (0, extension_output_path.W)(args.compilation, loadExtensionFlag);
129062
129192
  if (!extensionOutputPath) return;
129063
- const ready = await waitForManifest(extensionOutputPath, 10000);
129193
+ const ready = await (0, manifest_readiness.f)(extensionOutputPath, {
129194
+ timeoutMs: 10000
129195
+ });
129064
129196
  if (!ready) return;
129065
129197
  await (0, banner.a)({
129066
129198
  browser: args.browser,
@@ -129094,7 +129226,7 @@ var __webpack_modules__ = {
129094
129226
  if (this.didLaunch) return;
129095
129227
  await this.launchChromium(stats.compilation);
129096
129228
  this.didLaunch = true;
129097
- this.logger.info(messages.ACl(this.options.browser, stats.compilation.options.mode));
129229
+ if (!this.didReportReady) this.logger.info(dev_server_messages.Gc(stats.compilation.options.mode, this.options.browser));
129098
129230
  } catch (error) {
129099
129231
  try {
129100
129232
  this.logger.error(messages._D4(this.options.browser, error));
@@ -129382,6 +129514,10 @@ var __webpack_modules__ = {
129382
129514
  });
129383
129515
  if (this.options.dryRun) return void logChromiumDryRun(browserBinaryLocation, chromiumConfig);
129384
129516
  await this.launchWithDirectSpawn(browserBinaryLocation, chromiumConfig);
129517
+ if ('development' === compilation.options.mode && !this.didReportReady) {
129518
+ this.logger.info(dev_server_messages.Gc(compilation.options.mode, this.options.browser));
129519
+ this.didReportReady = true;
129520
+ }
129385
129521
  try {
129386
129522
  let browserVersionLine;
129387
129523
  try {
@@ -129491,12 +129627,60 @@ var __webpack_modules__ = {
129491
129627
  _define_property(this, "options", void 0);
129492
129628
  _define_property(this, "ctx", void 0);
129493
129629
  _define_property(this, "didLaunch", void 0);
129630
+ _define_property(this, "didReportReady", void 0);
129494
129631
  _define_property(this, "logger", void 0);
129495
129632
  this.options = options;
129496
129633
  this.ctx = ctx;
129497
129634
  this.didLaunch = false;
129635
+ this.didReportReady = false;
129636
+ }
129637
+ }
129638
+ },
129639
+ "./webpack/plugin-browsers/run-chromium/manifest-readiness.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
129640
+ "use strict";
129641
+ __webpack_require__.d(__webpack_exports__, {
129642
+ f: ()=>waitForStableManifest
129643
+ });
129644
+ var fs__rspack_import_0 = __webpack_require__("fs");
129645
+ var path__rspack_import_1 = __webpack_require__("path");
129646
+ function sleep(ms) {
129647
+ return new Promise((resolve)=>setTimeout(resolve, ms));
129648
+ }
129649
+ function readValidManifest(manifestPath) {
129650
+ try {
129651
+ const content = fs__rspack_import_0.readFileSync(manifestPath, 'utf-8');
129652
+ if (!content.trim()) return;
129653
+ JSON.parse(content);
129654
+ return content;
129655
+ } catch {
129656
+ return;
129498
129657
  }
129499
129658
  }
129659
+ async function waitForStableManifest(outPath, options) {
129660
+ const timeoutMs = options?.timeoutMs ?? 8000;
129661
+ const pollIntervalMs = options?.pollIntervalMs ?? 150;
129662
+ const stableReadsRequired = options?.stableReadsRequired ?? 2;
129663
+ const manifestPath = path__rspack_import_1.join(outPath, 'manifest.json');
129664
+ const start = Date.now();
129665
+ let lastValidContent;
129666
+ let stableReads = 0;
129667
+ while(Date.now() - start < timeoutMs){
129668
+ const currentContent = readValidManifest(manifestPath);
129669
+ if (currentContent) {
129670
+ if (currentContent === lastValidContent) stableReads += 1;
129671
+ else {
129672
+ lastValidContent = currentContent;
129673
+ stableReads = 1;
129674
+ }
129675
+ if (stableReads >= stableReadsRequired) return true;
129676
+ } else {
129677
+ lastValidContent = void 0;
129678
+ stableReads = 0;
129679
+ }
129680
+ await sleep(pollIntervalMs);
129681
+ }
129682
+ return false;
129683
+ }
129500
129684
  },
129501
129685
  "./webpack/plugin-browsers/run-firefox/firefox-context/index.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
129502
129686
  "use strict";
@@ -129562,6 +129746,7 @@ var __webpack_modules__ = {
129562
129746
  var output_binaries_resolver = __webpack_require__("./webpack/plugin-browsers/browsers-lib/output-binaries-resolver.ts");
129563
129747
  var shared_utils = __webpack_require__("./webpack/plugin-browsers/browsers-lib/shared-utils.ts");
129564
129748
  var instance_registry = __webpack_require__("./webpack/plugin-browsers/browsers-lib/instance-registry.ts");
129749
+ var dev_server_messages = __webpack_require__("./webpack/dev-server/messages.ts");
129565
129750
  var external_child_process_ = __webpack_require__("child_process");
129566
129751
  function setupFirefoxProcessHandlers(browser, childRef, cleanupInstance) {
129567
129752
  let isCleaningUp = false;
@@ -130311,7 +130496,10 @@ var __webpack_modules__ = {
130311
130496
  debug: (...a)=>console?.debug?.(...a)
130312
130497
  };
130313
130498
  await this.launch(compilation, options);
130314
- this.ctx.logger?.info?.(messages.ACl(this.host.browser, options.mode));
130499
+ if ('development' === options.mode) {
130500
+ this.ctx.logger?.info?.(messages.ACl(this.host.browser, options.mode));
130501
+ this.ctx.logger?.info?.(dev_server_messages.Gc(options.mode, this.host.browser));
130502
+ }
130315
130503
  this.ctx.didLaunch = true;
130316
130504
  }
130317
130505
  apply(compiler) {
@@ -130334,6 +130522,7 @@ var __webpack_modules__ = {
130334
130522
  port: this.host.port
130335
130523
  });
130336
130524
  this.ctx.logger?.info?.(messages.ACl(this.host.browser, stats.compilation.options.mode));
130525
+ this.ctx.logger?.info?.(dev_server_messages.Gc(stats.compilation.options.mode, this.host.browser));
130337
130526
  this.ctx.didLaunch = true;
130338
130527
  } catch (error) {
130339
130528
  this.ctx.logger?.error?.(messages.MQS(error));
@@ -134045,19 +134234,20 @@ var __webpack_modules__ = {
134045
134234
  }
134046
134235
  function buildWarningsDetails(warnings) {
134047
134236
  if (!Array.isArray(warnings) || 0 === warnings.length) return '';
134048
- const lines = [];
134237
+ const blocks = [];
134238
+ const sectionHeader = `${getLoggingPrefix('warn')} Warning details\n`;
134049
134239
  warnings.forEach((warning, index)=>{
134050
134240
  const message = getWarningMessage(warning);
134051
134241
  const source = getWarningSource(warning);
134052
134242
  const artifact = getWarningArtifact(warning);
134053
134243
  const category = classifyWarning(message, source);
134054
134244
  const action = suggestedActionForWarning(category);
134055
- if (!message) return void lines.push(`- Warning ${index + 1}: details were suppressed by tool output.`, ` Source: ${source}`, " Action: Re-run with EXTENSION_VERBOSE=1 to inspect full warning messages.");
134245
+ if (!message) return void blocks.push(` ${pintor__rspack_import_2_default().brightYellow('Warning ' + (index + 1))}: details were suppressed by tool output.\n ${fmt.label('SOURCE')} ${pintor__rspack_import_2_default().gray(source)}\n ${fmt.label('ACTION')} Re-run with EXTENSION_VERBOSE=1 to inspect full warning messages.`);
134056
134246
  const oneLine = message.replace(/\s+/g, ' ').trim();
134057
- const artifactSuffix = artifact ? ` (${artifact})` : '';
134058
- lines.push(`- ${category}: ${oneLine}${artifactSuffix}`, ` Source: ${source}`, ` Action: ${action}`);
134247
+ const artifactSuffix = artifact ? ` ${pintor__rspack_import_2_default().gray(`(${artifact})`)}` : '';
134248
+ blocks.push(` ${pintor__rspack_import_2_default().brightYellow(category)}: ${oneLine}${artifactSuffix}\n ${fmt.label('SOURCE')} ${pintor__rspack_import_2_default().gray(source)}\n ${fmt.label('ACTION')} ${action}`);
134059
134249
  });
134060
- return lines.join('\n');
134250
+ return sectionHeader + blocks.join('\n\n');
134061
134251
  }
134062
134252
  function fetchingProjectPath(owner, project) {
134063
134253
  return fmt.block('Fetching project', [
@@ -135189,7 +135379,7 @@ var __webpack_modules__ = {
135189
135379
  },
135190
135380
  "./package.json" (module) {
135191
135381
  "use strict";
135192
- module.exports = JSON.parse('{"rE":"3.9.0-next.0","El":{"@rspack/core":"^1.7.5","@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","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","extension-from-store":"^0.1.1","firefox-location2":"3.0.0","go-git-it":"^5.1.1","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"}}');
135382
+ module.exports = JSON.parse('{"rE":"3.9.0-next.3","El":{"@rspack/core":"^1.7.5","@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","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","extension-from-store":"^0.1.1","firefox-location2":"3.0.0","go-git-it":"^5.1.1","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"}}');
135193
135383
  }
135194
135384
  };
135195
135385
  var __webpack_module_cache__ = {};
@@ -136069,7 +136259,7 @@ var __webpack_exports__ = {};
136069
136259
  __webpack_require__.e("552").then(__webpack_require__.bind(__webpack_require__, "./webpack/webpack-lib/stats-handler.ts")),
136070
136260
  Promise.all([
136071
136261
  __webpack_require__.e("215"),
136072
- __webpack_require__.e("535")
136262
+ __webpack_require__.e("946")
136073
136263
  ]).then(__webpack_require__.bind(__webpack_require__, "./webpack/webpack-config.ts"))
136074
136264
  ]);
136075
136265
  const debug = isAuthor;
@@ -136213,8 +136403,8 @@ var __webpack_exports__ = {};
136213
136403
  if ('true' === process.env.EXTENSION_DEV_DRY_RUN) return;
136214
136404
  const { devServer } = await Promise.all([
136215
136405
  __webpack_require__.e("215"),
136216
- __webpack_require__.e("535"),
136217
- __webpack_require__.e("928")
136406
+ __webpack_require__.e("946"),
136407
+ __webpack_require__.e("324")
136218
136408
  ]).then(__webpack_require__.bind(__webpack_require__, "./webpack/dev-server/index.ts"));
136219
136409
  await devServer(projectStructure, {
136220
136410
  ...devOptions,
@@ -136341,7 +136531,9 @@ var __webpack_exports__ = {};
136341
136531
  await (0, banner.M)({
136342
136532
  browser: opts.browser,
136343
136533
  outPath: opts.outPath,
136344
- includeExtensionId: false
136534
+ includeExtensionId: true,
136535
+ includeRunId: false,
136536
+ readyPath: opts.readyPath
136345
136537
  });
136346
136538
  return;
136347
136539
  }
@@ -136360,10 +136552,18 @@ var __webpack_exports__ = {};
136360
136552
  geckoBinary: opts.geckoBinary,
136361
136553
  port: opts.port
136362
136554
  });
136555
+ await (0, banner.M)({
136556
+ browser: opts.browser,
136557
+ outPath: opts.outPath,
136558
+ includeExtensionId: true,
136559
+ includeRunId: false,
136560
+ readyPath: opts.readyPath
136561
+ });
136363
136562
  return;
136364
136563
  }
136365
136564
  throw new Error(`Unsupported browser: ${String(opts.browser)}`);
136366
136565
  }
136566
+ var dev_server_messages = __webpack_require__("./webpack/dev-server/messages.ts");
136367
136567
  async function extensionPreview(pathOrRemoteUrl, previewOptions) {
136368
136568
  const projectStructure = await getProjectStructure(pathOrRemoteUrl);
136369
136569
  const debug = 'true' === process.env.EXTENSION_AUTHOR_MODE;
@@ -136398,6 +136598,14 @@ var __webpack_exports__ = {};
136398
136598
  if (previewOptions.noBrowser) {
136399
136599
  console.log(messages.k4(browser));
136400
136600
  metadata.writeReady();
136601
+ console.log(dev_server_messages.tl());
136602
+ const browserLabel = String(browser || 'unknown');
136603
+ console.log(dev_server_messages.bL({
136604
+ browser: browserLabel,
136605
+ manifestPath: projectStructure.manifestPath,
136606
+ readyPath: metadata.readyPath,
136607
+ browserModeLabel: `${browserLabel.charAt(0).toUpperCase() + browserLabel.slice(1)} (no-browser mode)`
136608
+ }));
136401
136609
  return;
136402
136610
  }
136403
136611
  const safeBrowserConfig = (0, sanitize.a)(browserConfig);
@@ -136434,6 +136642,7 @@ var __webpack_exports__ = {};
136434
136642
  browser,
136435
136643
  outPath: outputPath,
136436
136644
  contextDir: packageJsonDir,
136645
+ readyPath: metadata.readyPath,
136437
136646
  extensionsToLoad: unpackedExtensionDirsToLoad,
136438
136647
  noOpen: merged.noOpen,
136439
136648
  profile: merged.profile,
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "webpack/webpack-lib/optional-dependencies.json"
26
26
  ],
27
27
  "name": "extension-develop",
28
- "version": "3.9.0-next.0",
28
+ "version": "3.9.0-next.3",
29
29
  "description": "Develop, build, preview, and package Extension.js projects.",
30
30
  "author": {
31
31
  "name": "Cezar Augusto",