clearcote 0.22.1 → 0.24.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 +6 -0
- package/dist/geometry.d.ts +111 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +302 -0
- package/dist/geometry.js.map +1 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +162 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -272,6 +272,12 @@ All optional. Anything not listed here is passed straight through to Playwright
|
|
|
272
272
|
| `extensions` | `--load-extension` + `--disable-extensions-except` | Unpacked-extension directory paths to load (Chromium forces headed when extensions are present). |
|
|
273
273
|
|
|
274
274
|
> **Headed launches** default to `viewport: null` (no emulated viewport) so `window.innerWidth` tracks the real OS window — an emulated `1280×720` on a real window is an impossible-window tell. Pass an explicit `viewport` to override.
|
|
275
|
+
|
|
276
|
+
> **Headless launches** (0.24.0+) get a coherent window geometry by default, so `screen`, `availWidth/Height`,
|
|
277
|
+
> `innerWidth/Height` and `outerWidth/Height` agree with each other the way a real window's do. With a
|
|
278
|
+
> `fingerprint` seed the engine's own screen and work area are used and the window is sized to them; without a
|
|
279
|
+
> seed the SDK applies a screen size drawn from real captured desktops and fits the viewport to it. It is
|
|
280
|
+
> applied at launch, before your first navigation. Pass an explicit `viewport` or `screen` to opt out entirely.
|
|
275
281
|
>
|
|
276
282
|
> **Proxies:** a `socks5://user:pass@host:port` proxy is routed via `--proxy-server` (Playwright rejects credentials in its SOCKS descriptor). Chromium can't authenticate SOCKS5, so the credentials are dropped with a warning — put the auth on a local relay.
|
|
277
283
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { BrowserContext, Page } from "playwright-core";
|
|
2
|
+
/**
|
|
3
|
+
* Regime-2 engine window-frame delta: outer = inner + (WIDTH, HEIGHT).
|
|
4
|
+
*
|
|
5
|
+
* Measured with no persona on 149.0.7827.114/linux-x64, re-confirmed on the 150 build a default
|
|
6
|
+
* launch resolves (same 8/131), and constant across every viewport probed
|
|
7
|
+
* (1280x720 -> 1288x851, 1920x947 -> 1928x1078, 2552x1269 -> 2560x1400). The regime-2 viewport is
|
|
8
|
+
* sized against these, so an engine that changed them would put headless windows back outside their
|
|
9
|
+
* screen — test/geometry.test.ts measures the running engine and fails on drift.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ENGINE_FRAME_WIDTH = 8;
|
|
12
|
+
export declare const ENGINE_FRAME_HEIGHT = 131;
|
|
13
|
+
/** `[screenWidth, screenHeight, weight, osHint]` — weight is distinct /24s in the corpus. */
|
|
14
|
+
export declare const HEADLESS_SCREEN_PROFILES: ReadonlyArray<readonly [number, number, number, string]>;
|
|
15
|
+
export interface Size {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
export interface HeadlessGeometry {
|
|
20
|
+
screen: Size;
|
|
21
|
+
viewport: Size;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Whether `--fingerprint=<seed>` is on the command line, i.e. the engine spoofs screen/avail itself
|
|
25
|
+
* (regime 1). `lightStealth` drops that switch on purpose, so this is false for it even though a
|
|
26
|
+
* seed was passed to the SDK.
|
|
27
|
+
*/
|
|
28
|
+
export declare function personaActive(args?: readonly string[] | null): boolean;
|
|
29
|
+
/** True when the caller passed their own window geometry flag. */
|
|
30
|
+
export declare function callerSizedTheWindow(args?: readonly string[] | null): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* The imported profile's own screen, or null.
|
|
33
|
+
*
|
|
34
|
+
* Measured: `--fingerprint-profile` supplies screen/avail only when a persona (`--fingerprint=`) is
|
|
35
|
+
* ALSO running. Without a seed the profile's display is inert, so the SDK's override is all the page
|
|
36
|
+
* sees — and taking it from the profile keeps the imported identity instead of giving every seedless
|
|
37
|
+
* profile launch the same corpus screen.
|
|
38
|
+
*
|
|
39
|
+
* Reads the value off the switch (gzip+base64 of the capture JSON), which is the one form every SDK
|
|
40
|
+
* has in hand here whatever the caller passed. Best-effort: a profile the engine can still use must
|
|
41
|
+
* never fail a launch because this could not read a screen out of it, so failures return null. A
|
|
42
|
+
* screen too small to hold the engine's frame is rejected for the same reason the corpus table has no
|
|
43
|
+
* tiny rows — the leftover viewport would not lay out a desktop site. (That guard is what keeps an
|
|
44
|
+
* `profile="auto"` capture made on a headless host, whose screen can be the 800x600 surface, from
|
|
45
|
+
* becoming the persona's display.)
|
|
46
|
+
*/
|
|
47
|
+
export declare function profileScreenFromArgs(args?: readonly string[] | null): [number, number] | null;
|
|
48
|
+
/**
|
|
49
|
+
* Regime-2 context geometry. The viewport is the screen minus the engine's frame, so the synthesized
|
|
50
|
+
* outerWidth/Height lands exactly on the screen edge (a maximized window) instead of past it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function headlessGeometry(seed?: string | number | null): HeadlessGeometry;
|
|
53
|
+
export type AppliedGeometry = {
|
|
54
|
+
mode: "persona";
|
|
55
|
+
} | ({
|
|
56
|
+
mode: "profile";
|
|
57
|
+
} & HeadlessGeometry);
|
|
58
|
+
/**
|
|
59
|
+
* Default a headless launch's context geometry in place; returns what was applied, or null.
|
|
60
|
+
*
|
|
61
|
+
* `{mode: "persona"}` means regime 1: `viewport: null` was set and the window still needs fitting to
|
|
62
|
+
* the persona's work area (see {@link fitWindowToPersona}). `{mode: "profile", ...}` means regime 2:
|
|
63
|
+
* screen + viewport were set and nothing else is needed.
|
|
64
|
+
*
|
|
65
|
+
* Skipped when headed (the real window is already coherent) and when the caller expressed ANY
|
|
66
|
+
* geometry intent — `viewport` (including an explicit null) or `screen`. `headless` unset means
|
|
67
|
+
* headless, matching Playwright.
|
|
68
|
+
*/
|
|
69
|
+
export declare function applyHeadlessGeometry(opts: Record<string, unknown>, seed?: string | number | null, args?: readonly string[] | null): AppliedGeometry | null;
|
|
70
|
+
/**
|
|
71
|
+
* The bounds correction, given what the window reported after the first attempt.
|
|
72
|
+
*
|
|
73
|
+
* Requested bounds and reported outerHeight are not the same quantity: on 149 the window reports
|
|
74
|
+
* 33px less than the bounds height it was given, so fitting bounds to the work area lands 33px short
|
|
75
|
+
* of maximized (real maximized captures have outer == avail). Rather than hardcode 33, measure the
|
|
76
|
+
* shortfall and add it back — that self-tunes if the engine changes. Never asks for more than the
|
|
77
|
+
* shortfall, so the window cannot be pushed past the work area.
|
|
78
|
+
*/
|
|
79
|
+
export declare function fitPlan(avail: number[], outer: number[]): [number, number] | null;
|
|
80
|
+
/**
|
|
81
|
+
* Regime 1: size the headless window to the persona's own work area, so the page reports a maximized
|
|
82
|
+
* window (outer == avail) instead of the 800x600 headless default sitting inside a spoofed
|
|
83
|
+
* 1920x1080 screen.
|
|
84
|
+
*
|
|
85
|
+
* `--start-maximized` and CDP `windowState: "maximized"` are both no-ops in headless (measured — the
|
|
86
|
+
* window stays at its default size), which is why this sets explicit bounds.
|
|
87
|
+
*
|
|
88
|
+
* Never throws: a geometry improvement must not be able to fail a launch.
|
|
89
|
+
*/
|
|
90
|
+
export declare function fitWindowToPersona(page: Page, args?: readonly string[] | null): Promise<[number, number] | null>;
|
|
91
|
+
/**
|
|
92
|
+
* Regime 2: move the real window to (0, 0).
|
|
93
|
+
*
|
|
94
|
+
* Regime 2 leaves the real window at the headless default position — measured (10, 10) — while the
|
|
95
|
+
* emulated viewport makes outerWidth/Height span the whole spoofed screen. `screenX + outerWidth`
|
|
96
|
+
* then exceeds `screen.width`: the window hangs 10px past the screen edge on both axes. Only 6% of
|
|
97
|
+
* real single-display captures do that, so it is a weak but free tell. The move costs one CDP call
|
|
98
|
+
* and leaves the emulated viewport untouched (verified: inner/outer unchanged, screenX/Y become 0).
|
|
99
|
+
*
|
|
100
|
+
* Never throws.
|
|
101
|
+
*/
|
|
102
|
+
export declare function moveWindowToOrigin(page: Page, args?: readonly string[] | null): Promise<[number, number] | null>;
|
|
103
|
+
/**
|
|
104
|
+
* Apply the headless window fixup once, on the first page: fit to the persona's work area (persona
|
|
105
|
+
* regime) or move to the origin (profile regime). A persistent context already owns a page, so act
|
|
106
|
+
* immediately; a browser-level context does not, so defer to its first `newPage`.
|
|
107
|
+
*/
|
|
108
|
+
export declare function installWindowFixup(context: BrowserContext, args?: readonly string[] | null, persona?: boolean): Promise<void>;
|
|
109
|
+
/** `inner <= outer <= avail <= screen` on both axes — the chain a real window satisfies. */
|
|
110
|
+
export declare function geometryIsCoherent(screen: number[], avail: number[], inner: number[], outer: number[]): boolean;
|
|
111
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAS7F,CAAC;AAKF,MAAM,WAAW,IAAI;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACvD,MAAM,WAAW,gBAAgB;IAAG,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE;AAElE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAEtE;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAE7E;AA8BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAGhF;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB,CAAC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,gBAAgB,CAAC,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC7B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC9B,eAAe,GAAG,IAAI,CAaxB;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAKjF;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAuBlC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAWlC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,EAC/B,OAAO,UAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAClE,OAAO,CAIT"}
|
package/dist/geometry.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless window geometry. Port of the Python SDK's `_geometry.py`; the profile table, the seed
|
|
3
|
+
* hashing and the skip rules are identical, so a seed selects the same persona in every SDK.
|
|
4
|
+
*
|
|
5
|
+
* Headed launches take their geometry from the real display and the SDK keeps the page on it
|
|
6
|
+
* (`viewport: null`), so screen/avail/inner/outer agree by construction. Headless has no display,
|
|
7
|
+
* and what it reports depends on whether the engine's persona machinery is running. Both regimes
|
|
8
|
+
* were measured on 149.0.7827.114/linux-x64.
|
|
9
|
+
*
|
|
10
|
+
* REGIME 1 — a persona is active (`--fingerprint=<seed>` on the command line). The engine spoofs
|
|
11
|
+
* screen AND avail from the seed, including a taskbar (seed A -> 1920x1080 / avail 1920x1040, seed B
|
|
12
|
+
* -> 2560x1440 / 1400, seed C -> 1600x900 / 860), and its values BEAT a CDP screen override — so the
|
|
13
|
+
* SDK must not try to set screen here, it would silently lose. Leaving Playwright's emulated viewport
|
|
14
|
+
* on is just as wrong: inner 1280x720 inside an outer of 1920x1040 leaves 640px of window
|
|
15
|
+
* unaccounted for by any frame a real browser has. So `viewport: null` plus one window resize into
|
|
16
|
+
* the persona's own work area, which lands a maximized window:
|
|
17
|
+
*
|
|
18
|
+
* screen 1920x1080 avail 1920x1040 inner 1920x952 outer 1920x1040 frame (0, 88)
|
|
19
|
+
*
|
|
20
|
+
* REGIME 2 — no persona (the default seedless launch, and `lightStealth`, which drops
|
|
21
|
+
* `--fingerprint` deliberately). Nothing spoofs screen, so Chromium reports screen == the emulated
|
|
22
|
+
* viewport and then synthesizes a frame on top of it:
|
|
23
|
+
*
|
|
24
|
+
* screen 1280x720 avail 1280x720 inner 1280x720 outer 1288x851 <- outer > screen
|
|
25
|
+
*
|
|
26
|
+
* A window larger than its own screen is an impossible state, readable in two property lookups, and
|
|
27
|
+
* it was present on every headless shape reachable through the SDK. The lever here is CDP
|
|
28
|
+
* `Emulation.setDeviceMetricsOverride` via Playwright's context `screen` option — the only thing that
|
|
29
|
+
* moves screen.* in headless (the engine's own `--fingerprint-screen-*` switches are inert without a
|
|
30
|
+
* persona: verified through the SDK options and passed raw, headless and headed). So pick a screen
|
|
31
|
+
* size real machines have and size the viewport so the frame lands exactly on the screen edge.
|
|
32
|
+
*
|
|
33
|
+
* CDP LIMIT: the override sets availWidth/availHeight equal to screen.*, so regime 2 always reports
|
|
34
|
+
* no taskbar. Not invented — 78 of 432 real desktop captures (23 of 79 networks) report avail ==
|
|
35
|
+
* screen too. It is a minority shape and the only one available here; regime 1 is the more faithful
|
|
36
|
+
* of the two, so prefer a seeded launch when it is an option.
|
|
37
|
+
*
|
|
38
|
+
* PROVENANCE of the regime-2 table: the `audit_profiles` corpus (real captures from the public
|
|
39
|
+
* fingerprint audit), desktop rows whose geometry is self-consistent and which are not themselves
|
|
40
|
+
* emulated-viewport captures, counted by distinct /24 so one busy machine cannot skew it. macOS rows
|
|
41
|
+
* are dropped (color_depth 30, which this engine cannot spoof), non-1.0 DPR rows are dropped
|
|
42
|
+
* (scaling changes what the rasterizer produces), and ultrawide 3440x1440 is capped to weight 2
|
|
43
|
+
* (12 distinct /24s in the corpus — developers over-represent ultrawides).
|
|
44
|
+
*/
|
|
45
|
+
import { createHash } from "node:crypto";
|
|
46
|
+
import { gunzipSync } from "node:zlib";
|
|
47
|
+
/**
|
|
48
|
+
* Regime-2 engine window-frame delta: outer = inner + (WIDTH, HEIGHT).
|
|
49
|
+
*
|
|
50
|
+
* Measured with no persona on 149.0.7827.114/linux-x64, re-confirmed on the 150 build a default
|
|
51
|
+
* launch resolves (same 8/131), and constant across every viewport probed
|
|
52
|
+
* (1280x720 -> 1288x851, 1920x947 -> 1928x1078, 2552x1269 -> 2560x1400). The regime-2 viewport is
|
|
53
|
+
* sized against these, so an engine that changed them would put headless windows back outside their
|
|
54
|
+
* screen — test/geometry.test.ts measures the running engine and fails on drift.
|
|
55
|
+
*/
|
|
56
|
+
export const ENGINE_FRAME_WIDTH = 8;
|
|
57
|
+
export const ENGINE_FRAME_HEIGHT = 131;
|
|
58
|
+
/** `[screenWidth, screenHeight, weight, osHint]` — weight is distinct /24s in the corpus. */
|
|
59
|
+
export const HEADLESS_SCREEN_PROFILES = [
|
|
60
|
+
[1920, 1080, 24, "windows"],
|
|
61
|
+
[2560, 1440, 13, "windows"],
|
|
62
|
+
[1920, 1200, 6, "linux"],
|
|
63
|
+
[1366, 768, 3, "windows"],
|
|
64
|
+
[1600, 900, 3, "linux"],
|
|
65
|
+
[3440, 1440, 2, "windows"], // capped from 12 (see the module comment)
|
|
66
|
+
[3840, 2160, 2, "windows"],
|
|
67
|
+
[1680, 1050, 2, "windows"],
|
|
68
|
+
];
|
|
69
|
+
/** Window flags that mean the caller sized the window themselves. */
|
|
70
|
+
const CALLER_WINDOW_FLAGS = ["--window-size", "--window-position", "--start-maximized"];
|
|
71
|
+
/**
|
|
72
|
+
* Whether `--fingerprint=<seed>` is on the command line, i.e. the engine spoofs screen/avail itself
|
|
73
|
+
* (regime 1). `lightStealth` drops that switch on purpose, so this is false for it even though a
|
|
74
|
+
* seed was passed to the SDK.
|
|
75
|
+
*/
|
|
76
|
+
export function personaActive(args) {
|
|
77
|
+
return (args ?? []).some((a) => String(a).startsWith("--fingerprint="));
|
|
78
|
+
}
|
|
79
|
+
/** True when the caller passed their own window geometry flag. */
|
|
80
|
+
export function callerSizedTheWindow(args) {
|
|
81
|
+
return (args ?? []).some((a) => CALLER_WINDOW_FLAGS.includes(String(a).split("=")[0]));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Weighted, deterministic choice from {@link HEADLESS_SCREEN_PROFILES}. Same construction as
|
|
85
|
+
* `lightStealthValues`: the full sha256 digest as a big integer, so Python, Node and .NET select the
|
|
86
|
+
* identical row for a seed. An unset seed maps to a fixed key rather than randomness, so a seedless
|
|
87
|
+
* launch stays reproducible.
|
|
88
|
+
*/
|
|
89
|
+
function pick(seed) {
|
|
90
|
+
const key = seed === undefined || seed === null || seed === "" ? "clearcote-headless-geometry" : String(seed);
|
|
91
|
+
const digest = createHash("sha256").update(key, "utf8").digest("hex");
|
|
92
|
+
const total = HEADLESS_SCREEN_PROFILES.reduce((n, row) => n + row[2], 0);
|
|
93
|
+
let point = Number(BigInt("0x" + digest) % BigInt(total));
|
|
94
|
+
for (const row of HEADLESS_SCREEN_PROFILES) {
|
|
95
|
+
point -= row[2];
|
|
96
|
+
if (point < 0)
|
|
97
|
+
return row;
|
|
98
|
+
}
|
|
99
|
+
return HEADLESS_SCREEN_PROFILES[HEADLESS_SCREEN_PROFILES.length - 1];
|
|
100
|
+
}
|
|
101
|
+
/** Context geometry for a given screen: viewport = screen minus the engine's frame. */
|
|
102
|
+
function geometryFor(width, height) {
|
|
103
|
+
return {
|
|
104
|
+
screen: { width, height },
|
|
105
|
+
viewport: { width: width - ENGINE_FRAME_WIDTH, height: height - ENGINE_FRAME_HEIGHT },
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const PROFILE_FLAG = "--fingerprint-profile=";
|
|
109
|
+
/**
|
|
110
|
+
* The imported profile's own screen, or null.
|
|
111
|
+
*
|
|
112
|
+
* Measured: `--fingerprint-profile` supplies screen/avail only when a persona (`--fingerprint=`) is
|
|
113
|
+
* ALSO running. Without a seed the profile's display is inert, so the SDK's override is all the page
|
|
114
|
+
* sees — and taking it from the profile keeps the imported identity instead of giving every seedless
|
|
115
|
+
* profile launch the same corpus screen.
|
|
116
|
+
*
|
|
117
|
+
* Reads the value off the switch (gzip+base64 of the capture JSON), which is the one form every SDK
|
|
118
|
+
* has in hand here whatever the caller passed. Best-effort: a profile the engine can still use must
|
|
119
|
+
* never fail a launch because this could not read a screen out of it, so failures return null. A
|
|
120
|
+
* screen too small to hold the engine's frame is rejected for the same reason the corpus table has no
|
|
121
|
+
* tiny rows — the leftover viewport would not lay out a desktop site. (That guard is what keeps an
|
|
122
|
+
* `profile="auto"` capture made on a headless host, whose screen can be the 800x600 surface, from
|
|
123
|
+
* becoming the persona's display.)
|
|
124
|
+
*/
|
|
125
|
+
export function profileScreenFromArgs(args) {
|
|
126
|
+
for (const raw of args ?? []) {
|
|
127
|
+
const arg = String(raw);
|
|
128
|
+
if (!arg.startsWith(PROFILE_FLAG))
|
|
129
|
+
continue;
|
|
130
|
+
try {
|
|
131
|
+
const json = gunzipSync(Buffer.from(arg.slice(PROFILE_FLAG.length), "base64")).toString("utf8");
|
|
132
|
+
const screen = (JSON.parse(json) || {}).screen || {};
|
|
133
|
+
const width = Number(screen.width);
|
|
134
|
+
const height = Number(screen.height);
|
|
135
|
+
if (!Number.isFinite(width) || !Number.isFinite(height))
|
|
136
|
+
return null;
|
|
137
|
+
if (width - ENGINE_FRAME_WIDTH < 1024 || height - ENGINE_FRAME_HEIGHT < 600)
|
|
138
|
+
return null;
|
|
139
|
+
return [width, height];
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Regime-2 context geometry. The viewport is the screen minus the engine's frame, so the synthesized
|
|
149
|
+
* outerWidth/Height lands exactly on the screen edge (a maximized window) instead of past it.
|
|
150
|
+
*/
|
|
151
|
+
export function headlessGeometry(seed) {
|
|
152
|
+
const [sw, sh] = pick(seed);
|
|
153
|
+
return geometryFor(sw, sh);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Default a headless launch's context geometry in place; returns what was applied, or null.
|
|
157
|
+
*
|
|
158
|
+
* `{mode: "persona"}` means regime 1: `viewport: null` was set and the window still needs fitting to
|
|
159
|
+
* the persona's work area (see {@link fitWindowToPersona}). `{mode: "profile", ...}` means regime 2:
|
|
160
|
+
* screen + viewport were set and nothing else is needed.
|
|
161
|
+
*
|
|
162
|
+
* Skipped when headed (the real window is already coherent) and when the caller expressed ANY
|
|
163
|
+
* geometry intent — `viewport` (including an explicit null) or `screen`. `headless` unset means
|
|
164
|
+
* headless, matching Playwright.
|
|
165
|
+
*/
|
|
166
|
+
export function applyHeadlessGeometry(opts, seed, args) {
|
|
167
|
+
if (opts.headless === false)
|
|
168
|
+
return null;
|
|
169
|
+
if ("viewport" in opts || "screen" in opts)
|
|
170
|
+
return null;
|
|
171
|
+
if (personaActive(args)) {
|
|
172
|
+
opts.viewport = null;
|
|
173
|
+
return { mode: "persona" };
|
|
174
|
+
}
|
|
175
|
+
// An imported profile carries its own display; prefer it over a corpus pick.
|
|
176
|
+
const fromProfile = profileScreenFromArgs(args);
|
|
177
|
+
const geom = fromProfile ? geometryFor(fromProfile[0], fromProfile[1]) : headlessGeometry(seed);
|
|
178
|
+
opts.screen = geom.screen;
|
|
179
|
+
opts.viewport = geom.viewport;
|
|
180
|
+
return { mode: "profile", ...geom };
|
|
181
|
+
}
|
|
182
|
+
// A plain expression, NOT "() => [...]": Playwright evaluates an arrow-function string to a
|
|
183
|
+
// function object rather than calling it (which silently broke this fit once).
|
|
184
|
+
const WORKAREA_JS = "[screen.availWidth, screen.availHeight]";
|
|
185
|
+
const OUTER_JS = "[outerWidth, outerHeight]";
|
|
186
|
+
/** A work area only a non-engaged persona would report (the headless default) is not worth fitting to. */
|
|
187
|
+
function plausible(area) {
|
|
188
|
+
return !!area && area.length === 2 && area[0] >= 1024 && area[1] >= 600;
|
|
189
|
+
}
|
|
190
|
+
function bounds(width, height) {
|
|
191
|
+
return { left: 0, top: 0, width: Math.round(width), height: Math.round(height) };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* The bounds correction, given what the window reported after the first attempt.
|
|
195
|
+
*
|
|
196
|
+
* Requested bounds and reported outerHeight are not the same quantity: on 149 the window reports
|
|
197
|
+
* 33px less than the bounds height it was given, so fitting bounds to the work area lands 33px short
|
|
198
|
+
* of maximized (real maximized captures have outer == avail). Rather than hardcode 33, measure the
|
|
199
|
+
* shortfall and add it back — that self-tunes if the engine changes. Never asks for more than the
|
|
200
|
+
* shortfall, so the window cannot be pushed past the work area.
|
|
201
|
+
*/
|
|
202
|
+
export function fitPlan(avail, outer) {
|
|
203
|
+
const dw = avail[0] - outer[0];
|
|
204
|
+
const dh = avail[1] - outer[1];
|
|
205
|
+
if (dw <= 0 && dh <= 0)
|
|
206
|
+
return null;
|
|
207
|
+
return [avail[0] + Math.max(dw, 0), avail[1] + Math.max(dh, 0)];
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Regime 1: size the headless window to the persona's own work area, so the page reports a maximized
|
|
211
|
+
* window (outer == avail) instead of the 800x600 headless default sitting inside a spoofed
|
|
212
|
+
* 1920x1080 screen.
|
|
213
|
+
*
|
|
214
|
+
* `--start-maximized` and CDP `windowState: "maximized"` are both no-ops in headless (measured — the
|
|
215
|
+
* window stays at its default size), which is why this sets explicit bounds.
|
|
216
|
+
*
|
|
217
|
+
* Never throws: a geometry improvement must not be able to fail a launch.
|
|
218
|
+
*/
|
|
219
|
+
export async function fitWindowToPersona(page, args) {
|
|
220
|
+
if (callerSizedTheWindow(args))
|
|
221
|
+
return null;
|
|
222
|
+
try {
|
|
223
|
+
const avail = (await page.evaluate(WORKAREA_JS));
|
|
224
|
+
if (!plausible(avail))
|
|
225
|
+
return null;
|
|
226
|
+
const cdp = await page.context().newCDPSession(page);
|
|
227
|
+
const { windowId } = (await cdp.send("Browser.getWindowForTarget"));
|
|
228
|
+
await cdp.send("Browser.setWindowBounds", { windowId, bounds: bounds(avail[0], avail[1]) });
|
|
229
|
+
let outer = (await page.evaluate(OUTER_JS));
|
|
230
|
+
const plan = fitPlan(avail, outer);
|
|
231
|
+
if (plan) {
|
|
232
|
+
await cdp.send("Browser.setWindowBounds", { windowId, bounds: bounds(plan[0], plan[1]) });
|
|
233
|
+
outer = (await page.evaluate(OUTER_JS));
|
|
234
|
+
// Overshooting would trade one impossible geometry for another (outer > avail).
|
|
235
|
+
if (outer[0] > avail[0] || outer[1] > avail[1]) {
|
|
236
|
+
await cdp.send("Browser.setWindowBounds", { windowId, bounds: bounds(avail[0], avail[1]) });
|
|
237
|
+
outer = (await page.evaluate(OUTER_JS));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return [outer[0], outer[1]];
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return null; // deliberately silent: never fail a launch over geometry
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Regime 2: move the real window to (0, 0).
|
|
248
|
+
*
|
|
249
|
+
* Regime 2 leaves the real window at the headless default position — measured (10, 10) — while the
|
|
250
|
+
* emulated viewport makes outerWidth/Height span the whole spoofed screen. `screenX + outerWidth`
|
|
251
|
+
* then exceeds `screen.width`: the window hangs 10px past the screen edge on both axes. Only 6% of
|
|
252
|
+
* real single-display captures do that, so it is a weak but free tell. The move costs one CDP call
|
|
253
|
+
* and leaves the emulated viewport untouched (verified: inner/outer unchanged, screenX/Y become 0).
|
|
254
|
+
*
|
|
255
|
+
* Never throws.
|
|
256
|
+
*/
|
|
257
|
+
export async function moveWindowToOrigin(page, args) {
|
|
258
|
+
if (callerSizedTheWindow(args))
|
|
259
|
+
return null;
|
|
260
|
+
try {
|
|
261
|
+
const cdp = await page.context().newCDPSession(page);
|
|
262
|
+
const { windowId } = (await cdp.send("Browser.getWindowForTarget"));
|
|
263
|
+
// left/top only — sending width/height here would fight the emulated viewport.
|
|
264
|
+
await cdp.send("Browser.setWindowBounds", { windowId, bounds: { left: 0, top: 0 } });
|
|
265
|
+
return [0, 0];
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Apply the headless window fixup once, on the first page: fit to the persona's work area (persona
|
|
273
|
+
* regime) or move to the origin (profile regime). A persistent context already owns a page, so act
|
|
274
|
+
* immediately; a browser-level context does not, so defer to its first `newPage`.
|
|
275
|
+
*/
|
|
276
|
+
export async function installWindowFixup(context, args, persona = true) {
|
|
277
|
+
let done = false;
|
|
278
|
+
const fix = async (page) => {
|
|
279
|
+
if (done)
|
|
280
|
+
return page;
|
|
281
|
+
done = true;
|
|
282
|
+
if (persona)
|
|
283
|
+
await fitWindowToPersona(page, args);
|
|
284
|
+
else
|
|
285
|
+
await moveWindowToOrigin(page, args);
|
|
286
|
+
return page;
|
|
287
|
+
};
|
|
288
|
+
const existing = context.pages();
|
|
289
|
+
if (existing.length) {
|
|
290
|
+
await fix(existing[0]);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const origNewPage = context.newPage.bind(context);
|
|
294
|
+
context.newPage = async () => fix(await origNewPage());
|
|
295
|
+
}
|
|
296
|
+
/** `inner <= outer <= avail <= screen` on both axes — the chain a real window satisfies. */
|
|
297
|
+
export function geometryIsCoherent(screen, avail, inner, outer) {
|
|
298
|
+
return inner[0] <= outer[0] && inner[1] <= outer[1]
|
|
299
|
+
&& outer[0] <= avail[0] && outer[1] <= avail[1]
|
|
300
|
+
&& avail[0] <= screen[0] && avail[1] <= screen[1];
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -49,12 +49,25 @@ interface ProfileOption {
|
|
|
49
49
|
interface ExtensionsOption {
|
|
50
50
|
/** Unpacked-extension directory paths. */
|
|
51
51
|
extensions?: string[];
|
|
52
|
-
/** Disable Privacy Sandbox APIs (Topics/FLEDGE/Shared Storage
|
|
53
|
-
*
|
|
52
|
+
/** Disable Privacy Sandbox APIs (Topics/FLEDGE/Shared Storage/Fenced Frames).
|
|
53
|
+
*
|
|
54
|
+
* Default `false` since 0.23.0 — real Google Chrome ships all of them, and the default persona
|
|
55
|
+
* (`brand: "chrome"`) claims to be Google Chrome, so disabling them was a coherence tell rather
|
|
56
|
+
* than a privacy win. Set `true` when the persona genuinely is de-Googled Chromium. */
|
|
54
57
|
disablePrivacySandbox?: boolean;
|
|
55
58
|
}
|
|
59
|
+
/** Profile-directory control for {@link launch}. */
|
|
60
|
+
interface EphemeralProfileOption {
|
|
61
|
+
/** Launch on a throwaway persistent profile that is deleted on close. Default `true` since
|
|
62
|
+
* 0.23.0 — incognito cannot load the Widevine CDM, which is itself a tell. Set `false` for the
|
|
63
|
+
* pre-0.23 incognito launch. */
|
|
64
|
+
ephemeralProfile?: boolean;
|
|
65
|
+
/** Keep a profile at this path instead of a throwaway one (delegates to
|
|
66
|
+
* {@link launchPersistentContext}; the directory is NOT deleted). */
|
|
67
|
+
userDataDir?: string;
|
|
68
|
+
}
|
|
56
69
|
/** Options for {@link launch}: Playwright launch options + Clearcote fingerprint + agent + download options. */
|
|
57
|
-
export interface LaunchOptions extends PlaywrightLaunchOptions, FingerprintOptions, AgentOptions, GeoipOption, ProfileOption, ExtensionsOption, HumanizeOptions, DownloadOptions, LicenseOptions {
|
|
70
|
+
export interface LaunchOptions extends PlaywrightLaunchOptions, FingerprintOptions, AgentOptions, GeoipOption, ProfileOption, ExtensionsOption, EphemeralProfileOption, HumanizeOptions, DownloadOptions, LicenseOptions {
|
|
58
71
|
}
|
|
59
72
|
/** Options for {@link launchPersistentContext}. */
|
|
60
73
|
export interface PersistentContextOptions extends PlaywrightLaunchOptions, BrowserContextOptions, FingerprintOptions, AgentOptions, GeoipOption, ProfileOption, ExtensionsOption, HumanizeOptions, DownloadOptions, LicenseOptions {
|
|
@@ -102,7 +115,19 @@ export declare function isWinLaunchRace(err: unknown): boolean;
|
|
|
102
115
|
* path, which always gets a clean SxS evaluation. Pass-through on non-Windows.
|
|
103
116
|
*/
|
|
104
117
|
export declare function winAvRetry<T>(doLaunch: (exe: string) => Promise<T>, exe: string): Promise<T>;
|
|
105
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Launch Clearcote and return a Playwright browser handle backed by a REAL Chrome profile.
|
|
120
|
+
*
|
|
121
|
+
* PROFILE-BACKED BY DEFAULT (changed in 0.23.0). This used to be `chromium.launch()` — incognito,
|
|
122
|
+
* no profile directory. Incognito cannot load a component-updated CDM, so
|
|
123
|
+
* `requestMediaKeySystemAccess('com.widevine.alpha')` rejected and the EME surface was a
|
|
124
|
+
* no-Widevine tell on a build branded Google Chrome (measured against the live audit on 150-r10).
|
|
125
|
+
* It now launches a persistent context on a throwaway directory, so `widevine: true` works here.
|
|
126
|
+
*
|
|
127
|
+
* The directory is deleted when the context closes AND on process exit, so nothing is left behind
|
|
128
|
+
* and no state survives to the next launch — the incognito-like isolation callers relied on is
|
|
129
|
+
* preserved. Pass `userDataDir` to keep a profile, or `ephemeralProfile: false` to opt back out.
|
|
130
|
+
*/
|
|
106
131
|
export declare function launch(options?: LaunchOptions): Promise<Browser>;
|
|
107
132
|
/**
|
|
108
133
|
* Launch Clearcote with a persistent profile directory and return a Playwright
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,aAAa,IAAI,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ import { RELEASE, platformRelease } from "./release.js";
|
|
|
29
29
|
import { fetchWidevine, seedWidevine, widevineArgs } from "./widevine.js";
|
|
30
30
|
import { emitCoherenceWarnings } from "./warnings.js";
|
|
31
31
|
import { fontLaunchEnv } from "./fonts.js";
|
|
32
|
+
import { applyHeadlessGeometry, fitWindowToPersona, installWindowFixup, moveWindowToOrigin, } from "./geometry.js";
|
|
32
33
|
import { acquireLease, resolveLicenseKey, withRunToken } from "./license.js";
|
|
33
34
|
export { proEnsureBinary } from "./download.js";
|
|
34
35
|
export { resolveGeo } from "./geoip.js";
|
|
@@ -111,6 +112,36 @@ export async function download(options = {}) {
|
|
|
111
112
|
const { version, licenseKey, licenseApiBase, ...dl } = options;
|
|
112
113
|
return executablePath({ version, pro: proSelector(licenseKey, licenseApiBase), ...dl });
|
|
113
114
|
}
|
|
115
|
+
/** Headless: the geometry defaults are CONTEXT options and `chromium.launch()` takes none, so they
|
|
116
|
+
* ride on newPage/newContext instead — persona regime gets `viewport: null` plus a window fit, no-
|
|
117
|
+
* persona regime gets the screen + viewport override. See ./geometry.ts for why each is needed. */
|
|
118
|
+
function installHeadlessGeometry(browser, geom, args) {
|
|
119
|
+
// chromium.launch() accepts no context options, so the headless geometry default has to ride on
|
|
120
|
+
// newPage/newContext — the same shape as installHeadedViewport. In persona mode each new context
|
|
121
|
+
// is a new window, so each also gets the window fit. Any per-call geometry option wins.
|
|
122
|
+
const persona = geom.mode === "persona";
|
|
123
|
+
const defaults = persona
|
|
124
|
+
? { viewport: null }
|
|
125
|
+
: { screen: geom.screen, viewport: geom.viewport };
|
|
126
|
+
const merge = (o = {}) => "viewport" in o || "screen" in o ? o : { ...o, ...defaults };
|
|
127
|
+
const origNewPage = browser.newPage.bind(browser);
|
|
128
|
+
const origNewContext = browser.newContext.bind(browser);
|
|
129
|
+
browser.newPage =
|
|
130
|
+
async (o = {}) => {
|
|
131
|
+
const page = await origNewPage(merge(o));
|
|
132
|
+
if (persona)
|
|
133
|
+
await fitWindowToPersona(page, args);
|
|
134
|
+
else
|
|
135
|
+
await moveWindowToOrigin(page, args);
|
|
136
|
+
return page;
|
|
137
|
+
};
|
|
138
|
+
browser.newContext =
|
|
139
|
+
async (o = {}) => {
|
|
140
|
+
const context = await origNewContext(merge(o));
|
|
141
|
+
await installWindowFixup(context, args, persona);
|
|
142
|
+
return context;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
114
145
|
/** A headed launch with Playwright's default emulated viewport (1280x720) on the real OS window
|
|
115
146
|
* makes window.innerWidth/Height disagree with the actual window — an impossible-window tell. For a
|
|
116
147
|
* headed browser, default new pages/contexts to `viewport: null` (innerWidth tracks the real window)
|
|
@@ -126,7 +157,15 @@ function installHeadedViewport(browser) {
|
|
|
126
157
|
* collapse all --enable-features/--disable-features into one each (Chromium keeps only the last). */
|
|
127
158
|
function assembleArgs(fpArgs, agArgs, extArgs, proxyArgs, disablePrivacySandbox, webrtcIp, userArgs, proxyForQuic) {
|
|
128
159
|
const base = [...fpArgs, ...agArgs, ...extArgs, ...proxyArgs, ...quicArgs(proxyForQuic)];
|
|
129
|
-
|
|
160
|
+
// DEFAULT FLIPPED IN 0.23.0 — opt IN to disabling, rather than opt out.
|
|
161
|
+
//
|
|
162
|
+
// Disabling Topics/FLEDGE/Shared Storage/Fenced Frames is coherent for a de-Googled persona, and
|
|
163
|
+
// incoherent for the default one: `brand: "chrome"` claims Google Chrome, which ships all of
|
|
164
|
+
// them. Measured on the live audit against 150-r10, "a build claiming Chrome carries the Privacy
|
|
165
|
+
// Sandbox surface Chrome ships" failed as an implausible value — the same defect class as the
|
|
166
|
+
// WebUSB split fixed in r7. Pass disablePrivacySandbox: true when the persona really is
|
|
167
|
+
// de-Googled Chromium.
|
|
168
|
+
if (disablePrivacySandbox === true)
|
|
130
169
|
base.push(...privacySandboxArgs());
|
|
131
170
|
base.push(...webrtcDefaultDenyArgs([...base, ...userArgs], webrtcIp));
|
|
132
171
|
return mergeFeatureFlags([...base, ...userArgs]);
|
|
@@ -220,7 +259,23 @@ async function applyAutoProfile(fingerprint, exe, opts) {
|
|
|
220
259
|
// RELEASE.version is only the SDK's PINNED default; measureHost reads the real major from the
|
|
221
260
|
// engine it launches, which is what matters when the caller pinned a version or brought their
|
|
222
261
|
// own binary.
|
|
223
|
-
|
|
262
|
+
// THE NESTED LAUNCH NEEDS THE LICENSE TOO, and used to be given it only by accident.
|
|
263
|
+
//
|
|
264
|
+
// measureHost launches the SAME binary the real session will use. On PRO that is the gated
|
|
265
|
+
// build: with no run-token the engine gate kills it at startup and Playwright surfaces
|
|
266
|
+
// `TargetClosedError: Target page, context or browser has been closed` — which names neither
|
|
267
|
+
// licensing nor a call the caller wrote. It only worked when the key happened to be in
|
|
268
|
+
// CLEARCOTE_LICENSE_KEY, because launch() resolves that itself; passing licenseKey as an
|
|
269
|
+
// option — the documented way — failed. opts.licenseKey is already resolved by the caller.
|
|
270
|
+
//
|
|
271
|
+
// ephemeralProfile: false — the probe reads GPU/display off about:blank and needs no profile,
|
|
272
|
+
// so it skips the create+delete a persistent launch would otherwise pay on every resolution.
|
|
273
|
+
const host = await measureHost((o) => launch({
|
|
274
|
+
...o,
|
|
275
|
+
licenseKey: opts.licenseKey,
|
|
276
|
+
licenseApiBase: opts.apiBase,
|
|
277
|
+
ephemeralProfile: false,
|
|
278
|
+
}), exe, Number(String(RELEASE.version).split(".")[0]));
|
|
224
279
|
// BACKWARDS COMPATIBILITY. The free 149 engine has no persona-profile patch, and Chromium
|
|
225
280
|
// discards unknown switches silently — so sending it a profile would leave the user with NO
|
|
226
281
|
// persona while believing they had one. Fall back to the seed path that engine does support,
|
|
@@ -249,8 +304,93 @@ async function applyAutoProfile(fingerprint, exe, opts) {
|
|
|
249
304
|
"profile fields apply only partially. Drop `fingerprint` for the coherent path.\n");
|
|
250
305
|
}
|
|
251
306
|
}
|
|
252
|
-
/**
|
|
307
|
+
/**
|
|
308
|
+
* Delete a throwaway profile directory once its context closes.
|
|
309
|
+
*
|
|
310
|
+
* THE RETRY IS NOT DEFENSIVE PADDING — a single attempt measurably does not work. On Windows the
|
|
311
|
+
* browser still holds handles under the profile directory for a short window after `close()`
|
|
312
|
+
* resolves, so the first removal throws EBUSY/EPERM. Measured on the first build of this change
|
|
313
|
+
* (Python port): the directory survived a close plus a 1.5s wait and leaked silently.
|
|
314
|
+
*
|
|
315
|
+
* Two triggers, because neither alone is enough: `close` covers an orderly shutdown, and the
|
|
316
|
+
* process-exit hook covers a script that throws or is interrupted with the browser still open.
|
|
317
|
+
* Both funnel through one idempotent remove.
|
|
318
|
+
*/
|
|
319
|
+
function installEphemeralProfileCleanup(context, userDataDir) {
|
|
320
|
+
let done = false;
|
|
321
|
+
const remove = async () => {
|
|
322
|
+
if (done)
|
|
323
|
+
return;
|
|
324
|
+
for (let attempt = 0; attempt < 6; attempt++) {
|
|
325
|
+
try {
|
|
326
|
+
rmSync(userDataDir, { recursive: true, force: true });
|
|
327
|
+
done = true;
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
await new Promise((r) => setTimeout(r, 250 * (attempt + 1))); // 0.25→1.5s, ~5s total
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
context.on("close", () => { void remove(); });
|
|
336
|
+
// Synchronous: an exit handler cannot await, and an unresolved promise at exit removes nothing.
|
|
337
|
+
process.once("exit", () => {
|
|
338
|
+
if (done)
|
|
339
|
+
return;
|
|
340
|
+
try {
|
|
341
|
+
rmSync(userDataDir, { recursive: true, force: true });
|
|
342
|
+
}
|
|
343
|
+
catch { /* temp sweeper gets it */ }
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Make a persistent BrowserContext satisfy code written against launch()'s Browser.
|
|
348
|
+
*
|
|
349
|
+
* `newContext()` returns THE PERSISTENT CONTEXT ITSELF rather than a fresh incognito one. That is
|
|
350
|
+
* deliberate: a real incognito context would silently leave the profile behind — taking the
|
|
351
|
+
* Widevine CDM and the component-updated state with it — handing back exactly the browser this
|
|
352
|
+
* change exists to stop producing. Two calls returning the same context is a visible, documented
|
|
353
|
+
* compromise; quietly returning a profile-less browser is not.
|
|
354
|
+
*/
|
|
355
|
+
function asBrowserLike(context) {
|
|
356
|
+
const c = context;
|
|
357
|
+
if (c.newContext === undefined)
|
|
358
|
+
c.newContext = async () => context;
|
|
359
|
+
if (c.contexts === undefined)
|
|
360
|
+
c.contexts = () => [context];
|
|
361
|
+
return context;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Launch Clearcote and return a Playwright browser handle backed by a REAL Chrome profile.
|
|
365
|
+
*
|
|
366
|
+
* PROFILE-BACKED BY DEFAULT (changed in 0.23.0). This used to be `chromium.launch()` — incognito,
|
|
367
|
+
* no profile directory. Incognito cannot load a component-updated CDM, so
|
|
368
|
+
* `requestMediaKeySystemAccess('com.widevine.alpha')` rejected and the EME surface was a
|
|
369
|
+
* no-Widevine tell on a build branded Google Chrome (measured against the live audit on 150-r10).
|
|
370
|
+
* It now launches a persistent context on a throwaway directory, so `widevine: true` works here.
|
|
371
|
+
*
|
|
372
|
+
* The directory is deleted when the context closes AND on process exit, so nothing is left behind
|
|
373
|
+
* and no state survives to the next launch — the incognito-like isolation callers relied on is
|
|
374
|
+
* preserved. Pass `userDataDir` to keep a profile, or `ephemeralProfile: false` to opt back out.
|
|
375
|
+
*/
|
|
253
376
|
export async function launch(options = {}) {
|
|
377
|
+
// ephemeralProfile: false restores the pre-0.23 incognito launch. Kept because the persistent
|
|
378
|
+
// path costs a directory create+delete per launch, which a caller spawning hundreds of
|
|
379
|
+
// short-lived browsers may reasonably not want to pay for a CDM they never touch.
|
|
380
|
+
const { ephemeralProfile, userDataDir, ...restOpts } = options;
|
|
381
|
+
if (userDataDir !== undefined) {
|
|
382
|
+
return asBrowserLike(await launchPersistentContext(userDataDir, restOpts));
|
|
383
|
+
}
|
|
384
|
+
if (ephemeralProfile !== false) {
|
|
385
|
+
const dir = mkdtempSync(join(tmpdir(), "clearcote-run-"));
|
|
386
|
+
const context = await launchPersistentContext(dir, restOpts);
|
|
387
|
+
installEphemeralProfileCleanup(context, dir);
|
|
388
|
+
return asBrowserLike(context);
|
|
389
|
+
}
|
|
390
|
+
return launchIncognito(restOpts);
|
|
391
|
+
}
|
|
392
|
+
/** The pre-0.23 incognito launch, reached via `ephemeralProfile: false`. */
|
|
393
|
+
async function launchIncognito(options = {}) {
|
|
254
394
|
// profile="auto" is NOT a saved option-set — it resolves a real captured fingerprint later,
|
|
255
395
|
// once the executable (and therefore the engine's Chromium major) is known.
|
|
256
396
|
const isAutoProfile = options.profile === "auto";
|
|
@@ -299,6 +439,13 @@ export async function launch(options = {}) {
|
|
|
299
439
|
// On Linux, point FONTCONFIG_FILE at the bundled metric-compatible clones (Segoe UI, Arial, …).
|
|
300
440
|
const launchEnv = fontLaunchEnv(exe, pwOptions.env);
|
|
301
441
|
const runtimeEnv = lease ? withRunToken(lease.token, launchEnv) : launchEnv;
|
|
442
|
+
const engineArgs = assembleArgs(fingerprintArgs(fingerprint), agentArgs(agent), extensionArgs(extensions), proxyArgs, disablePrivacySandbox, fingerprint.webrtcIp, args ?? [], proxyOpt);
|
|
443
|
+
// Headless: screen.* has to be handled alongside the viewport or the window reports a geometry no
|
|
444
|
+
// real browser can (see ./geometry.ts). Probe a copy — viewport/screen are context options, which
|
|
445
|
+
// chromium.launch() does not take — and carry the result to newPage/newContext.
|
|
446
|
+
const geom = headed
|
|
447
|
+
? null
|
|
448
|
+
: applyHeadlessGeometry({ ...pwOptions }, fingerprint.fingerprint, engineArgs);
|
|
302
449
|
const browser = await winAvRetry((exePath) => chromium.launch({
|
|
303
450
|
// Drop Playwright's default --enable-automation so the engine's AutomationControlled feature
|
|
304
451
|
// stays off (it flips webdriver-adjacent tells). Caller can override via ignoreDefaultArgs.
|
|
@@ -306,13 +453,15 @@ export async function launch(options = {}) {
|
|
|
306
453
|
...pwOptions,
|
|
307
454
|
executablePath: exePath,
|
|
308
455
|
...(runtimeEnv ? { env: runtimeEnv } : {}),
|
|
309
|
-
args:
|
|
456
|
+
args: engineArgs,
|
|
310
457
|
}), exe);
|
|
311
458
|
// Release the concurrency slot when the browser closes.
|
|
312
459
|
if (lease)
|
|
313
460
|
browser.on("disconnected", () => { void lease.stop(); });
|
|
314
461
|
if (headed)
|
|
315
462
|
installHeadedViewport(browser); // launch() takes no viewport option -> wrap newPage/newContext
|
|
463
|
+
else if (geom)
|
|
464
|
+
installHeadlessGeometry(browser, geom, engineArgs);
|
|
316
465
|
installHumanize(browser, { humanize, showCursor, seed: fingerprint.fingerprint }); // seed => stable motor persona
|
|
317
466
|
return browser;
|
|
318
467
|
}
|
|
@@ -372,15 +521,23 @@ export async function launchPersistentContext(userDataDir, options = {}) {
|
|
|
372
521
|
});
|
|
373
522
|
const ctxEnv = fontLaunchEnv(exe, opts.env);
|
|
374
523
|
const runtimeEnv = lease ? withRunToken(lease.token, ctxEnv) : ctxEnv;
|
|
524
|
+
const engineArgs = assembleArgs(fingerprintArgs(fingerprint), agentArgs(agent), extensionArgs(extensions), proxyArgs, disablePrivacySandbox, fingerprint.webrtcIp, userArgs, proxyOpt);
|
|
525
|
+
// headless: the persona owns screen when it is running, so only the window needs fitting; with no
|
|
526
|
+
// persona the SDK overrides screen itself (see ./geometry.ts). Headed already set viewport: null.
|
|
527
|
+
const geom = opts.headless === false
|
|
528
|
+
? null
|
|
529
|
+
: applyHeadlessGeometry(opts, fingerprint.fingerprint, engineArgs);
|
|
375
530
|
const context = await winAvRetry((exePath) => chromium.launchPersistentContext(userDataDir, {
|
|
376
531
|
...opts,
|
|
377
532
|
ignoreDefaultArgs, // keep AutomationControlled off (+ component updater on when widevine)
|
|
378
533
|
executablePath: exePath,
|
|
379
534
|
...(runtimeEnv ? { env: runtimeEnv } : {}),
|
|
380
|
-
args:
|
|
535
|
+
args: engineArgs,
|
|
381
536
|
}), exe);
|
|
382
537
|
if (lease)
|
|
383
538
|
context.on("close", () => { void lease.stop(); });
|
|
539
|
+
if (geom)
|
|
540
|
+
await installWindowFixup(context, engineArgs, geom.mode === "persona");
|
|
384
541
|
installHumanizeOnContext(context, { humanize, showCursor, seed: fingerprint.fingerprint }); // seed => stable motor persona
|
|
385
542
|
return context;
|
|
386
543
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,wCAAwC;AACxC,oFAAoF;AACpF,0CAA0C;AAC1C,iEAAiE;AACjE,EAAE;AACF,4FAA4F;AAC5F,gGAAgG;AAChG,gGAAgG;AAChG,sBAAsB;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,SAAS,EAAwB,MAAM,eAAe,CAAC;AACrI,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAA2B,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAwB,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAqB,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAgC,sBAAsB,EAAE,wBAAwB,EAAwD,MAAM,kBAAkB,CAAC;AACrL,OAAO,EAAE,WAAW,EAAqE,MAAM,oBAAoB,CAAC;AAEpH,OAAO,EACkD,gBAAgB,GAExE,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAA0C,MAAM,cAAc,CAAC;AAIrH,OAAO,EAAE,eAAe,EAA2B,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAuB,MAAM,cAAc,CAAC;AACpG,kFAAkF;AAClF,OAAO,EACL,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,GAE7F,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EAAE,mBAAmB,EAAE,qBAAqB,GAC5D,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,GAExE,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EACjF,wBAAwB,EAAE,iBAAiB,GAE5C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,mBAAmB,GAKpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAsB,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,cAAc,CAAC;AA2DtB,iGAAiG;AACjG,KAAK,UAAU,UAAU,CAAC,EAAsB,EAAE,KAAc;IAC9D,MAAM,GAAG,GAAe,MAAM,UAAU,CAAC,KAA8E,CAAC,CAAC;IACzH,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI;QAAE,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpE,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,IAAI,IAAI;QAAE,EAAE,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IAC5F,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI;QAAE,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpE,2FAA2F;IAC3F,iEAAiE;IACjE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI;QAAE,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,eAAe,EAAE,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,aAAa,OAAO,CAAC,OAAO,sEAAsE,OAAO,CAAC,QAAQ,MAAM;YACtH,2EAA2E;YAC3E,8DAA8D,GAAG,GAAG,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkI,EAAE;IAEpI,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC,cAAc,CAAC;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACzE,IAAI,OAAO,EAAE,CAAC;QACZ,2FAA2F;QAC3F,oFAAoF;QACpF,OAAO,aAAa,CAAC,OAAO,EAAE;YAC5B,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU;YACnC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;YAC7C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,6FAA6F;AAC7F,SAAS,WAAW,CAClB,UAA8B,EAC9B,cAAkC;IAElC,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED;;;qBAGqB;AACrB,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAgG,EAAE;IAElG,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAC/D,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;;6CAG6C;AAC7C,SAAS,qBAAqB,CAAC,OAAgB;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,OAAgC,CAAC,OAAO,GAAG,CAAC,IAA6B,EAAE,EAAE,EAAE,CAC9E,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,OAAmC,CAAC,UAAU,GAAG,CAAC,IAA6B,EAAE,EAAE,EAAE,CACpF,cAAc,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;qGAEqG;AACrG,SAAS,YAAY,CACnB,MAAgB,EAChB,MAAgB,EAChB,OAAiB,EACjB,SAAmB,EACnB,qBAA0C,EAC1C,QAAiB,EACjB,QAAkB,EAClB,YAAsB;IAEtB,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,IAAI,qBAAqB,KAAK,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/D,OAAO,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAI,QAAqC,EAAE,GAAW;IACpF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACrC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,uFAAuF;IACvF,gBAAgB,EAAE,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACnF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,gBAAgB,CAAC,MAAM,GAAG,MAAM;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAAE,OAAO;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;gBAAE,SAAS;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM;oBAAE,SAAS,CAAE,+BAA+B;gBACpF,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,4EAA4E;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,gBAAgB,CAC7B,WAA+B,EAC/B,GAAW,EACX,IAAiB;IAEjB,IAAI,WAAW,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO;IACzD,8FAA8F;IAC9F,8FAA8F;IAC9F,cAAc;IACd,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAkB,CAI9B,EACF,GAAG,EACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;IAEF,0FAA0F;IAC1F,4FAA4F;IAC5F,6FAA6F;IAC7F,6DAA6D;IAC7D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC1C,yFAAyF;YACzF,uDAAuD;YACvD,WAAW,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC,IAAI,CAAC,aAAa,sCAAsC;gBACtF,aAAa,wBAAwB,sCAAsC;gBAC3E,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,WAAW,CAAC,kBAAkB,GAAG,OAAO,CAAC;IACzC,6FAA6F;IAC7F,4FAA4F;IAC5F,2FAA2F;IAC3F,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0FAA0F;YACxF,mFAAmF;YACnF,kFAAkF,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAyB,EAAE;IACtD,4FAA4F;IAC5F,4EAA4E;IAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;IACjD,iFAAiF;IACjF,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,IAAI,CAAC,aAAa;QAC/B,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAA2B,CAAC,EAAE,GAAG,OAAO,EAAE;QAC/E,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChP,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAI,SAAqC,CAAC,KAAK,CAAC,CAAE,wCAAwC;IACxG,IAAI,KAAK;QAAE,MAAM,UAAU,CAAC,WAAW,EAAG,SAAqC,CAAC,KAAK,CAAC,CAAC;IACvF,mGAAmG;IACnG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAE,SAAqC,CAAC,KAA4B,CAAC,CAAC;IACrH,kGAAkG;IAClG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAQ,SAAqC,CAAC,KAAK,CAAC;IAC7E,qBAAqB,CACnB,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAG,SAAqC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAC5H,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,4FAA4F;IAC5F,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACpJ,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,sFAAsF;IACtF,2FAA2F;IAC3F,oFAAoF;IACpF,6FAA6F;IAC7F,+DAA+D;IAC/D,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE;YACvC,KAAK;YACL,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC;YACzC,uFAAuF;YACvF,uFAAuF;YACvF,OAAO,EAAE,cAAc;YACvB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAI,SAAqC,CAAC,QAAQ,KAAK,KAAK,CAAC;IACzE,2FAA2F;IAC3F,uFAAuF;IACvF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW;QAC1D,6FAA6F;QAC7F,aAAa,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACrF,CAAC,CAAC;IACH,gGAAgG;IAChG,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,EAAG,SAAqC,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5D,6FAA6F;QAC7F,4FAA4F;QAC5F,iBAAiB,EAAE,CAAC,qBAAqB,CAAC;QAC1C,GAAI,SAAqC;QACzC,cAAc,EAAE,OAAO;QACvB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,QAA+B,CAAC;KACnM,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,wDAAwD;IACxD,IAAI,KAAK;QAAE,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,MAAM;QAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,+DAA+D;IAC3G,eAAe,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAClH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,UAAoC,EAAE;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACrG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC3N,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAI,SAAqC,CAAC,KAAK,CAAC,CAAE,wCAAwC;IACxG,IAAI,KAAK;QAAE,MAAM,UAAU,CAAC,WAAW,EAAG,SAAqC,CAAC,KAAK,CAAC,CAAC;IACvF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAE,SAAqC,CAAC,KAA4B,CAAC,CAAC;IACrH,IAAI,KAAK,KAAK,SAAS;QAAE,OAAQ,SAAqC,CAAC,KAAK,CAAC;IAC7E,qBAAqB,CACnB,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAG,SAAqC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAC5H,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,SAA4D,CAAC;IAC1E,0FAA0F;IAC1F,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACjF,+FAA+F;IAC/F,sGAAsG;IACtG,mGAAmG;IACnG,8FAA8F;IAC9F,IAAI,iBAAiB,GAClB,IAAI,CAAC,iBAAoD,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxF,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,6FAA6F;YAC7F,4FAA4F;YAC5F,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACnE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sKAAsK,CAAC,CAAC;YAC/L,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACxD,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAC5C,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IACD,OAAQ,IAAgC,CAAC,iBAAiB,CAAC,CAAE,0BAA0B;IACvF,4FAA4F;IAC5F,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACpJ,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,mGAAmG;IACnG,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW;QAC1D,6FAA6F;QAC7F,aAAa,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACrF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAG,IAAgC,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,EAAE;QAC1F,GAAG,IAAI;QACP,iBAAiB,EAAG,uEAAuE;QAC3F,cAAc,EAAE,OAAO;QACvB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAA+B,CAAC;KACjM,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,IAAI,KAAK;QAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,wBAAwB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAC3H,OAAO,OAAO,CAAC;AACjB,CAAC;AAQD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,GAAG,GAAG,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC3E,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6CAA6C;AAC7C,SAAS,QAAQ;IACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAiBD,uFAAuF;AACvF,MAAM,OAAO,MAAM;IAEE;IACR;IACA;IACQ;IACA;IACA;IANnB,YACmB,IAAkB,EAC1B,IAAY,EACZ,IAAY,EACJ,WAAmB,EACnB,MAAe,EACf,KAA2B;QAL3B,SAAI,GAAJ,IAAI,CAAc;QAC1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACJ,gBAAW,GAAX,WAAW,CAAQ;QACnB,WAAM,GAAN,MAAM,CAAS;QACf,UAAK,GAAL,KAAK,CAAsB;IAC3C,CAAC;IACJ,sFAAsF;IACtF,IAAI,MAAM;QACR,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,gGAAgG;IAChG,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;YACrD,OAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAuC,CAAC,oBAAoB,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,8CAA8C;QAC9C,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAwB,EAAE;IACpD,MAAM,EACJ,IAAI,EACJ,IAAI,GAAG,WAAW,EAClB,YAAY,EACZ,WAAW,EAAE,SAAS,EACtB,QAAQ,GAAG,IAAI,EACf,cAAc,GAAG,KAAK,EACtB,QAAQ,EAAE,SAAS,EAAE,qDAAqD;IAC1E,UAAU,EAAE,WAAW,EACvB,GAAG,UAAU,EACd,GAAG,OAAO,CAAC;IAEZ,gFAAgF;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO;QAC/B,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE;QACjE,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,EACJ,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,SAAS,EAC/E,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,EACjG,GAAG,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAI,SAAqC,CAAC,KAA4B,CAAC;IACrF,IAAI,KAAK;QAAE,MAAM,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnD,qBAAqB,CACnB,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE,EAC/E,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,4FAA4F;IAC5F,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACpJ,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,YAAY,CAC7B,eAAe,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,EACzE,SAAS,EAAE,qBAAqB,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEpF,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC;IAC1B,MAAM,WAAW,GAAG,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,YAAY,IAAI,UAAU,IAAI,IAAI,YAAY,qBAAqB,YAAY,EAAE,CAAC;IAClG,MAAM,OAAO,GAAG;QACd,2BAA2B,YAAY,EAAE;QACzC,8BAA8B,IAAI,EAAE;QACpC,0BAA0B,OAAO,EAAE;QACnC,mBAAmB,WAAW,EAAE;KACjC,CAAC;IACF,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAExE,mGAAmG;IACnG,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW;QAC1D,6FAA6F;QAC7F,aAAa,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACrF,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACjI,kGAAkG;IAClG,8FAA8F;IAC9F,gGAAgG;IAChG,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,EACF,GAAG,CACJ,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;IAC7C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,MAAM;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,IAAI,IAAI,YAAY,eAAe,CAAC,CAAC;YAC3D,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;QACR,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CAAC;YAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC;YAAC,MAAM,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAAC,CAAC;QACrG,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,IAAI,YAAY,2BAA2B,cAAc,IAAI,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,GAAG,CAAC,MAAM,IAAI;YACjD,iDAAiD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,iGAAiG;AACjG,mGAAmG;AACnG,gGAAgG;AAChG,MAAM,WAAW,GAAW,CAAC,GAAG,EAAE;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAC;IACzG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AACL,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzD,eAAe;IACb,MAAM;IACN,uBAAuB;IACvB,WAAW;IACX,KAAK;IACL,MAAM;IACN,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,YAAY;IACZ,WAAW;IACX,aAAa;IACb,YAAY;IACZ,OAAO;CACR,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clearcote",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Playwright drop-in for the Clearcote anti-fingerprint Chromium build. launch() returns a standard Playwright Browser backed by the verified Clearcote binary, which is auto-downloaded and SHA-256 checked.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|