cloakbrowser 0.3.27 → 0.3.29

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.
Files changed (50) hide show
  1. package/README.md +8 -1
  2. package/dist/args.d.ts +0 -3
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +7 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/geoip.d.ts.map +1 -1
  7. package/dist/geoip.js +51 -10
  8. package/dist/geoip.js.map +1 -1
  9. package/dist/human/actionability.d.ts +45 -0
  10. package/dist/human/actionability.d.ts.map +1 -0
  11. package/dist/human/actionability.js +274 -0
  12. package/dist/human/actionability.js.map +1 -0
  13. package/dist/human/config.d.ts +5 -0
  14. package/dist/human/config.d.ts.map +1 -1
  15. package/dist/human/config.js.map +1 -1
  16. package/dist/human/elementhandle.d.ts.map +1 -1
  17. package/dist/human/elementhandle.js +66 -16
  18. package/dist/human/elementhandle.js.map +1 -1
  19. package/dist/human/index.d.ts.map +1 -1
  20. package/dist/human/index.js +234 -47
  21. package/dist/human/index.js.map +1 -1
  22. package/dist/human/mouse.d.ts +1 -0
  23. package/dist/human/mouse.d.ts.map +1 -1
  24. package/dist/human/mouse.js +8 -4
  25. package/dist/human/mouse.js.map +1 -1
  26. package/dist/human/scroll.d.ts +4 -0
  27. package/dist/human/scroll.d.ts.map +1 -1
  28. package/dist/human/scroll.js +5 -3
  29. package/dist/human/scroll.js.map +1 -1
  30. package/dist/human-puppeteer/index.d.ts.map +1 -1
  31. package/dist/human-puppeteer/index.js +10 -10
  32. package/dist/human-puppeteer/index.js.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/playwright.d.ts +12 -1
  38. package/dist/playwright.d.ts.map +1 -1
  39. package/dist/playwright.js +35 -21
  40. package/dist/playwright.js.map +1 -1
  41. package/dist/proxy.d.ts.map +1 -1
  42. package/dist/proxy.js +11 -1
  43. package/dist/proxy.js.map +1 -1
  44. package/dist/puppeteer.d.ts +23 -2
  45. package/dist/puppeteer.d.ts.map +1 -1
  46. package/dist/puppeteer.js +93 -58
  47. package/dist/puppeteer.js.map +1 -1
  48. package/dist/types.d.ts +2 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +3 -3
package/README.md CHANGED
@@ -215,7 +215,7 @@ const page = await browser.newPage();
215
215
  ## Requirements
216
216
 
217
217
  - Node.js >= 20
218
- - One of: `playwright-core` >= 1.40 or `puppeteer-core` >= 21
218
+ - One of: `playwright-core` >= 1.53 or `puppeteer-core` >= 21
219
219
 
220
220
  ## Troubleshooting
221
221
 
@@ -230,6 +230,13 @@ const ctx = await launchPersistentContext({
230
230
  userDataDir: './my-profile',
231
231
  headless: false,
232
232
  });
