@vforsh/argus 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +577 -157
  3. package/dist/bin.js +2 -0
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli/register/registerAuth.d.ts +3 -0
  6. package/dist/cli/register/registerAuth.d.ts.map +1 -0
  7. package/dist/cli/register/registerAuth.js +29 -0
  8. package/dist/cli/register/registerAuth.js.map +1 -0
  9. package/dist/commands/auth.d.ts +22 -0
  10. package/dist/commands/auth.d.ts.map +1 -0
  11. package/dist/commands/auth.js +168 -0
  12. package/dist/commands/auth.js.map +1 -0
  13. package/dist/commands/start.d.ts.map +1 -1
  14. package/dist/commands/start.js +1 -0
  15. package/dist/commands/start.js.map +1 -1
  16. package/dist/commands/watcherNativeHost.d.ts.map +1 -1
  17. package/dist/commands/watcherNativeHost.js +1 -0
  18. package/dist/commands/watcherNativeHost.js.map +1 -1
  19. package/dist/commands/watcherStart.d.ts.map +1 -1
  20. package/dist/commands/watcherStart.js +1 -0
  21. package/dist/commands/watcherStart.js.map +1 -1
  22. package/package.json +3 -2
  23. package/dist/commands/contexts.d.ts +0 -7
  24. package/dist/commands/contexts.d.ts.map +0 -1
  25. package/dist/commands/contexts.js +0 -54
  26. package/dist/commands/contexts.js.map +0 -1
  27. package/dist/commands/domDiff.d.ts +0 -43
  28. package/dist/commands/domDiff.d.ts.map +0 -1
  29. package/dist/commands/domDiff.js +0 -279
  30. package/dist/commands/domDiff.js.map +0 -1
  31. package/dist/commands/domSubmit.d.ts +0 -10
  32. package/dist/commands/domSubmit.d.ts.map +0 -1
  33. package/dist/commands/domSubmit.js +0 -78
  34. package/dist/commands/domSubmit.js.map +0 -1
  35. package/dist/commands/extension/attach.d.ts +0 -8
  36. package/dist/commands/extension/attach.d.ts.map +0 -1
  37. package/dist/commands/extension/attach.js +0 -171
  38. package/dist/commands/extension/attach.js.map +0 -1
  39. package/dist/commands/extension/detach.d.ts +0 -6
  40. package/dist/commands/extension/detach.d.ts.map +0 -1
  41. package/dist/commands/extension/detach.js +0 -132
  42. package/dist/commands/extension/detach.js.map +0 -1
  43. package/dist/commands/extension/targets.d.ts +0 -13
  44. package/dist/commands/extension/targets.d.ts.map +0 -1
  45. package/dist/commands/extension/targets.js +0 -77
  46. package/dist/commands/extension/targets.js.map +0 -1
  47. package/dist/commands/frames.d.ts +0 -7
  48. package/dist/commands/frames.d.ts.map +0 -1
  49. package/dist/commands/frames.js +0 -90
  50. package/dist/commands/frames.js.map +0 -1
  51. package/dist/frame/frameSelector.d.ts +0 -14
  52. package/dist/frame/frameSelector.d.ts.map +0 -1
  53. package/dist/frame/frameSelector.js +0 -31
  54. package/dist/frame/frameSelector.js.map +0 -1
  55. package/dist/output/domDiff.d.ts +0 -14
  56. package/dist/output/domDiff.d.ts.map +0 -1
  57. package/dist/output/domDiff.js +0 -151
  58. package/dist/output/domDiff.js.map +0 -1
  59. package/dist/throttle/networkPresets.d.ts +0 -6
  60. package/dist/throttle/networkPresets.d.ts.map +0 -1
  61. package/dist/throttle/networkPresets.js +0 -24
  62. package/dist/throttle/networkPresets.js.map +0 -1
