@bctrl/sdk 1.0.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.
Files changed (260) hide show
  1. package/README.md +75 -0
  2. package/dist/agents/browser-use/index.d.ts +1 -0
  3. package/dist/agents/browser-use/index.js +9 -0
  4. package/dist/agents/browser-use/namespace.d.ts +39 -0
  5. package/dist/agents/browser-use/namespace.js +93 -0
  6. package/dist/agents/index.d.ts +2 -0
  7. package/dist/agents/index.js +17 -0
  8. package/dist/agents/stagehand/core.d.ts +93 -0
  9. package/dist/agents/stagehand/core.js +144 -0
  10. package/dist/agents/stagehand/index.d.ts +3 -0
  11. package/dist/agents/stagehand/index.js +24 -0
  12. package/dist/agents/stagehand/namespace.d.ts +51 -0
  13. package/dist/agents/stagehand/namespace.js +65 -0
  14. package/dist/ai-credentials/client.d.ts +12 -0
  15. package/dist/ai-credentials/client.js +70 -0
  16. package/dist/ai-credentials/index.d.ts +1 -0
  17. package/dist/ai-credentials/index.js +1 -0
  18. package/dist/base/event-binding.d.ts +7 -0
  19. package/dist/base/event-binding.js +23 -0
  20. package/dist/base/types.d.ts +109 -0
  21. package/dist/base/types.js +4 -0
  22. package/dist/bctrl.d.ts +37 -0
  23. package/dist/bctrl.js +77 -0
  24. package/dist/browser-extensions/client.d.ts +15 -0
  25. package/dist/browser-extensions/client.js +72 -0
  26. package/dist/browser-extensions/index.d.ts +2 -0
  27. package/dist/browser-extensions/index.js +1 -0
  28. package/dist/browser-profiles/client.d.ts +11 -0
  29. package/dist/browser-profiles/client.js +63 -0
  30. package/dist/browser-profiles/index.d.ts +1 -0
  31. package/dist/browser-profiles/index.js +1 -0
  32. package/dist/captcha/index.d.ts +1 -0
  33. package/dist/captcha/index.js +1 -0
  34. package/dist/captcha/namespace.d.ts +34 -0
  35. package/dist/captcha/namespace.js +41 -0
  36. package/dist/client/index.d.ts +1 -0
  37. package/dist/client/index.js +1 -0
  38. package/dist/client/rpc.d.ts +83 -0
  39. package/dist/client/rpc.js +354 -0
  40. package/dist/config.d.ts +5 -0
  41. package/dist/config.js +28 -0
  42. package/dist/constants/browser.d.ts +2 -0
  43. package/dist/constants/browser.js +1 -0
  44. package/dist/contracts/agent-tools.d.ts +45 -0
  45. package/dist/contracts/agent-tools.js +31 -0
  46. package/dist/contracts/automation.d.ts +265 -0
  47. package/dist/contracts/automation.js +109 -0
  48. package/dist/contracts/browser-management.d.ts +179 -0
  49. package/dist/contracts/browser-management.js +95 -0
  50. package/dist/contracts/browser-use.d.ts +136 -0
  51. package/dist/contracts/browser-use.js +93 -0
  52. package/dist/contracts/captcha.d.ts +114 -0
  53. package/dist/contracts/captcha.js +40 -0
  54. package/dist/contracts/desktop.d.ts +223 -0
  55. package/dist/contracts/desktop.js +121 -0
  56. package/dist/contracts/drivers/playwright.d.ts +2008 -0
  57. package/dist/contracts/drivers/playwright.js +2033 -0
  58. package/dist/contracts/drivers/puppeteer.d.ts +1221 -0
  59. package/dist/contracts/drivers/puppeteer.js +941 -0
  60. package/dist/contracts/drivers/selenium.d.ts +156 -0
  61. package/dist/contracts/drivers/selenium.js +61 -0
  62. package/dist/contracts/drivers/stagehand.d.ts +155 -0
  63. package/dist/contracts/drivers/stagehand.js +7 -0
  64. package/dist/contracts/extensions.d.ts +13 -0
  65. package/dist/contracts/extensions.js +9 -0
  66. package/dist/contracts/index.d.ts +13 -0
  67. package/dist/contracts/index.js +13 -0
  68. package/dist/contracts/public-api.d.ts +360 -0
  69. package/dist/contracts/public-api.js +17 -0
  70. package/dist/contracts/runtime.d.ts +81 -0
  71. package/dist/contracts/runtime.js +16 -0
  72. package/dist/contracts/stagehand.d.ts +253 -0
  73. package/dist/contracts/stagehand.js +145 -0
  74. package/dist/contracts/storage.d.ts +51 -0
  75. package/dist/contracts/storage.js +56 -0
  76. package/dist/contracts/vault.d.ts +119 -0
  77. package/dist/contracts/vault.js +112 -0
  78. package/dist/contracts/version.d.ts +3 -0
  79. package/dist/contracts/version.js +16 -0
  80. package/dist/desktop.d.ts +2 -0
  81. package/dist/desktop.js +3 -0
  82. package/dist/drivers/desktop/index.d.ts +65 -0
  83. package/dist/drivers/desktop/index.js +68 -0
  84. package/dist/drivers/desktop/session.d.ts +313 -0
  85. package/dist/drivers/desktop/session.js +432 -0
  86. package/dist/drivers/playwright/event-emitter.d.ts +160 -0
  87. package/dist/drivers/playwright/event-emitter.js +297 -0
  88. package/dist/drivers/playwright/generated/api-request-context.d.ts +137 -0
  89. package/dist/drivers/playwright/generated/api-request-context.js +154 -0
  90. package/dist/drivers/playwright/generated/api-response.d.ts +119 -0
  91. package/dist/drivers/playwright/generated/api-response.js +123 -0
  92. package/dist/drivers/playwright/generated/browser-context.d.ts +284 -0
  93. package/dist/drivers/playwright/generated/browser-context.js +458 -0
  94. package/dist/drivers/playwright/generated/browser.d.ts +120 -0
  95. package/dist/drivers/playwright/generated/browser.js +151 -0
  96. package/dist/drivers/playwright/generated/clock.d.ts +80 -0
  97. package/dist/drivers/playwright/generated/clock.js +94 -0
  98. package/dist/drivers/playwright/generated/console-message.d.ts +94 -0
  99. package/dist/drivers/playwright/generated/console-message.js +89 -0
  100. package/dist/drivers/playwright/generated/coverage.d.ts +57 -0
  101. package/dist/drivers/playwright/generated/coverage.js +66 -0
  102. package/dist/drivers/playwright/generated/dialog.d.ts +79 -0
  103. package/dist/drivers/playwright/generated/dialog.js +80 -0
  104. package/dist/drivers/playwright/generated/element-handle.d.ts +399 -0
  105. package/dist/drivers/playwright/generated/element-handle.js +501 -0
  106. package/dist/drivers/playwright/generated/frame-locator.d.ts +34 -0
  107. package/dist/drivers/playwright/generated/frame-locator.js +63 -0
  108. package/dist/drivers/playwright/generated/frame.d.ts +557 -0
  109. package/dist/drivers/playwright/generated/frame.js +634 -0
  110. package/dist/drivers/playwright/generated/js-handle.d.ts +72 -0
  111. package/dist/drivers/playwright/generated/js-handle.js +92 -0
  112. package/dist/drivers/playwright/generated/keyboard.d.ts +103 -0
  113. package/dist/drivers/playwright/generated/keyboard.js +113 -0
  114. package/dist/drivers/playwright/generated/locator.d.ts +795 -0
  115. package/dist/drivers/playwright/generated/locator.js +974 -0
  116. package/dist/drivers/playwright/generated/mouse.d.ts +97 -0
  117. package/dist/drivers/playwright/generated/mouse.js +109 -0
  118. package/dist/drivers/playwright/generated/page.d.ts +762 -0
  119. package/dist/drivers/playwright/generated/page.js +988 -0
  120. package/dist/drivers/playwright/generated/touchscreen.d.ts +34 -0
  121. package/dist/drivers/playwright/generated/touchscreen.js +37 -0
  122. package/dist/drivers/playwright/generated/tracing.d.ts +78 -0
  123. package/dist/drivers/playwright/generated/tracing.js +80 -0
  124. package/dist/drivers/playwright/generated/worker.d.ts +53 -0
  125. package/dist/drivers/playwright/generated/worker.js +59 -0
  126. package/dist/drivers/playwright/index.d.ts +19 -0
  127. package/dist/drivers/playwright/index.js +20 -0
  128. package/dist/drivers/playwright/remote-base.d.ts +62 -0
  129. package/dist/drivers/playwright/remote-base.js +86 -0
  130. package/dist/drivers/playwright/types.d.ts +148 -0
  131. package/dist/drivers/playwright/types.js +8 -0
  132. package/dist/drivers/puppeteer/errors.d.ts +50 -0
  133. package/dist/drivers/puppeteer/errors.js +71 -0
  134. package/dist/drivers/puppeteer/event-emitter.d.ts +145 -0
  135. package/dist/drivers/puppeteer/event-emitter.js +259 -0
  136. package/dist/drivers/puppeteer/generated/accessibility.d.ts +77 -0
  137. package/dist/drivers/puppeteer/generated/accessibility.js +74 -0
  138. package/dist/drivers/puppeteer/generated/browser-context.d.ts +116 -0
  139. package/dist/drivers/puppeteer/generated/browser-context.js +168 -0
  140. package/dist/drivers/puppeteer/generated/browser.d.ts +169 -0
  141. package/dist/drivers/puppeteer/generated/browser.js +246 -0
  142. package/dist/drivers/puppeteer/generated/console-message.d.ts +54 -0
  143. package/dist/drivers/puppeteer/generated/console-message.js +69 -0
  144. package/dist/drivers/puppeteer/generated/coverage.d.ts +49 -0
  145. package/dist/drivers/puppeteer/generated/coverage.js +57 -0
  146. package/dist/drivers/puppeteer/generated/dialog.d.ts +46 -0
  147. package/dist/drivers/puppeteer/generated/dialog.js +60 -0
  148. package/dist/drivers/puppeteer/generated/element-handle.d.ts +261 -0
  149. package/dist/drivers/puppeteer/generated/element-handle.js +341 -0
  150. package/dist/drivers/puppeteer/generated/file-chooser.d.ts +34 -0
  151. package/dist/drivers/puppeteer/generated/file-chooser.js +43 -0
  152. package/dist/drivers/puppeteer/generated/frame.d.ts +221 -0
  153. package/dist/drivers/puppeteer/generated/frame.js +302 -0
  154. package/dist/drivers/puppeteer/generated/http-request.d.ts +195 -0
  155. package/dist/drivers/puppeteer/generated/http-request.js +243 -0
  156. package/dist/drivers/puppeteer/generated/http-response.d.ts +142 -0
  157. package/dist/drivers/puppeteer/generated/http-response.js +169 -0
  158. package/dist/drivers/puppeteer/generated/js-handle.d.ts +104 -0
  159. package/dist/drivers/puppeteer/generated/js-handle.js +125 -0
  160. package/dist/drivers/puppeteer/generated/keyboard.d.ts +79 -0
  161. package/dist/drivers/puppeteer/generated/keyboard.js +89 -0
  162. package/dist/drivers/puppeteer/generated/locator.d.ts +141 -0
  163. package/dist/drivers/puppeteer/generated/locator.js +164 -0
  164. package/dist/drivers/puppeteer/generated/mouse.d.ts +74 -0
  165. package/dist/drivers/puppeteer/generated/mouse.js +94 -0
  166. package/dist/drivers/puppeteer/generated/page.d.ts +604 -0
  167. package/dist/drivers/puppeteer/generated/page.js +776 -0
  168. package/dist/drivers/puppeteer/generated/target.d.ts +105 -0
  169. package/dist/drivers/puppeteer/generated/target.js +123 -0
  170. package/dist/drivers/puppeteer/generated/touchscreen.d.ts +87 -0
  171. package/dist/drivers/puppeteer/generated/touchscreen.js +103 -0
  172. package/dist/drivers/puppeteer/generated/tracing.d.ts +38 -0
  173. package/dist/drivers/puppeteer/generated/tracing.js +43 -0
  174. package/dist/drivers/puppeteer/generated/web-worker.d.ts +63 -0
  175. package/dist/drivers/puppeteer/generated/web-worker.js +73 -0
  176. package/dist/drivers/puppeteer/index.d.ts +21 -0
  177. package/dist/drivers/puppeteer/index.js +23 -0
  178. package/dist/drivers/puppeteer/remote-base.d.ts +57 -0
  179. package/dist/drivers/puppeteer/remote-base.js +79 -0
  180. package/dist/drivers/puppeteer/types.d.ts +178 -0
  181. package/dist/drivers/puppeteer/types.js +8 -0
  182. package/dist/drivers/selenium/driver.d.ts +28 -0
  183. package/dist/drivers/selenium/driver.js +169 -0
  184. package/dist/drivers/selenium/element.d.ts +34 -0
  185. package/dist/drivers/selenium/element.js +73 -0
  186. package/dist/drivers/selenium/index.d.ts +3 -0
  187. package/dist/drivers/selenium/index.js +5 -0
  188. package/dist/drivers/selenium/types.d.ts +2 -0
  189. package/dist/drivers/selenium/types.js +12 -0
  190. package/dist/drivers/stagehand/generated/context.d.ts +127 -0
  191. package/dist/drivers/stagehand/generated/context.js +153 -0
  192. package/dist/drivers/stagehand/generated/locator.d.ts +324 -0
  193. package/dist/drivers/stagehand/generated/locator.js +368 -0
  194. package/dist/drivers/stagehand/generated/page.d.ts +377 -0
  195. package/dist/drivers/stagehand/generated/page.js +439 -0
  196. package/dist/drivers/stagehand/generated/response.d.ts +197 -0
  197. package/dist/drivers/stagehand/generated/response.js +232 -0
  198. package/dist/drivers/stagehand/index.d.ts +5 -0
  199. package/dist/drivers/stagehand/index.js +8 -0
  200. package/dist/drivers/stagehand/types.d.ts +1 -0
  201. package/dist/drivers/stagehand/types.js +7 -0
  202. package/dist/errors.d.ts +47 -0
  203. package/dist/errors.js +157 -0
  204. package/dist/extensions/client.d.ts +47 -0
  205. package/dist/extensions/client.js +154 -0
  206. package/dist/extensions/index.d.ts +1 -0
  207. package/dist/extensions/index.js +1 -0
  208. package/dist/index.d.ts +12 -0
  209. package/dist/index.js +23 -0
  210. package/dist/internal/dev-client.d.ts +5 -0
  211. package/dist/internal/dev-client.js +9 -0
  212. package/dist/internal/rpc-targets.d.ts +17 -0
  213. package/dist/internal/rpc-targets.js +58 -0
  214. package/dist/internal/serialization.d.ts +32 -0
  215. package/dist/internal/serialization.js +42 -0
  216. package/dist/internal/transport.d.ts +24 -0
  217. package/dist/internal/transport.js +29 -0
  218. package/dist/playwright.d.ts +1 -0
  219. package/dist/playwright.js +2 -0
  220. package/dist/puppeteer.d.ts +1 -0
  221. package/dist/puppeteer.js +2 -0
  222. package/dist/selenium.d.ts +1 -0
  223. package/dist/selenium.js +2 -0
  224. package/dist/stagehand.d.ts +1 -0
  225. package/dist/stagehand.js +2 -0
  226. package/dist/storage/client.d.ts +151 -0
  227. package/dist/storage/client.js +329 -0
  228. package/dist/storage/index.d.ts +2 -0
  229. package/dist/storage/index.js +4 -0
  230. package/dist/telemetry.d.ts +18 -0
  231. package/dist/telemetry.js +93 -0
  232. package/dist/updates/client.d.ts +8 -0
  233. package/dist/updates/client.js +128 -0
  234. package/dist/updates/index.d.ts +1 -0
  235. package/dist/updates/index.js +1 -0
  236. package/dist/utils/http.d.ts +39 -0
  237. package/dist/utils/http.js +88 -0
  238. package/dist/utils/index.d.ts +4 -0
  239. package/dist/utils/index.js +4 -0
  240. package/dist/utils/logger.d.ts +27 -0
  241. package/dist/utils/logger.js +74 -0
  242. package/dist/utils/schema.d.ts +17 -0
  243. package/dist/utils/schema.js +31 -0
  244. package/dist/utils/url.d.ts +5 -0
  245. package/dist/utils/url.js +7 -0
  246. package/dist/vault/client.d.ts +43 -0
  247. package/dist/vault/client.js +123 -0
  248. package/dist/vault/index.d.ts +1 -0
  249. package/dist/vault/index.js +1 -0
  250. package/dist/version.d.ts +1 -0
  251. package/dist/version.js +4 -0
  252. package/dist/workspaces/browser-runtime.d.ts +251 -0
  253. package/dist/workspaces/browser-runtime.js +1025 -0
  254. package/dist/workspaces/client.d.ts +48 -0
  255. package/dist/workspaces/client.js +222 -0
  256. package/dist/workspaces/index.d.ts +2 -0
  257. package/dist/workspaces/index.js +2 -0
  258. package/dist/workspaces/runtime-event-pump.d.ts +65 -0
  259. package/dist/workspaces/runtime-event-pump.js +716 -0
  260. package/package.json +56 -0
