@monoes/monobrowse 1.0.17 → 1.0.21
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/__tests__/browse-concurrency.test.d.ts +15 -0
- package/dist/src/__tests__/browse-concurrency.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-concurrency.test.js +198 -0
- package/dist/src/__tests__/browse-concurrency.test.js.map +1 -0
- package/dist/src/__tests__/browser-launch.test.js +132 -1
- package/dist/src/__tests__/browser-launch.test.js.map +1 -1
- package/dist/src/__tests__/close-browser.test.js +2 -2
- package/dist/src/__tests__/close-browser.test.js.map +1 -1
- package/dist/src/__tests__/frame-command.test.js +12 -2
- package/dist/src/__tests__/frame-command.test.js.map +1 -1
- package/dist/src/__tests__/reap-idle-browser.test.js +13 -13
- package/dist/src/__tests__/reap-idle-browser.test.js.map +1 -1
- package/dist/src/__tests__/ref-cache.test.js +96 -58
- package/dist/src/__tests__/ref-cache.test.js.map +1 -1
- package/dist/src/__tests__/report-exit-code.test.js +1 -1
- package/dist/src/__tests__/session-discovery.test.d.ts +13 -0
- package/dist/src/__tests__/session-discovery.test.d.ts.map +1 -0
- package/dist/src/__tests__/session-discovery.test.js +218 -0
- package/dist/src/__tests__/session-discovery.test.js.map +1 -0
- package/dist/src/browser/browser.d.ts +2 -1
- package/dist/src/browser/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +145 -42
- package/dist/src/browser/browser.js.map +1 -1
- package/dist/src/browser/ref-cache.d.ts +50 -22
- package/dist/src/browser/ref-cache.d.ts.map +1 -1
- package/dist/src/browser/ref-cache.js +122 -57
- package/dist/src/browser/ref-cache.js.map +1 -1
- package/dist/src/browser/types.d.ts +2 -0
- package/dist/src/browser/types.d.ts.map +1 -1
- package/dist/src/browser/types.js.map +1 -1
- package/dist/src/cli/commands-context.js +1 -1
- package/dist/src/cli/commands-context.js.map +1 -1
- package/dist/src/cli/commands-navigate.js +2 -2
- package/dist/src/cli/commands-navigate.js.map +1 -1
- package/dist/src/cli/commands-page.js +2 -2
- package/dist/src/cli/commands-page.js.map +1 -1
- package/dist/src/cli/commands-report.js +2 -2
- package/dist/src/cli/commands-report.js.map +1 -1
- package/dist/src/cli/commands-session.d.ts.map +1 -1
- package/dist/src/cli/commands-session.js +70 -56
- package/dist/src/cli/commands-session.js.map +1 -1
- package/dist/src/cli/commands.d.ts.map +1 -1
- package/dist/src/cli/commands.js +102 -66
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/session.d.ts +66 -2
- package/dist/src/cli/session.d.ts.map +1 -1
- package/dist/src/cli/session.js +190 -33
- package/dist/src/cli/session.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/__tests__/browse-concurrency.test.ts +233 -0
- package/src/__tests__/browser-launch.test.ts +142 -1
- package/src/__tests__/close-browser.test.ts +2 -2
- package/src/__tests__/frame-command.test.ts +12 -2
- package/src/__tests__/reap-idle-browser.test.ts +15 -14
- package/src/__tests__/ref-cache.test.ts +112 -59
- package/src/__tests__/report-exit-code.test.ts +1 -1
- package/src/__tests__/session-discovery.test.ts +259 -0
- package/src/browser/browser.ts +149 -39
- package/src/browser/ref-cache.ts +144 -72
- package/src/browser/types.ts +2 -0
- package/src/cli/commands-context.ts +1 -1
- package/src/cli/commands-navigate.ts +2 -2
- package/src/cli/commands-page.ts +2 -2
- package/src/cli/commands-report.ts +2 -2
- package/src/cli/commands-session.ts +74 -55
- package/src/cli/commands.ts +106 -66
- package/src/cli/session.ts +208 -33
|
@@ -7,9 +7,28 @@
|
|
|
7
7
|
* module-level. It is a mutable record rather than separate bindings because
|
|
8
8
|
* the subcommand modules that update it import it (see `session`).
|
|
9
9
|
*
|
|
10
|
+
* THE SESSION RULE (#318). A browse session is one Chrome plus the CDP port
|
|
11
|
+
* it listens on, recorded per working directory in
|
|
12
|
+
* `.monomind/monobrowse/sessions/<port>.json`:
|
|
13
|
+
*
|
|
14
|
+
* - `open` with no `--port` STARTS its own session: Chrome binds a
|
|
15
|
+
* kernel-assigned free port in a profile directory of its own. It never
|
|
16
|
+
* joins an existing one, so two uncoordinated invocations can never land
|
|
17
|
+
* on the same port or profile. `open` reports the port it got.
|
|
18
|
+
* - `open`/`connect` WITH `--port N` keep the old behaviour exactly: attach
|
|
19
|
+
* to a Chrome already listening on N, otherwise launch there.
|
|
20
|
+
* - Any later command with no `--port` acts on the newest session in this
|
|
21
|
+
* directory whose browser still answers; every dead record it passes on
|
|
22
|
+
* the way is dropped (self-heal). With none left it starts a session of
|
|
23
|
+
* its own, exactly as `open` would.
|
|
24
|
+
* - Any later command with `--port N` acts on that session, which is how a
|
|
25
|
+
* concurrent caller pins the one `open` handed it.
|
|
26
|
+
* - `close` ends exactly the session it resolved — one browser, one record.
|
|
27
|
+
*
|
|
10
28
|
* Split out of commands.ts, which is now the command catalogue.
|
|
11
29
|
*/
|
|
12
|
-
import type { CdpClient, ElementRef } from '../index.js';
|
|
30
|
+
import type { CdpClient, ElementRef, SessionRecord } from '../index.js';
|
|
31
|
+
import type { ParsedFlags } from './types.js';
|
|
13
32
|
export declare const session: {
|
|
14
33
|
client: CdpClient | null;
|
|
15
34
|
sessionId: string;
|
|
@@ -19,9 +38,54 @@ export declare const session: {
|
|
|
19
38
|
/** Saved parent sessionId when inside an iframe — restored by `frame main`. */
|
|
20
39
|
parentSessionId: string;
|
|
21
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* The session the caller pinned with `--port`, or undefined for "whichever
|
|
43
|
+
* session this directory's store resolves to". Anything unusable — absent,
|
|
44
|
+
* out of range, unparseable — reads as undefined.
|
|
45
|
+
*/
|
|
46
|
+
export declare function pinnedPort(flags: ParsedFlags): number | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Pin this process to the session named by `--port` before the subcommand
|
|
49
|
+
* runs (see the wrapper in commands.ts), so every command that resolves its
|
|
50
|
+
* session through `session.port` honours the selector.
|
|
51
|
+
*/
|
|
52
|
+
export declare function applySessionPortFlag(flags: ParsedFlags): void;
|
|
22
53
|
export declare function getBrowser(): Promise<typeof import("../index.js")>;
|
|
23
54
|
export declare function ensureSignalCleanupHandlers(): void;
|
|
24
|
-
export declare function
|
|
55
|
+
export declare function resolveLiveSession(browser: Awaited<ReturnType<typeof getBrowser>>, opts?: {
|
|
56
|
+
strict?: boolean;
|
|
57
|
+
}): Promise<SessionRecord | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Take over the single session a pre-#318 CLI recorded in this directory, so
|
|
60
|
+
* upgrading monobrowse mid-session does not strand its Chrome with no handle
|
|
61
|
+
* anyone can use. Returns the session — now an ordinary per-port record that
|
|
62
|
+
* `snapshot`, `--port` and `close` treat like any other — or null.
|
|
63
|
+
*
|
|
64
|
+
* `port` restricts adoption to a session the caller already named, so a
|
|
65
|
+
* legacy record for some other port is left for its own resolution.
|
|
66
|
+
*
|
|
67
|
+
* A record that a per-port record already supersedes, or whose browser no
|
|
68
|
+
* longer answers, is simply dropped: the same self-heal as for a dead native
|
|
69
|
+
* record, and nothing is ever written back to the old layout. This is the
|
|
70
|
+
* only place the legacy file is read, and `open` never consults it — a bare
|
|
71
|
+
* `open` still always starts a session of its own.
|
|
72
|
+
*/
|
|
73
|
+
export declare function adoptLegacySession(browser: Awaited<ReturnType<typeof getBrowser>>, opts?: {
|
|
74
|
+
port?: number;
|
|
75
|
+
}): Promise<SessionRecord | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Start or attach to the browser this session drives, and record it.
|
|
78
|
+
*
|
|
79
|
+
* With a `port`, that is the caller's explicit `--port`: attach to a Chrome
|
|
80
|
+
* already listening there, else launch there (unchanged behaviour). Without
|
|
81
|
+
* one, Chrome binds a kernel-assigned free port in a profile directory of
|
|
82
|
+
* this session's own — the allocation that makes two concurrent `open`
|
|
83
|
+
* invocations independent (#318).
|
|
84
|
+
*/
|
|
85
|
+
export declare function launchSessionBrowser(browser: Awaited<ReturnType<typeof getBrowser>>, opts: {
|
|
86
|
+
port?: number;
|
|
87
|
+
headless: boolean;
|
|
88
|
+
}): Promise<number>;
|
|
25
89
|
export declare function ensureConnected(port: number, targetId?: string): Promise<{
|
|
26
90
|
client: CdpClient;
|
|
27
91
|
sessionId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/session.js
CHANGED
|
@@ -7,10 +7,32 @@
|
|
|
7
7
|
* module-level. It is a mutable record rather than separate bindings because
|
|
8
8
|
* the subcommand modules that update it import it (see `session`).
|
|
9
9
|
*
|
|
10
|
+
* THE SESSION RULE (#318). A browse session is one Chrome plus the CDP port
|
|
11
|
+
* it listens on, recorded per working directory in
|
|
12
|
+
* `.monomind/monobrowse/sessions/<port>.json`:
|
|
13
|
+
*
|
|
14
|
+
* - `open` with no `--port` STARTS its own session: Chrome binds a
|
|
15
|
+
* kernel-assigned free port in a profile directory of its own. It never
|
|
16
|
+
* joins an existing one, so two uncoordinated invocations can never land
|
|
17
|
+
* on the same port or profile. `open` reports the port it got.
|
|
18
|
+
* - `open`/`connect` WITH `--port N` keep the old behaviour exactly: attach
|
|
19
|
+
* to a Chrome already listening on N, otherwise launch there.
|
|
20
|
+
* - Any later command with no `--port` acts on the newest session in this
|
|
21
|
+
* directory whose browser still answers; every dead record it passes on
|
|
22
|
+
* the way is dropped (self-heal). With none left it starts a session of
|
|
23
|
+
* its own, exactly as `open` would.
|
|
24
|
+
* - Any later command with `--port N` acts on that session, which is how a
|
|
25
|
+
* concurrent caller pins the one `open` handed it.
|
|
26
|
+
* - `close` ends exactly the session it resolved — one browser, one record.
|
|
27
|
+
*
|
|
10
28
|
* Split out of commands.ts, which is now the command catalogue.
|
|
11
29
|
*/
|
|
30
|
+
import { randomUUID } from 'node:crypto';
|
|
31
|
+
import { tmpdir } from 'node:os';
|
|
32
|
+
import { join } from 'node:path';
|
|
12
33
|
import { output } from './output.js';
|
|
13
|
-
|
|
34
|
+
/** `session.port` when no `--port` was given: resolve or start one instead. */
|
|
35
|
+
const UNPINNED = 0;
|
|
14
36
|
// Runtime state (single session per CLI process).
|
|
15
37
|
//
|
|
16
38
|
// One mutable record rather than separate module-level bindings: every
|
|
@@ -21,10 +43,34 @@ export const session = {
|
|
|
21
43
|
client: null,
|
|
22
44
|
sessionId: '',
|
|
23
45
|
targetId: '',
|
|
24
|
-
port:
|
|
46
|
+
port: UNPINNED,
|
|
25
47
|
refs: new Map(),
|
|
26
48
|
parentSessionId: '',
|
|
27
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* The session the caller pinned with `--port`, or undefined for "whichever
|
|
52
|
+
* session this directory's store resolves to". Anything unusable — absent,
|
|
53
|
+
* out of range, unparseable — reads as undefined.
|
|
54
|
+
*/
|
|
55
|
+
export function pinnedPort(flags) {
|
|
56
|
+
const raw = flags.port;
|
|
57
|
+
const port = typeof raw === 'number' ? raw : typeof raw === 'string' ? Number(raw) : Number.NaN;
|
|
58
|
+
return Number.isInteger(port) && port >= 1024 && port <= 65535 ? port : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Pin this process to the session named by `--port` before the subcommand
|
|
62
|
+
* runs (see the wrapper in commands.ts), so every command that resolves its
|
|
63
|
+
* session through `session.port` honours the selector.
|
|
64
|
+
*/
|
|
65
|
+
export function applySessionPortFlag(flags) {
|
|
66
|
+
// Only ever pins: a command with no --port must not reset the port of a
|
|
67
|
+
// session this process already established (`batch "open …" "snapshot"`
|
|
68
|
+
// runs both actions in one process, and the second must stay on the
|
|
69
|
+
// session the first started).
|
|
70
|
+
const pinned = pinnedPort(flags);
|
|
71
|
+
if (pinned !== undefined)
|
|
72
|
+
session.port = pinned;
|
|
73
|
+
}
|
|
28
74
|
export async function getBrowser() {
|
|
29
75
|
return import('../index.js');
|
|
30
76
|
}
|
|
@@ -74,33 +120,136 @@ export function ensureSignalCleanupHandlers() {
|
|
|
74
120
|
});
|
|
75
121
|
}
|
|
76
122
|
}
|
|
77
|
-
// Each CLI invocation is a fresh process, so
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
export async function
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
await browser.clearActivePort();
|
|
100
|
-
throw new Error(`Connected browser on port ${persisted.port} is gone — re-run \`connect\` (or \`open\` to launch a fresh one).`);
|
|
123
|
+
// Each CLI invocation is a fresh process, so the session a previous `open`
|
|
124
|
+
// started only survives as its record on disk. Walk the recorded sessions
|
|
125
|
+
// newest-first and return the first whose browser still answers — that is
|
|
126
|
+
// "the" session for a command that did not pin one with `--port`.
|
|
127
|
+
//
|
|
128
|
+
// Records whose browser is gone are dropped as we pass them (self-heal): a
|
|
129
|
+
// crashed or manually-killed Chrome must not wedge every later command.
|
|
130
|
+
export async function resolveLiveSession(browser, opts = {}) {
|
|
131
|
+
for (const record of await browser.listSessionRecords()) {
|
|
132
|
+
if (await cdpAnswers(record.port))
|
|
133
|
+
return record;
|
|
134
|
+
await browser.removeSessionRecord(record.port);
|
|
135
|
+
await browser.clearRefCache(record.port);
|
|
136
|
+
if (!record.launched && opts.strict !== false) {
|
|
137
|
+
// connect-origin port: the browser belonged to someone else. Silently
|
|
138
|
+
// launching our own headless Chrome on that port would squat the
|
|
139
|
+
// user's debug port and swap which browser commands act on — fail
|
|
140
|
+
// loudly instead. `close` passes strict:false; it has nothing to
|
|
141
|
+
// attach to and just cleans up.
|
|
142
|
+
throw new Error(`Connected browser on port ${record.port} is gone — re-run \`connect\` (or \`open\` to launch a fresh one).`);
|
|
101
143
|
}
|
|
102
144
|
}
|
|
103
|
-
|
|
145
|
+
// Nothing native is live. A session opened by a pre-#318 CLI in this
|
|
146
|
+
// directory may still be — it is the oldest possible candidate, so it is
|
|
147
|
+
// considered last.
|
|
148
|
+
return adoptLegacySession(browser);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Take over the single session a pre-#318 CLI recorded in this directory, so
|
|
152
|
+
* upgrading monobrowse mid-session does not strand its Chrome with no handle
|
|
153
|
+
* anyone can use. Returns the session — now an ordinary per-port record that
|
|
154
|
+
* `snapshot`, `--port` and `close` treat like any other — or null.
|
|
155
|
+
*
|
|
156
|
+
* `port` restricts adoption to a session the caller already named, so a
|
|
157
|
+
* legacy record for some other port is left for its own resolution.
|
|
158
|
+
*
|
|
159
|
+
* A record that a per-port record already supersedes, or whose browser no
|
|
160
|
+
* longer answers, is simply dropped: the same self-heal as for a dead native
|
|
161
|
+
* record, and nothing is ever written back to the old layout. This is the
|
|
162
|
+
* only place the legacy file is read, and `open` never consults it — a bare
|
|
163
|
+
* `open` still always starts a session of its own.
|
|
164
|
+
*/
|
|
165
|
+
export async function adoptLegacySession(browser, opts = {}) {
|
|
166
|
+
const legacy = await browser.loadLegacySessionRecord();
|
|
167
|
+
if (!legacy)
|
|
168
|
+
return null;
|
|
169
|
+
if (opts.port !== undefined && opts.port !== legacy.port)
|
|
170
|
+
return null;
|
|
171
|
+
if (await browser.loadSessionRecord(legacy.port)) {
|
|
172
|
+
await browser.removeLegacySessionRecord();
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
if (!(await cdpAnswers(legacy.port))) {
|
|
176
|
+
await browser.removeLegacySessionRecord();
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
await browser.saveSessionRecord(legacy.port, {
|
|
180
|
+
launched: legacy.launched,
|
|
181
|
+
pid: legacy.pid,
|
|
182
|
+
userDataDir: legacy.userDataDir,
|
|
183
|
+
savedAt: legacy.savedAt,
|
|
184
|
+
});
|
|
185
|
+
await browser.removeLegacySessionRecord();
|
|
186
|
+
return legacy;
|
|
187
|
+
}
|
|
188
|
+
async function cdpAnswers(port) {
|
|
189
|
+
try {
|
|
190
|
+
const res = await fetch(`http://127.0.0.1:${port}/json/version`, {
|
|
191
|
+
signal: AbortSignal.timeout(1500),
|
|
192
|
+
});
|
|
193
|
+
return res.ok;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Start or attach to the browser this session drives, and record it.
|
|
201
|
+
*
|
|
202
|
+
* With a `port`, that is the caller's explicit `--port`: attach to a Chrome
|
|
203
|
+
* already listening there, else launch there (unchanged behaviour). Without
|
|
204
|
+
* one, Chrome binds a kernel-assigned free port in a profile directory of
|
|
205
|
+
* this session's own — the allocation that makes two concurrent `open`
|
|
206
|
+
* invocations independent (#318).
|
|
207
|
+
*/
|
|
208
|
+
export async function launchSessionBrowser(browser, opts) {
|
|
209
|
+
const port = opts.port
|
|
210
|
+
? await browser.launchBrowser({ port: opts.port, headless: opts.headless })
|
|
211
|
+
: await browser.launchBrowser({
|
|
212
|
+
port: 0,
|
|
213
|
+
headless: opts.headless,
|
|
214
|
+
// Chrome reports the port it bound inside this directory, so it must
|
|
215
|
+
// belong to this session alone.
|
|
216
|
+
userDataDir: join(tmpdir(), `monomind-browse-${process.pid}-${randomUUID().slice(0, 8)}`),
|
|
217
|
+
});
|
|
218
|
+
await recordSession(browser, port);
|
|
219
|
+
ensureSignalCleanupHandlers();
|
|
220
|
+
return port;
|
|
221
|
+
}
|
|
222
|
+
// Persist the session so later CLI invocations (each a fresh process) can
|
|
223
|
+
// find this browser, together with the launched PID/userDataDir so their
|
|
224
|
+
// closeBrowser can still kill it even though launchedPids (browser.ts) is
|
|
225
|
+
// per-process and empty there.
|
|
226
|
+
//
|
|
227
|
+
// launchBrowser() can either LAUNCH a fresh Chrome or ATTACH to one already
|
|
228
|
+
// listening on an explicitly requested port (see its own "attach if already
|
|
229
|
+
// Chrome" comment) — it returns only a port number, with no signal telling
|
|
230
|
+
// this caller which happened. getLaunchedPid(port) is undefined on the
|
|
231
|
+
// attach path (this process never spawned anything). Unconditionally saving
|
|
232
|
+
// {pid: undefined} on attach used to CLOBBER a real PID a previous `open`
|
|
233
|
+
// had persisted for this exact port, destroying the only way a later
|
|
234
|
+
// process's closeBrowser() PID-kill fallback could ever find it.
|
|
235
|
+
async function recordSession(browser, port) {
|
|
236
|
+
const pid = browser.getLaunchedPid(port);
|
|
237
|
+
if (pid !== undefined) {
|
|
238
|
+
await browser.saveSessionRecord(port, {
|
|
239
|
+
pid,
|
|
240
|
+
userDataDir: browser.getLaunchedUserDataDir(port),
|
|
241
|
+
});
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// A pre-#318 record for this exact port counts as the existing one, so
|
|
245
|
+
// attaching to a session an older CLI opened keeps its provenance (a
|
|
246
|
+
// `connect`ed browser stays launched:false and is never killed).
|
|
247
|
+
const existing = (await browser.loadSessionRecord(port)) ?? (await adoptLegacySession(browser, { port }));
|
|
248
|
+
await browser.saveSessionRecord(port, {
|
|
249
|
+
launched: existing?.launched,
|
|
250
|
+
pid: existing?.pid,
|
|
251
|
+
userDataDir: existing?.userDataDir,
|
|
252
|
+
});
|
|
104
253
|
}
|
|
105
254
|
export async function ensureConnected(port, targetId) {
|
|
106
255
|
const browser = await getBrowser();
|
|
@@ -112,8 +261,10 @@ export async function ensureConnected(port, targetId) {
|
|
|
112
261
|
browser.teardownConsoleCapture(session.sessionId);
|
|
113
262
|
session.client.close();
|
|
114
263
|
}
|
|
115
|
-
|
|
116
|
-
|
|
264
|
+
// Pinned port, else the newest live session, else a session of our own —
|
|
265
|
+
// a command run before any `open` still just works.
|
|
266
|
+
const pinned = port > 0 ? port : ((await resolveLiveSession(browser))?.port ?? undefined);
|
|
267
|
+
session.port = await launchSessionBrowser(browser, { port: pinned, headless: true });
|
|
117
268
|
const conn = await browser.connectToTarget(session.port, targetId);
|
|
118
269
|
session.client = conn.client;
|
|
119
270
|
session.sessionId = conn.sessionId;
|
|
@@ -140,7 +291,7 @@ export async function ensureConnected(port, targetId) {
|
|
|
140
291
|
// via resolveRef's "not found" error) rather than the weaker 30s time-based
|
|
141
292
|
// staleness check below, which only warns.
|
|
142
293
|
export async function hydrateRefsFromCache(browser, targetId, currentUrl) {
|
|
143
|
-
const cached = await browser.loadRefCache(targetId);
|
|
294
|
+
const cached = await browser.loadRefCache(session.port, targetId);
|
|
144
295
|
if (!cached)
|
|
145
296
|
return;
|
|
146
297
|
if (currentUrl && cached.url && currentUrl !== cached.url) {
|
|
@@ -224,10 +375,16 @@ export async function switchToHeaded(url, port) {
|
|
|
224
375
|
session.parentSessionId = '';
|
|
225
376
|
session.targetId = '';
|
|
226
377
|
}
|
|
227
|
-
//
|
|
228
|
-
|
|
378
|
+
// Kernel-assigned free port and a profile of its own, so this temporary
|
|
379
|
+
// headed window cannot collide with any other session (#318) — a
|
|
380
|
+
// neighbouring port (port + 10) could well be another session's.
|
|
381
|
+
let headedPort = 0;
|
|
229
382
|
try {
|
|
230
|
-
await browser.launchBrowser({
|
|
383
|
+
headedPort = await browser.launchBrowser({
|
|
384
|
+
port: 0,
|
|
385
|
+
headless: false,
|
|
386
|
+
userDataDir: join(tmpdir(), `monomind-browse-headed-${process.pid}-${randomUUID().slice(0, 8)}`),
|
|
387
|
+
});
|
|
231
388
|
}
|
|
232
389
|
catch (err) {
|
|
233
390
|
// Headed launch failed (no display, locked down env). Restore headless and rethrow.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/session.ts"],"names":[],"mappings":"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"}
|