browser-debugger-cli 0.5.1 → 0.6.0
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/README.md +50 -4
- package/dist/__tests__/smoke/error-handling.smoke.test.js +0 -11
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
- package/dist/cdp/protocol.d.ts +121 -0
- package/dist/cdp/protocol.d.ts.map +1 -0
- package/dist/cdp/protocol.js +215 -0
- package/dist/cdp/protocol.js.map +1 -0
- package/dist/cdp/schema.d.ts +159 -0
- package/dist/cdp/schema.d.ts.map +1 -0
- package/dist/cdp/schema.js +256 -0
- package/dist/cdp/schema.js.map +1 -0
- package/dist/cdp/types.d.ts +139 -0
- package/dist/cdp/types.d.ts.map +1 -0
- package/dist/cdp/types.js +7 -0
- package/dist/cdp/types.js.map +1 -0
- package/dist/commands/cdp.d.ts +10 -1
- package/dist/commands/cdp.d.ts.map +1 -1
- package/dist/commands/cdp.js +363 -26
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.js +3 -3
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/dom.d.ts.map +1 -1
- package/dist/commands/dom.js +1 -0
- package/dist/commands/dom.js.map +1 -1
- package/dist/commands/domEvalHelpers.d.ts +2 -15
- package/dist/commands/domEvalHelpers.d.ts.map +1 -1
- package/dist/commands/domEvalHelpers.js +1 -1
- package/dist/commands/domEvalHelpers.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +12 -6
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +2 -0
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +13 -1
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +2 -2
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +21 -12
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.js +2 -2
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +9 -6
- package/dist/commands/tail.js.map +1 -1
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +15 -2
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/domOperations.d.ts.map +1 -1
- package/dist/connection/domOperations.js +3 -1
- package/dist/connection/domOperations.js.map +1 -1
- package/dist/connection/handlers.d.ts +34 -2
- package/dist/connection/handlers.d.ts.map +1 -1
- package/dist/connection/handlers.js +28 -2
- package/dist/connection/handlers.js.map +1 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +14 -2
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +6 -6
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/connection/typed-cdp.d.ts +144 -0
- package/dist/connection/typed-cdp.d.ts.map +1 -0
- package/dist/connection/typed-cdp.js +120 -0
- package/dist/connection/typed-cdp.js.map +1 -0
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/telemetry/__tests__/network.contract.test.js +124 -93
- package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +3 -2
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/dialogs.d.ts.map +1 -1
- package/dist/telemetry/dialogs.js.map +1 -1
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +3 -1
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/navigation.d.ts.map +1 -1
- package/dist/telemetry/navigation.js.map +1 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js.map +1 -1
- package/dist/types.d.ts +0 -141
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/messages/commands.d.ts +1 -0
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +1 -0
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +30 -3
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +36 -8
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +5 -4
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/ui/messages/validation.d.ts +22 -4
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +26 -5
- package/dist/ui/messages/validation.js.map +1 -1
- package/package.json +2 -1
- package/dist/cli/commands/__tests__/start.unit.test.d.ts +0 -2
- package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +0 -1
- package/dist/cli/commands/__tests__/start.unit.test.js +0 -131
- package/dist/cli/commands/__tests__/start.unit.test.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts +0 -9
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js +0 -148
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/details.d.ts +0 -9
- package/dist/cli/commands/details.d.ts.map +0 -1
- package/dist/cli/commands/details.js +0 -120
- package/dist/cli/commands/details.js.map +0 -1
- package/dist/cli/commands/peek.d.ts +0 -9
- package/dist/cli/commands/peek.d.ts.map +0 -1
- package/dist/cli/commands/peek.js +0 -64
- package/dist/cli/commands/peek.js.map +0 -1
- package/dist/cli/commands/query.d.ts +0 -9
- package/dist/cli/commands/query.d.ts.map +0 -1
- package/dist/cli/commands/query.js +0 -125
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -83
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -204
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -9
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -75
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/stop.d.ts +0 -9
- package/dist/cli/commands/stop.d.ts.map +0 -1
- package/dist/cli/commands/stop.js +0 -133
- package/dist/cli/commands/stop.js.map +0 -1
- package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
- package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/detailsFormatter.js +0 -63
- package/dist/cli/formatters/detailsFormatter.js.map +0 -1
- package/dist/cli/formatters/previewFormatter.d.ts +0 -27
- package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/previewFormatter.js +0 -155
- package/dist/cli/formatters/previewFormatter.js.map +0 -1
- package/dist/cli/formatters/statusFormatter.d.ts +0 -42
- package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/statusFormatter.js +0 -126
- package/dist/cli/formatters/statusFormatter.js.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
- package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.js +0 -50
- package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
- package/dist/cli/handlers/OutputBuilder.d.ts +0 -59
- package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
- package/dist/cli/handlers/OutputBuilder.js +0 -136
- package/dist/cli/handlers/OutputBuilder.js.map +0 -1
- package/dist/cli/handlers/OutputWriter.d.ts +0 -15
- package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
- package/dist/cli/handlers/OutputWriter.js +0 -34
- package/dist/cli/handlers/OutputWriter.js.map +0 -1
- package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
- package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
- package/dist/cli/handlers/PreviewWriter.js +0 -118
- package/dist/cli/handlers/PreviewWriter.js.map +0 -1
- package/dist/cli/handlers/SessionLock.d.ts +0 -16
- package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLock.js +0 -35
- package/dist/cli/handlers/SessionLock.js.map +0 -1
- package/dist/cli/handlers/SessionLoop.d.ts +0 -19
- package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLoop.js +0 -47
- package/dist/cli/handlers/SessionLoop.js.map +0 -1
- package/dist/cli/handlers/ShutdownController.d.ts +0 -41
- package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
- package/dist/cli/handlers/ShutdownController.js +0 -94
- package/dist/cli/handlers/ShutdownController.js.map +0 -1
- package/dist/cli/handlers/SignalHandler.d.ts +0 -35
- package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
- package/dist/cli/handlers/SignalHandler.js +0 -81
- package/dist/cli/handlers/SignalHandler.js.map +0 -1
- package/dist/cli/handlers/TargetSetup.d.ts +0 -42
- package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
- package/dist/cli/handlers/TargetSetup.js +0 -87
- package/dist/cli/handlers/TargetSetup.js.map +0 -1
- package/dist/cli/handlers/sessionController.d.ts +0 -62
- package/dist/cli/handlers/sessionController.d.ts.map +0 -1
- package/dist/cli/handlers/sessionController.js +0 -316
- package/dist/cli/handlers/sessionController.js.map +0 -1
- package/dist/cli/registry.d.ts +0 -11
- package/dist/cli/registry.d.ts.map +0 -1
- package/dist/cli/registry.js +0 -21
- package/dist/cli/registry.js.map +0 -1
- package/dist/collectors/console.d.ts +0 -19
- package/dist/collectors/console.d.ts.map +0 -1
- package/dist/collectors/console.js +0 -87
- package/dist/collectors/console.js.map +0 -1
- package/dist/collectors/dom.d.ts +0 -21
- package/dist/collectors/dom.d.ts.map +0 -1
- package/dist/collectors/dom.js +0 -99
- package/dist/collectors/dom.js.map +0 -1
- package/dist/collectors/network.d.ts +0 -32
- package/dist/collectors/network.d.ts.map +0 -1
- package/dist/collectors/network.js +0 -191
- package/dist/collectors/network.js.map +0 -1
- package/dist/connection/tabs.d.ts +0 -52
- package/dist/connection/tabs.d.ts.map +0 -1
- package/dist/connection/tabs.js +0 -227
- package/dist/connection/tabs.js.map +0 -1
- package/dist/help/machineReadableHelp.d.ts +0 -100
- package/dist/help/machineReadableHelp.d.ts.map +0 -1
- package/dist/help/machineReadableHelp.js +0 -139
- package/dist/help/machineReadableHelp.js.map +0 -1
- package/dist/session/BdgSession.d.ts +0 -91
- package/dist/session/BdgSession.d.ts.map +0 -1
- package/dist/session/BdgSession.js +0 -230
- package/dist/session/BdgSession.js.map +0 -1
- package/dist/ui/errors/SystemErrors.d.ts +0 -22
- package/dist/ui/errors/SystemErrors.d.ts.map +0 -1
- package/dist/ui/errors/SystemErrors.js +0 -23
- package/dist/ui/errors/SystemErrors.js.map +0 -1
- package/dist/ui/errors.d.ts +0 -39
- package/dist/ui/errors.d.ts.map +0 -1
- package/dist/ui/errors.js +0 -48
- package/dist/ui/errors.js.map +0 -1
- package/dist/ui/messages/deprecation.d.ts +0 -30
- package/dist/ui/messages/deprecation.d.ts.map +0 -1
- package/dist/ui/messages/deprecation.js +0 -49
- package/dist/ui/messages/deprecation.js.map +0 -1
- package/dist/ui/messages/index.d.ts +0 -12
- package/dist/ui/messages/index.d.ts.map +0 -1
- package/dist/ui/messages/index.js +0 -12
- package/dist/ui/messages/index.js.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.d.ts +0 -2
- package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.js +0 -239
- package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
- package/dist/utils/cdpHandlers.d.ts +0 -31
- package/dist/utils/cdpHandlers.d.ts.map +0 -1
- package/dist/utils/cdpHandlers.js +0 -38
- package/dist/utils/cdpHandlers.js.map +0 -1
- package/dist/utils/chromeDiagnostics.d.ts +0 -16
- package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
- package/dist/utils/chromeDiagnostics.js +0 -37
- package/dist/utils/chromeDiagnostics.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -82
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -88
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/filters.d.ts +0 -148
- package/dist/utils/filters.d.ts.map +0 -1
- package/dist/utils/filters.js +0 -358
- package/dist/utils/filters.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -98
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -93
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/pageReadiness.d.ts +0 -46
- package/dist/utils/pageReadiness.d.ts.map +0 -1
- package/dist/utils/pageReadiness.js +0 -270
- package/dist/utils/pageReadiness.js.map +0 -1
- package/dist/utils/session.d.ts +0 -200
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -498
- package/dist/utils/session.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -12
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -20
- package/dist/utils/validation.js.map +0 -1
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { cleanupSession } from '../../utils/session.js';
|
|
2
|
-
import { OutputBuilder } from './OutputBuilder.js';
|
|
3
|
-
import { OutputWriter } from './OutputWriter.js';
|
|
4
|
-
/**
|
|
5
|
-
* Orchestrates shutdown sequence and cleanup operations
|
|
6
|
-
*/
|
|
7
|
-
export class ShutdownController {
|
|
8
|
-
state;
|
|
9
|
-
shutdownKeepalive = null;
|
|
10
|
-
outputWriter;
|
|
11
|
-
constructor(state, outputWriter) {
|
|
12
|
-
this.state = state;
|
|
13
|
-
this.outputWriter = outputWriter ?? new OutputWriter();
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Execute graceful shutdown sequence.
|
|
17
|
-
* Stops session, writes output, and exits process.
|
|
18
|
-
*/
|
|
19
|
-
async shutdown() {
|
|
20
|
-
if (this.state.isShuttingDown || !this.state.session) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
this.state.isShuttingDown = true;
|
|
24
|
-
// Keep event loop alive IMMEDIATELY to prevent premature exit during async operations
|
|
25
|
-
// This must be set before any await points
|
|
26
|
-
this.shutdownKeepalive = setInterval(() => { }, 1000);
|
|
27
|
-
// Stop preview writer and wait for pending writes
|
|
28
|
-
if (this.state.previewWriter) {
|
|
29
|
-
this.state.previewWriter.stop();
|
|
30
|
-
await this.state.previewWriter.waitForPendingWrite();
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
console.error('Stopping session...');
|
|
34
|
-
const output = await this.state.session.stop();
|
|
35
|
-
this.finalize(output, 0);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
console.error('Error during shutdown:', error);
|
|
39
|
-
const errorOutput = OutputBuilder.buildError(error, this.state.startTime);
|
|
40
|
-
this.finalize(errorOutput, 1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Cleanup without stopping session (error path).
|
|
45
|
-
* Clears timers, tears down Chrome if launched, and removes session files.
|
|
46
|
-
*/
|
|
47
|
-
async cleanup() {
|
|
48
|
-
// Stop preview writer and wait for pending writes
|
|
49
|
-
if (this.state.previewWriter) {
|
|
50
|
-
this.state.previewWriter.stop();
|
|
51
|
-
await this.state.previewWriter.waitForPendingWrite();
|
|
52
|
-
}
|
|
53
|
-
// Kill Chrome if we launched it
|
|
54
|
-
if (this.state.launchedChrome) {
|
|
55
|
-
try {
|
|
56
|
-
await this.state.launchedChrome.kill();
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Ignore errors during cleanup
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// Cleanup session files
|
|
63
|
-
cleanupSession();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Finalize shutdown: write output, cleanup, and exit
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
finalize(output, exitCode) {
|
|
70
|
-
// Write output
|
|
71
|
-
this.outputWriter.writeSessionOutput(output, exitCode, this.state.compact);
|
|
72
|
-
// Leave Chrome running for future sessions
|
|
73
|
-
if (this.state.launchedChrome) {
|
|
74
|
-
const chromeMessage = exitCode === 0
|
|
75
|
-
? 'Leaving Chrome running for future sessions (use persistent profile)'
|
|
76
|
-
: 'Leaving Chrome running (use persistent profile)';
|
|
77
|
-
console.error(chromeMessage);
|
|
78
|
-
console.error(`Chrome PID: ${this.state.launchedChrome.pid}, port: ${this.state.launchedChrome.port}`);
|
|
79
|
-
}
|
|
80
|
-
// Cleanup session files
|
|
81
|
-
try {
|
|
82
|
-
cleanupSession();
|
|
83
|
-
}
|
|
84
|
-
catch (cleanupError) {
|
|
85
|
-
console.error('Error cleaning up session:', cleanupError);
|
|
86
|
-
}
|
|
87
|
-
// Clear keepalive and exit
|
|
88
|
-
if (this.shutdownKeepalive) {
|
|
89
|
-
clearInterval(this.shutdownKeepalive);
|
|
90
|
-
}
|
|
91
|
-
process.exit(exitCode);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=ShutdownController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShutdownController.js","sourceRoot":"","sources":["../../../src/cli/handlers/ShutdownController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interface for shutdown callback
|
|
3
|
-
*/
|
|
4
|
-
export interface SignalHandlerOptions {
|
|
5
|
-
onShutdown: () => Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Manages process signal handling for graceful shutdown
|
|
9
|
-
*/
|
|
10
|
-
export declare class SignalHandler {
|
|
11
|
-
private options;
|
|
12
|
-
private isHandling;
|
|
13
|
-
constructor(options: SignalHandlerOptions);
|
|
14
|
-
/**
|
|
15
|
-
* Register signal handlers for graceful shutdown.
|
|
16
|
-
*/
|
|
17
|
-
register(): void;
|
|
18
|
-
/**
|
|
19
|
-
* Unregister all signal handlers.
|
|
20
|
-
*/
|
|
21
|
-
unregister(): void;
|
|
22
|
-
/**
|
|
23
|
-
* Handle shutdown signals (SIGINT, SIGTERM)
|
|
24
|
-
*/
|
|
25
|
-
private handleSignal;
|
|
26
|
-
/**
|
|
27
|
-
* Handle unhandled promise rejections
|
|
28
|
-
*/
|
|
29
|
-
private handleUnhandledRejection;
|
|
30
|
-
/**
|
|
31
|
-
* Handle uncaught exceptions
|
|
32
|
-
*/
|
|
33
|
-
private handleUncaughtException;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=SignalHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignalHandler.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/SignalHandler.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,UAAU,CAAS;gBAEP,OAAO,EAAE,oBAAoB;IAEjD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAS9B;IAEF;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAS7B;CACH"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
2
|
-
import { cleanupSession } from '../../utils/session.js';
|
|
3
|
-
/**
|
|
4
|
-
* Manages process signal handling for graceful shutdown
|
|
5
|
-
*/
|
|
6
|
-
export class SignalHandler {
|
|
7
|
-
options;
|
|
8
|
-
isHandling = false;
|
|
9
|
-
constructor(options) {
|
|
10
|
-
this.options = options;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Register signal handlers for graceful shutdown.
|
|
14
|
-
*/
|
|
15
|
-
register() {
|
|
16
|
-
const handler = (signal) => this.handleSignal(signal);
|
|
17
|
-
process.on('SIGINT', () => handler('SIGINT'));
|
|
18
|
-
process.on('SIGTERM', () => handler('SIGTERM'));
|
|
19
|
-
process.on('unhandledRejection', this.handleUnhandledRejection);
|
|
20
|
-
process.on('uncaughtException', this.handleUncaughtException);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Unregister all signal handlers.
|
|
24
|
-
*/
|
|
25
|
-
unregister() {
|
|
26
|
-
process.removeAllListeners('SIGINT');
|
|
27
|
-
process.removeAllListeners('SIGTERM');
|
|
28
|
-
process.removeAllListeners('unhandledRejection');
|
|
29
|
-
process.removeAllListeners('uncaughtException');
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Handle shutdown signals (SIGINT, SIGTERM)
|
|
33
|
-
*/
|
|
34
|
-
handleSignal(signal) {
|
|
35
|
-
if (this.isHandling) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
this.isHandling = true;
|
|
39
|
-
console.error(`\nReceived ${signal}, shutting down gracefully...`);
|
|
40
|
-
this.unregister();
|
|
41
|
-
void (async () => {
|
|
42
|
-
try {
|
|
43
|
-
await this.options.onShutdown();
|
|
44
|
-
// onShutdown calls process.exit(), so we should never reach here
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
console.error('Fatal error during shutdown:', error);
|
|
48
|
-
process.exit(EXIT_CODES.SIGNAL_HANDLER_ERROR);
|
|
49
|
-
}
|
|
50
|
-
})();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Handle unhandled promise rejections
|
|
54
|
-
*/
|
|
55
|
-
handleUnhandledRejection = (reason) => {
|
|
56
|
-
console.error('Unhandled rejection:', reason);
|
|
57
|
-
console.error('Cleaning up session files...');
|
|
58
|
-
try {
|
|
59
|
-
cleanupSession();
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
console.error('Error during cleanup:', error);
|
|
63
|
-
}
|
|
64
|
-
process.exit(EXIT_CODES.UNHANDLED_EXCEPTION);
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Handle uncaught exceptions
|
|
68
|
-
*/
|
|
69
|
-
handleUncaughtException = (error) => {
|
|
70
|
-
console.error('Uncaught exception:', error);
|
|
71
|
-
console.error('Cleaning up session files...');
|
|
72
|
-
try {
|
|
73
|
-
cleanupSession();
|
|
74
|
-
}
|
|
75
|
-
catch (cleanupError) {
|
|
76
|
-
console.error('Error during cleanup:', cleanupError);
|
|
77
|
-
}
|
|
78
|
-
process.exit(EXIT_CODES.UNHANDLED_EXCEPTION);
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=SignalHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignalHandler.js","sourceRoot":"","sources":["../../../src/cli/handlers/SignalHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { BdgSession } from '../../session/BdgSession.js';
|
|
2
|
-
import type { CDPTarget, SessionOptions } from '../../types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Handles CDP target setup and session creation
|
|
5
|
-
*/
|
|
6
|
-
export declare class TargetSetup {
|
|
7
|
-
/**
|
|
8
|
-
* Create CDP connection and find/create target tab
|
|
9
|
-
*
|
|
10
|
-
* @param url - Original URL from CLI (for matching)
|
|
11
|
-
* @param targetUrl - Normalized target URL
|
|
12
|
-
* @param port - Chrome debugging port
|
|
13
|
-
* @param reuseTab - Whether to reuse existing tab
|
|
14
|
-
* @param sessionOptions - Session-level collection options
|
|
15
|
-
* @returns Session and target metadata
|
|
16
|
-
*/
|
|
17
|
-
static setup(url: string, targetUrl: string, port: number, reuseTab: boolean, sessionOptions?: SessionOptions): Promise<{
|
|
18
|
-
session: BdgSession;
|
|
19
|
-
target: CDPTarget;
|
|
20
|
-
}>;
|
|
21
|
-
/**
|
|
22
|
-
* Fetch the current list of available CDP targets from Chrome.
|
|
23
|
-
* Used during session bootstrap to select a temporary connection target and to
|
|
24
|
-
* refresh metadata when the session creates or reuses tabs.
|
|
25
|
-
*
|
|
26
|
-
* @param port - Chrome debugging port
|
|
27
|
-
* @returns Array of CDP targets
|
|
28
|
-
*/
|
|
29
|
-
private static fetchTargets;
|
|
30
|
-
/**
|
|
31
|
-
* Locate a specific CDP target by ID. Falls back to a fresh fetch when cached
|
|
32
|
-
* metadata is missing or incomplete (e.g., webSocketDebuggerUrl absent).
|
|
33
|
-
*
|
|
34
|
-
* @param targetId - Target ID to find
|
|
35
|
-
* @param port - Chrome debugging port
|
|
36
|
-
* @param cachedTargets - Optional cached target list
|
|
37
|
-
* @returns CDP target with webSocketDebuggerUrl
|
|
38
|
-
* @throws Error if target not found or missing webSocketDebuggerUrl
|
|
39
|
-
*/
|
|
40
|
-
private static findTargetById;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=TargetSetup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TargetSetup.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/TargetSetup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzD;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;;;;;;OASG;WACU,KAAK,CAChB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,cAAc,GAAE,cAAmB,GAClC,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IAoCtD;;;;;;;OAOG;mBACkB,YAAY;IAKjC;;;;;;;;;OASG;mBACkB,cAAc;CA2BpC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { createOrFindTarget } from '../../connection/tabs.js';
|
|
2
|
-
import { BdgSession } from '../../session/BdgSession.js';
|
|
3
|
-
/**
|
|
4
|
-
* Handles CDP target setup and session creation
|
|
5
|
-
*/
|
|
6
|
-
export class TargetSetup {
|
|
7
|
-
/**
|
|
8
|
-
* Create CDP connection and find/create target tab
|
|
9
|
-
*
|
|
10
|
-
* @param url - Original URL from CLI (for matching)
|
|
11
|
-
* @param targetUrl - Normalized target URL
|
|
12
|
-
* @param port - Chrome debugging port
|
|
13
|
-
* @param reuseTab - Whether to reuse existing tab
|
|
14
|
-
* @param sessionOptions - Session-level collection options
|
|
15
|
-
* @returns Session and target metadata
|
|
16
|
-
*/
|
|
17
|
-
static async setup(url, targetUrl, port, reuseTab, sessionOptions = {}) {
|
|
18
|
-
// Fetch targets once
|
|
19
|
-
const initialTargets = await this.fetchTargets(port);
|
|
20
|
-
if (initialTargets.length === 0) {
|
|
21
|
-
throw new Error('No targets available in Chrome');
|
|
22
|
-
}
|
|
23
|
-
// Use first available target to establish CDP connection
|
|
24
|
-
const tempTarget = initialTargets[0];
|
|
25
|
-
if (!tempTarget) {
|
|
26
|
-
throw new Error('No targets available in Chrome');
|
|
27
|
-
}
|
|
28
|
-
const tempSession = new BdgSession(tempTarget, port, sessionOptions);
|
|
29
|
-
await tempSession.connect();
|
|
30
|
-
if (!tempSession.isConnected()) {
|
|
31
|
-
throw new Error('Failed to establish CDP connection');
|
|
32
|
-
}
|
|
33
|
-
// Create or find target tab using TabManager
|
|
34
|
-
console.error(`Finding or creating tab for: ${targetUrl}`);
|
|
35
|
-
const target = await createOrFindTarget(url, tempSession.getCDP(), reuseTab);
|
|
36
|
-
console.error(`Using tab: ${target.url}`);
|
|
37
|
-
// Find full target metadata (refetches only if not in cache or new tab created)
|
|
38
|
-
const fullTarget = await this.findTargetById(target.id, port, initialTargets);
|
|
39
|
-
// Close temp session and reconnect to the correct target
|
|
40
|
-
tempSession.getCDP().close();
|
|
41
|
-
const session = new BdgSession(fullTarget, port, sessionOptions);
|
|
42
|
-
await session.connect();
|
|
43
|
-
return { session, target: fullTarget };
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Fetch the current list of available CDP targets from Chrome.
|
|
47
|
-
* Used during session bootstrap to select a temporary connection target and to
|
|
48
|
-
* refresh metadata when the session creates or reuses tabs.
|
|
49
|
-
*
|
|
50
|
-
* @param port - Chrome debugging port
|
|
51
|
-
* @returns Array of CDP targets
|
|
52
|
-
*/
|
|
53
|
-
static async fetchTargets(port) {
|
|
54
|
-
const response = await fetch(`http://127.0.0.1:${port}/json/list`);
|
|
55
|
-
return (await response.json());
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Locate a specific CDP target by ID. Falls back to a fresh fetch when cached
|
|
59
|
-
* metadata is missing or incomplete (e.g., webSocketDebuggerUrl absent).
|
|
60
|
-
*
|
|
61
|
-
* @param targetId - Target ID to find
|
|
62
|
-
* @param port - Chrome debugging port
|
|
63
|
-
* @param cachedTargets - Optional cached target list
|
|
64
|
-
* @returns CDP target with webSocketDebuggerUrl
|
|
65
|
-
* @throws Error if target not found or missing webSocketDebuggerUrl
|
|
66
|
-
*/
|
|
67
|
-
static async findTargetById(targetId, port, cachedTargets) {
|
|
68
|
-
// First check cached targets if provided
|
|
69
|
-
if (cachedTargets) {
|
|
70
|
-
const cached = cachedTargets.find((t) => t.id === targetId);
|
|
71
|
-
if (cached?.webSocketDebuggerUrl) {
|
|
72
|
-
return cached;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Not in cache or missing webSocketDebuggerUrl - refetch
|
|
76
|
-
const targets = await this.fetchTargets(port);
|
|
77
|
-
const target = targets.find((t) => t.id === targetId);
|
|
78
|
-
if (!target) {
|
|
79
|
-
throw new Error(`Could not find target ${targetId}`);
|
|
80
|
-
}
|
|
81
|
-
if (!target.webSocketDebuggerUrl) {
|
|
82
|
-
throw new Error(`Could not find webSocketDebuggerUrl for target ${targetId}`);
|
|
83
|
-
}
|
|
84
|
-
return target;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=TargetSetup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TargetSetup.js","sourceRoot":"","sources":["../../../src/cli/handlers/TargetSetup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { CollectorType } from '../../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Aggressively cleanup stale Chrome processes launched by bdg.
|
|
4
|
-
*
|
|
5
|
-
* This function kills Chrome instances that were launched by bdg by:
|
|
6
|
-
* 1. Reading the Chrome PID from persistent cache (~/.bdg/chrome.pid)
|
|
7
|
-
* 2. Killing that specific Chrome process using cross-platform kill logic
|
|
8
|
-
*
|
|
9
|
-
* The cache survives session cleanup, so this works even after a normal session end.
|
|
10
|
-
*
|
|
11
|
-
* Cross-platform killing:
|
|
12
|
-
* - Windows: Uses `taskkill /pid <pid> /T /F` to kill process tree
|
|
13
|
-
* - Unix/macOS: Uses `process.kill(-pid, 'SIGKILL')` to kill process group
|
|
14
|
-
*
|
|
15
|
-
* Note: We can't use chromeLauncher.killAll() because it only tracks instances
|
|
16
|
-
* created via chromeLauncher.launch(), but we use new chromeLauncher.Launcher()
|
|
17
|
-
* which doesn't register in that tracking set.
|
|
18
|
-
*
|
|
19
|
-
* @returns Number of errors encountered during cleanup
|
|
20
|
-
*/
|
|
21
|
-
export declare function cleanupStaleChrome(): Promise<number>;
|
|
22
|
-
/**
|
|
23
|
-
* Start a new session
|
|
24
|
-
*
|
|
25
|
-
* @param url - Target URL to navigate to
|
|
26
|
-
* @param options - Session configuration options
|
|
27
|
-
* @param options.port - Chrome debugging port
|
|
28
|
-
* @param options.timeout - Auto-stop after timeout (seconds)
|
|
29
|
-
* @param options.reuseTab - Navigate existing tab instead of creating new one
|
|
30
|
-
* @param options.userDataDir - Chrome user data directory
|
|
31
|
-
* @param options.includeAll - Include all data (disable filtering)
|
|
32
|
-
* @param options.logLevel - Chrome launcher log level
|
|
33
|
-
* @param options.prefs - Chrome preferences as object
|
|
34
|
-
* @param options.prefsFile - Path to JSON file containing Chrome preferences
|
|
35
|
-
* @param options.chromeFlags - Additional Chrome command-line flags
|
|
36
|
-
* @param options.connectionPollInterval - Milliseconds between CDP readiness checks
|
|
37
|
-
* @param options.maxConnectionRetries - Maximum retry attempts before failing
|
|
38
|
-
* @param options.portStrictMode - Fail if Chrome debugging port is already in use
|
|
39
|
-
* @param collectors - Array of collector types to enable ('dom', 'network', 'console')
|
|
40
|
-
* @returns Promise that resolves when session completes
|
|
41
|
-
*/
|
|
42
|
-
export declare function startSession(url: string, options: {
|
|
43
|
-
port: number;
|
|
44
|
-
timeout?: number | undefined;
|
|
45
|
-
reuseTab?: boolean | undefined;
|
|
46
|
-
userDataDir?: string | undefined;
|
|
47
|
-
includeAll?: boolean | undefined;
|
|
48
|
-
logLevel?: 'verbose' | 'info' | 'error' | 'silent' | undefined;
|
|
49
|
-
prefs?: Record<string, unknown> | undefined;
|
|
50
|
-
prefsFile?: string | undefined;
|
|
51
|
-
chromeFlags?: string[] | undefined;
|
|
52
|
-
connectionPollInterval?: number | undefined;
|
|
53
|
-
maxConnectionRetries?: number | undefined;
|
|
54
|
-
portStrictMode?: boolean | undefined;
|
|
55
|
-
fetchAllBodies?: boolean | undefined;
|
|
56
|
-
fetchBodiesInclude?: string[] | undefined;
|
|
57
|
-
fetchBodiesExclude?: string[] | undefined;
|
|
58
|
-
networkInclude?: string[] | undefined;
|
|
59
|
-
networkExclude?: string[] | undefined;
|
|
60
|
-
compact?: boolean | undefined;
|
|
61
|
-
}, collectors: CollectorType[]): Promise<void>;
|
|
62
|
-
//# sourceMappingURL=sessionController.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionController.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/sessionController.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,SAAS,CAAC;AA4CxF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CA0C1D;AA8HD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,EACD,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6If"}
|