@intentic/browser 1.281.0 → 1.283.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 +17 -6
- package/dist/launch.d.ts +5 -0
- package/dist/launch.d.ts.map +1 -1
- package/dist/launch.js +79 -5
- package/dist/launch.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -31,15 +31,25 @@ fails loudly, which is the behaviour worth having.
|
|
|
31
31
|
|
|
32
32
|
## Which browser it drives
|
|
33
33
|
|
|
34
|
-
**
|
|
35
|
-
everyday browser was; restarting theirs to add the flag would close every tab they had open. So: if a
|
|
36
|
-
endpoint is already there, it is used; otherwise a separate instance starts with its own profile
|
|
37
|
-
`~/.intentic/browser`.
|
|
34
|
+
**Their browser, not their profile.** A browser only speaks CDP if it was started with `--remote-debugging-port`,
|
|
35
|
+
and nobody's everyday browser was; restarting theirs to add the flag would close every tab they had open. So: if a
|
|
36
|
+
debugging endpoint is already there, it is used; otherwise a separate instance starts with its own profile
|
|
37
|
+
directory under `~/.intentic/browser`.
|
|
38
38
|
|
|
39
39
|
That separate profile is a feature rather than a compromise. It is empty the first time, so the user signs into
|
|
40
40
|
whatever is needed once, in a window they can watch, and it persists afterwards. Their own session is never
|
|
41
41
|
automated and never at risk from a misfired click.
|
|
42
42
|
|
|
43
|
+
Which *binary* gets started is asked of the OS, not guessed: the browser registered for `https` (Windows'
|
|
44
|
+
`UserChoice` ProgId, `xdg-settings get default-web-browser` on Linux), used whenever it is Chromium-family. A
|
|
45
|
+
default that cannot speak CDP — Firefox, Safari — falls through to the guesses in `browserCandidates`, and those
|
|
46
|
+
are ordered so a browser installed on purpose outranks one the OS shipped: Brave, then Chrome, then Edge. Edge
|
|
47
|
+
exists on every Windows whether its owner wanted one or not, so finding it says nothing about what they use.
|
|
48
|
+
|
|
49
|
+
A Windows caveat worth knowing before someone reports it as a bug: the registered default is frequently Edge on a
|
|
50
|
+
machine whose owner lives in another browser, because setting a default in Windows takes a deliberate trip through
|
|
51
|
+
Settings and a fresh install does not always win one. The browser that opens is then correct and still surprising.
|
|
52
|
+
|
|
43
53
|
## Why hand-rolled CDP rather than Puppeteer or Playwright
|
|
44
54
|
|
|
45
55
|
**Not because Playwright is too heavy to ship.** It bundles into the `bun build --compile` binary this ends up
|
|
@@ -62,8 +72,9 @@ If a later pair connects, Playwright's accessibility snapshot is a better instru
|
|
|
62
72
|
|
|
63
73
|
## What is testable without a browser
|
|
64
74
|
|
|
65
|
-
`snapshot.ts`'s renderer and ref parsing,
|
|
66
|
-
|
|
75
|
+
`snapshot.ts`'s renderer and ref parsing, the per-platform candidate list, and the parsing of what the OS answers
|
|
76
|
+
about its default browser (a registry open command, a `.desktop` Exec line): all pure. Asking the OS shells out,
|
|
77
|
+
and the CDP calls end in a real browser painting a real page; those need a machine, not a test.
|
|
67
78
|
|
|
68
79
|
## Key files
|
|
69
80
|
|
package/dist/launch.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export declare const DEFAULT_PORT = 9222;
|
|
2
2
|
export declare const profileDir: () => string;
|
|
3
|
+
export declare const isChromiumFamily: (path: string) => boolean;
|
|
3
4
|
export declare const browserCandidates: (platform: NodeJS.Platform) => string[];
|
|
5
|
+
export declare const registryValue: (output: string) => string | undefined;
|
|
6
|
+
export declare const executableFromCommand: (command: string) => string | undefined;
|
|
7
|
+
export declare const executableFromDesktopEntry: (contents: string) => string | undefined;
|
|
8
|
+
export declare const defaultBrowser: (platform?: NodeJS.Platform) => Promise<string | undefined>;
|
|
4
9
|
export declare const ensureBrowser: (port?: number, url?: string) => Promise<{
|
|
5
10
|
started: boolean;
|
|
6
11
|
}>;
|
package/dist/launch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,OAAO,CAAC;AAGjC,eAAO,MAAM,UAAU,QAAO,MAAiD,CAAC;AAIhF,eAAO,MAAM,iBAAiB,aAAc,MAAM,CAAC,QAAQ,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,OAAO,CAAC;AAGjC,eAAO,MAAM,UAAU,QAAO,MAAiD,CAAC;AAIhF,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;AAsBF,eAAO,MAAM,aAAa,UAAgB,MAAM,QAAuB,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAgB3G,CAAC"}
|
package/dist/launch.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
1
|
+
import { execFile, spawn } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { probe, waitForPort } from "./cdp.js";
|
|
6
6
|
import { BrowserError } from "./types.js";
|
|
7
7
|
export const DEFAULT_PORT = 9222;
|
|
8
8
|
export const profileDir = () => join(homedir(), ".intentic", "browser");
|
|
9
|
+
export const isChromiumFamily = (path) => /(chrome|chromium|edge|brave|vivaldi|opera|thorium)/i.test(path);
|
|
9
10
|
export const browserCandidates = (platform) => {
|
|
10
11
|
if (platform === "win32") {
|
|
11
12
|
const programFiles = process.env["ProgramFiles"] ?? "C:\\Program Files";
|
|
12
13
|
const programFilesX86 = process.env["ProgramFiles(x86)"] ?? "C:\\Program Files (x86)";
|
|
13
14
|
const local = process.env["LOCALAPPDATA"] ?? join(homedir(), "AppData", "Local");
|
|
14
15
|
return [
|
|
16
|
+
join(programFiles, "BraveSoftware\\Brave-Browser\\Application\\brave.exe"),
|
|
17
|
+
join(programFilesX86, "BraveSoftware\\Brave-Browser\\Application\\brave.exe"),
|
|
18
|
+
join(local, "BraveSoftware\\Brave-Browser\\Application\\brave.exe"),
|
|
15
19
|
join(programFiles, "Google\\Chrome\\Application\\chrome.exe"),
|
|
16
20
|
join(programFilesX86, "Google\\Chrome\\Application\\chrome.exe"),
|
|
17
21
|
join(local, "Google\\Chrome\\Application\\chrome.exe"),
|
|
@@ -20,6 +24,9 @@ export const browserCandidates = (platform) => {
|
|
|
20
24
|
];
|
|
21
25
|
}
|
|
22
26
|
return [
|
|
27
|
+
"/usr/bin/brave-browser",
|
|
28
|
+
"/usr/bin/brave-browser-stable",
|
|
29
|
+
"/snap/bin/brave",
|
|
23
30
|
"/usr/bin/google-chrome",
|
|
24
31
|
"/usr/bin/google-chrome-stable",
|
|
25
32
|
"/usr/bin/chromium",
|
|
@@ -28,7 +35,74 @@ export const browserCandidates = (platform) => {
|
|
|
28
35
|
"/snap/bin/chromium",
|
|
29
36
|
];
|
|
30
37
|
};
|
|
31
|
-
const
|
|
38
|
+
const PROBE_TIMEOUT_MS = 3_000;
|
|
39
|
+
const run = async (command, args) => await new Promise((resolve) => {
|
|
40
|
+
execFile(command, args, { timeout: PROBE_TIMEOUT_MS, windowsHide: true }, (error, stdout) => resolve(error === null ? stdout : ""));
|
|
41
|
+
});
|
|
42
|
+
export const registryValue = (output) => output.match(/REG_[A-Z_]+\s{2,}(.+)$/m)?.[1]?.trim();
|
|
43
|
+
export const executableFromCommand = (command) => {
|
|
44
|
+
const trimmed = command.trim();
|
|
45
|
+
const path = trimmed.startsWith(`"`) ? trimmed.slice(1).split(`"`)[0] : trimmed.split(/\s+/)[0];
|
|
46
|
+
return path === undefined || path === "" ? undefined : path;
|
|
47
|
+
};
|
|
48
|
+
export const executableFromDesktopEntry = (contents) => {
|
|
49
|
+
const exec = contents.match(/^Exec=(.+)$/m)?.[1]?.trim();
|
|
50
|
+
if (exec === undefined) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const command = exec.replace(/%[a-zA-Z]/g, "").trim();
|
|
54
|
+
return executableFromCommand(command);
|
|
55
|
+
};
|
|
56
|
+
const windowsDefault = async () => {
|
|
57
|
+
const reg = join(process.env["SystemRoot"] ?? "C:\\Windows", "System32", "reg.exe");
|
|
58
|
+
const choice = await run(reg, [
|
|
59
|
+
"query",
|
|
60
|
+
"HKCU\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\https\\UserChoice",
|
|
61
|
+
"/v",
|
|
62
|
+
"ProgId",
|
|
63
|
+
]);
|
|
64
|
+
const progId = registryValue(choice);
|
|
65
|
+
if (progId === undefined || !/^[A-Za-z0-9._-]+$/.test(progId)) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const command = registryValue(await run(reg, ["query", `HKCR\\${progId}\\shell\\open\\command`, "/ve"]));
|
|
69
|
+
return command === undefined ? undefined : executableFromCommand(command);
|
|
70
|
+
};
|
|
71
|
+
const desktopEntryDirs = () => {
|
|
72
|
+
const dataHome = process.env["XDG_DATA_HOME"] ?? join(homedir(), ".local", "share");
|
|
73
|
+
const dataDirs = (process.env["XDG_DATA_DIRS"] ?? "/usr/local/share:/usr/share").split(":").filter((dir) => dir !== "");
|
|
74
|
+
return [dataHome, ...dataDirs, "/var/lib/flatpak/exports/share", "/var/lib/snapd/desktop"].map((dir) => join(dir, "applications"));
|
|
75
|
+
};
|
|
76
|
+
const readDesktopEntry = (name) => {
|
|
77
|
+
for (const dir of desktopEntryDirs()) {
|
|
78
|
+
const path = join(dir, name);
|
|
79
|
+
if (existsSync(path)) {
|
|
80
|
+
return readFileSync(path, "utf8");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
};
|
|
85
|
+
const resolveBin = (command) => {
|
|
86
|
+
if (command.includes("/")) {
|
|
87
|
+
return existsSync(command) ? command : undefined;
|
|
88
|
+
}
|
|
89
|
+
return ["/usr/bin", "/usr/local/bin", "/snap/bin"].map((dir) => join(dir, command)).find((path) => existsSync(path));
|
|
90
|
+
};
|
|
91
|
+
const linuxDefault = async () => {
|
|
92
|
+
const name = (await run("xdg-settings", ["get", "default-web-browser"])).trim() ||
|
|
93
|
+
(await run("xdg-mime", ["query", "default", "x-scheme-handler/https"])).trim();
|
|
94
|
+
if (name === "" || !name.endsWith(".desktop")) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const entry = readDesktopEntry(name);
|
|
98
|
+
const exec = entry === undefined ? undefined : executableFromDesktopEntry(entry);
|
|
99
|
+
return exec === undefined ? undefined : resolveBin(exec);
|
|
100
|
+
};
|
|
101
|
+
export const defaultBrowser = async (platform = process.platform) => {
|
|
102
|
+
const path = platform === "win32" ? await windowsDefault() : platform === "linux" ? await linuxDefault() : undefined;
|
|
103
|
+
return path !== undefined && isChromiumFamily(path) && existsSync(path) ? path : undefined;
|
|
104
|
+
};
|
|
105
|
+
const findBrowser = async () => (await defaultBrowser()) ?? browserCandidates(process.platform).find((path) => existsSync(path));
|
|
32
106
|
const flags = (port, url) => [
|
|
33
107
|
`--remote-debugging-port=${port}`,
|
|
34
108
|
`--user-data-dir=${profileDir()}`,
|
|
@@ -43,9 +117,9 @@ export const ensureBrowser = async (port = DEFAULT_PORT, url) => {
|
|
|
43
117
|
if (await probe(port)) {
|
|
44
118
|
return { started: false };
|
|
45
119
|
}
|
|
46
|
-
const binary = findBrowser();
|
|
120
|
+
const binary = await findBrowser();
|
|
47
121
|
if (binary === undefined) {
|
|
48
|
-
throw new BrowserError("This computer has no Chrome, Chromium or Edge, and browser control needs one of them.", "Install
|
|
122
|
+
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.");
|
|
49
123
|
}
|
|
50
124
|
const child = spawn(binary, flags(port, url), { detached: true, stdio: "ignore" });
|
|
51
125
|
child.unref();
|
package/dist/launch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
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.283.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.283.0",
|
|
45
45
|
"tslib": "2.8.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|