233
+
234
+ // Load Chrome extensions
235
+ const ctx = await launchPersistentContext({
236
+ userDataDir: './my-profile',
237
+ headless: false,
238
+ extensionPaths: ['./my-extension'],
239
+ });
233
240
  ```
234
241
 
235
242
  This also gives you cookie and localStorage persistence across sessions.
package/dist/args.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- /**
2
- * Shared argument builder for Playwright and Puppeteer wrappers.
3
- */
4
1
  import type { LaunchOptions } from "./types.js";
5
2
  /**
6
3
  * Build deduplicated Chromium CLI args from stealth defaults + user overrides.
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CA4C1D"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CAuD1D"}
package/dist/args.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Shared argument builder for Playwright and Puppeteer wrappers.
3
3
  */
4
+ import path from "path";
4
5
  import { getDefaultStealthArgs } from "./config.js";
5
6
  const DEBUG = /\bcloakbrowser\b/.test(process.env.DEBUG ?? "");
6
7
  /**
@@ -53,6 +54,12 @@ export function buildArgs(options) {
53
54
  seen.set(k, flag);
54
55
  }
55
56
  }
57
+ if (options.extensionPaths?.length) {
58
+ const absPaths = options.extensionPaths.map(p => path.resolve(p));
59
+ const joined = absPaths.join(",");
60
+ seen.set("--load-extension", `--load-extension=${joined}`);
61
+ seen.set("--disable-extensions-except", `--disable-extensions-except=${joined}`);
62
+ }
56
63
  return [...seen.values()];
57
64
  }
58
65
  //# sourceMappingURL=args.js.map
package/dist/args.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,wBAAwB;IACxB,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,wBAAwB,CAAC;QACrC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAU,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,IAAI,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"geoip.d.ts","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAerD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CA+BpB;AAMD,sCAAsC;AACtC,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AA8MD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBlE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8B/B"}
1
+ {"version":3,"file":"geoip.d.ts","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAerD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CAuCpB;AA8BD,sCAAsC;AACtC,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAuND;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBlE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8B/B"}
package/dist/geoip.js CHANGED
@@ -18,6 +18,7 @@ import { ensureProxyScheme, isSocksProxy, reconstructSocksUrl } from "./proxy.js
18
18
  const GEOIP_DB_URL = "https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb";
19
19
  const GEOIP_DB_FILENAME = "GeoLite2-City.mmdb";
20
20
  const GEOIP_UPDATE_INTERVAL_MS = 30 * 86_400_000; // 30 days
21
+ const DEFAULT_GEOIP_TIMEOUT_MS = 5_000;
21
22
  /** Country ISO code → BCP 47 locale (covers ~90% of proxy traffic). */
22
23
  export const COUNTRY_LOCALE_MAP = {
23
24
  US: "en-US", GB: "en-GB", AU: "en-AU", CA: "en-CA", NZ: "en-NZ",
@@ -52,12 +53,18 @@ export async function resolveProxyGeo(proxyUrl) {
52
53
  const dbPath = await ensureGeoipDb();
53
54
  if (!dbPath)
54
55
  return { timezone: null, locale: null, exitIp: null };
56
+ const timeoutMs = getGeoipTimeoutMs();
57
+ const deadline = deadlineFromTimeout(timeoutMs);
55
58
  // Exit IP (through proxy) is most accurate — gateway DNS may differ from exit
56
- let ip = await resolveExitIp(proxyUrl);
57
- if (!ip)
59
+ let ip = await resolveExitIp(proxyUrl, remainingMs(deadline));
60
+ if (!ip && !deadlineExpired(deadline))
58
61
  ip = await resolveProxyIp(proxyUrl);
59
- if (!ip)
62
+ if (!ip || deadlineExpired(deadline)) {
63
+ if (deadlineExpired(deadline)) {
64
+ console.warn(`[cloakbrowser] GeoIP resolution timed out after ${timeoutMs}ms; continuing without GeoIP`);
65
+ }
60
66
  return { timezone: null, locale: null, exitIp: null };
67
+ }
61
68
  try {
62
69
  const buf = fs.readFileSync(dbPath);
63
70
  const reader = new Reader(buf);
@@ -71,6 +78,28 @@ export async function resolveProxyGeo(proxyUrl) {
71
78
  return { timezone: null, locale: null, exitIp: ip };
72
79
  }
73
80
  }
81
+ function getGeoipTimeoutMs() {
82
+ const raw = process.env.CLOAKBROWSER_GEOIP_TIMEOUT_SECONDS;
83
+ if (!raw)
84
+ return DEFAULT_GEOIP_TIMEOUT_MS;
85
+ const timeoutSeconds = Number(raw);
86
+ if (!Number.isFinite(timeoutSeconds)) {
87
+ console.warn(`[cloakbrowser] Invalid CLOAKBROWSER_GEOIP_TIMEOUT_SECONDS=${raw}; using ${DEFAULT_GEOIP_TIMEOUT_MS / 1000}s`);
88
+ return DEFAULT_GEOIP_TIMEOUT_MS;
89
+ }
90
+ return Math.max(timeoutSeconds, 0) * 1000;
91
+ }
92
+ function deadlineFromTimeout(timeoutMs) {
93
+ return timeoutMs > 0 ? performance.now() + timeoutMs : null;
94
+ }
95
+ function remainingMs(deadline) {
96
+ if (deadline === null)
97
+ return undefined;
98
+ return Math.max(deadline - performance.now(), 0);
99
+ }
100
+ function deadlineExpired(deadline) {
101
+ return deadline !== null && performance.now() >= deadline;
102
+ }
74
103
  // ---------------------------------------------------------------------------
75
104
  // Proxy IP resolution
76
105
  // ---------------------------------------------------------------------------
@@ -110,7 +139,8 @@ const IP_ECHO_URLS = [
110
139
  "https://checkip.amazonaws.com",
111
140
  "https://ifconfig.me/ip",
112
141
  ];
113
- async function resolveExitIp(proxyUrl) {
142
+ async function resolveExitIp(proxyUrl, timeoutMs) {
143
+ const deadline = timeoutMs && timeoutMs > 0 ? performance.now() + timeoutMs : null;
114
144
  const isSocks = isSocksProxy(proxyUrl);
115
145
  // SOCKS5: tunnel through the SOCKS5 proxy via socks-proxy-agent
116
146
  if (isSocks) {
@@ -125,9 +155,12 @@ async function resolveExitIp(proxyUrl) {
125
155
  const { default: https } = await import("node:https");
126
156
  const agent = new SocksProxyAgent(proxyUrl);
127
157
  for (const echoUrl of IP_ECHO_URLS) {
158
+ const remaining = remainingMs(deadline);
159
+ if (remaining !== undefined && remaining <= 0)
160
+ return null;
128
161
  try {
129
162
  const ip = await new Promise((resolve) => {
130
- const req = https.request(echoUrl, { agent, timeout: 10_000 }, (res) => {
163
+ const req = https.request(echoUrl, { agent, timeout: Math.min(10_000, remaining ?? 10_000) }, (res) => {
131
164
  let data = "";
132
165
  res.on("data", (chunk) => (data += chunk.toString()));
133
166
  res.on("end", () => {
@@ -154,6 +187,9 @@ async function resolveExitIp(proxyUrl) {
154
187
  const { default: https } = await import("node:https");
155
188
  const proxyUrlObj = new URL(proxyUrl);
156
189
  for (const echoUrl of IP_ECHO_URLS) {
190
+ const remaining = remainingMs(deadline);
191
+ if (remaining !== undefined && remaining <= 0)
192
+ return null;
157
193
  try {
158
194
  const ip = await new Promise((resolve, reject) => {
159
195
  const targetUrl = new URL(echoUrl);
@@ -168,10 +204,11 @@ async function resolveExitIp(proxyUrl) {
168
204
  Buffer.from(`${decodeURIComponent(proxyUrlObj.username)}:${decodeURIComponent(proxyUrlObj.password || "")}`).toString("base64"),
169
205
  }
170
206
  : {},
171
- timeout: 10_000,
207
+ timeout: Math.min(10_000, remaining ?? 10_000),
172
208
  });
173
209
  connectReq.on("connect", (_res, socket) => {
174
- const req = https.request(echoUrl, { socket, timeout: 5_000 }, (res) => {
210
+ const innerRemaining = remainingMs(deadline);
211
+ const req = https.request(echoUrl, { socket, timeout: Math.min(5_000, innerRemaining ?? 5_000) }, (res) => {
175
212
  let data = "";
176
213
  res.on("data", (chunk) => (data += chunk.toString()));
177
214
  res.on("end", () => {
@@ -180,6 +217,7 @@ async function resolveExitIp(proxyUrl) {
180
217
  });
181
218
  });
182
219
  req.on("error", () => resolve(null));
220
+ req.on("timeout", () => { req.destroy(); resolve(null); });
183
221
  req.end();
184
222
  });
185
223
  connectReq.on("error", () => resolve(null));
@@ -229,7 +267,9 @@ async function downloadGeoipDb(dest) {
229
267
  console.log("[cloakbrowser] Downloading GeoIP database (~70 MB)…");
230
268
  const tmpPath = `${dest}.tmp.${Date.now()}`;
231
269
  try {
232
- const response = await fetch(GEOIP_DB_URL, { redirect: "follow" });
270
+ const response = await fetch(GEOIP_DB_URL, {
271
+ redirect: "follow",
272
+ });
233
273
  if (!response.ok || !response.body) {
234
274
  throw new Error(`HTTP ${response.status}`);
235
275
  }
@@ -296,7 +336,8 @@ export async function maybeResolveGeoip(options) {
296
336
  return { timezone: options.timezone, locale: options.locale };
297
337
  // When both tz/locale are explicit, still resolve exit IP for WebRTC
298
338
  if (options.timezone && options.locale) {
299
- const exitIp = await resolveExitIp(proxyUrl) ?? undefined;
339
+ const timeoutMs = getGeoipTimeoutMs();
340
+ const exitIp = await resolveExitIp(proxyUrl, timeoutMs) ?? undefined;
300
341
  return { timezone: options.timezone, locale: options.locale, exitIp };
301
342
  }
302
343
  const { timezone: geoTz, locale: geoLocale, exitIp: geoExitIp } = await resolveProxyGeo(proxyUrl);
@@ -326,7 +367,7 @@ export async function resolveWebrtcArgs(options) {
326
367
  return result;
327
368
  }
328
369
  try {
329
- const ip = await resolveExitIp(proxyUrl);
370
+ const ip = await resolveExitIp(proxyUrl, getGeoipTimeoutMs());
330
371
  const result = [...args];
331
372
  if (ip) {
332
373
  result[idx] = `--fingerprint-webrtc-ip=${ip}`;
package/dist/geoip.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"geoip.js","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geoip.js","sourceRoot":"","sources":["../src/geoip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Playwright-style actionability checks for the humanize layer.
3
+ *
4
+ * Checks: attached, visible, stable, enabled, editable, receives pointer events.
5
+ * Retry loop with backoff matching Playwright internals: [100, 250, 500, 1000]ms.
6
+ */
7
+ import type { Page, Frame, ElementHandle } from 'playwright-core';
8
+ export declare class ActionabilityError extends Error {
9
+ selector: string;
10
+ check: string;
11
+ constructor(selector: string, check: string, message: string);
12
+ }
13
+ export declare class ElementNotAttachedError extends ActionabilityError {
14
+ constructor(selector: string);
15
+ }
16
+ export declare class ElementNotVisibleError extends ActionabilityError {
17
+ constructor(selector: string);
18
+ }
19
+ export declare class ElementNotStableError extends ActionabilityError {
20
+ constructor(selector: string);
21
+ }
22
+ export declare class ElementNotEnabledError extends ActionabilityError {
23
+ constructor(selector: string);
24
+ }
25
+ export declare class ElementNotEditableError extends ActionabilityError {
26
+ constructor(selector: string);
27
+ }
28
+ export declare class ElementNotReceivingEventsError extends ActionabilityError {
29
+ coveringTag: string;
30
+ constructor(selector: string, coveringTag?: string);
31
+ }
32
+ export type CheckName = 'attached' | 'visible' | 'enabled' | 'editable' | 'pointer_events';
33
+ export declare const CHECKS_CLICK: ReadonlySet<CheckName>;
34
+ export declare const CHECKS_HOVER: ReadonlySet<CheckName>;
35
+ export declare const CHECKS_INPUT: ReadonlySet<CheckName>;
36
+ export declare const CHECKS_FOCUS: ReadonlySet<CheckName>;
37
+ export declare const CHECKS_CHECK: ReadonlySet<CheckName>;
38
+ export declare function ensureActionable(pageOrFrame: Page | Frame, selector: string, checks: ReadonlySet<CheckName>, timeout?: number, force?: boolean): Promise<void>;
39
+ export declare function ensureStable(pageOrFrame: Page | Frame, selector: string, timeout?: number): Promise<void>;
40
+ export declare function checkPointerEvents(pageOrFrame: Page | Frame, selector: string, x: number, y: number, stealth?: {
41
+ evaluate(expression: string): Promise<any>;
42
+ } | null, timeout?: number): Promise<void>;
43
+ export declare function ensureActionableHandle(el: ElementHandle, checks: ReadonlySet<CheckName>, timeout?: number, force?: boolean): Promise<void>;
44
+ export declare function checkPointerEventsHandle(el: ElementHandle, x: number, y: number, timeout?: number): Promise<void>;
45
+ //# sourceMappingURL=actionability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionability.d.ts","sourceRoot":"","sources":["../../src/human/actionability.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMlE,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;gBAEF,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM7D;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,sBAAuB,SAAQ,kBAAkB;gBAChD,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,sBAAuB,SAAQ,kBAAkB;gBAChD,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,8BAA+B,SAAQ,kBAAkB;IACpE,WAAW,EAAE,MAAM,CAAC;gBACR,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAkB;CAK9D;AAMD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAE3F,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,CAAiE,CAAC;AAClH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,CAAsD,CAAC;AACvG,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,CAA6E,CAAC;AAC9H,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,CAA+C,CAAC;AAChG,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,CAAiE,CAAC;AAalH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,IAAI,GAAG,KAAK,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,EAC9B,OAAO,GAAE,MAAc,EACvB,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAkBD,wBAAsB,YAAY,CAChC,WAAW,EAAE,IAAI,GAAG,KAAK,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAwBD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,IAAI,GAAG,KAAK,EACzB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,IAAI,EAC/D,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAMD,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,EAC9B,OAAO,GAAE,MAAc,EACvB,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,aAAa,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Playwright-style actionability checks for the humanize layer.
3
+ *
4
+ * Checks: attached, visible, stable, enabled, editable, receives pointer events.
5
+ * Retry loop with backoff matching Playwright internals: [100, 250, 500, 1000]ms.
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Error hierarchy
9
+ // ---------------------------------------------------------------------------
10
+ export class ActionabilityError extends Error {
11
+ selector;
12
+ check;
13
+ constructor(selector, check, message) {
14
+ super(`Element ${JSON.stringify(selector)} failed ${check} check: ${message}`);
15
+ this.name = 'ActionabilityError';
16
+ this.selector = selector;
17
+ this.check = check;
18
+ }
19
+ }
20
+ export class ElementNotAttachedError extends ActionabilityError {
21
+ constructor(selector) {
22
+ super(selector, 'attached', 'element not found in DOM');
23
+ this.name = 'ElementNotAttachedError';
24
+ }
25
+ }
26
+ export class ElementNotVisibleError extends ActionabilityError {
27
+ constructor(selector) {
28
+ super(selector, 'visible', 'element is not visible');
29
+ this.name = 'ElementNotVisibleError';
30
+ }
31
+ }
32
+ export class ElementNotStableError extends ActionabilityError {
33
+ constructor(selector) {
34
+ super(selector, 'stable', 'element position is still changing');
35
+ this.name = 'ElementNotStableError';
36
+ }
37
+ }
38
+ export class ElementNotEnabledError extends ActionabilityError {
39
+ constructor(selector) {
40
+ super(selector, 'enabled', 'element is disabled');
41
+ this.name = 'ElementNotEnabledError';
42
+ }
43
+ }
44
+ export class ElementNotEditableError extends ActionabilityError {
45
+ constructor(selector) {
46
+ super(selector, 'editable', 'element is not editable');
47
+ this.name = 'ElementNotEditableError';
48
+ }
49
+ }
50
+ export class ElementNotReceivingEventsError extends ActionabilityError {
51
+ coveringTag;
52
+ constructor(selector, coveringTag = 'unknown') {
53
+ super(selector, 'pointer_events', `element is covered by <${coveringTag}>`);
54
+ this.name = 'ElementNotReceivingEventsError';
55
+ this.coveringTag = coveringTag;
56
+ }
57
+ }
58
+ export const CHECKS_CLICK = new Set(['attached', 'visible', 'enabled', 'pointer_events']);
59
+ export const CHECKS_HOVER = new Set(['attached', 'visible', 'pointer_events']);
60
+ export const CHECKS_INPUT = new Set(['attached', 'visible', 'enabled', 'editable', 'pointer_events']);
61
+ export const CHECKS_FOCUS = new Set(['attached', 'visible', 'enabled']);
62
+ export const CHECKS_CHECK = new Set(['attached', 'visible', 'enabled', 'pointer_events']);
63
+ const BACKOFF_MS = [100, 250, 500, 1000];
64
+ function backoffSleep(attempt) {
65
+ const idx = Math.min(attempt, BACKOFF_MS.length - 1);
66
+ return new Promise(resolve => setTimeout(resolve, BACKOFF_MS[idx]));
67
+ }
68
+ // ---------------------------------------------------------------------------
69
+ // Pre-scroll actionability
70
+ // ---------------------------------------------------------------------------
71
+ export async function ensureActionable(pageOrFrame, selector, checks, timeout = 30000, force = false) {
72
+ if (force)
73
+ return;
74
+ const deadline = Date.now() + timeout;
75
+ let attempt = 0;
76
+ let lastError = null;
77
+ while (true) {
78
+ const remainingMs = Math.max(0, deadline - Date.now());
79
+ if (remainingMs <= 0) {
80
+ if (lastError)
81
+ throw lastError;
82
+ throw new ActionabilityError(selector, 'timeout', 'timeout expired before first check');
83
+ }
84
+ try {
85
+ const loc = pageOrFrame.locator(selector).first();
86
+ if (checks.has('attached')) {
87
+ try {
88
+ await loc.waitFor({ state: 'attached', timeout: Math.max(1, Math.min(remainingMs, 2000)) });
89
+ }
90
+ catch {
91
+ throw new ElementNotAttachedError(selector);
92
+ }
93
+ }
94
+ if (checks.has('visible')) {
95
+ if (!await loc.isVisible())
96
+ throw new ElementNotVisibleError(selector);
97
+ }
98
+ if (checks.has('enabled')) {
99
+ if (!await loc.isEnabled())
100
+ throw new ElementNotEnabledError(selector);
101
+ }
102
+ if (checks.has('editable')) {
103
+ if (!await loc.isEditable())
104
+ throw new ElementNotEditableError(selector);
105
+ }
106
+ return;
107
+ }
108
+ catch (e) {
109
+ if (e instanceof ActionabilityError) {
110
+ lastError = e;
111
+ if (Date.now() >= deadline)
112
+ throw lastError;
113
+ await backoffSleep(attempt);
114
+ attempt++;
115
+ }
116
+ else {
117
+ throw e;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ // ---------------------------------------------------------------------------
123
+ // Post-scroll stability check
124
+ // ---------------------------------------------------------------------------
125
+ function boxesDiffer(a, b) {
126
+ return (Math.abs(a.x - b.x) > 1 ||
127
+ Math.abs(a.y - b.y) > 1 ||
128
+ Math.abs(a.width - b.width) > 1 ||
129
+ Math.abs(a.height - b.height) > 1);
130
+ }
131
+ export async function ensureStable(pageOrFrame, selector, timeout = 5000) {
132
+ const deadline = Date.now() + timeout;
133
+ let attempt = 0;
134
+ while (true) {
135
+ const remainingMs = Math.max(0, deadline - Date.now());
136
+ if (remainingMs <= 0)
137
+ throw new ElementNotStableError(selector);
138
+ const loc = pageOrFrame.locator(selector).first();
139
+ const box1 = await loc.boundingBox({ timeout: Math.max(1, Math.min(remainingMs, 1000)) });
140
+ if (!box1)
141
+ throw new ElementNotAttachedError(selector);
142
+ await new Promise(r => setTimeout(r, 100));
143
+ const box2 = await loc.boundingBox({ timeout: Math.max(1, Math.min(remainingMs, 1000)) });
144
+ if (!box2)
145
+ throw new ElementNotAttachedError(selector);
146
+ if (!boxesDiffer(box1, box2))
147
+ return;
148
+ if (Date.now() >= deadline)
149
+ throw new ElementNotStableError(selector);
150
+ await backoffSleep(attempt);
151
+ attempt++;
152
+ }
153
+ }
154
+ // ---------------------------------------------------------------------------
155
+ // Pointer-events check (post-scroll, at actual click coordinates)
156
+ // ---------------------------------------------------------------------------
157
+ const POINTER_EVENTS_LOCATOR_JS = `(expected, coords) => {
158
+ const target = document.elementFromPoint(coords.x, coords.y);
159
+ if (!target) return { hit: false, reason: 'no_element_at_point', covering: 'none' };
160
+ let node = target;
161
+ while (node) { if (node === expected) return { hit: true }; node = node.parentNode; }
162
+ if (expected.contains(target)) return { hit: true };
163
+ return { hit: false, reason: 'covered', covering: target.tagName || 'unknown' };
164
+ }`;
165
+ const POINTER_EVENTS_HANDLE_JS = `(expected, coords) => {
166
+ const target = document.elementFromPoint(coords.x, coords.y);
167
+ if (!target) return { hit: false, reason: 'no_element_at_point', covering: 'none' };
168
+ let node = target;
169
+ while (node) { if (node === expected) return { hit: true }; node = node.parentNode; }
170
+ if (expected.contains(target)) return { hit: true };
171
+ return { hit: false, reason: 'covered', covering: target.tagName || 'unknown' };
172
+ }`;
173
+ export async function checkPointerEvents(pageOrFrame, selector, x, y, stealth, timeout = 5000) {
174
+ const deadline = Date.now() + timeout;
175
+ let attempt = 0;
176
+ const coords = { x, y };
177
+ while (true) {
178
+ let result = null;
179
+ try {
180
+ const loc = pageOrFrame.locator(selector).first();
181
+ result = await loc.evaluate(POINTER_EVENTS_LOCATOR_JS, coords);
182
+ }
183
+ catch {
184
+ result = null;
185
+ }
186
+ if (result && result.hit)
187
+ return;
188
+ const covering = result?.covering ?? 'unknown';
189
+ if (Date.now() >= deadline)
190
+ throw new ElementNotReceivingEventsError(selector, covering);
191
+ await backoffSleep(attempt);
192
+ attempt++;
193
+ }
194
+ }
195
+ // ---------------------------------------------------------------------------
196
+ // ElementHandle variant
197
+ // ---------------------------------------------------------------------------
198
+ export async function ensureActionableHandle(el, checks, timeout = 30000, force = false) {
199
+ if (force)
200
+ return;
201
+ const deadline = Date.now() + timeout;
202
+ let attempt = 0;
203
+ let lastError = null;
204
+ const label = '<ElementHandle>';
205
+ while (true) {
206
+ const remainingMs = Math.max(0, deadline - Date.now());
207
+ if (remainingMs <= 0) {
208
+ if (lastError)
209
+ throw lastError;
210
+ throw new ActionabilityError(label, 'timeout', 'timeout expired before first check');
211
+ }
212
+ try {
213
+ if (checks.has('visible')) {
214
+ try {
215
+ await el.waitForElementState('visible', { timeout: Math.max(1, Math.min(remainingMs, 2000)) });
216
+ }
217
+ catch {
218
+ throw new ElementNotVisibleError(label);
219
+ }
220
+ }
221
+ if (checks.has('enabled')) {
222
+ try {
223
+ await el.waitForElementState('enabled', { timeout: Math.max(1, Math.min(remainingMs, 2000)) });
224
+ }
225
+ catch {
226
+ throw new ElementNotEnabledError(label);
227
+ }
228
+ }
229
+ if (checks.has('editable')) {
230
+ try {
231
+ await el.waitForElementState('editable', { timeout: Math.max(1, Math.min(remainingMs, 2000)) });
232
+ }
233
+ catch {
234
+ throw new ElementNotEditableError(label);
235
+ }
236
+ }
237
+ return;
238
+ }
239
+ catch (e) {
240
+ if (e instanceof ActionabilityError) {
241
+ lastError = e;
242
+ if (Date.now() >= deadline)
243
+ throw lastError;
244
+ await backoffSleep(attempt);
245
+ attempt++;
246
+ }
247
+ else {
248
+ throw e;
249
+ }
250
+ }
251
+ }
252
+ }
253
+ export async function checkPointerEventsHandle(el, x, y, timeout = 5000) {
254
+ const deadline = Date.now() + timeout;
255
+ let attempt = 0;
256
+ const coords = { x, y };
257
+ while (true) {
258
+ let result;
259
+ try {
260
+ result = await el.evaluate(POINTER_EVENTS_HANDLE_JS, coords);
261
+ }
262
+ catch {
263
+ result = null;
264
+ }
265
+ if (result && result.hit)
266
+ return;
267
+ const covering = result?.covering ?? 'unknown';
268
+ if (Date.now() >= deadline)
269
+ throw new ElementNotReceivingEventsError('<ElementHandle>', covering);
270
+ await backoffSleep(attempt);
271
+ attempt++;
272
+ }
273
+ }
274
+ //# sourceMappingURL=actionability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionability.js","sourceRoot":"","sources":["../../src/human/actionability.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export interface HumanConfig {
48
48
  idle_between_duration: [number, number];
49
49
  }
50
50
  export type HumanPreset = 'default' | 'careful';
51
+ export type HumanActionOptions = Partial<HumanConfig> & {
52
+ timeout?: number;
53
+ force?: boolean;
54
+ human_config?: Partial<HumanConfig>;
55
+ };
51
56
  /**
52
57
  * Resolve a preset name or partial config into a full HumanConfig.
53
58
  * If `preset` is a string, returns the corresponding built-in config.