@monoes/monobrowse 1.0.0
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/action-builder/analyzer.d.ts +11 -0
- package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -0
- package/dist/src/browser/action-builder/analyzer.js +93 -0
- package/dist/src/browser/action-builder/analyzer.js.map +1 -0
- package/dist/src/browser/action-builder/types.d.ts +46 -0
- package/dist/src/browser/action-builder/types.d.ts.map +1 -0
- package/dist/src/browser/action-builder/types.js +2 -0
- package/dist/src/browser/action-builder/types.js.map +1 -0
- package/dist/src/browser/actions.d.ts +29 -0
- package/dist/src/browser/actions.d.ts.map +1 -0
- package/dist/src/browser/actions.js +398 -0
- package/dist/src/browser/actions.js.map +1 -0
- package/dist/src/browser/adapters/gemini.d.ts +3 -0
- package/dist/src/browser/adapters/gemini.d.ts.map +1 -0
- package/dist/src/browser/adapters/gemini.js +13 -0
- package/dist/src/browser/adapters/gemini.js.map +1 -0
- package/dist/src/browser/adapters/google.d.ts +3 -0
- package/dist/src/browser/adapters/google.d.ts.map +1 -0
- package/dist/src/browser/adapters/google.js +17 -0
- package/dist/src/browser/adapters/google.js.map +1 -0
- package/dist/src/browser/adapters/index.d.ts +15 -0
- package/dist/src/browser/adapters/index.d.ts.map +1 -0
- package/dist/src/browser/adapters/index.js +18 -0
- package/dist/src/browser/adapters/index.js.map +1 -0
- package/dist/src/browser/adapters/instagram.d.ts +3 -0
- package/dist/src/browser/adapters/instagram.d.ts.map +1 -0
- package/dist/src/browser/adapters/instagram.js +14 -0
- package/dist/src/browser/adapters/instagram.js.map +1 -0
- package/dist/src/browser/adapters/linkedin.d.ts +3 -0
- package/dist/src/browser/adapters/linkedin.d.ts.map +1 -0
- package/dist/src/browser/adapters/linkedin.js +13 -0
- package/dist/src/browser/adapters/linkedin.js.map +1 -0
- package/dist/src/browser/adapters/microsoft.d.ts +3 -0
- package/dist/src/browser/adapters/microsoft.d.ts.map +1 -0
- package/dist/src/browser/adapters/microsoft.js +16 -0
- package/dist/src/browser/adapters/microsoft.js.map +1 -0
- package/dist/src/browser/adapters/x.d.ts +3 -0
- package/dist/src/browser/adapters/x.d.ts.map +1 -0
- package/dist/src/browser/adapters/x.js +13 -0
- package/dist/src/browser/adapters/x.js.map +1 -0
- package/dist/src/browser/batch.d.ts +5 -0
- package/dist/src/browser/batch.d.ts.map +1 -0
- package/dist/src/browser/batch.js +2 -0
- package/dist/src/browser/batch.js.map +1 -0
- package/dist/src/browser/browser.d.ts +15 -0
- package/dist/src/browser/browser.d.ts.map +1 -0
- package/dist/src/browser/browser.js +256 -0
- package/dist/src/browser/browser.js.map +1 -0
- package/dist/src/browser/cdp.d.ts +18 -0
- package/dist/src/browser/cdp.d.ts.map +1 -0
- package/dist/src/browser/cdp.js +153 -0
- package/dist/src/browser/cdp.js.map +1 -0
- package/dist/src/browser/console-log.d.ts +23 -0
- package/dist/src/browser/console-log.d.ts.map +1 -0
- package/dist/src/browser/console-log.js +104 -0
- package/dist/src/browser/console-log.js.map +1 -0
- package/dist/src/browser/dashboard/api-types.d.ts +50 -0
- package/dist/src/browser/dashboard/api-types.d.ts.map +1 -0
- package/dist/src/browser/dashboard/api-types.js +14 -0
- package/dist/src/browser/dashboard/api-types.js.map +1 -0
- package/dist/src/browser/dashboard/server.d.ts +11 -0
- package/dist/src/browser/dashboard/server.d.ts.map +1 -0
- package/dist/src/browser/dashboard/server.js +191 -0
- package/dist/src/browser/dashboard/server.js.map +1 -0
- package/dist/src/browser/dialog.d.ts +12 -0
- package/dist/src/browser/dialog.d.ts.map +1 -0
- package/dist/src/browser/dialog.js +53 -0
- package/dist/src/browser/dialog.js.map +1 -0
- package/dist/src/browser/emulation.d.ts +15 -0
- package/dist/src/browser/emulation.d.ts.map +1 -0
- package/dist/src/browser/emulation.js +62 -0
- package/dist/src/browser/emulation.js.map +1 -0
- package/dist/src/browser/find.d.ts +22 -0
- package/dist/src/browser/find.d.ts.map +1 -0
- package/dist/src/browser/find.js +169 -0
- package/dist/src/browser/find.js.map +1 -0
- package/dist/src/browser/har.d.ts +27 -0
- package/dist/src/browser/har.d.ts.map +1 -0
- package/dist/src/browser/har.js +161 -0
- package/dist/src/browser/har.js.map +1 -0
- package/dist/src/browser/index.d.ts +23 -0
- package/dist/src/browser/index.d.ts.map +1 -0
- package/dist/src/browser/index.js +23 -0
- package/dist/src/browser/index.js.map +1 -0
- package/dist/src/browser/network.d.ts +32 -0
- package/dist/src/browser/network.d.ts.map +1 -0
- package/dist/src/browser/network.js +214 -0
- package/dist/src/browser/network.js.map +1 -0
- package/dist/src/browser/pdf.d.ts +15 -0
- package/dist/src/browser/pdf.d.ts.map +1 -0
- package/dist/src/browser/pdf.js +27 -0
- package/dist/src/browser/pdf.js.map +1 -0
- 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 +77 -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 +59 -0
- package/dist/src/browser/record.js.map +1 -0
- package/dist/src/browser/screenshot.d.ts +15 -0
- package/dist/src/browser/screenshot.d.ts.map +1 -0
- package/dist/src/browser/screenshot.js +38 -0
- package/dist/src/browser/screenshot.js.map +1 -0
- package/dist/src/browser/session.d.ts +8 -0
- package/dist/src/browser/session.d.ts.map +1 -0
- package/dist/src/browser/session.js +91 -0
- package/dist/src/browser/session.js.map +1 -0
- package/dist/src/browser/snapshot.d.ts +12 -0
- package/dist/src/browser/snapshot.d.ts.map +1 -0
- package/dist/src/browser/snapshot.js +179 -0
- package/dist/src/browser/snapshot.js.map +1 -0
- package/dist/src/browser/storage.d.ts +12 -0
- package/dist/src/browser/storage.d.ts.map +1 -0
- package/dist/src/browser/storage.js +46 -0
- package/dist/src/browser/storage.js.map +1 -0
- package/dist/src/browser/tabs.d.ts +8 -0
- package/dist/src/browser/tabs.d.ts.map +1 -0
- package/dist/src/browser/tabs.js +25 -0
- package/dist/src/browser/tabs.js.map +1 -0
- 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 +87 -0
- package/dist/src/browser/trace.js.map +1 -0
- package/dist/src/browser/types.d.ts +111 -0
- package/dist/src/browser/types.d.ts.map +1 -0
- package/dist/src/browser/types.js +16 -0
- package/dist/src/browser/types.js.map +1 -0
- 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/browser/wait.d.ts +4 -0
- package/dist/src/browser/wait.d.ts.map +1 -0
- package/dist/src/browser/wait.js +146 -0
- package/dist/src/browser/wait.js.map +1 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts +3 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts.map +1 -0
- package/dist/src/browser/workflow/builtin-handlers.js +343 -0
- package/dist/src/browser/workflow/builtin-handlers.js.map +1 -0
- package/dist/src/browser/workflow/engine.d.ts +10 -0
- package/dist/src/browser/workflow/engine.d.ts.map +1 -0
- package/dist/src/browser/workflow/engine.js +174 -0
- package/dist/src/browser/workflow/engine.js.map +1 -0
- package/dist/src/browser/workflow/expression.d.ts +4 -0
- package/dist/src/browser/workflow/expression.d.ts.map +1 -0
- package/dist/src/browser/workflow/expression.js +89 -0
- package/dist/src/browser/workflow/expression.js.map +1 -0
- package/dist/src/browser/workflow/index.d.ts +6 -0
- package/dist/src/browser/workflow/index.d.ts.map +1 -0
- package/dist/src/browser/workflow/index.js +6 -0
- package/dist/src/browser/workflow/index.js.map +1 -0
- package/dist/src/browser/workflow/store.d.ts +8 -0
- package/dist/src/browser/workflow/store.d.ts.map +1 -0
- package/dist/src/browser/workflow/store.js +87 -0
- package/dist/src/browser/workflow/store.js.map +1 -0
- package/dist/src/browser/workflow/types.d.ts +62 -0
- package/dist/src/browser/workflow/types.d.ts.map +1 -0
- package/dist/src/browser/workflow/types.js +2 -0
- package/dist/src/browser/workflow/types.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +56 -0
- package/src/browser/action-builder/analyzer.ts +127 -0
- package/src/browser/action-builder/types.ts +17 -0
- package/src/browser/actions.ts +518 -0
- package/src/browser/adapters/gemini.ts +15 -0
- package/src/browser/adapters/google.ts +20 -0
- package/src/browser/adapters/index.ts +33 -0
- package/src/browser/adapters/instagram.ts +16 -0
- package/src/browser/adapters/linkedin.ts +15 -0
- package/src/browser/adapters/microsoft.ts +19 -0
- package/src/browser/adapters/x.ts +15 -0
- package/src/browser/batch.ts +4 -0
- package/src/browser/browser.ts +265 -0
- package/src/browser/cdp.ts +156 -0
- package/src/browser/console-log.ts +120 -0
- package/src/browser/dashboard/api-types.ts +71 -0
- package/src/browser/dashboard/server.ts +206 -0
- package/src/browser/dashboard/ui.html +444 -0
- package/src/browser/dialog.ts +63 -0
- package/src/browser/emulation.ts +94 -0
- package/src/browser/find.ts +225 -0
- package/src/browser/har.ts +202 -0
- package/src/browser/index.ts +22 -0
- package/src/browser/network.ts +244 -0
- package/src/browser/pdf.ts +41 -0
- package/src/browser/profiler.ts +96 -0
- package/src/browser/record.ts +92 -0
- package/src/browser/screenshot.ts +67 -0
- package/src/browser/session.ts +118 -0
- package/src/browser/snapshot.ts +248 -0
- package/src/browser/storage.ts +54 -0
- package/src/browser/tabs.ts +37 -0
- package/src/browser/trace.ts +106 -0
- package/src/browser/types.ts +135 -0
- package/src/browser/vitals.ts +122 -0
- package/src/browser/wait.ts +178 -0
- package/src/browser/workflow/builtin-handlers.ts +379 -0
- package/src/browser/workflow/engine.ts +202 -0
- package/src/browser/workflow/expression.ts +107 -0
- package/src/browser/workflow/index.ts +5 -0
- package/src/browser/workflow/store.ts +87 -0
- package/src/browser/workflow/types.ts +62 -0
- package/src/index.ts +6 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
import type { CdpCookie, NetworkRoute } from './types.js';
|
|
3
|
+
export declare function getCookies(client: CdpClient, sessionId: string): Promise<CdpCookie[]>;
|
|
4
|
+
export declare function setCookies(client: CdpClient, sessionId: string, cookies: CdpCookie[]): Promise<void>;
|
|
5
|
+
export declare function clearCookies(client: CdpClient, sessionId: string): Promise<void>;
|
|
6
|
+
export declare function setExtraHeaders(client: CdpClient, sessionId: string, headers: Record<string, string>): Promise<void>;
|
|
7
|
+
export declare function enableInterception(client: CdpClient, sessionId: string): Promise<void>;
|
|
8
|
+
export declare function setupRoutes(client: CdpClient, sessionId: string, routes: NetworkRoute[]): Promise<void>;
|
|
9
|
+
type CapturedRequest = {
|
|
10
|
+
id: string;
|
|
11
|
+
url: string;
|
|
12
|
+
method: string;
|
|
13
|
+
status?: number;
|
|
14
|
+
mimeType?: string;
|
|
15
|
+
requestHeaders?: Record<string, string>;
|
|
16
|
+
responseHeaders?: Record<string, string>;
|
|
17
|
+
startTime: number;
|
|
18
|
+
endTime?: number;
|
|
19
|
+
encodedSize?: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function startRequestCapture(client: CdpClient, sessionId: string): void;
|
|
22
|
+
export declare function stopRequestCapture(sessionId: string): void;
|
|
23
|
+
export declare function getCapturedRequests(sessionId: string): CapturedRequest[];
|
|
24
|
+
export declare function clearCapturedRequests(sessionId: string): void;
|
|
25
|
+
export declare function disableInterception(client: CdpClient, sessionId: string): Promise<void>;
|
|
26
|
+
export declare function teardownRouteInterception(sessionId: string): void;
|
|
27
|
+
export declare function getLocalStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
28
|
+
export declare function setLocalStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
29
|
+
export declare function getSessionStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
30
|
+
export declare function setSessionStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +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;AAID,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClF,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC3D,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAoC9E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAExE;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,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAW3G;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,CAaf;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAW7G;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,CAaf"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
export async function getCookies(client, sessionId) {
|
|
2
|
+
const result = await client.send('Network.getAllCookies', {}, sessionId);
|
|
3
|
+
return result.cookies ?? [];
|
|
4
|
+
}
|
|
5
|
+
export async function setCookies(client, sessionId, cookies) {
|
|
6
|
+
await client.send('Network.setCookies', { cookies }, sessionId);
|
|
7
|
+
}
|
|
8
|
+
export async function clearCookies(client, sessionId) {
|
|
9
|
+
await client.send('Network.clearBrowserCookies', {}, sessionId);
|
|
10
|
+
}
|
|
11
|
+
export async function setExtraHeaders(client, sessionId, headers) {
|
|
12
|
+
await client.send('Network.setExtraHTTPHeaders', { headers }, sessionId);
|
|
13
|
+
}
|
|
14
|
+
export async function enableInterception(client, sessionId) {
|
|
15
|
+
await client.send('Fetch.enable', {
|
|
16
|
+
patterns: [{ requestStage: 'Request' }],
|
|
17
|
+
}, sessionId);
|
|
18
|
+
}
|
|
19
|
+
const _routeListeners = new Map();
|
|
20
|
+
export async function setupRoutes(client, sessionId, routes) {
|
|
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).catch(() => { });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Pre-compile route regexes once — avoids creating new RegExp on every paused request
|
|
32
|
+
const compiledRoutes = routes.map((r) => ({ route: r, regex: globToRegex(r.pattern) }));
|
|
33
|
+
// Register listener BEFORE Fetch.enable to avoid race where Chrome emits
|
|
34
|
+
// Fetch.requestPaused before the handler is in place, leaving requests hung
|
|
35
|
+
const off = client.on('Fetch.requestPaused', async (params, sid) => {
|
|
36
|
+
if (sid !== sessionId)
|
|
37
|
+
return;
|
|
38
|
+
const { requestId, request } = params;
|
|
39
|
+
try {
|
|
40
|
+
const matchedRoute = compiledRoutes.find((e) => e.regex.test(request.url))?.route;
|
|
41
|
+
if (!matchedRoute) {
|
|
42
|
+
await client.send('Fetch.continueRequest', { requestId }, sessionId);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
switch (matchedRoute.action) {
|
|
46
|
+
case 'abort':
|
|
47
|
+
await client.send('Fetch.failRequest', { requestId, errorReason: 'Failed' }, sessionId);
|
|
48
|
+
break;
|
|
49
|
+
case 'fulfill':
|
|
50
|
+
await client.send('Fetch.fulfillRequest', {
|
|
51
|
+
requestId,
|
|
52
|
+
responseCode: matchedRoute.response?.status ?? 200,
|
|
53
|
+
responseHeaders: Object.entries(matchedRoute.response?.headers ?? {}).map(([name, value]) => ({ name, value })),
|
|
54
|
+
body: matchedRoute.response?.body ? Buffer.from(matchedRoute.response.body).toString('base64') : '',
|
|
55
|
+
}, sessionId);
|
|
56
|
+
break;
|
|
57
|
+
case 'continue':
|
|
58
|
+
default:
|
|
59
|
+
await client.send('Fetch.continueRequest', { requestId }, sessionId);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Best-effort: resume the request so it doesn't hang in Chrome
|
|
65
|
+
await client.send('Fetch.continueRequest', { requestId }, sessionId).catch(() => { });
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
_routeListeners.set(sessionId, off);
|
|
69
|
+
await client.send('Fetch.enable', {
|
|
70
|
+
patterns: routes.map((r) => ({ urlPattern: globToFetchPattern(r.pattern), requestStage: 'Request' })),
|
|
71
|
+
}, sessionId);
|
|
72
|
+
}
|
|
73
|
+
const _capturedRequests = new Map();
|
|
74
|
+
const _captureListeners = new Map();
|
|
75
|
+
export function startRequestCapture(client, sessionId) {
|
|
76
|
+
stopRequestCapture(sessionId);
|
|
77
|
+
_capturedRequests.set(sessionId, new Map());
|
|
78
|
+
client.send('Network.enable', {}, sessionId).catch(() => { });
|
|
79
|
+
// Use indirection so clearCapturedRequests (which replaces the Map) affects live listeners
|
|
80
|
+
const idx = () => _capturedRequests.get(sessionId);
|
|
81
|
+
const offReq = client.on('Network.requestWillBeSent', (params, sid) => {
|
|
82
|
+
if (sid !== sessionId)
|
|
83
|
+
return;
|
|
84
|
+
const p = params;
|
|
85
|
+
idx().set(p.requestId, { id: p.requestId, url: p.request.url, method: p.request.method, requestHeaders: p.request.headers, startTime: p.timestamp * 1000 });
|
|
86
|
+
});
|
|
87
|
+
const offResp = client.on('Network.responseReceived', (params, sid) => {
|
|
88
|
+
if (sid !== sessionId)
|
|
89
|
+
return;
|
|
90
|
+
const p = params;
|
|
91
|
+
const entry = idx().get(p.requestId);
|
|
92
|
+
if (entry) {
|
|
93
|
+
entry.status = p.response.status;
|
|
94
|
+
entry.mimeType = p.response.mimeType;
|
|
95
|
+
entry.responseHeaders = p.response.headers;
|
|
96
|
+
entry.endTime = p.timestamp * 1000;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const offFinished = client.on('Network.loadingFinished', (params, sid) => {
|
|
100
|
+
if (sid !== sessionId)
|
|
101
|
+
return;
|
|
102
|
+
const p = params;
|
|
103
|
+
const entry = idx().get(p.requestId);
|
|
104
|
+
if (entry) {
|
|
105
|
+
entry.encodedSize = p.encodedDataLength;
|
|
106
|
+
entry.endTime = p.timestamp * 1000;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const offFailed = client.on('Network.loadingFailed', (params, sid) => {
|
|
110
|
+
if (sid !== sessionId)
|
|
111
|
+
return;
|
|
112
|
+
const p = params;
|
|
113
|
+
const entry = idx().get(p.requestId);
|
|
114
|
+
if (entry) {
|
|
115
|
+
entry.endTime = p.timestamp * 1000;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
_captureListeners.set(sessionId, [offReq, offResp, offFinished, offFailed]);
|
|
119
|
+
}
|
|
120
|
+
export function stopRequestCapture(sessionId) {
|
|
121
|
+
const offs = _captureListeners.get(sessionId);
|
|
122
|
+
if (offs) {
|
|
123
|
+
for (const off of offs)
|
|
124
|
+
off();
|
|
125
|
+
_captureListeners.delete(sessionId);
|
|
126
|
+
}
|
|
127
|
+
_capturedRequests.delete(sessionId);
|
|
128
|
+
}
|
|
129
|
+
export function getCapturedRequests(sessionId) {
|
|
130
|
+
return [...(_capturedRequests.get(sessionId)?.values() ?? [])];
|
|
131
|
+
}
|
|
132
|
+
export function clearCapturedRequests(sessionId) {
|
|
133
|
+
_capturedRequests.set(sessionId, new Map());
|
|
134
|
+
}
|
|
135
|
+
export async function disableInterception(client, sessionId) {
|
|
136
|
+
const prevOff = _routeListeners.get(sessionId);
|
|
137
|
+
if (prevOff) {
|
|
138
|
+
prevOff();
|
|
139
|
+
_routeListeners.delete(sessionId);
|
|
140
|
+
}
|
|
141
|
+
await client.send('Fetch.disable', {}, sessionId);
|
|
142
|
+
}
|
|
143
|
+
export function teardownRouteInterception(sessionId) {
|
|
144
|
+
const prevOff = _routeListeners.get(sessionId);
|
|
145
|
+
if (prevOff) {
|
|
146
|
+
prevOff();
|
|
147
|
+
_routeListeners.delete(sessionId);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export async function getLocalStorage(client, sessionId) {
|
|
151
|
+
const result = await client.send('Runtime.evaluate', {
|
|
152
|
+
expression: 'JSON.stringify(Object.fromEntries(Object.entries(localStorage)))',
|
|
153
|
+
returnByValue: true,
|
|
154
|
+
}, sessionId);
|
|
155
|
+
if (result.exceptionDetails)
|
|
156
|
+
return {};
|
|
157
|
+
try {
|
|
158
|
+
return JSON.parse(result.result?.value ?? '{}');
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return {};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
export async function setLocalStorage(client, sessionId, data) {
|
|
165
|
+
const script = Object.entries(data)
|
|
166
|
+
.map(([k, v]) => `localStorage.setItem(${JSON.stringify(k)}, ${JSON.stringify(v)})`)
|
|
167
|
+
.join('; ');
|
|
168
|
+
if (script) {
|
|
169
|
+
const result = await client.send('Runtime.evaluate', { expression: script, returnByValue: true }, sessionId);
|
|
170
|
+
if (result.exceptionDetails) {
|
|
171
|
+
throw new Error(`setLocalStorage failed: ${result.exceptionDetails.exception?.description ?? result.exceptionDetails.text}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export async function getSessionStorage(client, sessionId) {
|
|
176
|
+
const result = await client.send('Runtime.evaluate', {
|
|
177
|
+
expression: 'JSON.stringify(Object.fromEntries(Object.entries(sessionStorage)))',
|
|
178
|
+
returnByValue: true,
|
|
179
|
+
}, sessionId);
|
|
180
|
+
if (result.exceptionDetails)
|
|
181
|
+
return {};
|
|
182
|
+
try {
|
|
183
|
+
return JSON.parse(result.result?.value ?? '{}');
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return {};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export async function setSessionStorage(client, sessionId, data) {
|
|
190
|
+
const script = Object.entries(data)
|
|
191
|
+
.map(([k, v]) => `sessionStorage.setItem(${JSON.stringify(k)}, ${JSON.stringify(v)})`)
|
|
192
|
+
.join('; ');
|
|
193
|
+
if (script) {
|
|
194
|
+
const result = await client.send('Runtime.evaluate', { expression: script, returnByValue: true }, sessionId);
|
|
195
|
+
if (result.exceptionDetails) {
|
|
196
|
+
throw new Error(`setSessionStorage failed: ${result.exceptionDetails.exception?.description ?? result.exceptionDetails.text}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function globToRegex(pattern) {
|
|
201
|
+
// Chrome's Fetch urlPattern treats '*' as matching everything including '/'
|
|
202
|
+
// and '?' as any single character — match both behaviors here to avoid divergence
|
|
203
|
+
const escaped = pattern
|
|
204
|
+
.replace(/[-[\]{}()+.,\\^$|#\s]/g, '\\$&')
|
|
205
|
+
.replace(/\*\*/g, '\x00')
|
|
206
|
+
.replace(/\*/g, '[^/]*')
|
|
207
|
+
.replace(/\x00/g, '.*')
|
|
208
|
+
.replace(/\?/g, '[^/]');
|
|
209
|
+
return new RegExp(`^${escaped}$`);
|
|
210
|
+
}
|
|
211
|
+
function globToFetchPattern(pattern) {
|
|
212
|
+
return pattern.replace(/\*\*/g, '*');
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/browser/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface PdfOptions {
|
|
3
|
+
path?: string;
|
|
4
|
+
landscape?: boolean;
|
|
5
|
+
paperWidth?: number;
|
|
6
|
+
paperHeight?: number;
|
|
7
|
+
marginTop?: number;
|
|
8
|
+
marginBottom?: number;
|
|
9
|
+
marginLeft?: number;
|
|
10
|
+
marginRight?: number;
|
|
11
|
+
printBackground?: boolean;
|
|
12
|
+
scale?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function capturePdf(client: CdpClient, sessionId: string, options?: PdfOptions): Promise<string>;
|
|
15
|
+
//# sourceMappingURL=pdf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/browser/pdf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
export async function capturePdf(client, sessionId, options = {}) {
|
|
5
|
+
const params = {
|
|
6
|
+
landscape: options.landscape ?? false,
|
|
7
|
+
printBackground: options.printBackground ?? true,
|
|
8
|
+
scale: options.scale ?? 1,
|
|
9
|
+
};
|
|
10
|
+
if (options.paperWidth)
|
|
11
|
+
params.paperWidth = options.paperWidth;
|
|
12
|
+
if (options.paperHeight)
|
|
13
|
+
params.paperHeight = options.paperHeight;
|
|
14
|
+
if (options.marginTop !== undefined)
|
|
15
|
+
params.marginTop = options.marginTop;
|
|
16
|
+
if (options.marginBottom !== undefined)
|
|
17
|
+
params.marginBottom = options.marginBottom;
|
|
18
|
+
if (options.marginLeft !== undefined)
|
|
19
|
+
params.marginLeft = options.marginLeft;
|
|
20
|
+
if (options.marginRight !== undefined)
|
|
21
|
+
params.marginRight = options.marginRight;
|
|
22
|
+
const result = await client.send('Page.printToPDF', params, sessionId);
|
|
23
|
+
const outputPath = options.path ?? join(tmpdir(), `monomind-pdf-${Date.now()}.pdf`);
|
|
24
|
+
await writeFile(outputPath, Buffer.from(result.data, 'base64'));
|
|
25
|
+
return outputPath;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/browser/pdf.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;AAe5B,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiB,EACjB,SAAiB,EACjB,UAAsB,EAAE;IAExB,MAAM,MAAM,GAA4B;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;QACrC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC1B,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/D,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAClE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC1E,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACnF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC7E,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAEhF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmB,iBAAiB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpF,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -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;AAKD,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,CAmCjB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
const _sessions = new Set();
|
|
5
|
+
const _heapSessions = new Set();
|
|
6
|
+
export async function startCpuProfile(client, sessionId, options = {}) {
|
|
7
|
+
if (_sessions.has(sessionId)) {
|
|
8
|
+
throw new Error('CPU profiler already running for this session');
|
|
9
|
+
}
|
|
10
|
+
await client.send('Profiler.enable', {}, sessionId);
|
|
11
|
+
if (options.samplingInterval !== undefined) {
|
|
12
|
+
await client.send('Profiler.setSamplingInterval', { interval: options.samplingInterval }, sessionId);
|
|
13
|
+
}
|
|
14
|
+
await client.send('Profiler.start', {}, sessionId);
|
|
15
|
+
_sessions.add(sessionId);
|
|
16
|
+
}
|
|
17
|
+
export async function stopCpuProfile(client, sessionId, outputPath) {
|
|
18
|
+
if (!_sessions.has(sessionId)) {
|
|
19
|
+
throw new Error('No active CPU profiler for this session');
|
|
20
|
+
}
|
|
21
|
+
let result;
|
|
22
|
+
try {
|
|
23
|
+
result = await client.send('Profiler.stop', {}, sessionId);
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
_sessions.delete(sessionId);
|
|
27
|
+
}
|
|
28
|
+
// Disable after capturing the profile so a disable failure doesn't discard valid data
|
|
29
|
+
await client.send('Profiler.disable', {}, sessionId).catch(() => { });
|
|
30
|
+
const path = outputPath ?? join(tmpdir(), `monomind-profile-${Date.now()}.cpuprofile`);
|
|
31
|
+
await writeFile(path, JSON.stringify(result.profile));
|
|
32
|
+
return path;
|
|
33
|
+
}
|
|
34
|
+
export function isProfilingActive(sessionId) {
|
|
35
|
+
return _sessions.has(sessionId);
|
|
36
|
+
}
|
|
37
|
+
export async function startHeapSnapshot(client, sessionId, outputPath) {
|
|
38
|
+
if (_heapSessions.has(sessionId)) {
|
|
39
|
+
throw new Error('Heap snapshot already in progress for this session');
|
|
40
|
+
}
|
|
41
|
+
_heapSessions.add(sessionId);
|
|
42
|
+
await client.send('HeapProfiler.enable', {}, sessionId);
|
|
43
|
+
const chunks = [];
|
|
44
|
+
const off = client.on('HeapProfiler.addHeapSnapshotChunk', (params, sid) => {
|
|
45
|
+
if (sid !== sessionId)
|
|
46
|
+
return;
|
|
47
|
+
chunks.push(params.chunk);
|
|
48
|
+
});
|
|
49
|
+
try {
|
|
50
|
+
await new Promise((resolve, reject) => {
|
|
51
|
+
const timeoutHandle = setTimeout(() => {
|
|
52
|
+
off2();
|
|
53
|
+
reject(new Error('Timeout waiting for heap snapshot (120s)'));
|
|
54
|
+
}, 120_000);
|
|
55
|
+
const off2 = client.on('HeapProfiler.reportHeapSnapshotProgress', (params, sid) => {
|
|
56
|
+
if (sid !== sessionId)
|
|
57
|
+
return;
|
|
58
|
+
if (params.finished) {
|
|
59
|
+
clearTimeout(timeoutHandle);
|
|
60
|
+
off2();
|
|
61
|
+
resolve();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
client.send('HeapProfiler.takeHeapSnapshot', { reportProgress: true }, sessionId)
|
|
65
|
+
.catch((err) => { clearTimeout(timeoutHandle); off2(); reject(err); });
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
off();
|
|
70
|
+
_heapSessions.delete(sessionId);
|
|
71
|
+
await client.send('HeapProfiler.disable', {}, sessionId).catch(() => { });
|
|
72
|
+
}
|
|
73
|
+
const path = outputPath ?? join(tmpdir(), `monomind-heap-${Date.now()}.heapsnapshot`);
|
|
74
|
+
await writeFile(path, chunks.join(''));
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=profiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../../src/browser/profiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
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
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function stopRecording(client, sessionId, outputPath) {
|
|
34
|
+
const state = _sessions.get(sessionId);
|
|
35
|
+
if (!state)
|
|
36
|
+
throw new Error('No active recording for this session');
|
|
37
|
+
try {
|
|
38
|
+
await client.send('Page.stopScreencast', {}, sessionId);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
state.offScreencast?.();
|
|
42
|
+
_sessions.delete(sessionId);
|
|
43
|
+
}
|
|
44
|
+
const path = outputPath ?? join(tmpdir(), `monomind-screencast-${Date.now()}.frames.json`);
|
|
45
|
+
await writeFile(path, JSON.stringify({ frameCount: state.frames.length, frames: state.frames }));
|
|
46
|
+
return path;
|
|
47
|
+
}
|
|
48
|
+
export function getRecordingStatus(sessionId) {
|
|
49
|
+
const state = _sessions.get(sessionId);
|
|
50
|
+
return { recording: !!state, frames: state?.frames.length ?? 0 };
|
|
51
|
+
}
|
|
52
|
+
export async function saveFrameAsPng(client, sessionId, frameIndex, outputPath) {
|
|
53
|
+
const state = _sessions.get(sessionId);
|
|
54
|
+
if (!state || frameIndex >= state.frames.length) {
|
|
55
|
+
throw new Error(`Frame ${frameIndex} not available`);
|
|
56
|
+
}
|
|
57
|
+
await writeFile(outputPath, Buffer.from(state.frames[frameIndex], 'base64'));
|
|
58
|
+
}
|
|
59
|
+
//# 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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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface ScreenshotOptions {
|
|
3
|
+
path?: string;
|
|
4
|
+
fullPage?: boolean;
|
|
5
|
+
quality?: number;
|
|
6
|
+
format?: 'jpeg' | 'png' | 'webp';
|
|
7
|
+
annotate?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function captureScreenshot(client: CdpClient, sessionId: string, options?: ScreenshotOptions): Promise<{
|
|
10
|
+
path: string;
|
|
11
|
+
dataUrl: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function setViewport(client: CdpClient, sessionId: string, width: number, height: number): Promise<void>;
|
|
14
|
+
export declare function setUserAgent(client: CdpClient, sessionId: string, userAgent: string): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/browser/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B5C;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { writeFile, mkdir } from 'fs/promises';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
export async function captureScreenshot(client, sessionId, options = {}) {
|
|
5
|
+
const format = options.format ?? 'png';
|
|
6
|
+
const params = { format };
|
|
7
|
+
if (format === 'jpeg' || format === 'webp') {
|
|
8
|
+
params.quality = options.quality ?? 80;
|
|
9
|
+
}
|
|
10
|
+
if (options.fullPage) {
|
|
11
|
+
const dims = await client.send('Runtime.evaluate', {
|
|
12
|
+
expression: 'JSON.stringify({w: document.documentElement.scrollWidth, h: document.documentElement.scrollHeight})',
|
|
13
|
+
returnByValue: true,
|
|
14
|
+
}, sessionId);
|
|
15
|
+
const { w, h } = JSON.parse(dims.result?.value ?? '{"w":1280,"h":720}');
|
|
16
|
+
params.clip = { x: 0, y: 0, width: w, height: h, scale: 1 };
|
|
17
|
+
params.captureBeyondViewport = true;
|
|
18
|
+
}
|
|
19
|
+
const result = await client.send('Page.captureScreenshot', params, sessionId);
|
|
20
|
+
const data = result.data;
|
|
21
|
+
const dataUrl = `data:image/${format};base64,${data}`;
|
|
22
|
+
const outputPath = options.path ?? join(tmpdir(), `monomind-screenshot-${Date.now()}.${format}`);
|
|
23
|
+
await mkdir(dirname(outputPath), { recursive: true });
|
|
24
|
+
await writeFile(outputPath, Buffer.from(data, 'base64'));
|
|
25
|
+
return { path: outputPath, dataUrl };
|
|
26
|
+
}
|
|
27
|
+
export async function setViewport(client, sessionId, width, height) {
|
|
28
|
+
await client.send('Emulation.setDeviceMetricsOverride', {
|
|
29
|
+
width,
|
|
30
|
+
height,
|
|
31
|
+
deviceScaleFactor: 1,
|
|
32
|
+
mobile: false,
|
|
33
|
+
}, sessionId);
|
|
34
|
+
}
|
|
35
|
+
export async function setUserAgent(client, sessionId, userAgent) {
|
|
36
|
+
await client.send('Emulation.setUserAgentOverride', { userAgent }, sessionId);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/browser/screenshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAU5B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,SAAiB,EACjB,UAA6B,EAAE;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,CAAC;IAEnD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAgC,kBAAkB,EAAE;YAChF,UAAU,EAAE,qGAAqG;YACjH,aAAa,EAAE,IAAI;SACpB,EAAE,SAAS,CAAC,CAAC;QACd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,oBAAoB,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmB,wBAAwB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,cAAc,MAAM,WAAW,IAAI,EAAE,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;IACjG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAiB,EACjB,SAAiB,EACjB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;QACtD,KAAK;QACL,MAAM;QACN,iBAAiB,EAAE,CAAC;QACpB,MAAM,EAAE,KAAK;KACd,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAiB,EACjB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionState } from './types.js';
|
|
2
|
+
import type { CdpClient } from './cdp.js';
|
|
3
|
+
export declare function saveSession(client: CdpClient, sessionId: string, targetId: string, name: string, url: string, title: string): Promise<string>;
|
|
4
|
+
export declare function loadSession(client: CdpClient, sessionId: string, name: string): Promise<SessionState>;
|
|
5
|
+
export declare function saveStateFile(client: CdpClient, sessionId: string, targetId: string, filePath: string, url: string, title: string): Promise<void>;
|
|
6
|
+
export declare function loadStateFile(client: CdpClient, sessionId: string, filePath: string): Promise<SessionState>;
|
|
7
|
+
export declare function listSessions(): Promise<string[]>;
|
|
8
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/browser/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAoB1C,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,CAYjB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAqBvB;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,CAQf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAevB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOtD"}
|