@vforsh/argus 0.1.9 → 0.1.11
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/.tsbuildinfo +1 -1
- package/dist/argus.js +1562 -1230
- package/dist/bin.js +2 -0
- package/dist/bin.js.map +1 -1
- package/dist/cdp/sendCdpCommand.d.ts +11 -0
- package/dist/cdp/sendCdpCommand.d.ts.map +1 -0
- package/dist/cdp/sendCdpCommand.js +103 -0
- package/dist/cdp/sendCdpCommand.js.map +1 -0
- package/dist/cli/program.js +1 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/register/registerAuth.d.ts +3 -0
- package/dist/cli/register/registerAuth.d.ts.map +1 -0
- package/dist/cli/register/registerAuth.js +29 -0
- package/dist/cli/register/registerAuth.js.map +1 -0
- package/dist/commands/auth.d.ts +22 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +168 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chrome.d.ts.map +1 -1
- package/dist/commands/chrome.js +1 -99
- package/dist/commands/chrome.js.map +1 -1
- package/dist/commands/chromeStart.d.ts.map +1 -1
- package/dist/commands/chromeStart.js +14 -44
- package/dist/commands/chromeStart.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +10 -57
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/net.d.ts.map +1 -1
- package/dist/commands/net.js +8 -22
- package/dist/commands/net.js.map +1 -1
- package/dist/commands/netTail.d.ts.map +1 -1
- package/dist/commands/netTail.js +11 -25
- package/dist/commands/netTail.js.map +1 -1
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +1 -99
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +7 -46
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/startShared.d.ts +32 -0
- package/dist/commands/startShared.d.ts.map +1 -0
- package/dist/commands/startShared.js +74 -0
- package/dist/commands/startShared.js.map +1 -0
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +8 -43
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +7 -9
- package/dist/commands/trace.js.map +1 -1
- package/dist/commands/watcherNativeHost.d.ts.map +1 -1
- package/dist/commands/watcherNativeHost.js +1 -0
- package/dist/commands/watcherNativeHost.js.map +1 -1
- package/dist/commands/watcherStart.d.ts.map +1 -1
- package/dist/commands/watcherStart.js +11 -51
- package/dist/commands/watcherStart.js.map +1 -1
- package/dist/eval/evalClient.js +5 -14
- package/dist/eval/evalClient.js.map +1 -1
- package/dist/httpClient.d.ts +1 -12
- package/dist/httpClient.d.ts.map +1 -1
- package/dist/httpClient.js +1 -84
- package/dist/httpClient.js.map +1 -1
- package/dist/runtime-code/strings.js +9 -1
- package/dist/runtime-code/strings.js.map +1 -1
- package/dist/watchers/queryParams.d.ts +34 -0
- package/dist/watchers/queryParams.d.ts.map +1 -0
- package/dist/watchers/queryParams.js +80 -0
- package/dist/watchers/queryParams.js.map +1 -0
- package/dist/watchers/requestWatcher.d.ts +3 -0
- package/dist/watchers/requestWatcher.d.ts.map +1 -1
- package/dist/watchers/requestWatcher.js +15 -9
- package/dist/watchers/requestWatcher.js.map +1 -1
- package/dist/watchers/resolveWatcher.js +2 -3
- package/dist/watchers/resolveWatcher.js.map +1 -1
- package/package.json +3 -2
- package/dist/commands/contexts.d.ts +0 -7
- package/dist/commands/contexts.d.ts.map +0 -1
- package/dist/commands/contexts.js +0 -54
- package/dist/commands/contexts.js.map +0 -1
- package/dist/commands/domDiff.d.ts +0 -43
- package/dist/commands/domDiff.d.ts.map +0 -1
- package/dist/commands/domDiff.js +0 -279
- package/dist/commands/domDiff.js.map +0 -1
- package/dist/commands/domSubmit.d.ts +0 -10
- package/dist/commands/domSubmit.d.ts.map +0 -1
- package/dist/commands/domSubmit.js +0 -78
- package/dist/commands/domSubmit.js.map +0 -1
- package/dist/commands/extension/attach.d.ts +0 -8
- package/dist/commands/extension/attach.d.ts.map +0 -1
- package/dist/commands/extension/attach.js +0 -171
- package/dist/commands/extension/attach.js.map +0 -1
- package/dist/commands/extension/detach.d.ts +0 -6
- package/dist/commands/extension/detach.d.ts.map +0 -1
- package/dist/commands/extension/detach.js +0 -132
- package/dist/commands/extension/detach.js.map +0 -1
- package/dist/commands/extension/targets.d.ts +0 -13
- package/dist/commands/extension/targets.d.ts.map +0 -1
- package/dist/commands/extension/targets.js +0 -77
- package/dist/commands/extension/targets.js.map +0 -1
- package/dist/commands/frames.d.ts +0 -7
- package/dist/commands/frames.d.ts.map +0 -1
- package/dist/commands/frames.js +0 -90
- package/dist/commands/frames.js.map +0 -1
- package/dist/frame/frameSelector.d.ts +0 -14
- package/dist/frame/frameSelector.d.ts.map +0 -1
- package/dist/frame/frameSelector.js +0 -31
- package/dist/frame/frameSelector.js.map +0 -1
- package/dist/output/domDiff.d.ts +0 -14
- package/dist/output/domDiff.d.ts.map +0 -1
- package/dist/output/domDiff.js +0 -151
- package/dist/output/domDiff.js.map +0 -1
- package/dist/throttle/networkPresets.d.ts +0 -6
- package/dist/throttle/networkPresets.d.ts.map +0 -1
- package/dist/throttle/networkPresets.js +0 -24
- package/dist/throttle/networkPresets.js.map +0 -1
package/dist/bin.js
CHANGED
|
@@ -6,6 +6,7 @@ import { registerWatcher } from './cli/register/registerWatcher.js';
|
|
|
6
6
|
import { registerPage } from './cli/register/registerPage.js';
|
|
7
7
|
import { registerLogs } from './cli/register/registerLogs.js';
|
|
8
8
|
import { registerNet } from './cli/register/registerNet.js';
|
|
9
|
+
import { registerAuth } from './cli/register/registerAuth.js';
|
|
9
10
|
import { registerEval } from './cli/register/registerEval.js';
|
|
10
11
|
import { registerDom } from './cli/register/registerDom.js';
|
|
11
12
|
import { registerClick } from './cli/register/registerClick.js';
|
|
@@ -31,6 +32,7 @@ registerPage(program);
|
|
|
31
32
|
// Inspect & debug
|
|
32
33
|
registerLogs(program);
|
|
33
34
|
registerNet(program);
|
|
35
|
+
registerAuth(program);
|
|
34
36
|
registerEval(program);
|
|
35
37
|
registerCode(program);
|
|
36
38
|
registerDom(program);
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;AAE/B,eAAe;AACf,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAE5B,yBAAyB;AACzB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,YAAY,CAAC,OAAO,CAAC,CAAA;AAErB,kBAAkB;AAClB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,WAAW,CAAC,OAAO,CAAC,CAAA;AACpB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,WAAW,CAAC,OAAO,CAAC,CAAA;AACpB,aAAa,CAAC,OAAO,CAAC,CAAA;AACtB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,aAAa,CAAC,OAAO,CAAC,CAAA;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAA;AACzB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAEzB,UAAU;AACV,gBAAgB,CAAC,OAAO,CAAC,CAAA;AACzB,aAAa,CAAC,OAAO,CAAC,CAAA;AAEtB,gBAAgB;AAChB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,iBAAiB,CAAC,OAAO,CAAC,CAAA;AAE1B,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;AAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;AAE/B,eAAe;AACf,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAE5B,yBAAyB;AACzB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,YAAY,CAAC,OAAO,CAAC,CAAA;AAErB,kBAAkB;AAClB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,WAAW,CAAC,OAAO,CAAC,CAAA;AACpB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,WAAW,CAAC,OAAO,CAAC,CAAA;AACpB,aAAa,CAAC,OAAO,CAAC,CAAA;AACtB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,YAAY,CAAC,OAAO,CAAC,CAAA;AACrB,aAAa,CAAC,OAAO,CAAC,CAAA;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAA;AACzB,eAAe,CAAC,OAAO,CAAC,CAAA;AACxB,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAEzB,UAAU;AACV,gBAAgB,CAAC,OAAO,CAAC,CAAA;AACzB,aAAa,CAAC,OAAO,CAAC,CAAA;AAEtB,gBAAgB;AAChB,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,iBAAiB,CAAC,OAAO,CAAC,CAAA;AAE1B,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;AAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type CdpCommandPayload = {
|
|
2
|
+
id: number;
|
|
3
|
+
method: string;
|
|
4
|
+
params?: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Send a single CDP command over a target/browser websocket and wait for the matching response.
|
|
8
|
+
* This stays intentionally tiny so command modules can focus on selecting targets and formatting output.
|
|
9
|
+
*/
|
|
10
|
+
export declare const sendCdpCommand: (wsUrl: string, payload: CdpCommandPayload, timeoutMs?: number) => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=sendCdpCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendCdpCommand.d.ts","sourceRoot":"","sources":["../../src/cdp/sendCdpCommand.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,CAAA;AAoBD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO,MAAM,EAAE,SAAS,iBAAiB,EAAE,kBAAiB,KAAG,OAAO,CAAC,IAAI,CAuF/G,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const getWebSocketCtor = () => {
|
|
2
|
+
const ctor = globalThis.WebSocket;
|
|
3
|
+
return ctor ?? null;
|
|
4
|
+
};
|
|
5
|
+
const toMessageText = (data) => {
|
|
6
|
+
if (typeof data === 'string') {
|
|
7
|
+
return data;
|
|
8
|
+
}
|
|
9
|
+
if (data instanceof ArrayBuffer) {
|
|
10
|
+
return Buffer.from(data).toString('utf8');
|
|
11
|
+
}
|
|
12
|
+
if (Buffer.isBuffer(data)) {
|
|
13
|
+
return data.toString('utf8');
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Send a single CDP command over a target/browser websocket and wait for the matching response.
|
|
19
|
+
* This stays intentionally tiny so command modules can focus on selecting targets and formatting output.
|
|
20
|
+
*/
|
|
21
|
+
export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
22
|
+
const WebSocketConstructor = getWebSocketCtor();
|
|
23
|
+
if (!WebSocketConstructor) {
|
|
24
|
+
throw new Error('WebSocket unavailable. Node 18+ required.');
|
|
25
|
+
}
|
|
26
|
+
const ws = new WebSocketConstructor(wsUrl);
|
|
27
|
+
const requestId = payload.id;
|
|
28
|
+
await new Promise((resolve, reject) => {
|
|
29
|
+
let settled = false;
|
|
30
|
+
const timer = setTimeout(() => {
|
|
31
|
+
if (!settled) {
|
|
32
|
+
settled = true;
|
|
33
|
+
try {
|
|
34
|
+
ws.close();
|
|
35
|
+
}
|
|
36
|
+
catch { }
|
|
37
|
+
reject(new Error(`CDP command timed out after ${timeoutMs}ms`));
|
|
38
|
+
}
|
|
39
|
+
}, timeoutMs);
|
|
40
|
+
const cleanup = () => {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
ws.removeEventListener?.('open', onOpen);
|
|
43
|
+
ws.removeEventListener?.('message', onMessage);
|
|
44
|
+
ws.removeEventListener?.('error', onError);
|
|
45
|
+
ws.removeEventListener?.('close', onClose);
|
|
46
|
+
};
|
|
47
|
+
const finish = (error) => {
|
|
48
|
+
if (settled) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
settled = true;
|
|
52
|
+
cleanup();
|
|
53
|
+
try {
|
|
54
|
+
ws.close();
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
if (error) {
|
|
58
|
+
reject(error);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
resolve();
|
|
62
|
+
};
|
|
63
|
+
const onOpen = () => {
|
|
64
|
+
try {
|
|
65
|
+
ws.send(JSON.stringify(payload));
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
finish(error instanceof Error ? error : new Error(String(error)));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const onMessage = (event) => {
|
|
72
|
+
const text = toMessageText(event.data);
|
|
73
|
+
if (!text) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const message = JSON.parse(text);
|
|
78
|
+
if (message.id !== requestId) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (message.error?.message) {
|
|
82
|
+
finish(new Error(message.error.message));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
finish();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
finish(error instanceof Error ? error : new Error(String(error)));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const onError = () => {
|
|
92
|
+
finish(new Error('WebSocket error'));
|
|
93
|
+
};
|
|
94
|
+
const onClose = () => {
|
|
95
|
+
finish(new Error('WebSocket closed before response'));
|
|
96
|
+
};
|
|
97
|
+
ws.addEventListener('open', onOpen);
|
|
98
|
+
ws.addEventListener('message', onMessage);
|
|
99
|
+
ws.addEventListener('error', onError);
|
|
100
|
+
ws.addEventListener('close', onClose);
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=sendCdpCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendCdpCommand.js","sourceRoot":"","sources":["../../src/cdp/sendCdpCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/program.js
CHANGED
package/dist/cli/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,UAAU,aAAa;IAC5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACL,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,qCAAqC,CAAC;SAClD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,UAAU,aAAa;IAC5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACL,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,qCAAqC,CAAC;SAClD,OAAO,CAAC,QAAQ,CAAC;SACjB,eAAe,CAAC;QAChB,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;KACvC,CAAC;SACD,wBAAwB,CAAC,IAAI,CAAC;SAC9B,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IAEH,OAAO,OAAO,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerAuth.d.ts","sourceRoot":"","sources":["../../../src/cli/register/registerAuth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiCnD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { runAuthCookies, runAuthExportCookies } from '../../commands/auth.js';
|
|
2
|
+
export function registerAuth(program) {
|
|
3
|
+
const auth = program.command('auth').description('List and export browser auth cookies');
|
|
4
|
+
addCookieScopeOptions(auth.command('cookies'), 'Only include first-party cookies for the attached page origin')
|
|
5
|
+
.argument('[id]', 'Watcher id')
|
|
6
|
+
.description('List cookies for the attached page')
|
|
7
|
+
.option('--domain <domain>', 'Filter cookies by domain suffix')
|
|
8
|
+
.option('--session-only', 'Show only session cookies')
|
|
9
|
+
.option('--http-only', 'Show only HttpOnly cookies')
|
|
10
|
+
.option('--secure', 'Show only Secure cookies')
|
|
11
|
+
.option('--show-values', 'Reveal raw cookie values instead of previews')
|
|
12
|
+
.option('--json', 'Output JSON for automation')
|
|
13
|
+
.addHelpText('after', '\nExamples:\n $ argus auth cookies app\n $ argus auth cookies app --for-origin --exclude-tracking\n $ argus auth cookies app --domain example.com\n $ argus auth cookies app --session-only --show-values\n')
|
|
14
|
+
.action(async (id, options) => {
|
|
15
|
+
await runAuthCookies(id, options);
|
|
16
|
+
});
|
|
17
|
+
addCookieScopeOptions(auth.command('export-cookies'), 'Only include first-party cookies for the attached page origin')
|
|
18
|
+
.argument('[id]', 'Watcher id')
|
|
19
|
+
.description('Export cookies for companion CLIs and HTTP clients')
|
|
20
|
+
.option('--format <format>', 'Export format: netscape (default), json, or header')
|
|
21
|
+
.option('--domain <domain>', 'Filter cookies by domain suffix')
|
|
22
|
+
.option('--out <path>', 'Write the export to a file instead of stdout')
|
|
23
|
+
.addHelpText('after', '\nExamples:\n $ argus auth export-cookies app --format netscape\n $ argus auth export-cookies app --for-origin --exclude-tracking\n $ argus auth export-cookies app --format header\n $ argus auth export-cookies app --out cookies.txt\n')
|
|
24
|
+
.action(async (id, options) => {
|
|
25
|
+
await runAuthExportCookies(id, options);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const addCookieScopeOptions = (command, forOriginDescription) => command.option('--for-origin', forOriginDescription).option('--exclude-tracking', 'Hide common analytics/tracking cookies such as _ga and _ym');
|
|
29
|
+
//# sourceMappingURL=registerAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerAuth.js","sourceRoot":"","sources":["../../../src/cli/register/registerAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7E,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAA;IAExF,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,+DAA+D,CAAC;SAC7G,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;SACrD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC;SACvE,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAC9C,WAAW,CACX,OAAO,EACP,iNAAiN,CACjN;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEH,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,+DAA+D,CAAC;SACpH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC;SACtE,WAAW,CACX,OAAO,EACP,+OAA+O,CAC/O;SACA,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAE,oBAA4B,EAAW,EAAE,CACzF,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type AuthCookiesOptions = {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
domain?: string;
|
|
4
|
+
forOrigin?: boolean;
|
|
5
|
+
excludeTracking?: boolean;
|
|
6
|
+
showValues?: boolean;
|
|
7
|
+
sessionOnly?: boolean;
|
|
8
|
+
httpOnly?: boolean;
|
|
9
|
+
secure?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type AuthExportCookiesOptions = {
|
|
12
|
+
format?: string;
|
|
13
|
+
domain?: string;
|
|
14
|
+
forOrigin?: boolean;
|
|
15
|
+
excludeTracking?: boolean;
|
|
16
|
+
out?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Execute `argus auth cookies`. */
|
|
19
|
+
export declare const runAuthCookies: (id: string | undefined, options: AuthCookiesOptions) => Promise<void>;
|
|
20
|
+
/** Execute `argus auth export-cookies`. */
|
|
21
|
+
export declare const runAuthExportCookies: (id: string | undefined, options: AuthExportCookiesOptions) => Promise<void>;
|
|
22
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAWD,oCAAoC;AACpC,eAAO,MAAM,cAAc,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAuBtG,CAAA;AAED,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAiBlH,CAAA"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { getOriginHost, isTrackingCookieName, matchesCookieDomain } from '@vforsh/argus-core';
|
|
2
|
+
import { writeFile } from 'node:fs/promises';
|
|
3
|
+
import { createOutput } from '../output/io.js';
|
|
4
|
+
import { requestWatcherJson, writeRequestError } from '../watchers/requestWatcher.js';
|
|
5
|
+
const COOKIE_EXPORT_FORMATS = new Set(['netscape', 'json', 'header']);
|
|
6
|
+
/** Execute `argus auth cookies`. */
|
|
7
|
+
export const runAuthCookies = async (id, options) => {
|
|
8
|
+
const output = createOutput(options);
|
|
9
|
+
const includeValues = options.showValues === true;
|
|
10
|
+
const response = await fetchAuthCookies(id, { domain: options.domain, includeValues }, output);
|
|
11
|
+
if (!response) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const cookies = filterCookies(response.origin, response.cookies, options);
|
|
15
|
+
if (options.json) {
|
|
16
|
+
output.writeJson({ ...response, cookies });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (cookies.length === 0) {
|
|
20
|
+
output.writeHuman('No cookies matched.');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const cookie of cookies) {
|
|
24
|
+
output.writeHuman(formatCookieLine(cookie, includeValues));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/** Execute `argus auth export-cookies`. */
|
|
28
|
+
export const runAuthExportCookies = async (id, options) => {
|
|
29
|
+
const output = createOutput({});
|
|
30
|
+
const format = normalizeExportFormat(options.format);
|
|
31
|
+
if (!format) {
|
|
32
|
+
output.writeWarn(`Invalid --format value: ${options.format}. Expected one of: netscape, json, header.`);
|
|
33
|
+
process.exitCode = 2;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const response = await fetchAuthCookies(id, { domain: options.domain, includeValues: true }, output);
|
|
37
|
+
if (!response) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const serialized = serializeCookies(filterCookies(response.origin, response.cookies, options), format);
|
|
41
|
+
await writeOutput(serialized, options.out);
|
|
42
|
+
};
|
|
43
|
+
const fetchAuthCookies = async (id, input, output) => {
|
|
44
|
+
const result = await requestWatcherJson({
|
|
45
|
+
id,
|
|
46
|
+
path: '/auth/cookies',
|
|
47
|
+
query: buildCookieQuery(input),
|
|
48
|
+
timeoutMs: 10_000,
|
|
49
|
+
});
|
|
50
|
+
if (!result.ok) {
|
|
51
|
+
writeRequestError(result, output);
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return result.data;
|
|
55
|
+
};
|
|
56
|
+
const buildCookieQuery = (input) => {
|
|
57
|
+
const params = new URLSearchParams();
|
|
58
|
+
if (input.domain?.trim()) {
|
|
59
|
+
params.set('domain', input.domain.trim());
|
|
60
|
+
}
|
|
61
|
+
if (input.includeValues) {
|
|
62
|
+
params.set('includeValues', 'true');
|
|
63
|
+
}
|
|
64
|
+
return params;
|
|
65
|
+
};
|
|
66
|
+
const filterCookies = (origin, cookies, options) => {
|
|
67
|
+
const originHost = options.forOrigin ? getOriginHost(origin) : null;
|
|
68
|
+
return cookies.filter((cookie) => matchesCookieFilters(cookie, originHost, options));
|
|
69
|
+
};
|
|
70
|
+
const matchesCookieFilters = (cookie, originHost, options) => {
|
|
71
|
+
if (options.sessionOnly && !cookie.session) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (options.httpOnly && !cookie.httpOnly) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
if (options.secure && !cookie.secure) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
if (originHost && !matchesCookieDomain(cookie.domain, originHost)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (options.excludeTracking && isTrackingCookieName(cookie.name)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
};
|
|
88
|
+
const formatCookieLine = (cookie, showValues) => {
|
|
89
|
+
const flags = [formatExpiryFlag(cookie), cookie.httpOnly ? 'httpOnly' : null, cookie.secure ? 'secure' : null, formatSameSiteFlag(cookie)]
|
|
90
|
+
.filter(Boolean)
|
|
91
|
+
.join(',');
|
|
92
|
+
const value = resolveCookieValue(cookie, showValues);
|
|
93
|
+
const flagSuffix = flags ? ` [${flags}]` : '';
|
|
94
|
+
const valueSuffix = value ? ` ${value}` : '';
|
|
95
|
+
return `${cookie.name} ${cookie.domain}${cookie.path}${flagSuffix}${valueSuffix}`.trim();
|
|
96
|
+
};
|
|
97
|
+
const formatExpiryFlag = (cookie) => {
|
|
98
|
+
if (cookie.session) {
|
|
99
|
+
return 'session';
|
|
100
|
+
}
|
|
101
|
+
if (cookie.expires != null) {
|
|
102
|
+
return `exp=${Math.trunc(cookie.expires)}`;
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
};
|
|
106
|
+
const formatSameSiteFlag = (cookie) => {
|
|
107
|
+
if (!cookie.sameSite) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return `sameSite=${cookie.sameSite}`;
|
|
111
|
+
};
|
|
112
|
+
const resolveCookieValue = (cookie, showValues) => {
|
|
113
|
+
if (showValues && cookie.value != null) {
|
|
114
|
+
return cookie.value;
|
|
115
|
+
}
|
|
116
|
+
return cookie.valuePreview ?? '';
|
|
117
|
+
};
|
|
118
|
+
const normalizeExportFormat = (format) => {
|
|
119
|
+
if (!format)
|
|
120
|
+
return 'netscape';
|
|
121
|
+
if (!COOKIE_EXPORT_FORMATS.has(format)) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
switch (format) {
|
|
125
|
+
case 'netscape':
|
|
126
|
+
case 'json':
|
|
127
|
+
case 'header':
|
|
128
|
+
return format;
|
|
129
|
+
default:
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const formatCookiesAsNetscape = (cookies) => {
|
|
134
|
+
const lines = ['# Netscape HTTP Cookie File', '# This file was generated by Argus.', ''];
|
|
135
|
+
for (const cookie of cookies) {
|
|
136
|
+
lines.push([
|
|
137
|
+
formatNetscapeDomain(cookie),
|
|
138
|
+
cookie.domain.startsWith('.') ? 'TRUE' : 'FALSE',
|
|
139
|
+
cookie.path,
|
|
140
|
+
cookie.secure ? 'TRUE' : 'FALSE',
|
|
141
|
+
String(cookie.session ? 0 : Math.max(0, Math.trunc(cookie.expires ?? 0))),
|
|
142
|
+
cookie.name,
|
|
143
|
+
cookie.value ?? '',
|
|
144
|
+
].join('\t'));
|
|
145
|
+
}
|
|
146
|
+
return lines.join('\n');
|
|
147
|
+
};
|
|
148
|
+
const formatNetscapeDomain = (cookie) => (cookie.httpOnly ? `#HttpOnly_${cookie.domain}` : cookie.domain);
|
|
149
|
+
const formatCookiesAsHeader = (cookies) => `Cookie: ${cookies.map((cookie) => `${cookie.name}=${cookie.value ?? ''}`).join('; ')}`;
|
|
150
|
+
const serializeCookies = (cookies, format) => {
|
|
151
|
+
switch (format) {
|
|
152
|
+
case 'netscape':
|
|
153
|
+
return formatCookiesAsNetscape(cookies);
|
|
154
|
+
case 'json':
|
|
155
|
+
return JSON.stringify(cookies, null, 2);
|
|
156
|
+
case 'header':
|
|
157
|
+
return formatCookiesAsHeader(cookies);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
const writeOutput = async (content, outPath) => {
|
|
161
|
+
const withTrailingNewline = content.endsWith('\n') ? content : `${content}\n`;
|
|
162
|
+
if (outPath) {
|
|
163
|
+
await writeFile(outPath, withTrailingNewline, 'utf8');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
process.stdout.write(withTrailingNewline);
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/commands/chrome.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/chrome.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import { resolveCdpEndpoint } from '../cdp/resolveCdpEndpoint.js';
|
|
3
|
+
import { sendCdpCommand } from '../cdp/sendCdpCommand.js';
|
|
3
4
|
import { filterTargets, selectTargetFromCandidates } from '../cdp/selectTarget.js';
|
|
4
5
|
import { fetchJson, fetchText } from '../httpClient.js';
|
|
5
6
|
import { createOutput } from '../output/io.js';
|
|
@@ -10,105 +11,6 @@ const normalizeUrl = (url) => {
|
|
|
10
11
|
}
|
|
11
12
|
return `http://${url}`;
|
|
12
13
|
};
|
|
13
|
-
const getWebSocketCtor = () => {
|
|
14
|
-
const ctor = globalThis.WebSocket;
|
|
15
|
-
return ctor ?? null;
|
|
16
|
-
};
|
|
17
|
-
const toMessageText = (data) => {
|
|
18
|
-
if (typeof data === 'string') {
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
if (data instanceof ArrayBuffer) {
|
|
22
|
-
return Buffer.from(data).toString('utf8');
|
|
23
|
-
}
|
|
24
|
-
if (Buffer.isBuffer(data)) {
|
|
25
|
-
return data.toString('utf8');
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
};
|
|
29
|
-
const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
30
|
-
const WebSocketConstructor = getWebSocketCtor();
|
|
31
|
-
if (!WebSocketConstructor) {
|
|
32
|
-
throw new Error('WebSocket unavailable. Node 18+ required.');
|
|
33
|
-
}
|
|
34
|
-
const ws = new WebSocketConstructor(wsUrl);
|
|
35
|
-
const requestId = payload.id;
|
|
36
|
-
await new Promise((resolve, reject) => {
|
|
37
|
-
let settled = false;
|
|
38
|
-
const timer = setTimeout(() => {
|
|
39
|
-
if (!settled) {
|
|
40
|
-
settled = true;
|
|
41
|
-
try {
|
|
42
|
-
ws.close();
|
|
43
|
-
}
|
|
44
|
-
catch { }
|
|
45
|
-
reject(new Error(`CDP command timed out after ${timeoutMs}ms`));
|
|
46
|
-
}
|
|
47
|
-
}, timeoutMs);
|
|
48
|
-
const cleanup = () => {
|
|
49
|
-
clearTimeout(timer);
|
|
50
|
-
ws.removeEventListener?.('open', onOpen);
|
|
51
|
-
ws.removeEventListener?.('message', onMessage);
|
|
52
|
-
ws.removeEventListener?.('error', onError);
|
|
53
|
-
ws.removeEventListener?.('close', onClose);
|
|
54
|
-
};
|
|
55
|
-
const finish = (error) => {
|
|
56
|
-
if (settled) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
settled = true;
|
|
60
|
-
cleanup();
|
|
61
|
-
try {
|
|
62
|
-
ws.close();
|
|
63
|
-
}
|
|
64
|
-
catch { }
|
|
65
|
-
if (error) {
|
|
66
|
-
reject(error);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
resolve();
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
const onOpen = () => {
|
|
73
|
-
try {
|
|
74
|
-
ws.send(JSON.stringify(payload));
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
finish(error instanceof Error ? error : new Error(String(error)));
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const onMessage = (event) => {
|
|
81
|
-
const text = toMessageText(event.data);
|
|
82
|
-
if (!text) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
const message = JSON.parse(text);
|
|
87
|
-
if (message.id !== requestId) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
if (message.error?.message) {
|
|
91
|
-
finish(new Error(message.error.message));
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
finish();
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
finish(error instanceof Error ? error : new Error(String(error)));
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
const onError = () => {
|
|
101
|
-
finish(new Error('WebSocket error'));
|
|
102
|
-
};
|
|
103
|
-
const onClose = () => {
|
|
104
|
-
finish(new Error('WebSocket closed before response'));
|
|
105
|
-
};
|
|
106
|
-
ws.addEventListener('open', onOpen);
|
|
107
|
-
ws.addEventListener('message', onMessage);
|
|
108
|
-
ws.addEventListener('error', onError);
|
|
109
|
-
ws.addEventListener('close', onClose);
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
14
|
export const runChromeVersion = async (options) => {
|
|
113
15
|
const output = createOutput(options);
|
|
114
16
|
const endpoint = await resolveCdpEndpoint(options);
|