extension 4.0.21 → 4.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/49.cjs +21 -7
- package/dist/browsers.cjs +152 -94
- package/dist/cli.cjs +218 -134
- package/dist/extension/browsers/browsers-lib/banner.d.ts +5 -0
- package/dist/extension/browsers/browsers-lib/messages.d.ts +4 -1
- package/dist/extension/browsers/browsers-lib/shared-utils.d.ts +7 -0
- package/dist/extension/browsers/run-chromium/chromium-types.d.ts +2 -0
- package/dist/extension/helpers/cli-failure.d.ts +1 -0
- package/dist/extension/helpers/messages.d.ts +1 -1
- package/package.json +4 -4
package/dist/browsers.cjs
CHANGED
|
@@ -149,7 +149,9 @@ var __webpack_modules__ = {
|
|
|
149
149
|
const updateSuffix = readUpdateSuffixOnce();
|
|
150
150
|
console.log(_messages__rspack_import_5.io());
|
|
151
151
|
console.log(_messages__rspack_import_5.e_(manifest, opts.browser, message, opts.browserVersionLine, updateSuffix || void 0, {
|
|
152
|
-
profilePath: opts.profilePath
|
|
152
|
+
profilePath: opts.profilePath,
|
|
153
|
+
binaryPath: opts.binaryPath,
|
|
154
|
+
binaryProvenance: opts.binaryProvenance
|
|
153
155
|
}));
|
|
154
156
|
console.log(_messages__rspack_import_5.io());
|
|
155
157
|
markCardPrinted(k, opts.browser, opts.outPath);
|
|
@@ -190,7 +192,9 @@ var __webpack_modules__ = {
|
|
|
190
192
|
console.log(_messages__rspack_import_5.e_(manifest, opts.browser, message, browserLabel, updateSuffix || void 0, {
|
|
191
193
|
includeExtensionId: opts.includeExtensionId,
|
|
192
194
|
runLabel,
|
|
193
|
-
profilePath: opts.profilePath
|
|
195
|
+
profilePath: opts.profilePath,
|
|
196
|
+
binaryPath: opts.binaryPath,
|
|
197
|
+
binaryProvenance: opts.binaryProvenance
|
|
194
198
|
}));
|
|
195
199
|
console.log(_messages__rspack_import_5.io());
|
|
196
200
|
} else {
|
|
@@ -208,25 +212,32 @@ var __webpack_modules__ = {
|
|
|
208
212
|
console.log(_messages__rspack_import_5.e_(manifest, opts.browser, message, browserLabel, updateSuffix || void 0, {
|
|
209
213
|
includeExtensionId: opts.includeExtensionId,
|
|
210
214
|
runLabel,
|
|
211
|
-
profilePath: opts.profilePath
|
|
215
|
+
profilePath: opts.profilePath,
|
|
216
|
+
binaryPath: opts.binaryPath,
|
|
217
|
+
binaryProvenance: opts.binaryProvenance
|
|
212
218
|
}));
|
|
213
219
|
console.log(_messages__rspack_import_5.io());
|
|
214
220
|
}
|
|
215
221
|
} catch {
|
|
222
|
+
const provenanceNote = _messages__rspack_import_5.xX(opts.binaryProvenance);
|
|
216
223
|
console.log(_messages__rspack_import_5.io());
|
|
217
224
|
console.log((0, _helpers_messaging__rspack_import_3.Nr)({
|
|
218
225
|
rows: [
|
|
219
226
|
{
|
|
220
227
|
label: 'Browser',
|
|
221
|
-
value: browserLabel
|
|
228
|
+
value: provenanceNote ? `${browserLabel} ${provenanceNote}` : browserLabel
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
label: 'Binary',
|
|
232
|
+
value: provenanceNote ? _messages__rspack_import_5.Yy(opts.binaryPath || '') : ''
|
|
222
233
|
},
|
|
223
234
|
{
|
|
224
235
|
label: 'Output',
|
|
225
|
-
value: opts.outPath
|
|
236
|
+
value: _messages__rspack_import_5.Yy(opts.outPath)
|
|
226
237
|
},
|
|
227
238
|
{
|
|
228
239
|
label: 'Profile',
|
|
229
|
-
value: opts.profilePath || ''
|
|
240
|
+
value: _messages__rspack_import_5.Yy(opts.profilePath || '')
|
|
230
241
|
}
|
|
231
242
|
]
|
|
232
243
|
}));
|
|
@@ -468,59 +479,55 @@ var __webpack_modules__ = {
|
|
|
468
479
|
return `${getLoggingPrefix('debug')} browser banner=failed reason="${message}"`;
|
|
469
480
|
}
|
|
470
481
|
function skippingBrowserLaunchDueToCompileErrors() {
|
|
471
|
-
return `${getLoggingPrefix('warn')}
|
|
482
|
+
return `${getLoggingPrefix('warn')} Skipping the browser launch, the build has compile errors.`;
|
|
472
483
|
}
|
|
473
484
|
function browserNotInstalledError(browser, browserBinaryLocation) {
|
|
474
|
-
const isUnreachable = 'null' === browserBinaryLocation ?
|
|
485
|
+
const isUnreachable = 'null' === browserBinaryLocation ? `${capitalizedBrowserName(browser)} isn't installed.\n` : `Can't find the ${capitalizedBrowserName(browser)} binary.\n`;
|
|
475
486
|
const wslHint = (()=>{
|
|
476
487
|
if (!isWsl()) return '';
|
|
477
488
|
const example = '/mnt/c/Program Files/Google/Chrome/Application/chrome.exe';
|
|
478
|
-
return `\n\
|
|
489
|
+
return `\n\nWSL detected:\n- Install a Linux browser in WSL, or\n- Provide a Windows binary path via ${pintor__rspack_import_8_default().blue('--chromium-binary')} ${pintor__rspack_import_8_default().gray(`"${example}"`)}\n (Tip: a shell alias like ${pintor__rspack_import_8_default().gray('google-chrome=...')} won't be used by Extension.js, use a real path or wrapper script.)`;
|
|
479
490
|
})();
|
|
480
|
-
return `${getLoggingPrefix('error')} ${isUnreachable}
|
|
491
|
+
return `${getLoggingPrefix('error')} ${isUnreachable}${pintor__rspack_import_8_default().gray('NOT FOUND')} ${pintor__rspack_import_8_default().underline(browserBinaryLocation || `${capitalizedBrowserName(browser)}BROWSER`)}\nInstall the missing browser, or choose another one with ${pintor__rspack_import_8_default().blue('--browser')} ${pintor__rspack_import_8_default().gray('<chrome|edge|firefox>')}.` + wslHint;
|
|
481
492
|
}
|
|
482
493
|
function usingManagedChromiumFamilyFallback(requestedBrowser, fallbackBrowser, binaryPath) {
|
|
483
|
-
return `${getLoggingPrefix('info')} ${managedBrowserDisplayName(requestedBrowser)}
|
|
484
|
-
}
|
|
485
|
-
function resolvedBrowserBinary(browser, binaryPath, versionLine) {
|
|
486
|
-
const version = versionLine && versionLine.trim().length > 0 ? versionLine.trim() : capitalizedBrowserName(browser);
|
|
487
|
-
return `${getLoggingPrefix('info')} Browser: ${version} ${pintor__rspack_import_8_default().gray('at')} ${pintor__rspack_import_8_default().underline(binaryPath)}.`;
|
|
494
|
+
return `${getLoggingPrefix('info')} ${managedBrowserDisplayName(requestedBrowser)} isn't installed, so the managed ${managedBrowserDisplayName(fallbackBrowser)} runs instead.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(binaryPath)}\nRun ${pintor__rspack_import_8_default().blue(`npx extension install ${requestedBrowser}`)} to use ${managedBrowserDisplayName(requestedBrowser)} itself.`;
|
|
488
495
|
}
|
|
489
496
|
function preferringSystemBrowserOverSnapshot(systemBinary, snapshotBinary) {
|
|
490
|
-
return `${getLoggingPrefix('info')}
|
|
497
|
+
return `${getLoggingPrefix('info')} Using the installed browser instead of the cached Chromium snapshot (a dev-channel build).\n${pintor__rspack_import_8_default().gray('USING')} ${pintor__rspack_import_8_default().underline(systemBinary)}\n${pintor__rspack_import_8_default().gray('CACHED')} ${pintor__rspack_import_8_default().underline(snapshotBinary)}\nSet ${pintor__rspack_import_8_default().blue('EXTENSION_PREFER_CHROMIUM_SNAPSHOT=true')} to use the cached snapshot.`;
|
|
491
498
|
}
|
|
492
499
|
function mv2NotSupportedByChromium(extensionPath) {
|
|
493
|
-
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow('This extension declares Manifest V2, which modern Chromium refuses to load.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser will reject it at launch (a native dialog, not a console error), so the dev session
|
|
500
|
+
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow('This extension declares Manifest V2, which modern Chromium refuses to load.')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser will reject it at launch (a native dialog, not a console error), so the dev session can't attach.\nRun it on an MV2-capable browser (${pintor__rspack_import_8_default().blue('--browser firefox')}) or migrate the manifest to MV3.`;
|
|
494
501
|
}
|
|
495
502
|
function mv3BackgroundScriptsNotSupportedByChromium(extensionPath) {
|
|
496
|
-
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow("This MV3 extension declares Firefox-style background.scripts with no service_worker, Chromium refuses to load it.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser rejects it at launch with no console error, so the dev session
|
|
503
|
+
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow("This MV3 extension declares Firefox-style background.scripts with no service_worker, Chromium refuses to load it.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser rejects it at launch with no console error, so the dev session can't attach.\nRun it on the browser it targets (${pintor__rspack_import_8_default().blue('--browser firefox')}) or declare ${pintor__rspack_import_8_default().blue('background.service_worker')} for Chromium.`;
|
|
497
504
|
}
|
|
498
505
|
function unsupportedManifestVersionOnChromium(extensionPath, declared) {
|
|
499
506
|
const value = void 0 === declared ? 'no manifest_version' : `manifest_version ${JSON.stringify(declared)}`;
|
|
500
|
-
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow(`This extension declares ${value}, which Chromium refuses as an unsupported manifest version.`)}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser rejects it at launch (a native dialog, not a console error), so the dev session
|
|
507
|
+
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow(`This extension declares ${value}, which Chromium refuses as an unsupported manifest version.`)}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThe browser rejects it at launch (a native dialog, not a console error), so the dev session can't attach.\nDeclare ${pintor__rspack_import_8_default().blue('"manifest_version": 3')} in the source manifest.`;
|
|
501
508
|
}
|
|
502
509
|
function chromiumInvalidMatchPatterns(extensionPath, patterns) {
|
|
503
510
|
const shown = patterns.slice(0, 6);
|
|
504
511
|
const more = patterns.length - shown.length;
|
|
505
|
-
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow(
|
|
512
|
+
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow("This extension declares match patterns Chrome refuses, the whole extension won't load.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\n` + shown.map((pattern)=>`${pintor__rspack_import_8_default().gray('PATTERN')} ${pintor__rspack_import_8_default().red(pattern)}\n`).join('') + (more > 0 ? `${pintor__rspack_import_8_default().gray(`…and ${more} more`)}\n` : '') + `A match pattern's host wildcard must be ${pintor__rspack_import_8_default().blue('*')} or ${pintor__rspack_import_8_default().blue('*.domain.tld')}, ` + `Chrome refuses a wildcard anywhere else in the host.\n` + `Replace the host with ${pintor__rspack_import_8_default().blue('*')} or ${pintor__rspack_import_8_default().blue('*.domain.tld')} in the source manifest.`;
|
|
506
513
|
}
|
|
507
514
|
function chromiumManifestLoadBlockers(extensionPath, blockers) {
|
|
508
|
-
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow(
|
|
515
|
+
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow("This manifest declares shapes Chrome refuses, the whole extension won't load.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\n` + blockers.map((blocker)=>`${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(blocker)}\n`).join('') + `Chrome rejects the extension at load, so no service worker or content script ever runs.\n` + "Fix these in the source manifest.";
|
|
509
516
|
}
|
|
510
517
|
function chromiumExtensionLoadRefused(extensionPath, reason) {
|
|
511
|
-
return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red(
|
|
518
|
+
return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red("The browser refused to load this extension, so it isn't running.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No service worker, content script, or page from this extension will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser doesn't pick it up, restart the dev session.";
|
|
512
519
|
}
|
|
513
520
|
function chromiumExtensionLoadUnconfirmed(extensionPath) {
|
|
514
|
-
return `${getLoggingPrefix('warn')} Extension.js
|
|
521
|
+
return `${getLoggingPrefix('warn')} Extension.js couldn't confirm that the browser loaded this extension.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionPath)}\nThis browser rejected the debugging call that loads and verifies it, so the extension may be missing.\nChrome ignores the --load-extension switch unless the DisableLoadExtensionCommandLineSwitch policy is disabled.\nOpen chrome://extensions to check whether the extension is there, and report this if it isn't.`;
|
|
515
522
|
}
|
|
516
523
|
function geckoAddonLoadRefused(addonPath, reason) {
|
|
517
|
-
return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red(
|
|
524
|
+
return `${getLoggingPrefix('error')} ${pintor__rspack_import_8_default().red("The browser refused to load this add-on, so it isn't running.")}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(addonPath)}\n` + (reason ? `${pintor__rspack_import_8_default().gray('REASON')} ${pintor__rspack_import_8_default().red(reason)}\n` : '') + `No background script, content script, or page from this add-on will run, and no Extension ID was assigned.\n` + `Fix the reason above and save.\n` + "If the browser doesn't pick it up, restart the dev session.";
|
|
518
525
|
}
|
|
519
526
|
function devChannelSnapshotInUse(binaryPath) {
|
|
520
527
|
return `${getLoggingPrefix('warn')} ${pintor__rspack_import_8_default().brightYellow('This is a Chromium tip-of-tree snapshot (dev channel, not a stable release).')}\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(binaryPath)}\nBehavior may differ from stable Chrome.\nInstall a stable browser or remove the snapshot to stop using it.`;
|
|
521
528
|
}
|
|
522
529
|
function browserLaunchError(browser, error) {
|
|
523
|
-
return `${getLoggingPrefix('error')}
|
|
530
|
+
return `${getLoggingPrefix('error')} Can't launch ${capitalizedBrowserName(browser)}.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
524
531
|
}
|
|
525
532
|
function enhancedProcessManagementCleanup(browser) {
|
|
526
533
|
return `${getLoggingPrefix('debug')} proc cleanup browser=${browser}`;
|
|
@@ -529,53 +536,53 @@ var __webpack_modules__ = {
|
|
|
529
536
|
return `${getLoggingPrefix('debug')} proc terminate browser=${browser} mode=graceful`;
|
|
530
537
|
}
|
|
531
538
|
function enhancedProcessManagementForceKill(browser) {
|
|
532
|
-
return `${getLoggingPrefix('warn')} ${capitalizedBrowserName(browser)}
|
|
539
|
+
return `${getLoggingPrefix('warn')} ${capitalizedBrowserName(browser)} didn't exit gracefully, forcing the process to close.\nThis is a normal cleanup step and doesn't affect your build output.`;
|
|
533
540
|
}
|
|
534
541
|
function enhancedProcessManagementCleanupError(browser, error) {
|
|
535
|
-
return `${getLoggingPrefix('error')}
|
|
542
|
+
return `${getLoggingPrefix('error')} ${capitalizedBrowserName(browser)} cleanup failed.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
536
543
|
}
|
|
537
544
|
function enhancedProcessManagementUncaughtException(browser, error) {
|
|
538
|
-
return `${getLoggingPrefix('error')} Uncaught exception in ${capitalizedBrowserName(browser)} process
|
|
545
|
+
return `${getLoggingPrefix('error')} Uncaught exception in the ${capitalizedBrowserName(browser)} process.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
539
546
|
}
|
|
540
547
|
function enhancedProcessManagementUnhandledRejection(browser, reason) {
|
|
541
|
-
return `${getLoggingPrefix('error')} Unhandled rejection in ${capitalizedBrowserName(browser)} process
|
|
548
|
+
return `${getLoggingPrefix('error')} Unhandled rejection in the ${capitalizedBrowserName(browser)} process.\n${pintor__rspack_import_8_default().red(errorDetail(reason))}`;
|
|
542
549
|
}
|
|
543
550
|
function generalBrowserError(browser, error) {
|
|
544
|
-
return `${getLoggingPrefix('error')}
|
|
551
|
+
return `${getLoggingPrefix('error')} ${capitalizedBrowserName(browser)} hit an unexpected error.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
545
552
|
}
|
|
546
553
|
function errorConnectingToBrowser(browser, port) {
|
|
547
554
|
const where = 'number' == typeof port ? ` on port ${port}` : '';
|
|
548
|
-
return `${getLoggingPrefix('error')}
|
|
555
|
+
return `${getLoggingPrefix('error')} Can't connect to ${capitalizedBrowserName(browser)}${where} after several retries.\nAnother browser instance is usually still holding that debugging port, often one left over from an earlier dev session.\nClose ${capitalizedBrowserName(browser)} windows opened by Extension.js and run the command again, or pass ${pintor__rspack_import_8_default().blue('--profile')} ${pintor__rspack_import_8_default().gray('<path>')} to launch against a separate profile.`;
|
|
549
556
|
}
|
|
550
557
|
function waitingForBrowserDebugger(browser, port, attempt, maxRetries) {
|
|
551
|
-
return `${getLoggingPrefix('
|
|
558
|
+
return `${getLoggingPrefix('debug')} browser debugger=wait target=${browser} port=${port} attempt=${attempt}/${maxRetries}`;
|
|
552
559
|
}
|
|
553
560
|
function addonInstallError(browser, message) {
|
|
554
|
-
return `${getLoggingPrefix('error')} Can't install add-on into ${capitalizedBrowserName(browser)}
|
|
561
|
+
return `${getLoggingPrefix('error')} Can't install the add-on into ${capitalizedBrowserName(browser)}.\n${pintor__rspack_import_8_default().red(message)}`;
|
|
555
562
|
}
|
|
556
563
|
function messagingClientClosedError(browser) {
|
|
557
564
|
return `${getLoggingPrefix('error')} The ${capitalizedBrowserName(browser)} messaging channel closed unexpectedly.\nThe browser exited, or its debugging connection was dropped while the dev session was still running.\nCheck whether the browser window was closed by hand, then run the command again.`;
|
|
558
565
|
}
|
|
559
566
|
function connectionClosedError(browser) {
|
|
560
|
-
return `${getLoggingPrefix('error')} The debugging connection to ${capitalizedBrowserName(browser)} closed unexpectedly.\nReload and HMR need that connection, so the dev session
|
|
567
|
+
return `${getLoggingPrefix('error')} The debugging connection to ${capitalizedBrowserName(browser)} closed unexpectedly.\nReload and HMR need that connection, so the dev session can't keep the extension up to date.\nRestart the dev session.\nIf it keeps happening, launch with ${pintor__rspack_import_8_default().blue('--profile')} ${pintor__rspack_import_8_default().gray('<path>')} to rule out a corrupted browser profile.`;
|
|
561
568
|
}
|
|
562
569
|
function targetActorHasActiveRequestError(browser, targetActor) {
|
|
563
570
|
return `${getLoggingPrefix('error')} Target actor ${pintor__rspack_import_8_default().gray(targetActor)} has an active request for ${capitalizedBrowserName(browser)}.`;
|
|
564
571
|
}
|
|
565
572
|
function parsingPacketError(browser, error) {
|
|
566
|
-
return `${getLoggingPrefix('error')}
|
|
573
|
+
return `${getLoggingPrefix('error')} Can't parse a message from ${capitalizedBrowserName(browser)}.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
567
574
|
}
|
|
568
575
|
function messageWithoutSenderError(browser, message) {
|
|
569
|
-
return `${getLoggingPrefix('error')}
|
|
576
|
+
return `${getLoggingPrefix('error')} Received a message without a sender from ${capitalizedBrowserName(browser)}.\n${pintor__rspack_import_8_default().red(JSON.stringify(message))}`;
|
|
570
577
|
}
|
|
571
578
|
function chromeProcessExited(code) {
|
|
572
579
|
return `${getLoggingPrefix('debug')} proc exit browser=chrome code=${code}`;
|
|
573
580
|
}
|
|
574
581
|
function chromeProcessError(error) {
|
|
575
|
-
return `${getLoggingPrefix('error')} Chrome process error
|
|
582
|
+
return `${getLoggingPrefix('error')} The Chrome process reported an error.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
576
583
|
}
|
|
577
584
|
function chromeFailedToSpawn(error) {
|
|
578
|
-
return `${getLoggingPrefix('error')}
|
|
585
|
+
return `${getLoggingPrefix('error')} Can't start the Chrome process.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
579
586
|
}
|
|
580
587
|
function chromeInitializingEnhancedReload() {
|
|
581
588
|
return `${getLoggingPrefix('debug')} proc enhancedReload=init spawn=direct browser=chrome`;
|
|
@@ -584,16 +591,16 @@ var __webpack_modules__ = {
|
|
|
584
591
|
return `${getLoggingPrefix('debug')} browser locate browser=${browser}`;
|
|
585
592
|
}
|
|
586
593
|
function devChromeProfilePath(path) {
|
|
587
|
-
return `${getLoggingPrefix('
|
|
594
|
+
return `${getLoggingPrefix('debug')} browser profile=chrome path=${path}`;
|
|
588
595
|
}
|
|
589
596
|
function chromiumDryRunNotLaunching() {
|
|
590
|
-
return `${getLoggingPrefix('info')} Dry run:
|
|
597
|
+
return `${getLoggingPrefix('info')} Dry run: skipping the browser launch.`;
|
|
591
598
|
}
|
|
592
599
|
function chromiumDryRunBinary(path) {
|
|
593
|
-
return `${getLoggingPrefix('info')}
|
|
600
|
+
return `${getLoggingPrefix('info')} ${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(path)}`;
|
|
594
601
|
}
|
|
595
602
|
function chromiumDryRunFlags(flags) {
|
|
596
|
-
return `${getLoggingPrefix('info')}
|
|
603
|
+
return `${getLoggingPrefix('info')} ${pintor__rspack_import_8_default().gray('FLAGS')} ${pintor__rspack_import_8_default().gray(flags)}`;
|
|
597
604
|
}
|
|
598
605
|
function prettyPuppeteerInstallGuidance(browser, rawGuidance, cacheDir) {
|
|
599
606
|
const dim = pintor__rspack_import_8_default().gray;
|
|
@@ -605,9 +612,7 @@ var __webpack_modules__ = {
|
|
|
605
612
|
const finalCachePath = browserNorm && cacheDir ? node_path__rspack_import_3.join(cacheDir, browserNorm) : cacheDir;
|
|
606
613
|
const installCommand = preferredManagedInstallCommand(browserNorm);
|
|
607
614
|
const browserDisplay = managedBrowserDisplayName(browserNorm);
|
|
608
|
-
body.push(`${getLoggingPrefix('warn')}
|
|
609
|
-
body.push('');
|
|
610
|
-
body.push(`${browserDisplay} is not available in the managed browser cache.`);
|
|
615
|
+
body.push(`${getLoggingPrefix('warn')} ${browserDisplay} isn't available in the managed browser cache.`);
|
|
611
616
|
body.push('');
|
|
612
617
|
body.push(pintor__rspack_import_8_default().gray(`Install ${browserDisplay} into the managed browser cache:`));
|
|
613
618
|
body.push('');
|
|
@@ -620,9 +625,9 @@ var __webpack_modules__ = {
|
|
|
620
625
|
}
|
|
621
626
|
if (finalCachePath) {
|
|
622
627
|
body.push('');
|
|
623
|
-
body.push(`${dim('
|
|
628
|
+
body.push(`${dim('PATH')} ${pintor__rspack_import_8_default().underline(finalCachePath)}`);
|
|
624
629
|
}
|
|
625
|
-
body.push(
|
|
630
|
+
body.push("Run your command again after the install finishes.");
|
|
626
631
|
return `${body.join('\n')}\n`;
|
|
627
632
|
}
|
|
628
633
|
function firefoxLaunchCalled() {
|
|
@@ -635,16 +640,16 @@ var __webpack_modules__ = {
|
|
|
635
640
|
return `${getLoggingPrefix('debug')} browser args=none`;
|
|
636
641
|
}
|
|
637
642
|
function firefoxFailedToStart(error) {
|
|
638
|
-
return `${getLoggingPrefix('error')} Firefox failed to start
|
|
643
|
+
return `${getLoggingPrefix('error')} Firefox failed to start.\n${pintor__rspack_import_8_default().red(errorDetail(error))}`;
|
|
639
644
|
}
|
|
640
645
|
function firefoxDryRunNotLaunching() {
|
|
641
|
-
return `${getLoggingPrefix('info')} Dry run:
|
|
646
|
+
return `${getLoggingPrefix('info')} Dry run: skipping the browser launch.`;
|
|
642
647
|
}
|
|
643
648
|
function firefoxDryRunBinary(path) {
|
|
644
|
-
return `${getLoggingPrefix('info')}
|
|
649
|
+
return `${getLoggingPrefix('info')} ${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(path)}`;
|
|
645
650
|
}
|
|
646
651
|
function firefoxDryRunConfig(cfg) {
|
|
647
|
-
return `${getLoggingPrefix('info')}
|
|
652
|
+
return `${getLoggingPrefix('info')} ${pintor__rspack_import_8_default().gray('CONFIG')} ${pintor__rspack_import_8_default().gray(cfg)}`;
|
|
648
653
|
}
|
|
649
654
|
function safariBuildCalled() {
|
|
650
655
|
return `${getLoggingPrefix('debug')} browser build browser=safari`;
|
|
@@ -658,29 +663,29 @@ var __webpack_modules__ = {
|
|
|
658
663
|
return `${getLoggingPrefix('warn')} Safari extensions can only be built on macOS.\nDetected ${pintor__rspack_import_8_default().gray(prettyPlatform(platform))}.\nTarget another browser via ${pintor__rspack_import_8_default().blue('--browser')} ${pintor__rspack_import_8_default().gray('<chrome|edge|firefox>')}, or run this command on a Mac with Xcode.`;
|
|
659
664
|
}
|
|
660
665
|
function safariPackagingSkippedNonMac(platform) {
|
|
661
|
-
return `${getLoggingPrefix('warn')} Safari packaging needs macOS with Xcode, detected ${pintor__rspack_import_8_default().gray(prettyPlatform(platform))}, so the Xcode packaging step is skipped.\nThe web-extension build in ${pintor__rspack_import_8_default().
|
|
666
|
+
return `${getLoggingPrefix('warn')} Safari packaging needs macOS with Xcode, detected ${pintor__rspack_import_8_default().gray(prettyPlatform(platform))}, so the Xcode packaging step is skipped.\nThe web-extension build in ${pintor__rspack_import_8_default().underline('dist/safari')} is still complete and can be packaged later on a Mac with ${pintor__rspack_import_8_default().blue('extension build --browser=safari')}.`;
|
|
662
667
|
}
|
|
663
668
|
function safariXcodeRequired(developerDir) {
|
|
664
669
|
const current = developerDir ? `${pintor__rspack_import_8_default().gray('Active toolchain:')} ${pintor__rspack_import_8_default().underline(developerDir)}` : `${pintor__rspack_import_8_default().gray('No active developer directory was found.')}`;
|
|
665
670
|
return `${getLoggingPrefix('error')} Safari packaging needs the full Xcode app (not just the Command Line Tools).\n${pintor__rspack_import_8_default().red('NOT FOUND')} ${pintor__rspack_import_8_default().underline('safari-web-extension-converter')}\n${current}\n\nTo enable Safari builds:\n- Install ${pintor__rspack_import_8_default().yellow('Xcode')} from the Mac App Store, then\n- Point the toolchain at it: ${pintor__rspack_import_8_default().blue('sudo xcode-select --switch')} ${pintor__rspack_import_8_default().gray('/Applications/Xcode.app')}\n- Finish setup once: ${pintor__rspack_import_8_default().blue('xcodebuild -runFirstLaunch')}\n\nPrefer to keep building now?\nTarget another browser via ${pintor__rspack_import_8_default().blue('--browser')} ${pintor__rspack_import_8_default().gray('<chrome|edge|firefox>')}.`;
|
|
666
671
|
}
|
|
667
672
|
function safariToolchainMissing(tool) {
|
|
668
|
-
return `${getLoggingPrefix('error')} Safari packaging tool
|
|
673
|
+
return `${getLoggingPrefix('error')} Can't find the Safari packaging tool.\n${pintor__rspack_import_8_default().gray('NOT FOUND')} ${pintor__rspack_import_8_default().underline(tool)}\nYour Xcode install looks incomplete.\nRun ${pintor__rspack_import_8_default().blue('xcodebuild -runFirstLaunch')}, or reinstall Xcode from the Mac App Store.`;
|
|
669
674
|
}
|
|
670
675
|
function safariConverting(extensionDir) {
|
|
671
|
-
return `${getLoggingPrefix('info')}
|
|
676
|
+
return `${getLoggingPrefix('info')} Converting the web extension into a Safari app project…\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(extensionDir)}`;
|
|
672
677
|
}
|
|
673
678
|
function safariConverted(projectDir) {
|
|
674
|
-
return `${getLoggingPrefix('success')} Generated the Safari Xcode project
|
|
679
|
+
return `${getLoggingPrefix('success')} Generated the Safari Xcode project.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(projectDir)}`;
|
|
675
680
|
}
|
|
676
681
|
function safariBuilding(scheme) {
|
|
677
|
-
return `${getLoggingPrefix('info')}
|
|
682
|
+
return `${getLoggingPrefix('info')} Building the Safari app with xcodebuild (scheme ${pintor__rspack_import_8_default().gray(scheme)})…`;
|
|
678
683
|
}
|
|
679
684
|
function safariBuilt(appPath) {
|
|
680
|
-
return `${getLoggingPrefix('success')} Built the Safari app
|
|
685
|
+
return `${getLoggingPrefix('success')} Built the Safari app.\n${pintor__rspack_import_8_default().gray('PATH')} ${pintor__rspack_import_8_default().underline(appPath)}`;
|
|
681
686
|
}
|
|
682
687
|
function safariOpening(target) {
|
|
683
|
-
return `${getLoggingPrefix('info')}
|
|
688
|
+
return `${getLoggingPrefix('info')} Opening ${pintor__rspack_import_8_default().underline(target)}`;
|
|
684
689
|
}
|
|
685
690
|
function safariToolFailed(tool, exitCode, outputTail) {
|
|
686
691
|
const code = null === exitCode ? 'no exit code' : `exit ${exitCode}`;
|
|
@@ -688,13 +693,13 @@ var __webpack_modules__ = {
|
|
|
688
693
|
return `${getLoggingPrefix('error')} Safari packaging tool ${pintor__rspack_import_8_default().underline(tool)} failed (${pintor__rspack_import_8_default().red(code)}).${tail}`;
|
|
689
694
|
}
|
|
690
695
|
function safariConverterWarnings(warnings) {
|
|
691
|
-
return `${getLoggingPrefix('warn')} safari-web-extension-converter reported ${pintor__rspack_import_8_default().yellow(String(warnings.length))} warning
|
|
696
|
+
return `${getLoggingPrefix('warn')} safari-web-extension-converter reported ${pintor__rspack_import_8_default().yellow(String(warnings.length))} ${1 === warnings.length ? 'warning' : 'warnings'}, some manifest keys/APIs may not be supported by Safari:\n` + warnings.map((line)=>` ${pintor__rspack_import_8_default().gray('•')} ${line}`).join('\n');
|
|
692
697
|
}
|
|
693
698
|
function safariDefaultBundleIdNote(bundleId) {
|
|
694
|
-
return `${getLoggingPrefix('info')}
|
|
699
|
+
return `${getLoggingPrefix('info')} Using the generated bundle id ${pintor__rspack_import_8_default().gray(bundleId)}.\nFor an app you plan to distribute, set your own with ${pintor__rspack_import_8_default().blue('--bundle-id')} now.\nChanging it later makes Safari treat the extension as a new identity.`;
|
|
695
700
|
}
|
|
696
701
|
function safariOpenHint(appPath, appName) {
|
|
697
|
-
return `${getLoggingPrefix('info')} Launch it once to register with Safari: ${pintor__rspack_import_8_default().blue('open')} ${pintor__rspack_import_8_default().underline(`"${appPath}"`)}\nThen enable ${pintor__rspack_import_8_default().
|
|
702
|
+
return `${getLoggingPrefix('info')} Launch it once to register with Safari: ${pintor__rspack_import_8_default().blue('open')} ${pintor__rspack_import_8_default().underline(`"${appPath}"`)}\nThen enable ${pintor__rspack_import_8_default().yellow(appName)} via Safari ▸ Develop ▸ ${pintor__rspack_import_8_default().yellow('Allow Unsigned Extensions')} and Safari ▸ Settings ▸ Extensions.`;
|
|
698
703
|
}
|
|
699
704
|
function safariDryRunNotBuilding() {
|
|
700
705
|
return `${getLoggingPrefix('info')} Dry run: skip the Safari app build.`;
|
|
@@ -706,22 +711,22 @@ var __webpack_modules__ = {
|
|
|
706
711
|
return `${getLoggingPrefix('info')} xcodebuild: ${pintor__rspack_import_8_default().gray(cmd)}.`;
|
|
707
712
|
}
|
|
708
713
|
function safariNextSteps(appName) {
|
|
709
|
-
return `${getLoggingPrefix('info')} One-time setup to load ${pintor__rspack_import_8_default().
|
|
714
|
+
return `${getLoggingPrefix('info')} One-time setup to load ${pintor__rspack_import_8_default().yellow(appName)} in Safari:\n ${pintor__rspack_import_8_default().gray('1.')} Safari ▸ Settings ▸ Advanced ▸ check ${pintor__rspack_import_8_default().yellow('“Show features for web developers”')}\n ${pintor__rspack_import_8_default().gray('2.')} Safari ▸ Develop ▸ ${pintor__rspack_import_8_default().yellow('Allow Unsigned Extensions')} ${pintor__rspack_import_8_default().gray('(resets each launch)')}\n ${pintor__rspack_import_8_default().gray('3.')} Safari ▸ Settings ▸ Extensions ▸ turn on ${pintor__rspack_import_8_default().yellow(appName)}\n ${pintor__rspack_import_8_default().gray('→')} The app window that just opened can also take you there.`;
|
|
710
715
|
}
|
|
711
716
|
function safariRegistered(appName) {
|
|
712
|
-
return `${getLoggingPrefix('success')} Safari recognizes ${pintor__rspack_import_8_default().
|
|
717
|
+
return `${getLoggingPrefix('success')} Safari recognizes ${pintor__rspack_import_8_default().yellow(appName)}, finish enabling it with the steps above.`;
|
|
713
718
|
}
|
|
714
719
|
function safariNotYetRegistered(appName) {
|
|
715
|
-
return `${getLoggingPrefix('warn')} Safari hasn't picked up ${pintor__rspack_import_8_default().
|
|
720
|
+
return `${getLoggingPrefix('warn')} Safari hasn't picked up ${pintor__rspack_import_8_default().yellow(appName)} yet.\nOpen the app once, then check Safari ▸ Settings ▸ Extensions.`;
|
|
716
721
|
}
|
|
717
722
|
function safariRebuilt(appName) {
|
|
718
|
-
return `${getLoggingPrefix('success')} Rebuilt ${pintor__rspack_import_8_default().
|
|
723
|
+
return `${getLoggingPrefix('success')} Rebuilt ${pintor__rspack_import_8_default().yellow(appName)}, reload the page (or toggle the extension) in Safari to see changes.`;
|
|
719
724
|
}
|
|
720
725
|
function safariProjectStale() {
|
|
721
|
-
return `${getLoggingPrefix('info')}
|
|
726
|
+
return `${getLoggingPrefix('info')} Regenerating the Xcode project, manifest.json or identity options changed since it was generated.`;
|
|
722
727
|
}
|
|
723
728
|
function safariForcedRegeneration() {
|
|
724
|
-
return `${getLoggingPrefix('info')}
|
|
729
|
+
return `${getLoggingPrefix('info')} Regenerating the Xcode project, ${pintor__rspack_import_8_default().blue('--force-regenerate')} is set.`;
|
|
725
730
|
}
|
|
726
731
|
function safariRegenerationDiscards(preservedKeys) {
|
|
727
732
|
return `${getLoggingPrefix('warn')} Regenerating replaces the Xcode project: customizations made in Xcode (entitlements, capabilities, added files/targets) are ${pintor__rspack_import_8_default().red('discarded')}.\nPreserved automatically: ${pintor__rspack_import_8_default().yellow(preservedKeys.join(', '))}.\nIf you customized the project, back it up before continuing.`;
|
|
@@ -730,7 +735,7 @@ var __webpack_modules__ = {
|
|
|
730
735
|
return `${getLoggingPrefix('info')} Preserved Xcode build settings across regeneration: ${pintor__rspack_import_8_default().yellow(keys.join(', '))}.\nIf any other project-level tweaks were lost, reconfigure them in Xcode.`;
|
|
731
736
|
}
|
|
732
737
|
function safariSkippingConversion() {
|
|
733
|
-
return `${getLoggingPrefix('info')}
|
|
738
|
+
return `${getLoggingPrefix('info')} Skipping the conversion, the Xcode project is up to date with manifest.json.`;
|
|
734
739
|
}
|
|
735
740
|
function cdpClientFoundTargets(count) {
|
|
736
741
|
return `${getLoggingPrefix('debug')} cdp targets=${count}`;
|
|
@@ -742,7 +747,7 @@ var __webpack_modules__ = {
|
|
|
742
747
|
return `${getLoggingPrefix('debug')} cdp connected host=${host} port=${port}`;
|
|
743
748
|
}
|
|
744
749
|
function cdpClientConnectionError(error) {
|
|
745
|
-
return `${getLoggingPrefix('error')} Chrome
|
|
750
|
+
return `${getLoggingPrefix('error')} The Chrome debugging connection failed.\n${pintor__rspack_import_8_default().red(error)}`;
|
|
746
751
|
}
|
|
747
752
|
function cdpClientBrowserConnectionEstablished() {
|
|
748
753
|
return `${getLoggingPrefix('debug')} cdp browserConnection=established`;
|
|
@@ -751,11 +756,26 @@ var __webpack_modules__ = {
|
|
|
751
756
|
return `${getLoggingPrefix('debug')} cdp connection=closed`;
|
|
752
757
|
}
|
|
753
758
|
function cdpClientExtensionInfoFailed(extensionId, error) {
|
|
754
|
-
return `${getLoggingPrefix('error')} Chrome
|
|
759
|
+
return `${getLoggingPrefix('error')} Chrome couldn't read extension info for ${pintor__rspack_import_8_default().gray(extensionId)}.\n${pintor__rspack_import_8_default().red(error)}`;
|
|
755
760
|
}
|
|
756
761
|
function firefoxRdpClientConnected(host, port) {
|
|
757
762
|
return `${getLoggingPrefix('debug')} rdp connected host=${host} port=${port}`;
|
|
758
763
|
}
|
|
764
|
+
function collapseHomeDirInCardValue(value) {
|
|
765
|
+
const raw = String(value || '');
|
|
766
|
+
const home = node_os__rspack_import_2.homedir();
|
|
767
|
+
if (!home || !raw.startsWith(home)) return raw;
|
|
768
|
+
const rest = raw.slice(home.length);
|
|
769
|
+
if ('' === rest) return '~';
|
|
770
|
+
if (rest.startsWith(node_path__rspack_import_3.sep) || rest.startsWith('/')) return `~${rest}`;
|
|
771
|
+
return raw;
|
|
772
|
+
}
|
|
773
|
+
function binaryProvenanceNote(provenance) {
|
|
774
|
+
if ('pinned' === provenance) return '(pinned with --chromium-binary)';
|
|
775
|
+
if ('system' === provenance) return '(system, not the managed default)';
|
|
776
|
+
if ('snapshot' === provenance) return '(cached snapshot)';
|
|
777
|
+
return '';
|
|
778
|
+
}
|
|
759
779
|
function runningInDevelopment(manifest, browser, message, browserVersionLine, updateSuffix, opts) {
|
|
760
780
|
const capitalize = (str)=>str.charAt(0).toUpperCase() + str.slice(1);
|
|
761
781
|
const manifestName = manifest.name || 'Extension.js';
|
|
@@ -774,10 +794,10 @@ var __webpack_modules__ = {
|
|
|
774
794
|
default:
|
|
775
795
|
browserDevToolsUrl = '';
|
|
776
796
|
}
|
|
777
|
-
if (!message.data) return `${getLoggingPrefix('error')} No
|
|
797
|
+
if (!message.data) return `${getLoggingPrefix('error')} No client data received for ${manifestName}.\n\n${pintor__rspack_import_8_default().red("Extension.js can't read data from your extension.")}\n${pintor__rspack_import_8_default().red('To fix, ensure that:')}\n\n- Your extension is enabled in ${pintor__rspack_import_8_default().underline(browserDevToolsUrl)}\n- No previous ${capitalize(browser)} browser instance is open\n\nIf both hold, restart the ${pintor__rspack_import_8_default().yellow(manifest.name || '')} and the\n${pintor__rspack_import_8_default().yellow('Manager Extension')} in ${pintor__rspack_import_8_default().underline(browserDevToolsUrl)} and try again.\nIf the issue persists, report a bug:\n` + pintor__rspack_import_8_default().underline("https://github.com/extension-js/extension.js/issues");
|
|
778
798
|
const { id = '', management } = message.data;
|
|
779
799
|
if (!management) {
|
|
780
|
-
if ((0, _helpers_messaging__rspack_import_9._o)()) return `${getLoggingPrefix('error')} No management API info received from the client for ${manifestName}.\nThe extension may not have finished loading, or the in-browser companion
|
|
800
|
+
if ((0, _helpers_messaging__rspack_import_9._o)()) return `${getLoggingPrefix('error')} No management API info received from the client for ${manifestName}.\nThe extension may not have finished loading, or the in-browser companion didn't attach.`;
|
|
781
801
|
}
|
|
782
802
|
const { version = '' } = management;
|
|
783
803
|
const extensionVersion = process.env.EXTENSION_DEVELOP_VERSION || process.env.EXTENSION_CLI_VERSION || (()=>{
|
|
@@ -787,7 +807,10 @@ var __webpack_modules__ = {
|
|
|
787
807
|
return 'unknown';
|
|
788
808
|
}
|
|
789
809
|
})();
|
|
790
|
-
const
|
|
810
|
+
const baseBrowserLabel = (0, _helpers_messaging__rspack_import_9.A6)(String(browser || 'unknown'), resolveBrowserVersionLine(browser, browserVersionLine));
|
|
811
|
+
const provenanceNote = binaryProvenanceNote(opts?.binaryProvenance);
|
|
812
|
+
const browserLabel = provenanceNote ? `${baseBrowserLabel} ${provenanceNote}` : baseBrowserLabel;
|
|
813
|
+
const binaryRowValue = provenanceNote ? collapseHomeDirInCardValue(String(opts?.binaryPath || '').trim()) : '';
|
|
791
814
|
const cleanId = String(id || '').trim();
|
|
792
815
|
const includeExtensionId = opts?.includeExtensionId !== false;
|
|
793
816
|
const updateNotice = updateSuffix ? ` ${updateSuffix}` : '';
|
|
@@ -801,6 +824,10 @@ var __webpack_modules__ = {
|
|
|
801
824
|
label: 'Browser',
|
|
802
825
|
value: browserLabel
|
|
803
826
|
},
|
|
827
|
+
{
|
|
828
|
+
label: 'Binary',
|
|
829
|
+
value: binaryRowValue
|
|
830
|
+
},
|
|
804
831
|
{
|
|
805
832
|
label: 'Extension',
|
|
806
833
|
value: displayVersion ? `${displayName} ${displayVersion}` : displayName
|
|
@@ -811,7 +838,7 @@ var __webpack_modules__ = {
|
|
|
811
838
|
},
|
|
812
839
|
{
|
|
813
840
|
label: 'Profile',
|
|
814
|
-
value: String(opts?.profilePath || '').trim()
|
|
841
|
+
value: collapseHomeDirInCardValue(String(opts?.profilePath || '').trim())
|
|
815
842
|
},
|
|
816
843
|
{
|
|
817
844
|
label: 'Run ID',
|
|
@@ -824,13 +851,13 @@ var __webpack_modules__ = {
|
|
|
824
851
|
return ' ';
|
|
825
852
|
}
|
|
826
853
|
function devChromiumDebugPort(finalPort, requestedPort) {
|
|
827
|
-
return `${getLoggingPrefix('
|
|
854
|
+
return `${getLoggingPrefix('debug')} browser cdpPort=${finalPort} requested=${requestedPort}`;
|
|
828
855
|
}
|
|
829
856
|
function devFirefoxDebugPort(finalPort, requestedPort) {
|
|
830
|
-
return `${getLoggingPrefix('
|
|
857
|
+
return `${getLoggingPrefix('debug')} browser rdpPort=${finalPort} requested=${requestedPort}`;
|
|
831
858
|
}
|
|
832
859
|
function devFirefoxProfilePath(profilePath) {
|
|
833
|
-
return `${getLoggingPrefix('
|
|
860
|
+
return `${getLoggingPrefix('debug')} browser profile=firefox path=${profilePath}`;
|
|
834
861
|
}
|
|
835
862
|
function cdpUnifiedExtensionLog(ts, payload) {
|
|
836
863
|
const data = (()=>{
|
|
@@ -843,22 +870,22 @@ var __webpack_modules__ = {
|
|
|
843
870
|
return `[extension-log ${ts}] ${data}`;
|
|
844
871
|
}
|
|
845
872
|
function browserRunnerError(body) {
|
|
846
|
-
return `${getLoggingPrefix('error')} ${
|
|
873
|
+
return `${getLoggingPrefix('error')} ${body}`;
|
|
847
874
|
}
|
|
848
875
|
function requireChromiumBinaryForChromiumBased() {
|
|
849
|
-
const body = `
|
|
876
|
+
const body = `The ${pintor__rspack_import_8_default().yellow('chromium-based')} target needs a Chromium binary.\nPass ${pintor__rspack_import_8_default().blue('--chromium-binary')} ${pintor__rspack_import_8_default().gray('<abs-path>')} to choose one.\n`;
|
|
850
877
|
return browserRunnerError(body);
|
|
851
878
|
}
|
|
852
879
|
function requireGeckoBinaryForGeckoBased() {
|
|
853
|
-
const body = `
|
|
880
|
+
const body = `The ${pintor__rspack_import_8_default().yellow('gecko-based')} and ${pintor__rspack_import_8_default().yellow('firefox-based')} targets need a Firefox or Gecko binary.\nPass ${pintor__rspack_import_8_default().blue('--gecko-binary')} ${pintor__rspack_import_8_default().gray('<abs-path>')} to choose one.\n`;
|
|
854
881
|
return browserRunnerError(body);
|
|
855
882
|
}
|
|
856
883
|
function invalidChromiumBinaryPath(p) {
|
|
857
|
-
const body = `
|
|
884
|
+
const body = `Can't find a Chromium binary at the given path.\n${pintor__rspack_import_8_default().gray('NOT FOUND')} ${pintor__rspack_import_8_default().underline(p)}\nPass ${pintor__rspack_import_8_default().blue('--chromium-binary')} ${pintor__rspack_import_8_default().gray('<abs-path>')} with a working path.`;
|
|
858
885
|
return browserRunnerError(body);
|
|
859
886
|
}
|
|
860
887
|
function invalidGeckoBinaryPath(p) {
|
|
861
|
-
const body = `
|
|
888
|
+
const body = `Can't find a Firefox or Gecko binary at the given path.\n${pintor__rspack_import_8_default().gray('NOT FOUND')} ${pintor__rspack_import_8_default().underline(p)}\nPass ${pintor__rspack_import_8_default().blue('--gecko-binary')} ${pintor__rspack_import_8_default().gray('<abs-path>')} with a working path.`;
|
|
862
889
|
return browserRunnerError(body);
|
|
863
890
|
}
|
|
864
891
|
function rdpInvalidRequestPayload() {
|
|
@@ -916,6 +943,7 @@ var __webpack_modules__ = {
|
|
|
916
943
|
WV: ()=>addonInstallError,
|
|
917
944
|
XH: ()=>enhancedProcessManagementTerminating,
|
|
918
945
|
Xi: ()=>safariXcodeRequired,
|
|
946
|
+
Yy: ()=>collapseHomeDirInCardValue,
|
|
919
947
|
Z5: ()=>cdpClientExtensionInfoFailed,
|
|
920
948
|
_D: ()=>browserLaunchError,
|
|
921
949
|
aI: ()=>devChromeProfilePath,
|
|
@@ -933,7 +961,6 @@ var __webpack_modules__ = {
|
|
|
933
961
|
fd: ()=>safariRegistered,
|
|
934
962
|
fw: ()=>safariOpening,
|
|
935
963
|
hE: ()=>cdpClientConnectionClosed,
|
|
936
|
-
iL: ()=>resolvedBrowserBinary,
|
|
937
964
|
io: ()=>emptyLine,
|
|
938
965
|
iv: ()=>firefoxBinaryArgsExtracted,
|
|
939
966
|
jP: ()=>rdpInvalidRequestPayload,
|
|
@@ -958,6 +985,7 @@ var __webpack_modules__ = {
|
|
|
958
985
|
sY: ()=>creatingUserProfile,
|
|
959
986
|
uK: ()=>safariConverting,
|
|
960
987
|
wk: ()=>chromeFailedToSpawn,
|
|
988
|
+
xX: ()=>binaryProvenanceNote,
|
|
961
989
|
xy: ()=>chromeInitializingEnhancedReload,
|
|
962
990
|
y1: ()=>safariConverterWarnings,
|
|
963
991
|
y7: ()=>skippingBrowserLaunchDueToCompileErrors,
|
|
@@ -1241,11 +1269,10 @@ var __webpack_modules__ = {
|
|
|
1241
1269
|
var pintor__rspack_import_0_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_0);
|
|
1242
1270
|
var _helpers_messaging__rspack_import_1 = __webpack_require__("./helpers/messaging.ts");
|
|
1243
1271
|
function ready(mode, browser) {
|
|
1244
|
-
const
|
|
1245
|
-
const
|
|
1246
|
-
const
|
|
1247
|
-
|
|
1248
|
-
return `${(0, _helpers_messaging__rspack_import_1.Pl)('info')} ${cap} ${extensionOutput} ${pretty}.`;
|
|
1272
|
+
const noun = (0, _helpers_messaging__rspack_import_1.T_)(browser);
|
|
1273
|
+
const state = pintor__rspack_import_0_default().green(`ready for ${mode}`);
|
|
1274
|
+
const watching = 'development' === mode ? ' Watching for file changes.' : '';
|
|
1275
|
+
return `${(0, _helpers_messaging__rspack_import_1.Pl)('success')} ${noun} ${state}.${watching}`;
|
|
1249
1276
|
}
|
|
1250
1277
|
__webpack_require__.d(__webpack_exports__, {
|
|
1251
1278
|
G: ()=>ready
|
|
@@ -1533,6 +1560,16 @@ var __webpack_modules__ = {
|
|
|
1533
1560
|
swappedToSystem: false
|
|
1534
1561
|
};
|
|
1535
1562
|
}
|
|
1563
|
+
function classifyBinaryProvenance(opts) {
|
|
1564
|
+
if (opts.pinnedByFlag) return 'pinned';
|
|
1565
|
+
if (opts.usedManagedSnapshot) return 'snapshot';
|
|
1566
|
+
const root = node_path__rspack_import_3.resolve(String(opts.managedCacheRoot || '').trim());
|
|
1567
|
+
const binary = node_path__rspack_import_3.resolve(String(opts.binaryPath || '').trim());
|
|
1568
|
+
if (!root || !binary) return 'system';
|
|
1569
|
+
const relative = node_path__rspack_import_3.relative(root, binary);
|
|
1570
|
+
const underManagedRoot = relative.length > 0 && !relative.startsWith('..') && !node_path__rspack_import_3.isAbsolute(relative);
|
|
1571
|
+
return underManagedRoot ? 'managed' : 'system';
|
|
1572
|
+
}
|
|
1536
1573
|
function parseEnvBrowserFlags(raw) {
|
|
1537
1574
|
return String(raw || '').split(/\s+/).map((flag)=>flag.trim()).filter(Boolean);
|
|
1538
1575
|
}
|
|
@@ -1708,6 +1745,7 @@ var __webpack_modules__ = {
|
|
|
1708
1745
|
J1: ()=>prepareChromiumProfileForLaunch,
|
|
1709
1746
|
Py: ()=>mergeChromiumFeatureSwitches,
|
|
1710
1747
|
RE: ()=>markManagedEphemeralProfile,
|
|
1748
|
+
RU: ()=>classifyBinaryProvenance,
|
|
1711
1749
|
W0: ()=>parseEnvBrowserFlags,
|
|
1712
1750
|
ZO: ()=>isHeadlessGuardRequested,
|
|
1713
1751
|
aY: ()=>findAvailablePortNear,
|
|
@@ -2670,7 +2708,9 @@ var __webpack_modules__ = {
|
|
|
2670
2708
|
browser: args.browser,
|
|
2671
2709
|
outPath: extensionOutputPath,
|
|
2672
2710
|
browserVersionLine: args.browserVersionLine,
|
|
2673
|
-
profilePath
|
|
2711
|
+
profilePath,
|
|
2712
|
+
binaryPath: args.binaryPath,
|
|
2713
|
+
binaryProvenance: args.binaryProvenance
|
|
2674
2714
|
});
|
|
2675
2715
|
if ('development' !== mode) return;
|
|
2676
2716
|
const ready = await (0, manifest_readiness.fR)(extensionOutputPath, {
|
|
@@ -2684,7 +2724,9 @@ var __webpack_modules__ = {
|
|
|
2684
2724
|
hostPort: args.hostPort,
|
|
2685
2725
|
getInfo: async ()=>null,
|
|
2686
2726
|
browserVersionLine: args.browserVersionLine,
|
|
2687
|
-
profilePath
|
|
2727
|
+
profilePath,
|
|
2728
|
+
binaryPath: args.binaryPath,
|
|
2729
|
+
binaryProvenance: args.binaryProvenance
|
|
2688
2730
|
});
|
|
2689
2731
|
}
|
|
2690
2732
|
class ChromiumLaunchPlugin {
|
|
@@ -2734,6 +2776,8 @@ var __webpack_modules__ = {
|
|
|
2734
2776
|
const browser = this.options?.browser;
|
|
2735
2777
|
let browserBinaryLocation = null;
|
|
2736
2778
|
let printedGuidance = false;
|
|
2779
|
+
let binaryPinnedByFlag = false;
|
|
2780
|
+
let usedManagedSnapshot = false;
|
|
2737
2781
|
const normalizePath = (p)=>{
|
|
2738
2782
|
if (!p) return null;
|
|
2739
2783
|
const normalized = (0, wsl_support.f7)(p);
|
|
@@ -2809,7 +2853,10 @@ var __webpack_modules__ = {
|
|
|
2809
2853
|
if (choice.swappedToSystem && choice.binary) {
|
|
2810
2854
|
console.log(messages.kK(choice.binary, browserBinaryLocation));
|
|
2811
2855
|
browserBinaryLocation = choice.binary;
|
|
2812
|
-
} else if (choice.usedManagedSnapshot)
|
|
2856
|
+
} else if (choice.usedManagedSnapshot) {
|
|
2857
|
+
usedManagedSnapshot = true;
|
|
2858
|
+
console.log(messages.JB(browserBinaryLocation));
|
|
2859
|
+
}
|
|
2813
2860
|
}
|
|
2814
2861
|
let skipDetection = Boolean(browserBinaryLocation);
|
|
2815
2862
|
if (!browserBinaryLocation && (0, wsl_support.EV)()) {
|
|
@@ -2918,6 +2965,7 @@ var __webpack_modules__ = {
|
|
|
2918
2965
|
process.exit(1);
|
|
2919
2966
|
}
|
|
2920
2967
|
browserBinaryLocation = normalized;
|
|
2968
|
+
binaryPinnedByFlag = true;
|
|
2921
2969
|
}
|
|
2922
2970
|
if (!browserBinaryLocation && !skipDetection) try {
|
|
2923
2971
|
const env = managedEnvFor('chromium');
|
|
@@ -2980,6 +3028,7 @@ var __webpack_modules__ = {
|
|
|
2980
3028
|
process.exit(1);
|
|
2981
3029
|
}
|
|
2982
3030
|
browserBinaryLocation = normalized;
|
|
3031
|
+
binaryPinnedByFlag = true;
|
|
2983
3032
|
} else {
|
|
2984
3033
|
console.error(messages.ne());
|
|
2985
3034
|
process.exit(1);
|
|
@@ -3023,7 +3072,12 @@ var __webpack_modules__ = {
|
|
|
3023
3072
|
const vLine = getBrowserVersionLine(browserBinaryLocation);
|
|
3024
3073
|
if (vLine && vLine.trim().length > 0) browserVersionLine = vLine.trim();
|
|
3025
3074
|
} catch {}
|
|
3026
|
-
|
|
3075
|
+
const binaryProvenance = shared_utils.RU({
|
|
3076
|
+
binaryPath: browserBinaryLocation,
|
|
3077
|
+
managedCacheRoot: String(managedCacheRoot || ''),
|
|
3078
|
+
pinnedByFlag: binaryPinnedByFlag,
|
|
3079
|
+
usedManagedSnapshot
|
|
3080
|
+
});
|
|
3027
3081
|
const extensionsToLoad = (0, runtime_options.fT)(this.options.extension);
|
|
3028
3082
|
const resolvedBrowserVersion = /(\d+(?:\.\d+){0,3})/.exec(browserVersionLine || '')?.[1];
|
|
3029
3083
|
for (const extPath of extensionsToLoad)try {
|
|
@@ -3077,6 +3131,8 @@ var __webpack_modules__ = {
|
|
|
3077
3131
|
port: selectedPort
|
|
3078
3132
|
},
|
|
3079
3133
|
browserVersionLine,
|
|
3134
|
+
binaryPath: browserBinaryLocation,
|
|
3135
|
+
binaryProvenance,
|
|
3080
3136
|
enableCdp
|
|
3081
3137
|
});
|
|
3082
3138
|
} catch {}
|
|
@@ -3121,7 +3177,9 @@ var __webpack_modules__ = {
|
|
|
3121
3177
|
logSink: this.options.logSink,
|
|
3122
3178
|
bannerPrintedOnce: false,
|
|
3123
3179
|
cdpController: void 0,
|
|
3124
|
-
browserVersionLine
|
|
3180
|
+
browserVersionLine,
|
|
3181
|
+
binaryPath: browserBinaryLocation,
|
|
3182
|
+
binaryProvenance
|
|
3125
3183
|
};
|
|
3126
3184
|
if (enableCdp) {
|
|
3127
3185
|
const mod = await __webpack_require__.e(49).then(__webpack_require__.bind(__webpack_require__, "./browsers/run-chromium/chromium-launch/setup-cdp-after-launch.ts"));
|
|
@@ -4420,7 +4478,7 @@ var __webpack_modules__ = {
|
|
|
4420
4478
|
} catch (error) {
|
|
4421
4479
|
if (isErrorWithCode('ECONNREFUSED', error)) {
|
|
4422
4480
|
lastError = error;
|
|
4423
|
-
if (attempt % RETRY_LOG_EVERY_N_ATTEMPTS === 0) console.log(messages.GB(this.options.browser, port, attempt, MAX_RETRIES));
|
|
4481
|
+
if ((0, messaging._o)() && attempt % RETRY_LOG_EVERY_N_ATTEMPTS === 0) console.log(messages.GB(this.options.browser, port, attempt, MAX_RETRIES));
|
|
4424
4482
|
await new Promise((resolve)=>setTimeout(resolve, RETRY_INTERVAL));
|
|
4425
4483
|
} else {
|
|
4426
4484
|
const err = error;
|