cloakbrowser 0.3.32 → 0.4.1

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.
@@ -16,11 +16,14 @@
16
16
  /**
17
17
  * Locate a sideloaded Widevine CDM directory, or null if absent.
18
18
  *
19
- * Resolution:
20
- * - If CLOAKBROWSER_WIDEVINE_CDM is set, it is used exclusively (overrides
21
- * auto-detection). An invalid value (no `manifest.json`) skips seeding.
22
- * - Otherwise, `<dir of the chrome binary>/WidevineCdm` — where a user naturally
23
- * drops it, and where it lives for both downloaded and CLOAKBROWSER_BINARY_PATH binaries.
19
+ * Resolution order:
20
+ * 1. If CLOAKBROWSER_WIDEVINE_CDM is set, it is used exclusively (overrides
21
+ * auto-detection). An invalid value (no `manifest.json`) skips seeding.
22
+ * 2. `<dir of the chrome binary>/WidevineCdm` — a manual sideload, per version.
23
+ * 3. `<cache dir>/WidevineCdm` (`~/.cloakbrowser/WidevineCdm`) the
24
+ * version-independent location the Docker auto-fetch and fetch-widevine.py
25
+ * write to. This fallback lets one fetched CDM serve any binary (free or
26
+ * Pro, any version) with no env var — the CDM `.so` is arch- not version-specific.
24
27
  *
25
28
  * A directory counts only if it contains `manifest.json`. The returned path is
26
29
  * absolute and symlink-resolved (mirrors Python's Path.resolve()).
@@ -1 +1 @@
1
- {"version":3,"file":"widevine.d.ts","sourceRoot":"","sources":["../src/widevine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8BH;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAuC9E"}
1
+ {"version":3,"file":"widevine.d.ts","sourceRoot":"","sources":["../src/widevine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgCH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBvE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAuC9E"}
package/dist/widevine.js CHANGED
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import fs from "node:fs";
17
17
  import path from "node:path";
18
+ import { getCacheDir } from "./config.js";
18
19
  const HINT_FILENAME = "latest-component-updated-widevine-cdm";
19
20
  /** True if `file` exists and is a regular file (mirrors Python's Path.is_file()). */
20
21
  function isFile(file) {
@@ -41,11 +42,14 @@ function seedingDisabled() {
41
42
  /**
42
43
  * Locate a sideloaded Widevine CDM directory, or null if absent.
43
44
  *
44
- * Resolution:
45
- * - If CLOAKBROWSER_WIDEVINE_CDM is set, it is used exclusively (overrides
46
- * auto-detection). An invalid value (no `manifest.json`) skips seeding.
47
- * - Otherwise, `<dir of the chrome binary>/WidevineCdm` — where a user naturally
48
- * drops it, and where it lives for both downloaded and CLOAKBROWSER_BINARY_PATH binaries.
45
+ * Resolution order:
46
+ * 1. If CLOAKBROWSER_WIDEVINE_CDM is set, it is used exclusively (overrides
47
+ * auto-detection). An invalid value (no `manifest.json`) skips seeding.
48
+ * 2. `<dir of the chrome binary>/WidevineCdm` — a manual sideload, per version.
49
+ * 3. `<cache dir>/WidevineCdm` (`~/.cloakbrowser/WidevineCdm`) the
50
+ * version-independent location the Docker auto-fetch and fetch-widevine.py
51
+ * write to. This fallback lets one fetched CDM serve any binary (free or
52
+ * Pro, any version) with no env var — the CDM `.so` is arch- not version-specific.
49
53
  *
50
54
  * A directory counts only if it contains `manifest.json`. The returned path is
51
55
  * absolute and symlink-resolved (mirrors Python's Path.resolve()).
@@ -53,10 +57,22 @@ function seedingDisabled() {
53
57
  */
54
58
  export function resolveWidevineCdmDir(binaryPath) {
55
59
  const custom = process.env.CLOAKBROWSER_WIDEVINE_CDM;
56
- // `!== undefined` (not truthiness): a present-but-empty env var is "set" and
57
- // used exclusively it resolves to an invalid path and skips seeding.
58
- const cdmDir = custom !== undefined ? custom : path.join(path.dirname(binaryPath), "WidevineCdm");
59
- return isFile(path.join(cdmDir, "manifest.json")) ? realPath(cdmDir) : null;
60
+ if (custom !== undefined) {
61
+ // Set exclusively (overrides auto-detection). An empty/whitespace value is
62
+ // invalid return null rather than let path.join("", ...) match a stray
63
+ // manifest.json in the working directory.
64
+ if (custom.trim() === "")
65
+ return null;
66
+ return isFile(path.join(custom, "manifest.json")) ? realPath(custom) : null;
67
+ }
68
+ for (const cdmDir of [
69
+ path.join(path.dirname(binaryPath), "WidevineCdm"),
70
+ path.join(getCacheDir(), "WidevineCdm"),
71
+ ]) {
72
+ if (isFile(path.join(cdmDir, "manifest.json")))
73
+ return realPath(cdmDir);
74
+ }
75
+ return null;
60
76
  }
61
77
  /**
62
78
  * Write the Widevine CDM hint file into a persistent profile before launch.
@@ -1 +1 @@
1
- {"version":3,"file":"widevine.js","sourceRoot":"","sources":["../src/widevine.ts"],"names":[],"mappings":"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"}
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": "cloakbrowser",
3
- "version": "0.3.32",
3
+ "version": "0.4.1",
4
4
  "description": "Stealth Chromium that passes every bot detection test. Drop-in Playwright/Puppeteer replacement with source-level fingerprint patches.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",