@intentic/browser 1.316.0 → 1.318.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/README.md +7 -4
- package/dist/cdp.d.ts +1 -2
- package/dist/cdp.d.ts.map +1 -1
- package/dist/cdp.js +5 -9
- package/dist/cdp.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/dist/launch.d.ts +11 -3
- package/dist/launch.d.ts.map +1 -1
- package/dist/launch.js +45 -10
- package/dist/launch.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,9 +11,12 @@ flowchart LR
|
|
|
11
11
|
page --> webext["webext<br/>same vocabulary"]
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
- Runs on the user's device inside [`intentic-machine`](../machine). It never touches the user's own profile
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
- Runs on the user's device inside [`intentic-machine`](../machine). It never touches the user's own profile, and
|
|
15
|
+
never drives a browser it did not start: `ensureBrowser` starts the OS default Chromium-family browser with a
|
|
16
|
+
profile of its own under `~/.intentic/browser/<browser>` and `--remote-debugging-port=0`, so the browser picks a free
|
|
17
|
+
port and writes it into that profile's `DevToolsActivePort` with the path of its own debugging target, new every
|
|
18
|
+
start. A browser is reused only when the endpoint on that port answers with that very target (`ownEndpoint`);
|
|
19
|
+
whatever else answers on a debugging port, 9222 included, may be somebody's own Chrome and is never adopted. Edge
|
|
17
20
|
ranks below any Chromium browser someone installed by choice (`pickBrowser`).
|
|
18
21
|
- A snapshot (`SNAPSHOT_SCRIPT`) lists visible interactive elements as refs `e0`, `e1`, … A ref lives until the next
|
|
19
22
|
snapshot, and a stale one fails with a message instead of clicking whatever sits there now.
|
|
@@ -25,7 +28,7 @@ flowchart LR
|
|
|
25
28
|
## Key files
|
|
26
29
|
|
|
27
30
|
- [src/index.ts](src/index.ts) — `browser()`: one CDP session per object, and every page action.
|
|
28
|
-
- [src/launch.ts](src/launch.ts) — which binary to start, its flags and its
|
|
31
|
+
- [src/launch.ts](src/launch.ts) — which binary to start, its flags, its profile directory and how its endpoint is recognised.
|
|
29
32
|
- [src/snapshot.ts](src/snapshot.ts) — the in-page script that numbers the elements.
|
|
30
33
|
- [src/page.ts](src/page.ts) — `PageState`, `renderPage` and ref parsing, shared with the extension.
|
|
31
34
|
- [src/cdp.ts](src/cdp.ts) — the DevTools protocol subset: find tabs, attach, send.
|
package/dist/cdp.d.ts
CHANGED
|
@@ -9,8 +9,7 @@ export interface CdpSession {
|
|
|
9
9
|
readonly send: <T = Record<string, unknown>>(method: string, params?: Record<string, unknown>) => Promise<T>;
|
|
10
10
|
readonly close: () => void;
|
|
11
11
|
}
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const waitForPort: (port: number, timeoutMs: number) => Promise<void>;
|
|
12
|
+
export declare const browserTargetPath: (port: number) => Promise<string | undefined>;
|
|
14
13
|
export declare const listTargets: (port: number) => Promise<CdpTarget[]>;
|
|
15
14
|
export declare const newTab: (port: number, url: string) => Promise<CdpTarget>;
|
|
16
15
|
export declare const attach: (wsUrl: string) => Promise<CdpSession>;
|
package/dist/cdp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp.d.ts","sourceRoot":"","sources":["../src/cdp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cdp.d.ts","sourceRoot":"","sources":["../src/cdp.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7G,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC9B;AAMD,eAAO,MAAM,iBAAiB,SAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAWhF,CAAC;AAEF,eAAO,MAAM,WAAW,SAAgB,MAAM,KAAG,OAAO,CAAC,SAAS,EAAE,CAOnE,CAAC;AAEF,eAAO,MAAM,MAAM,SAAgB,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,SAAS,CAMzE,CAAC;AAEF,eAAO,MAAM,MAAM,UAAiB,MAAM,KAAG,OAAO,CAAC,UAAU,CAkD9D,CAAC"}
|
package/dist/cdp.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { pollUntil } from "@intentic/base/async";
|
|
2
1
|
import { BrowserError } from "./types.js";
|
|
3
2
|
const CALL_TIMEOUT_MS = 30_000;
|
|
4
3
|
const endpoint = (port, path) => `http://127.0.0.1:${port}${path}`;
|
|
5
|
-
export const
|
|
4
|
+
export const browserTargetPath = async (port) => {
|
|
6
5
|
try {
|
|
7
6
|
const response = await fetch(endpoint(port, "/json/version"), { signal: AbortSignal.timeout(1000) });
|
|
8
|
-
|
|
7
|
+
const body = response.ok ? (await response.json()) : undefined;
|
|
8
|
+
const url = String(body?.webSocketDebuggerUrl);
|
|
9
|
+
return URL.canParse(url) ? new URL(url).pathname : undefined;
|
|
9
10
|
}
|
|
10
11
|
catch {
|
|
11
|
-
return
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
export const waitForPort = async (port, timeoutMs) => {
|
|
15
|
-
if (!(await pollUntil(() => probe(port), { intervalMs: 150, timeoutMs }))) {
|
|
16
|
-
throw new BrowserError(`The browser did not open its debugging port (${port}) in time.`);
|
|
12
|
+
return undefined;
|
|
17
13
|
}
|
|
18
14
|
};
|
|
19
15
|
export const listTargets = async (port) => {
|
package/dist/cdp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../src/cdp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../src/cdp.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Browser } from "./types.js";
|
|
2
|
-
export {
|
|
2
|
+
export { browserCandidates, ensureBrowser, ownEndpoint, profileDir } from "./launch.js";
|
|
3
3
|
export { SNAPSHOT_SCRIPT } from "./snapshot.js";
|
|
4
4
|
export { renderPage, refIndex, toPageState, type RawSnapshot, type PageElement, type PageState } from "./page.js";
|
|
5
5
|
export { BrowserError, type Browser } from "./types.js";
|
|
6
|
-
export declare const browser: (
|
|
6
|
+
export declare const browser: () => Browser;
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAgCxD,eAAO,MAAM,OAAO,QAAO,OAqH1B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { sleep } from "@intentic/base/async";
|
|
2
2
|
import { attach, listTargets, newTab } from "./cdp.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ensureBrowser, ownEndpoint } from "./launch.js";
|
|
4
4
|
import { refIndex, toPageState } from "./page.js";
|
|
5
5
|
import { SNAPSHOT_SCRIPT } from "./snapshot.js";
|
|
6
6
|
import { BrowserError } from "./types.js";
|
|
7
|
-
export {
|
|
7
|
+
export { browserCandidates, ensureBrowser, ownEndpoint, profileDir } from "./launch.js";
|
|
8
8
|
export { SNAPSHOT_SCRIPT } from "./snapshot.js";
|
|
9
9
|
export { renderPage, refIndex, toPageState } from "./page.js";
|
|
10
10
|
export { BrowserError } from "./types.js";
|
|
@@ -29,14 +29,21 @@ const withElement = (ref, body) => {
|
|
|
29
29
|
${body}
|
|
30
30
|
})()`;
|
|
31
31
|
};
|
|
32
|
-
export const browser = (
|
|
32
|
+
export const browser = () => {
|
|
33
33
|
let session;
|
|
34
34
|
let targetId;
|
|
35
|
+
const endpoint = async () => {
|
|
36
|
+
const port = await ownEndpoint();
|
|
37
|
+
if (port === undefined) {
|
|
38
|
+
throw new BrowserError("No browser of this agent's is open.", "Open a page first: that starts one.");
|
|
39
|
+
}
|
|
40
|
+
return port;
|
|
41
|
+
};
|
|
35
42
|
const connect = async (preferred) => {
|
|
36
43
|
if (session !== undefined && (preferred === undefined || preferred === targetId)) {
|
|
37
44
|
return session;
|
|
38
45
|
}
|
|
39
|
-
const targets = await listTargets(
|
|
46
|
+
const targets = await listTargets(await endpoint());
|
|
40
47
|
const target = preferred === undefined ? targets[0] : targets.find((candidate) => candidate.id === preferred);
|
|
41
48
|
if (target?.webSocketDebuggerUrl === undefined) {
|
|
42
49
|
throw new BrowserError(preferred === undefined ? "The browser has no open page." : `There is no tab "${preferred}" any more.`);
|
|
@@ -52,7 +59,7 @@ export const browser = (port = DEFAULT_PORT) => {
|
|
|
52
59
|
};
|
|
53
60
|
return {
|
|
54
61
|
open: async (url) => {
|
|
55
|
-
await ensureBrowser(
|
|
62
|
+
const { port } = await ensureBrowser(url);
|
|
56
63
|
if (url !== undefined) {
|
|
57
64
|
const target = await newTab(port, url);
|
|
58
65
|
targetId = target.id;
|
|
@@ -100,7 +107,7 @@ export const browser = (port = DEFAULT_PORT) => {
|
|
|
100
107
|
const shot = await (await connect(targetId)).send("Page.captureScreenshot", { format: "png" });
|
|
101
108
|
return Buffer.from(shot.data, "base64");
|
|
102
109
|
},
|
|
103
|
-
tabs: async () => (await listTargets(
|
|
110
|
+
tabs: async () => (await listTargets(await endpoint())).map((target) => ({ id: target.id, title: target.title, url: target.url, active: target.id === targetId })),
|
|
104
111
|
selectTab: async (id) => {
|
|
105
112
|
await connect(id);
|
|
106
113
|
await session?.send("Page.bringToFront").catch(() => undefined);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAmB,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/launch.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export declare const DEFAULT_PORT = 9222;
|
|
2
1
|
export declare const browserFamily: (binary: string) => string;
|
|
3
2
|
export declare const profileDir: (binary: string) => string;
|
|
4
3
|
export declare const isChromiumFamily: (path: string) => boolean;
|
|
@@ -9,7 +8,16 @@ export declare const executableFromDesktopEntry: (contents: string) => string |
|
|
|
9
8
|
export declare const defaultBrowser: (platform?: NodeJS.Platform) => Promise<string | undefined>;
|
|
10
9
|
export declare const shippedWithOs: (path: string) => boolean;
|
|
11
10
|
export declare const pickBrowser: (chosen: string | undefined, installed: readonly string[]) => string | undefined;
|
|
12
|
-
export declare const
|
|
13
|
-
|
|
11
|
+
export declare const ACTIVE_PORT_FILE = "DevToolsActivePort";
|
|
12
|
+
export interface ActivePort {
|
|
13
|
+
readonly port: number;
|
|
14
|
+
readonly path: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const parseActivePort: (text: string) => ActivePort | undefined;
|
|
17
|
+
export declare const ownsEndpoint: (file: ActivePort | undefined, answered: string | undefined) => boolean;
|
|
18
|
+
export declare const ownEndpoint: () => Promise<number | undefined>;
|
|
19
|
+
export declare const ensureBrowser: (url?: string) => Promise<{
|
|
20
|
+
readonly started: boolean;
|
|
21
|
+
readonly port: number;
|
|
14
22
|
}>;
|
|
15
23
|
//# sourceMappingURL=launch.d.ts.map
|
package/dist/launch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAA+F,CAAC;AAM/I,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAAwE,CAAC;AAIrH,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,OAA2E,CAAC;AAK5H,eAAO,MAAM,iBAAiB,aAAc,MAAM,CAAC,QAAQ,KAAG,MAAM,EA2BnE,CAAC;AAYF,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,GAAG,SAAiE,CAAC;AAG1H,eAAO,MAAM,qBAAqB,YAAa,MAAM,KAAG,MAAM,GAAG,SAIhE,CAAC;AAGF,eAAO,MAAM,0BAA0B,aAAc,MAAM,KAAG,MAAM,GAAG,SAOtE,CAAC;AA6DF,eAAO,MAAM,cAAc,cAAoB,MAAM,CAAC,QAAQ,KAAsB,OAAO,CAAC,MAAM,GAAG,SAAS,CAG7G,CAAC;AAIF,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,OAAgD,CAAC;AAO9F,eAAO,MAAM,WAAW,WAAY,MAAM,GAAG,SAAS,aAAa,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAG/F,CAAC;AAuBF,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,UAAU,GAAG,SAK3D,CAAC;AAIF,eAAO,MAAM,YAAY,SAAU,UAAU,GAAG,SAAS,YAAY,MAAM,GAAG,SAAS,KAAG,OAAuD,CAAC;AAclJ,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAW9D,CAAC;AAOF,eAAO,MAAM,aAAa,SAAgB,MAAM,KAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA8B9G,CAAC"}
|
package/dist/launch.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { execFile, spawn } from "node:child_process";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { readdir, readFile, rm } from "node:fs/promises";
|
|
3
4
|
import { homedir } from "node:os";
|
|
4
5
|
import { join } from "node:path";
|
|
5
|
-
import {
|
|
6
|
+
import { pollUntil } from "@intentic/base/async";
|
|
7
|
+
import { browserTargetPath } from "./cdp.js";
|
|
6
8
|
import { BrowserError } from "./types.js";
|
|
7
|
-
export const DEFAULT_PORT = 9222;
|
|
8
9
|
export const browserFamily = (binary) => (binary.split(/[/\\]/).pop() ?? "").replace(/\.exe$/i, "").toLowerCase() || "browser";
|
|
9
10
|
export const profileDir = (binary) => join(homedir(), ".intentic", "browser", browserFamily(binary));
|
|
10
11
|
export const isChromiumFamily = (path) => /(chrome|chromium|edge|brave|vivaldi|opera|thorium)/i.test(path);
|
|
@@ -109,8 +110,8 @@ export const pickBrowser = (chosen, installed) => {
|
|
|
109
110
|
return chosen !== undefined && !(shippedWithOs(chosen) && deliberate !== undefined) ? chosen : (deliberate ?? installed[0]);
|
|
110
111
|
};
|
|
111
112
|
const findBrowser = async (platform = process.platform) => pickBrowser(await defaultBrowser(platform), browserCandidates(platform).filter((path) => existsSync(path)));
|
|
112
|
-
const flags = (binary,
|
|
113
|
-
|
|
113
|
+
const flags = (binary, url) => [
|
|
114
|
+
"--remote-debugging-port=0",
|
|
114
115
|
`--user-data-dir=${profileDir(binary)}`,
|
|
115
116
|
"--no-first-run",
|
|
116
117
|
"--no-default-browser-check",
|
|
@@ -118,18 +119,52 @@ const flags = (binary, port, url) => [
|
|
|
118
119
|
"--restore-last-session=false",
|
|
119
120
|
...(url === undefined ? [] : [url]),
|
|
120
121
|
];
|
|
122
|
+
export const ACTIVE_PORT_FILE = "DevToolsActivePort";
|
|
123
|
+
export const parseActivePort = (text) => {
|
|
124
|
+
const [first, second] = text.split(/\r?\n/);
|
|
125
|
+
const port = Number(first);
|
|
126
|
+
const path = second?.trim() ?? "";
|
|
127
|
+
return Number.isInteger(port) && port > 0 && port < 65_536 && path.startsWith("/devtools/browser/") ? { port, path } : undefined;
|
|
128
|
+
};
|
|
129
|
+
export const ownsEndpoint = (file, answered) => file !== undefined && answered === file.path;
|
|
130
|
+
const profilesRoot = () => join(homedir(), ".intentic", "browser");
|
|
131
|
+
const activePortIn = async (profile) => parseActivePort(await readFile(join(profile, ACTIVE_PORT_FILE), "utf8").catch(() => ""));
|
|
132
|
+
const ownEndpointIn = async (profile) => {
|
|
133
|
+
const file = await activePortIn(profile);
|
|
134
|
+
return file !== undefined && ownsEndpoint(file, await browserTargetPath(file.port)) ? file.port : undefined;
|
|
135
|
+
};
|
|
136
|
+
export const ownEndpoint = async () => {
|
|
137
|
+
const families = await readdir(profilesRoot()).catch(() => []);
|
|
138
|
+
for (const family of families) {
|
|
139
|
+
const port = await ownEndpointIn(join(profilesRoot(), family));
|
|
140
|
+
if (port !== undefined) {
|
|
141
|
+
return port;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
};
|
|
121
146
|
const START_TIMEOUT_MS = 20_000;
|
|
122
|
-
export const ensureBrowser = async (
|
|
123
|
-
|
|
124
|
-
|
|
147
|
+
export const ensureBrowser = async (url) => {
|
|
148
|
+
const running = await ownEndpoint();
|
|
149
|
+
if (running !== undefined) {
|
|
150
|
+
return { started: false, port: running };
|
|
125
151
|
}
|
|
126
152
|
const binary = await findBrowser();
|
|
127
153
|
if (binary === undefined) {
|
|
128
154
|
throw new BrowserError("This computer has no Brave, Chrome, Chromium or Edge, and browser control needs one of them.", "Install Brave (or Google Chrome) and try again.");
|
|
129
155
|
}
|
|
130
|
-
const
|
|
156
|
+
const profile = profileDir(binary);
|
|
157
|
+
await rm(join(profile, ACTIVE_PORT_FILE), { force: true });
|
|
158
|
+
const child = spawn(binary, flags(binary, url), { detached: true, stdio: "ignore" });
|
|
131
159
|
child.unref();
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
let port;
|
|
161
|
+
const answered = async () => {
|
|
162
|
+
port = await ownEndpointIn(profile);
|
|
163
|
+
return port !== undefined;
|
|
164
|
+
};
|
|
165
|
+
if (!(await pollUntil(answered, { intervalMs: 150, timeoutMs: START_TIMEOUT_MS })) || port === undefined) {
|
|
166
|
+
throw new BrowserError("The browser did not open its debugging port in time.", `If a window of it is still open from before, with the profile in ${profile}, close it and try again: a browser already running that profile ignores what a new start asks of it.`);
|
|
167
|
+
}
|
|
168
|
+
return { started: true, port };
|
|
134
169
|
};
|
|
135
170
|
//# sourceMappingURL=launch.js.map
|
package/dist/launch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/browser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.318.0",
|
|
4
4
|
"description": "Drive a Chromium browser from Node over CDP — open pages, read them as structured text, click and type by element reference. No dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@intentic/base": "1.
|
|
44
|
+
"@intentic/base": "1.318.0",
|
|
45
45
|
"tslib": "2.8.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|