browser-debugger-cli 0.2.0 → 0.3.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/dist/__tests__/fixtures/schema-v0.2.1.golden.json +47 -0
- package/dist/__tests__/schema.contract.test.d.ts +19 -0
- package/dist/__tests__/schema.contract.test.d.ts.map +1 -0
- package/dist/__tests__/schema.contract.test.js +236 -0
- package/dist/__tests__/schema.contract.test.js.map +1 -0
- package/dist/commands/__tests__/cdp.contract.test.d.ts.map +1 -1
- package/dist/commands/__tests__/cdp.contract.test.js +0 -1
- package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/commands/__tests__/domEval.contract.test.d.ts +17 -0
- package/dist/commands/__tests__/domEval.contract.test.d.ts.map +1 -0
- package/dist/commands/__tests__/domEval.contract.test.js +231 -0
- package/dist/commands/__tests__/domEval.contract.test.js.map +1 -0
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +46 -5
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +8 -8
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.js +2 -2
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/dom.d.ts.map +1 -1
- package/dist/commands/dom.js +101 -109
- package/dist/commands/dom.js.map +1 -1
- package/dist/commands/domEvalHelpers.d.ts +6 -10
- package/dist/commands/domEvalHelpers.d.ts.map +1 -1
- package/dist/commands/domEvalHelpers.js +12 -16
- package/dist/commands/domEvalHelpers.js.map +1 -1
- package/dist/commands/network.d.ts.map +1 -1
- package/dist/commands/network.js +2 -4
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +3 -2
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +4 -2
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +17 -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 -1
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/sessionController.d.ts.map +1 -1
- package/dist/commands/shared/sessionController.js +7 -8
- package/dist/commands/shared/sessionController.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +4 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +5 -3
- package/dist/commands/stop.js.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.js +0 -1
- package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +32 -22
- package/dist/connection/launcher.js.map +1 -1
- package/dist/daemon/startSession.d.ts.map +1 -1
- package/dist/daemon/startSession.js +6 -4
- package/dist/daemon/startSession.js.map +1 -1
- package/dist/daemon/worker.js +116 -45
- package/dist/daemon/worker.js.map +1 -1
- package/dist/ipc/client.d.ts +13 -0
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +16 -0
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/commands.d.ts +19 -0
- package/dist/ipc/commands.d.ts.map +1 -1
- package/dist/ipc/commands.js +4 -0
- package/dist/ipc/commands.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/errors.d.ts +39 -0
- package/dist/ui/errors.d.ts.map +1 -0
- package/dist/ui/errors.js +48 -0
- package/dist/ui/errors.js.map +1 -0
- package/dist/ui/formatters/cookies.d.ts.map +1 -1
- package/dist/ui/formatters/cookies.js +18 -21
- package/dist/ui/formatters/cookies.js.map +1 -1
- package/dist/ui/formatters/details.d.ts.map +1 -1
- package/dist/ui/formatters/details.js +34 -36
- package/dist/ui/formatters/details.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts +135 -0
- package/dist/ui/formatters/dom.d.ts.map +1 -0
- package/dist/ui/formatters/dom.js +193 -0
- package/dist/ui/formatters/dom.js.map +1 -0
- package/dist/ui/formatters/index.d.ts +1 -0
- package/dist/ui/formatters/index.d.ts.map +1 -1
- package/dist/ui/formatters/index.js +1 -0
- package/dist/ui/formatters/index.js.map +1 -1
- package/dist/ui/formatters/preview.js +43 -38
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/status.d.ts.map +1 -1
- package/dist/ui/formatters/status.js +44 -44
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/formatting.d.ts +104 -1
- package/dist/ui/formatting.d.ts.map +1 -1
- package/dist/ui/formatting.js +138 -2
- package/dist/ui/formatting.js.map +1 -1
- package/dist/ui/messages/chrome.d.ts +70 -0
- package/dist/ui/messages/chrome.d.ts.map +1 -1
- package/dist/ui/messages/chrome.js +91 -0
- package/dist/ui/messages/chrome.js.map +1 -1
- package/dist/ui/messages/debug.d.ts +4 -2
- package/dist/ui/messages/debug.d.ts.map +1 -1
- package/dist/ui/messages/debug.js +31 -29
- package/dist/ui/messages/debug.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +11 -0
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +13 -0
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/preview.d.ts +24 -0
- package/dist/ui/messages/preview.d.ts.map +1 -1
- package/dist/ui/messages/preview.js +31 -0
- package/dist/ui/messages/preview.js.map +1 -1
- package/dist/ui/messages/validation.d.ts +14 -0
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +16 -0
- package/dist/ui/messages/validation.js.map +1 -1
- package/dist/utils/filters.js +1 -1
- package/dist/utils/filters.js.map +1 -1
- package/dist/utils/pageReadiness.d.ts +9 -14
- package/dist/utils/pageReadiness.d.ts.map +1 -1
- package/dist/utils/pageReadiness.js +16 -16
- package/dist/utils/pageReadiness.js.map +1 -1
- package/dist/utils/url.d.ts +58 -6
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +127 -20
- package/dist/utils/url.js.map +1 -1
- package/package.json +2 -5
package/dist/commands/dom.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { queryDOM, highlightDOM, getDOM } from '../ipc/client.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { runCommand } from '../commands/shared/CommandRunner.js';
|
|
2
|
+
import { queryDOM, highlightDOM, getDOM, captureScreenshot } from '../ipc/client.js';
|
|
3
|
+
import { formatDomQuery, formatDomHighlight, formatDomGet, formatDomEval, formatDomScreenshot, } from '../ui/formatters/dom.js';
|
|
4
|
+
import { filterDefined } from '../utils/objects.js';
|
|
5
5
|
import { buildSelectorOptions } from './domOptionsBuilder.js';
|
|
6
6
|
/**
|
|
7
7
|
* Handle bdg dom query <selector> command
|
|
@@ -11,49 +11,27 @@ import { buildSelectorOptions } from './domOptionsBuilder.js';
|
|
|
11
11
|
*
|
|
12
12
|
* @param selector - CSS selector to query (e.g., ".error", "#app", "button")
|
|
13
13
|
* @param options - Command options
|
|
14
|
-
* @throws Error When IPC request fails or returns error response
|
|
15
|
-
* @throws Error When response data is missing
|
|
16
14
|
*/
|
|
17
15
|
async function handleDomQuery(selector, options) {
|
|
18
|
-
|
|
19
|
-
// Send query request via IPC to daemon/worker
|
|
16
|
+
await runCommand(async () => {
|
|
20
17
|
const response = await queryDOM(selector);
|
|
21
18
|
if (response.status === 'error') {
|
|
22
|
-
|
|
19
|
+
return {
|
|
20
|
+
success: false,
|
|
21
|
+
error: response.error ?? 'Unknown error',
|
|
22
|
+
};
|
|
23
23
|
}
|
|
24
24
|
if (!response.data) {
|
|
25
|
-
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
error: 'No data in response',
|
|
28
|
+
};
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
count: 0,
|
|
33
|
-
nodes: [],
|
|
34
|
-
}, null, 2));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
console.log(`No elements found matching "${selector}"`);
|
|
38
|
-
}
|
|
39
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
40
|
-
}
|
|
41
|
-
// Output results
|
|
42
|
-
if (options.json) {
|
|
43
|
-
console.log(JSON.stringify(response.data, null, 2));
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.log(`Found ${count} element${count === 1 ? '' : 's'} matching "${selector}":`);
|
|
47
|
-
for (const node of nodes) {
|
|
48
|
-
const classInfo = node.classes && node.classes.length > 0 ? ` class="${node.classes.join(' ')}"` : '';
|
|
49
|
-
console.log(` [${node.index}] <${node.tag}${classInfo}> ${node.preview}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
handleCommandError(error, options.json ?? false);
|
|
56
|
-
}
|
|
30
|
+
return {
|
|
31
|
+
success: true,
|
|
32
|
+
data: response.data,
|
|
33
|
+
};
|
|
34
|
+
}, options, formatDomQuery);
|
|
57
35
|
}
|
|
58
36
|
/**
|
|
59
37
|
* Handle bdg dom highlight command
|
|
@@ -63,12 +41,9 @@ async function handleDomQuery(selector, options) {
|
|
|
63
41
|
*
|
|
64
42
|
* @param selectorOrIndex - CSS selector (e.g., ".error") or index from cached query (e.g., "2")
|
|
65
43
|
* @param options - Command options including color, opacity, targeting flags, and nodeId
|
|
66
|
-
* @throws Error When cached index not found (user must run 'bdg dom query' first)
|
|
67
|
-
* @throws Error When IPC request fails or returns error response
|
|
68
|
-
* @throws Error When response data is missing
|
|
69
44
|
*/
|
|
70
45
|
async function handleDomHighlight(selectorOrIndex, options) {
|
|
71
|
-
|
|
46
|
+
await runCommand(async () => {
|
|
72
47
|
// Build base IPC request options (color, opacity, targeting)
|
|
73
48
|
const ipcOptions = {
|
|
74
49
|
...(options.color !== undefined && { color: options.color }),
|
|
@@ -79,26 +54,24 @@ async function handleDomHighlight(selectorOrIndex, options) {
|
|
|
79
54
|
// Add selector/index/nodeId using shared helper
|
|
80
55
|
const selectorOptions = buildSelectorOptions(selectorOrIndex, options.nodeId);
|
|
81
56
|
Object.assign(ipcOptions, selectorOptions);
|
|
82
|
-
// Send highlight request via IPC to daemon/worker
|
|
83
57
|
const response = await highlightDOM(ipcOptions);
|
|
84
58
|
if (response.status === 'error') {
|
|
85
|
-
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: response.error ?? 'Unknown error',
|
|
62
|
+
};
|
|
86
63
|
}
|
|
87
64
|
if (!response.data) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
console.log(JSON.stringify(response.data, null, 2));
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
console.log(`✓ Highlighted ${response.data.highlighted} element${response.data.highlighted === 1 ? '' : 's'}`);
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: 'No data in response',
|
|
68
|
+
};
|
|
96
69
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
data: response.data,
|
|
73
|
+
};
|
|
74
|
+
}, options, formatDomHighlight);
|
|
102
75
|
}
|
|
103
76
|
/**
|
|
104
77
|
* Handle bdg dom get command
|
|
@@ -108,12 +81,9 @@ async function handleDomHighlight(selectorOrIndex, options) {
|
|
|
108
81
|
*
|
|
109
82
|
* @param selectorOrIndex - CSS selector (e.g., ".error") or index from cached query (e.g., "2")
|
|
110
83
|
* @param options - Command options including --all, --nth, and nodeId
|
|
111
|
-
* @throws Error When cached index not found (user must run 'bdg dom query' first)
|
|
112
|
-
* @throws Error When IPC request fails or returns error response
|
|
113
|
-
* @throws Error When response data is missing
|
|
114
84
|
*/
|
|
115
85
|
async function handleDomGet(selectorOrIndex, options) {
|
|
116
|
-
|
|
86
|
+
await runCommand(async () => {
|
|
117
87
|
// Build base IPC request options (targeting flags)
|
|
118
88
|
const ipcOptions = {
|
|
119
89
|
...(options.all !== undefined && { all: options.all }),
|
|
@@ -122,63 +92,82 @@ async function handleDomGet(selectorOrIndex, options) {
|
|
|
122
92
|
// Add selector/index/nodeId using shared helper
|
|
123
93
|
const selectorOptions = buildSelectorOptions(selectorOrIndex, options.nodeId);
|
|
124
94
|
Object.assign(ipcOptions, selectorOptions);
|
|
125
|
-
// Send get request via IPC to daemon/worker
|
|
126
95
|
const response = await getDOM(ipcOptions);
|
|
127
96
|
if (response.status === 'error') {
|
|
128
|
-
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
error: response.error ?? 'Unknown error',
|
|
100
|
+
};
|
|
129
101
|
}
|
|
130
102
|
if (!response.data) {
|
|
131
|
-
|
|
103
|
+
return {
|
|
104
|
+
success: false,
|
|
105
|
+
error: 'No data in response',
|
|
106
|
+
};
|
|
132
107
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
108
|
+
return {
|
|
109
|
+
success: true,
|
|
110
|
+
data: response.data,
|
|
111
|
+
};
|
|
112
|
+
}, options, formatDomGet);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Handle bdg dom screenshot <path> command
|
|
116
|
+
*
|
|
117
|
+
* Captures a screenshot of the current page and saves it to disk.
|
|
118
|
+
* Supports PNG and JPEG formats with customizable quality and viewport options.
|
|
119
|
+
*
|
|
120
|
+
* @param path - Output file path (absolute or relative)
|
|
121
|
+
* @param options - Screenshot options (format, quality, fullPage)
|
|
122
|
+
*/
|
|
123
|
+
async function handleDomScreenshot(path, options) {
|
|
124
|
+
await runCommand(async () => {
|
|
125
|
+
const screenshotOptions = filterDefined({
|
|
126
|
+
format: options.format,
|
|
127
|
+
quality: options.quality,
|
|
128
|
+
fullPage: options.fullPage,
|
|
129
|
+
});
|
|
130
|
+
const response = await captureScreenshot(path, screenshotOptions);
|
|
131
|
+
if (response.status === 'error') {
|
|
132
|
+
return {
|
|
133
|
+
success: false,
|
|
134
|
+
error: response.error ?? 'Unknown error',
|
|
135
|
+
};
|
|
137
136
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
for (const [i, node] of nodes.entries()) {
|
|
145
|
-
console.log(`[${i + 1}] ${node.outerHTML}`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
137
|
+
if (!response.data) {
|
|
138
|
+
return {
|
|
139
|
+
success: false,
|
|
140
|
+
error: 'No data in response',
|
|
141
|
+
};
|
|
148
142
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
143
|
+
return {
|
|
144
|
+
success: true,
|
|
145
|
+
data: response.data,
|
|
146
|
+
};
|
|
147
|
+
}, options, formatDomScreenshot);
|
|
154
148
|
}
|
|
155
149
|
/**
|
|
156
150
|
* Handle bdg dom eval <script> command
|
|
157
151
|
*
|
|
158
152
|
* Evaluates arbitrary JavaScript in the browser context and returns the result.
|
|
159
153
|
* Requires an active session. Uses CDP Runtime.evaluate with async support.
|
|
154
|
+
* Note: This command uses direct CDP connection (not IPC) so it follows a different pattern.
|
|
160
155
|
*
|
|
161
156
|
* @param script - JavaScript expression to evaluate (e.g., "document.title", "window.location.href")
|
|
162
157
|
* @param options - Command options including port and json formatting
|
|
163
|
-
* @throws Error When no active session is running
|
|
164
|
-
* @throws Error When session metadata is invalid
|
|
165
|
-
* @throws Error When target no longer exists (tab closed)
|
|
166
|
-
* @throws Error When CDP connection fails
|
|
167
|
-
* @throws Error When script execution throws exception
|
|
168
158
|
*/
|
|
169
159
|
async function handleDomEval(script, options) {
|
|
170
|
-
|
|
160
|
+
await runCommand(async () => {
|
|
171
161
|
// Lazy load CDP connection (only needed for eval command)
|
|
172
162
|
const { CDPConnection } = await import('../connection/cdp.js');
|
|
173
163
|
const { validateActiveSession, getValidatedSessionMetadata, verifyTargetExists, executeScript, } = await import('./domEvalHelpers.js');
|
|
174
164
|
// Validate session is running
|
|
175
|
-
|
|
176
|
-
validateActiveSession(jsonOutput);
|
|
165
|
+
validateActiveSession();
|
|
177
166
|
// Get and validate session metadata
|
|
178
|
-
const metadata = getValidatedSessionMetadata(
|
|
167
|
+
const metadata = getValidatedSessionMetadata();
|
|
179
168
|
// Verify target still exists
|
|
180
169
|
const port = parseInt(options.port ?? '9222', 10);
|
|
181
|
-
await verifyTargetExists(metadata, port
|
|
170
|
+
await verifyTargetExists(metadata, port);
|
|
182
171
|
// Create temporary CDP connection and execute script
|
|
183
172
|
const cdp = new CDPConnection();
|
|
184
173
|
// getValidatedSessionMetadata ensures webSocketDebuggerUrl is defined
|
|
@@ -186,20 +175,11 @@ async function handleDomEval(script, options) {
|
|
|
186
175
|
await cdp.connect(metadata.webSocketDebuggerUrl);
|
|
187
176
|
const result = await executeScript(cdp, script);
|
|
188
177
|
cdp.close();
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
console.log(JSON.stringify(result.result?.value, null, 2));
|
|
197
|
-
}
|
|
198
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
199
|
-
}
|
|
200
|
-
catch (error) {
|
|
201
|
-
handleCommandError(error, options.json ?? false);
|
|
202
|
-
}
|
|
178
|
+
return {
|
|
179
|
+
success: true,
|
|
180
|
+
data: { result: result.result?.value },
|
|
181
|
+
};
|
|
182
|
+
}, options, formatDomEval);
|
|
203
183
|
}
|
|
204
184
|
/**
|
|
205
185
|
* Register DOM telemetry commands
|
|
@@ -253,5 +233,17 @@ export function registerDomCommands(program) {
|
|
|
253
233
|
.action(async (selectorOrIndex, options) => {
|
|
254
234
|
await handleDomGet(selectorOrIndex, options);
|
|
255
235
|
});
|
|
236
|
+
// bdg dom screenshot <path>
|
|
237
|
+
dom
|
|
238
|
+
.command('screenshot')
|
|
239
|
+
.description('Capture page screenshot')
|
|
240
|
+
.argument('<path>', 'Output file path (e.g., "./screenshot.png")')
|
|
241
|
+
.option('--format <format>', 'Image format: png or jpeg (default: png)')
|
|
242
|
+
.option('--quality <number>', 'JPEG quality 0-100 (default: 90)', parseInt)
|
|
243
|
+
.option('--no-full-page', 'Capture viewport only (default: full page)')
|
|
244
|
+
.option('-j, --json', 'Output as JSON')
|
|
245
|
+
.action(async (path, options) => {
|
|
246
|
+
await handleDomScreenshot(path, options);
|
|
247
|
+
});
|
|
256
248
|
}
|
|
257
249
|
//# sourceMappingURL=dom.js.map
|
package/dist/commands/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/commands/dom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/commands/dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,29 +16,25 @@ interface RuntimeEvaluateResult {
|
|
|
16
16
|
/**
|
|
17
17
|
* Validate that an active session is running
|
|
18
18
|
*
|
|
19
|
-
* @param json - Whether to output JSON format
|
|
20
19
|
* @returns PID of running session
|
|
21
|
-
* @throws
|
|
20
|
+
* @throws Error When no active session is found
|
|
22
21
|
*/
|
|
23
|
-
export declare function validateActiveSession(
|
|
22
|
+
export declare function validateActiveSession(): number;
|
|
24
23
|
/**
|
|
25
24
|
* Get session metadata with validation
|
|
26
25
|
*
|
|
27
|
-
* @param json - Whether to output JSON format
|
|
28
26
|
* @returns Session metadata including targetId and webSocketDebuggerUrl
|
|
29
|
-
* @throws
|
|
27
|
+
* @throws Error When metadata is invalid or missing required fields
|
|
30
28
|
*/
|
|
31
|
-
export declare function getValidatedSessionMetadata(
|
|
29
|
+
export declare function getValidatedSessionMetadata(): SessionMetadata;
|
|
32
30
|
/**
|
|
33
31
|
* Verify that the CDP target still exists
|
|
34
32
|
*
|
|
35
33
|
* @param metadata - Session metadata containing targetId
|
|
36
34
|
* @param port - CDP port number
|
|
37
|
-
* @
|
|
38
|
-
* @throws Error When CDP response is invalid
|
|
39
|
-
* @throws never Exits process if target not found
|
|
35
|
+
* @throws Error When CDP response is invalid or target not found
|
|
40
36
|
*/
|
|
41
|
-
export declare function verifyTargetExists(metadata: SessionMetadata, port: number
|
|
37
|
+
export declare function verifyTargetExists(metadata: SessionMetadata, port: number): Promise<void>;
|
|
42
38
|
/**
|
|
43
39
|
* Execute JavaScript in browser context via CDP
|
|
44
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domEvalHelpers.d.ts","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAclF;;GAEG;AACH,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE;QACjB,SAAS,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED
|
|
1
|
+
{"version":3,"file":"domEvalHelpers.d.ts","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAclF;;GAEG;AACH,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE;QACjB,SAAS,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,eAAe,CAY7D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAehC"}
|
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
import { readSessionMetadata } from '../session/metadata.js';
|
|
2
2
|
import { readPid } from '../session/pid.js';
|
|
3
3
|
import { isProcessAlive } from '../session/process.js';
|
|
4
|
+
import { CommandError } from '../ui/errors.js';
|
|
5
|
+
import { invalidCDPResponseError } from '../ui/messages/errors.js';
|
|
4
6
|
import { EXIT_CODES } from '../utils/exitCodes.js';
|
|
5
|
-
import { handleCommandErrorWithContext } from './domErrorHandler.js';
|
|
6
7
|
/**
|
|
7
8
|
* Validate that an active session is running
|
|
8
9
|
*
|
|
9
|
-
* @param json - Whether to output JSON format
|
|
10
10
|
* @returns PID of running session
|
|
11
|
-
* @throws
|
|
11
|
+
* @throws Error When no active session is found
|
|
12
12
|
*/
|
|
13
|
-
export function validateActiveSession(
|
|
13
|
+
export function validateActiveSession() {
|
|
14
14
|
const pid = readPid();
|
|
15
15
|
if (!pid || !isProcessAlive(pid)) {
|
|
16
|
-
|
|
16
|
+
throw new CommandError('No active session running', { suggestion: 'Start a session with: bdg <url>' }, EXIT_CODES.RESOURCE_NOT_FOUND);
|
|
17
17
|
}
|
|
18
18
|
return pid;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Get session metadata with validation
|
|
22
22
|
*
|
|
23
|
-
* @param json - Whether to output JSON format
|
|
24
23
|
* @returns Session metadata including targetId and webSocketDebuggerUrl
|
|
25
|
-
* @throws
|
|
24
|
+
* @throws Error When metadata is invalid or missing required fields
|
|
26
25
|
*/
|
|
27
|
-
export function getValidatedSessionMetadata(
|
|
26
|
+
export function getValidatedSessionMetadata() {
|
|
28
27
|
const metadata = readSessionMetadata();
|
|
29
28
|
if (!metadata?.targetId || !metadata.webSocketDebuggerUrl) {
|
|
30
|
-
|
|
29
|
+
throw new CommandError('No target information in session metadata', { note: 'Session may have been started with an older version' }, EXIT_CODES.SESSION_FILE_ERROR);
|
|
31
30
|
}
|
|
32
|
-
// TypeScript doesn't know handleCommandErrorWithContext never returns
|
|
33
31
|
return metadata;
|
|
34
32
|
}
|
|
35
33
|
/**
|
|
@@ -37,19 +35,17 @@ export function getValidatedSessionMetadata(json) {
|
|
|
37
35
|
*
|
|
38
36
|
* @param metadata - Session metadata containing targetId
|
|
39
37
|
* @param port - CDP port number
|
|
40
|
-
* @
|
|
41
|
-
* @throws Error When CDP response is invalid
|
|
42
|
-
* @throws never Exits process if target not found
|
|
38
|
+
* @throws Error When CDP response is invalid or target not found
|
|
43
39
|
*/
|
|
44
|
-
export async function verifyTargetExists(metadata, port
|
|
40
|
+
export async function verifyTargetExists(metadata, port) {
|
|
45
41
|
const response = await fetch(`http://127.0.0.1:${port}/json/list`);
|
|
46
42
|
const targetsData = await response.json();
|
|
47
43
|
if (!Array.isArray(targetsData)) {
|
|
48
|
-
throw new Error(
|
|
44
|
+
throw new Error(invalidCDPResponseError());
|
|
49
45
|
}
|
|
50
46
|
const target = targetsData.find((t) => t.id === metadata.targetId);
|
|
51
47
|
if (!target) {
|
|
52
|
-
|
|
48
|
+
throw new CommandError('Session target not found (tab may have been closed)', { suggestion: 'Start a new session with: bdg <url>' }, EXIT_CODES.RESOURCE_NOT_FOUND);
|
|
53
49
|
}
|
|
54
50
|
}
|
|
55
51
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domEvalHelpers.js","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"domEvalHelpers.js","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAuBlD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACpB,2BAA2B,EAC3B,EAAE,UAAU,EAAE,iCAAiC,EAAE,EACjD,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC1D,MAAM,IAAI,YAAY,CACpB,2CAA2C,EAC3C,EAAE,IAAI,EAAE,qDAAqD,EAAE,EAC/D,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAyB,EAAE,IAAY;IAC9E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,YAAY,CAAC,CAAC;IACnE,MAAM,WAAW,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAI,WAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,YAAY,CACpB,qDAAqD,EACrD,EAAE,UAAU,EAAE,qCAAqC,EAAE,EACrD,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAkB,EAClB,MAAc;IAEd,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACjD,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;KACnB,CAAC,CAA0B,CAAC;IAE7B,iCAAiC;IACjC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,IAAI,gCAAgC,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC9D"}
|
package/dist/commands/network.js
CHANGED
|
@@ -34,10 +34,8 @@ export function registerNetworkCommands(program) {
|
|
|
34
34
|
data: cookies,
|
|
35
35
|
};
|
|
36
36
|
}, options,
|
|
37
|
-
// Human-readable formatter
|
|
38
|
-
|
|
39
|
-
console.log(formatCookies(cookies));
|
|
40
|
-
});
|
|
37
|
+
// Human-readable formatter
|
|
38
|
+
formatCookies);
|
|
41
39
|
});
|
|
42
40
|
}
|
|
43
41
|
//# sourceMappingURL=network.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEjG,yBAAyB;IACzB,UAAU;SACP,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAC9C,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,8BAA8B;YAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAE7D,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,oCAAoC;YACpC,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,EAAE,MAAiC,EAAE,OAAO,IAAI,EAAE,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC,EACD,OAAO;QACP,
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEjG,yBAAyB;IACzB,UAAU;SACP,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAC9C,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,8BAA8B;YAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAE7D,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,oCAAoC;YACpC,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,EAAE,MAAiC,EAAE,OAAO,IAAI,EAAE,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC,EACD,OAAO;QACP,2BAA2B;QAC3B,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peek.d.ts","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"peek.d.ts","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoG1D"}
|
package/dist/commands/peek.js
CHANGED
|
@@ -5,6 +5,7 @@ import { validateIPCResponse } from '../ipc/responseValidator.js';
|
|
|
5
5
|
import { formatPreview } from '../ui/formatters/preview.js';
|
|
6
6
|
import { invalidLastArgumentError } from '../ui/messages/commands.js';
|
|
7
7
|
import { daemonNotRunningError, noPreviewDataError } from '../ui/messages/errors.js';
|
|
8
|
+
import { followingPreviewMessage, stoppedFollowingPreviewMessage } from '../ui/messages/preview.js';
|
|
8
9
|
import { EXIT_CODES } from '../utils/exitCodes.js';
|
|
9
10
|
/**
|
|
10
11
|
* Handle errors in a consistent way for both follow and one-time modes.
|
|
@@ -93,7 +94,7 @@ export function registerPeekCommand(program) {
|
|
|
93
94
|
};
|
|
94
95
|
if (options.follow) {
|
|
95
96
|
// Follow mode: update every second
|
|
96
|
-
console.error(
|
|
97
|
+
console.error(followingPreviewMessage());
|
|
97
98
|
await showPreview();
|
|
98
99
|
const followInterval = setInterval(() => {
|
|
99
100
|
void showPreview();
|
|
@@ -101,7 +102,7 @@ export function registerPeekCommand(program) {
|
|
|
101
102
|
// Handle Ctrl+C gracefully
|
|
102
103
|
process.on('SIGINT', () => {
|
|
103
104
|
clearInterval(followInterval);
|
|
104
|
-
console.error(
|
|
105
|
+
console.error(stoppedFollowingPreviewMessage());
|
|
105
106
|
process.exit(EXIT_CODES.SUCCESS);
|
|
106
107
|
});
|
|
107
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peek.js","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"peek.js","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,11 @@ export interface CommandResult<T = unknown> {
|
|
|
27
27
|
export type CommandHandler<TOptions extends BaseCommandOptions, TResult = unknown> = (options: TOptions) => Promise<CommandResult<TResult>>;
|
|
28
28
|
/**
|
|
29
29
|
* Formatter function type for human-readable output.
|
|
30
|
-
* Receives the command result data and
|
|
30
|
+
* Receives the command result data and returns a formatted string.
|
|
31
|
+
*
|
|
32
|
+
* @returns Formatted string to be output to console
|
|
31
33
|
*/
|
|
32
|
-
export type CommandFormatter<TResult = unknown> = (data: TResult) =>
|
|
34
|
+
export type CommandFormatter<TResult = unknown> = (data: TResult) => string;
|
|
33
35
|
/**
|
|
34
36
|
* Run a command with consistent error handling, output formatting, and exit codes.
|
|
35
37
|
* Eliminates boilerplate try-catch and JSON output logic from command handlers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandRunner.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/CommandRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CommandRunner.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/CommandRunner.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,kBAAkB,EAAE,OAAO,GAAG,OAAO,IAAI,CACnF,OAAO,EAAE,QAAQ,KACd,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,UAAU,CAAC,QAAQ,SAAS,kBAAkB,EAAE,OAAO,GAAG,OAAO,EACrF,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC1C,OAAO,EAAE,QAAQ,EACjB,SAAS,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAyEf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OutputBuilder } from '../../commands/shared/OutputBuilder.js';
|
|
2
|
+
import { CommandError } from '../../ui/errors.js';
|
|
2
3
|
import { daemonNotRunningError, unknownError, genericError } from '../../ui/messages/errors.js';
|
|
3
4
|
import { getErrorMessage } from '../../utils/errors.js';
|
|
4
5
|
import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
@@ -46,7 +47,8 @@ export async function runCommand(handler, options, formatter) {
|
|
|
46
47
|
console.log(JSON.stringify(result.data, null, 2));
|
|
47
48
|
}
|
|
48
49
|
else if (formatter) {
|
|
49
|
-
formatter(result.data);
|
|
50
|
+
const formattedOutput = formatter(result.data);
|
|
51
|
+
console.log(formattedOutput);
|
|
50
52
|
}
|
|
51
53
|
else {
|
|
52
54
|
// Fallback: JSON output if no formatter provided
|
|
@@ -55,6 +57,20 @@ export async function runCommand(handler, options, formatter) {
|
|
|
55
57
|
process.exit(EXIT_CODES.SUCCESS);
|
|
56
58
|
}
|
|
57
59
|
catch (error) {
|
|
60
|
+
// Handle CommandError with metadata and custom exit code
|
|
61
|
+
if (error instanceof CommandError) {
|
|
62
|
+
if (options.json) {
|
|
63
|
+
console.log(JSON.stringify(OutputBuilder.buildJsonError(error.message, error.metadata), null, 2));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.error(genericError(error.message));
|
|
67
|
+
// Output metadata as additional help text
|
|
68
|
+
for (const value of Object.values(error.metadata)) {
|
|
69
|
+
console.error(value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
process.exit(error.exitCode);
|
|
73
|
+
}
|
|
58
74
|
const errorMessage = getErrorMessage(error);
|
|
59
75
|
// Detect daemon connection errors
|
|
60
76
|
if (errorMessage.includes('ENOENT') || errorMessage.includes('ECONNREFUSED')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandRunner.js","sourceRoot":"","sources":["../../../src/commands/shared/CommandRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandRunner.js","sourceRoot":"","sources":["../../../src/commands/shared/CommandRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonOptions.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/commonOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"commonOptions.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/commonOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,QAA6C,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,QAQnB,CAAC;AAEL;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAIzD"}
|