jumpy-lion 0.1.6-beta.7 → 1.0.0-beta.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.
Files changed (232) hide show
  1. package/README.md +1 -607
  2. package/browser/fonts/macos-bundle/40-macos-aliases.conf +515 -0
  3. package/browser/fonts/macos-bundle/README.md +24 -0
  4. package/browser/fonts/macos-bundle/install.sh +83 -0
  5. package/dist/browser-controller.d.ts +47 -4
  6. package/dist/browser-controller.d.ts.map +1 -1
  7. package/dist/browser-controller.js +219 -278
  8. package/dist/browser-controller.js.map +1 -1
  9. package/dist/browser-plugin.d.ts +82 -110
  10. package/dist/browser-plugin.d.ts.map +1 -1
  11. package/dist/browser-plugin.js +376 -379
  12. package/dist/browser-plugin.js.map +1 -1
  13. package/dist/browser-process/align-fingerprint-config.d.ts +36 -0
  14. package/dist/browser-process/align-fingerprint-config.d.ts.map +1 -0
  15. package/dist/browser-process/align-fingerprint-config.js +74 -0
  16. package/dist/browser-process/align-fingerprint-config.js.map +1 -0
  17. package/dist/browser-process/anti-detect-browser.d.ts +2 -2
  18. package/dist/browser-process/anti-detect-browser.js +7 -7
  19. package/dist/browser-process/anti-detect-config.d.ts +131 -2
  20. package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
  21. package/dist/browser-process/anti-detect-config.js +337 -127
  22. package/dist/browser-process/anti-detect-config.js.map +1 -1
  23. package/dist/browser-process/browser.d.ts +25 -92
  24. package/dist/browser-process/browser.d.ts.map +1 -1
  25. package/dist/browser-process/browser.js +429 -73
  26. package/dist/browser-process/browser.js.map +1 -1
  27. package/dist/browser-process/fingerprint-config.d.ts +146 -0
  28. package/dist/browser-process/fingerprint-config.d.ts.map +1 -0
  29. package/dist/browser-process/fingerprint-config.js +308 -0
  30. package/dist/browser-process/fingerprint-config.js.map +1 -0
  31. package/dist/browser-process/get-chrome-executable.d.ts +6 -0
  32. package/dist/browser-process/get-chrome-executable.d.ts.map +1 -1
  33. package/dist/browser-process/get-chrome-executable.js +79 -4
  34. package/dist/browser-process/get-chrome-executable.js.map +1 -1
  35. package/dist/browser-process/gpu-family-profiles.d.ts +58 -0
  36. package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -0
  37. package/dist/browser-process/gpu-family-profiles.js +480 -0
  38. package/dist/browser-process/gpu-family-profiles.js.map +1 -0
  39. package/dist/browser-process/launch-options.d.ts +301 -0
  40. package/dist/browser-process/launch-options.d.ts.map +1 -0
  41. package/dist/browser-process/launch-options.js +2 -0
  42. package/dist/browser-process/launch-options.js.map +1 -0
  43. package/dist/browser-process/port-allocator.d.ts +64 -0
  44. package/dist/browser-process/port-allocator.d.ts.map +1 -0
  45. package/dist/browser-process/port-allocator.js +198 -0
  46. package/dist/browser-process/port-allocator.js.map +1 -0
  47. package/dist/browser-process/process.d.ts +85 -0
  48. package/dist/browser-process/process.d.ts.map +1 -1
  49. package/dist/browser-process/process.js +235 -19
  50. package/dist/browser-process/process.js.map +1 -1
  51. package/dist/browser-process/signal-cleanup.d.ts +40 -0
  52. package/dist/browser-process/signal-cleanup.d.ts.map +1 -0
  53. package/dist/browser-process/signal-cleanup.js +105 -0
  54. package/dist/browser-process/signal-cleanup.js.map +1 -0
  55. package/dist/browser-process/widevine-cdm.d.ts +144 -0
  56. package/dist/browser-process/widevine-cdm.d.ts.map +1 -0
  57. package/dist/browser-process/widevine-cdm.js +298 -0
  58. package/dist/browser-process/widevine-cdm.js.map +1 -0
  59. package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -1
  60. package/dist/browser-profiles/chrome/populate-profile.js +21 -22
  61. package/dist/browser-profiles/chrome/populate-profile.js.map +1 -1
  62. package/dist/connection/cdp-reconnection.d.ts +50 -0
  63. package/dist/connection/cdp-reconnection.d.ts.map +1 -0
  64. package/dist/connection/cdp-reconnection.js +75 -0
  65. package/dist/connection/cdp-reconnection.js.map +1 -0
  66. package/dist/connection/page-session.d.ts +114 -0
  67. package/dist/connection/page-session.d.ts.map +1 -0
  68. package/dist/connection/page-session.js +237 -0
  69. package/dist/connection/page-session.js.map +1 -0
  70. package/dist/connection/session-client.d.ts +34 -0
  71. package/dist/connection/session-client.d.ts.map +1 -0
  72. package/dist/connection/session-client.js +129 -0
  73. package/dist/connection/session-client.js.map +1 -0
  74. package/dist/crawler.d.ts +9 -88
  75. package/dist/crawler.d.ts.map +1 -1
  76. package/dist/crawler.js +157 -8
  77. package/dist/crawler.js.map +1 -1
  78. package/dist/fingerprinting/fingerprint-injector.d.ts +24 -114
  79. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  80. package/dist/fingerprinting/fingerprint-injector.js +305 -611
  81. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  82. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +1 -1
  83. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -1
  84. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +16 -14
  85. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -1
  86. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +6 -2
  87. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
  88. package/dist/fingerprinting/fingerprint-overrides/index.js +6 -2
  89. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
  90. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +1 -1
  91. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +4 -4
  92. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -1
  93. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +4 -4
  94. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts +18 -0
  95. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts.map +1 -0
  96. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js +136 -0
  97. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js.map +1 -0
  98. package/dist/fingerprinting/fingerprint-overrides/override.d.ts +151 -0
  99. package/dist/fingerprinting/fingerprint-overrides/override.d.ts.map +1 -0
  100. package/dist/fingerprinting/fingerprint-overrides/override.js +14 -0
  101. package/dist/fingerprinting/fingerprint-overrides/override.js.map +1 -0
  102. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
  103. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +46 -15
  104. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
  105. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts +43 -0
  106. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts.map +1 -0
  107. package/dist/fingerprinting/fingerprint-overrides/registry.js +342 -0
  108. package/dist/fingerprinting/fingerprint-overrides/registry.js.map +1 -0
  109. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts +16 -0
  110. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts.map +1 -0
  111. package/dist/fingerprinting/fingerprint-overrides/screen-override.js +175 -0
  112. package/dist/fingerprinting/fingerprint-overrides/screen-override.js.map +1 -0
  113. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +1 -1
  114. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +4 -4
  115. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -1
  116. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
  117. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +75 -9
  118. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
  119. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +1 -1
  120. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -1
  121. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +34 -20
  122. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -1
  123. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
  124. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +25 -6
  125. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
  126. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +1 -1
  127. package/dist/fingerprinting/hardware-realism.d.ts +83 -0
  128. package/dist/fingerprinting/hardware-realism.d.ts.map +1 -0
  129. package/dist/fingerprinting/hardware-realism.js +156 -0
  130. package/dist/fingerprinting/hardware-realism.js.map +1 -0
  131. package/dist/fingerprinting/injection-planner.d.ts +133 -0
  132. package/dist/fingerprinting/injection-planner.d.ts.map +1 -0
  133. package/dist/fingerprinting/injection-planner.js +497 -0
  134. package/dist/fingerprinting/injection-planner.js.map +1 -0
  135. package/dist/fingerprinting/locale-resolver.d.ts +8 -1
  136. package/dist/fingerprinting/locale-resolver.d.ts.map +1 -1
  137. package/dist/fingerprinting/locale-resolver.js +26 -3
  138. package/dist/fingerprinting/locale-resolver.js.map +1 -1
  139. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts +4 -4
  140. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts.map +1 -1
  141. package/dist/fingerprinting/non-apify-fingerprint-generator.js +24 -58
  142. package/dist/fingerprinting/non-apify-fingerprint-generator.js.map +1 -1
  143. package/dist/fingerprinting/non-apify-profiles.json +10515 -8494
  144. package/dist/fingerprinting/os-consistency.d.ts +28 -0
  145. package/dist/fingerprinting/os-consistency.d.ts.map +1 -0
  146. package/dist/fingerprinting/os-consistency.js +45 -0
  147. package/dist/fingerprinting/os-consistency.js.map +1 -0
  148. package/dist/fingerprinting/profile-quality.d.ts +25 -0
  149. package/dist/fingerprinting/profile-quality.d.ts.map +1 -0
  150. package/dist/fingerprinting/profile-quality.js +310 -0
  151. package/dist/fingerprinting/profile-quality.js.map +1 -0
  152. package/dist/fingerprinting/profile-selector.d.ts +102 -0
  153. package/dist/fingerprinting/profile-selector.d.ts.map +1 -0
  154. package/dist/fingerprinting/profile-selector.js +168 -0
  155. package/dist/fingerprinting/profile-selector.js.map +1 -0
  156. package/dist/fingerprinting/ua-alignment.d.ts +83 -0
  157. package/dist/fingerprinting/ua-alignment.d.ts.map +1 -0
  158. package/dist/fingerprinting/ua-alignment.js +197 -0
  159. package/dist/fingerprinting/ua-alignment.js.map +1 -0
  160. package/dist/fingerprinting/ua-ch-brands.d.ts +88 -0
  161. package/dist/fingerprinting/ua-ch-brands.d.ts.map +1 -0
  162. package/dist/fingerprinting/ua-ch-brands.js +174 -0
  163. package/dist/fingerprinting/ua-ch-brands.js.map +1 -0
  164. package/dist/index.d.ts +5 -0
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +6 -0
  167. package/dist/index.js.map +1 -1
  168. package/dist/input/dropdown-selector.d.ts +90 -0
  169. package/dist/input/dropdown-selector.d.ts.map +1 -0
  170. package/dist/input/dropdown-selector.js +394 -0
  171. package/dist/input/dropdown-selector.js.map +1 -0
  172. package/dist/input/element-target.d.ts +152 -0
  173. package/dist/input/element-target.d.ts.map +1 -0
  174. package/dist/input/element-target.js +461 -0
  175. package/dist/input/element-target.js.map +1 -0
  176. package/dist/input/input-emulator.d.ts +85 -0
  177. package/dist/input/input-emulator.d.ts.map +1 -0
  178. package/dist/input/input-emulator.js +325 -0
  179. package/dist/input/input-emulator.js.map +1 -0
  180. package/dist/input/input-transport.d.ts +60 -0
  181. package/dist/input/input-transport.d.ts.map +1 -0
  182. package/dist/input/input-transport.js +28 -0
  183. package/dist/input/input-transport.js.map +1 -0
  184. package/dist/input/recording-transport.d.ts +32 -0
  185. package/dist/input/recording-transport.d.ts.map +1 -0
  186. package/dist/input/recording-transport.js +43 -0
  187. package/dist/input/recording-transport.js.map +1 -0
  188. package/dist/keyboard-layout.d.ts +2 -2
  189. package/dist/keyboard-layout.js +2 -2
  190. package/dist/navigation/page-navigation.d.ts +67 -0
  191. package/dist/navigation/page-navigation.d.ts.map +1 -0
  192. package/dist/navigation/page-navigation.js +122 -0
  193. package/dist/navigation/page-navigation.js.map +1 -0
  194. package/dist/network/network-watch.d.ts +110 -0
  195. package/dist/network/network-watch.d.ts.map +1 -0
  196. package/dist/network/network-watch.js +223 -0
  197. package/dist/network/network-watch.js.map +1 -0
  198. package/dist/page.d.ts +118 -104
  199. package/dist/page.d.ts.map +1 -1
  200. package/dist/page.js +311 -1130
  201. package/dist/page.js.map +1 -1
  202. package/dist/session/inject-hook.d.ts +24 -0
  203. package/dist/session/inject-hook.d.ts.map +1 -0
  204. package/dist/session/inject-hook.js +80 -0
  205. package/dist/session/inject-hook.js.map +1 -0
  206. package/dist/session/save.d.ts +21 -0
  207. package/dist/session/save.d.ts.map +1 -0
  208. package/dist/session/save.js +163 -0
  209. package/dist/session/save.js.map +1 -0
  210. package/dist/session/tar-data-dir.d.ts +18 -0
  211. package/dist/session/tar-data-dir.d.ts.map +1 -0
  212. package/dist/session/tar-data-dir.js +105 -0
  213. package/dist/session/tar-data-dir.js.map +1 -0
  214. package/dist/session/types.d.ts +80 -0
  215. package/dist/session/types.d.ts.map +1 -0
  216. package/dist/session/types.js +29 -0
  217. package/dist/session/types.js.map +1 -0
  218. package/dist/session-profile.d.ts +102 -0
  219. package/dist/session-profile.d.ts.map +1 -0
  220. package/dist/session-profile.js +163 -0
  221. package/dist/session-profile.js.map +1 -0
  222. package/dist/tsconfig.build.tsbuildinfo +1 -1
  223. package/package.json +17 -6
  224. package/scripts/postinstall.cjs +58 -0
  225. package/dist/fingerprinting/custom-fingerprint-injector.d.ts +0 -87
  226. package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +0 -1
  227. package/dist/fingerprinting/custom-fingerprint-injector.js +0 -342
  228. package/dist/fingerprinting/custom-fingerprint-injector.js.map +0 -1
  229. package/dist/launcher-wrap.d.ts +0 -10
  230. package/dist/launcher-wrap.d.ts.map +0 -1
  231. package/dist/launcher-wrap.js +0 -11
  232. package/dist/launcher-wrap.js.map +0 -1
