@monoes/monomindcli 1.10.29 → 1.10.31
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/auto-memory-hook.mjs +39 -4
- package/.claude/helpers/handlers/adr-draft-handler.cjs +64 -0
- package/.claude/helpers/handlers/agent-start-handler.cjs +99 -0
- package/.claude/helpers/handlers/edit-handler.cjs +145 -0
- package/.claude/helpers/handlers/graph-status-handler.cjs +38 -0
- package/.claude/helpers/handlers/route-handler.cjs +393 -0
- package/.claude/helpers/handlers/session-handler.cjs +167 -0
- package/.claude/helpers/handlers/session-restore-handler.cjs +348 -0
- package/.claude/helpers/handlers/task-handler.cjs +329 -0
- package/.claude/helpers/hook-handler.cjs +120 -2431
- package/.claude/helpers/intelligence.cjs +21 -2
- package/.claude/helpers/learning-service.mjs +166 -8
- package/.claude/helpers/memory-palace.cjs +72 -12
- package/.claude/helpers/router.cjs +79 -5
- package/.claude/helpers/statusline.cjs +193 -399
- package/.claude/helpers/utils/micro-agents.cjs +338 -0
- package/.claude/helpers/utils/monograph.cjs +349 -0
- package/.claude/helpers/utils/telemetry.cjs +144 -0
- package/.claude/skills/agent-browser-testing/SKILL.md +3 -2
- package/.claude/skills/monomind/browse-agentcore.md +116 -0
- package/.claude/skills/monomind/browse-electron.md +189 -0
- package/.claude/skills/monomind/browse-qa.md +229 -0
- package/.claude/skills/monomind/browse-references/authentication.md +162 -0
- package/.claude/skills/monomind/browse-references/trust-boundaries.md +41 -0
- package/.claude/skills/monomind/browse-references/video-recording.md +84 -0
- package/.claude/skills/monomind/browse-slack.md +189 -0
- package/.claude/skills/monomind/browse-vercel.md +240 -0
- package/.claude/skills/monomind/browse.md +724 -0
- package/dist/src/browser/actions.d.ts +28 -0
- package/dist/src/browser/actions.d.ts.map +1 -0
- package/dist/src/browser/actions.js +292 -0
- package/dist/src/browser/actions.js.map +1 -0
- package/dist/src/browser/batch.d.ts +13 -0
- package/dist/src/browser/batch.d.ts.map +1 -0
- package/dist/src/browser/batch.js +11 -0
- package/dist/src/browser/batch.js.map +1 -0
- package/dist/src/browser/browser.d.ts +14 -0
- package/dist/src/browser/browser.d.ts.map +1 -0
- package/dist/src/browser/browser.js +198 -0
- package/dist/src/browser/browser.js.map +1 -0
- package/dist/src/browser/cdp.d.ts +17 -0
- package/dist/src/browser/cdp.d.ts.map +1 -0
- package/dist/src/browser/cdp.js +106 -0
- package/dist/src/browser/cdp.js.map +1 -0
- package/dist/src/browser/console-log.d.ts +22 -0
- package/dist/src/browser/console-log.d.ts.map +1 -0
- package/dist/src/browser/console-log.js +55 -0
- package/dist/src/browser/console-log.js.map +1 -0
- package/dist/src/browser/dialog.d.ts +11 -0
- package/dist/src/browser/dialog.d.ts.map +1 -0
- package/dist/src/browser/dialog.js +36 -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 +21 -0
- package/dist/src/browser/find.d.ts.map +1 -0
- package/dist/src/browser/find.js +118 -0
- package/dist/src/browser/find.js.map +1 -0
- package/dist/src/browser/index.d.ts +18 -0
- package/dist/src/browser/index.d.ts.map +1 -0
- package/dist/src/browser/index.js +18 -0
- package/dist/src/browser/index.js.map +1 -0
- package/dist/src/browser/network.d.ts +11 -0
- package/dist/src/browser/network.d.ts.map +1 -0
- package/dist/src/browser/network.js +81 -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/screenshot.d.ts +15 -0
- package/dist/src/browser/screenshot.d.ts.map +1 -0
- package/dist/src/browser/screenshot.js +36 -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 +50 -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 +147 -0
- package/dist/src/browser/snapshot.js.map +1 -0
- package/dist/src/browser/storage.d.ts +11 -0
- package/dist/src/browser/storage.d.ts.map +1 -0
- package/dist/src/browser/storage.js +43 -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/types.d.ts +109 -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/wait.d.ts +4 -0
- package/dist/src/browser/wait.d.ts.map +1 -0
- package/dist/src/browser/wait.js +122 -0
- package/dist/src/browser/wait.js.map +1 -0
- package/dist/src/commands/browse.d.ts +8 -0
- package/dist/src/commands/browse.d.ts.map +1 -0
- package/dist/src/commands/browse.js +1494 -0
- package/dist/src/commands/browse.js.map +1 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +2 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/ui/dashboard-v2.html +1857 -0
- package/dist/src/ui/server.mjs +71 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
export class CdpClient {
|
|
3
|
+
ws = null;
|
|
4
|
+
pendingCommands = new Map();
|
|
5
|
+
eventListeners = new Map();
|
|
6
|
+
nextId = 1;
|
|
7
|
+
connected = false;
|
|
8
|
+
async connect(wsUrl) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
this.ws = new WebSocket(wsUrl);
|
|
11
|
+
this.ws.on('open', () => {
|
|
12
|
+
this.connected = true;
|
|
13
|
+
resolve();
|
|
14
|
+
});
|
|
15
|
+
this.ws.on('error', (err) => {
|
|
16
|
+
if (!this.connected)
|
|
17
|
+
reject(err);
|
|
18
|
+
});
|
|
19
|
+
this.ws.on('close', () => {
|
|
20
|
+
this.connected = false;
|
|
21
|
+
for (const { reject: r } of this.pendingCommands.values()) {
|
|
22
|
+
r(new Error('CDP connection closed'));
|
|
23
|
+
}
|
|
24
|
+
this.pendingCommands.clear();
|
|
25
|
+
});
|
|
26
|
+
this.ws.on('message', (data) => {
|
|
27
|
+
try {
|
|
28
|
+
const msg = JSON.parse(data.toString());
|
|
29
|
+
if (msg.id !== undefined && this.pendingCommands.has(msg.id)) {
|
|
30
|
+
const handler = this.pendingCommands.get(msg.id);
|
|
31
|
+
this.pendingCommands.delete(msg.id);
|
|
32
|
+
if (msg.error) {
|
|
33
|
+
handler.reject(new Error(`CDP error ${msg.error.code}: ${msg.error.message}`));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
handler.resolve(msg);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (msg.method) {
|
|
40
|
+
const listeners = this.eventListeners.get(msg.method);
|
|
41
|
+
if (listeners) {
|
|
42
|
+
for (const fn of listeners)
|
|
43
|
+
fn(msg.params ?? {}, msg.sessionId);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// ignore malformed messages
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
send(method, params, sessionId) {
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
if (!this.ws || !this.connected) {
|
|
56
|
+
reject(new Error('CDP not connected'));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const id = this.nextId++;
|
|
60
|
+
const cmd = { id, method, params };
|
|
61
|
+
if (sessionId)
|
|
62
|
+
cmd.sessionId = sessionId;
|
|
63
|
+
this.pendingCommands.set(id, {
|
|
64
|
+
resolve: (r) => resolve((r.result ?? {})),
|
|
65
|
+
reject,
|
|
66
|
+
});
|
|
67
|
+
this.ws.send(JSON.stringify(cmd));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
on(event, fn) {
|
|
71
|
+
if (!this.eventListeners.has(event)) {
|
|
72
|
+
this.eventListeners.set(event, new Set());
|
|
73
|
+
}
|
|
74
|
+
this.eventListeners.get(event).add(fn);
|
|
75
|
+
return () => this.eventListeners.get(event)?.delete(fn);
|
|
76
|
+
}
|
|
77
|
+
once(event) {
|
|
78
|
+
return new Promise((resolve) => {
|
|
79
|
+
const off = this.on(event, (params) => {
|
|
80
|
+
off();
|
|
81
|
+
resolve(params);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
close() {
|
|
86
|
+
this.ws?.close();
|
|
87
|
+
this.ws = null;
|
|
88
|
+
this.connected = false;
|
|
89
|
+
}
|
|
90
|
+
isConnected() {
|
|
91
|
+
return this.connected;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function fetchTargets(port) {
|
|
95
|
+
const res = await fetch(`http://127.0.0.1:${port}/json/list`);
|
|
96
|
+
if (!res.ok)
|
|
97
|
+
throw new Error(`Failed to fetch targets: ${res.statusText}`);
|
|
98
|
+
return res.json();
|
|
99
|
+
}
|
|
100
|
+
export async function fetchNewTarget(port, url) {
|
|
101
|
+
const res = await fetch(`http://127.0.0.1:${port}/json/new?${encodeURIComponent(url)}`);
|
|
102
|
+
if (!res.ok)
|
|
103
|
+
throw new Error(`Failed to create target: ${res.statusText}`);
|
|
104
|
+
return res.json();
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=cdp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../../src/browser/cdp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface ConsoleMessage {
|
|
3
|
+
type: 'log' | 'error' | 'warn' | 'info' | 'debug' | 'verbose';
|
|
4
|
+
text: string;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
url?: string;
|
|
7
|
+
lineNumber?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface PageError {
|
|
10
|
+
text: string;
|
|
11
|
+
url?: string;
|
|
12
|
+
lineNumber?: number;
|
|
13
|
+
columnNumber?: number;
|
|
14
|
+
timestamp: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function setupConsoleCapture(client: CdpClient, sessionId: string): void;
|
|
17
|
+
export declare function enableConsoleCapture(client: CdpClient, sessionId: string): Promise<void>;
|
|
18
|
+
export declare function getConsoleMessages(): ConsoleMessage[];
|
|
19
|
+
export declare function clearConsoleMessages(): void;
|
|
20
|
+
export declare function getPageErrors(): PageError[];
|
|
21
|
+
export declare function clearPageErrors(): void;
|
|
22
|
+
//# sourceMappingURL=console-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-log.d.ts","sourceRoot":"","sources":["../../../src/browser/console-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA0C9E;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9F;AAED,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAErD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAE3C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
let consoleMessages = [];
|
|
2
|
+
let pageErrors = [];
|
|
3
|
+
export function setupConsoleCapture(client, sessionId) {
|
|
4
|
+
client.on('Runtime.consoleAPICalled', (params, sid) => {
|
|
5
|
+
if (sid !== sessionId)
|
|
6
|
+
return;
|
|
7
|
+
const args = params.args ?? [];
|
|
8
|
+
const text = args.map((a) => a.description ?? String(a.value ?? '')).join(' ');
|
|
9
|
+
consoleMessages.push({
|
|
10
|
+
type: params.type ?? 'log',
|
|
11
|
+
text,
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
client.on('Log.entryAdded', (params, sid) => {
|
|
16
|
+
if (sid !== sessionId)
|
|
17
|
+
return;
|
|
18
|
+
const entry = params.entry;
|
|
19
|
+
consoleMessages.push({
|
|
20
|
+
type: entry.level ?? 'log',
|
|
21
|
+
text: entry.text ?? '',
|
|
22
|
+
timestamp: Date.now(),
|
|
23
|
+
url: entry.url,
|
|
24
|
+
lineNumber: entry.lineNumber,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
client.on('Runtime.exceptionThrown', (params, sid) => {
|
|
28
|
+
if (sid !== sessionId)
|
|
29
|
+
return;
|
|
30
|
+
const detail = params.exceptionDetails;
|
|
31
|
+
pageErrors.push({
|
|
32
|
+
text: detail.text ?? 'Unknown error',
|
|
33
|
+
url: detail.url,
|
|
34
|
+
lineNumber: detail.lineNumber,
|
|
35
|
+
columnNumber: detail.columnNumber,
|
|
36
|
+
timestamp: Date.now(),
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function enableConsoleCapture(client, sessionId) {
|
|
41
|
+
await client.send('Log.enable', {}, sessionId);
|
|
42
|
+
}
|
|
43
|
+
export function getConsoleMessages() {
|
|
44
|
+
return [...consoleMessages];
|
|
45
|
+
}
|
|
46
|
+
export function clearConsoleMessages() {
|
|
47
|
+
consoleMessages = [];
|
|
48
|
+
}
|
|
49
|
+
export function getPageErrors() {
|
|
50
|
+
return [...pageErrors];
|
|
51
|
+
}
|
|
52
|
+
export function clearPageErrors() {
|
|
53
|
+
pageErrors = [];
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=console-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-log.js","sourceRoot":"","sources":["../../../src/browser/console-log.ts"],"names":[],"mappings":"AAkBA,IAAI,eAAe,GAAqB,EAAE,CAAC;AAC3C,IAAI,UAAU,GAAgB,EAAE,CAAC;AAEjC,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,SAAiB;IACtE,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAI,MAAM,CAAC,IAAyD,IAAI,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,eAAe,CAAC,IAAI,CAAC;YACnB,IAAI,EAAG,MAAM,CAAC,IAA+B,IAAI,KAAK;YACtD,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAA6E,CAAC;QACnG,eAAe,CAAC,IAAI,CAAC;YACnB,IAAI,EAAG,KAAK,CAAC,KAAgC,IAAI,KAAK;YACtD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAKrB,CAAC;QACF,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,eAAe;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAiB;IAC7E,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,eAAe,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,UAAU,GAAG,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface DialogInfo {
|
|
3
|
+
type: 'alert' | 'confirm' | 'prompt' | 'beforeunload';
|
|
4
|
+
message: string;
|
|
5
|
+
defaultPrompt?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function setupDialogAutoHandling(client: CdpClient, sessionId: string, autoAccept?: boolean): void;
|
|
8
|
+
export declare function acceptDialog(client: CdpClient, sessionId: string, text?: string): Promise<void>;
|
|
9
|
+
export declare function dismissDialog(client: CdpClient, sessionId: string): Promise<void>;
|
|
10
|
+
export declare function getDialogStatus(): DialogInfo | null;
|
|
11
|
+
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/browser/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI,CAqBrG;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrG;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF;AAED,wBAAgB,eAAe,IAAI,UAAU,GAAG,IAAI,CAEnD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
let pendingDialog = null;
|
|
2
|
+
export function setupDialogAutoHandling(client, sessionId, autoAccept = true) {
|
|
3
|
+
client.on('Page.javascriptDialogOpening', async (params, sid) => {
|
|
4
|
+
if (sid !== sessionId)
|
|
5
|
+
return;
|
|
6
|
+
const info = {
|
|
7
|
+
type: params.type,
|
|
8
|
+
message: params.message,
|
|
9
|
+
defaultPrompt: params.defaultPrompt,
|
|
10
|
+
};
|
|
11
|
+
pendingDialog = info;
|
|
12
|
+
if (autoAccept && (info.type === 'alert' || info.type === 'beforeunload')) {
|
|
13
|
+
await client.send('Page.handleJavaScriptDialog', { accept: true }, sessionId);
|
|
14
|
+
pendingDialog = null;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
client.on('Page.javascriptDialogClosed', (_, sid) => {
|
|
18
|
+
if (sid === sessionId)
|
|
19
|
+
pendingDialog = null;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export async function acceptDialog(client, sessionId, text) {
|
|
23
|
+
await client.send('Page.handleJavaScriptDialog', {
|
|
24
|
+
accept: true,
|
|
25
|
+
promptText: text,
|
|
26
|
+
}, sessionId);
|
|
27
|
+
pendingDialog = null;
|
|
28
|
+
}
|
|
29
|
+
export async function dismissDialog(client, sessionId) {
|
|
30
|
+
await client.send('Page.handleJavaScriptDialog', { accept: false }, sessionId);
|
|
31
|
+
pendingDialog = null;
|
|
32
|
+
}
|
|
33
|
+
export function getDialogStatus() {
|
|
34
|
+
return pendingDialog;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/browser/dialog.ts"],"names":[],"mappings":"AAQA,IAAI,aAAa,GAAsB,IAAI,CAAC;AAE5C,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,SAAiB,EAAE,UAAU,GAAG,IAAI;IAC7F,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC9D,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAE9B,MAAM,IAAI,GAAe;YACvB,IAAI,EAAE,MAAM,CAAC,IAA0B;YACvC,OAAO,EAAE,MAAM,CAAC,OAAiB;YACjC,aAAa,EAAE,MAAM,CAAC,aAAmC;SAC1D,CAAC;QAEF,aAAa,GAAG,IAAI,CAAC;QAErB,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9E,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,GAAG,KAAK,SAAS;YAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAiB,EAAE,SAAiB,EAAE,IAAa;IACpF,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;QAC/C,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;KACjB,EAAE,SAAS,CAAC,CAAC;IACd,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB,EAAE,SAAiB;IACtE,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/E,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
export interface DeviceProfile {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
deviceScaleFactor: number;
|
|
6
|
+
mobile: boolean;
|
|
7
|
+
userAgent: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function emulateDevice(client: CdpClient, sessionId: string, deviceName: string): Promise<void>;
|
|
10
|
+
export declare function setGeolocation(client: CdpClient, sessionId: string, latitude: number, longitude: number, accuracy?: number): Promise<void>;
|
|
11
|
+
export declare function setOfflineMode(client: CdpClient, sessionId: string, offline: boolean): Promise<void>;
|
|
12
|
+
export declare function setColorScheme(client: CdpClient, sessionId: string, scheme: 'dark' | 'light' | 'no-preference'): Promise<void>;
|
|
13
|
+
export declare function setBasicAuth(client: CdpClient, sessionId: string, username: string, password: string): Promise<void>;
|
|
14
|
+
export declare function listDevices(): string[];
|
|
15
|
+
//# sourceMappingURL=emulation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emulation.d.ts","sourceRoot":"","sources":["../../../src/browser/emulation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAyBD,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3G;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1G;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,eAAe,GACzC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const DEVICES = {
|
|
2
|
+
'iPhone 14': {
|
|
3
|
+
width: 390, height: 844, deviceScaleFactor: 3, mobile: true,
|
|
4
|
+
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1',
|
|
5
|
+
},
|
|
6
|
+
'iPhone SE': {
|
|
7
|
+
width: 375, height: 667, deviceScaleFactor: 2, mobile: true,
|
|
8
|
+
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1',
|
|
9
|
+
},
|
|
10
|
+
'iPad': {
|
|
11
|
+
width: 768, height: 1024, deviceScaleFactor: 2, mobile: true,
|
|
12
|
+
userAgent: 'Mozilla/5.0 (iPad; CPU OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1',
|
|
13
|
+
},
|
|
14
|
+
'Galaxy S21': {
|
|
15
|
+
width: 360, height: 800, deviceScaleFactor: 3, mobile: true,
|
|
16
|
+
userAgent: 'Mozilla/5.0 (Linux; Android 11; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Mobile Safari/537.36',
|
|
17
|
+
},
|
|
18
|
+
'Pixel 5': {
|
|
19
|
+
width: 393, height: 851, deviceScaleFactor: 2.75, mobile: true,
|
|
20
|
+
userAgent: 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Mobile Safari/537.36',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export async function emulateDevice(client, sessionId, deviceName) {
|
|
24
|
+
const device = DEVICES[deviceName];
|
|
25
|
+
if (!device) {
|
|
26
|
+
throw new Error(`Unknown device: "${deviceName}". Available: ${Object.keys(DEVICES).join(', ')}`);
|
|
27
|
+
}
|
|
28
|
+
await client.send('Emulation.setDeviceMetricsOverride', {
|
|
29
|
+
width: device.width,
|
|
30
|
+
height: device.height,
|
|
31
|
+
deviceScaleFactor: device.deviceScaleFactor,
|
|
32
|
+
mobile: device.mobile,
|
|
33
|
+
}, sessionId);
|
|
34
|
+
await client.send('Emulation.setUserAgentOverride', { userAgent: device.userAgent }, sessionId);
|
|
35
|
+
await client.send('Emulation.setTouchEmulationEnabled', { enabled: device.mobile }, sessionId);
|
|
36
|
+
}
|
|
37
|
+
export async function setGeolocation(client, sessionId, latitude, longitude, accuracy = 100) {
|
|
38
|
+
await client.send('Emulation.setGeolocationOverride', { latitude, longitude, accuracy }, sessionId);
|
|
39
|
+
}
|
|
40
|
+
export async function setOfflineMode(client, sessionId, offline) {
|
|
41
|
+
await client.send('Network.emulateNetworkConditions', {
|
|
42
|
+
offline,
|
|
43
|
+
latency: 0,
|
|
44
|
+
downloadThroughput: -1,
|
|
45
|
+
uploadThroughput: -1,
|
|
46
|
+
}, sessionId);
|
|
47
|
+
}
|
|
48
|
+
export async function setColorScheme(client, sessionId, scheme) {
|
|
49
|
+
await client.send('Emulation.setEmulatedMedia', {
|
|
50
|
+
features: [{ name: 'prefers-color-scheme', value: scheme }],
|
|
51
|
+
}, sessionId);
|
|
52
|
+
}
|
|
53
|
+
export async function setBasicAuth(client, sessionId, username, password) {
|
|
54
|
+
const encoded = Buffer.from(`${username}:${password}`).toString('base64');
|
|
55
|
+
await client.send('Network.setExtraHTTPHeaders', {
|
|
56
|
+
headers: { Authorization: `Basic ${encoded}` },
|
|
57
|
+
}, sessionId);
|
|
58
|
+
}
|
|
59
|
+
export function listDevices() {
|
|
60
|
+
return Object.keys(DEVICES);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=emulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emulation.js","sourceRoot":"","sources":["../../../src/browser/emulation.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,GAAkC;IAC7C,WAAW,EAAE;QACX,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI;QAC3D,SAAS,EAAE,yIAAyI;KACrJ;IACD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI;QAC3D,SAAS,EAAE,yIAAyI;KACrJ;IACD,MAAM,EAAE;QACN,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI;QAC5D,SAAS,EAAE,gIAAgI;KAC5I;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI;QAC3D,SAAS,EAAE,4HAA4H;KACxI;IACD,SAAS,EAAE;QACT,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;QAC9D,SAAS,EAAE,2HAA2H;KACvI;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB,EAAE,SAAiB,EAAE,UAAkB;IAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,iBAAiB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;QACtD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,EAAE,SAAS,CAAC,CAAC;IAEd,MAAM,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;IAChG,MAAM,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,QAAQ,GAAG,GAAG;IAEd,MAAM,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAiB,EAAE,SAAiB,EAAE,OAAgB;IACzF,MAAM,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;QACpD,OAAO;QACP,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC,CAAC;QACtB,gBAAgB,EAAE,CAAC,CAAC;KACrB,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,SAAiB,EACjB,MAA0C;IAE1C,MAAM,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KAC5D,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;QAC/C,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,OAAO,EAAE,EAAE;KAC/C,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CdpClient } from './cdp.js';
|
|
2
|
+
import type { ElementRef } from './types.js';
|
|
3
|
+
export type FindAction = 'click' | 'fill' | 'type' | 'hover' | 'focus' | 'check' | 'uncheck' | 'text';
|
|
4
|
+
export interface FindOptions {
|
|
5
|
+
name?: string;
|
|
6
|
+
exact?: boolean;
|
|
7
|
+
nth?: number;
|
|
8
|
+
first?: boolean;
|
|
9
|
+
last?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function findBySelector(client: CdpClient, sessionId: string, selector: string, options?: FindOptions): Promise<string | null>;
|
|
12
|
+
export declare function findByRole(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, role: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
13
|
+
export declare function findByText(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, text: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
14
|
+
export declare function findByLabel(client: CdpClient, sessionId: string, refs: Map<string, ElementRef>, label: string, options?: FindOptions): Promise<ElementRef | null>;
|
|
15
|
+
export declare function findByTestId(client: CdpClient, sessionId: string, testId: string): Promise<string | null>;
|
|
16
|
+
export declare function isVisible(client: CdpClient, sessionId: string, ref: ElementRef): Promise<boolean>;
|
|
17
|
+
export declare function isEnabled(client: CdpClient, sessionId: string, ref: ElementRef): Promise<boolean>;
|
|
18
|
+
export declare function isChecked(client: CdpClient, sessionId: string, ref: ElementRef): Promise<boolean>;
|
|
19
|
+
export declare function scrollIntoView(client: CdpClient, sessionId: string, ref: ElementRef): Promise<void>;
|
|
20
|
+
export declare function highlightElement(client: CdpClient, sessionId: string, ref: ElementRef): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=find.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { evaluateJs } from './actions.js';
|
|
2
|
+
import { getObjectIdForRef } from './snapshot.js';
|
|
3
|
+
export async function findBySelector(client, sessionId, selector, options = {}) {
|
|
4
|
+
let expr;
|
|
5
|
+
if (options.nth !== undefined) {
|
|
6
|
+
expr = `document.querySelectorAll(${JSON.stringify(selector)})[${options.nth - 1}]?.outerHTML ?? null`;
|
|
7
|
+
}
|
|
8
|
+
else if (options.last) {
|
|
9
|
+
expr = `Array.from(document.querySelectorAll(${JSON.stringify(selector)})).at(-1)?.outerHTML ?? null`;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
expr = `document.querySelector(${JSON.stringify(selector)})?.outerHTML ?? null`;
|
|
13
|
+
}
|
|
14
|
+
return evaluateJs(client, sessionId, expr);
|
|
15
|
+
}
|
|
16
|
+
export async function findByRole(client, sessionId, refs, role, options = {}) {
|
|
17
|
+
const lowerRole = role.toLowerCase();
|
|
18
|
+
const candidates = [...refs.values()].filter((r) => r.role.toLowerCase() === lowerRole);
|
|
19
|
+
let matches = candidates;
|
|
20
|
+
if (options.name) {
|
|
21
|
+
const nameLower = options.name.toLowerCase();
|
|
22
|
+
matches = options.exact
|
|
23
|
+
? candidates.filter((r) => r.name.toLowerCase() === nameLower)
|
|
24
|
+
: candidates.filter((r) => r.name.toLowerCase().includes(nameLower));
|
|
25
|
+
}
|
|
26
|
+
if (matches.length === 0)
|
|
27
|
+
return null;
|
|
28
|
+
if (options.nth !== undefined)
|
|
29
|
+
return matches[options.nth - 1] ?? null;
|
|
30
|
+
if (options.last)
|
|
31
|
+
return matches[matches.length - 1];
|
|
32
|
+
return matches[0];
|
|
33
|
+
}
|
|
34
|
+
export async function findByText(client, sessionId, refs, text, options = {}) {
|
|
35
|
+
const lower = text.toLowerCase();
|
|
36
|
+
const candidates = [...refs.values()].filter((r) => options.exact ? r.name.toLowerCase() === lower : r.name.toLowerCase().includes(lower));
|
|
37
|
+
if (options.nth !== undefined)
|
|
38
|
+
return candidates[options.nth - 1] ?? null;
|
|
39
|
+
if (options.last)
|
|
40
|
+
return candidates[candidates.length - 1];
|
|
41
|
+
return candidates[0] ?? null;
|
|
42
|
+
}
|
|
43
|
+
export async function findByLabel(client, sessionId, refs, label, options = {}) {
|
|
44
|
+
return findByText(client, sessionId, refs, label, options);
|
|
45
|
+
}
|
|
46
|
+
export async function findByTestId(client, sessionId, testId) {
|
|
47
|
+
const selectors = [
|
|
48
|
+
`[data-testid="${testId}"]`,
|
|
49
|
+
`[data-test-id="${testId}"]`,
|
|
50
|
+
`[data-test="${testId}"]`,
|
|
51
|
+
];
|
|
52
|
+
for (const sel of selectors) {
|
|
53
|
+
const result = await evaluateJs(client, sessionId, `!!document.querySelector(${JSON.stringify(sel)})`);
|
|
54
|
+
if (result)
|
|
55
|
+
return sel;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
export async function isVisible(client, sessionId, ref) {
|
|
60
|
+
const objectId = await getObjectIdForRef(client, sessionId, ref);
|
|
61
|
+
if (!objectId)
|
|
62
|
+
return false;
|
|
63
|
+
const result = await client.send('Runtime.callFunctionOn', {
|
|
64
|
+
functionDeclaration: `function() {
|
|
65
|
+
const rect = this.getBoundingClientRect();
|
|
66
|
+
const style = window.getComputedStyle(this);
|
|
67
|
+
return rect.width > 0 && rect.height > 0 &&
|
|
68
|
+
style.display !== 'none' &&
|
|
69
|
+
style.visibility !== 'hidden' &&
|
|
70
|
+
style.opacity !== '0';
|
|
71
|
+
}`,
|
|
72
|
+
objectId,
|
|
73
|
+
returnByValue: true,
|
|
74
|
+
}, sessionId);
|
|
75
|
+
return result.result?.value ?? false;
|
|
76
|
+
}
|
|
77
|
+
export async function isEnabled(client, sessionId, ref) {
|
|
78
|
+
return !ref.disabled;
|
|
79
|
+
}
|
|
80
|
+
export async function isChecked(client, sessionId, ref) {
|
|
81
|
+
const objectId = await getObjectIdForRef(client, sessionId, ref);
|
|
82
|
+
if (!objectId)
|
|
83
|
+
return false;
|
|
84
|
+
const result = await client.send('Runtime.callFunctionOn', {
|
|
85
|
+
functionDeclaration: 'function() { return !!this.checked; }',
|
|
86
|
+
objectId,
|
|
87
|
+
returnByValue: true,
|
|
88
|
+
}, sessionId);
|
|
89
|
+
return result.result?.value ?? false;
|
|
90
|
+
}
|
|
91
|
+
export async function scrollIntoView(client, sessionId, ref) {
|
|
92
|
+
const objectId = await getObjectIdForRef(client, sessionId, ref);
|
|
93
|
+
if (!objectId)
|
|
94
|
+
throw new Error(`Cannot scroll: ref @${ref.ref} not found in DOM`);
|
|
95
|
+
await client.send('Runtime.callFunctionOn', {
|
|
96
|
+
functionDeclaration: 'function() { this.scrollIntoView({ behavior: "smooth", block: "center" }); }',
|
|
97
|
+
objectId,
|
|
98
|
+
}, sessionId);
|
|
99
|
+
}
|
|
100
|
+
export async function highlightElement(client, sessionId, ref) {
|
|
101
|
+
const objectId = await getObjectIdForRef(client, sessionId, ref);
|
|
102
|
+
if (!objectId)
|
|
103
|
+
return;
|
|
104
|
+
await client.send('Runtime.callFunctionOn', {
|
|
105
|
+
functionDeclaration: `function() {
|
|
106
|
+
const prev = this.style.outline;
|
|
107
|
+
const prevBg = this.style.backgroundColor;
|
|
108
|
+
this.style.outline = '3px solid #ff5722';
|
|
109
|
+
this.style.backgroundColor = 'rgba(255, 87, 34, 0.1)';
|
|
110
|
+
setTimeout(() => {
|
|
111
|
+
this.style.outline = prev;
|
|
112
|
+
this.style.backgroundColor = prevBg;
|
|
113
|
+
}, 2000);
|
|
114
|
+
}`,
|
|
115
|
+
objectId,
|
|
116
|
+
}, sessionId);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/browser/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './cdp.js';
|
|
3
|
+
export * from './browser.js';
|
|
4
|
+
export * from './snapshot.js';
|
|
5
|
+
export * from './actions.js';
|
|
6
|
+
export * from './wait.js';
|
|
7
|
+
export * from './network.js';
|
|
8
|
+
export * from './screenshot.js';
|
|
9
|
+
export * from './session.js';
|
|
10
|
+
export * from './tabs.js';
|
|
11
|
+
export * from './dialog.js';
|
|
12
|
+
export * from './console-log.js';
|
|
13
|
+
export * from './storage.js';
|
|
14
|
+
export * from './find.js';
|
|
15
|
+
export * from './pdf.js';
|
|
16
|
+
export * from './emulation.js';
|
|
17
|
+
export * from './batch.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './cdp.js';
|
|
3
|
+
export * from './browser.js';
|
|
4
|
+
export * from './snapshot.js';
|
|
5
|
+
export * from './actions.js';
|
|
6
|
+
export * from './wait.js';
|
|
7
|
+
export * from './network.js';
|
|
8
|
+
export * from './screenshot.js';
|
|
9
|
+
export * from './session.js';
|
|
10
|
+
export * from './tabs.js';
|
|
11
|
+
export * from './dialog.js';
|
|
12
|
+
export * from './console-log.js';
|
|
13
|
+
export * from './storage.js';
|
|
14
|
+
export * from './find.js';
|
|
15
|
+
export * from './pdf.js';
|
|
16
|
+
export * from './emulation.js';
|
|
17
|
+
export * from './batch.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
export declare function getLocalStorage(client: CdpClient, sessionId: string): Promise<Record<string, string>>;
|
|
10
|
+
export declare function setLocalStorage(client: CdpClient, sessionId: string, data: Record<string, string>): Promise<void>;
|
|
11
|
+
//# 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;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"}
|