@@ -1,279 +0,0 @@
1
- import { fetchJson } from '../httpClient.js';
2
- import { formatDomDiff, formatSnapshotList, formatSnapshotCreated } from '../output/domDiff.js';
3
- import { createOutput } from '../output/io.js';
4
- import { writeWatcherCandidates } from '../watchers/candidates.js';
5
- import { resolveWatcher } from '../watchers/resolveWatcher.js';
6
- const formatError = (error) => {
7
- if (!error) {
8
- return 'unknown error';
9
- }
10
- if (error instanceof Error) {
11
- return error.message;
12
- }
13
- return String(error);
14
- };
15
- const parseSelectors = (selector) => {
16
- // Split by comma, trim, filter empty
17
- return selector
18
- .split(',')
19
- .map((s) => s.trim())
20
- .filter(Boolean);
21
- };
22
- /**
23
- * Run the dom diff --snapshot command to take a snapshot.
24
- */
25
- export const runDomDiffSnapshot = async (id, options) => {
26
- const output = createOutput(options);
27
- if (!options.selector || options.selector.trim() === '') {
28
- output.writeWarn('--selector is required');
29
- process.exitCode = 2;
30
- return;
31
- }
32
- if (!options.snapshot || options.snapshot.trim() === '') {
33
- output.writeWarn('--snapshot name is required');
34
- process.exitCode = 2;
35
- return;
36
- }
37
- const resolved = await resolveWatcher({ id });
38
- if (!resolved.ok) {
39
- output.writeWarn(resolved.error);
40
- if (resolved.candidates && resolved.candidates.length > 0) {
41
- writeWatcherCandidates(resolved.candidates, output);
42
- output.writeWarn('Hint: run `argus list` to see all watchers.');
43
- }
44
- process.exitCode = resolved.exitCode;
45
- return;
46
- }
47
- const { watcher } = resolved;
48
- const selectors = parseSelectors(options.selector);
49
- const url = `http://${watcher.host}:${watcher.port}/dom/snapshot`;
50
- let response;
51
- try {
52
- response = await fetchJson(url, {
53
- method: 'POST',
54
- body: {
55
- selectors,
56
- name: options.snapshot,
57
- persist: options.persist ?? false,
58
- },
59
- timeoutMs: 30_000,
60
- returnErrorResponse: true,
61
- });
62
- }
63
- catch (error) {
64
- output.writeWarn(`${watcher.id}: failed to reach watcher (${formatError(error)})`);
65
- process.exitCode = 1;
66
- return;
67
- }
68
- if (!response.ok) {
69
- const errorResp = response;
70
- if (options.json) {
71
- output.writeJson(response);
72
- }
73
- else {
74
- output.writeWarn(`Error: ${errorResp.error.message}`);
75
- }
76
- process.exitCode = 1;
77
- return;
78
- }
79
- const successResp = response;
80
- if (options.json) {
81
- output.writeJson(successResp);
82
- return;
83
- }
84
- const formatted = formatSnapshotCreated(successResp.snapshot.name, successResp.snapshot.elements.length, successResp.file);
85
- output.writeHuman(formatted);
86
- };
87
- /**
88
- * Run the dom diff --compare command to compare against a baseline snapshot.
89
- */
90
- export const runDomDiffCompare = async (id, options) => {
91
- const output = createOutput(options);
92
- if (!options.selector || options.selector.trim() === '') {
93
- output.writeWarn('--selector is required');
94
- process.exitCode = 2;
95
- return;
96
- }
97
- if (!options.compare || options.compare.trim() === '') {
98
- output.writeWarn('--compare baseline name is required');
99
- process.exitCode = 2;
100
- return;
101
- }
102
- const resolved = await resolveWatcher({ id });
103
- if (!resolved.ok) {
104
- output.writeWarn(resolved.error);
105
- if (resolved.candidates && resolved.candidates.length > 0) {
106
- writeWatcherCandidates(resolved.candidates, output);
107
- output.writeWarn('Hint: run `argus list` to see all watchers.');
108
- }
109
- process.exitCode = resolved.exitCode;
110
- return;
111
- }
112
- const { watcher } = resolved;
113
- const selectors = parseSelectors(options.selector);
114
- const url = `http://${watcher.host}:${watcher.port}/dom/diff`;
115
- let response;
116
- try {
117
- response = await fetchJson(url, {
118
- method: 'POST',
119
- body: {
120
- baseline: options.compare,
121
- selectors,
122
- },
123
- timeoutMs: 30_000,
124
- returnErrorResponse: true,
125
- });
126
- }
127
- catch (error) {
128
- output.writeWarn(`${watcher.id}: failed to reach watcher (${formatError(error)})`);
129
- process.exitCode = 1;
130
- return;
131
- }
132
- if (!response.ok) {
133
- const errorResp = response;
134
- if (options.json) {
135
- output.writeJson(response);
136
- }
137
- else {
138
- output.writeWarn(`Error: ${errorResp.error.message}`);
139
- }
140
- process.exitCode = 1;
141
- return;
142
- }
143
- const successResp = response;
144
- if (options.json) {
145
- output.writeJson(successResp);
146
- return;
147
- }
148
- const formatted = formatDomDiff(successResp);
149
- output.writeHuman(formatted);
150
- };
151
- /**
152
- * Run the dom diff action command with before/after eval expressions.
153
- */
154
- export const runDomDiffAction = async (id, options) => {
155
- const output = createOutput(options);
156
- if (!options.selector || options.selector.trim() === '') {
157
- output.writeWarn('--selector is required');
158
- process.exitCode = 2;
159
- return;
160
- }
161
- if (!options.beforeEval && !options.afterEval) {
162
- output.writeWarn('At least one of --before-eval or --after-eval is required');
163
- process.exitCode = 2;
164
- return;
165
- }
166
- const resolved = await resolveWatcher({ id });
167
- if (!resolved.ok) {
168
- output.writeWarn(resolved.error);
169
- if (resolved.candidates && resolved.candidates.length > 0) {
170
- writeWatcherCandidates(resolved.candidates, output);
171
- output.writeWarn('Hint: run `argus list` to see all watchers.');
172
- }
173
- process.exitCode = resolved.exitCode;
174
- return;
175
- }
176
- const { watcher } = resolved;
177
- const selectors = parseSelectors(options.selector);
178
- const afterDelay = parsePositiveInt(options.delay) ?? 500;
179
- const beforeDelay = parsePositiveInt(options.beforeDelay) ?? 0;
180
- const url = `http://${watcher.host}:${watcher.port}/dom/diff/action`;
181
- let response;
182
- try {
183
- response = await fetchJson(url, {
184
- method: 'POST',
185
- body: {
186
- selectors,
187
- beforeEval: options.beforeEval,
188
- afterEval: options.afterEval,
189
- beforeDelay,
190
- afterDelay,
191
- },
192
- timeoutMs: 60_000, // Longer timeout for action mode
193
- returnErrorResponse: true,
194
- });
195
- }
196
- catch (error) {
197
- output.writeWarn(`${watcher.id}: failed to reach watcher (${formatError(error)})`);
198
- process.exitCode = 1;
199
- return;
200
- }
201
- if (!response.ok) {
202
- const errorResp = response;
203
- if (options.json) {
204
- output.writeJson(response);
205
- }
206
- else {
207
- output.writeWarn(`Error: ${errorResp.error.message}`);
208
- }
209
- process.exitCode = 1;
210
- return;
211
- }
212
- const successResp = response;
213
- if (options.json) {
214
- output.writeJson(successResp);
215
- return;
216
- }
217
- const formatted = formatDomDiff(successResp);
218
- output.writeHuman(formatted);
219
- };
220
- /**
221
- * Run the dom diff list command to list stored snapshots.
222
- */
223
- export const runDomDiffList = async (id, options) => {
224
- const output = createOutput(options);
225
- const resolved = await resolveWatcher({ id });
226
- if (!resolved.ok) {
227
- output.writeWarn(resolved.error);
228
- if (resolved.candidates && resolved.candidates.length > 0) {
229
- writeWatcherCandidates(resolved.candidates, output);
230
- output.writeWarn('Hint: run `argus list` to see all watchers.');
231
- }
232
- process.exitCode = resolved.exitCode;
233
- return;
234
- }
235
- const { watcher } = resolved;
236
- const url = `http://${watcher.host}:${watcher.port}/dom/snapshot/list`;
237
- let response;
238
- try {
239
- response = await fetchJson(url, {
240
- method: 'GET',
241
- timeoutMs: 10_000,
242
- returnErrorResponse: true,
243
- });
244
- }
245
- catch (error) {
246
- output.writeWarn(`${watcher.id}: failed to reach watcher (${formatError(error)})`);
247
- process.exitCode = 1;
248
- return;
249
- }
250
- if (!response.ok) {
251
- const errorResp = response;
252
- if (options.json) {
253
- output.writeJson(response);
254
- }
255
- else {
256
- output.writeWarn(`Error: ${errorResp.error.message}`);
257
- }
258
- process.exitCode = 1;
259
- return;
260
- }
261
- const successResp = response;
262
- if (options.json) {
263
- output.writeJson(successResp);
264
- return;
265
- }
266
- const formatted = formatSnapshotList(successResp.snapshots);
267
- output.writeHuman(formatted);
268
- };
269
- const parsePositiveInt = (value) => {
270
- if (value === undefined) {
271
- return undefined;
272
- }
273
- const parsed = Number(value);
274
- if (!Number.isFinite(parsed) || parsed < 0 || !Number.isInteger(parsed)) {
275
- return undefined;
276
- }
277
- return parsed;
278
- };
279
- //# sourceMappingURL=domDiff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domDiff.js","sourceRoot":"","sources":["../../src/commands/domDiff.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export type DomSubmitOptions = {
2
- selector: string;
3
- all?: boolean;
4
- text?: string;
5
- wait?: string;
6
- strategy?: 'auto' | 'form' | 'self';
7
- json?: boolean;
8
- };
9
- export declare const runDomSubmit: (id: string | undefined, options: DomSubmitOptions) => Promise<void>;
10
- //# sourceMappingURL=domSubmit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domSubmit.d.ts","sourceRoot":"","sources":["../../src/commands/domSubmit.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAmFlG,CAAA"}
@@ -1,78 +0,0 @@
1
- import { createOutput } from '../output/io.js';
2
- import { parseDurationMs } from '../time.js';
3
- import { requestWatcherJson, writeRequestError } from '../watchers/requestWatcher.js';
4
- export const runDomSubmit = async (id, options) => {
5
- const output = createOutput(options);
6
- if (!options.selector || options.selector.trim() === '') {
7
- output.writeWarn('--selector or --testid is required');
8
- process.exitCode = 2;
9
- return;
10
- }
11
- let waitMs = 0;
12
- if (options.wait != null) {
13
- const parsed = parseDurationMs(options.wait);
14
- if (parsed == null || parsed < 0) {
15
- output.writeWarn('Invalid --wait value: expected a duration like 5s, 500ms, 2m.');
16
- process.exitCode = 2;
17
- return;
18
- }
19
- waitMs = parsed;
20
- }
21
- const strategy = options.strategy ?? 'auto';
22
- if (strategy !== 'auto' && strategy !== 'form' && strategy !== 'self') {
23
- output.writeWarn('Invalid --strategy value: expected auto, form, or self.');
24
- process.exitCode = 2;
25
- return;
26
- }
27
- const body = {
28
- selector: options.selector,
29
- all: options.all ?? false,
30
- text: options.text,
31
- strategy,
32
- };
33
- if (waitMs > 0) {
34
- body.wait = waitMs;
35
- }
36
- const result = await requestWatcherJson({
37
- id,
38
- path: '/dom/submit',
39
- method: 'POST',
40
- body,
41
- timeoutMs: Math.max(30_000, waitMs + 5_000),
42
- returnErrorResponse: true,
43
- });
44
- if (!result.ok) {
45
- writeRequestError(result, output);
46
- return;
47
- }
48
- const response = result.data;
49
- if (!response.ok) {
50
- const errorResp = response;
51
- if (options.json) {
52
- output.writeJson(response);
53
- }
54
- else {
55
- output.writeWarn(`Error: ${errorResp.error.message}`);
56
- }
57
- process.exitCode = 1;
58
- return;
59
- }
60
- const successResp = response;
61
- if (options.json) {
62
- output.writeJson(successResp);
63
- return;
64
- }
65
- if (successResp.matches === 0) {
66
- output.writeWarn(`No element found for selector: ${options.selector}`);
67
- process.exitCode = 1;
68
- return;
69
- }
70
- if (successResp.submitted === 0) {
71
- output.writeWarn(`Matched ${successResp.matches} element(s), but none could be submitted`);
72
- process.exitCode = 1;
73
- return;
74
- }
75
- const label = successResp.submitted === 1 ? '1 element' : `${successResp.submitted} elements`;
76
- output.writeHuman(`Submitted ${label} for selector: ${options.selector}`);
77
- };
78
- //# sourceMappingURL=domSubmit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domSubmit.js","sourceRoot":"","sources":["../../src/commands/domSubmit.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export type ExtensionAttachOptions = {
2
- tabId?: string;
3
- url?: string;
4
- title?: string;
5
- json?: boolean;
6
- };
7
- export declare const runExtensionAttach: (id: string | undefined, options: ExtensionAttachOptions) => Promise<void>;
8
- //# sourceMappingURL=attach.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/attach.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAsH9G,CAAA"}
@@ -1,171 +0,0 @@
1
- import { fetchJson } from '../../httpClient.js';
2
- import { createOutput } from '../../output/io.js';
3
- import { resolveWatcher } from '../../watchers/resolveWatcher.js';
4
- import { writeWatcherCandidates } from '../../watchers/candidates.js';
5
- export const runExtensionAttach = async (id, options) => {
6
- const output = createOutput(options);
7
- const resolved = await resolveWatcher({ id });
8
- if (!resolved.ok) {
9
- output.writeWarn(resolved.error);
10
- if (resolved.candidates && resolved.candidates.length > 0) {
11
- writeWatcherCandidates(resolved.candidates, output);
12
- }
13
- process.exitCode = resolved.exitCode;
14
- return;
15
- }
16
- const { watcher } = resolved;
17
- const baseUrl = `http://${watcher.host}:${watcher.port}`;
18
- // If tabId is provided directly, use it
19
- if (options.tabId) {
20
- const tabIdNum = parseInt(options.tabId, 10);
21
- if (isNaN(tabIdNum)) {
22
- output.writeWarn(`Invalid tabId: ${options.tabId}`);
23
- process.exitCode = 2;
24
- return;
25
- }
26
- await attachToTab(baseUrl, tabIdNum, options.tabId, output, options.json);
27
- return;
28
- }
29
- // Otherwise, we need to find a matching tab
30
- if (!options.url && !options.title) {
31
- output.writeWarn('Either --tab-id, --url, or --title is required.');
32
- output.writeWarn('');
33
- output.writeWarn('Examples:');
34
- output.writeWarn(' argus ext attach app --tab-id 123456789');
35
- output.writeWarn(' argus ext attach app --url localhost:3000');
36
- output.writeWarn(' argus ext attach app --title "My App"');
37
- process.exitCode = 2;
38
- return;
39
- }
40
- // Fetch available targets
41
- let targetsResponse;
42
- try {
43
- targetsResponse = await fetchJson(`${baseUrl}/targets`, { timeoutMs: 5_000, returnErrorResponse: true });
44
- }
45
- catch (error) {
46
- output.writeWarn(`Failed to fetch targets: ${error instanceof Error ? error.message : error}`);
47
- process.exitCode = 1;
48
- return;
49
- }
50
- if (!targetsResponse.ok || !targetsResponse.targets) {
51
- const message = targetsResponse.error?.message ?? 'Unknown error';
52
- if (targetsResponse.error?.code === 'not_available' || targetsResponse.error?.code === 'not_found') {
53
- output.writeWarn(`Watcher "${watcher.id}" is not in extension mode.`);
54
- output.writeWarn('Start the watcher with --source extension to use this command.');
55
- }
56
- else {
57
- output.writeWarn(`Failed to list targets: ${message}`);
58
- }
59
- process.exitCode = 1;
60
- return;
61
- }
62
- const { targets } = targetsResponse;
63
- // Filter to non-attached targets
64
- const available = targets.filter((t) => !t.attached);
65
- if (available.length === 0) {
66
- output.writeWarn('No available tabs to attach.');
67
- const attached = targets.filter((t) => t.attached);
68
- if (attached.length > 0) {
69
- output.writeWarn(`Already attached to ${attached.length} tab(s).`);
70
- }
71
- process.exitCode = 1;
72
- return;
73
- }
74
- // Find matching tabs
75
- const matches = available.filter((target) => {
76
- if (options.url && !target.url.toLowerCase().includes(options.url.toLowerCase())) {
77
- return false;
78
- }
79
- if (options.title && !target.title.toLowerCase().includes(options.title.toLowerCase())) {
80
- return false;
81
- }
82
- return true;
83
- });
84
- if (matches.length === 0) {
85
- output.writeWarn('No tabs match the specified criteria.');
86
- output.writeWarn('');
87
- output.writeWarn('Available tabs:');
88
- for (const target of available.slice(0, 5)) {
89
- output.writeWarn(` [${target.id}] ${truncate(target.title, 40)} - ${truncate(target.url, 50)}`);
90
- }
91
- if (available.length > 5) {
92
- output.writeWarn(` ... and ${available.length - 5} more`);
93
- }
94
- process.exitCode = 1;
95
- return;
96
- }
97
- if (matches.length > 1) {
98
- output.writeWarn(`Multiple tabs match (${matches.length}). Be more specific or use --tab-id.`);
99
- output.writeWarn('');
100
- output.writeWarn('Matching tabs:');
101
- for (const target of matches.slice(0, 5)) {
102
- output.writeWarn(` [${target.id}] ${truncate(target.title, 40)} - ${truncate(target.url, 50)}`);
103
- }
104
- if (matches.length > 5) {
105
- output.writeWarn(` ... and ${matches.length - 5} more`);
106
- }
107
- process.exitCode = 1;
108
- return;
109
- }
110
- // Attach to the single match
111
- const target = matches[0];
112
- const tabIdNum = parseInt(target.id, 10);
113
- await attachToTab(baseUrl, tabIdNum, target.id, output, options.json, target);
114
- };
115
- const attachToTab = async (baseUrl, tabId, tabIdStr, output, json, target) => {
116
- let response;
117
- try {
118
- response = await fetchJson(`${baseUrl}/attach`, {
119
- method: 'POST',
120
- body: { tabId },
121
- timeoutMs: 5_000,
122
- returnErrorResponse: true,
123
- });
124
- }
125
- catch (error) {
126
- if (json) {
127
- output.writeJson({ success: false, error: error instanceof Error ? error.message : String(error) });
128
- }
129
- else {
130
- output.writeWarn(`Failed to attach: ${error instanceof Error ? error.message : error}`);
131
- }
132
- process.exitCode = 1;
133
- return;
134
- }
135
- if (!response.ok) {
136
- const message = response.error?.message ?? 'Unknown error';
137
- if (json) {
138
- output.writeJson({ success: false, error: message });
139
- }
140
- else {
141
- output.writeWarn(`Failed to attach: ${message}`);
142
- }
143
- process.exitCode = 1;
144
- return;
145
- }
146
- if (json) {
147
- output.writeJson({
148
- success: true,
149
- tabId: tabIdStr,
150
- title: target?.title ?? null,
151
- url: target?.url ?? null,
152
- });
153
- }
154
- else {
155
- output.writeHuman('');
156
- output.writeHuman(`Attach request sent for tab ${tabIdStr}`);
157
- if (target) {
158
- output.writeHuman(` Title: ${target.title}`);
159
- output.writeHuman(` URL: ${target.url}`);
160
- }
161
- output.writeHuman('');
162
- output.writeHuman('The extension will attach shortly. Chrome will show a debugging indicator.');
163
- output.writeHuman('');
164
- }
165
- };
166
- const truncate = (str, maxLen) => {
167
- if (str.length <= maxLen)
168
- return str;
169
- return str.slice(0, maxLen - 3) + '...';
170
- };
171
- //# sourceMappingURL=attach.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/extension/attach.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export type ExtensionDetachOptions = {
2
- tabId?: string;
3
- json?: boolean;
4
- };
5
- export declare const runExtensionDetach: (id: string | undefined, options: ExtensionDetachOptions) => Promise<void>;
6
- //# sourceMappingURL=detach.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detach.d.ts","sourceRoot":"","sources":["../../../src/commands/extension/detach.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CA6E9G,CAAA"}