@vforsh/argus-watcher 0.5.1 → 0.5.2
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/artifacts.d.ts +6 -0
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +6 -0
- package/dist/artifacts.js.map +1 -1
- package/dist/cdp/health.d.ts +65 -0
- package/dist/cdp/health.d.ts.map +1 -0
- package/dist/cdp/health.js +89 -0
- package/dist/cdp/health.js.map +1 -0
- package/dist/cdp/keyboard.d.ts +6 -1
- package/dist/cdp/keyboard.d.ts.map +1 -1
- package/dist/cdp/keyboard.js +22 -12
- package/dist/cdp/keyboard.js.map +1 -1
- package/dist/cdp/pageFocus.d.ts +26 -0
- package/dist/cdp/pageFocus.d.ts.map +1 -0
- package/dist/cdp/pageFocus.js +54 -0
- package/dist/cdp/pageFocus.js.map +1 -0
- package/dist/cdp/watcher.d.ts +7 -0
- package/dist/cdp/watcher.d.ts.map +1 -1
- package/dist/cdp/watcher.js +7 -0
- package/dist/cdp/watcher.js.map +1 -1
- package/dist/cdp/watcherTargets.d.ts +8 -0
- package/dist/cdp/watcherTargets.d.ts.map +1 -1
- package/dist/cdp/watcherTargets.js +12 -3
- package/dist/cdp/watcherTargets.js.map +1 -1
- package/dist/http/httpUtils.d.ts +13 -0
- package/dist/http/httpUtils.d.ts.map +1 -1
- package/dist/http/httpUtils.js +24 -0
- package/dist/http/httpUtils.js.map +1 -1
- package/dist/http/routes/defineRoute.js +2 -2
- package/dist/http/routes/defineRoute.js.map +1 -1
- package/dist/http/routes/postDomKeydown.d.ts.map +1 -1
- package/dist/http/routes/postDomKeydown.js +5 -0
- package/dist/http/routes/postDomKeydown.js.map +1 -1
- package/dist/http/routes/postEval.d.ts.map +1 -1
- package/dist/http/routes/postEval.js +9 -1
- package/dist/http/routes/postEval.js.map +1 -1
- package/dist/http/server.d.ts +8 -0
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js.map +1 -1
- package/dist/sources/cdp-source.d.ts +1 -1
- package/dist/sources/cdp-source.d.ts.map +1 -1
- package/dist/sources/cdp-source.js +31 -0
- package/dist/sources/cdp-source.js.map +1 -1
- package/dist/sources/types.d.ts +10 -0
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/startWatcherRuntime.d.ts.map +1 -1
- package/dist/startWatcherRuntime.js +13 -0
- package/dist/startWatcherRuntime.js.map +1 -1
- package/package.json +1 -1
package/dist/artifacts.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export declare const ensureParentDir: (filePath: string) => Promise<void>;
|
|
|
5
5
|
* - If `outFile` is an absolute path, use it directly (no restriction).
|
|
6
6
|
* - If `outFile` is relative, resolve it under `artifactsDir`.
|
|
7
7
|
* - If `outFile` is empty/undefined, use `defaultName` under `artifactsDir`.
|
|
8
|
+
*
|
|
9
|
+
* The watcher is a separate process whose cwd is unrelated to the caller's, so a relative path
|
|
10
|
+
* can only be resolved against something the watcher owns. Callers that want cwd-relative
|
|
11
|
+
* semantics resolve the path on their side first — the CLI does exactly that for
|
|
12
|
+
* `screenshot`/`record`/`trace` (`resolveArtifactOutFile`), so a relative `--out` lands next to
|
|
13
|
+
* the user rather than in this temp directory.
|
|
8
14
|
*/
|
|
9
15
|
export declare const resolveArtifactPath: (artifactsDir: string, outFile: string | undefined, defaultName: string) => string;
|
|
10
16
|
/**
|
package/dist/artifacts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAElE,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAGpE,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAElE,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAGpE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,EAAE,SAAS,MAAM,GAAG,SAAS,EAAE,aAAa,MAAM,KAAG,MAS5G,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAU,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CAY7E,CAAA"}
|
package/dist/artifacts.js
CHANGED
|
@@ -12,6 +12,12 @@ export const ensureParentDir = async (filePath) => {
|
|
|
12
12
|
* - If `outFile` is an absolute path, use it directly (no restriction).
|
|
13
13
|
* - If `outFile` is relative, resolve it under `artifactsDir`.
|
|
14
14
|
* - If `outFile` is empty/undefined, use `defaultName` under `artifactsDir`.
|
|
15
|
+
*
|
|
16
|
+
* The watcher is a separate process whose cwd is unrelated to the caller's, so a relative path
|
|
17
|
+
* can only be resolved against something the watcher owns. Callers that want cwd-relative
|
|
18
|
+
* semantics resolve the path on their side first — the CLI does exactly that for
|
|
19
|
+
* `screenshot`/`record`/`trace` (`resolveArtifactOutFile`), so a relative `--out` lands next to
|
|
20
|
+
* the user rather than in this temp directory.
|
|
15
21
|
*/
|
|
16
22
|
export const resolveArtifactPath = (artifactsDir, outFile, defaultName) => {
|
|
17
23
|
const trimmed = outFile?.trim();
|
package/dist/artifacts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IACtE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IACtE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,OAA2B,EAAE,WAAmB,EAAU,EAAE;IACrH,MAAM,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAA;IAE/B,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,WAAW,CAAC,CAAA;AACrD,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAU,EAAiB,EAAE;IACjF,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IACzB,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvD,MAAM,KAAK,CAAA;QACZ,CAAC;QAED,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;AACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { ArgusErrorCode, DialogStatus } from '@vforsh/argus-core';
|
|
2
|
+
import { type CodedError } from '../errors.js';
|
|
3
|
+
import type { CdpSessionHandle } from './connection.js';
|
|
4
|
+
/**
|
|
5
|
+
* How long a health probe may take.
|
|
6
|
+
*
|
|
7
|
+
* Kept short — it runs *after* something already timed out, and the caller is still waiting.
|
|
8
|
+
* Transport checks share the budget so a diagnosis cannot outlast the request it explains.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CDP_HEALTH_PROBE_TIMEOUT_MS = 2000;
|
|
11
|
+
/** A layered explanation for a CDP command that ran out of time. */
|
|
12
|
+
export type CdpHealthDiagnosis = {
|
|
13
|
+
/** The layer that swallowed the command, in the same vocabulary the wire envelope uses. */
|
|
14
|
+
code: ArgusErrorCode;
|
|
15
|
+
/** One line: what failed, and what to do about it. */
|
|
16
|
+
message: string;
|
|
17
|
+
};
|
|
18
|
+
/** Transport-level verdict for the connection carrying CDP commands. */
|
|
19
|
+
export type CdpTransportCheck = {
|
|
20
|
+
state: 'ok';
|
|
21
|
+
} | {
|
|
22
|
+
state: 'unreachable';
|
|
23
|
+
detail: string;
|
|
24
|
+
} | {
|
|
25
|
+
state: 'target_gone';
|
|
26
|
+
detail: string;
|
|
27
|
+
};
|
|
28
|
+
/** The per-layer checks {@link diagnoseCdpHealth} runs, supplied by whichever source is attached. */
|
|
29
|
+
export type CdpHealthProbe = {
|
|
30
|
+
/** Watcher id, so hints can name the exact command to run. */
|
|
31
|
+
watcherId?: string;
|
|
32
|
+
isAttached: () => boolean;
|
|
33
|
+
/** Cheap page round-trip: `true` when the renderer answered within the probe budget. */
|
|
34
|
+
probeRenderer: () => Promise<boolean>;
|
|
35
|
+
/** Transport check. Omitted by transports with no out-of-band endpoint to ask. */
|
|
36
|
+
checkTransport?: () => Promise<CdpTransportCheck>;
|
|
37
|
+
/** Modal dialogs block the renderer without breaking anything; report them as their own layer. */
|
|
38
|
+
getBlockingDialog?: () => DialogStatus | null;
|
|
39
|
+
/** Invoked when the transport reports the attached target is gone, to start reattachment. */
|
|
40
|
+
onTargetGone?: () => void;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Work out which layer swallowed a CDP command, from the outside in.
|
|
44
|
+
*
|
|
45
|
+
* A stalled command used to surface as "eval may need more time" no matter what actually broke, so
|
|
46
|
+
* the standard recovery — raise the timeout — reliably bought a slower version of the same failure.
|
|
47
|
+
* Each layer is checked in the order it can fail: no attachment, then the browser, then the target,
|
|
48
|
+
* then a dialog, then the renderer, and only then the expression itself.
|
|
49
|
+
*
|
|
50
|
+
* Every probe is short and failure-tolerant: this runs on an already-failed request, and must not
|
|
51
|
+
* become a second thing that hangs.
|
|
52
|
+
*/
|
|
53
|
+
export declare const diagnoseCdpHealth: (probe: CdpHealthProbe) => Promise<CdpHealthDiagnosis>;
|
|
54
|
+
/** Turn a diagnosis into the coded error routes already know how to serialize. */
|
|
55
|
+
export declare const toDiagnosedError: (diagnosis: CdpHealthDiagnosis, original: unknown) => CodedError;
|
|
56
|
+
/**
|
|
57
|
+
* True for the "no answer came back in time" errors both transports raise.
|
|
58
|
+
*
|
|
59
|
+
* Matched on message because that is where the timeout is decided — {@link CdpSessionHandle}'s own
|
|
60
|
+
* pending-request timer and the native-messaging bridge both reject with a plain `Error`.
|
|
61
|
+
*/
|
|
62
|
+
export declare const isCdpTimeoutError: (error: unknown) => boolean;
|
|
63
|
+
/** A renderer probe backed by a CDP session: one trivial evaluation, short deadline, never throws. */
|
|
64
|
+
export declare const createSessionRendererProbe: (session: CdpSessionHandle) => () => Promise<boolean>;
|
|
65
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cdp/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAA;AAEhD,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAChC,2FAA2F;IAC3F,IAAI,EAAE,cAAc,CAAA;IACpB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErI,qGAAqG;AACrG,MAAM,MAAM,cAAc,GAAG;IAC5B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,wFAAwF;IACxF,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACjD,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAA;IAC7C,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAU,OAAO,cAAc,KAAG,OAAO,CAAC,kBAAkB,CAqDzF,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,GAAI,WAAW,kBAAkB,EAAE,UAAU,OAAO,KAAG,UAGnF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,OAC2C,CAAA;AAE9F,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,GAAI,SAAS,gBAAgB,WAAe,OAAO,CAAC,OAAO,CAQjG,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { codedError } from '../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* How long a health probe may take.
|
|
4
|
+
*
|
|
5
|
+
* Kept short — it runs *after* something already timed out, and the caller is still waiting.
|
|
6
|
+
* Transport checks share the budget so a diagnosis cannot outlast the request it explains.
|
|
7
|
+
*/
|
|
8
|
+
export const CDP_HEALTH_PROBE_TIMEOUT_MS = 2_000;
|
|
9
|
+
/**
|
|
10
|
+
* Work out which layer swallowed a CDP command, from the outside in.
|
|
11
|
+
*
|
|
12
|
+
* A stalled command used to surface as "eval may need more time" no matter what actually broke, so
|
|
13
|
+
* the standard recovery — raise the timeout — reliably bought a slower version of the same failure.
|
|
14
|
+
* Each layer is checked in the order it can fail: no attachment, then the browser, then the target,
|
|
15
|
+
* then a dialog, then the renderer, and only then the expression itself.
|
|
16
|
+
*
|
|
17
|
+
* Every probe is short and failure-tolerant: this runs on an already-failed request, and must not
|
|
18
|
+
* become a second thing that hangs.
|
|
19
|
+
*/
|
|
20
|
+
export const diagnoseCdpHealth = async (probe) => {
|
|
21
|
+
const id = probe.watcherId ?? '<id>';
|
|
22
|
+
if (!probe.isAttached()) {
|
|
23
|
+
return {
|
|
24
|
+
code: 'cdp_not_attached',
|
|
25
|
+
message: `The watcher is not attached to a target. Check \`argus watcher status ${id}\` and \`argus doctor\`.`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// A source with no out-of-band endpoint to ask cannot fail these two layers; treat it as healthy
|
|
29
|
+
// transport rather than repeating an optional-call dance at every check below.
|
|
30
|
+
const transport = (await probe.checkTransport?.()) ?? { state: 'ok' };
|
|
31
|
+
if (transport.state === 'unreachable') {
|
|
32
|
+
return {
|
|
33
|
+
code: 'chrome_unreachable',
|
|
34
|
+
message: `Chrome's CDP endpoint did not answer (${transport.detail}). Restart the browser, then \`argus doctor\`.`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (transport.state === 'target_gone') {
|
|
38
|
+
probe.onTargetGone?.();
|
|
39
|
+
return {
|
|
40
|
+
code: 'cdp_target_replaced',
|
|
41
|
+
message: `The attached page target is gone (${transport.detail}) — a navigation replaced it. ` +
|
|
42
|
+
`Argus is reattaching; retry the command, or check \`argus watcher status ${id}\`.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const dialog = probe.getBlockingDialog?.();
|
|
46
|
+
if (dialog) {
|
|
47
|
+
return {
|
|
48
|
+
code: 'dialog_blocking',
|
|
49
|
+
message: `A ${dialog.type} dialog is open and blocking the page. ` +
|
|
50
|
+
`Dismiss it with \`argus dialog accept ${id}\` or \`argus dialog dismiss ${id}\`, then retry.`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (!(await probe.probeRenderer())) {
|
|
54
|
+
return {
|
|
55
|
+
code: 'cdp_renderer_unresponsive',
|
|
56
|
+
message: `The page's renderer did not answer a trivial evaluation within ${CDP_HEALTH_PROBE_TIMEOUT_MS}ms — its main thread is ` +
|
|
57
|
+
`blocked, or a cross-origin navigation stranded it. A longer timeout will not help: reload with \`argus reload ${id}\`, ` +
|
|
58
|
+
'or restart Chrome.',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
code: 'cdp_timeout',
|
|
63
|
+
message: 'The watcher, target, and renderer all answered, so the expression itself exceeded its deadline. Pass a longer timeout.',
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
/** Turn a diagnosis into the coded error routes already know how to serialize. */
|
|
67
|
+
export const toDiagnosedError = (diagnosis, original) => {
|
|
68
|
+
const detail = original instanceof Error ? original.message : String(original);
|
|
69
|
+
return codedError(diagnosis.code, `${detail}. ${diagnosis.message}`);
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* True for the "no answer came back in time" errors both transports raise.
|
|
73
|
+
*
|
|
74
|
+
* Matched on message because that is where the timeout is decided — {@link CdpSessionHandle}'s own
|
|
75
|
+
* pending-request timer and the native-messaging bridge both reject with a plain `Error`.
|
|
76
|
+
*/
|
|
77
|
+
export const isCdpTimeoutError = (error) => error instanceof Error && /\b(?:CDP|Bridge|Control) request timed out\b/i.test(error.message);
|
|
78
|
+
/** A renderer probe backed by a CDP session: one trivial evaluation, short deadline, never throws. */
|
|
79
|
+
export const createSessionRendererProbe = (session) => async () => {
|
|
80
|
+
try {
|
|
81
|
+
const params = { expression: '1', returnByValue: true, silent: true };
|
|
82
|
+
await session.sendAndWait('Runtime.evaluate', params, { timeoutMs: CDP_HEALTH_PROBE_TIMEOUT_MS });
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cdp/health.ts"],"names":[],"mappings":"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"}
|
package/dist/cdp/keyboard.d.ts
CHANGED
|
@@ -46,7 +46,12 @@ export declare const resolveKeyboardEvent: (options: ResolveKeyboardEventOptions
|
|
|
46
46
|
*
|
|
47
47
|
* 1. If `selector` provided: resolve → error if 0 or >1 match → focus
|
|
48
48
|
* 2. Resolve key definition
|
|
49
|
-
* 3. Dispatch:
|
|
49
|
+
* 3. Dispatch: keys that carry text → keyDown(text)+keyUp; the rest → rawKeyDown+keyUp
|
|
50
|
+
*
|
|
51
|
+
* A `keyDown` carrying `text` already produces the character, so no separate `char` event is
|
|
52
|
+
* sent. Sending one used to double every printable key: the page saw one `keydown`, but two
|
|
53
|
+
* `keypress`/`beforeinput`/`input` rounds, and a focused field ended up with "99" for a single
|
|
54
|
+
* `--key 9`. Chrome's own automation clients (Playwright) dispatch the same two events.
|
|
50
55
|
*/
|
|
51
56
|
export declare const dispatchKeydown: (session: CdpSessionHandle, options: DispatchKeydownOptions) => Promise<DispatchKeydownResult>;
|
|
52
57
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOvD,KAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAgGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAElE,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,aAAa,GAAG,SAEpE,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAoB/C,CAAA;AAMD,MAAM,MAAM,sBAAsB,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,KAAK,2BAA2B,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAAI,SAAS,2BAA2B,KAAG,eAqC3E,CAAA;AA8BD
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOvD,KAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAgGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAElE,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,aAAa,GAAG,SAEpE,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAoB/C,CAAA;AAMD,MAAM,MAAM,sBAAsB,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,KAAK,2BAA2B,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAAI,SAAS,2BAA2B,KAAG,eAqC3E,CAAA;AA8BD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,gBAAgB,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,qBAAqB,CAmD/H,CAAA"}
|
package/dist/cdp/keyboard.js
CHANGED
|
@@ -187,7 +187,12 @@ const isShift = (modifiers) => (modifiers & MODIFIER_BITS.shift) !== 0;
|
|
|
187
187
|
*
|
|
188
188
|
* 1. If `selector` provided: resolve → error if 0 or >1 match → focus
|
|
189
189
|
* 2. Resolve key definition
|
|
190
|
-
* 3. Dispatch:
|
|
190
|
+
* 3. Dispatch: keys that carry text → keyDown(text)+keyUp; the rest → rawKeyDown+keyUp
|
|
191
|
+
*
|
|
192
|
+
* A `keyDown` carrying `text` already produces the character, so no separate `char` event is
|
|
193
|
+
* sent. Sending one used to double every printable key: the page saw one `keydown`, but two
|
|
194
|
+
* `keypress`/`beforeinput`/`input` rounds, and a focused field ended up with "99" for a single
|
|
195
|
+
* `--key 9`. Chrome's own automation clients (Playwright) dispatch the same two events.
|
|
191
196
|
*/
|
|
192
197
|
export const dispatchKeydown = async (session, options) => {
|
|
193
198
|
const { selector } = options;
|
|
@@ -206,24 +211,29 @@ export const dispatchKeydown = async (session, options) => {
|
|
|
206
211
|
await session.sendAndWait('DOM.focus', { nodeId });
|
|
207
212
|
focused = true;
|
|
208
213
|
}
|
|
209
|
-
|
|
214
|
+
// `rawKeyDown` is Chrome's "this key produces no character" type: it suppresses `keypress` and
|
|
215
|
+
// every default text action. Enter carries text (`\r`) but was excluded from this split, so
|
|
216
|
+
// `--key Enter` reached the page as a bare keydown/keyup pair — no newline in a textarea, no
|
|
217
|
+
// form submission. The split is simply whether the key produces text, as Playwright decides it.
|
|
218
|
+
const carriesText = event.text != null;
|
|
210
219
|
// 3. Dispatch key events
|
|
220
|
+
//
|
|
221
|
+
// `nativeVirtualKeyCode` is deliberately absent: it means the *platform's* key code — a Carbon
|
|
222
|
+
// keycode on macOS, an X11 keysym on Linux — and Argus only knows the Windows one, so the value
|
|
223
|
+
// was always wrong off Windows. Chrome 152 headless turns that into a hang, repeating the key
|
|
224
|
+
// thousands of times a second until the renderer stops answering CDP. `windowsVirtualKeyCode`
|
|
225
|
+
// alone is what reaches the page as `KeyboardEvent.keyCode`, and it is all Playwright sends.
|
|
211
226
|
const baseParams = {
|
|
212
227
|
code: event.code,
|
|
213
228
|
key: event.key,
|
|
214
229
|
windowsVirtualKeyCode: event.keyCode,
|
|
215
|
-
nativeVirtualKeyCode: event.keyCode,
|
|
216
230
|
modifiers: event.modifiers,
|
|
217
231
|
};
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'rawKeyDown', text: event.text });
|
|
225
|
-
await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyUp' });
|
|
226
|
-
}
|
|
232
|
+
const keyDownParams = carriesText
|
|
233
|
+
? { ...baseParams, type: 'keyDown', text: event.text, unmodifiedText: event.text }
|
|
234
|
+
: { ...baseParams, type: 'rawKeyDown' };
|
|
235
|
+
await session.sendAndWait('Input.dispatchKeyEvent', keyDownParams);
|
|
236
|
+
await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyUp' });
|
|
227
237
|
return { key: event.key, code: event.code, modifiers: event.modifiers, focused, event };
|
|
228
238
|
};
|
|
229
239
|
//# sourceMappingURL=keyboard.js.map
|
package/dist/cdp/keyboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CdpSessionHandle } from './connection.js';
|
|
2
|
+
import type { VisibilityController } from '../visibility/VisibilityController.js';
|
|
3
|
+
/** Result of making a page accept synthetic keyboard input. */
|
|
4
|
+
export type PageInputActivation = {
|
|
5
|
+
/** Whether we had to activate the page (focus emulation) to get there. */
|
|
6
|
+
activated: boolean;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Make sure the attached page will actually receive `Input.dispatchKeyEvent`.
|
|
10
|
+
*
|
|
11
|
+
* Chrome routes keyboard input to the *focused* widget. A hidden page — headless, a background
|
|
12
|
+
* tab, a covered window — has none, so the renderer drops the event and CDP still acks the
|
|
13
|
+
* command: the caller sees success for a key the page never saw. `document.hasFocus()` is the
|
|
14
|
+
* cheapest honest signal for that state.
|
|
15
|
+
*
|
|
16
|
+
* When the page is not focused this locks it into the same shown+focused state `argus page show`
|
|
17
|
+
* produces, through the same controller, so the change is visible in `page hide`/reattach rather
|
|
18
|
+
* than being invisible session state. When even that fails (a transport with no `Emulation`
|
|
19
|
+
* domain, for instance) it throws rather than dispatching into a void.
|
|
20
|
+
*
|
|
21
|
+
* @param pageSession Top-level page session — focus is a page-level concept, never iframe-scoped.
|
|
22
|
+
* @param visibility Controller owning the sticky show lock.
|
|
23
|
+
* @throws {CodedError} `target_not_focused` when the page cannot be activated.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ensurePageInputFocus: (pageSession: CdpSessionHandle, visibility: VisibilityController) => Promise<PageInputActivation>;
|
|
26
|
+
//# sourceMappingURL=pageFocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageFocus.d.ts","sourceRoot":"","sources":["../../src/cdp/pageFocus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAMjF,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG;IACjC,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,GAAU,aAAa,gBAAgB,EAAE,YAAY,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAqBvI,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { formatError } from '@vforsh/argus-core';
|
|
2
|
+
import { codedError } from '../errors.js';
|
|
3
|
+
import { tryEvaluateInPage } from './pageState.js';
|
|
4
|
+
/** How long the focus probe may take before we give up and treat focus as unknown. */
|
|
5
|
+
const FOCUS_PROBE_TIMEOUT_MS = 3_000;
|
|
6
|
+
/**
|
|
7
|
+
* Make sure the attached page will actually receive `Input.dispatchKeyEvent`.
|
|
8
|
+
*
|
|
9
|
+
* Chrome routes keyboard input to the *focused* widget. A hidden page — headless, a background
|
|
10
|
+
* tab, a covered window — has none, so the renderer drops the event and CDP still acks the
|
|
11
|
+
* command: the caller sees success for a key the page never saw. `document.hasFocus()` is the
|
|
12
|
+
* cheapest honest signal for that state.
|
|
13
|
+
*
|
|
14
|
+
* When the page is not focused this locks it into the same shown+focused state `argus page show`
|
|
15
|
+
* produces, through the same controller, so the change is visible in `page hide`/reattach rather
|
|
16
|
+
* than being invisible session state. When even that fails (a transport with no `Emulation`
|
|
17
|
+
* domain, for instance) it throws rather than dispatching into a void.
|
|
18
|
+
*
|
|
19
|
+
* @param pageSession Top-level page session — focus is a page-level concept, never iframe-scoped.
|
|
20
|
+
* @param visibility Controller owning the sticky show lock.
|
|
21
|
+
* @throws {CodedError} `target_not_focused` when the page cannot be activated.
|
|
22
|
+
*/
|
|
23
|
+
export const ensurePageInputFocus = async (pageSession, visibility) => {
|
|
24
|
+
if (!pageSession.isAttached()) {
|
|
25
|
+
// Dispatch itself will fail with the attachment error; don't mask it with a focus error.
|
|
26
|
+
return { activated: false };
|
|
27
|
+
}
|
|
28
|
+
if (await hasPageFocus(pageSession)) {
|
|
29
|
+
return { activated: false };
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
await visibility.setLock(pageSession, 'shown');
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw notFocusedError(`activating it failed: ${formatError(error)}`);
|
|
36
|
+
}
|
|
37
|
+
if (!(await hasPageFocus(pageSession))) {
|
|
38
|
+
throw notFocusedError('activating it did not give it focus');
|
|
39
|
+
}
|
|
40
|
+
return { activated: true };
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Read `document.hasFocus()` from the page.
|
|
44
|
+
*
|
|
45
|
+
* An unreadable page (navigating, no `Runtime` yet) counts as focused: a probe that cannot answer
|
|
46
|
+
* must not turn a working dispatch into a failure.
|
|
47
|
+
*/
|
|
48
|
+
const hasPageFocus = async (pageSession) => {
|
|
49
|
+
const focused = await tryEvaluateInPage(pageSession, 'document.hasFocus()', { timeoutMs: FOCUS_PROBE_TIMEOUT_MS });
|
|
50
|
+
return focused !== false;
|
|
51
|
+
};
|
|
52
|
+
const notFocusedError = (reason) => codedError('target_not_focused', `The page is not focused, so Chrome would drop the keyboard event — ${reason}. ` +
|
|
53
|
+
'Run `argus page show <id>` and retry, or start the watcher against a visible page.');
|
|
54
|
+
//# sourceMappingURL=pageFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageFocus.js","sourceRoot":"","sources":["../../src/cdp/pageFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAA;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,sFAAsF;AACtF,MAAM,sBAAsB,GAAG,KAAK,CAAA;AAQpC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAA6B,EAAE,UAAgC,EAAgC,EAAE;IAC3I,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;QAC/B,yFAAyF;QACzF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI,MAAM,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,eAAe,CAAC,yBAAyB,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,eAAe,CAAC,qCAAqC,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAC3B,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,YAAY,GAAG,KAAK,EAAE,WAA6B,EAAoB,EAAE;IAC9E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAU,WAAW,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAA;IAC3H,OAAO,OAAO,KAAK,KAAK,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAc,EAAc,EAAE,CACtD,UAAU,CACT,oBAAoB,EACpB,sEAAsE,MAAM,IAAI;IAC/E,oFAAoF,CACrF,CAAA"}
|
package/dist/cdp/watcher.d.ts
CHANGED
|
@@ -39,6 +39,13 @@ export type CdpWatcherHandle = {
|
|
|
39
39
|
session: CdpSessionHandle;
|
|
40
40
|
stop: () => Promise<void>;
|
|
41
41
|
getTarget: () => CdpTarget | null;
|
|
42
|
+
/**
|
|
43
|
+
* Drop the current socket so the connect loop re-selects a target.
|
|
44
|
+
*
|
|
45
|
+
* The only way back from a target Chrome has replaced under us: the loop already reconnects on
|
|
46
|
+
* socket close, and `findTarget` re-runs the match, so closing is the whole reattachment.
|
|
47
|
+
*/
|
|
48
|
+
reconnect: () => void;
|
|
42
49
|
};
|
|
43
50
|
/** Start CDP polling + websocket subscriptions for console/exception events. */
|
|
44
51
|
export declare const startCdpWatcher: (options: CdpWatcherOptions) => CdpWatcherHandle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/cdp/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAG/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EAAiB,KAAK,YAAY,EAAoC,MAAM,oBAAoB,CAAA;AACvG,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAG3E,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB,GAAG,IAAI,CAAA;IACR,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,yCAAyC;AACzC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,UAAU,EAAE,iBAAiB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,gBAAgB,CAAA;IACzB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,SAAS,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/cdp/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAG/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EAAiB,KAAK,YAAY,EAAoC,MAAM,oBAAoB,CAAA;AACvG,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAG3E,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB,GAAG,IAAI,CAAA;IACR,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,yCAAyC;AACzC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,UAAU,EAAE,iBAAiB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,gBAAgB,CAAA;IACzB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,SAAS,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;IACjC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,KAAG,gBAqI5D,CAAA"}
|
package/dist/cdp/watcher.js
CHANGED
|
@@ -15,6 +15,12 @@ export const startCdpWatcher = (options) => {
|
|
|
15
15
|
socket.close();
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
+
const reconnect = () => {
|
|
19
|
+
if (stopped) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
socket?.close();
|
|
23
|
+
};
|
|
18
24
|
void runLoop();
|
|
19
25
|
session.onEvent('Runtime.consoleAPICalled', (params) => {
|
|
20
26
|
if (!currentTarget) {
|
|
@@ -47,6 +53,7 @@ export const startCdpWatcher = (options) => {
|
|
|
47
53
|
});
|
|
48
54
|
return {
|
|
49
55
|
stop,
|
|
56
|
+
reconnect,
|
|
50
57
|
session,
|
|
51
58
|
getTarget: () => (currentTarget ? { ...currentTarget } : null),
|
|
52
59
|
};
|
package/dist/cdp/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/cdp/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,aAAa,EAAqB,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACvG,OAAO,EAAE,UAAU,EAAkB,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/cdp/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,4 +15,12 @@ export type CdpTarget = {
|
|
|
15
15
|
parentId: string | null;
|
|
16
16
|
};
|
|
17
17
|
export declare const findTarget: (chrome: WatcherChrome, match?: WatcherMatch) => Promise<CdpTarget>;
|
|
18
|
+
/**
|
|
19
|
+
* List Chrome's debuggable targets.
|
|
20
|
+
*
|
|
21
|
+
* @param chrome DevTools endpoint to query.
|
|
22
|
+
* @param timeoutMs Abort budget for the request. Health probes pass a shorter one.
|
|
23
|
+
* @throws {Error} When the endpoint is unreachable, times out, or answers with a non-2xx status.
|
|
24
|
+
*/
|
|
25
|
+
export declare const fetchCdpTargets: (chrome: WatcherChrome, timeoutMs?: number) => Promise<CdpTarget[]>;
|
|
18
26
|
//# sourceMappingURL=watcherTargets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcherTargets.d.ts","sourceRoot":"","sources":["../../src/cdp/watcherTargets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAErE,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG;IACvB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAA;IAEV,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IAEb,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IAEX,oFAAoF;IACpF,oBAAoB,EAAE,MAAM,CAAA;IAE5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IAEZ,kGAAkG;IAClG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,QAAQ,aAAa,EAAE,QAAQ,YAAY,KAAG,OAAO,CAAC,SAAS,CA6B/F,CAAA"}
|
|
1
|
+
{"version":3,"file":"watcherTargets.d.ts","sourceRoot":"","sources":["../../src/cdp/watcherTargets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAErE,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG;IACvB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAA;IAEV,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IAEb,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IAEX,oFAAoF;IACpF,oBAAoB,EAAE,MAAM,CAAA;IAE5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IAEZ,kGAAkG;IAClG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,QAAQ,aAAa,EAAE,QAAQ,YAAY,KAAG,OAAO,CAAC,SAAS,CA6B/F,CAAA;AAoDD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,QAAQ,aAAa,EAAE,kBAAkC,KAAG,OAAO,CAAC,SAAS,EAAE,CAqBpH,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const findTarget = async (chrome, match) => {
|
|
2
|
-
const targets = await
|
|
2
|
+
const targets = await fetchCdpTargets(chrome);
|
|
3
3
|
if (targets.length === 0) {
|
|
4
4
|
throw new Error('No CDP targets available');
|
|
5
5
|
}
|
|
@@ -56,8 +56,17 @@ const matchesTarget = (target, match, targetById, urlRegex, titleRegex) => {
|
|
|
56
56
|
}
|
|
57
57
|
return true;
|
|
58
58
|
};
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
/** Default budget for the `/json` round-trip, so a wedged browser cannot stall the connect loop. */
|
|
60
|
+
const TARGET_LIST_TIMEOUT_MS = 5_000;
|
|
61
|
+
/**
|
|
62
|
+
* List Chrome's debuggable targets.
|
|
63
|
+
*
|
|
64
|
+
* @param chrome DevTools endpoint to query.
|
|
65
|
+
* @param timeoutMs Abort budget for the request. Health probes pass a shorter one.
|
|
66
|
+
* @throws {Error} When the endpoint is unreachable, times out, or answers with a non-2xx status.
|
|
67
|
+
*/
|
|
68
|
+
export const fetchCdpTargets = async (chrome, timeoutMs = TARGET_LIST_TIMEOUT_MS) => {
|
|
69
|
+
const response = await fetch(`http://${chrome.host}:${chrome.port}/json`, { signal: AbortSignal.timeout(timeoutMs) });
|
|
61
70
|
if (!response.ok) {
|
|
62
71
|
throw new Error(`Failed to fetch CDP targets (status ${response.status})`);
|
|
63
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcherTargets.js","sourceRoot":"","sources":["../../src/cdp/watcherTargets.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAqB,EAAE,KAAoB,EAAsB,EAAE;IACnG,MAAM,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"watcherTargets.js","sourceRoot":"","sources":["../../src/cdp/watcherTargets.ts"],"names":[],"mappings":"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"}
|
package/dist/http/httpUtils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CdpHealthDiagnosis } from '../cdp/health.js';
|
|
1
2
|
import http from 'node:http';
|
|
2
3
|
import { type ArgusErrorCode, type LogLevel } from '@vforsh/argus-core';
|
|
3
4
|
export declare const respondJson: <T extends object>(res: http.ServerResponse, body: T, status?: number) => void;
|
|
@@ -17,6 +18,18 @@ export declare const respondInvalidBody: (res: http.ServerResponse, message: str
|
|
|
17
18
|
export declare const respondInvalidJson: (res: http.ServerResponse) => void;
|
|
18
19
|
export declare const respondPayloadTooLarge: (res: http.ServerResponse) => void;
|
|
19
20
|
export declare const respondError: (res: http.ServerResponse, error: unknown) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Send a failure, upgrading a bare CDP timeout into a layered diagnosis first.
|
|
23
|
+
*
|
|
24
|
+
* "Timed out" is the least informative thing Argus can say: the same message covers a dead browser,
|
|
25
|
+
* a target a navigation replaced, a blocked main thread, and an expression that genuinely needed
|
|
26
|
+
* longer — and only the last one is fixed by raising the timeout. Every route funnels its failures
|
|
27
|
+
* through here so the answer is the same wherever the stall surfaced.
|
|
28
|
+
*
|
|
29
|
+
* The diagnosis is best-effort: if it throws or the probes are unavailable, the original error is
|
|
30
|
+
* reported unchanged rather than replaced by a second failure.
|
|
31
|
+
*/
|
|
32
|
+
export declare const respondCdpError: (res: http.ServerResponse, error: unknown, diagnose: (() => Promise<CdpHealthDiagnosis>) | undefined) => Promise<void>;
|
|
20
33
|
/**
|
|
21
34
|
* Read and parse a JSON request body.
|
|
22
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../src/http/httpUtils.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAe,KAAK,cAAc,EAAsB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAExG,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,eAAY,KAAG,IAK/F,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,IAAI,CAAC,cAAc,EAAE,QAAQ,MAAM,EAAE,MAAM,cAAc,GAAG,SAAS,EAAE,SAAS,MAAM,KAAG,IAE7H,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,IAAI,CAAC,cAAc,EAAE,SAAS,MAAM,KAAG,IAE/E,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,KAAK,IAAI,CAAC,cAAc,KAAG,IAElE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,IAAI,CAAC,cAAc,EAAE,SAAS,MAAM,KAAG,IAE9E,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,IAAI,CAAC,cAAc,KAAG,IAE7D,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,KAAK,IAAI,CAAC,cAAc,KAAG,IAEjE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,IAAI,CAAC,cAAc,EAAE,OAAO,OAAO,KAAG,IAEvE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GAAU,KAAK,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,cAAc,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAkC9G,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,GAAG,IAAI,EAAE,UAAU,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAOhG,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,GAAG,IAAI,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAW1F,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,SAWnE,CAAA;AAcD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,QAAQ,EAAE,GAAG,SAe/D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,WAAW,GAAG,aAAa,GAAG,IAUrF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,KAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAW5F,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,EAAE,EAAE,WAAW,WAAW,GAAG,aAAa,KAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAiBnI,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,SAWnE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,UAAU,OAAO,KAAG,OAKpE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAS1D,CAAA"}
|
|
1
|
+
{"version":3,"file":"httpUtils.d.ts","sourceRoot":"","sources":["../../src/http/httpUtils.ts"],"names":[],"mappings":"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"}
|