@monoes/monomindcli 1.10.36 → 1.10.38
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/.claude/helpers/utils/telemetry.cjs +1 -0
- package/dist/src/browser/actions.d.ts +1 -0
- package/dist/src/browser/actions.d.ts.map +1 -1
- package/dist/src/browser/actions.js +12 -5
- package/dist/src/browser/actions.js.map +1 -1
- package/dist/src/browser/batch.d.ts +0 -6
- package/dist/src/browser/batch.d.ts.map +1 -1
- package/dist/src/browser/batch.js.map +1 -1
- package/dist/src/browser/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +37 -20
- package/dist/src/browser/browser.js.map +1 -1
- package/dist/src/browser/cdp.d.ts +1 -0
- package/dist/src/browser/cdp.d.ts.map +1 -1
- package/dist/src/browser/cdp.js +14 -4
- package/dist/src/browser/cdp.js.map +1 -1
- package/dist/src/browser/console-log.d.ts +4 -4
- package/dist/src/browser/console-log.d.ts.map +1 -1
- package/dist/src/browser/console-log.js +49 -16
- package/dist/src/browser/console-log.js.map +1 -1
- package/dist/src/browser/dialog.d.ts +2 -1
- package/dist/src/browser/dialog.d.ts.map +1 -1
- package/dist/src/browser/dialog.js +24 -10
- package/dist/src/browser/dialog.js.map +1 -1
- package/dist/src/browser/find.d.ts +1 -1
- package/dist/src/browser/find.d.ts.map +1 -1
- package/dist/src/browser/find.js +31 -12
- package/dist/src/browser/find.js.map +1 -1
- package/dist/src/browser/har.d.ts.map +1 -1
- package/dist/src/browser/har.js +13 -6
- package/dist/src/browser/har.js.map +1 -1
- package/dist/src/browser/network.d.ts +3 -0
- package/dist/src/browser/network.d.ts.map +1 -1
- package/dist/src/browser/network.js +69 -27
- package/dist/src/browser/network.js.map +1 -1
- package/dist/src/browser/profiler.d.ts.map +1 -1
- package/dist/src/browser/profiler.js +25 -14
- package/dist/src/browser/profiler.js.map +1 -1
- package/dist/src/browser/record.d.ts.map +1 -1
- package/dist/src/browser/record.js +21 -10
- package/dist/src/browser/record.js.map +1 -1
- package/dist/src/browser/session.d.ts.map +1 -1
- package/dist/src/browser/session.js +11 -7
- package/dist/src/browser/session.js.map +1 -1
- package/dist/src/browser/snapshot.d.ts.map +1 -1
- package/dist/src/browser/snapshot.js +1 -2
- package/dist/src/browser/snapshot.js.map +1 -1
- package/dist/src/browser/trace.d.ts.map +1 -1
- package/dist/src/browser/trace.js +34 -25
- package/dist/src/browser/trace.js.map +1 -1
- 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.js +4 -4
- package/dist/src/browser/wait.js +28 -14
- package/dist/src/browser/wait.js.map +1 -1
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +8 -14
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/ui/dashboard-v2.html +534 -1
- package/dist/src/ui/server.mjs +194 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ export interface FindOptions {
|
|
|
8
8
|
first?: boolean;
|
|
9
9
|
last?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare function findBySelector(client: CdpClient, sessionId: string, selector: string, options?: FindOptions): Promise<
|
|
11
|
+
export declare function findBySelector(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, selector: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
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>;
|
|
@@ -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,
|
|
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,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAoC5B;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
|
@@ -1,17 +1,36 @@
|
|
|
1
1
|
import { evaluateJs } from './actions.js';
|
|
2
2
|
import { getObjectIdForRef } from './snapshot.js';
|
|
3
|
-
export async function findBySelector(client, sessionId, selector, options = {}) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export async function findBySelector(client, sessionId, refs, selector, options = {}) {
|
|
4
|
+
try {
|
|
5
|
+
const doc = await client.send('DOM.getDocument', {}, sessionId);
|
|
6
|
+
let targetNodeId;
|
|
7
|
+
if (options.nth !== undefined || options.last) {
|
|
8
|
+
const result = await client.send('DOM.querySelectorAll', { nodeId: doc.root.nodeId, selector }, sessionId);
|
|
9
|
+
const nodeIds = result.nodeIds ?? [];
|
|
10
|
+
if (nodeIds.length === 0)
|
|
11
|
+
return null;
|
|
12
|
+
targetNodeId = options.last ? nodeIds[nodeIds.length - 1] : (nodeIds[(options.nth ?? 1) - 1] ?? 0);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const result = await client.send('DOM.querySelector', { nodeId: doc.root.nodeId, selector }, sessionId);
|
|
16
|
+
targetNodeId = result.nodeId ?? 0;
|
|
17
|
+
}
|
|
18
|
+
if (!targetNodeId)
|
|
19
|
+
return null;
|
|
20
|
+
const desc = await client.send('DOM.describeNode', { nodeId: targetNodeId }, sessionId);
|
|
21
|
+
const backendDOMNodeId = desc.node?.backendNodeId;
|
|
22
|
+
if (!backendDOMNodeId)
|
|
23
|
+
return null;
|
|
24
|
+
// Return existing ref from snapshot if this node is already indexed
|
|
25
|
+
const existing = [...refs.values()].find((r) => r.backendDOMNodeId === backendDOMNodeId);
|
|
26
|
+
if (existing)
|
|
27
|
+
return existing;
|
|
28
|
+
// Synthetic ref for elements not represented in the AX tree
|
|
29
|
+
return { ref: `sel-${backendDOMNodeId}`, role: 'generic', name: selector, nodeId: targetNodeId, backendDOMNodeId };
|
|
7
30
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
expr = `document.querySelector(${JSON.stringify(selector)})?.outerHTML ?? null`;
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
13
33
|
}
|
|
14
|
-
return evaluateJs(client, sessionId, expr);
|
|
15
34
|
}
|
|
16
35
|
export async function findByRole(client, sessionId, refs, role, options = {}) {
|
|
17
36
|
const lowerRole = role.toLowerCase();
|
|
@@ -46,8 +65,8 @@ export async function findByLabel(client, sessionId, refs, label, options = {})
|
|
|
46
65
|
export async function findByPlaceholder(client, sessionId, refs, placeholder, options = {}) {
|
|
47
66
|
const lower = placeholder.toLowerCase();
|
|
48
67
|
const candidates = [...refs.values()].filter((r) => {
|
|
49
|
-
const
|
|
50
|
-
return options.exact ?
|
|
68
|
+
const ph = (r.placeholder ?? '').toLowerCase();
|
|
69
|
+
return options.exact ? ph === lower : ph.includes(lower);
|
|
51
70
|
});
|
|
52
71
|
if (options.nth !== undefined)
|
|
53
72
|
return candidates[options.nth - 1] ?? null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAYlD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,UAAuB,EAAE;IAEzB,IAAI,
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAWD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3F;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"}
|
package/dist/src/browser/har.js
CHANGED
|
@@ -7,6 +7,13 @@ export async function startHarRecording(client, sessionId) {
|
|
|
7
7
|
throw new Error('HAR recording already in progress');
|
|
8
8
|
const requests = new Map();
|
|
9
9
|
const startTime = Date.now();
|
|
10
|
+
const startWallMs = startTime;
|
|
11
|
+
let refCdpTs = 0;
|
|
12
|
+
const cdpToWall = (cdpTs) => {
|
|
13
|
+
if (refCdpTs === 0)
|
|
14
|
+
refCdpTs = cdpTs;
|
|
15
|
+
return startWallMs + (cdpTs - refCdpTs) * 1000;
|
|
16
|
+
};
|
|
10
17
|
const offReq = client.on('Network.requestWillBeSent', (params, sid) => {
|
|
11
18
|
if (sid !== sessionId)
|
|
12
19
|
return;
|
|
@@ -16,7 +23,7 @@ export async function startHarRecording(client, sessionId) {
|
|
|
16
23
|
url: p.request.url,
|
|
17
24
|
method: p.request.method,
|
|
18
25
|
requestHeaders: p.request.headers,
|
|
19
|
-
startTime: p.timestamp
|
|
26
|
+
startTime: cdpToWall(p.timestamp),
|
|
20
27
|
fromCache: false,
|
|
21
28
|
});
|
|
22
29
|
});
|
|
@@ -31,7 +38,7 @@ export async function startHarRecording(client, sessionId) {
|
|
|
31
38
|
entry.mimeType = p.response.mimeType;
|
|
32
39
|
entry.responseHeaders = p.response.headers;
|
|
33
40
|
entry.fromCache = p.response.fromDiskCache || p.response.fromServiceWorker;
|
|
34
|
-
entry.endTime = p.timestamp
|
|
41
|
+
entry.endTime = cdpToWall(p.timestamp);
|
|
35
42
|
}
|
|
36
43
|
});
|
|
37
44
|
const offFinished = client.on('Network.loadingFinished', (params, sid) => {
|
|
@@ -41,10 +48,10 @@ export async function startHarRecording(client, sessionId) {
|
|
|
41
48
|
const entry = requests.get(p.requestId);
|
|
42
49
|
if (entry) {
|
|
43
50
|
entry.encodedSize = p.encodedDataLength;
|
|
44
|
-
entry.endTime = p.timestamp
|
|
51
|
+
entry.endTime = cdpToWall(p.timestamp);
|
|
45
52
|
}
|
|
46
53
|
});
|
|
47
|
-
_sessions.set(sessionId, { requests, offReq, offResp, offFinished, startTime });
|
|
54
|
+
_sessions.set(sessionId, { requests, offReq, offResp, offFinished, startTime, startWallMs });
|
|
48
55
|
}
|
|
49
56
|
export async function stopHarRecording(client, sessionId, outputPath, captureResponseBodies = false) {
|
|
50
57
|
const state = _sessions.get(sessionId);
|
|
@@ -61,14 +68,14 @@ export async function stopHarRecording(client, sessionId, outputPath, captureRes
|
|
|
61
68
|
entry.responseBody = body.base64Encoded
|
|
62
69
|
? Buffer.from(body.body, 'base64').toString('utf8')
|
|
63
70
|
: body.body;
|
|
64
|
-
entry.size = entry.responseBody
|
|
71
|
+
entry.size = entry.responseBody?.length ?? 0;
|
|
65
72
|
}
|
|
66
73
|
catch {
|
|
67
74
|
// body may not be available for cached/redirected responses
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
77
|
}
|
|
71
|
-
_sessions.delete(sessionId);
|
|
78
|
+
_sessions.delete(sessionId); // always runs — response body loop errors are caught per-entry
|
|
72
79
|
const har = buildHar(Array.from(state.requests.values()), state.startTime);
|
|
73
80
|
const path = outputPath ?? join(tmpdir(), `monomind-har-${Date.now()}.har`);
|
|
74
81
|
await writeFile(path, JSON.stringify(har, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"har.js","sourceRoot":"","sources":["../../../src/browser/har.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;AAmB5B,MAAM,SAAS,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"har.js","sourceRoot":"","sources":["../../../src/browser/har.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;AAmB5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAOrB,CAAC;AAEL,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAAiB;IAC1E,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,SAAS,CAAC;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;QAClC,IAAI,QAAQ,KAAK,CAAC;YAAE,QAAQ,GAAG,KAAK,CAAC;QACrC,OAAO,WAAW,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACpE,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,CAAC,GAAG,MAA6H,CAAC;QACxI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;YACxB,EAAE,EAAE,CAAC,CAAC,SAAS;YACf,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG;YAClB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YACxB,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;YACjC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACjC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACpE,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,CAAC,GAAG,MAAwN,CAAC;QACnO,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3E,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvE,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,CAAC,GAAG,MAA6E,CAAC;QACxF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,iBAAiB,CAAC;YACxC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAiB,EACjB,SAAiB,EACjB,UAAmB,EACnB,qBAAqB,GAAG,KAAK;IAE7B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAExE,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,KAAK,CAAC,WAAW,EAAE,CAAC;IAEpB,mCAAmC;IACnC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC5B,yBAAyB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,CAC3D,CAAC;gBACF,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;oBACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACnD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACd,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,+DAA+D;IAE5F,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,OAA8B,EAAE,SAAiB;IACjE,OAAO;QACL,GAAG,EAAE;YACH,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;YACtD,KAAK,EAAE,CAAC;oBACN,eAAe,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBAClD,EAAE,EAAE,QAAQ;oBACZ,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,EAAE;iBAChB,CAAC;YACF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,eAAe,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,WAAW,EAAE;gBACjE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC;gBAC1E,OAAO,EAAE;oBACP,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK;oBACzB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;oBAChB,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACzF,WAAW,EAAE,EAAE;oBACf,WAAW,EAAE,CAAC,CAAC;oBACf,QAAQ,EAAE,CAAC,CAAC;iBACb;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC;oBACrB,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;oBAC9B,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC1F,OAAO,EAAE;wBACP,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;wBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,0BAA0B;wBAClD,IAAI,EAAE,CAAC,CAAC,YAAY;qBACrB;oBACD,WAAW,EAAE,EAAE;oBACf,WAAW,EAAE,CAAC,CAAC;oBACf,QAAQ,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;iBAC9B;gBACD,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;aAC1C,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,7 @@ export declare function setupRoutes(client: CdpClient, sessionId: string, routes
|
|
|
9
9
|
export declare function startRequestCapture(client: CdpClient, sessionId: string): void;
|
|
10
10
|
export declare function stopRequestCapture(sessionId: string): void;
|
|
11
11
|
export declare function getCapturedRequests(sessionId: string): {
|
|
12
|
+
id: string;
|
|
12
13
|
url: string;
|
|
13
14
|
method: string;
|
|
14
15
|
status?: number;
|
|
@@ -23,4 +24,6 @@ export declare function clearCapturedRequests(sessionId: string): void;
|
|
|
23
24
|
export declare function disableInterception(client: CdpClient, sessionId: string): Promise<void>;
|
|
24
25
|
export declare function getLocalStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
25
26
|
export declare function setLocalStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
27
|
+
export declare function getSessionStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
28
|
+
export declare function setSessionStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
26
29
|
//# 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;
|
|
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;AAID,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAUD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA0B9E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM;QAzC/C,MAAM;SAAO,MAAM;YAAU,MAAM;aAAW,MAAM;eAAa,MAAM;qBAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;sBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;eACtE,MAAM;cAAY,MAAM;kBAAgB,MAAM;IAyC1D;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,CAI7F;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;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU7G;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -16,44 +16,60 @@ export async function enableInterception(client, sessionId) {
|
|
|
16
16
|
patterns: [{ requestStage: 'Request' }],
|
|
17
17
|
}, sessionId);
|
|
18
18
|
}
|
|
19
|
+
const _routeListeners = new Map();
|
|
19
20
|
export async function setupRoutes(client, sessionId, routes) {
|
|
20
|
-
|
|
21
|
+
// Remove previous route listener for this session before registering a new one
|
|
22
|
+
const prevOff = _routeListeners.get(sessionId);
|
|
23
|
+
if (prevOff) {
|
|
24
|
+
prevOff();
|
|
25
|
+
_routeListeners.delete(sessionId);
|
|
26
|
+
}
|
|
27
|
+
if (routes.length === 0) {
|
|
28
|
+
await client.send('Fetch.disable', {}, sessionId);
|
|
21
29
|
return;
|
|
30
|
+
}
|
|
22
31
|
await client.send('Fetch.enable', {
|
|
23
32
|
patterns: routes.map((r) => ({ urlPattern: globToFetchPattern(r.pattern), requestStage: 'Request' })),
|
|
24
33
|
}, sessionId);
|
|
25
|
-
client.on('Fetch.requestPaused', async (params, sid) => {
|
|
34
|
+
const off = client.on('Fetch.requestPaused', async (params, sid) => {
|
|
26
35
|
if (sid !== sessionId)
|
|
27
36
|
return;
|
|
28
37
|
const { requestId, request } = params;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
switch (matchedRoute.action) {
|
|
35
|
-
case 'abort':
|
|
36
|
-
await client.send('Fetch.failRequest', { requestId, errorReason: 'Failed' }, sessionId);
|
|
37
|
-
break;
|
|
38
|
-
case 'fulfill':
|
|
39
|
-
await client.send('Fetch.fulfillRequest', {
|
|
40
|
-
requestId,
|
|
41
|
-
responseCode: matchedRoute.response?.status ?? 200,
|
|
42
|
-
responseHeaders: Object.entries(matchedRoute.response?.headers ?? {}).map(([name, value]) => ({ name, value })),
|
|
43
|
-
body: matchedRoute.response?.body ? Buffer.from(matchedRoute.response.body).toString('base64') : '',
|
|
44
|
-
}, sessionId);
|
|
45
|
-
break;
|
|
46
|
-
case 'continue':
|
|
47
|
-
default:
|
|
38
|
+
try {
|
|
39
|
+
const matchedRoute = routes.find((r) => globToRegex(r.pattern).test(request.url));
|
|
40
|
+
if (!matchedRoute) {
|
|
48
41
|
await client.send('Fetch.continueRequest', { requestId }, sessionId);
|
|
49
|
-
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
switch (matchedRoute.action) {
|
|
45
|
+
case 'abort':
|
|
46
|
+
await client.send('Fetch.failRequest', { requestId, errorReason: 'Failed' }, sessionId);
|
|
47
|
+
break;
|
|
48
|
+
case 'fulfill':
|
|
49
|
+
await client.send('Fetch.fulfillRequest', {
|
|
50
|
+
requestId,
|
|
51
|
+
responseCode: matchedRoute.response?.status ?? 200,
|
|
52
|
+
responseHeaders: Object.entries(matchedRoute.response?.headers ?? {}).map(([name, value]) => ({ name, value })),
|
|
53
|
+
body: matchedRoute.response?.body ? Buffer.from(matchedRoute.response.body).toString('base64') : '',
|
|
54
|
+
}, sessionId);
|
|
55
|
+
break;
|
|
56
|
+
case 'continue':
|
|
57
|
+
default:
|
|
58
|
+
await client.send('Fetch.continueRequest', { requestId }, sessionId);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Best-effort: resume the request so it doesn't hang in Chrome
|
|
64
|
+
await client.send('Fetch.continueRequest', { requestId }, sessionId).catch(() => { });
|
|
50
65
|
}
|
|
51
66
|
});
|
|
67
|
+
_routeListeners.set(sessionId, off);
|
|
52
68
|
}
|
|
53
69
|
const _capturedRequests = new Map();
|
|
54
70
|
const _captureListeners = new Map();
|
|
55
71
|
export function startRequestCapture(client, sessionId) {
|
|
56
|
-
if (
|
|
72
|
+
if (_captureListeners.has(sessionId))
|
|
57
73
|
return;
|
|
58
74
|
const list = [];
|
|
59
75
|
_capturedRequests.set(sessionId, list);
|
|
@@ -61,13 +77,13 @@ export function startRequestCapture(client, sessionId) {
|
|
|
61
77
|
if (sid !== sessionId)
|
|
62
78
|
return;
|
|
63
79
|
const p = params;
|
|
64
|
-
list.push({ url: p.request.url, method: p.request.method, requestHeaders: p.request.headers, startTime: p.timestamp * 1000 });
|
|
80
|
+
list.push({ id: p.requestId, url: p.request.url, method: p.request.method, requestHeaders: p.request.headers, startTime: p.timestamp * 1000 });
|
|
65
81
|
});
|
|
66
82
|
const offResp = client.on('Network.responseReceived', (params, sid) => {
|
|
67
83
|
if (sid !== sessionId)
|
|
68
84
|
return;
|
|
69
85
|
const p = params;
|
|
70
|
-
const entry = list.find((r) => r.
|
|
86
|
+
const entry = list.find((r) => r.id === p.requestId);
|
|
71
87
|
if (entry) {
|
|
72
88
|
entry.status = p.response.status;
|
|
73
89
|
entry.mimeType = p.response.mimeType;
|
|
@@ -79,7 +95,7 @@ export function startRequestCapture(client, sessionId) {
|
|
|
79
95
|
if (sid !== sessionId)
|
|
80
96
|
return;
|
|
81
97
|
const p = params;
|
|
82
|
-
const entry = list
|
|
98
|
+
const entry = list.find((r) => r.id === p.requestId);
|
|
83
99
|
if (entry) {
|
|
84
100
|
entry.encodedSize = p.encodedDataLength;
|
|
85
101
|
entry.endTime = p.timestamp * 1000;
|
|
@@ -94,6 +110,7 @@ export function stopRequestCapture(sessionId) {
|
|
|
94
110
|
off();
|
|
95
111
|
_captureListeners.delete(sessionId);
|
|
96
112
|
}
|
|
113
|
+
_capturedRequests.delete(sessionId);
|
|
97
114
|
}
|
|
98
115
|
export function getCapturedRequests(sessionId) {
|
|
99
116
|
return _capturedRequests.get(sessionId) ?? [];
|
|
@@ -102,6 +119,11 @@ export function clearCapturedRequests(sessionId) {
|
|
|
102
119
|
_capturedRequests.set(sessionId, []);
|
|
103
120
|
}
|
|
104
121
|
export async function disableInterception(client, sessionId) {
|
|
122
|
+
const prevOff = _routeListeners.get(sessionId);
|
|
123
|
+
if (prevOff) {
|
|
124
|
+
prevOff();
|
|
125
|
+
_routeListeners.delete(sessionId);
|
|
126
|
+
}
|
|
105
127
|
await client.send('Fetch.disable', {}, sessionId);
|
|
106
128
|
}
|
|
107
129
|
export async function getLocalStorage(client, sessionId) {
|
|
@@ -120,7 +142,27 @@ export async function setLocalStorage(client, sessionId, data) {
|
|
|
120
142
|
const script = Object.entries(data)
|
|
121
143
|
.map(([k, v]) => `localStorage.setItem(${JSON.stringify(k)}, ${JSON.stringify(v)})`)
|
|
122
144
|
.join('; ');
|
|
123
|
-
|
|
145
|
+
if (script)
|
|
146
|
+
await client.send('Runtime.evaluate', { expression: script }, sessionId);
|
|
147
|
+
}
|
|
148
|
+
export async function getSessionStorage(client, sessionId) {
|
|
149
|
+
const result = await client.send('Runtime.evaluate', {
|
|
150
|
+
expression: 'JSON.stringify(Object.fromEntries(Object.entries(sessionStorage)))',
|
|
151
|
+
returnByValue: true,
|
|
152
|
+
}, sessionId);
|
|
153
|
+
try {
|
|
154
|
+
return JSON.parse(result.result?.value ?? '{}');
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return {};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export async function setSessionStorage(client, sessionId, data) {
|
|
161
|
+
const script = Object.entries(data)
|
|
162
|
+
.map(([k, v]) => `sessionStorage.setItem(${JSON.stringify(k)}, ${JSON.stringify(v)})`)
|
|
163
|
+
.join('; ');
|
|
164
|
+
if (script)
|
|
165
|
+
await client.send('Runtime.evaluate', { expression: script }, sessionId);
|
|
124
166
|
}
|
|
125
167
|
function globToRegex(pattern) {
|
|
126
168
|
const escaped = pattern
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAiB,EAAE,SAAiB;IACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAA2B,uBAAuB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACnG,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAiB,EAAE,SAAiB,EAAE,OAAoB;IACzF,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAiB,EAAE,SAAiB;IACrE,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAiB,EACjB,SAAiB,EACjB,OAA+B;IAE/B,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAAiB;IAC3E,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;QAChC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;KACxC,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAiB,EACjB,SAAiB,EACjB,MAAsB;IAEtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CAiBjB;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,CA0BjB"}
|
|
@@ -17,9 +17,15 @@ export async function stopCpuProfile(client, sessionId, outputPath) {
|
|
|
17
17
|
if (!_sessions.has(sessionId)) {
|
|
18
18
|
throw new Error('No active CPU profiler for this session');
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
let result;
|
|
21
|
+
try {
|
|
22
|
+
result = await client.send('Profiler.stop', {}, sessionId);
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
_sessions.delete(sessionId);
|
|
26
|
+
}
|
|
27
|
+
// Disable after capturing the profile so a disable failure doesn't discard valid data
|
|
28
|
+
await client.send('Profiler.disable', {}, sessionId).catch(() => { });
|
|
23
29
|
const path = outputPath ?? join(tmpdir(), `monomind-profile-${Date.now()}.cpuprofile`);
|
|
24
30
|
await writeFile(path, JSON.stringify(result.profile));
|
|
25
31
|
return path;
|
|
@@ -35,18 +41,23 @@ export async function startHeapSnapshot(client, sessionId, outputPath) {
|
|
|
35
41
|
return;
|
|
36
42
|
chunks.push(params.chunk);
|
|
37
43
|
});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
try {
|
|
45
|
+
await new Promise((resolve, reject) => {
|
|
46
|
+
const off2 = client.on('HeapProfiler.reportHeapSnapshotProgress', (params, sid) => {
|
|
47
|
+
if (sid !== sessionId)
|
|
48
|
+
return;
|
|
49
|
+
if (params.finished) {
|
|
50
|
+
off2();
|
|
51
|
+
resolve();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
client.send('HeapProfiler.takeHeapSnapshot', { reportProgress: true }, sessionId)
|
|
55
|
+
.catch((err) => { off2(); reject(err); });
|
|
46
56
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
off();
|
|
60
|
+
}
|
|
50
61
|
await client.send('HeapProfiler.disable', {}, sessionId);
|
|
51
62
|
const path = outputPath ?? join(tmpdir(), `monomind-heap-${Date.now()}.heapsnapshot`);
|
|
52
63
|
await writeFile(path, chunks.join(''));
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../../src/browser/profiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CA4Bf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAcjB;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"}
|
|
@@ -15,21 +15,32 @@ export async function startRecording(client, sessionId, options = {}) {
|
|
|
15
15
|
state.frames.push(data);
|
|
16
16
|
await client.send('Page.screencastFrameAck', { sessionId: frameSessionId }, sessionId).catch(() => { });
|
|
17
17
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
try {
|
|
19
|
+
await client.send('Page.startScreencast', {
|
|
20
|
+
format: options.format ?? 'jpeg',
|
|
21
|
+
quality: options.quality ?? 80,
|
|
22
|
+
everyNthFrame: options.everyNthFrame ?? 1,
|
|
23
|
+
...(options.maxWidth ? { maxWidth: options.maxWidth } : {}),
|
|
24
|
+
...(options.maxHeight ? { maxHeight: options.maxHeight } : {}),
|
|
25
|
+
}, sessionId);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
state.offScreencast?.();
|
|
29
|
+
_sessions.delete(sessionId);
|
|
30
|
+
throw err;
|
|
31
|
+
}
|
|
25
32
|
}
|
|
26
33
|
export async function stopRecording(client, sessionId, outputPath) {
|
|
27
34
|
const state = _sessions.get(sessionId);
|
|
28
35
|
if (!state)
|
|
29
36
|
throw new Error('No active recording for this session');
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
try {
|
|
38
|
+
await client.send('Page.stopScreencast', {}, sessionId);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
state.offScreencast?.();
|
|
42
|
+
_sessions.delete(sessionId);
|
|
43
|
+
}
|
|
33
44
|
const path = outputPath ?? join(tmpdir(), `monomind-screencast-${Date.now()}.frames.json`);
|
|
34
45
|
await writeFile(path, JSON.stringify({ frameCount: state.frames.length, frames: state.frames }));
|
|
35
46
|
return path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/browser/record.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;AAgB5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,SAAiB,EACjB,UAAyB,EAAE;IAE3B,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAClE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEhC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5E,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAA6C,CAAC;QAC1F,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/browser/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/browser/session.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/browser/session.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAOvB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKtD"}
|