package/dist/page.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import { EventEmitter } from 'events';
2
- import CDP from 'chrome-remote-interface';
2
+ import type CDP from 'chrome-remote-interface';
3
+ import { type PageSessionOptions } from './connection/page-session.js';
4
+ import { type SelectOptionOptions } from './input/dropdown-selector.js';
5
+ import { type GotoOptions } from './navigation/page-navigation.js';
6
+ import { type WatchedResponseWithBody } from './network/network-watch.js';
7
+ import type { LaunchSnapshot } from './session/types.js';
3
8
  export interface WaitForResponseOptions {
4
9
  urlPattern: string | RegExp;
5
10
  timeout?: number;
@@ -20,21 +25,31 @@ export interface Cookie {
20
25
  secure?: boolean;
21
26
  session?: boolean;
22
27
  sameSite?: 'Strict' | 'Lax' | 'None';
28
+ /**
29
+ * Additional CDP `Network.Cookie` / `Storage.setCookies` fields. These are
30
+ * captured by `Storage.getCookies` at save time and accepted by
31
+ * `Network.setCookie` on replay - the on-wire JSON has always carried
32
+ * them, but they were not declared in the type surface. Anti-bot vendors
33
+ * that compare cookie attributes byte-for-byte against a returning-user
34
+ * baseline (CHIPS / partitionKey, source scheme/port, priority) will flag
35
+ * a session that loses any of these on round-trip.
36
+ */
37
+ priority?: 'Low' | 'Medium' | 'High';
38
+ sameParty?: boolean;
39
+ sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';
40
+ sourcePort?: number;
41
+ /**
42
+ * CHIPS (Cookies Having Independent Partitioned State). String form is the
43
+ * legacy top-level site; the object form is the post-Chrome-118 typed key.
44
+ */
45
+ partitionKey?: string | {
46
+ topLevelSite: string;
47
+ hasCrossSiteAncestor: boolean;
48
+ };
49
+ partitionKeyOpaque?: boolean;
23
50
  }
24
- export interface GotoOptions {
25
- waitUntil?: "domcontentloaded" | "load";
26
- timeout?: number;
27
- }
28
- export interface SelectOptionOptions {
29
- /** Maximum wait time in milliseconds. Default: 30000 */
30
- timeout?: number;
31
- /** Bypass visibility and disabled checks. Default: false */
32
- force?: boolean;
33
- /** Wait for dropdown options to load after opening. Default: true */
34
- waitForOptions?: boolean;
35
- /** Maximum scroll attempts for virtualized dropdowns. Default: 10 */
36
- maxScrollAttempts?: number;
37
- }
51
+ export type { GotoOptions };
52
+ export type { SelectOptionOptions };
38
53
  export interface EvaluateResult {
39
54
  result: any;
40
55
  exceptionDetails?: {
@@ -56,25 +71,69 @@ export interface CdpScreenshotOptions {
56
71
  captureBeyondViewport?: boolean;
57
72
  }
58
73
  export default class CdpPage extends EventEmitter {
59
- _rawClient: CDP.Client;
60
- client: CDP.Client;
61
- private loadedUrl;
62
- isReconnecting: boolean;
63
- private enabledDomains;
64
- private connectionMonitor?;
65
- private isClosed;
74
+ /**
75
+ * Owns the live CDP session for this page: the current client, reconnect +
76
+ * heartbeat, the `isReconnecting` latch, and domain re-bind on swap. CDP
77
+ * methods route through `session.run(op)`; consumers read the current
78
+ * client through `session.client()`. See src/connection/page-session.ts.
79
+ */
80
+ private readonly session;
81
+ private _navigation?;
82
+ /**
83
+ * Navigation + load-wait protocol - navigate, race dom/load events vs
84
+ * timeout, reconcile URL via getNavigationHistory - lives in PageNavigation
85
+ * behind NavigationPort. The port closures read the current client through
86
+ * the session accessor, so a reconnect client swap is picked up. The
87
+ * `loadedUrl` cache lives inside the module, not on this object.
88
+ */
89
+ private get navigation();
90
+ /**
91
+ * Cached document root nodeId for {@link getNodeId}. Populated on first
92
+ * lookup and reused across clicks so we don't re-issue DOM.getDocument on
93
+ * every element resolution. Invalidated on main-frame navigation (the
94
+ * navigate/reload closures below) because a new document reassigns node
95
+ * IDs; getNodeId additionally self-heals with a fresh getDocument if a
96
+ * stale root slips through.
97
+ */
98
+ private _documentNodeId?;
99
+ private navigationPort;
100
+ private _networkWatch?;
101
+ /**
102
+ * Network interception protocol - match/timeout/cleanup races live in
103
+ * NetworkWatch behind NetworkWatchPort. The port closures read
104
+ * `this.client` at call time, so a reconnectSession() client swap is
105
+ * picked up automatically.
106
+ */
107
+ private get networkWatch();
66
108
  private humanization;
67
- private lastMousePosition;
109
+ private launchSnapshot;
110
+ /**
111
+ * Human-like input emulation (mouse, keyboard, IME) over a transport bound
112
+ * to the live CDP client - see src/input/input-emulator.ts. The lazy
113
+ * `() => this.client` accessor keeps the transport pointed at the current
114
+ * connection across session reconnects, which swap `this.client`.
115
+ */
116
+ private readonly input;
68
117
  /**
69
- * Set of currently-held mouse buttons. Resolved to the `MouseEvent.buttons`
70
- * bitmask (left=1, right=2, middle=4) on every `Input.dispatchMouseEvent`
71
- * so JS sees the spec-correct value during press / drag / release. Without
72
- * this, every press reads `event.buttons === 0` — a one-line bot signal.
118
+ * Element targeting (geometry, visibility, scroll, position stabilization)
119
+ * over the narrow ElementTargetPort - see src/input/element-target.ts.
120
+ * Decides WHERE/WHEN to interact; `input` decides HOW.
73
121
  */
74
- private heldMouseButtons;
75
- constructor(client: CDP.Client);
76
- private _attachConnectionMonitor;
77
- static create(client: CDP.Client): Promise<CdpPage>;
122
+ private readonly elements;
123
+ /**
124
+ * Select/dropdown protocol (native <select>, custom-dropdown trigger
125
+ * detection, idempotent open, virtualized-list scrolling) over the same
126
+ * port - see src/input/dropdown-selector.ts.
127
+ */
128
+ private readonly dropdowns;
129
+ constructor(client: CDP.Client, sessionOptions?: Partial<PageSessionOptions>);
130
+ /** The current CDP client. Reads through PageSession so a reconnect swap is picked up. */
131
+ get client(): CDP.Client;
132
+ /** The current raw CDP client (some consumers reach for `_ws` directly). */
133
+ get _rawClient(): CDP.Client;
134
+ /** True while the page session is mid-reconnect. */
135
+ get isReconnecting(): boolean;
136
+ static create(client: CDP.Client, sessionOptions?: Partial<PageSessionOptions>): Promise<CdpPage>;
78
137
  private initialize;
79
138
  /**
80
139
  * Lazily enable Page domain only when needed for script injection.
@@ -94,11 +153,6 @@ export default class CdpPage extends EventEmitter {
94
153
  scroll?: boolean;
95
154
  }): void;
96
155
  url(): Promise<string>;
97
- /**
98
- * Get current URL without activating the Runtime domain.
99
- * Uses Page.getNavigationHistory which only requires the Page domain.
100
- */
101
- private _getCurrentUrlWithoutRuntime;
102
156
  goto(url: string, options?: GotoOptions): Promise<void>;
103
157
  /**
104
158
  * Reloads the current page.
@@ -106,6 +160,7 @@ export default class CdpPage extends EventEmitter {
106
160
  */
107
161
  reload(options?: GotoOptions): Promise<void>;
108
162
  evaluate<T>(pageFunction: Function | string, ...args: any[]): Promise<T>;
163
+ private _evaluateInner;
109
164
  click(selector: string, options?: {
110
165
  timeout?: number;
111
166
  force?: boolean;
@@ -113,60 +168,18 @@ export default class CdpPage extends EventEmitter {
113
168
  button?: 'left' | 'right' | 'middle';
114
169
  clickCount?: number;
115
170
  }): Promise<void>;
116
- /**
117
- * Performs a human-like click with proper mouse events.
118
- * Note: screenX/screenY compensation is handled browser-side via fingerprint
119
- * overrides that set realistic window.screenX/screenY values, which Chrome
120
- * uses when constructing MouseEvent from CDP dispatch.
121
- */
122
- private _performClick;
123
- private _buttonsBitmask;
124
- private _moveMouseTo;
125
- /**
126
- * Gets detailed information about an element
127
- */
128
- private _getElementInfo;
129
- /**
130
- * Enhanced visibility check that considers more factors
131
- */
132
- private _isElementVisible;
133
- /**
134
- * Enhanced clickable check that considers more factors
135
- */
136
- private _isElementClickable;
137
- /**
138
- * Enhanced scroll into view with better positioning
139
- */
140
- private _scrollElementIntoView;
141
- /**
142
- * Waits for an element's position to stabilize by polling its position over time.
143
- * This is useful for waiting for scroll animations or dynamic layout changes to complete.
144
- *
145
- * @param selector - The CSS selector for the element to monitor
146
- * @param timeout - Maximum time to wait in milliseconds (default: 2000)
147
- * @param checkInterval - How often to check position in milliseconds (default: 100)
148
- * @param stabilityThreshold - Number of consecutive stable checks required (default: 3)
149
- * @param tolerance - Maximum pixel difference to consider "stable" (default: 1)
150
- */
151
- private _waitForElementPositionToStabilize;
152
171
  waitForElementPositionToStabilize(selector: string, timeout?: number, checkInterval?: number, stabilityThreshold?: number, tolerance?: number): Promise<void>;
153
- /**
154
- * Check if element is within the viewport (with some tolerance)
155
- */
156
- private _isElementInViewport;
157
172
  type(selector: string, text: string, options?: {
158
173
  delay?: number;
159
174
  }): Promise<void>;
160
175
  /**
161
- * Dispatch a single character as a realistic key sequence:
162
- * rawKeyDown (with code/key/keyCode/modifiers) → char (fires keypress + beforeinput + input)
163
- * → keyUp.
164
- *
165
- * Characters outside the US ANSI printable set fall back to `Input.insertText`,
166
- * which still produces beforeinput/input but no keyboard events (matches IME
167
- * behaviour for Unicode/emoji input).
176
+ * Focus an element in a single Runtime.evaluate round-trip. Mirrors the
177
+ * wait-then-act semantics the click path gets from `waitForSelector`
178
+ * (MutationObserver wait, same timeout, same timeout error for a missing
179
+ * element), but collapses the wait and the `element.focus()` call into
180
+ * one CDP round-trip.
168
181
  */
169
- private _typeChar;
182
+ private focusElement;
170
183
  /**
171
184
  * Deletes (clears) the value of an input field specified by selector.
172
185
  * @param selector - The CSS selector for the input element.
@@ -178,7 +191,7 @@ export default class CdpPage extends EventEmitter {
178
191
  waitForSelector(selector: string, options?: {
179
192
  timeout?: number;
180
193
  }): Promise<void>;
181
- waitForResponse(urlPart: string, statusCode?: number, timeout?: number): Promise<any>;
194
+ waitForResponse(urlPart: string, statusCode?: number, timeout?: number): Promise<WatchedResponseWithBody>;
182
195
  screenshot(options?: ScreenshotOptions): Promise<Buffer>;
183
196
  content(): Promise<string>;
184
197
  toCheerio(): Promise<cheerio.CheerioAPI>;
@@ -189,7 +202,16 @@ export default class CdpPage extends EventEmitter {
189
202
  scrollIntoView(selector: string): Promise<void>;
190
203
  setupFetchMetadataHeaders(): Promise<void>;
191
204
  blockRequests(urlPatterns: string[]): Promise<void>;
192
- private getNodeId;
205
+ /**
206
+ * Resolve a CSS selector to a CDP DOM nodeId. Retained as public page API
207
+ * for callers that need a node handle for direct CDP DOM work; the click
208
+ * hot-path no longer uses it (geometry now comes from in-page
209
+ * getBoundingClientRect - see ElementTarget.acquire). Reuses a cached
210
+ * document root and self-heals a stale root with a fresh getDocument.
211
+ */
212
+ getNodeId(selector: string): Promise<{
213
+ nodeId: number;
214
+ }>;
193
215
  setCookies(cookies: Cookie[]): Promise<void>;
194
216
  /**
195
217
  * Retrieves all cookies associated with the given URLs or all cookies for the current page if no URLs are provided.
@@ -203,6 +225,13 @@ export default class CdpPage extends EventEmitter {
203
225
  *
204
226
  */
205
227
  getCookies(urls?: string[]): Promise<Cookie[]>;
228
+ /**
229
+ * Records launch-time inputs (fingerprint config, resolved locale, user-data-dir, …)
230
+ * that `saveSession()` needs to assemble a SessionBundle. Called by the browser
231
+ * controller after fingerprint injection - not part of the user-facing API.
232
+ */
233
+ setLaunchSnapshot(snapshot: LaunchSnapshot): void;
234
+ getLaunchSnapshot(): LaunchSnapshot;
206
235
  /**
207
236
  * Evaluates a function across multiple elements matching the given selector.
208
237
  *
@@ -213,10 +242,12 @@ export default class CdpPage extends EventEmitter {
213
242
  */
214
243
  $$eval<T>(selector: string, pageFunction: (elements: HTMLElement[], ...args: any[]) => T, ...args: any[]): Promise<T>;
215
244
  /**
216
- * Enables a CDP domain only if it hasn't been enabled yet
245
+ * Enables a CDP domain only if it hasn't been enabled yet. Tracking lives
246
+ * in PageSession so a reconnect re-binds exactly the enabled domains.
217
247
  * @private
218
248
  */
219
249
  private _enableDomain;
250
+ /** Re-bind the page's CDP session after a transport drop. Delegates to PageSession. */
220
251
  reconnectSession(retries?: number): Promise<void>;
221
252
  /**
222
253
  * Selects one or more options from a select element or dropdown.
@@ -241,23 +272,6 @@ export default class CdpPage extends EventEmitter {
241
272
  * await page.selectOption('select#languages', ['option[value="en"]', 'option[value="es"]']);
242
273
  */
243
274
  selectOption(dropdownSelector: string, optionSelector: string | string[], options?: SelectOptionOptions): Promise<void>;
244
- /**
245
- * Handles selection for regular HTML select elements
246
- */
247
- private _handleRegularSelect;
248
- /**
249
- * Handles selection for custom dropdown elements.
250
- * Automatically detects and clicks triggers using multiple strategies:
251
- * - Common trigger patterns ([aria-haspopup], .dropdown-trigger, etc.)
252
- * - Previous sibling elements
253
- * - ID pattern matching (menu → trigger)
254
- */
255
- private _handleCustomDropdown;
256
- /**
257
- * Selects a single option from a dropdown container.
258
- * Handles virtualized lists with intelligent scrolling to find options that may not be initially visible.
259
- */
260
- private _selectOptionFromDropdown;
261
275
  /**
262
276
  * Checks if the element specified by selector is visible (not display:none and not visibility:hidden).
263
277
  * The selector should be the root item which can be hidden, otherwise this function could return a false positive.
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}