clearcote 0.10.1 → 0.10.2

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 CHANGED
@@ -81,6 +81,37 @@ const context = await launchPersistentContext("./profile-7423", {
81
81
  });
82
82
  ```
83
83
 
84
+ ### Widevine / DRM (`widevine: true`)
85
+
86
+ clearcote ships the **EME/Widevine plumbing** compiled in, but — being 100% open source — it does
87
+ **not** bundle Google's proprietary CDM. Pass `widevine: true` on a **persistent** context and the SDK
88
+ fetches that CDM once from Google's own component server (same as a real Chrome receives it), seeds it
89
+ into the profile, and enables it — so `navigator.requestMediaKeySystemAccess('com.widevine.alpha')`
90
+ resolves and DRM streams play, instead of EME being a "no-Widevine" tell.
91
+
92
+ ```ts
93
+ import { launchPersistentContext } from "clearcote";
94
+
95
+ const ctx = await launchPersistentContext("./profile-drm", { widevine: true }); // fetch + seed + enable
96
+ const page = ctx.pages()[0] ?? (await ctx.newPage());
97
+ await page.goto("https://example.com");
98
+ const ok = await page.evaluate(async () => {
99
+ const a = await navigator.requestMediaKeySystemAccess("com.widevine.alpha", [
100
+ { initDataTypes: ["cenc"], videoCapabilities: [
101
+ { contentType: 'video/mp4;codecs="avc1.42E01E"', robustness: "SW_SECURE_DECODE" }] },
102
+ ]);
103
+ await a.createMediaKeys();
104
+ return true;
105
+ });
106
+ console.log("Widevine:", ok); // true
107
+ await ctx.close();
108
+ ```
109
+
110
+ - Requires a **persistent** context (the CDM lives in `userDataDir`) — not the incognito `launch()`.
111
+ - The CDM is cached under `~/.clearcote/WidevineCdm`; fetch it ahead of time with `fetchWidevine()`.
112
+ - It's **opt-in**: the clearcote package never distributes Google's CDM — *you* trigger the download.
113
+ - Software-secure (L3) playback. Hardware-secure (L1) paths are out of scope.
114
+
84
115
  ### AI agent (OpenRouter)
85
116
 
86
117
  Drive a page with an **in-browser AI agent** — it perceives the live page, asks an LLM what to do,
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ import { type FingerprintOptions } from "./fingerprint.js";
4
4
  import { type HumanizeOptions } from "./humanize.js";
5
5
  import { type AgentOptions } from "./agent.js";
6
6
  import { Profile } from "./profile.js";
7
+ import { fetchWidevine, seedWidevine } from "./widevine.js";
7
8
  export type { FingerprintOptions } from "./fingerprint.js";
8
9
  export type { DownloadOptions } from "./download.js";
9
10
  export { resolveGeo, type Geo } from "./geoip.js";
@@ -11,6 +12,7 @@ export type { HumanizeOptions } from "./humanize.js";
11
12
  export { Profile, listProfiles, loadProfile, PROFILE_DIR, type ProfileOptions } from "./profile.js";
12
13
  export { runAgentTask, agentArgs, OPENROUTER_BASE_URL, type AgentOptions, type AgentTaskOptions, type AgentTaskResult, type AgentStep, } from "./agent.js";
13
14
  export { RELEASE } from "./release.js";
15
+ export { fetchWidevine, seedWidevine } from "./widevine.js";
14
16
  /** When true (and a proxy is set), resolve the proxy's exit-IP geo and auto-fill any unset
15
17
  * `timezone` + `acceptLanguage` (+ `location`) so they match the proxy region. */
16
18
  interface GeoipOption {
@@ -35,6 +37,13 @@ export interface LaunchOptions extends PlaywrightLaunchOptions, FingerprintOptio
35
37
  }
36
38
  /** Options for {@link launchPersistentContext}. */
37
39
  export interface PersistentContextOptions extends PlaywrightLaunchOptions, BrowserContextOptions, FingerprintOptions, AgentOptions, GeoipOption, ProfileOption, ExtensionsOption, HumanizeOptions, DownloadOptions {
40
+ /**
41
+ * Seed + enable the opt-in Widevine CDM in this profile so DRM/EME works
42
+ * (`requestMediaKeySystemAccess('com.widevine.alpha')` resolves) and the EME surface matches a
43
+ * real Chrome instead of being a no-Widevine tell. The CDM is fetched once from Google's
44
+ * component server (see {@link fetchWidevine}); clearcote never bundles Google's blob.
45
+ */
46
+ widevine?: boolean;
38
47
  }
39
48
  /**
40
49
  * Resolve the Clearcote chrome.exe path, downloading + verifying it if needed.
@@ -87,6 +96,8 @@ declare const _default: {
87
96
  Profile: typeof Profile;
88
97
  listProfiles: typeof listProfiles;
89
98
  loadProfile: typeof loadProfile;
99
+ fetchWidevine: typeof fetchWidevine;
100
+ seedWidevine: typeof seedWidevine;
90
101
  RELEASE: import("./release.js").ReleaseInfo;
91
102
  };
92
103
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -21,10 +21,12 @@ import { agentArgs, splitAgentOptions } from "./agent.js";
21
21
  import { resolveProfileOptions, Profile } from "./profile.js";
22
22
  import { extensionArgs, resolveProxy, mergeFeatureFlags, privacySandboxArgs, webrtcDefaultDenyArgs, } from "./launchopts.js";
23
23
  import { RELEASE } from "./release.js";
24
+ import { fetchWidevine, seedWidevine, widevineArgs } from "./widevine.js";
24
25
  export { resolveGeo } from "./geoip.js";
25
26
  export { Profile, listProfiles, loadProfile, PROFILE_DIR } from "./profile.js";
26
27
  export { runAgentTask, agentArgs, OPENROUTER_BASE_URL, } from "./agent.js";
27
28
  export { RELEASE } from "./release.js";
29
+ export { fetchWidevine, seedWidevine } from "./widevine.js";
28
30
  /** Fill unset timezone/acceptLanguage/location/webrtcIp on `fp` from the proxy's exit-IP geo. */
29
31
  async function applyGeoip(fp, proxy) {
30
32
  const geo = await resolveGeo(proxy);
@@ -116,7 +118,7 @@ export async function launch(options = {}) {
116
118
  */
117
119
  export async function launchPersistentContext(userDataDir, options = {}) {
118
120
  const merged = options.profile ? { ...resolveProfileOptions(options.profile), ...options } : options;
119
- const { profile: _profile, extensions, disablePrivacySandbox, executablePath: exeOption, args, geoip, humanize, showCursor, autoUpdate, cacheDir, quiet, ...rest } = merged;
121
+ const { profile: _profile, extensions, disablePrivacySandbox, executablePath: exeOption, args, geoip, humanize, showCursor, autoUpdate, cacheDir, quiet, widevine, ...rest } = merged;
120
122
  const { fingerprint, rest: afterFp } = splitFingerprintOptions(rest);
121
123
  const { agent, rest: pwOptions } = splitAgentOptions(afterFp);
122
124
  if (geoip)
@@ -128,12 +130,32 @@ export async function launchPersistentContext(userDataDir, options = {}) {
128
130
  // headed + no explicit viewport -> disable the emulated viewport (impossible-window tell)
129
131
  if (opts.headless === false && opts.viewport === undefined)
130
132
  opts.viewport = null;
133
+ // widevine=true: seed the CDM into the profile + un-suppress the component updater (Playwright
134
+ // disables it by default) so the engine registers it. Failure -> DRM gracefully off, launch proceeds.
135
+ let userArgs = args ?? [];
136
+ if (widevine) {
137
+ try {
138
+ await seedWidevine(userDataDir, { quiet });
139
+ // a user-supplied non-fast-update --component-updater mode wins but may not register the CDM
140
+ const cu = userArgs.filter((a) => a.includes("component-updater"));
141
+ if (cu.length && !cu.some((a) => a.includes("fast-update")) && !quiet) {
142
+ process.stderr.write("[clearcote] [widevine] note: your --component-updater mode may not register the CDM; --component-updater=fast-update is needed to scan the pre-installed component\n");
143
+ }
144
+ const tweak = widevineArgs(opts.ignoreDefaultArgs, userArgs);
145
+ opts.ignoreDefaultArgs = tweak.ignoreDefaultArgs;
146
+ userArgs = tweak.args;
147
+ }
148
+ catch (e) {
149
+ if (!quiet)
150
+ process.stderr.write(`[clearcote] [widevine] setup failed (continuing without DRM): ${String(e)}\n`);
151
+ }
152
+ }
131
153
  const exe = await executablePath({ executablePath: exeOption, autoUpdate, cacheDir, quiet });
132
154
  ensureRunnableHere(exe);
133
155
  const context = await chromium.launchPersistentContext(userDataDir, {
134
156
  ...opts,
135
157
  executablePath: exe,
136
- args: assembleArgs(fingerprintArgs(fingerprint), agentArgs(agent), extensionArgs(extensions), proxyArgs, disablePrivacySandbox, fingerprint.webrtcIp, args ?? []),
158
+ args: assembleArgs(fingerprintArgs(fingerprint), agentArgs(agent), extensionArgs(extensions), proxyArgs, disablePrivacySandbox, fingerprint.webrtcIp, userArgs),
137
159
  });
138
160
  installHumanizeOnContext(context, { humanize, showCursor });
139
161
  return context;
@@ -172,6 +194,8 @@ export default {
172
194
  Profile,
173
195
  listProfiles,
174
196
  loadProfile,
197
+ fetchWidevine,
198
+ seedWidevine,
175
199
  RELEASE,
176
200
  };
177
201
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/release.js CHANGED
@@ -4,13 +4,13 @@
4
4
  // this package, the hash check guarantees you run exactly the published, signed binary.
5
5
  // Published checksums + GPG signatures live on the release page.
6
6
  export const RELEASE = {
7
- tag: "v0.1.0-pre.12",
7
+ tag: "v0.1.0-pre.15",
8
8
  version: "149.0.7827.114",
9
9
  asset: "clearcote-149.0.7827.114-windows-x64.zip",
10
- url: "https://github.com/clearcotelabs/clearcote-browser/releases/download/v0.1.0-pre.12/clearcote-149.0.7827.114-windows-x64.zip",
11
- sha256: "1c1d7e58f50463c09b3c1ad96ec79cc7777ef6482f00e2f3bc8dc6d03df47ced",
10
+ url: "https://github.com/clearcotelabs/clearcote-browser/releases/download/v0.1.0-pre.15/clearcote-149.0.7827.114-windows-x64.zip",
11
+ sha256: "8fc279533a928c8c8614788000afa7ef95895859df9ea5438dee5a32a1a6e58a",
12
12
  exeSha256: "5743595256c89c6874804bf3315acce592fc7f1883760c8d380c010151a73b23",
13
- size: 242636042,
13
+ size: 242646871,
14
14
  os: "win32",
15
15
  };
16
16
  /** GitHub repo (owner/name) the releases come from — used by the opt-in auto-update resolver. */
@@ -0,0 +1,40 @@
1
+ /** Chrome's component-updater app id for the Widevine CDM + Google's Omaha JSON endpoint. */
2
+ export declare const WIDEVINE_APP_ID = "oimompecagnajdejgnnjijobebaeigek";
3
+ export declare const OMAHA_URL = "https://update.googleapis.com/service/update2/json";
4
+ export declare const HINT_FILE = "latest-component-updated-widevine-cdm";
5
+ export interface WidevineOptions {
6
+ /** Destination root (default ~/.clearcote/WidevineCdm). */
7
+ dest?: string;
8
+ /** Suppress progress logging. */
9
+ quiet?: boolean;
10
+ }
11
+ /** Minimal Omaha v3.1 update check for the Windows x64 Widevine CDM (version 0.0.0.0 -> latest). */
12
+ export declare function omahaRequestBody(): unknown;
13
+ /** Pull [downloadUrl, sha256, version] from an Omaha JSON response (pipelines or classic shape). */
14
+ export declare function parseUpdate(resp: any): [string, string, string];
15
+ /** A CRX3 file is 'Cr24' + u32 version + u32 headerLen + header + zip. Return the zip bytes. */
16
+ export declare function crx3ToZip(buf: Buffer): Buffer;
17
+ /**
18
+ * Download + verify the Windows x64 Widevine CDM into `dest` (default ~/.clearcote/WidevineCdm/
19
+ * <version>). Returns the versioned CDM directory (manifest.json + _platform_specific/win_x64/
20
+ * widevinecdm.dll). Re-fetch is skipped if already present.
21
+ */
22
+ export declare function fetchWidevine(opts?: WidevineOptions): Promise<string>;
23
+ /**
24
+ * Make a persistent profile load the fetched CDM: copy it under <userDataDir>/WidevineCdm/<version>/
25
+ * and write the component hint file the engine reads. Fetches the CDM first if needed.
26
+ */
27
+ export declare function seedWidevine(userDataDir: string, opts?: WidevineOptions): Promise<string>;
28
+ /**
29
+ * Adjust launch args so the engine actually registers the seeded CDM: un-suppress the component
30
+ * updater (Playwright disables it by default) and force the startup scan. Pure — returns the new
31
+ * values. `ignoreDefaultArgs` may be a list, `undefined`, or the boolean form Playwright accepts
32
+ * (`true` = ignore ALL defaults, so the updater is already un-suppressed); only the list/undefined
33
+ * forms need `--disable-component-update` added. Verified: with these, requestMediaKeySystemAccess
34
+ * + createMediaKeys succeed.
35
+ */
36
+ export declare function widevineArgs(ignoreDefaultArgs: string[] | boolean | undefined, userArgs: string[]): {
37
+ ignoreDefaultArgs: string[] | boolean | undefined;
38
+ args: string[];
39
+ };
40
+ //# sourceMappingURL=widevine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widevine.d.ts","sourceRoot":"","sources":["../src/widevine.ts"],"names":[],"mappings":"AAmBA,6FAA6F;AAC7F,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAClE,eAAO,MAAM,SAAS,uDAAuD,CAAC;AAC9E,eAAO,MAAM,SAAS,0CAA0C,CAAC;AAKjE,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAUD,oGAAoG;AACpG,wBAAgB,gBAAgB,IAAI,OAAO,CAgB1C;AAgBD,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAe/D;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B/E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnG;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,EACjD,QAAQ,EAAE,MAAM,EAAE,GACjB;IAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAavE"}
@@ -0,0 +1,181 @@
1
+ // Opt-in Widevine CDM fetch + persistent-profile seeding (Windows).
2
+ //
3
+ // clearcote is a 100%-open-source build: it ships the EME/Widevine *plumbing* (enable_widevine=true)
4
+ // but NOT Google's proprietary CDM binary (that blob can't live in a FOSS package). This module lets
5
+ // a user *opt in* to fetching the CDM from Google's component server at runtime — exactly how a real
6
+ // Chrome receives it via the component updater — so requestMediaKeySystemAccess('com.widevine.alpha')
7
+ // resolves (DRM plays, and the EME surface matches a real Chrome instead of a no-Widevine tell).
8
+ //
9
+ // import { fetchWidevine, launchPersistentContext } from "clearcote";
10
+ // await fetchWidevine(); // download + verify into ~/.clearcote
11
+ // const ctx = await launchPersistentContext("profile", { widevine: true }); // seeds + enables it
12
+ import { createHash } from "node:crypto";
13
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
14
+ import { rm } from "node:fs/promises";
15
+ import os from "node:os";
16
+ import path from "node:path";
17
+ import extract from "extract-zip";
18
+ /** Chrome's component-updater app id for the Widevine CDM + Google's Omaha JSON endpoint. */
19
+ export const WIDEVINE_APP_ID = "oimompecagnajdejgnnjijobebaeigek";
20
+ export const OMAHA_URL = "https://update.googleapis.com/service/update2/json";
21
+ export const HINT_FILE = "latest-component-updated-widevine-cdm";
22
+ // update.googleapis.com sits behind Google's edge; a bare fetch UA can 403 — send a browser-ish one.
23
+ const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36";
24
+ function log(quiet, msg) {
25
+ if (!quiet)
26
+ process.stderr.write(`[clearcote] [widevine] ${msg}\n`);
27
+ }
28
+ function cacheRoot() {
29
+ return process.env.CLEARCOTE_WIDEVINE_DIR || path.join(os.homedir(), ".clearcote", "WidevineCdm");
30
+ }
31
+ /** Minimal Omaha v3.1 update check for the Windows x64 Widevine CDM (version 0.0.0.0 -> latest). */
32
+ export function omahaRequestBody() {
33
+ return {
34
+ request: {
35
+ "@os": "win",
36
+ "@updater": "clearcote",
37
+ acceptformat: "crx3",
38
+ protocol: "3.1",
39
+ arch: "x64",
40
+ nacl_arch: "x86-64",
41
+ prodversion: "149.0.0.0",
42
+ updaterversion: "149.0.0.0",
43
+ dedup: "cr",
44
+ os: { arch: "x86_64", platform: "Windows", version: "10.0.19045.0" },
45
+ app: [{ appid: WIDEVINE_APP_ID, version: "0.0.0.0", updatecheck: {}, ping: { r: -2 } }],
46
+ },
47
+ };
48
+ }
49
+ async function postJson(url, body) {
50
+ const res = await fetch(url, {
51
+ method: "POST",
52
+ headers: { "Content-Type": "application/json", "User-Agent": UA },
53
+ body: JSON.stringify(body),
54
+ redirect: "follow",
55
+ signal: AbortSignal.timeout(60_000),
56
+ });
57
+ if (!res.ok)
58
+ throw new Error(`Widevine update check HTTP ${res.status}`);
59
+ let raw = await res.text();
60
+ if (raw.startsWith(")]}'"))
61
+ raw = raw.includes("\n") ? raw.slice(raw.indexOf("\n") + 1) : raw.slice(4); // strip XSSI guard
62
+ return JSON.parse(raw);
63
+ }
64
+ /** Pull [downloadUrl, sha256, version] from an Omaha JSON response (pipelines or classic shape). */
65
+ export function parseUpdate(resp) {
66
+ const app = resp?.response?.app?.[0];
67
+ const uc = app?.updatecheck;
68
+ if (!uc || uc.status !== "ok")
69
+ throw new Error(`Widevine update check status: ${uc?.status}`);
70
+ for (const pl of uc.pipelines || []) {
71
+ for (const op of pl.operations || []) {
72
+ const urls = op.urls || [];
73
+ const out = op.out || {};
74
+ if (urls.length && out.sha256)
75
+ return [urls[0].url, out.sha256, app.nextversion || uc.nextversion || ""];
76
+ }
77
+ }
78
+ const base = uc.urls?.url?.[0]?.codebase;
79
+ const pkg = uc.manifest?.packages?.package?.[0];
80
+ if (base && pkg?.name)
81
+ return [base.replace(/\/+$/, "") + "/" + pkg.name, pkg.hash_sha256 || "", uc.manifest?.version || ""];
82
+ throw new Error("could not find a CDM download URL in the update response");
83
+ }
84
+ /** A CRX3 file is 'Cr24' + u32 version + u32 headerLen + header + zip. Return the zip bytes. */
85
+ export function crx3ToZip(buf) {
86
+ if (buf.subarray(0, 4).toString("latin1") !== "Cr24")
87
+ return buf; // already a plain zip
88
+ if (buf.length < 12)
89
+ throw new Error("malformed CRX3 (truncated header)");
90
+ const headerLen = buf.readUInt32LE(8);
91
+ if (12 + headerLen > buf.length)
92
+ throw new Error("malformed CRX3 (header overruns buffer)");
93
+ return buf.subarray(12 + headerLen);
94
+ }
95
+ /**
96
+ * Download + verify the Windows x64 Widevine CDM into `dest` (default ~/.clearcote/WidevineCdm/
97
+ * <version>). Returns the versioned CDM directory (manifest.json + _platform_specific/win_x64/
98
+ * widevinecdm.dll). Re-fetch is skipped if already present.
99
+ */
100
+ export async function fetchWidevine(opts = {}) {
101
+ const [url, sha256, version] = parseUpdate(await postJson(OMAHA_URL, omahaRequestBody()));
102
+ const root = opts.dest || cacheRoot();
103
+ const verDir = path.join(root, version || "current");
104
+ const dll = path.join(verDir, "_platform_specific", "win_x64", "widevinecdm.dll");
105
+ if (existsSync(dll) && existsSync(path.join(verDir, "manifest.json"))) {
106
+ log(opts.quiet, `already present: ${verDir}`);
107
+ return verDir;
108
+ }
109
+ log(opts.quiet, `fetching CDM ${version || "(latest)"}`);
110
+ const res = await fetch(url, { headers: { "User-Agent": UA }, redirect: "follow", signal: AbortSignal.timeout(120_000) });
111
+ if (!res.ok)
112
+ throw new Error(`Widevine CDM download HTTP ${res.status}`);
113
+ const blob = Buffer.from(await res.arrayBuffer());
114
+ // The CDM is a NATIVE DLL loaded into the browser process — never install it unverified. A
115
+ // missing hash in the update response is a hard failure, not a skip.
116
+ if (!sha256)
117
+ throw new Error("Widevine update response had no sha256 — refusing to install an unverified CDM");
118
+ if (createHash("sha256").update(blob).digest("hex") !== sha256.toLowerCase()) {
119
+ throw new Error("Widevine CDM sha256 mismatch — refusing to install");
120
+ }
121
+ mkdirSync(verDir, { recursive: true });
122
+ const tmp = mkdtempSync(path.join(os.tmpdir(), "cc-wv-"));
123
+ const zipPath = path.join(tmp, "cdm.zip");
124
+ try {
125
+ writeFileSync(zipPath, crx3ToZip(blob));
126
+ await extract(zipPath, { dir: verDir });
127
+ }
128
+ finally {
129
+ await rm(tmp, { recursive: true, force: true });
130
+ }
131
+ if (!existsSync(dll))
132
+ throw new Error(`extracted CDM but widevinecdm.dll not at ${dll}`);
133
+ log(opts.quiet, `installed: ${verDir}`);
134
+ return verDir;
135
+ }
136
+ /**
137
+ * Make a persistent profile load the fetched CDM: copy it under <userDataDir>/WidevineCdm/<version>/
138
+ * and write the component hint file the engine reads. Fetches the CDM first if needed.
139
+ */
140
+ export async function seedWidevine(userDataDir, opts = {}) {
141
+ const src = await fetchWidevine(opts);
142
+ const version = path.basename(src);
143
+ const wvRoot = path.join(userDataDir, "WidevineCdm");
144
+ const target = path.join(wvRoot, version);
145
+ if (!existsSync(path.join(target, "_platform_specific", "win_x64", "widevinecdm.dll"))) {
146
+ mkdirSync(wvRoot, { recursive: true });
147
+ cpSync(src, target, { recursive: true });
148
+ }
149
+ try {
150
+ writeFileSync(path.join(wvRoot, HINT_FILE), JSON.stringify({ Path: target }));
151
+ }
152
+ catch {
153
+ /* hint file is Linux-only; harmless if it can't be written */
154
+ }
155
+ log(opts.quiet, `seeded into ${wvRoot}`);
156
+ return target;
157
+ }
158
+ /**
159
+ * Adjust launch args so the engine actually registers the seeded CDM: un-suppress the component
160
+ * updater (Playwright disables it by default) and force the startup scan. Pure — returns the new
161
+ * values. `ignoreDefaultArgs` may be a list, `undefined`, or the boolean form Playwright accepts
162
+ * (`true` = ignore ALL defaults, so the updater is already un-suppressed); only the list/undefined
163
+ * forms need `--disable-component-update` added. Verified: with these, requestMediaKeySystemAccess
164
+ * + createMediaKeys succeed.
165
+ */
166
+ export function widevineArgs(ignoreDefaultArgs, userArgs) {
167
+ let ida = ignoreDefaultArgs;
168
+ if (Array.isArray(ignoreDefaultArgs)) {
169
+ ida = ignoreDefaultArgs.includes("--disable-component-update")
170
+ ? ignoreDefaultArgs
171
+ : [...ignoreDefaultArgs, "--disable-component-update"];
172
+ }
173
+ else if (ignoreDefaultArgs === undefined) {
174
+ ida = ["--disable-component-update"];
175
+ }
176
+ const args = userArgs.some((a) => a.includes("component-updater"))
177
+ ? userArgs
178
+ : [...userArgs, "--component-updater=fast-update"];
179
+ return { ignoreDefaultArgs: ida, args };
180
+ }
181
+ //# sourceMappingURL=widevine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widevine.js","sourceRoot":"","sources":["../src/widevine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clearcote",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
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",