@@ -0,0 +1,297 @@
1
+ // ============================================================================
2
+ // PlaywrightEventEmitter - EventEmitter base class for Playwright SDK
3
+ // ============================================================================
4
+ //
5
+ // This class provides an EventEmitter implementation that matches the real
6
+ // Playwright EventEmitter API 1:1. It supports local event handling on the SDK
7
+ // side and can be extended by Page, Browser, and other classes.
8
+ //
9
+ // @see https://playwright.dev/docs/api/class-page#events
10
+ // ============================================================================
11
+ import { getRemoteListenerBinding } from '../../base/event-binding.js';
12
+ /**
13
+ * The EventEmitter class that many Playwright classes extend.
14
+ *
15
+ * This provides a familiar event-driven interface for handling browser events
16
+ * like page load, console messages, dialogs, network requests, etc.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * page.on('console', msg => {
21
+ * console.log('Page logged:', msg.text());
22
+ * });
23
+ *
24
+ * page.once('load', () => {
25
+ * console.log('Page loaded!');
26
+ * });
27
+ * ```
28
+ *
29
+ * @see https://playwright.dev/docs/api/class-page#events
30
+ */
31
+ export class PlaywrightEventEmitter {
32
+ /**
33
+ * Map of event types to their listeners.
34
+ * @internal
35
+ */
36
+ _listeners = new Map();
37
+ notifyFirstListener(event) {
38
+ const binding = getRemoteListenerBinding(this);
39
+ if (!binding)
40
+ return;
41
+ binding.onFirstListener(String(event));
42
+ }
43
+ notifyNoListeners(event) {
44
+ const binding = getRemoteListenerBinding(this);
45
+ if (!binding)
46
+ return;
47
+ binding.onNoListeners(String(event));
48
+ }
49
+ /**
50
+ * Bind an event listener to fire when an event occurs.
51
+ *
52
+ * @param event - The event type to listen for.
53
+ * @param handler - The function to call when the event occurs.
54
+ * @returns `this` to allow for method chaining.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * page.on('request', request => {
59
+ * console.log('Request:', request.url());
60
+ * });
61
+ * ```
62
+ *
63
+ * @see https://playwright.dev/docs/api/class-page#page-event-request
64
+ */
65
+ on(event, handler) {
66
+ const listeners = this._listeners.get(event) ?? [];
67
+ const hadListeners = listeners.length > 0;
68
+ listeners.push({ handler: handler, once: false });
69
+ this._listeners.set(event, listeners);
70
+ if (!hadListeners) {
71
+ this.notifyFirstListener(event);
72
+ }
73
+ return this;
74
+ }
75
+ /**
76
+ * Remove an event listener.
77
+ *
78
+ * If `handler` is provided, only that specific listener is removed.
79
+ * If `handler` is not provided, all listeners for that event type are removed.
80
+ *
81
+ * @param event - The event type.
82
+ * @param handler - Optional specific handler to remove.
83
+ * @returns `this` to allow for method chaining.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const handler = msg => console.log(msg);
88
+ * page.on('console', handler);
89
+ * // Later...
90
+ * page.off('console', handler);
91
+ * ```
92
+ *
93
+ * @see https://playwright.dev/docs/api/class-page#page-remove-listener
94
+ */
95
+ off(event, handler) {
96
+ if (!handler) {
97
+ // Remove all listeners for this type
98
+ const hadListeners = (this._listeners.get(event)?.length ?? 0) > 0;
99
+ this._listeners.delete(event);
100
+ if (hadListeners) {
101
+ this.notifyNoListeners(event);
102
+ }
103
+ return this;
104
+ }
105
+ const listeners = this._listeners.get(event);
106
+ if (!listeners) {
107
+ return this;
108
+ }
109
+ const filtered = listeners.filter((entry) => entry.handler !== handler);
110
+ if (filtered.length === 0) {
111
+ this._listeners.delete(event);
112
+ if (listeners.length > 0) {
113
+ this.notifyNoListeners(event);
114
+ }
115
+ }
116
+ else {
117
+ this._listeners.set(event, filtered);
118
+ }
119
+ return this;
120
+ }
121
+ /**
122
+ * Alias for off() - removes an event listener.
123
+ *
124
+ * @see https://playwright.dev/docs/api/class-page#page-remove-listener
125
+ */
126
+ removeListener(event, handler) {
127
+ return this.off(event, handler);
128
+ }
129
+ /**
130
+ * Bind an event listener that will fire only once.
131
+ *
132
+ * After the handler is called once, it is automatically removed.
133
+ *
134
+ * @param event - The event type to listen for.
135
+ * @param handler - The function to call when the event occurs.
136
+ * @returns `this` to allow for method chaining.
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * page.once('load', () => {
141
+ * console.log('Page loaded for the first time!');
142
+ * });
143
+ * ```
144
+ *
145
+ * @see https://playwright.dev/docs/api/class-page#page-wait-for-event
146
+ */
147
+ once(event, handler) {
148
+ const listeners = this._listeners.get(event) ?? [];
149
+ const hadListeners = listeners.length > 0;
150
+ listeners.push({ handler: handler, once: true });
151
+ this._listeners.set(event, listeners);
152
+ if (!hadListeners) {
153
+ this.notifyFirstListener(event);
154
+ }
155
+ return this;
156
+ }
157
+ /**
158
+ * Alias for on() - adds an event listener.
159
+ *
160
+ * @see https://playwright.dev/docs/api/class-page#page-event-console
161
+ */
162
+ addListener(event, handler) {
163
+ return this.on(event, handler);
164
+ }
165
+ /**
166
+ * Emit an event, calling all registered handlers.
167
+ *
168
+ * This method is typically used internally by Playwright classes to dispatch
169
+ * events. Users rarely need to call this directly.
170
+ *
171
+ * @param event - The event type to emit.
172
+ * @param data - The event data to pass to handlers.
173
+ * @returns `true` if there were listeners for this event, `false` otherwise.
174
+ */
175
+ emit(event, data) {
176
+ const listeners = this._listeners.get(event);
177
+ if (!listeners || listeners.length === 0) {
178
+ return false;
179
+ }
180
+ // Create a copy to avoid issues if handlers modify the listener list
181
+ const listenersCopy = [...listeners];
182
+ const toRemove = [];
183
+ for (const entry of listenersCopy) {
184
+ try {
185
+ entry.handler(data);
186
+ }
187
+ catch (error) {
188
+ // Log but don't throw to allow other handlers to run
189
+ console.error(`Error in event handler for "${String(event)}":`, error);
190
+ }
191
+ if (entry.once) {
192
+ toRemove.push(entry);
193
+ }
194
+ }
195
+ // Remove once listeners
196
+ if (toRemove.length > 0) {
197
+ const remaining = listeners.filter((entry) => !toRemove.includes(entry));
198
+ if (remaining.length === 0) {
199
+ this._listeners.delete(event);
200
+ if (listeners.length > 0) {
201
+ this.notifyNoListeners(event);
202
+ }
203
+ }
204
+ else {
205
+ this._listeners.set(event, remaining);
206
+ }
207
+ }
208
+ return true;
209
+ }
210
+ /**
211
+ * Get the count of listeners for a specific event type.
212
+ *
213
+ * @param event - The event type.
214
+ * @returns The number of registered listeners.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const count = page.listenerCount('request');
219
+ * console.log(`There are ${count} request listeners`);
220
+ * ```
221
+ */
222
+ listenerCount(event) {
223
+ const listeners = this._listeners.get(event);
224
+ return listeners?.length ?? 0;
225
+ }
226
+ /**
227
+ * Remove all listeners.
228
+ *
229
+ * If `event` is provided, only listeners for that event type are removed.
230
+ * If `event` is not provided, all listeners for all event types are removed.
231
+ *
232
+ * @param event - Optional event type to remove listeners for.
233
+ * @returns `this` to allow for method chaining.
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * // Remove all 'request' listeners
238
+ * page.removeAllListeners('request');
239
+ *
240
+ * // Remove ALL listeners
241
+ * page.removeAllListeners();
242
+ * ```
243
+ */
244
+ removeAllListeners(event) {
245
+ if (event === undefined) {
246
+ const existingEvents = Array.from(this._listeners.entries())
247
+ .filter(([, listeners]) => listeners.length > 0)
248
+ .map(([eventName]) => eventName);
249
+ this._listeners.clear();
250
+ for (const eventName of existingEvents) {
251
+ this.notifyNoListeners(eventName);
252
+ }
253
+ }
254
+ else {
255
+ const hadListeners = (this._listeners.get(event)?.length ?? 0) > 0;
256
+ this._listeners.delete(event);
257
+ if (hadListeners) {
258
+ this.notifyNoListeners(event);
259
+ }
260
+ }
261
+ return this;
262
+ }
263
+ /**
264
+ * PrependListener - adds a listener that will be called before other listeners.
265
+ *
266
+ * @param event - The event type to listen for.
267
+ * @param handler - The function to call when the event occurs.
268
+ * @returns `this` to allow for method chaining.
269
+ */
270
+ prependListener(event, handler) {
271
+ const listeners = this._listeners.get(event) ?? [];
272
+ const hadListeners = listeners.length > 0;
273
+ listeners.unshift({ handler: handler, once: false });
274
+ this._listeners.set(event, listeners);
275
+ if (!hadListeners) {
276
+ this.notifyFirstListener(event);
277
+ }
278
+ return this;
279
+ }
280
+ /**
281
+ * PrependOnceListener - adds a once listener that will be called before other listeners.
282
+ *
283
+ * @param event - The event type to listen for.
284
+ * @param handler - The function to call when the event occurs.
285
+ * @returns `this` to allow for method chaining.
286
+ */
287
+ prependOnceListener(event, handler) {
288
+ const listeners = this._listeners.get(event) ?? [];
289
+ const hadListeners = listeners.length > 0;
290
+ listeners.unshift({ handler: handler, once: true });
291
+ this._listeners.set(event, listeners);
292
+ if (!hadListeners) {
293
+ this.notifyFirstListener(event);
294
+ }
295
+ return this;
296
+ }
297
+ }
@@ -0,0 +1,137 @@
1
+ /**
2
+ * AUTO-GENERATED FILE - DO NOT EDIT
3
+ *
4
+ * Generated from: packages/automation-spec/src/drivers/playwright/methods/
5
+ * Run `pnpm generate:playwright` to regenerate.
6
+ */
7
+ import type { SimpleRpcSender } from '../../../internal/transport.js';
8
+ import { RemoteComponentBase } from '../remote-base.js';
9
+ import type { PlaywrightAPIRequestOptions, PlaywrightAPIResponse, PlaywrightStorageState, PlaywrightStorageStateOptions } from '../types.js';
10
+ /**
11
+ * RemotePlaywrightAPIRequestContext - Remote Playwright APIRequestContext API over RPC.
12
+ *
13
+ * @see https://playwright.dev/docs/api/class-apirequestcontext
14
+ */
15
+ export declare class RemotePlaywrightAPIRequestContext extends RemoteComponentBase {
16
+ constructor(sendRpc: SimpleRpcSender);
17
+ /**
18
+ * Sends HTTP(S) GET request and returns its response.
19
+ * @param url - Target URL.
20
+ * @param options - Request options.
21
+ *
22
+ * @remarks
23
+ * Sends an HTTP(S) GET request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
24
+ *
25
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get
26
+ */
27
+ get(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
28
+ /**
29
+ * Sends HTTP(S) POST request and returns its response.
30
+ * @param url - Target URL.
31
+ * @param options - Request options.
32
+ *
33
+ * @remarks
34
+ * Sends an HTTP(S) POST request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
35
+ *
36
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-post
37
+ */
38
+ post(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
39
+ /**
40
+ * Sends HTTP(S) PUT request and returns its response.
41
+ * @param url - Target URL.
42
+ * @param options - Request options.
43
+ *
44
+ * @remarks
45
+ * Sends an HTTP(S) PUT request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
46
+ *
47
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-put
48
+ */
49
+ put(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
50
+ /**
51
+ * Sends HTTP(S) DELETE request and returns its response.
52
+ * @param url - Target URL.
53
+ * @param options - Request options.
54
+ *
55
+ * @remarks
56
+ * Sends an HTTP(S) DELETE request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
57
+ *
58
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-delete
59
+ */
60
+ delete(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
61
+ /**
62
+ * Sends HTTP(S) PATCH request and returns its response.
63
+ * @param url - Target URL.
64
+ * @param options - Request options.
65
+ *
66
+ * @remarks
67
+ * Sends an HTTP(S) PATCH request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
68
+ *
69
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-patch
70
+ */
71
+ patch(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
72
+ /**
73
+ * Sends HTTP(S) HEAD request and returns its response.
74
+ * @param url - Target URL.
75
+ * @param options - Request options.
76
+ *
77
+ * @remarks
78
+ * Sends an HTTP(S) HEAD request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
79
+ *
80
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-head
81
+ */
82
+ head(url: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
83
+ /**
84
+ * Sends HTTP(S) request and returns its response.
85
+ * @param urlOrRequest - Target URL or Request to get all parameters from.
86
+ * @param options - Request options.
87
+ *
88
+ * @remarks
89
+ * This method can be used to send requests with any HTTP method. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * // Send a GET request
94
+ * const response = await request.fetch('https://example.com/api/users');
95
+ *
96
+ * // Send a POST request with JSON body
97
+ * const response = await request.fetch('https://example.com/api/users', {
98
+ * method: 'post',
99
+ * data: { name: 'John Doe', email: 'john@example.com' }
100
+ * });
101
+ * ```
102
+ *
103
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch
104
+ */
105
+ fetch(urlOrRequest: string, options?: PlaywrightAPIRequestOptions): Promise<PlaywrightAPIResponse>;
106
+ /**
107
+ * All responses returned by this context will be disposed of and no longer accessible.
108
+ * @param options - Options for disposal.
109
+ *
110
+ * @remarks
111
+ * The method will await for the disposal of the context. Calling dispose() is optional but recommended to release resources.
112
+ *
113
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-dispose
114
+ */
115
+ dispose(options?: {
116
+ reason?: string;
117
+ }): Promise<void>;
118
+ /**
119
+ * Returns storage state for this request context.
120
+ * @param options - Options for saving storage state.
121
+ *
122
+ * @remarks
123
+ * Returns cookies and local storage snapshot. Can be used to save and later restore the storage state with `browser.newContext()` or `request.newContext()`.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * // Get storage state
128
+ * const state = await request.storageState();
129
+ *
130
+ * // Save storage state to file
131
+ * const state = await request.storageState({ path: 'state.json' });
132
+ * ```
133
+ *
134
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-storage-state
135
+ */
136
+ storageState(options?: PlaywrightStorageStateOptions): Promise<PlaywrightStorageState>;
137
+ }
@@ -0,0 +1,154 @@
1
+ /**
2
+ * AUTO-GENERATED FILE - DO NOT EDIT
3
+ *
4
+ * Generated from: packages/automation-spec/src/drivers/playwright/methods/
5
+ * Run `pnpm generate:playwright` to regenerate.
6
+ */
7
+ import { RemoteComponentBase } from '../remote-base.js';
8
+ /**
9
+ * RemotePlaywrightAPIRequestContext - Remote Playwright APIRequestContext API over RPC.
10
+ *
11
+ * @see https://playwright.dev/docs/api/class-apirequestcontext
12
+ */
13
+ export class RemotePlaywrightAPIRequestContext extends RemoteComponentBase {
14
+ constructor(sendRpc) {
15
+ super(sendRpc);
16
+ }
17
+ /**
18
+ * Sends HTTP(S) GET request and returns its response.
19
+ * @param url - Target URL.
20
+ * @param options - Request options.
21
+ *
22
+ * @remarks
23
+ * Sends an HTTP(S) GET request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
24
+ *
25
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get
26
+ */
27
+ async get(url, options) {
28
+ return this.rpc('apiRequest.get', [url, options]);
29
+ }
30
+ /**
31
+ * Sends HTTP(S) POST request and returns its response.
32
+ * @param url - Target URL.
33
+ * @param options - Request options.
34
+ *
35
+ * @remarks
36
+ * Sends an HTTP(S) POST request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
37
+ *
38
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-post
39
+ */
40
+ async post(url, options) {
41
+ return this.rpc('apiRequest.post', [url, options]);
42
+ }
43
+ /**
44
+ * Sends HTTP(S) PUT request and returns its response.
45
+ * @param url - Target URL.
46
+ * @param options - Request options.
47
+ *
48
+ * @remarks
49
+ * Sends an HTTP(S) PUT request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
50
+ *
51
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-put
52
+ */
53
+ async put(url, options) {
54
+ return this.rpc('apiRequest.put', [url, options]);
55
+ }
56
+ /**
57
+ * Sends HTTP(S) DELETE request and returns its response.
58
+ * @param url - Target URL.
59
+ * @param options - Request options.
60
+ *
61
+ * @remarks
62
+ * Sends an HTTP(S) DELETE request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
63
+ *
64
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-delete
65
+ */
66
+ async delete(url, options) {
67
+ return this.rpc('apiRequest.delete', [url, options]);
68
+ }
69
+ /**
70
+ * Sends HTTP(S) PATCH request and returns its response.
71
+ * @param url - Target URL.
72
+ * @param options - Request options.
73
+ *
74
+ * @remarks
75
+ * Sends an HTTP(S) PATCH request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
76
+ *
77
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-patch
78
+ */
79
+ async patch(url, options) {
80
+ return this.rpc('apiRequest.patch', [url, options]);
81
+ }
82
+ /**
83
+ * Sends HTTP(S) HEAD request and returns its response.
84
+ * @param url - Target URL.
85
+ * @param options - Request options.
86
+ *
87
+ * @remarks
88
+ * Sends an HTTP(S) HEAD request and returns its response. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
89
+ *
90
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-head
91
+ */
92
+ async head(url, options) {
93
+ return this.rpc('apiRequest.head', [url, options]);
94
+ }
95
+ /**
96
+ * Sends HTTP(S) request and returns its response.
97
+ * @param urlOrRequest - Target URL or Request to get all parameters from.
98
+ * @param options - Request options.
99
+ *
100
+ * @remarks
101
+ * This method can be used to send requests with any HTTP method. The method will populate request cookies from the context and update context cookies from the response. The method will automatically follow redirects.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * // Send a GET request
106
+ * const response = await request.fetch('https://example.com/api/users');
107
+ *
108
+ * // Send a POST request with JSON body
109
+ * const response = await request.fetch('https://example.com/api/users', {
110
+ * method: 'post',
111
+ * data: { name: 'John Doe', email: 'john@example.com' }
112
+ * });
113
+ * ```
114
+ *
115
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch
116
+ */
117
+ async fetch(urlOrRequest, options) {
118
+ return this.rpc('apiRequest.fetch', [urlOrRequest, options]);
119
+ }
120
+ /**
121
+ * All responses returned by this context will be disposed of and no longer accessible.
122
+ * @param options - Options for disposal.
123
+ *
124
+ * @remarks
125
+ * The method will await for the disposal of the context. Calling dispose() is optional but recommended to release resources.
126
+ *
127
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-dispose
128
+ */
129
+ async dispose(options) {
130
+ await this.rpc('apiRequest.dispose', [options]);
131
+ this.markClosed();
132
+ }
133
+ /**
134
+ * Returns storage state for this request context.
135
+ * @param options - Options for saving storage state.
136
+ *
137
+ * @remarks
138
+ * Returns cookies and local storage snapshot. Can be used to save and later restore the storage state with `browser.newContext()` or `request.newContext()`.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * // Get storage state
143
+ * const state = await request.storageState();
144
+ *
145
+ * // Save storage state to file
146
+ * const state = await request.storageState({ path: 'state.json' });
147
+ * ```
148
+ *
149
+ * @see https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-storage-state
150
+ */
151
+ async storageState(options) {
152
+ return this.rpc('apiRequest.storageState', [options]);
153
+ }
154
+ }