@monoes/monobrowse 1.0.6 → 1.0.7
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/README.md +68 -0
- package/dist/src/__tests__/adapters.test.d.ts +2 -0
- package/dist/src/__tests__/adapters.test.d.ts.map +1 -0
- package/dist/src/__tests__/adapters.test.js +104 -0
- package/dist/src/__tests__/adapters.test.js.map +1 -0
- package/dist/src/__tests__/batch-eval-parsing.test.d.ts +0 -0
- package/dist/src/__tests__/batch-eval-parsing.test.d.ts.map +0 -0
- package/dist/src/__tests__/batch-eval-parsing.test.js +0 -0
- package/dist/src/__tests__/batch-eval-parsing.test.js.map +0 -0
- package/dist/src/__tests__/box-model.test.d.ts +0 -0
- package/dist/src/__tests__/box-model.test.d.ts.map +0 -0
- package/dist/src/__tests__/box-model.test.js +0 -0
- package/dist/src/__tests__/box-model.test.js.map +0 -0
- package/dist/src/__tests__/browser-launch.test.d.ts +0 -0
- package/dist/src/__tests__/browser-launch.test.d.ts.map +0 -0
- package/dist/src/__tests__/browser-launch.test.js +0 -0
- package/dist/src/__tests__/browser-launch.test.js.map +0 -0
- package/dist/src/__tests__/cdp-client.test.d.ts +2 -0
- package/dist/src/__tests__/cdp-client.test.d.ts.map +1 -0
- package/dist/src/__tests__/cdp-client.test.js +326 -0
- package/dist/src/__tests__/cdp-client.test.js.map +1 -0
- package/dist/src/__tests__/close-browser.test.d.ts +2 -0
- package/dist/src/__tests__/close-browser.test.d.ts.map +1 -0
- package/dist/src/__tests__/close-browser.test.js +128 -0
- package/dist/src/__tests__/close-browser.test.js.map +1 -0
- package/dist/src/__tests__/console-log.test.d.ts +2 -0
- package/dist/src/__tests__/console-log.test.d.ts.map +1 -0
- package/dist/src/__tests__/console-log.test.js +195 -0
- package/dist/src/__tests__/console-log.test.js.map +1 -0
- package/dist/src/__tests__/find.test.d.ts +2 -0
- package/dist/src/__tests__/find.test.d.ts.map +1 -0
- package/dist/src/__tests__/find.test.js +299 -0
- package/dist/src/__tests__/find.test.js.map +1 -0
- package/dist/src/__tests__/frame-command.test.d.ts +2 -0
- package/dist/src/__tests__/frame-command.test.d.ts.map +1 -0
- package/dist/src/__tests__/frame-command.test.js +85 -0
- package/dist/src/__tests__/frame-command.test.js.map +1 -0
- package/dist/src/__tests__/output.test.d.ts +0 -0
- package/dist/src/__tests__/output.test.d.ts.map +0 -0
- package/dist/src/__tests__/output.test.js +0 -0
- package/dist/src/__tests__/output.test.js.map +0 -0
- package/dist/src/__tests__/ref-cache.test.d.ts +0 -0
- package/dist/src/__tests__/ref-cache.test.d.ts.map +0 -0
- package/dist/src/__tests__/ref-cache.test.js +43 -2
- package/dist/src/__tests__/ref-cache.test.js.map +1 -1
- package/dist/src/__tests__/session-state.test.d.ts +2 -0
- package/dist/src/__tests__/session-state.test.d.ts.map +1 -0
- package/dist/src/__tests__/session-state.test.js +203 -0
- package/dist/src/__tests__/session-state.test.js.map +1 -0
- package/dist/src/__tests__/snapshot.test.d.ts +2 -0
- package/dist/src/__tests__/snapshot.test.d.ts.map +1 -0
- package/dist/src/__tests__/snapshot.test.js +262 -0
- package/dist/src/__tests__/snapshot.test.js.map +1 -0
- package/dist/src/__tests__/storage-eval.test.d.ts +2 -0
- package/dist/src/__tests__/storage-eval.test.d.ts.map +1 -0
- package/dist/src/__tests__/storage-eval.test.js +133 -0
- package/dist/src/__tests__/storage-eval.test.js.map +1 -0
- package/dist/src/__tests__/tabs.test.d.ts +2 -0
- package/dist/src/__tests__/tabs.test.d.ts.map +1 -0
- package/dist/src/__tests__/tabs.test.js +161 -0
- package/dist/src/__tests__/tabs.test.js.map +1 -0
- package/dist/src/browser/action-builder/analyzer.d.ts +0 -0
- package/dist/src/browser/action-builder/analyzer.d.ts.map +0 -0
- package/dist/src/browser/action-builder/analyzer.js +0 -0
- package/dist/src/browser/action-builder/analyzer.js.map +0 -0
- package/dist/src/browser/action-builder/types.d.ts +0 -0
- package/dist/src/browser/action-builder/types.d.ts.map +0 -0
- package/dist/src/browser/action-builder/types.js +0 -0
- package/dist/src/browser/action-builder/types.js.map +0 -0
- package/dist/src/browser/actions.d.ts +0 -0
- package/dist/src/browser/actions.d.ts.map +0 -0
- package/dist/src/browser/actions.js +0 -0
- package/dist/src/browser/actions.js.map +0 -0
- package/dist/src/browser/adapters/gemini.d.ts +0 -0
- package/dist/src/browser/adapters/gemini.d.ts.map +0 -0
- package/dist/src/browser/adapters/gemini.js +0 -0
- package/dist/src/browser/adapters/gemini.js.map +0 -0
- package/dist/src/browser/adapters/google.d.ts +0 -0
- package/dist/src/browser/adapters/google.d.ts.map +0 -0
- package/dist/src/browser/adapters/google.js +0 -0
- package/dist/src/browser/adapters/google.js.map +0 -0
- package/dist/src/browser/adapters/index.d.ts +0 -0
- package/dist/src/browser/adapters/index.d.ts.map +0 -0
- package/dist/src/browser/adapters/index.js +0 -0
- package/dist/src/browser/adapters/index.js.map +0 -0
- package/dist/src/browser/adapters/instagram.d.ts +0 -0
- package/dist/src/browser/adapters/instagram.d.ts.map +0 -0
- package/dist/src/browser/adapters/instagram.js +0 -0
- package/dist/src/browser/adapters/instagram.js.map +0 -0
- package/dist/src/browser/adapters/linkedin.d.ts +0 -0
- package/dist/src/browser/adapters/linkedin.d.ts.map +0 -0
- package/dist/src/browser/adapters/linkedin.js +0 -0
- package/dist/src/browser/adapters/linkedin.js.map +0 -0
- package/dist/src/browser/adapters/microsoft.d.ts +0 -0
- package/dist/src/browser/adapters/microsoft.d.ts.map +0 -0
- package/dist/src/browser/adapters/microsoft.js +0 -0
- package/dist/src/browser/adapters/microsoft.js.map +0 -0
- package/dist/src/browser/adapters/x.d.ts +0 -0
- package/dist/src/browser/adapters/x.d.ts.map +0 -0
- package/dist/src/browser/adapters/x.js +0 -0
- package/dist/src/browser/adapters/x.js.map +0 -0
- package/dist/src/browser/batch.d.ts +0 -0
- package/dist/src/browser/batch.d.ts.map +0 -0
- package/dist/src/browser/batch.js +0 -0
- package/dist/src/browser/batch.js.map +0 -0
- package/dist/src/browser/browser.d.ts +4 -0
- package/dist/src/browser/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +55 -7
- package/dist/src/browser/browser.js.map +1 -1
- package/dist/src/browser/cdp.d.ts +4 -1
- package/dist/src/browser/cdp.d.ts.map +1 -1
- package/dist/src/browser/cdp.js +45 -16
- package/dist/src/browser/cdp.js.map +1 -1
- package/dist/src/browser/console-log.d.ts +0 -0
- package/dist/src/browser/console-log.d.ts.map +0 -0
- package/dist/src/browser/console-log.js +0 -0
- package/dist/src/browser/console-log.js.map +0 -0
- package/dist/src/browser/dashboard/api-types.d.ts +0 -0
- package/dist/src/browser/dashboard/api-types.d.ts.map +0 -0
- package/dist/src/browser/dashboard/api-types.js +0 -0
- package/dist/src/browser/dashboard/api-types.js.map +0 -0
- package/dist/src/browser/dashboard/server.d.ts +0 -0
- package/dist/src/browser/dashboard/server.d.ts.map +0 -0
- package/dist/src/browser/dashboard/server.js +0 -0
- package/dist/src/browser/dashboard/server.js.map +0 -0
- package/dist/src/browser/dialog.d.ts +0 -0
- package/dist/src/browser/dialog.d.ts.map +0 -0
- package/dist/src/browser/dialog.js +0 -0
- package/dist/src/browser/dialog.js.map +0 -0
- package/dist/src/browser/emulation.d.ts +0 -0
- package/dist/src/browser/emulation.d.ts.map +0 -0
- package/dist/src/browser/emulation.js +0 -0
- package/dist/src/browser/emulation.js.map +0 -0
- package/dist/src/browser/find.d.ts +0 -0
- package/dist/src/browser/find.d.ts.map +0 -0
- package/dist/src/browser/find.js +0 -0
- package/dist/src/browser/find.js.map +0 -0
- package/dist/src/browser/har.d.ts +0 -0
- package/dist/src/browser/har.d.ts.map +0 -0
- package/dist/src/browser/har.js +0 -0
- package/dist/src/browser/har.js.map +0 -0
- package/dist/src/browser/index.d.ts +0 -0
- package/dist/src/browser/index.d.ts.map +0 -0
- package/dist/src/browser/index.js +0 -0
- package/dist/src/browser/index.js.map +0 -0
- package/dist/src/browser/network.d.ts +0 -0
- package/dist/src/browser/network.d.ts.map +0 -0
- package/dist/src/browser/network.js +0 -0
- package/dist/src/browser/network.js.map +0 -0
- package/dist/src/browser/pdf.d.ts +0 -0
- package/dist/src/browser/pdf.d.ts.map +0 -0
- package/dist/src/browser/pdf.js +0 -0
- package/dist/src/browser/pdf.js.map +0 -0
- package/dist/src/browser/profiler.d.ts +0 -0
- package/dist/src/browser/profiler.d.ts.map +0 -0
- package/dist/src/browser/profiler.js +0 -0
- package/dist/src/browser/profiler.js.map +0 -0
- package/dist/src/browser/record.d.ts +0 -0
- package/dist/src/browser/record.d.ts.map +0 -0
- package/dist/src/browser/record.js +0 -0
- package/dist/src/browser/record.js.map +0 -0
- package/dist/src/browser/ref-cache.d.ts +6 -1
- package/dist/src/browser/ref-cache.d.ts.map +1 -1
- package/dist/src/browser/ref-cache.js +21 -3
- package/dist/src/browser/ref-cache.js.map +1 -1
- package/dist/src/browser/screenshot.d.ts +0 -0
- package/dist/src/browser/screenshot.d.ts.map +0 -0
- package/dist/src/browser/screenshot.js +0 -0
- package/dist/src/browser/screenshot.js.map +0 -0
- package/dist/src/browser/session.d.ts +0 -0
- package/dist/src/browser/session.d.ts.map +0 -0
- package/dist/src/browser/session.js +0 -0
- package/dist/src/browser/session.js.map +0 -0
- package/dist/src/browser/snapshot.d.ts +0 -0
- package/dist/src/browser/snapshot.d.ts.map +0 -0
- package/dist/src/browser/snapshot.js +0 -0
- package/dist/src/browser/snapshot.js.map +0 -0
- package/dist/src/browser/storage.d.ts +0 -0
- package/dist/src/browser/storage.d.ts.map +0 -0
- package/dist/src/browser/storage.js +0 -0
- package/dist/src/browser/storage.js.map +0 -0
- package/dist/src/browser/tabs.d.ts +5 -1
- package/dist/src/browser/tabs.d.ts.map +1 -1
- package/dist/src/browser/tabs.js +4 -3
- package/dist/src/browser/tabs.js.map +1 -1
- package/dist/src/browser/trace.d.ts +0 -0
- package/dist/src/browser/trace.d.ts.map +0 -0
- package/dist/src/browser/trace.js +0 -0
- package/dist/src/browser/trace.js.map +0 -0
- package/dist/src/browser/types.d.ts +4 -0
- package/dist/src/browser/types.d.ts.map +1 -1
- package/dist/src/browser/types.js +0 -0
- package/dist/src/browser/types.js.map +1 -1
- package/dist/src/browser/vitals.d.ts +0 -0
- package/dist/src/browser/vitals.d.ts.map +0 -0
- package/dist/src/browser/vitals.js +0 -0
- package/dist/src/browser/vitals.js.map +0 -0
- package/dist/src/browser/wait.d.ts +0 -0
- package/dist/src/browser/wait.d.ts.map +0 -0
- package/dist/src/browser/wait.js +0 -0
- package/dist/src/browser/wait.js.map +0 -0
- package/dist/src/cli/action.d.ts +0 -0
- package/dist/src/cli/action.d.ts.map +0 -0
- package/dist/src/cli/action.js +0 -0
- package/dist/src/cli/action.js.map +0 -0
- package/dist/src/cli/commands.d.ts +0 -0
- package/dist/src/cli/commands.d.ts.map +1 -1
- package/dist/src/cli/commands.js +96 -4
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/output.d.ts +0 -0
- package/dist/src/cli/output.d.ts.map +0 -0
- package/dist/src/cli/output.js +0 -0
- package/dist/src/cli/output.js.map +0 -0
- package/dist/src/cli/platform.d.ts +0 -0
- package/dist/src/cli/platform.d.ts.map +0 -0
- package/dist/src/cli/platform.js +0 -0
- package/dist/src/cli/platform.js.map +0 -0
- package/dist/src/cli/types.d.ts +0 -0
- package/dist/src/cli/types.d.ts.map +0 -0
- package/dist/src/cli/types.js +0 -0
- package/dist/src/cli/types.js.map +0 -0
- package/dist/src/cli.d.ts +0 -0
- package/dist/src/cli.d.ts.map +0 -0
- package/dist/src/cli.js +0 -0
- package/dist/src/cli.js.map +0 -0
- package/dist/src/index.d.ts +0 -0
- package/dist/src/index.d.ts.map +0 -0
- package/dist/src/index.js +0 -0
- package/dist/src/index.js.map +0 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -5
- package/src/__tests__/adapters.test.ts +125 -0
- package/src/__tests__/cdp-client.test.ts +375 -0
- package/src/__tests__/close-browser.test.ts +141 -0
- package/src/__tests__/console-log.test.ts +250 -0
- package/src/__tests__/find.test.ts +354 -0
- package/src/__tests__/frame-command.test.ts +98 -0
- package/src/__tests__/ref-cache.test.ts +47 -2
- package/src/__tests__/session-state.test.ts +251 -0
- package/src/__tests__/snapshot.test.ts +331 -0
- package/src/__tests__/storage-eval.test.ts +171 -0
- package/src/__tests__/tabs.test.ts +183 -0
- package/src/browser/browser.ts +59 -7
- package/src/browser/cdp.ts +52 -15
- package/src/browser/ref-cache.ts +29 -6
- package/src/browser/tabs.ts +12 -4
- package/src/browser/types.ts +4 -0
- package/src/cli/commands.ts +90 -4
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/src/browser/wait.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/src/cli/action.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/src/cli/action.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAwgFzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GACrE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUlG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CA6B5H;AAycD,QAAA,MAAM,aAAa,EAAE,OAmJpB,CAAC;eAEa,aAAa"}
|
package/dist/src/cli/commands.js
CHANGED
|
@@ -12,9 +12,55 @@ let _sessionId = '';
|
|
|
12
12
|
let _targetId = '';
|
|
13
13
|
let _port = DEFAULT_PORT;
|
|
14
14
|
let _refs = new Map();
|
|
15
|
+
// Saved parent sessionId when inside an iframe — restored by `frame main`.
|
|
16
|
+
let _parentSessionId = '';
|
|
15
17
|
async function getBrowser() {
|
|
16
18
|
return import('../index.js');
|
|
17
19
|
}
|
|
20
|
+
// Best-effort cleanup on Ctrl-C / kill so a launched Chrome doesn't linger as
|
|
21
|
+
// an orphan process when a command is interrupted mid-flight (e.g. during a
|
|
22
|
+
// long-running wait/eval that CdpClient.send()'s own timeout hasn't tripped
|
|
23
|
+
// yet).
|
|
24
|
+
//
|
|
25
|
+
// This module is imported for EVERY `monomind` CLI invocation (commands/
|
|
26
|
+
// index.ts statically imports browse.ts, which imports this file) — not just
|
|
27
|
+
// browse commands — so the handler is only *registered* once a browser
|
|
28
|
+
// session is actually launched here (see ensureSignalCleanupHandlers(),
|
|
29
|
+
// called from the `open` action below), not at module load. Registering
|
|
30
|
+
// unconditionally at import time would call process.exit() on Ctrl-C for
|
|
31
|
+
// every unrelated monomind command (e.g. a long-running `org run` daemon),
|
|
32
|
+
// pre-empting whatever other SIGINT/SIGTERM handling that process needs.
|
|
33
|
+
const SIGNAL_EXIT_CODES = { SIGINT: 130, SIGTERM: 143 };
|
|
34
|
+
let _signalHandlersRegistered = false;
|
|
35
|
+
function ensureSignalCleanupHandlers() {
|
|
36
|
+
if (_signalHandlersRegistered)
|
|
37
|
+
return;
|
|
38
|
+
_signalHandlersRegistered = true;
|
|
39
|
+
for (const sig of ['SIGINT', 'SIGTERM']) {
|
|
40
|
+
process.on(sig, () => {
|
|
41
|
+
void (async () => {
|
|
42
|
+
try {
|
|
43
|
+
const browser = await getBrowser();
|
|
44
|
+
if (_client) {
|
|
45
|
+
await browser.closeBrowser(_client, _port);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const pid = browser.getLaunchedPid(_port);
|
|
49
|
+
if (pid !== undefined) {
|
|
50
|
+
try {
|
|
51
|
+
process.kill(pid, 'SIGKILL');
|
|
52
|
+
}
|
|
53
|
+
catch { /* already exited */ }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// best-effort — never block process exit on cleanup failure
|
|
59
|
+
}
|
|
60
|
+
})().finally(() => process.exit(SIGNAL_EXIT_CODES[sig]));
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
18
64
|
// Each CLI invocation is a fresh process, so this module's `_port` variable
|
|
19
65
|
// is always freshly initialized to DEFAULT_PORT — a `--port 9333` passed to
|
|
20
66
|
// an earlier `open` command has no effect on this process's own default.
|
|
@@ -57,6 +103,7 @@ async function ensureConnected(port, targetId) {
|
|
|
57
103
|
_client = conn.client;
|
|
58
104
|
_sessionId = conn.sessionId;
|
|
59
105
|
_targetId = conn.target.id;
|
|
106
|
+
_parentSessionId = '';
|
|
60
107
|
_refs = new Map();
|
|
61
108
|
await hydrateRefsFromCache(browser, _targetId, conn.target.url);
|
|
62
109
|
}
|
|
@@ -145,6 +192,7 @@ async function switchToHeaded(url, port) {
|
|
|
145
192
|
_client.close();
|
|
146
193
|
_client = null;
|
|
147
194
|
_sessionId = '';
|
|
195
|
+
_parentSessionId = '';
|
|
148
196
|
_targetId = '';
|
|
149
197
|
}
|
|
150
198
|
// Launch headed on a neighbouring port to avoid collision
|
|
@@ -190,6 +238,7 @@ async function switchToHeaded(url, port) {
|
|
|
190
238
|
_client.close();
|
|
191
239
|
_client = null;
|
|
192
240
|
_sessionId = '';
|
|
241
|
+
_parentSessionId = '';
|
|
193
242
|
_targetId = '';
|
|
194
243
|
// Relaunch headless and restore session
|
|
195
244
|
_port = await browser.launchBrowser({ port, headless: true });
|
|
@@ -272,13 +321,40 @@ const openCommand = {
|
|
|
272
321
|
prevClient.close();
|
|
273
322
|
_client = null;
|
|
274
323
|
_sessionId = '';
|
|
324
|
+
_parentSessionId = '';
|
|
275
325
|
_targetId = '';
|
|
276
326
|
_refs = new Map();
|
|
277
327
|
}
|
|
278
328
|
_port = await browser.launchBrowser({ port, headless: !forceHeaded });
|
|
279
329
|
// Persist the active port so subsequent CLI invocations (each a fresh
|
|
280
|
-
// process) default to attaching here instead of hardcoded 9222.
|
|
281
|
-
|
|
330
|
+
// process) default to attaching here instead of hardcoded 9222. Also
|
|
331
|
+
// persist the launched PID/userDataDir so a later process's closeBrowser
|
|
332
|
+
// can still kill this Chrome even though launchedPids (browser.ts) is
|
|
333
|
+
// per-process and empty there.
|
|
334
|
+
//
|
|
335
|
+
// launchBrowser() can either LAUNCH a fresh Chrome or ATTACH to one
|
|
336
|
+
// already listening on the requested port (see its own "attach if
|
|
337
|
+
// already Chrome" comment) — it returns only a port number, with no
|
|
338
|
+
// signal telling this caller which happened. getLaunchedPid(_port) is
|
|
339
|
+
// undefined on the attach path (this process never spawned anything).
|
|
340
|
+
// Bug fixed here: unconditionally saving {pid: undefined, ...} on
|
|
341
|
+
// attach used to CLOBBER a real PID a previous `open` had already
|
|
342
|
+
// persisted for this exact port, destroying the only way a later
|
|
343
|
+
// process's closeBrowser() PID-kill fallback could ever find it.
|
|
344
|
+
const freshPid = browser.getLaunchedPid(_port);
|
|
345
|
+
const freshUserDataDir = browser.getLaunchedUserDataDir(_port);
|
|
346
|
+
if (freshPid !== undefined) {
|
|
347
|
+
await browser.saveActivePort(_port, { pid: freshPid, userDataDir: freshUserDataDir });
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
// Attach path: preserve whatever PID/userDataDir was already on file
|
|
351
|
+
// for this port (most likely from the process that originally
|
|
352
|
+
// launched it) instead of overwriting with undefined.
|
|
353
|
+
const existing = await browser.loadActivePortInfo();
|
|
354
|
+
const preserved = existing && existing.port === _port ? existing : undefined;
|
|
355
|
+
await browser.saveActivePort(_port, { pid: preserved?.pid, userDataDir: preserved?.userDataDir });
|
|
356
|
+
}
|
|
357
|
+
ensureSignalCleanupHandlers();
|
|
282
358
|
const conn = await browser.connectToTarget(_port);
|
|
283
359
|
_client = conn.client;
|
|
284
360
|
_sessionId = conn.sessionId;
|
|
@@ -1312,6 +1388,7 @@ const closeCommand = {
|
|
|
1312
1388
|
client.close();
|
|
1313
1389
|
_client = null;
|
|
1314
1390
|
_sessionId = '';
|
|
1391
|
+
_parentSessionId = '';
|
|
1315
1392
|
_targetId = '';
|
|
1316
1393
|
_refs = new Map();
|
|
1317
1394
|
// Session is gone — forget the persisted port and stale refs so later
|
|
@@ -1969,11 +2046,24 @@ const frameCommand = {
|
|
|
1969
2046
|
if (!target)
|
|
1970
2047
|
throw new Error('Usage: monomind browse frame <selector>|main');
|
|
1971
2048
|
if (target === 'main') {
|
|
2049
|
+
if (_parentSessionId) {
|
|
2050
|
+
// Detach from the OOPIF session (best-effort — it may already be gone)
|
|
2051
|
+
await client.send('Target.detachFromTarget', { sessionId: _sessionId }).catch(() => { });
|
|
2052
|
+
_sessionId = _parentSessionId;
|
|
2053
|
+
_parentSessionId = '';
|
|
2054
|
+
}
|
|
1972
2055
|
output.printSuccess('Switched to main frame');
|
|
1973
2056
|
}
|
|
1974
2057
|
else {
|
|
1975
|
-
const
|
|
1976
|
-
|
|
2058
|
+
const frameResult = await browser.switchToFrame(client, sessionId, target);
|
|
2059
|
+
if (frameResult.sessionId) {
|
|
2060
|
+
// Save the parent session so `frame main` can restore it
|
|
2061
|
+
_parentSessionId = _sessionId;
|
|
2062
|
+
_sessionId = frameResult.sessionId;
|
|
2063
|
+
// Enable CDP domains on the iframe's session so subsequent commands work
|
|
2064
|
+
await browser.enableSessionDomains(client, _sessionId);
|
|
2065
|
+
}
|
|
2066
|
+
output.printSuccess(`Switched to frame: ${frameResult.url ?? target}`);
|
|
1977
2067
|
}
|
|
1978
2068
|
return { success: true };
|
|
1979
2069
|
},
|
|
@@ -2034,6 +2124,7 @@ const tabCommand = {
|
|
|
2034
2124
|
client.close();
|
|
2035
2125
|
_client = null;
|
|
2036
2126
|
_sessionId = '';
|
|
2127
|
+
_parentSessionId = '';
|
|
2037
2128
|
_targetId = '';
|
|
2038
2129
|
_refs = new Map();
|
|
2039
2130
|
}
|
|
@@ -2845,6 +2936,7 @@ const connectCommand = {
|
|
|
2845
2936
|
prevClient.close();
|
|
2846
2937
|
_client = null;
|
|
2847
2938
|
_sessionId = '';
|
|
2939
|
+
_parentSessionId = '';
|
|
2848
2940
|
_targetId = '';
|
|
2849
2941
|
_refs = new Map();
|
|
2850
2942
|
}
|