cloakbrowser 0.4.4 → 0.4.6
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/cli.d.ts +3 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +262 -14
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +53 -0
- package/dist/config.js.map +1 -1
- package/dist/download.d.ts +10 -0
- package/dist/download.d.ts.map +1 -1
- package/dist/download.js +30 -2
- package/dist/download.js.map +1 -1
- package/dist/fonts.d.ts +17 -0
- package/dist/fonts.d.ts.map +1 -0
- package/dist/fonts.js +95 -0
- package/dist/fonts.js.map +1 -0
- package/dist/license.d.ts +40 -0
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +84 -8
- package/dist/license.js.map +1 -1
- package/dist/playwright.d.ts.map +1 -1
- package/dist/playwright.js +27 -10
- package/dist/playwright.js.map +1 -1
- package/dist/proxy.d.ts +3 -3
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +3 -2
- package/dist/proxy.js.map +1 -1
- package/dist/puppeteer.d.ts.map +1 -1
- package/dist/puppeteer.js +25 -5
- package/dist/puppeteer.js.map +1 -1
- package/package.json +4 -4
package/dist/cli.d.ts
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
6
|
* npx cloakbrowser install # Download binary (with progress)
|
|
7
|
-
* npx cloakbrowser info #
|
|
7
|
+
* npx cloakbrowser info # Environment + binary diagnostics
|
|
8
|
+
* npx cloakbrowser doctor # Alias for info
|
|
8
9
|
* npx cloakbrowser update # Check for and download newer binary
|
|
9
10
|
* npx cloakbrowser clear-cache # Remove cached binaries
|
|
10
11
|
*/
|
|
11
|
-
export
|
|
12
|
+
export declare function collectDiagnostics(quick: boolean): Promise<Record<string, unknown>>;
|
|
12
13
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AA+IH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6DzF"}
|
package/dist/cli.js
CHANGED
|
@@ -4,34 +4,276 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
6
|
* npx cloakbrowser install # Download binary (with progress)
|
|
7
|
-
* npx cloakbrowser info #
|
|
7
|
+
* npx cloakbrowser info # Environment + binary diagnostics
|
|
8
|
+
* npx cloakbrowser doctor # Alias for info
|
|
8
9
|
* npx cloakbrowser update # Check for and download newer binary
|
|
9
10
|
* npx cloakbrowser clear-cache # Remove cached binaries
|
|
10
11
|
*/
|
|
11
|
-
import { ensureBinary,
|
|
12
|
-
import { getLocalBinaryOverride, getCacheDir } from "./config.js";
|
|
12
|
+
import { ensureBinary, checkForUpdate, clearCache } from "./download.js";
|
|
13
|
+
import { getLocalBinaryOverride, getCacheDir, getPlatformTag, getBinaryPath, getBinaryDir, getEffectiveVersion, normalizeRequestedVersion, CHROMIUM_VERSION, } from "./config.js";
|
|
14
|
+
import { windowsFontsPresent } from "./fonts.js";
|
|
15
|
+
import { resolveLicenseKey, validateLicense, getProLatestVersion } from "./license.js";
|
|
16
|
+
import { execFileSync } from "node:child_process";
|
|
17
|
+
import { createRequire } from "node:module";
|
|
18
|
+
import { pathToFileURL } from "node:url";
|
|
13
19
|
import fs from "node:fs";
|
|
20
|
+
import os from "node:os";
|
|
21
|
+
import path from "node:path";
|
|
22
|
+
const UPGRADE_HINT = "→ Add a license key for the latest Pro binary: https://cloakbrowser.dev";
|
|
14
23
|
const USAGE = `Usage: cloakbrowser <command>
|
|
15
24
|
|
|
16
25
|
Commands:
|
|
17
26
|
install Download the Chromium binary
|
|
18
|
-
info
|
|
27
|
+
info Environment + binary diagnostics (--quick, --json)
|
|
28
|
+
doctor Alias for info
|
|
19
29
|
update Check for and download a newer binary
|
|
20
30
|
clear-cache Remove all cached binaries`;
|
|
21
31
|
async function cmdInstall() {
|
|
22
32
|
const binaryPath = await ensureBinary();
|
|
23
33
|
console.log(binaryPath);
|
|
24
34
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
35
|
+
function moduleAvailable(name) {
|
|
36
|
+
try {
|
|
37
|
+
createRequire(import.meta.url).resolve(name);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Launch `<binary> --version` to prove it runs. */
|
|
45
|
+
function binaryVersion(binaryPath) {
|
|
46
|
+
try {
|
|
47
|
+
const out = execFileSync(binaryPath, ["--version"], {
|
|
48
|
+
encoding: "utf8",
|
|
49
|
+
timeout: 10000,
|
|
50
|
+
killSignal: "SIGKILL",
|
|
51
|
+
});
|
|
52
|
+
return { ok: true, version: out.trim(), error: "" };
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const e = err;
|
|
56
|
+
const stderr = e.stderr ? e.stderr.toString().trim() : "";
|
|
57
|
+
return { ok: false, version: "", error: stderr || e.message || String(err) };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Linux-only: ldd the binary and return missing .so names. */
|
|
61
|
+
function missingSharedLibs(binaryPath) {
|
|
62
|
+
if (os.platform() !== "linux")
|
|
63
|
+
return [];
|
|
64
|
+
let out;
|
|
65
|
+
try {
|
|
66
|
+
// -- so a path starting with - isn't read as a flag by ldd
|
|
67
|
+
out = execFileSync("ldd", ["--", binaryPath], {
|
|
68
|
+
encoding: "utf8",
|
|
69
|
+
timeout: 10000,
|
|
70
|
+
killSignal: "SIGKILL",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
// ldd commonly exits non-zero when libraries are missing; execFileSync throws
|
|
75
|
+
// but the listing we need is on err.stdout. Fall back to it rather than drop it.
|
|
76
|
+
const e = err;
|
|
77
|
+
if (!e.stdout)
|
|
78
|
+
return [];
|
|
79
|
+
out = e.stdout.toString();
|
|
80
|
+
}
|
|
81
|
+
return out
|
|
82
|
+
.split("\n")
|
|
83
|
+
.filter((l) => l.includes("=> not found"))
|
|
84
|
+
.map((l) => l.split("=>")[0].trim());
|
|
85
|
+
}
|
|
86
|
+
/** Resolve + validate the license the way ensureBinary does. */
|
|
87
|
+
async function resolveLicense() {
|
|
88
|
+
let key = resolveLicenseKey();
|
|
89
|
+
// ensureBinary disables Pro routing when a custom download URL is set, so the
|
|
90
|
+
// diagnostic must report free too (matches download.ts).
|
|
91
|
+
if (process.env.CLOAKBROWSER_DOWNLOAD_URL)
|
|
92
|
+
key = undefined;
|
|
93
|
+
if (!key)
|
|
94
|
+
return { license: { tier: "free" }, entitledPro: false };
|
|
95
|
+
try {
|
|
96
|
+
const lic = await validateLicense(key);
|
|
97
|
+
if (lic === null)
|
|
98
|
+
return { license: { tier: "unknown", error: "could not validate" }, entitledPro: false };
|
|
99
|
+
if (lic.valid)
|
|
100
|
+
return { license: { tier: lic.plan, valid: true, expires: lic.expires }, entitledPro: true };
|
|
101
|
+
return { license: { tier: "invalid", valid: false }, entitledPro: false };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return { license: { tier: "unknown", error: err.message }, entitledPro: false };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Describe the binary ensureBinary would actually launch (no download). */
|
|
108
|
+
async function effectiveBinary(entitledPro) {
|
|
27
109
|
const override = getLocalBinaryOverride();
|
|
28
|
-
console.log(`Version: ${info.version}`);
|
|
29
|
-
console.log(`Platform: ${info.platform}`);
|
|
30
|
-
console.log(`Binary: ${info.binaryPath}`);
|
|
31
|
-
console.log(`Installed: ${info.installed}`);
|
|
32
|
-
console.log(`Cache: ${info.cacheDir}`);
|
|
33
110
|
if (override) {
|
|
34
|
-
|
|
111
|
+
return {
|
|
112
|
+
version: null,
|
|
113
|
+
tier: "override",
|
|
114
|
+
bundled_version: CHROMIUM_VERSION,
|
|
115
|
+
path: override,
|
|
116
|
+
installed: fs.existsSync(override),
|
|
117
|
+
cache_dir: null,
|
|
118
|
+
override,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const requested = normalizeRequestedVersion();
|
|
122
|
+
let version;
|
|
123
|
+
if (requested) {
|
|
124
|
+
version = requested;
|
|
125
|
+
}
|
|
126
|
+
else if (entitledPro) {
|
|
127
|
+
// Mirror ensureBinary: a Pro launch resolves the latest Pro version over the
|
|
128
|
+
// network. Without this a fresh Pro user (no cached marker) would see the free
|
|
129
|
+
// base version paired with the -pro path, which never ships.
|
|
130
|
+
version = (await getProLatestVersion()) || getEffectiveVersion(true);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
version = getEffectiveVersion(false);
|
|
134
|
+
}
|
|
135
|
+
const binPath = getBinaryPath(version, entitledPro);
|
|
136
|
+
return {
|
|
137
|
+
version,
|
|
138
|
+
tier: entitledPro ? "pro" : "free",
|
|
139
|
+
bundled_version: CHROMIUM_VERSION,
|
|
140
|
+
path: binPath,
|
|
141
|
+
installed: fs.existsSync(binPath),
|
|
142
|
+
cache_dir: getBinaryDir(version, entitledPro),
|
|
143
|
+
override: null,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export async function collectDiagnostics(quick) {
|
|
147
|
+
const diag = {};
|
|
148
|
+
diag.environment = {
|
|
149
|
+
node: process.version,
|
|
150
|
+
os: os.type(),
|
|
151
|
+
arch: os.arch(),
|
|
152
|
+
};
|
|
153
|
+
// Resolve the license up front — it decides which binary actually launches
|
|
154
|
+
// (ensureBinary only uses the Pro binary when a key validates).
|
|
155
|
+
const { license, entitledPro } = await resolveLicense();
|
|
156
|
+
try {
|
|
157
|
+
diag.environment.platform_tag = getPlatformTag();
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
diag.environment.platform_tag = `unavailable (${err.message})`;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
diag.binary = await effectiveBinary(entitledPro);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
diag.binary = { error: err.message };
|
|
167
|
+
}
|
|
168
|
+
// Launch test (skipped by --quick or when the binary is not installed).
|
|
169
|
+
const binPath = diag.binary.path;
|
|
170
|
+
const installed = diag.binary.installed;
|
|
171
|
+
if (quick) {
|
|
172
|
+
diag.launch = { tested: false, reason: "skipped (--quick)" };
|
|
173
|
+
}
|
|
174
|
+
else if (!binPath || !(installed || fs.existsSync(binPath))) {
|
|
175
|
+
diag.launch = { tested: false, reason: "binary not installed" };
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const { ok, version, error } = binaryVersion(binPath);
|
|
179
|
+
diag.launch = { tested: true, ok, version, error };
|
|
180
|
+
if (!ok)
|
|
181
|
+
diag.launch.missing_libs = missingSharedLibs(binPath);
|
|
182
|
+
}
|
|
183
|
+
// Windows-font probe — only meaningful on a Linux host spoofing Windows.
|
|
184
|
+
// Omitted entirely off Linux, where it carries no signal.
|
|
185
|
+
if (os.platform() === "linux") {
|
|
186
|
+
const present = windowsFontsPresent();
|
|
187
|
+
diag.fonts = {
|
|
188
|
+
windows_fonts: present === true ? "ok" : present === false ? "missing" : "unknown",
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
diag.license = license;
|
|
192
|
+
// GeoIP DB — presence only, never downloads.
|
|
193
|
+
const dbPath = path.join(getCacheDir(), "geoip", "GeoLite2-City.mmdb");
|
|
194
|
+
diag.geoip = { db_present: fs.existsSync(dbPath), path: dbPath };
|
|
195
|
+
// Optional peer deps.
|
|
196
|
+
diag.modules = {
|
|
197
|
+
"playwright-core": moduleAvailable("playwright-core"),
|
|
198
|
+
"puppeteer-core": moduleAvailable("puppeteer-core"),
|
|
199
|
+
"mmdb-lib": moduleAvailable("mmdb-lib"),
|
|
200
|
+
};
|
|
201
|
+
return diag;
|
|
202
|
+
}
|
|
203
|
+
function printDiagnostics(diag) {
|
|
204
|
+
const env = diag.environment;
|
|
205
|
+
console.log("CloakBrowser diagnostics");
|
|
206
|
+
console.log(`Node: ${env.node}`);
|
|
207
|
+
console.log(`OS: ${env.os} ${env.arch}`);
|
|
208
|
+
console.log(`Platform: ${env.platform_tag ?? "unknown"}`);
|
|
209
|
+
const binary = diag.binary;
|
|
210
|
+
if (binary.error) {
|
|
211
|
+
console.log(`Binary: unavailable (${binary.error})`);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
if (binary.tier === "override") {
|
|
215
|
+
console.log("Version: set via CLOAKBROWSER_BINARY_PATH (see Launch line)");
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.log(`Version: ${binary.version} (${binary.tier})`);
|
|
219
|
+
}
|
|
220
|
+
console.log(`Binary: ${binary.path}`);
|
|
221
|
+
console.log(`Installed: ${binary.installed}`);
|
|
222
|
+
if (binary.cache_dir)
|
|
223
|
+
console.log(`Cache: ${binary.cache_dir}`);
|
|
224
|
+
if (binary.override) {
|
|
225
|
+
console.log(`Override: ${binary.override} (CLOAKBROWSER_BINARY_PATH)`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const launch = diag.launch;
|
|
229
|
+
if (!launch.tested) {
|
|
230
|
+
console.log(`Launch: ${launch.reason}`);
|
|
231
|
+
}
|
|
232
|
+
else if (launch.ok) {
|
|
233
|
+
console.log(`Launch: ✓ ${launch.version}`);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
console.log(`Launch: ✗ failed — ${launch.error}`);
|
|
237
|
+
for (const lib of launch.missing_libs ?? []) {
|
|
238
|
+
console.log(` missing: ${lib}`);
|
|
239
|
+
}
|
|
240
|
+
if ((launch.missing_libs ?? []).length) {
|
|
241
|
+
console.log(" → install the missing system libraries (e.g. apt-get install)");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (diag.fonts) {
|
|
245
|
+
const fonts = diag.fonts.windows_fonts;
|
|
246
|
+
console.log(`Win fonts: ${fonts}`);
|
|
247
|
+
if (fonts === "missing") {
|
|
248
|
+
console.log(" → spoofing Windows on Linux without Windows fonts; install msttcorefonts");
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const lic = diag.license;
|
|
252
|
+
if (lic.tier === "free") {
|
|
253
|
+
console.log("License: Free");
|
|
254
|
+
console.log(` ${UPGRADE_HINT}`);
|
|
255
|
+
}
|
|
256
|
+
else if (lic.error) {
|
|
257
|
+
console.log(`License: ${lic.tier} (${lic.error})`);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
console.log(`License: ${lic.tier}`);
|
|
261
|
+
}
|
|
262
|
+
console.log(`GeoIP DB: ${diag.geoip.db_present ? "present" : "not downloaded (optional)"}`);
|
|
263
|
+
console.log("Modules:");
|
|
264
|
+
for (const [label, available] of Object.entries(diag.modules)) {
|
|
265
|
+
console.log(` ${label}: ${available ? "ok" : "missing"}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function cmdInfo(args) {
|
|
269
|
+
const quick = args.includes("--quick") || args.includes("--no-launch");
|
|
270
|
+
const asJson = args.includes("--json");
|
|
271
|
+
const diag = await collectDiagnostics(quick);
|
|
272
|
+
if (asJson) {
|
|
273
|
+
console.log(JSON.stringify(diag, null, 2));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
printDiagnostics(diag);
|
|
35
277
|
}
|
|
36
278
|
}
|
|
37
279
|
async function cmdUpdate() {
|
|
@@ -55,6 +297,7 @@ function cmdClearCache() {
|
|
|
55
297
|
}
|
|
56
298
|
async function main() {
|
|
57
299
|
const command = process.argv[2];
|
|
300
|
+
const rest = process.argv.slice(3);
|
|
58
301
|
if (!command || command === "--help" || command === "-h") {
|
|
59
302
|
console.log(USAGE);
|
|
60
303
|
process.exit(command ? 0 : 2);
|
|
@@ -65,7 +308,8 @@ async function main() {
|
|
|
65
308
|
await cmdInstall();
|
|
66
309
|
break;
|
|
67
310
|
case "info":
|
|
68
|
-
|
|
311
|
+
case "doctor":
|
|
312
|
+
await cmdInfo(rest);
|
|
69
313
|
break;
|
|
70
314
|
case "update":
|
|
71
315
|
await cmdUpdate();
|
|
@@ -85,5 +329,9 @@ async function main() {
|
|
|
85
329
|
process.exit(1);
|
|
86
330
|
}
|
|
87
331
|
}
|
|
88
|
-
|
|
332
|
+
// Only run when invoked as the CLI entry point — not when imported by tests.
|
|
333
|
+
const invokedPath = process.argv[1];
|
|
334
|
+
if (invokedPath && import.meta.url === pathToFileURL(invokedPath).href) {
|
|
335
|
+
main();
|
|
336
|
+
}
|
|
89
337
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -25,6 +25,14 @@ export declare function getEffectiveVersion(pro?: boolean): string;
|
|
|
25
25
|
export declare function parseVersion(v: string): number[];
|
|
26
26
|
export declare function versionNewer(a: string, b: string): boolean;
|
|
27
27
|
export declare function getLocalBinaryOverride(): string | undefined;
|
|
28
|
+
export declare const HEADLESS_NO_VIEWPORT_MIN_VERSION: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Whether headless can launch without an emulated viewport on the resolved
|
|
31
|
+
* binary. Only binaries at or above HEADLESS_NO_VIEWPORT_MIN_VERSION qualify;
|
|
32
|
+
* older ones keep DEFAULT_VIEWPORT. A local override binary
|
|
33
|
+
* (CLOAKBROWSER_BINARY_PATH) is unknown-version, so stay on the safe path.
|
|
34
|
+
*/
|
|
35
|
+
export declare function binarySupportsHeadlessNoViewport(licenseKey?: string, browserVersion?: string): boolean;
|
|
28
36
|
export declare const IGNORE_DEFAULT_ARGS: string[];
|
|
29
37
|
export declare const DEFAULT_VIEWPORT: {
|
|
30
38
|
width: number;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,QAAA,IAAI,eAAe,QAAU,CAAC;AAU9B,OAAO,EAAE,eAAe,EAAE,CAAC;AAQ3B,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC;AAWF,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAE1C,CAAC;AAkBF,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY9E;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAmBvC;AAKD,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,UAAQ,GAAG,MAAM,CAGlE;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,UAAQ,GAAG,MAAM,CASnE;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C;AAKD,eAAO,MAAM,iBAAiB,QAEF,CAAC;AAE7B,eAAO,MAAM,cAAc,+DACmC,CAAC;AAE/D,eAAO,MAAM,wBAAwB,8DACwB,CAAC;AAE9D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,UAAQ,GAAG,MAAM,CAwCvD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAKD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAUD,eAAO,MAAM,gCAAgC,EAAE,MAAM,GAAG,IAAyB,CAAC;AAElF;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CA8BT;AAQD,eAAO,MAAM,mBAAmB,UAAyD,CAAC;AAU1F,eAAO,MAAM,gBAAgB;;;CAA+B,CAAC;AAE7D,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAmBhD"}
|
package/dist/config.js
CHANGED
|
@@ -6,6 +6,7 @@ import fs from "node:fs";
|
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { resolveLicenseKey } from "./license.js";
|
|
9
10
|
// Read wrapper version from package.json (single source of truth)
|
|
10
11
|
let WRAPPER_VERSION = "0.0.0";
|
|
11
12
|
try {
|
|
@@ -212,6 +213,58 @@ export function getLocalBinaryOverride() {
|
|
|
212
213
|
return process.env.CLOAKBROWSER_BINARY_PATH || undefined;
|
|
213
214
|
}
|
|
214
215
|
// ---------------------------------------------------------------------------
|
|
216
|
+
// Headless viewport handling by binary version
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// First Chromium build that reports coherent headless dimensions without an
|
|
219
|
+
// emulated viewport. On these binaries the wrapper launches headless with no
|
|
220
|
+
// viewport; older binaries need a fixed DEFAULT_VIEWPORT to stay coherent.
|
|
221
|
+
// null => not shipped yet; feature off, behavior byte-identical to today.
|
|
222
|
+
// TODO: set to the chromium version string that first ships it.
|
|
223
|
+
export const HEADLESS_NO_VIEWPORT_MIN_VERSION = "148.0.7778.215.4";
|
|
224
|
+
/**
|
|
225
|
+
* Whether headless can launch without an emulated viewport on the resolved
|
|
226
|
+
* binary. Only binaries at or above HEADLESS_NO_VIEWPORT_MIN_VERSION qualify;
|
|
227
|
+
* older ones keep DEFAULT_VIEWPORT. A local override binary
|
|
228
|
+
* (CLOAKBROWSER_BINARY_PATH) is unknown-version, so stay on the safe path.
|
|
229
|
+
*/
|
|
230
|
+
export function binarySupportsHeadlessNoViewport(licenseKey, browserVersion) {
|
|
231
|
+
if (HEADLESS_NO_VIEWPORT_MIN_VERSION === null)
|
|
232
|
+
return false;
|
|
233
|
+
// A declared version (browserVersion arg OR CLOAKBROWSER_VERSION env) wins even
|
|
234
|
+
// under a local override — the caller asserts the version (also how internal builds
|
|
235
|
+
// opt in). Only an override with no declared version stays on the safe path.
|
|
236
|
+
let declared;
|
|
237
|
+
try {
|
|
238
|
+
declared = normalizeRequestedVersion(browserVersion);
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
declared = undefined;
|
|
242
|
+
}
|
|
243
|
+
let version;
|
|
244
|
+
if (declared) {
|
|
245
|
+
version = declared;
|
|
246
|
+
}
|
|
247
|
+
else if (getLocalBinaryOverride()) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// Full resolution (param > env > ~/.cloakbrowser/license.key) — mirrors Python
|
|
252
|
+
// and .NET; a bare env/param check would miss file-based Pro keys.
|
|
253
|
+
const pro = Boolean(resolveLicenseKey(licenseKey));
|
|
254
|
+
version = getEffectiveVersion(pro);
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
// Fail safe (feature OFF) on a malformed version — parseVersion yields NaN
|
|
258
|
+
// instead of throwing, so guard explicitly (Python/.NET throw + fail OFF).
|
|
259
|
+
if (parseVersion(version).some(Number.isNaN))
|
|
260
|
+
return false;
|
|
261
|
+
return !versionNewer(HEADLESS_NO_VIEWPORT_MIN_VERSION, version);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// ---------------------------------------------------------------------------
|
|
215
268
|
// Playwright default args to suppress — these leak automation signals.
|
|
216
269
|
// --enable-automation: exposes navigator.webdriver = true
|
|
217
270
|
// --enable-unsafe-swiftshader: forces software WebGL rendering via SwiftShader,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/download.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Mirrors Python cloakbrowser/download.py.
|
|
5
5
|
*/
|
|
6
6
|
import type { BinaryInfo } from "./types.js";
|
|
7
|
+
export declare const WELCOME_FREE_INTERVAL_SEC: number;
|
|
7
8
|
/**
|
|
8
9
|
* A downloaded binary could not be authenticated (bad/missing signature,
|
|
9
10
|
* version mismatch, or checksum failure). Distinct from transient
|
|
@@ -32,6 +33,15 @@ export declare function clearCache(): void;
|
|
|
32
33
|
export declare function binaryInfo(browserVersion?: string): BinaryInfo;
|
|
33
34
|
/** Manually check for a newer Chromium version. Returns new version or null. */
|
|
34
35
|
export declare function checkForUpdate(): Promise<string | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Whether the welcome banner should be shown now. Pro: once ever (only when
|
|
38
|
+
* the marker is absent). Free: re-show when the marker is absent or its
|
|
39
|
+
* timestamp is older than WELCOME_FREE_INTERVAL_MS. Unreadable or legacy empty
|
|
40
|
+
* markers count as stale (due).
|
|
41
|
+
*
|
|
42
|
+
* @internal Exported for testing only.
|
|
43
|
+
*/
|
|
44
|
+
export declare function welcomeDue(marker: string, pro: boolean): boolean;
|
|
35
45
|
/** @internal Exported for testing only. */
|
|
36
46
|
export declare function verifyDownloadChecksum(filePath: string, version?: string): Promise<void>;
|
|
37
47
|
/**
|
package/dist/download.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+B7C,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAM1D;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAMD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GhG;AAED,qEAAqE;AACrE,wBAAgB,UAAU,IAAI,IAAI,CAMjC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAqB9D;AAED,gFAAgF;AAChF,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAc7D;AAMD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAUhE;AAiFD,2CAA2C;AAC3C,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE9F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,aAAa,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BrE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI,CAyCxF;AAED,2CAA2C;AAC3C,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAuB1F;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAWhE;AAsKD,2CAA2C;AAC3C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC1F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDxF;AA4ID,2CAA2C;AAC3C,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BvE;AAaD,2CAA2C;AAC3C,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,2CAA2C;AAC3C,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBxD"}
|
package/dist/download.js
CHANGED
|
@@ -13,6 +13,11 @@ import { BINARY_SIGNING_PUBKEYS, CHROMIUM_VERSION, DOWNLOAD_BASE_URL, GITHUB_API
|
|
|
13
13
|
import { resolveLicenseKey, validateLicense, getProLatestVersion } from "./license.js";
|
|
14
14
|
const DOWNLOAD_TIMEOUT_MS = 600_000; // 10 minutes
|
|
15
15
|
const UPDATE_CHECK_INTERVAL_MS = 3_600_000; // 1 hour
|
|
16
|
+
// Free-tier welcome banner re-show interval (3 days, in seconds). Free users see
|
|
17
|
+
// the Pro upsell again after this gap; Pro users see it only once (see showWelcome).
|
|
18
|
+
// Seconds (not ms) so the shared marker is consistent with the Python/.NET wrappers.
|
|
19
|
+
// @internal Exported for testing only.
|
|
20
|
+
export const WELCOME_FREE_INTERVAL_SEC = 3 * 24 * 60 * 60;
|
|
16
21
|
// Pro Chromium major shown in the welcome banner. Bump at each Pro major release
|
|
17
22
|
// (no local constant to derive it from — the live Pro version comes from the
|
|
18
23
|
// network, which we don't call just to print a banner). Mirrors download.py.
|
|
@@ -181,9 +186,32 @@ export async function checkForUpdate() {
|
|
|
181
186
|
// ---------------------------------------------------------------------------
|
|
182
187
|
// Welcome message (shown once per install)
|
|
183
188
|
// ---------------------------------------------------------------------------
|
|
189
|
+
/**
|
|
190
|
+
* Whether the welcome banner should be shown now. Pro: once ever (only when
|
|
191
|
+
* the marker is absent). Free: re-show when the marker is absent or its
|
|
192
|
+
* timestamp is older than WELCOME_FREE_INTERVAL_MS. Unreadable or legacy empty
|
|
193
|
+
* markers count as stale (due).
|
|
194
|
+
*
|
|
195
|
+
* @internal Exported for testing only.
|
|
196
|
+
*/
|
|
197
|
+
export function welcomeDue(marker, pro) {
|
|
198
|
+
if (!fs.existsSync(marker))
|
|
199
|
+
return true;
|
|
200
|
+
if (pro)
|
|
201
|
+
return false;
|
|
202
|
+
try {
|
|
203
|
+
const last = parseInt(fs.readFileSync(marker, "utf8").trim(), 10);
|
|
204
|
+
if (Number.isNaN(last))
|
|
205
|
+
return true;
|
|
206
|
+
return Math.floor(Date.now() / 1000) - last >= WELCOME_FREE_INTERVAL_SEC;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
184
212
|
function showWelcome(pro = false) {
|
|
185
213
|
const marker = path.join(getCacheDir(), ".welcome_shown");
|
|
186
|
-
if (
|
|
214
|
+
if (!welcomeDue(marker, pro))
|
|
187
215
|
return;
|
|
188
216
|
console.error();
|
|
189
217
|
console.error(" CloakBrowser — stealth Chromium for automation");
|
|
@@ -203,7 +231,7 @@ function showWelcome(pro = false) {
|
|
|
203
231
|
console.error();
|
|
204
232
|
try {
|
|
205
233
|
fs.mkdirSync(getCacheDir(), { recursive: true });
|
|
206
|
-
fs.writeFileSync(marker,
|
|
234
|
+
fs.writeFileSync(marker, String(Math.floor(Date.now() / 1000)));
|
|
207
235
|
}
|
|
208
236
|
catch {
|
|
209
237
|
// Non-fatal
|