@monoes/monomindcli 1.10.34 → 1.10.35
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/src/browser/find.d.ts +1 -0
- package/dist/src/browser/find.d.ts.map +1 -1
- package/dist/src/browser/find.js +12 -0
- package/dist/src/browser/find.js.map +1 -1
- package/dist/src/browser/har.d.ts +26 -0
- package/dist/src/browser/har.d.ts.map +1 -0
- package/dist/src/browser/har.js +130 -0
- package/dist/src/browser/har.js.map +1 -0
- package/dist/src/browser/index.d.ts +5 -0
- package/dist/src/browser/index.d.ts.map +1 -1
- package/dist/src/browser/index.js +5 -0
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/network.d.ts +15 -0
- package/dist/src/browser/network.d.ts.map +1 -1
- package/dist/src/browser/network.js +54 -0
- package/dist/src/browser/network.js.map +1 -1
- package/dist/src/browser/profiler.d.ts +10 -0
- package/dist/src/browser/profiler.d.ts.map +1 -0
- package/dist/src/browser/profiler.js +55 -0
- package/dist/src/browser/profiler.js.map +1 -0
- package/dist/src/browser/record.d.ts +21 -0
- package/dist/src/browser/record.d.ts.map +1 -0
- package/dist/src/browser/record.js +48 -0
- package/dist/src/browser/record.js.map +1 -0
- package/dist/src/browser/snapshot.d.ts.map +1 -1
- package/dist/src/browser/snapshot.js +23 -2
- package/dist/src/browser/snapshot.js.map +1 -1
- package/dist/src/browser/trace.d.ts +10 -0
- package/dist/src/browser/trace.d.ts.map +1 -0
- package/dist/src/browser/trace.js +72 -0
- package/dist/src/browser/trace.js.map +1 -0
- package/dist/src/browser/types.d.ts +1 -0
- package/dist/src/browser/types.d.ts.map +1 -1
- package/dist/src/browser/types.js.map +1 -1
- package/dist/src/browser/vitals.d.ts +15 -0
- package/dist/src/browser/vitals.d.ts.map +1 -0
- package/dist/src/browser/vitals.js +116 -0
- package/dist/src/browser/vitals.js.map +1 -0
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +415 -13
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/ui/dashboard-v2.html +8 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ export declare function findBySelector(client: CdpClient, sessionId: string, sel
|
|
|
12
12
|
export declare function findByRole(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, role: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
13
13
|
export declare function findByText(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, text: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
14
14
|
export declare function findByLabel(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, label: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
15
|
+
export declare function findByPlaceholder(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, placeholder: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
15
16
|
export declare function findByTestId(client: CdpClient, sessionId: string, testId: string): Promise<string | null>;
|
|
16
17
|
export declare function isVisible(client: CdpClient, sessionId: string, ref: ElementRef): Promise<boolean>;
|
|
17
18
|
export declare function isEnabled(client: CdpClient, sessionId: string, ref: ElementRef): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtG,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB5B;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAE5B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvG;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvG;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzG;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3G"}
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtG,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB5B;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAE5B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAS5B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvG;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvG;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzG;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3G"}
|
package/dist/src/browser/find.js
CHANGED
|
@@ -43,6 +43,18 @@ export async function findByText(client, sessionId, refs, text, options = {}) {
|
|
|
43
43
|
export async function findByLabel(client, sessionId, refs, label, options = {}) {
|
|
44
44
|
return findByText(client, sessionId, refs, label, options);
|
|
45
45
|
}
|
|
46
|
+
export async function findByPlaceholder(client, sessionId, refs, placeholder, options = {}) {
|
|
47
|
+
const lower = placeholder.toLowerCase();
|
|
48
|
+
const candidates = [...refs.values()].filter((r) => {
|
|
49
|
+
const desc = (r.description ?? '').toLowerCase();
|
|
50
|
+
return options.exact ? desc === lower : desc.includes(lower);
|
|
51
|
+
});
|
|
52
|
+
if (options.nth !== undefined)
|
|
53
|
+
return candidates[options.nth - 1] ?? null;
|
|
54
|
+
if (options.last)
|
|
55
|
+
return candidates[candidates.length - 1];
|
|
56
|
+
return candidates[0] ?? null;
|
|
57
|
+
}
|
|
46
58
|
export async function findByTestId(client, sessionId, testId) {
|
|
47
59
|
const selectors = [
|
|
48
60
|
`[data-testid="${testId}"]`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
interface HarRequest {
|
|
3
|
+
id: string;
|
|
4
|
+
url: string;
|
|
5
|
+
method: string;
|
|
6
|
+
status: number;
|
|
7
|
+
statusText: string;
|
|
8
|
+
mimeType: string;
|
|
9
|
+
requestHeaders: Record<string, string>;
|
|
10
|
+
responseHeaders: Record<string, string>;
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime: number;
|
|
13
|
+
size: number;
|
|
14
|
+
encodedSize: number;
|
|
15
|
+
fromCache: boolean;
|
|
16
|
+
responseBody?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function startHarRecording(client: CdpClient, sessionId: string): Promise<void>;
|
|
19
|
+
export declare function stopHarRecording(client: CdpClient, sessionId: string, outputPath?: string, captureResponseBodies?: boolean): Promise<string>;
|
|
20
|
+
export declare function getHarStatus(sessionId: string): {
|
|
21
|
+
recording: boolean;
|
|
22
|
+
requestCount: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function getRequests(sessionId: string): Partial<HarRequest>[];
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=har.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"har.d.ts","sourceRoot":"","sources":["../../../src/browser/har.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C3F;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,qBAAqB,UAAQ,GAC5B,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAG5F;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAGpE"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
const _sessions = new Map();
|
|
5
|
+
export async function startHarRecording(client, sessionId) {
|
|
6
|
+
if (_sessions.has(sessionId))
|
|
7
|
+
throw new Error('HAR recording already in progress');
|
|
8
|
+
const requests = new Map();
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
const offReq = client.on('Network.requestWillBeSent', (params, sid) => {
|
|
11
|
+
if (sid !== sessionId)
|
|
12
|
+
return;
|
|
13
|
+
const p = params;
|
|
14
|
+
requests.set(p.requestId, {
|
|
15
|
+
id: p.requestId,
|
|
16
|
+
url: p.request.url,
|
|
17
|
+
method: p.request.method,
|
|
18
|
+
requestHeaders: p.request.headers,
|
|
19
|
+
startTime: p.timestamp * 1000,
|
|
20
|
+
fromCache: false,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
const offResp = client.on('Network.responseReceived', (params, sid) => {
|
|
24
|
+
if (sid !== sessionId)
|
|
25
|
+
return;
|
|
26
|
+
const p = params;
|
|
27
|
+
const entry = requests.get(p.requestId);
|
|
28
|
+
if (entry) {
|
|
29
|
+
entry.status = p.response.status;
|
|
30
|
+
entry.statusText = p.response.statusText;
|
|
31
|
+
entry.mimeType = p.response.mimeType;
|
|
32
|
+
entry.responseHeaders = p.response.headers;
|
|
33
|
+
entry.fromCache = p.response.fromDiskCache || p.response.fromServiceWorker;
|
|
34
|
+
entry.endTime = p.timestamp * 1000;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const offFinished = client.on('Network.loadingFinished', (params, sid) => {
|
|
38
|
+
if (sid !== sessionId)
|
|
39
|
+
return;
|
|
40
|
+
const p = params;
|
|
41
|
+
const entry = requests.get(p.requestId);
|
|
42
|
+
if (entry) {
|
|
43
|
+
entry.encodedSize = p.encodedDataLength;
|
|
44
|
+
entry.endTime = p.timestamp * 1000;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
_sessions.set(sessionId, { requests, offReq, offResp, offFinished, startTime });
|
|
48
|
+
}
|
|
49
|
+
export async function stopHarRecording(client, sessionId, outputPath, captureResponseBodies = false) {
|
|
50
|
+
const state = _sessions.get(sessionId);
|
|
51
|
+
if (!state)
|
|
52
|
+
throw new Error('No active HAR recording for this session');
|
|
53
|
+
state.offReq();
|
|
54
|
+
state.offResp();
|
|
55
|
+
state.offFinished();
|
|
56
|
+
// Optionally fetch response bodies
|
|
57
|
+
if (captureResponseBodies) {
|
|
58
|
+
for (const [reqId, entry] of state.requests.entries()) {
|
|
59
|
+
try {
|
|
60
|
+
const body = await client.send('Network.getResponseBody', { requestId: reqId }, sessionId);
|
|
61
|
+
entry.responseBody = body.base64Encoded
|
|
62
|
+
? Buffer.from(body.body, 'base64').toString('utf8')
|
|
63
|
+
: body.body;
|
|
64
|
+
entry.size = entry.responseBody.length;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// body may not be available for cached/redirected responses
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
_sessions.delete(sessionId);
|
|
72
|
+
const har = buildHar(Array.from(state.requests.values()), state.startTime);
|
|
73
|
+
const path = outputPath ?? join(tmpdir(), `monomind-har-${Date.now()}.har`);
|
|
74
|
+
await writeFile(path, JSON.stringify(har, null, 2));
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
77
|
+
export function getHarStatus(sessionId) {
|
|
78
|
+
const state = _sessions.get(sessionId);
|
|
79
|
+
return { recording: !!state, requestCount: state?.requests.size ?? 0 };
|
|
80
|
+
}
|
|
81
|
+
export function getRequests(sessionId) {
|
|
82
|
+
const state = _sessions.get(sessionId);
|
|
83
|
+
return state ? Array.from(state.requests.values()) : [];
|
|
84
|
+
}
|
|
85
|
+
function buildHar(entries, startTime) {
|
|
86
|
+
return {
|
|
87
|
+
log: {
|
|
88
|
+
version: '1.2',
|
|
89
|
+
creator: { name: 'monomind browse', version: '1.0.0' },
|
|
90
|
+
pages: [{
|
|
91
|
+
startedDateTime: new Date(startTime).toISOString(),
|
|
92
|
+
id: 'page_1',
|
|
93
|
+
title: '',
|
|
94
|
+
pageTimings: {},
|
|
95
|
+
}],
|
|
96
|
+
entries: entries.map((e) => ({
|
|
97
|
+
startedDateTime: new Date(e.startTime ?? startTime).toISOString(),
|
|
98
|
+
time: (e.endTime ?? e.startTime ?? startTime) - (e.startTime ?? startTime),
|
|
99
|
+
request: {
|
|
100
|
+
method: e.method ?? 'GET',
|
|
101
|
+
url: e.url ?? '',
|
|
102
|
+
httpVersion: 'HTTP/1.1',
|
|
103
|
+
cookies: [],
|
|
104
|
+
headers: Object.entries(e.requestHeaders ?? {}).map(([name, value]) => ({ name, value })),
|
|
105
|
+
queryString: [],
|
|
106
|
+
headersSize: -1,
|
|
107
|
+
bodySize: -1,
|
|
108
|
+
},
|
|
109
|
+
response: {
|
|
110
|
+
status: e.status ?? 0,
|
|
111
|
+
statusText: e.statusText ?? '',
|
|
112
|
+
httpVersion: 'HTTP/1.1',
|
|
113
|
+
cookies: [],
|
|
114
|
+
headers: Object.entries(e.responseHeaders ?? {}).map(([name, value]) => ({ name, value })),
|
|
115
|
+
content: {
|
|
116
|
+
size: e.size ?? -1,
|
|
117
|
+
mimeType: e.mimeType ?? 'application/octet-stream',
|
|
118
|
+
text: e.responseBody,
|
|
119
|
+
},
|
|
120
|
+
redirectURL: '',
|
|
121
|
+
headersSize: -1,
|
|
122
|
+
bodySize: e.encodedSize ?? -1,
|
|
123
|
+
},
|
|
124
|
+
cache: {},
|
|
125
|
+
timings: { send: 0, wait: 0, receive: 0 },
|
|
126
|
+
})),
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=har.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"har.js","sourceRoot":"","sources":["../../../src/browser/har.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,4 +15,9 @@ export * from './find.js';
|
|
|
15
15
|
export * from './pdf.js';
|
|
16
16
|
export * from './emulation.js';
|
|
17
17
|
export * from './batch.js';
|
|
18
|
+
export * from './record.js';
|
|
19
|
+
export * from './trace.js';
|
|
20
|
+
export * from './profiler.js';
|
|
21
|
+
export * from './vitals.js';
|
|
22
|
+
export * from './har.js';
|
|
18
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -15,4 +15,9 @@ export * from './find.js';
|
|
|
15
15
|
export * from './pdf.js';
|
|
16
16
|
export * from './emulation.js';
|
|
17
17
|
export * from './batch.js';
|
|
18
|
+
export * from './record.js';
|
|
19
|
+
export * from './trace.js';
|
|
20
|
+
export * from './profiler.js';
|
|
21
|
+
export * from './vitals.js';
|
|
22
|
+
export * from './har.js';
|
|
18
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -6,6 +6,21 @@ export declare function clearCookies(client: CdpClient, sessionId: string): Prom
|
|
|
6
6
|
export declare function setExtraHeaders(client: CdpClient, sessionId: string, headers: Record<string, string>): Promise<void>;
|
|
7
7
|
export declare function enableInterception(client: CdpClient, sessionId: string): Promise<void>;
|
|
8
8
|
export declare function setupRoutes(client: CdpClient, sessionId: string, routes: NetworkRoute[]): Promise<void>;
|
|
9
|
+
export declare function startRequestCapture(client: CdpClient, sessionId: string): void;
|
|
10
|
+
export declare function stopRequestCapture(sessionId: string): void;
|
|
11
|
+
export declare function getCapturedRequests(sessionId: string): {
|
|
12
|
+
url: string;
|
|
13
|
+
method: string;
|
|
14
|
+
status?: number;
|
|
15
|
+
mimeType?: string;
|
|
16
|
+
requestHeaders?: Record<string, string>;
|
|
17
|
+
responseHeaders?: Record<string, string>;
|
|
18
|
+
startTime: number;
|
|
19
|
+
endTime?: number;
|
|
20
|
+
encodedSize?: number;
|
|
21
|
+
}[];
|
|
22
|
+
export declare function clearCapturedRequests(sessionId: string): void;
|
|
23
|
+
export declare function disableInterception(client: CdpClient, sessionId: string): Promise<void>;
|
|
9
24
|
export declare function getLocalStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
10
25
|
export declare function setLocalStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
11
26
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAG3F;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1G;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU3G;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAG3F;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1G;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAUD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA0B9E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAG1D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM;SAxC9C,MAAM;YAAU,MAAM;aAAW,MAAM;eAAa,MAAM;qBAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;sBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;eACtE,MAAM;cAAY,MAAM;kBAAgB,MAAM;IAwC1D;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU3G;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -50,6 +50,60 @@ export async function setupRoutes(client, sessionId, routes) {
|
|
|
50
50
|
}
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
+
const _capturedRequests = new Map();
|
|
54
|
+
const _captureListeners = new Map();
|
|
55
|
+
export function startRequestCapture(client, sessionId) {
|
|
56
|
+
if (_capturedRequests.has(sessionId))
|
|
57
|
+
return;
|
|
58
|
+
const list = [];
|
|
59
|
+
_capturedRequests.set(sessionId, list);
|
|
60
|
+
const offReq = client.on('Network.requestWillBeSent', (params, sid) => {
|
|
61
|
+
if (sid !== sessionId)
|
|
62
|
+
return;
|
|
63
|
+
const p = params;
|
|
64
|
+
list.push({ url: p.request.url, method: p.request.method, requestHeaders: p.request.headers, startTime: p.timestamp * 1000 });
|
|
65
|
+
});
|
|
66
|
+
const offResp = client.on('Network.responseReceived', (params, sid) => {
|
|
67
|
+
if (sid !== sessionId)
|
|
68
|
+
return;
|
|
69
|
+
const p = params;
|
|
70
|
+
const entry = list.find((r) => r.url === p.response.url && !r.status);
|
|
71
|
+
if (entry) {
|
|
72
|
+
entry.status = p.response.status;
|
|
73
|
+
entry.mimeType = p.response.mimeType;
|
|
74
|
+
entry.responseHeaders = p.response.headers;
|
|
75
|
+
entry.endTime = p.timestamp * 1000;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
const offFinished = client.on('Network.loadingFinished', (params, sid) => {
|
|
79
|
+
if (sid !== sessionId)
|
|
80
|
+
return;
|
|
81
|
+
const p = params;
|
|
82
|
+
const entry = list[list.length - 1];
|
|
83
|
+
if (entry) {
|
|
84
|
+
entry.encodedSize = p.encodedDataLength;
|
|
85
|
+
entry.endTime = p.timestamp * 1000;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
_captureListeners.set(sessionId, [offReq, offResp, offFinished]);
|
|
89
|
+
}
|
|
90
|
+
export function stopRequestCapture(sessionId) {
|
|
91
|
+
const offs = _captureListeners.get(sessionId);
|
|
92
|
+
if (offs) {
|
|
93
|
+
for (const off of offs)
|
|
94
|
+
off();
|
|
95
|
+
_captureListeners.delete(sessionId);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export function getCapturedRequests(sessionId) {
|
|
99
|
+
return _capturedRequests.get(sessionId) ?? [];
|
|
100
|
+
}
|
|
101
|
+
export function clearCapturedRequests(sessionId) {
|
|
102
|
+
_capturedRequests.set(sessionId, []);
|
|
103
|
+
}
|
|
104
|
+
export async function disableInterception(client, sessionId) {
|
|
105
|
+
await client.send('Fetch.disable', {}, sessionId);
|
|
106
|
+
}
|
|
53
107
|
export async function getLocalStorage(client, sessionId) {
|
|
54
108
|
const result = await client.send('Runtime.evaluate', {
|
|
55
109
|
expression: 'JSON.stringify(Object.fromEntries(Object.entries(localStorage)))',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface ProfilerOptions {
|
|
3
|
+
path?: string;
|
|
4
|
+
samplingInterval?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function startCpuProfile(client: CdpClient, sessionId: string, options?: ProfilerOptions): Promise<void>;
|
|
7
|
+
export declare function stopCpuProfile(client: CdpClient, sessionId: string, outputPath?: string): Promise<string>;
|
|
8
|
+
export declare function isProfilingActive(sessionId: string): boolean;
|
|
9
|
+
export declare function startHeapSnapshot(client: CdpClient, sessionId: string, outputPath?: string): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../../src/browser/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
const _sessions = new Set();
|
|
5
|
+
export async function startCpuProfile(client, sessionId, options = {}) {
|
|
6
|
+
if (_sessions.has(sessionId)) {
|
|
7
|
+
throw new Error('CPU profiler already running for this session');
|
|
8
|
+
}
|
|
9
|
+
await client.send('Profiler.enable', {}, sessionId);
|
|
10
|
+
if (options.samplingInterval !== undefined) {
|
|
11
|
+
await client.send('Profiler.setSamplingInterval', { interval: options.samplingInterval }, sessionId);
|
|
12
|
+
}
|
|
13
|
+
await client.send('Profiler.start', {}, sessionId);
|
|
14
|
+
_sessions.add(sessionId);
|
|
15
|
+
}
|
|
16
|
+
export async function stopCpuProfile(client, sessionId, outputPath) {
|
|
17
|
+
if (!_sessions.has(sessionId)) {
|
|
18
|
+
throw new Error('No active CPU profiler for this session');
|
|
19
|
+
}
|
|
20
|
+
const result = await client.send('Profiler.stop', {}, sessionId);
|
|
21
|
+
await client.send('Profiler.disable', {}, sessionId);
|
|
22
|
+
_sessions.delete(sessionId);
|
|
23
|
+
const path = outputPath ?? join(tmpdir(), `monomind-profile-${Date.now()}.cpuprofile`);
|
|
24
|
+
await writeFile(path, JSON.stringify(result.profile));
|
|
25
|
+
return path;
|
|
26
|
+
}
|
|
27
|
+
export function isProfilingActive(sessionId) {
|
|
28
|
+
return _sessions.has(sessionId);
|
|
29
|
+
}
|
|
30
|
+
export async function startHeapSnapshot(client, sessionId, outputPath) {
|
|
31
|
+
await client.send('HeapProfiler.enable', {}, sessionId);
|
|
32
|
+
const chunks = [];
|
|
33
|
+
const off = client.on('HeapProfiler.addHeapSnapshotChunk', (params, sid) => {
|
|
34
|
+
if (sid !== sessionId)
|
|
35
|
+
return;
|
|
36
|
+
chunks.push(params.chunk);
|
|
37
|
+
});
|
|
38
|
+
await new Promise((resolve) => {
|
|
39
|
+
const off2 = client.on('HeapProfiler.reportHeapSnapshotProgress', (params, sid) => {
|
|
40
|
+
if (sid !== sessionId)
|
|
41
|
+
return;
|
|
42
|
+
if (params.finished) {
|
|
43
|
+
off2();
|
|
44
|
+
resolve();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
client.send('HeapProfiler.takeHeapSnapshot', { reportProgress: true }, sessionId).catch(() => { });
|
|
48
|
+
});
|
|
49
|
+
off();
|
|
50
|
+
await client.send('HeapProfiler.disable', {}, sessionId);
|
|
51
|
+
const path = outputPath ?? join(tmpdir(), `monomind-heap-${Date.now()}.heapsnapshot`);
|
|
52
|
+
await writeFile(path, chunks.join(''));
|
|
53
|
+
return path;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=profiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../../src/browser/profiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAO5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAiB,EACjB,SAAiB,EACjB,UAA2B,EAAE;IAE7B,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,SAAiB,EACjB,UAAmB;IAEnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAuB,eAAe,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACvF,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACvF,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,SAAiB,EACjB,UAAmB;IAEnB,MAAM,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAExD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACzE,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,yCAAyC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAChF,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO;YAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAAC,IAAI,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,GAAG,EAAE,CAAC;IACN,MAAM,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACtF,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface RecordOptions {
|
|
3
|
+
path?: string;
|
|
4
|
+
format?: 'jpeg' | 'png' | 'webp';
|
|
5
|
+
quality?: number;
|
|
6
|
+
everyNthFrame?: number;
|
|
7
|
+
maxWidth?: number;
|
|
8
|
+
maxHeight?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface RecordingState {
|
|
11
|
+
frames: string[];
|
|
12
|
+
offScreencast: (() => void) | null;
|
|
13
|
+
}
|
|
14
|
+
export declare function startRecording(client: CdpClient, sessionId: string, options?: RecordOptions): Promise<void>;
|
|
15
|
+
export declare function stopRecording(client: CdpClient, sessionId: string, outputPath?: string): Promise<string>;
|
|
16
|
+
export declare function getRecordingStatus(sessionId: string): {
|
|
17
|
+
recording: boolean;
|
|
18
|
+
frames: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function saveFrameAsPng(client: CdpClient, sessionId: string, frameIndex: number, outputPath: string): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/browser/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAID,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAG5F;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
const _sessions = new Map();
|
|
5
|
+
export async function startRecording(client, sessionId, options = {}) {
|
|
6
|
+
if (_sessions.has(sessionId)) {
|
|
7
|
+
throw new Error('Recording already in progress for this session');
|
|
8
|
+
}
|
|
9
|
+
const state = { frames: [], offScreencast: null };
|
|
10
|
+
_sessions.set(sessionId, state);
|
|
11
|
+
state.offScreencast = client.on('Page.screencastFrame', async (params, sid) => {
|
|
12
|
+
if (sid !== sessionId)
|
|
13
|
+
return;
|
|
14
|
+
const { data, sessionId: frameSessionId } = params;
|
|
15
|
+
state.frames.push(data);
|
|
16
|
+
await client.send('Page.screencastFrameAck', { sessionId: frameSessionId }, sessionId).catch(() => { });
|
|
17
|
+
});
|
|
18
|
+
await client.send('Page.startScreencast', {
|
|
19
|
+
format: options.format ?? 'jpeg',
|
|
20
|
+
quality: options.quality ?? 80,
|
|
21
|
+
everyNthFrame: options.everyNthFrame ?? 1,
|
|
22
|
+
...(options.maxWidth ? { maxWidth: options.maxWidth } : {}),
|
|
23
|
+
...(options.maxHeight ? { maxHeight: options.maxHeight } : {}),
|
|
24
|
+
}, sessionId);
|
|
25
|
+
}
|
|
26
|
+
export async function stopRecording(client, sessionId, outputPath) {
|
|
27
|
+
const state = _sessions.get(sessionId);
|
|
28
|
+
if (!state)
|
|
29
|
+
throw new Error('No active recording for this session');
|
|
30
|
+
await client.send('Page.stopScreencast', {}, sessionId);
|
|
31
|
+
state.offScreencast?.();
|
|
32
|
+
_sessions.delete(sessionId);
|
|
33
|
+
const path = outputPath ?? join(tmpdir(), `monomind-screencast-${Date.now()}.frames.json`);
|
|
34
|
+
await writeFile(path, JSON.stringify({ frameCount: state.frames.length, frames: state.frames }));
|
|
35
|
+
return path;
|
|
36
|
+
}
|
|
37
|
+
export function getRecordingStatus(sessionId) {
|
|
38
|
+
const state = _sessions.get(sessionId);
|
|
39
|
+
return { recording: !!state, frames: state?.frames.length ?? 0 };
|
|
40
|
+
}
|
|
41
|
+
export async function saveFrameAsPng(client, sessionId, frameIndex, outputPath) {
|
|
42
|
+
const state = _sessions.get(sessionId);
|
|
43
|
+
if (!state || frameIndex >= state.frames.length) {
|
|
44
|
+
throw new Error(`Frame ${frameIndex} not available`);
|
|
45
|
+
}
|
|
46
|
+
await writeFile(outputPath, Buffer.from(state.frames[frameIndex], 'base64'));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/browser/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/browser/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB9E,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/browser/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB9E,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAuHzB;AA2CD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAwBzE"}
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import { INTERACTIVE_ROLES } from './types.js';
|
|
2
2
|
import { getCurrentUrl, getCurrentTitle } from './browser.js';
|
|
3
3
|
export async function captureSnapshot(client, sessionId, options = {}) {
|
|
4
|
-
const { interactiveOnly = false, compact = false } = options;
|
|
5
|
-
|
|
4
|
+
const { interactiveOnly = false, compact = false, maxDepth, selector } = options;
|
|
5
|
+
// If a selector scope is requested, resolve it to a backendDOMNodeId and use getPartialAXTree
|
|
6
|
+
let nodes;
|
|
7
|
+
if (selector) {
|
|
8
|
+
const nodeResult = await client.send('Runtime.evaluate', { expression: `document.querySelector(${JSON.stringify(selector)})?.getAttribute('data-ax-node-id') ?? null`, returnByValue: true }, sessionId);
|
|
9
|
+
// Use DOM.querySelector to find the backend node
|
|
10
|
+
const doc = await client.send('DOM.getDocument', {}, sessionId);
|
|
11
|
+
const found = await client.send('DOM.querySelector', { nodeId: doc.root.nodeId, selector }, sessionId).catch(() => ({ nodeId: 0 }));
|
|
12
|
+
if (found.nodeId) {
|
|
13
|
+
const partial = await client.send('Accessibility.getPartialAXTree', { nodeId: found.nodeId, fetchRelatives: true }, sessionId).catch(async () => client.send('Accessibility.getFullAXTree', {}, sessionId));
|
|
14
|
+
nodes = partial.nodes;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const full = await client.send('Accessibility.getFullAXTree', {}, sessionId);
|
|
18
|
+
nodes = full.nodes;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const full = await client.send('Accessibility.getFullAXTree', {}, sessionId);
|
|
23
|
+
nodes = full.nodes;
|
|
24
|
+
}
|
|
6
25
|
const url = await getCurrentUrl(client, sessionId);
|
|
7
26
|
const title = await getCurrentTitle(client, sessionId);
|
|
8
27
|
const refs = new Map();
|
|
@@ -14,6 +33,8 @@ export async function captureSnapshot(client, sessionId, options = {}) {
|
|
|
14
33
|
const processNode = (node, depth) => {
|
|
15
34
|
if (node.ignored)
|
|
16
35
|
return;
|
|
36
|
+
if (maxDepth !== undefined && depth > maxDepth)
|
|
37
|
+
return;
|
|
17
38
|
const role = node.role?.value ?? 'generic';
|
|
18
39
|
const name = node.name?.value ?? '';
|
|
19
40
|
const description = node.description?.value;
|