@vforsh/argus 0.1.12 → 0.1.14
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 +8523 -2060
- package/dist/cdp/sendCdpCommand.d.ts +6 -2
- package/dist/cdp/sendCdpCommand.d.ts.map +1 -1
- package/dist/cdp/sendCdpCommand.js +18 -12
- package/dist/cdp/sendCdpCommand.js.map +1 -1
- package/dist/cli/defineCommand.d.ts +26 -0
- package/dist/cli/defineCommand.d.ts.map +1 -0
- package/dist/cli/defineCommand.js +55 -0
- package/dist/cli/defineCommand.js.map +1 -0
- package/dist/cli/defineWatcherCommand.d.ts +95 -0
- package/dist/cli/defineWatcherCommand.d.ts.map +1 -0
- package/dist/cli/defineWatcherCommand.js +72 -0
- package/dist/cli/defineWatcherCommand.js.map +1 -0
- package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
- package/dist/cli/plugins/registerPlugins.js +1 -1
- package/dist/cli/plugins/registerPlugins.js.map +1 -1
- package/dist/cli/register/domCommandBuilder.d.ts +1 -0
- package/dist/cli/register/domCommandBuilder.d.ts.map +1 -1
- package/dist/cli/register/domCommandBuilder.js +3 -0
- package/dist/cli/register/domCommandBuilder.js.map +1 -1
- package/dist/cli/register/index.d.ts.map +1 -1
- package/dist/cli/register/index.js +10 -2
- package/dist/cli/register/index.js.map +1 -1
- package/dist/cli/register/registerAuth.d.ts.map +1 -1
- package/dist/cli/register/registerAuth.js +103 -4
- package/dist/cli/register/registerAuth.js.map +1 -1
- package/dist/cli/register/registerChrome.d.ts.map +1 -1
- package/dist/cli/register/registerChrome.js +53 -14
- package/dist/cli/register/registerChrome.js.map +1 -1
- package/dist/cli/register/registerCode.d.ts.map +1 -1
- package/dist/cli/register/registerCode.js +19 -0
- package/dist/cli/register/registerCode.js.map +1 -1
- package/dist/cli/register/registerDialog.d.ts +3 -0
- package/dist/cli/register/registerDialog.d.ts.map +1 -0
- package/dist/cli/register/registerDialog.js +45 -0
- package/dist/cli/register/registerDialog.js.map +1 -0
- package/dist/cli/register/registerDom.d.ts.map +1 -1
- package/dist/cli/register/registerDom.js +7 -1
- package/dist/cli/register/registerDom.js.map +1 -1
- package/dist/cli/register/registerEval.d.ts.map +1 -1
- package/dist/cli/register/registerEval.js +8 -1
- package/dist/cli/register/registerEval.js.map +1 -1
- package/dist/cli/register/registerExtension.d.ts.map +1 -1
- package/dist/cli/register/registerExtension.js +12 -0
- package/dist/cli/register/registerExtension.js.map +1 -1
- package/dist/cli/register/registerFill.d.ts.map +1 -1
- package/dist/cli/register/registerFill.js +4 -3
- package/dist/cli/register/registerFill.js.map +1 -1
- package/dist/cli/register/registerHover.d.ts.map +1 -1
- package/dist/cli/register/registerHover.js +2 -1
- package/dist/cli/register/registerHover.js.map +1 -1
- package/dist/cli/register/registerLocate.d.ts +3 -0
- package/dist/cli/register/registerLocate.d.ts.map +1 -0
- package/dist/cli/register/registerLocate.js +48 -0
- package/dist/cli/register/registerLocate.js.map +1 -0
- package/dist/cli/register/registerNet.d.ts.map +1 -1
- package/dist/cli/register/registerNet.js +268 -13
- package/dist/cli/register/registerNet.js.map +1 -1
- package/dist/cli/register/registerPage.d.ts.map +1 -1
- package/dist/cli/register/registerPage.js +17 -0
- package/dist/cli/register/registerPage.js.map +1 -1
- package/dist/cli/register/registerQuickAccess.d.ts.map +1 -1
- package/dist/cli/register/registerQuickAccess.js +33 -3
- package/dist/cli/register/registerQuickAccess.js.map +1 -1
- package/dist/cli/register/registerSnapshot.d.ts.map +1 -1
- package/dist/cli/register/registerSnapshot.js +2 -1
- package/dist/cli/register/registerSnapshot.js.map +1 -1
- package/dist/cli/register/registerStorage.d.ts.map +1 -1
- package/dist/cli/register/registerStorage.js +26 -21
- package/dist/cli/register/registerStorage.js.map +1 -1
- package/dist/cli/register/registerWatcher.d.ts.map +1 -1
- package/dist/cli/register/registerWatcher.js +19 -0
- package/dist/cli/register/registerWatcher.js.map +1 -1
- package/dist/cli/validation.d.ts +1 -0
- package/dist/cli/validation.d.ts.map +1 -1
- package/dist/cli/validation.js +1 -0
- package/dist/cli/validation.js.map +1 -1
- package/dist/commands/auth.d.ts +39 -18
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +104 -122
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/authCookieSupport.d.ts +54 -0
- package/dist/commands/authCookieSupport.d.ts.map +1 -0
- package/dist/commands/authCookieSupport.js +206 -0
- package/dist/commands/authCookieSupport.js.map +1 -0
- package/dist/commands/authCookies.d.ts +60 -0
- package/dist/commands/authCookies.d.ts.map +1 -0
- package/dist/commands/authCookies.js +149 -0
- package/dist/commands/authCookies.js.map +1 -0
- package/dist/commands/chrome/authState.d.ts +23 -0
- package/dist/commands/chrome/authState.d.ts.map +1 -0
- package/dist/commands/chrome/authState.js +97 -0
- package/dist/commands/chrome/authState.js.map +1 -0
- package/dist/commands/chromeStart.d.ts +1 -0
- package/dist/commands/chromeStart.d.ts.map +1 -1
- package/dist/commands/chromeStart.js +28 -3
- package/dist/commands/chromeStart.js.map +1 -1
- package/dist/commands/code.d.ts.map +1 -1
- package/dist/commands/code.js +9 -1
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/codeEdit.d.ts +9 -0
- package/dist/commands/codeEdit.d.ts.map +1 -0
- package/dist/commands/codeEdit.js +155 -0
- package/dist/commands/codeEdit.js.map +1 -0
- package/dist/commands/dialog.d.ts +13 -0
- package/dist/commands/dialog.d.ts.map +1 -0
- package/dist/commands/dialog.js +53 -0
- package/dist/commands/dialog.js.map +1 -0
- package/dist/commands/dom/shared.d.ts +5 -1
- package/dist/commands/dom/shared.d.ts.map +1 -1
- package/dist/commands/dom/shared.js +27 -0
- package/dist/commands/dom/shared.js.map +1 -1
- package/dist/commands/domClick.d.ts +5 -1
- package/dist/commands/domClick.d.ts.map +1 -1
- package/dist/commands/domClick.js +87 -69
- package/dist/commands/domClick.js.map +1 -1
- package/dist/commands/domFill.d.ts +3 -2
- package/dist/commands/domFill.d.ts.map +1 -1
- package/dist/commands/domFill.js +57 -64
- package/dist/commands/domFill.js.map +1 -1
- package/dist/commands/domFocus.d.ts +3 -2
- package/dist/commands/domFocus.d.ts.map +1 -1
- package/dist/commands/domFocus.js +28 -35
- package/dist/commands/domFocus.js.map +1 -1
- package/dist/commands/domHover.d.ts +3 -2
- package/dist/commands/domHover.d.ts.map +1 -1
- package/dist/commands/domHover.js +28 -35
- package/dist/commands/domHover.js.map +1 -1
- package/dist/commands/domInfo.d.ts +2 -1
- package/dist/commands/domInfo.d.ts.map +1 -1
- package/dist/commands/domInfo.js +6 -5
- package/dist/commands/domInfo.js.map +1 -1
- package/dist/commands/domRemove.d.ts +1 -1
- package/dist/commands/domRemove.d.ts.map +1 -1
- package/dist/commands/domRemove.js +25 -34
- package/dist/commands/domRemove.js.map +1 -1
- package/dist/commands/domScroll.d.ts +1 -1
- package/dist/commands/domScroll.d.ts.map +1 -1
- package/dist/commands/domScroll.js +1 -1
- package/dist/commands/domScroll.js.map +1 -1
- package/dist/commands/domSetFile.d.ts +1 -1
- package/dist/commands/domSetFile.d.ts.map +1 -1
- package/dist/commands/domSetFile.js +24 -33
- package/dist/commands/domSetFile.js.map +1 -1
- package/dist/commands/domTree.js +2 -2
- package/dist/commands/domTree.js.map +1 -1
- package/dist/commands/eval.d.ts +2 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +15 -9
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/evalShared.d.ts +11 -0
- package/dist/commands/evalShared.d.ts.map +1 -1
- package/dist/commands/evalShared.js +21 -0
- package/dist/commands/evalShared.js.map +1 -1
- package/dist/commands/evalUntil.d.ts +2 -0
- package/dist/commands/evalUntil.d.ts.map +1 -1
- package/dist/commands/evalUntil.js +14 -8
- package/dist/commands/evalUntil.js.map +1 -1
- package/dist/commands/extension/resolveExtensionWatcher.d.ts +20 -0
- package/dist/commands/extension/resolveExtensionWatcher.d.ts.map +1 -0
- package/dist/commands/extension/resolveExtensionWatcher.js +73 -0
- package/dist/commands/extension/resolveExtensionWatcher.js.map +1 -0
- package/dist/commands/extension/tabs.d.ts +8 -0
- package/dist/commands/extension/tabs.d.ts.map +1 -0
- package/dist/commands/extension/tabs.js +85 -0
- package/dist/commands/extension/tabs.js.map +1 -0
- package/dist/commands/locate.d.ts +17 -0
- package/dist/commands/locate.d.ts.map +1 -0
- package/dist/commands/locate.js +117 -0
- package/dist/commands/locate.js.map +1 -0
- package/dist/commands/net.d.ts +2 -5
- package/dist/commands/net.d.ts.map +1 -1
- package/dist/commands/net.js +5 -7
- package/dist/commands/net.js.map +1 -1
- package/dist/commands/netBody.d.ts +6 -0
- package/dist/commands/netBody.d.ts.map +1 -0
- package/dist/commands/netBody.js +32 -0
- package/dist/commands/netBody.js.map +1 -0
- package/dist/commands/netCapture.d.ts +41 -0
- package/dist/commands/netCapture.d.ts.map +1 -0
- package/dist/commands/netCapture.js +203 -0
- package/dist/commands/netCapture.js.map +1 -0
- package/dist/commands/netClear.d.ts +5 -0
- package/dist/commands/netClear.d.ts.map +1 -0
- package/dist/commands/netClear.js +20 -0
- package/dist/commands/netClear.js.map +1 -0
- package/dist/commands/netExport.d.ts +8 -0
- package/dist/commands/netExport.d.ts.map +1 -0
- package/dist/commands/netExport.js +124 -0
- package/dist/commands/netExport.js.map +1 -0
- package/dist/commands/netInspect.d.ts +12 -0
- package/dist/commands/netInspect.d.ts.map +1 -0
- package/dist/commands/netInspect.js +205 -0
- package/dist/commands/netInspect.js.map +1 -0
- package/dist/commands/netRequestClient.d.ts +17 -0
- package/dist/commands/netRequestClient.d.ts.map +1 -0
- package/dist/commands/netRequestClient.js +54 -0
- package/dist/commands/netRequestClient.js.map +1 -0
- package/dist/commands/netRequestTarget.d.ts +14 -0
- package/dist/commands/netRequestTarget.d.ts.map +1 -0
- package/dist/commands/netRequestTarget.js +36 -0
- package/dist/commands/netRequestTarget.js.map +1 -0
- package/dist/commands/netShared.d.ts +40 -0
- package/dist/commands/netShared.d.ts.map +1 -0
- package/dist/commands/netShared.js +108 -0
- package/dist/commands/netShared.js.map +1 -0
- package/dist/commands/netShow.d.ts +5 -0
- package/dist/commands/netShow.d.ts.map +1 -0
- package/dist/commands/netShow.js +28 -0
- package/dist/commands/netShow.js.map +1 -0
- package/dist/commands/netSse.d.ts +6 -0
- package/dist/commands/netSse.d.ts.map +1 -0
- package/dist/commands/netSse.js +26 -0
- package/dist/commands/netSse.js.map +1 -0
- package/dist/commands/netSummary.d.ts +6 -0
- package/dist/commands/netSummary.d.ts.map +1 -0
- package/dist/commands/netSummary.js +99 -0
- package/dist/commands/netSummary.js.map +1 -0
- package/dist/commands/netTail.d.ts +2 -5
- package/dist/commands/netTail.d.ts.map +1 -1
- package/dist/commands/netTail.js +7 -15
- package/dist/commands/netTail.js.map +1 -1
- package/dist/commands/netWatch.d.ts +6 -0
- package/dist/commands/netWatch.d.ts.map +1 -0
- package/dist/commands/netWatch.js +55 -0
- package/dist/commands/netWatch.js.map +1 -0
- package/dist/commands/netWebSocket.d.ts +10 -0
- package/dist/commands/netWebSocket.d.ts.map +1 -0
- package/dist/commands/netWebSocket.js +58 -0
- package/dist/commands/netWebSocket.js.map +1 -0
- package/dist/commands/pageVisibility.d.ts +9 -0
- package/dist/commands/pageVisibility.d.ts.map +1 -0
- package/dist/commands/pageVisibility.js +24 -0
- package/dist/commands/pageVisibility.js.map +1 -0
- package/dist/commands/reload.d.ts +1 -1
- package/dist/commands/reload.d.ts.map +1 -1
- package/dist/commands/reload.js +8 -17
- package/dist/commands/reload.js.map +1 -1
- package/dist/commands/resolveTestId.d.ts +2 -1
- package/dist/commands/resolveTestId.d.ts.map +1 -1
- package/dist/commands/resolveTestId.js +3 -3
- package/dist/commands/resolveTestId.js.map +1 -1
- package/dist/commands/screenshot.d.ts +1 -0
- package/dist/commands/screenshot.d.ts.map +1 -1
- package/dist/commands/screenshot.js +37 -2
- package/dist/commands/screenshot.js.map +1 -1
- package/dist/commands/snapshot.d.ts +1 -1
- package/dist/commands/snapshot.d.ts.map +1 -1
- package/dist/commands/snapshot.js +26 -49
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +62 -7
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/storage.d.ts +17 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +35 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/throttle.d.ts +6 -3
- package/dist/commands/throttle.d.ts.map +1 -1
- package/dist/commands/throttle.js +46 -118
- package/dist/commands/throttle.js.map +1 -1
- package/dist/commands/watcherNativeHost.d.ts.map +1 -1
- package/dist/commands/watcherNativeHost.js +13 -2
- package/dist/commands/watcherNativeHost.js.map +1 -1
- package/dist/commands/watcherStatus.d.ts.map +1 -1
- package/dist/commands/watcherStatus.js +2 -1
- package/dist/commands/watcherStatus.js.map +1 -1
- package/dist/eval/evalClient.d.ts +1 -0
- package/dist/eval/evalClient.d.ts.map +1 -1
- package/dist/eval/evalClient.js +2 -0
- package/dist/eval/evalClient.js.map +1 -1
- package/dist/net/har.d.ts +86 -0
- package/dist/net/har.d.ts.map +1 -0
- package/dist/net/har.js +125 -0
- package/dist/net/har.js.map +1 -0
- package/dist/net/summary.d.ts +33 -0
- package/dist/net/summary.d.ts.map +1 -0
- package/dist/net/summary.js +128 -0
- package/dist/net/summary.js.map +1 -0
- package/dist/output/accessibility.js +16 -12
- package/dist/output/accessibility.js.map +1 -1
- package/dist/output/code.d.ts +2 -1
- package/dist/output/code.d.ts.map +1 -1
- package/dist/output/code.js +10 -0
- package/dist/output/code.js.map +1 -1
- package/dist/output/dom.d.ts.map +1 -1
- package/dist/output/dom.js +2 -1
- package/dist/output/dom.js.map +1 -1
- package/dist/output/format.d.ts +1 -3
- package/dist/output/format.d.ts.map +1 -1
- package/dist/output/format.js +0 -8
- package/dist/output/format.js.map +1 -1
- package/dist/output/locate.d.ts +3 -0
- package/dist/output/locate.d.ts.map +1 -0
- package/dist/output/locate.js +25 -0
- package/dist/output/locate.js.map +1 -0
- package/dist/output/net.d.ts +16 -0
- package/dist/output/net.d.ts.map +1 -0
- package/dist/output/net.js +298 -0
- package/dist/output/net.js.map +1 -0
- package/dist/watchers/queryParams.d.ts +17 -0
- package/dist/watchers/queryParams.d.ts.map +1 -1
- package/dist/watchers/queryParams.js +61 -0
- package/dist/watchers/queryParams.js.map +1 -1
- package/package.json +3 -6
- package/dist/cli/register/registerClick.d.ts +0 -3
- package/dist/cli/register/registerClick.d.ts.map +0 -1
- package/dist/cli/register/registerClick.js +0 -23
- package/dist/cli/register/registerClick.js.map +0 -1
- package/dist/commands/storageLocal.d.ts +0 -18
- package/dist/commands/storageLocal.d.ts.map +0 -1
- package/dist/commands/storageLocal.js +0 -92
- package/dist/commands/storageLocal.js.map +0 -1
- package/dist/plugin.d.ts +0 -29
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -2
- package/dist/plugin.js.map +0 -1
|
@@ -4,8 +4,12 @@ export type CdpCommandPayload = {
|
|
|
4
4
|
params?: Record<string, unknown>;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
* Send a single CDP command over a target/browser websocket and
|
|
8
|
-
|
|
7
|
+
* Send a single CDP command over a target/browser websocket and return the raw `result` payload.
|
|
8
|
+
*/
|
|
9
|
+
export declare const sendCdpRequest: <T>(wsUrl: string, payload: CdpCommandPayload, timeoutMs?: number) => Promise<T>;
|
|
10
|
+
/**
|
|
11
|
+
* Send a single CDP command and ignore any successful result payload.
|
|
12
|
+
* Keeps existing callsites terse while sharing the same request/response path.
|
|
9
13
|
*/
|
|
10
14
|
export declare const sendCdpCommand: (wsUrl: string, payload: CdpCommandPayload, timeoutMs?: number) => Promise<void>;
|
|
11
15
|
//# sourceMappingURL=sendCdpCommand.d.ts.map
|
|
@@ -1 +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;
|
|
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;AA0BD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,OAAO,MAAM,EAAE,SAAS,iBAAiB,EAAE,kBAAiB,KAAG,OAAO,CAAC,CAAC,CAuF/G,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO,MAAM,EAAE,SAAS,iBAAiB,EAAE,kBAAiB,KAAG,OAAO,CAAC,IAAI,CAE/G,CAAA"}
|
|
@@ -15,17 +15,16 @@ const toMessageText = (data) => {
|
|
|
15
15
|
return null;
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
|
-
* Send a single CDP command over a target/browser websocket and
|
|
19
|
-
* This stays intentionally tiny so command modules can focus on selecting targets and formatting output.
|
|
18
|
+
* Send a single CDP command over a target/browser websocket and return the raw `result` payload.
|
|
20
19
|
*/
|
|
21
|
-
export const
|
|
20
|
+
export const sendCdpRequest = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
22
21
|
const WebSocketConstructor = getWebSocketCtor();
|
|
23
22
|
if (!WebSocketConstructor) {
|
|
24
23
|
throw new Error('WebSocket unavailable. Node 18+ required.');
|
|
25
24
|
}
|
|
26
25
|
const ws = new WebSocketConstructor(wsUrl);
|
|
27
26
|
const requestId = payload.id;
|
|
28
|
-
await new Promise((resolve, reject) => {
|
|
27
|
+
return await new Promise((resolve, reject) => {
|
|
29
28
|
let settled = false;
|
|
30
29
|
const timer = setTimeout(() => {
|
|
31
30
|
if (!settled) {
|
|
@@ -44,7 +43,7 @@ export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
|
44
43
|
ws.removeEventListener?.('error', onError);
|
|
45
44
|
ws.removeEventListener?.('close', onClose);
|
|
46
45
|
};
|
|
47
|
-
const finish = (error) => {
|
|
46
|
+
const finish = (result, error) => {
|
|
48
47
|
if (settled) {
|
|
49
48
|
return;
|
|
50
49
|
}
|
|
@@ -58,14 +57,14 @@ export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
|
58
57
|
reject(error);
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
|
-
resolve();
|
|
60
|
+
resolve(result);
|
|
62
61
|
};
|
|
63
62
|
const onOpen = () => {
|
|
64
63
|
try {
|
|
65
64
|
ws.send(JSON.stringify(payload));
|
|
66
65
|
}
|
|
67
66
|
catch (error) {
|
|
68
|
-
finish(error instanceof Error ? error : new Error(String(error)));
|
|
67
|
+
finish(undefined, error instanceof Error ? error : new Error(String(error)));
|
|
69
68
|
}
|
|
70
69
|
};
|
|
71
70
|
const onMessage = (event) => {
|
|
@@ -79,20 +78,20 @@ export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
|
79
78
|
return;
|
|
80
79
|
}
|
|
81
80
|
if (message.error?.message) {
|
|
82
|
-
finish(new Error(message.error.message));
|
|
81
|
+
finish(undefined, new Error(message.error.message));
|
|
83
82
|
return;
|
|
84
83
|
}
|
|
85
|
-
finish();
|
|
84
|
+
finish(message.result);
|
|
86
85
|
}
|
|
87
86
|
catch (error) {
|
|
88
|
-
finish(error instanceof Error ? error : new Error(String(error)));
|
|
87
|
+
finish(undefined, error instanceof Error ? error : new Error(String(error)));
|
|
89
88
|
}
|
|
90
89
|
};
|
|
91
90
|
const onError = () => {
|
|
92
|
-
finish(new Error('WebSocket error'));
|
|
91
|
+
finish(undefined, new Error('WebSocket error'));
|
|
93
92
|
};
|
|
94
93
|
const onClose = () => {
|
|
95
|
-
finish(new Error('WebSocket closed before response'));
|
|
94
|
+
finish(undefined, new Error('WebSocket closed before response'));
|
|
96
95
|
};
|
|
97
96
|
ws.addEventListener('open', onOpen);
|
|
98
97
|
ws.addEventListener('message', onMessage);
|
|
@@ -100,4 +99,11 @@ export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
|
100
99
|
ws.addEventListener('close', onClose);
|
|
101
100
|
});
|
|
102
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* Send a single CDP command and ignore any successful result payload.
|
|
104
|
+
* Keeps existing callsites terse while sharing the same request/response path.
|
|
105
|
+
*/
|
|
106
|
+
export const sendCdpCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
|
|
107
|
+
await sendCdpRequest(wsUrl, payload, timeoutMs);
|
|
108
|
+
};
|
|
103
109
|
//# sourceMappingURL=sendCdpCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendCdpCommand.js","sourceRoot":"","sources":["../../src/cdp/sendCdpCommand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sendCdpCommand.js","sourceRoot":"","sources":["../../src/cdp/sendCdpCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export type ArgusCommandOption = {
|
|
3
|
+
flags: string;
|
|
4
|
+
description: string;
|
|
5
|
+
defaultValue?: string | boolean | string[];
|
|
6
|
+
required?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type ArgusCommandDefinition = {
|
|
9
|
+
name: string;
|
|
10
|
+
alias?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
arguments?: readonly {
|
|
13
|
+
flags: string;
|
|
14
|
+
description: string;
|
|
15
|
+
}[];
|
|
16
|
+
options?: readonly ArgusCommandOption[];
|
|
17
|
+
examples?: readonly string[];
|
|
18
|
+
configure?: (command: Command) => void;
|
|
19
|
+
action?: (...args: any[]) => Promise<void> | void;
|
|
20
|
+
subcommands?: readonly ArgusCommandDefinition[];
|
|
21
|
+
};
|
|
22
|
+
/** Register a declarative command definition with Commander. */
|
|
23
|
+
export declare const defineCommand: (parent: Command, definition: ArgusCommandDefinition) => Command;
|
|
24
|
+
/** Register a list of command definitions in order. */
|
|
25
|
+
export declare const defineCommands: (parent: Command, definitions: readonly ArgusCommandDefinition[]) => void;
|
|
26
|
+
//# sourceMappingURL=defineCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineCommand.d.ts","sourceRoot":"","sources":["../../src/cli/defineCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7D,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACvC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjD,WAAW,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAC/C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,aAAa,GAAI,QAAQ,OAAO,EAAE,YAAY,sBAAsB,KAAG,OAgCnF,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,cAAc,GAAI,QAAQ,OAAO,EAAE,aAAa,SAAS,sBAAsB,EAAE,KAAG,IAIhG,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/** Register a declarative command definition with Commander. */
|
|
3
|
+
export const defineCommand = (parent, definition) => {
|
|
4
|
+
const command = parent.command(definition.name);
|
|
5
|
+
if (definition.alias) {
|
|
6
|
+
command.alias(definition.alias);
|
|
7
|
+
}
|
|
8
|
+
if (definition.description) {
|
|
9
|
+
command.description(definition.description);
|
|
10
|
+
}
|
|
11
|
+
for (const argument of definition.arguments ?? []) {
|
|
12
|
+
command.argument(argument.flags, argument.description);
|
|
13
|
+
}
|
|
14
|
+
for (const option of definition.options ?? []) {
|
|
15
|
+
if (option.required) {
|
|
16
|
+
addRequiredOption(command, option);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
addOption(command, option);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (definition.examples && definition.examples.length > 0) {
|
|
23
|
+
command.addHelpText('after', formatExamples(definition.examples));
|
|
24
|
+
}
|
|
25
|
+
definition.configure?.(command);
|
|
26
|
+
for (const subcommand of definition.subcommands ?? []) {
|
|
27
|
+
defineCommand(command, subcommand);
|
|
28
|
+
}
|
|
29
|
+
if (definition.action) {
|
|
30
|
+
command.action(definition.action);
|
|
31
|
+
}
|
|
32
|
+
return command;
|
|
33
|
+
};
|
|
34
|
+
/** Register a list of command definitions in order. */
|
|
35
|
+
export const defineCommands = (parent, definitions) => {
|
|
36
|
+
for (const definition of definitions) {
|
|
37
|
+
defineCommand(parent, definition);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const addRequiredOption = (command, option) => {
|
|
41
|
+
if (option.defaultValue === undefined) {
|
|
42
|
+
command.requiredOption(option.flags, option.description);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
command.requiredOption(option.flags, option.description, option.defaultValue);
|
|
46
|
+
};
|
|
47
|
+
const addOption = (command, option) => {
|
|
48
|
+
if (option.defaultValue === undefined) {
|
|
49
|
+
command.option(option.flags, option.description);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
command.option(option.flags, option.description, option.defaultValue);
|
|
53
|
+
};
|
|
54
|
+
const formatExamples = (examples) => `\nExamples:\n${examples.map((example) => ` $ ${example}`).join('\n')}\n`;
|
|
55
|
+
//# sourceMappingURL=defineCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineCommand.js","sourceRoot":"","sources":["../../src/cli/defineCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { ProtocolSchema, WatcherRecord } from '@vforsh/argus-core';
|
|
2
|
+
import type { Output } from '../output/io.js';
|
|
3
|
+
/**
|
|
4
|
+
* Plan for a single watcher HTTP request, produced by a command's `build` step.
|
|
5
|
+
*
|
|
6
|
+
* Most commands return a constant plan; commands that adapt the path or timeout
|
|
7
|
+
* to their inputs (`/storage/<area>`, `Math.max(30s, wait + 5s)`) compute the
|
|
8
|
+
* plan from `options`. Returning `null` from `build` short-circuits the command
|
|
9
|
+
* after the build step has written its own warning + set `process.exitCode`.
|
|
10
|
+
*/
|
|
11
|
+
export type WatcherRequestPlan = {
|
|
12
|
+
/** Request path. May be dynamic (e.g. ``/storage/${area}``). */
|
|
13
|
+
path: string;
|
|
14
|
+
/** HTTP method. Defaults to `'POST'` when `body` is set, else `'GET'`. */
|
|
15
|
+
method?: 'GET' | 'POST';
|
|
16
|
+
/** Request body. Encoded as JSON. Subject to schema validation when `spec.schema` is set. */
|
|
17
|
+
body?: unknown;
|
|
18
|
+
/** Optional query string. */
|
|
19
|
+
query?: URLSearchParams;
|
|
20
|
+
/** Override the default 30s timeout. */
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
};
|
|
23
|
+
/** Context passed to `formatHuman` / `formatJson` after a successful request. */
|
|
24
|
+
export type WatcherCommandContext<TArgs extends readonly unknown[], TOptions> = {
|
|
25
|
+
output: Output;
|
|
26
|
+
watcher: WatcherRecord;
|
|
27
|
+
args: TArgs;
|
|
28
|
+
options: TOptions;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Spec for a CLI command that talks to a watcher.
|
|
32
|
+
*
|
|
33
|
+
* The runner produced by {@link defineWatcherCommand} owns the cross-cutting
|
|
34
|
+
* pipeline (createOutput → build → optional schema → requestWatcherAction →
|
|
35
|
+
* JSON-vs-human dispatch). The spec only needs the parts that are unique to
|
|
36
|
+
* this command.
|
|
37
|
+
*
|
|
38
|
+
* `TArgs` is a tuple of positional CLI arguments (excluding the watcher id and
|
|
39
|
+
* the trailing options object). Most commands use `[]`; commands like `argus
|
|
40
|
+
* fill <id> <value>` use `[string | undefined]`.
|
|
41
|
+
*/
|
|
42
|
+
export type WatcherCommandSpec<TArgs extends readonly unknown[], TOptions extends {
|
|
43
|
+
json?: boolean;
|
|
44
|
+
}, TBody, TResponse extends {
|
|
45
|
+
ok: true;
|
|
46
|
+
}> = {
|
|
47
|
+
/**
|
|
48
|
+
* Validate inputs and produce the HTTP request plan. May read stdin/files,
|
|
49
|
+
* so it can be async. Return `null` to short-circuit (after the build has
|
|
50
|
+
* already written a warning and set `process.exitCode`).
|
|
51
|
+
*/
|
|
52
|
+
build: (args: TArgs, options: TOptions, output: Output) => Promise<WatcherRequestPlan | null> | WatcherRequestPlan | null;
|
|
53
|
+
/**
|
|
54
|
+
* Optional protocol schema applied to `plan.body` before sending. When the
|
|
55
|
+
* schema rejects the body, the runner writes the issues and exits with code 2.
|
|
56
|
+
*/
|
|
57
|
+
schema?: ProtocolSchema<TBody>;
|
|
58
|
+
/**
|
|
59
|
+
* Render the success response for human users.
|
|
60
|
+
* Defaults to compact pretty-printed JSON when omitted.
|
|
61
|
+
*/
|
|
62
|
+
formatHuman?: (response: TResponse, ctx: WatcherCommandContext<TArgs, TOptions>) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Map the success response to the JSON output payload.
|
|
65
|
+
* Defaults to identity (`response`).
|
|
66
|
+
*/
|
|
67
|
+
formatJson?: (response: TResponse, ctx: WatcherCommandContext<TArgs, TOptions>) => unknown;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Runner produced by {@link defineWatcherCommand}. Signature is
|
|
71
|
+
* `(id, ...args, options) => Promise<void>` — the same shape Commander
|
|
72
|
+
* action callbacks already use, so the runner drops in unchanged.
|
|
73
|
+
*/
|
|
74
|
+
export type WatcherCommandRunner<TArgs extends readonly unknown[], TOptions> = (id: string | undefined, ...rest: [...TArgs, TOptions]) => Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Build a runner for a watcher CLI command.
|
|
77
|
+
*
|
|
78
|
+
* Pipeline (in order):
|
|
79
|
+
* 1. `createOutput(options)` — JSON vs human stream selection.
|
|
80
|
+
* 2. `spec.build(args, options, output)` — validation + body/path/timeout.
|
|
81
|
+
* Returning `null` cleanly aborts.
|
|
82
|
+
* 3. Optional `spec.schema.parse(plan.body)` — protocol validation.
|
|
83
|
+
* 4. `requestWatcherAction(...)` — resolve watcher + transport + ErrorResponse.
|
|
84
|
+
* 5. JSON path: write `formatJson?.(...) ?? response`.
|
|
85
|
+
* 6. Human path: call `formatHuman` (or pretty-print JSON as fallback).
|
|
86
|
+
*
|
|
87
|
+
* Type inference resolves `TArgs`/`TOptions`/`TResponse` from the spec, so most
|
|
88
|
+
* call sites don't need explicit generics.
|
|
89
|
+
*/
|
|
90
|
+
export declare const defineWatcherCommand: <TOptions extends {
|
|
91
|
+
json?: boolean;
|
|
92
|
+
}, TResponse extends {
|
|
93
|
+
ok: true;
|
|
94
|
+
}, TBody = unknown, TArgs extends readonly unknown[] = []>(spec: WatcherCommandSpec<TArgs, TOptions, TBody, TResponse>) => WatcherCommandRunner<TArgs, TOptions>;
|
|
95
|
+
//# sourceMappingURL=defineWatcherCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineWatcherCommand.d.ts","sourceRoot":"","sources":["../../src/cli/defineWatcherCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAI7C;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAKD,iFAAiF;AACjF,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,QAAQ,IAAI;IAC/E,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;IACtB,IAAI,EAAE,KAAK,CAAA;IACX,OAAO,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,QAAQ,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,SAAS;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,IAAI;IAC9I;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAA;IAEzH;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAA;IAExF;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,OAAO,CAAA;CAC1F,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,QAAQ,IAAI,CAC9E,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAA;AAElB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,SAAS,SAAS;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAC3H,MAAM,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KACzD,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAuCtC,CAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { formatProtocolValidationIssues } from '@vforsh/argus-core';
|
|
2
|
+
import { createOutput } from '../output/io.js';
|
|
3
|
+
import { requestWatcherAction } from '../watchers/requestWatcher.js';
|
|
4
|
+
/** Default request timeout when a plan does not specify one. */
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
|
+
/**
|
|
7
|
+
* Build a runner for a watcher CLI command.
|
|
8
|
+
*
|
|
9
|
+
* Pipeline (in order):
|
|
10
|
+
* 1. `createOutput(options)` — JSON vs human stream selection.
|
|
11
|
+
* 2. `spec.build(args, options, output)` — validation + body/path/timeout.
|
|
12
|
+
* Returning `null` cleanly aborts.
|
|
13
|
+
* 3. Optional `spec.schema.parse(plan.body)` — protocol validation.
|
|
14
|
+
* 4. `requestWatcherAction(...)` — resolve watcher + transport + ErrorResponse.
|
|
15
|
+
* 5. JSON path: write `formatJson?.(...) ?? response`.
|
|
16
|
+
* 6. Human path: call `formatHuman` (or pretty-print JSON as fallback).
|
|
17
|
+
*
|
|
18
|
+
* Type inference resolves `TArgs`/`TOptions`/`TResponse` from the spec, so most
|
|
19
|
+
* call sites don't need explicit generics.
|
|
20
|
+
*/
|
|
21
|
+
export const defineWatcherCommand = (spec) => async (id, ...rest) => {
|
|
22
|
+
// `rest` ends with the options object; everything before it is positional CLI args.
|
|
23
|
+
const tail = rest.length - 1;
|
|
24
|
+
const options = rest[tail];
|
|
25
|
+
const args = rest.slice(0, tail);
|
|
26
|
+
const output = createOutput(options);
|
|
27
|
+
const plan = await spec.build(args, options, output);
|
|
28
|
+
if (plan == null)
|
|
29
|
+
return;
|
|
30
|
+
const body = validateBody(plan, spec.schema, output);
|
|
31
|
+
if (body === SCHEMA_REJECTED)
|
|
32
|
+
return;
|
|
33
|
+
const result = await requestWatcherAction({
|
|
34
|
+
id,
|
|
35
|
+
path: plan.path,
|
|
36
|
+
method: plan.method ?? (plan.body !== undefined ? 'POST' : 'GET'),
|
|
37
|
+
body,
|
|
38
|
+
query: plan.query,
|
|
39
|
+
timeoutMs: plan.timeoutMs ?? DEFAULT_TIMEOUT_MS,
|
|
40
|
+
}, output);
|
|
41
|
+
if (!result)
|
|
42
|
+
return;
|
|
43
|
+
const ctx = { output, watcher: result.watcher, args, options };
|
|
44
|
+
if (output.json) {
|
|
45
|
+
output.writeJson(spec.formatJson ? spec.formatJson(result.data, ctx) : result.data);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (spec.formatHuman) {
|
|
49
|
+
spec.formatHuman(result.data, ctx);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
output.writeHuman(JSON.stringify(result.data, null, 2));
|
|
53
|
+
};
|
|
54
|
+
/** Sentinel returned by {@link validateBody} when schema validation failed. */
|
|
55
|
+
const SCHEMA_REJECTED = Symbol('schema-rejected');
|
|
56
|
+
/**
|
|
57
|
+
* Validate `plan.body` against an optional schema. On failure, write a warning,
|
|
58
|
+
* set `process.exitCode = 2`, and return {@link SCHEMA_REJECTED} so the caller
|
|
59
|
+
* can early-exit. On success (or when no schema is provided), return the body
|
|
60
|
+
* to send.
|
|
61
|
+
*/
|
|
62
|
+
const validateBody = (plan, schema, output) => {
|
|
63
|
+
if (!schema || plan.body === undefined)
|
|
64
|
+
return plan.body;
|
|
65
|
+
const parsed = schema.parse(plan.body);
|
|
66
|
+
if (parsed.ok)
|
|
67
|
+
return parsed.value;
|
|
68
|
+
output.writeWarn(formatProtocolValidationIssues(parsed.issues));
|
|
69
|
+
process.exitCode = 2;
|
|
70
|
+
return SCHEMA_REJECTED;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=defineWatcherCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineWatcherCommand.js","sourceRoot":"","sources":["../../src/cli/defineWatcherCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAuBpE,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,MAAM,CAAA;AA2DjC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAChC,CACC,IAA2D,EACnB,EAAE,CAC3C,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE;IACrB,oFAAoF;IACpF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAa,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAqB,CAAA;IAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAEpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACpD,IAAI,IAAI,IAAI,IAAI;QAAE,OAAM;IAExB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpD,IAAI,IAAI,KAAK,eAAe;QAAE,OAAM;IAEpC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACxC;QACC,EAAE;QACF,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,kBAAkB;KAC/C,EACD,MAAM,CACN,CAAA;IACD,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,GAAG,GAA2C,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAEtG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnF,OAAM;IACP,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAClC,OAAM;IACP,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACxD,CAAC,CAAA;AAEF,+EAA+E;AAC/E,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAEjD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CACpB,IAAwB,EACxB,MAAyC,EACzC,MAAc,EACqB,EAAE;IACrC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,IAAI,CAAA;IAExD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IAElC,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACpB,OAAO,eAAe,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerPlugins.d.ts","sourceRoot":"","sources":["../../../src/cli/plugins/registerPlugins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registerPlugins.d.ts","sourceRoot":"","sources":["../../../src/cli/plugins/registerPlugins.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsFxC,eAAO,MAAM,eAAe,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,IAAI,CA8DpE,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { ARGUS_PLUGIN_API_VERSION } from '@vforsh/argus-plugin-api';
|
|
3
4
|
import { resolveArgusConfigPath, loadArgusConfig } from '../../config/argusConfig.js';
|
|
4
5
|
import { createOutput } from '../../output/io.js';
|
|
5
6
|
import { requestWatcherJson, writeRequestError } from '../../watchers/requestWatcher.js';
|
|
6
7
|
import { runChromeOpen } from '../../commands/chrome.js';
|
|
7
|
-
import { ARGUS_PLUGIN_API_VERSION } from '../../plugin.js';
|
|
8
8
|
const parseEnvPlugins = () => {
|
|
9
9
|
const raw = process.env.ARGUS_PLUGINS;
|
|
10
10
|
if (!raw)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerPlugins.js","sourceRoot":"","sources":["../../../src/cli/plugins/registerPlugins.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"registerPlugins.js","sourceRoot":"","sources":["../../../src/cli/plugins/registerPlugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domCommandBuilder.d.ts","sourceRoot":"","sources":["../../../src/cli/register/domCommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"domCommandBuilder.d.ts","sourceRoot":"","sources":["../../../src/cli/register/domCommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUxC,KAAK,sBAAsB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ,OAAO,EAAE,MAAM,sBAAsB,KAAG,IAgC1F,CAAA"}
|
|
@@ -10,6 +10,9 @@ export const registerDomSelectorCommand = (parent, spec) => {
|
|
|
10
10
|
}
|
|
11
11
|
command.option('--selector <css>', 'CSS selector to match element(s)');
|
|
12
12
|
command.option('--testid <id>', 'Shorthand for --selector "[data-testid=\'<id>\']"');
|
|
13
|
+
if (spec.allowRef) {
|
|
14
|
+
command.option('--ref <elementRef>', 'Stable element ref from snapshot/locate output');
|
|
15
|
+
}
|
|
13
16
|
if (spec.allowsAll !== false) {
|
|
14
17
|
command.option('--all', 'Allow multiple matches (default: error if >1 match)');
|
|
15
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domCommandBuilder.js","sourceRoot":"","sources":["../../../src/cli/register/domCommandBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"domCommandBuilder.js","sourceRoot":"","sources":["../../../src/cli/register/domCommandBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAyB/D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAe,EAAE,IAA4B,EAAQ,EAAE;IACjG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAE/G,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAA;IACtE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC,CAAA;IACpF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC,CAAA;IACvF,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,qDAAqD,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IACtD,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAA;IACzB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,CAAC,aAAa,CAAC,OAA4B,CAAC,EAAE,CAAC;YAClD,OAAM;QACP,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAkC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAU,EAAE,CAAC,gBAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAMzD,eAAO,MAAM,qBAAqB,EAAE,SAAS,gBAAgB,EAwB5D,CAAA"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { domClickCommandDefinition } from '../../commands/domClick.js';
|
|
2
|
+
import { defineCommands } from '../defineCommand.js';
|
|
1
3
|
import { registerQuickAccess } from './registerQuickAccess.js';
|
|
2
4
|
import { registerChrome } from './registerChrome.js';
|
|
3
5
|
import { registerWatcher } from './registerWatcher.js';
|
|
4
6
|
import { registerPage } from './registerPage.js';
|
|
7
|
+
import { registerDialog } from './registerDialog.js';
|
|
5
8
|
import { registerLogs } from './registerLogs.js';
|
|
6
9
|
import { registerNet } from './registerNet.js';
|
|
7
10
|
import { registerAuth } from './registerAuth.js';
|
|
8
11
|
import { registerEval } from './registerEval.js';
|
|
9
12
|
import { registerDom } from './registerDom.js';
|
|
10
|
-
import { registerClick } from './registerClick.js';
|
|
11
13
|
import { registerKeydown } from './registerKeydown.js';
|
|
12
14
|
import { registerFill } from './registerFill.js';
|
|
13
15
|
import { registerHover } from './registerHover.js';
|
|
@@ -19,18 +21,24 @@ import { registerTrace } from './registerTrace.js';
|
|
|
19
21
|
import { registerConfig } from './registerConfig.js';
|
|
20
22
|
import { registerExtension } from './registerExtension.js';
|
|
21
23
|
import { registerCode } from './registerCode.js';
|
|
24
|
+
import { registerLocate } from './registerLocate.js';
|
|
25
|
+
const registerDefinedCommands = (program) => {
|
|
26
|
+
defineCommands(program, [domClickCommandDefinition]);
|
|
27
|
+
};
|
|
22
28
|
export const coreProgramRegistrars = [
|
|
23
29
|
registerQuickAccess,
|
|
24
30
|
registerChrome,
|
|
25
31
|
registerWatcher,
|
|
26
32
|
registerPage,
|
|
33
|
+
registerDialog,
|
|
27
34
|
registerLogs,
|
|
28
35
|
registerNet,
|
|
29
36
|
registerAuth,
|
|
30
37
|
registerEval,
|
|
38
|
+
registerLocate,
|
|
31
39
|
registerCode,
|
|
32
40
|
registerDom,
|
|
33
|
-
|
|
41
|
+
registerDefinedCommands,
|
|
34
42
|
registerKeydown,
|
|
35
43
|
registerFill,
|
|
36
44
|
registerHover,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/register/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIpD,MAAM,uBAAuB,GAAqB,CAAC,OAAO,EAAE,EAAE;IAC7D,cAAc,CAAC,OAAO,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IACjE,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,uBAAuB;IACvB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,iBAAiB;CACjB,CAAA"}
|
|
@@ -1 +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;
|
|
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;AAWxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgKnD"}
|