@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.
- package/README.md +75 -0
- package/dist/agents/browser-use/index.d.ts +1 -0
- package/dist/agents/browser-use/index.js +9 -0
- package/dist/agents/browser-use/namespace.d.ts +39 -0
- package/dist/agents/browser-use/namespace.js +93 -0
- package/dist/agents/index.d.ts +2 -0
- package/dist/agents/index.js +17 -0
- package/dist/agents/stagehand/core.d.ts +93 -0
- package/dist/agents/stagehand/core.js +144 -0
- package/dist/agents/stagehand/index.d.ts +3 -0
- package/dist/agents/stagehand/index.js +24 -0
- package/dist/agents/stagehand/namespace.d.ts +51 -0
- package/dist/agents/stagehand/namespace.js +65 -0
- package/dist/ai-credentials/client.d.ts +12 -0
- package/dist/ai-credentials/client.js +70 -0
- package/dist/ai-credentials/index.d.ts +1 -0
- package/dist/ai-credentials/index.js +1 -0
- package/dist/base/event-binding.d.ts +7 -0
- package/dist/base/event-binding.js +23 -0
- package/dist/base/types.d.ts +109 -0
- package/dist/base/types.js +4 -0
- package/dist/bctrl.d.ts +37 -0
- package/dist/bctrl.js +77 -0
- package/dist/browser-extensions/client.d.ts +15 -0
- package/dist/browser-extensions/client.js +72 -0
- package/dist/browser-extensions/index.d.ts +2 -0
- package/dist/browser-extensions/index.js +1 -0
- package/dist/browser-profiles/client.d.ts +11 -0
- package/dist/browser-profiles/client.js +63 -0
- package/dist/browser-profiles/index.d.ts +1 -0
- package/dist/browser-profiles/index.js +1 -0
- package/dist/captcha/index.d.ts +1 -0
- package/dist/captcha/index.js +1 -0
- package/dist/captcha/namespace.d.ts +34 -0
- package/dist/captcha/namespace.js +41 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -0
- package/dist/client/rpc.d.ts +83 -0
- package/dist/client/rpc.js +354 -0
- package/dist/config.d.ts +5 -0
- package/dist/config.js +28 -0
- package/dist/constants/browser.d.ts +2 -0
- package/dist/constants/browser.js +1 -0
- package/dist/contracts/agent-tools.d.ts +45 -0
- package/dist/contracts/agent-tools.js +31 -0
- package/dist/contracts/automation.d.ts +265 -0
- package/dist/contracts/automation.js +109 -0
- package/dist/contracts/browser-management.d.ts +179 -0
- package/dist/contracts/browser-management.js +95 -0
- package/dist/contracts/browser-use.d.ts +136 -0
- package/dist/contracts/browser-use.js +93 -0
- package/dist/contracts/captcha.d.ts +114 -0
- package/dist/contracts/captcha.js +40 -0
- package/dist/contracts/desktop.d.ts +223 -0
- package/dist/contracts/desktop.js +121 -0
- package/dist/contracts/drivers/playwright.d.ts +2008 -0
- package/dist/contracts/drivers/playwright.js +2033 -0
- package/dist/contracts/drivers/puppeteer.d.ts +1221 -0
- package/dist/contracts/drivers/puppeteer.js +941 -0
- package/dist/contracts/drivers/selenium.d.ts +156 -0
- package/dist/contracts/drivers/selenium.js +61 -0
- package/dist/contracts/drivers/stagehand.d.ts +155 -0
- package/dist/contracts/drivers/stagehand.js +7 -0
- package/dist/contracts/extensions.d.ts +13 -0
- package/dist/contracts/extensions.js +9 -0
- package/dist/contracts/index.d.ts +13 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/public-api.d.ts +360 -0
- package/dist/contracts/public-api.js +17 -0
- package/dist/contracts/runtime.d.ts +81 -0
- package/dist/contracts/runtime.js +16 -0
- package/dist/contracts/stagehand.d.ts +253 -0
- package/dist/contracts/stagehand.js +145 -0
- package/dist/contracts/storage.d.ts +51 -0
- package/dist/contracts/storage.js +56 -0
- package/dist/contracts/vault.d.ts +119 -0
- package/dist/contracts/vault.js +112 -0
- package/dist/contracts/version.d.ts +3 -0
- package/dist/contracts/version.js +16 -0
- package/dist/desktop.d.ts +2 -0
- package/dist/desktop.js +3 -0
- package/dist/drivers/desktop/index.d.ts +65 -0
- package/dist/drivers/desktop/index.js +68 -0
- package/dist/drivers/desktop/session.d.ts +313 -0
- package/dist/drivers/desktop/session.js +432 -0
- package/dist/drivers/playwright/event-emitter.d.ts +160 -0
- package/dist/drivers/playwright/event-emitter.js +297 -0
- package/dist/drivers/playwright/generated/api-request-context.d.ts +137 -0
- package/dist/drivers/playwright/generated/api-request-context.js +154 -0
- package/dist/drivers/playwright/generated/api-response.d.ts +119 -0
- package/dist/drivers/playwright/generated/api-response.js +123 -0
- package/dist/drivers/playwright/generated/browser-context.d.ts +284 -0
- package/dist/drivers/playwright/generated/browser-context.js +458 -0
- package/dist/drivers/playwright/generated/browser.d.ts +120 -0
- package/dist/drivers/playwright/generated/browser.js +151 -0
- package/dist/drivers/playwright/generated/clock.d.ts +80 -0
- package/dist/drivers/playwright/generated/clock.js +94 -0
- package/dist/drivers/playwright/generated/console-message.d.ts +94 -0
- package/dist/drivers/playwright/generated/console-message.js +89 -0
- package/dist/drivers/playwright/generated/coverage.d.ts +57 -0
- package/dist/drivers/playwright/generated/coverage.js +66 -0
- package/dist/drivers/playwright/generated/dialog.d.ts +79 -0
- package/dist/drivers/playwright/generated/dialog.js +80 -0
- package/dist/drivers/playwright/generated/element-handle.d.ts +399 -0
- package/dist/drivers/playwright/generated/element-handle.js +501 -0
- package/dist/drivers/playwright/generated/frame-locator.d.ts +34 -0
- package/dist/drivers/playwright/generated/frame-locator.js +63 -0
- package/dist/drivers/playwright/generated/frame.d.ts +557 -0
- package/dist/drivers/playwright/generated/frame.js +634 -0
- package/dist/drivers/playwright/generated/js-handle.d.ts +72 -0
- package/dist/drivers/playwright/generated/js-handle.js +92 -0
- package/dist/drivers/playwright/generated/keyboard.d.ts +103 -0
- package/dist/drivers/playwright/generated/keyboard.js +113 -0
- package/dist/drivers/playwright/generated/locator.d.ts +795 -0
- package/dist/drivers/playwright/generated/locator.js +974 -0
- package/dist/drivers/playwright/generated/mouse.d.ts +97 -0
- package/dist/drivers/playwright/generated/mouse.js +109 -0
- package/dist/drivers/playwright/generated/page.d.ts +762 -0
- package/dist/drivers/playwright/generated/page.js +988 -0
- package/dist/drivers/playwright/generated/touchscreen.d.ts +34 -0
- package/dist/drivers/playwright/generated/touchscreen.js +37 -0
- package/dist/drivers/playwright/generated/tracing.d.ts +78 -0
- package/dist/drivers/playwright/generated/tracing.js +80 -0
- package/dist/drivers/playwright/generated/worker.d.ts +53 -0
- package/dist/drivers/playwright/generated/worker.js +59 -0
- package/dist/drivers/playwright/index.d.ts +19 -0
- package/dist/drivers/playwright/index.js +20 -0
- package/dist/drivers/playwright/remote-base.d.ts +62 -0
- package/dist/drivers/playwright/remote-base.js +86 -0
- package/dist/drivers/playwright/types.d.ts +148 -0
- package/dist/drivers/playwright/types.js +8 -0
- package/dist/drivers/puppeteer/errors.d.ts +50 -0
- package/dist/drivers/puppeteer/errors.js +71 -0
- package/dist/drivers/puppeteer/event-emitter.d.ts +145 -0
- package/dist/drivers/puppeteer/event-emitter.js +259 -0
- package/dist/drivers/puppeteer/generated/accessibility.d.ts +77 -0
- package/dist/drivers/puppeteer/generated/accessibility.js +74 -0
- package/dist/drivers/puppeteer/generated/browser-context.d.ts +116 -0
- package/dist/drivers/puppeteer/generated/browser-context.js +168 -0
- package/dist/drivers/puppeteer/generated/browser.d.ts +169 -0
- package/dist/drivers/puppeteer/generated/browser.js +246 -0
- package/dist/drivers/puppeteer/generated/console-message.d.ts +54 -0
- package/dist/drivers/puppeteer/generated/console-message.js +69 -0
- package/dist/drivers/puppeteer/generated/coverage.d.ts +49 -0
- package/dist/drivers/puppeteer/generated/coverage.js +57 -0
- package/dist/drivers/puppeteer/generated/dialog.d.ts +46 -0
- package/dist/drivers/puppeteer/generated/dialog.js +60 -0
- package/dist/drivers/puppeteer/generated/element-handle.d.ts +261 -0
- package/dist/drivers/puppeteer/generated/element-handle.js +341 -0
- package/dist/drivers/puppeteer/generated/file-chooser.d.ts +34 -0
- package/dist/drivers/puppeteer/generated/file-chooser.js +43 -0
- package/dist/drivers/puppeteer/generated/frame.d.ts +221 -0
- package/dist/drivers/puppeteer/generated/frame.js +302 -0
- package/dist/drivers/puppeteer/generated/http-request.d.ts +195 -0
- package/dist/drivers/puppeteer/generated/http-request.js +243 -0
- package/dist/drivers/puppeteer/generated/http-response.d.ts +142 -0
- package/dist/drivers/puppeteer/generated/http-response.js +169 -0
- package/dist/drivers/puppeteer/generated/js-handle.d.ts +104 -0
- package/dist/drivers/puppeteer/generated/js-handle.js +125 -0
- package/dist/drivers/puppeteer/generated/keyboard.d.ts +79 -0
- package/dist/drivers/puppeteer/generated/keyboard.js +89 -0
- package/dist/drivers/puppeteer/generated/locator.d.ts +141 -0
- package/dist/drivers/puppeteer/generated/locator.js +164 -0
- package/dist/drivers/puppeteer/generated/mouse.d.ts +74 -0
- package/dist/drivers/puppeteer/generated/mouse.js +94 -0
- package/dist/drivers/puppeteer/generated/page.d.ts +604 -0
- package/dist/drivers/puppeteer/generated/page.js +776 -0
- package/dist/drivers/puppeteer/generated/target.d.ts +105 -0
- package/dist/drivers/puppeteer/generated/target.js +123 -0
- package/dist/drivers/puppeteer/generated/touchscreen.d.ts +87 -0
- package/dist/drivers/puppeteer/generated/touchscreen.js +103 -0
- package/dist/drivers/puppeteer/generated/tracing.d.ts +38 -0
- package/dist/drivers/puppeteer/generated/tracing.js +43 -0
- package/dist/drivers/puppeteer/generated/web-worker.d.ts +63 -0
- package/dist/drivers/puppeteer/generated/web-worker.js +73 -0
- package/dist/drivers/puppeteer/index.d.ts +21 -0
- package/dist/drivers/puppeteer/index.js +23 -0
- package/dist/drivers/puppeteer/remote-base.d.ts +57 -0
- package/dist/drivers/puppeteer/remote-base.js +79 -0
- package/dist/drivers/puppeteer/types.d.ts +178 -0
- package/dist/drivers/puppeteer/types.js +8 -0
- package/dist/drivers/selenium/driver.d.ts +28 -0
- package/dist/drivers/selenium/driver.js +169 -0
- package/dist/drivers/selenium/element.d.ts +34 -0
- package/dist/drivers/selenium/element.js +73 -0
- package/dist/drivers/selenium/index.d.ts +3 -0
- package/dist/drivers/selenium/index.js +5 -0
- package/dist/drivers/selenium/types.d.ts +2 -0
- package/dist/drivers/selenium/types.js +12 -0
- package/dist/drivers/stagehand/generated/context.d.ts +127 -0
- package/dist/drivers/stagehand/generated/context.js +153 -0
- package/dist/drivers/stagehand/generated/locator.d.ts +324 -0
- package/dist/drivers/stagehand/generated/locator.js +368 -0
- package/dist/drivers/stagehand/generated/page.d.ts +377 -0
- package/dist/drivers/stagehand/generated/page.js +439 -0
- package/dist/drivers/stagehand/generated/response.d.ts +197 -0
- package/dist/drivers/stagehand/generated/response.js +232 -0
- package/dist/drivers/stagehand/index.d.ts +5 -0
- package/dist/drivers/stagehand/index.js +8 -0
- package/dist/drivers/stagehand/types.d.ts +1 -0
- package/dist/drivers/stagehand/types.js +7 -0
- package/dist/errors.d.ts +47 -0
- package/dist/errors.js +157 -0
- package/dist/extensions/client.d.ts +47 -0
- package/dist/extensions/client.js +154 -0
- package/dist/extensions/index.d.ts +1 -0
- package/dist/extensions/index.js +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +23 -0
- package/dist/internal/dev-client.d.ts +5 -0
- package/dist/internal/dev-client.js +9 -0
- package/dist/internal/rpc-targets.d.ts +17 -0
- package/dist/internal/rpc-targets.js +58 -0
- package/dist/internal/serialization.d.ts +32 -0
- package/dist/internal/serialization.js +42 -0
- package/dist/internal/transport.d.ts +24 -0
- package/dist/internal/transport.js +29 -0
- package/dist/playwright.d.ts +1 -0
- package/dist/playwright.js +2 -0
- package/dist/puppeteer.d.ts +1 -0
- package/dist/puppeteer.js +2 -0
- package/dist/selenium.d.ts +1 -0
- package/dist/selenium.js +2 -0
- package/dist/stagehand.d.ts +1 -0
- package/dist/stagehand.js +2 -0
- package/dist/storage/client.d.ts +151 -0
- package/dist/storage/client.js +329 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +4 -0
- package/dist/telemetry.d.ts +18 -0
- package/dist/telemetry.js +93 -0
- package/dist/updates/client.d.ts +8 -0
- package/dist/updates/client.js +128 -0
- package/dist/updates/index.d.ts +1 -0
- package/dist/updates/index.js +1 -0
- package/dist/utils/http.d.ts +39 -0
- package/dist/utils/http.js +88 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.js +74 -0
- package/dist/utils/schema.d.ts +17 -0
- package/dist/utils/schema.js +31 -0
- package/dist/utils/url.d.ts +5 -0
- package/dist/utils/url.js +7 -0
- package/dist/vault/client.d.ts +43 -0
- package/dist/vault/client.js +123 -0
- package/dist/vault/index.d.ts +1 -0
- package/dist/vault/index.js +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/dist/workspaces/browser-runtime.d.ts +251 -0
- package/dist/workspaces/browser-runtime.js +1025 -0
- package/dist/workspaces/client.d.ts +48 -0
- package/dist/workspaces/client.js +222 -0
- package/dist/workspaces/index.d.ts +2 -0
- package/dist/workspaces/index.js +2 -0
- package/dist/workspaces/runtime-event-pump.d.ts +65 -0
- package/dist/workspaces/runtime-event-pump.js +716 -0
- package/package.json +56 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
export type { PlaywrightGotoOptions, PlaywrightReloadOptions, PlaywrightGoBackOptions, PlaywrightGoForwardOptions, PlaywrightNavigationOptions, PlaywrightWaitUntil, WaitUntilState, PlaywrightWaitForSelectorOptions, PlaywrightWaitForLoadStateOptions, PlaywrightWaitForURLOptions, PlaywrightWaitForNavigationOptions, PlaywrightWaitForOptions, PlaywrightWaitForFunctionOptions, PlaywrightMouseButton, PlaywrightMouseClickOptions, PlaywrightMouseDblclickOptions, PlaywrightMouseMoveOptions, PlaywrightMouseDownUpOptions, PlaywrightKeyboardOptions, PlaywrightKeyboardPressOptions, PlaywrightKeyboardTypeOptions, PlaywrightModifiers, PlaywrightPosition, PlaywrightClickOptions, PlaywrightDblclickOptions, PlaywrightFillOptions, PlaywrightTypeOptions, PlaywrightPressOptions, PlaywrightPressSequentiallyOptions, PlaywrightCheckOptions, PlaywrightUncheckOptions, PlaywrightSetCheckedOptions, PlaywrightSelectOptionOptions, PlaywrightSelectOption, PlaywrightSelectOptionValue, PlaywrightHoverOptions, PlaywrightFocusOptions, PlaywrightBlurOptions, PlaywrightTapOptions, PlaywrightClearOptions, PlaywrightTextContentOptions, PlaywrightInnerTextOptions, PlaywrightInnerHTMLOptions, PlaywrightGetAttributeOptions, PlaywrightInputValueOptions, PlaywrightIsOptions, PlaywrightElementState, PlaywrightEvaluateOptions, PlaywrightClipRegion, PlaywrightScreenshotOptions, PlaywrightPageScreenshotOptions, PlaywrightPDFMargin, PlaywrightPDFOptions, PlaywrightGetByRoleOptions, PlaywrightGetByTextOptions, PlaywrightGetByLabelOptions, PlaywrightGetByPlaceholderOptions, PlaywrightGetByAltTextOptions, PlaywrightGetByTitleOptions, PlaywrightGetByTestIdOptions, PlaywrightFilterOptions, PlaywrightAriaRole, PlaywrightViewport, PlaywrightViewportSize, PlaywrightGeolocation, PlaywrightHttpCredentials, PlaywrightHTTPCredentials, PlaywrightNewContextOptions, PlaywrightNewPageOptions, PlaywrightBoundingBoxResult, PlaywrightBoundingBox, PlaywrightBoundingBoxOptions, LocatorChainStep, SerializedLocatorChain, PlaywrightTracingStartOptions, PlaywrightTracingStopOptions, PlaywrightStartTracingOptions, PlaywrightConsoleMessageType, PlaywrightConsoleMessageLocation, PlaywrightStartCSSCoverageOptions, PlaywrightStartJSCoverageOptions, PlaywrightCSSCoverageEntry, PlaywrightJSCoverageEntry, PlaywrightDialogType, PlaywrightCookie, PlaywrightClearCookiesOptions, PlaywrightPermission, PlaywrightGrantPermissionsOptions, PlaywrightRouteOptions, PlaywrightRouteFromHAROptions, PlaywrightUnrouteAllOptions, PlaywrightStorageState, PlaywrightStorageStateOptions, PlaywrightWaitForEventOptions, PlaywrightEventInit, PlaywrightDispatchEventOptions, PlaywrightTimeoutOptions, PlaywrightFilePayload, FilePayload, PlaywrightSetInputFilesOptions, PlaywrightScrollIntoViewOptions, PlaywrightScrollIntoViewIfNeededOptions, PlaywrightDragToOptions, PlaywrightDragAndDropOptions, PlaywrightSetContentOptions, PlaywrightAddScriptTagOptions, PlaywrightAddStyleTagOptions, PlaywrightEmulateMediaOptions, PlaywrightLoadState, LoadState, PlaywrightRequest, PlaywrightResponse, PlaywrightRouteHandler, PlaywrightAPIResponse, PlaywrightAPIRequestOptions, PlaywrightConsoleMessage, PlaywrightWebSocketRoute, PlaywrightAddLocatorHandlerOptions, } from '../../contracts/drivers/playwright.js';
|
|
2
|
+
export type { PageEvents, PlaywrightPageEvents, } from '../../contracts/drivers/playwright.js';
|
|
3
|
+
export type { SelectOption } from '../../base/types.js';
|
|
4
|
+
import type { PlaywrightMouseClickOptions, PlaywrightMouseMoveOptions, PlaywrightKeyboardOptions, PlaywrightClickOptions, PlaywrightFillOptions, PlaywrightTypeOptions, PlaywrightPressOptions, PlaywrightCheckOptions, PlaywrightSelectOptionOptions, PlaywrightHoverOptions, PlaywrightFocusOptions, PlaywrightTextContentOptions, PlaywrightInnerTextOptions, PlaywrightInnerHTMLOptions, PlaywrightGetAttributeOptions, PlaywrightInputValueOptions, PlaywrightIsOptions, PlaywrightWaitForOptions, PlaywrightScreenshotOptions, PlaywrightGetByRoleOptions, PlaywrightGetByTextOptions, PlaywrightGetByLabelOptions, PlaywrightGetByPlaceholderOptions, PlaywrightGetByAltTextOptions, PlaywrightGetByTitleOptions, PlaywrightGotoOptions, PlaywrightReloadOptions, PlaywrightGoBackOptions, PlaywrightGoForwardOptions, PlaywrightWaitForSelectorOptions, PlaywrightWaitForLoadStateOptions, PlaywrightWaitForURLOptions, PlaywrightPageScreenshotOptions, PlaywrightPDFOptions, PlaywrightNewContextOptions, PlaywrightNewPageOptions, PlaywrightBoundingBoxResult, SerializedLocatorChain } from '../../contracts/drivers/playwright.js';
|
|
5
|
+
export interface PlaywrightMouse {
|
|
6
|
+
click(x: number, y: number, options?: PlaywrightMouseClickOptions): Promise<void>;
|
|
7
|
+
dblclick(x: number, y: number, options?: PlaywrightMouseClickOptions): Promise<void>;
|
|
8
|
+
down(options?: {
|
|
9
|
+
button?: 'left' | 'right' | 'middle';
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
up(options?: {
|
|
12
|
+
button?: 'left' | 'right' | 'middle';
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
move(x: number, y: number, options?: PlaywrightMouseMoveOptions): Promise<void>;
|
|
15
|
+
wheel(deltaX: number, deltaY: number): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface PlaywrightKeyboard {
|
|
18
|
+
down(key: string): Promise<void>;
|
|
19
|
+
up(key: string): Promise<void>;
|
|
20
|
+
press(key: string, options?: PlaywrightKeyboardOptions): Promise<void>;
|
|
21
|
+
type(text: string, options?: PlaywrightKeyboardOptions): Promise<void>;
|
|
22
|
+
insertText(text: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export interface PlaywrightLocatorOptions {
|
|
25
|
+
has?: PlaywrightLocator | SerializedLocatorChain;
|
|
26
|
+
hasNot?: PlaywrightLocator | SerializedLocatorChain;
|
|
27
|
+
hasText?: string | RegExp;
|
|
28
|
+
hasNotText?: string | RegExp;
|
|
29
|
+
}
|
|
30
|
+
export interface PlaywrightLocatorFilterOptions {
|
|
31
|
+
has?: PlaywrightLocator | SerializedLocatorChain;
|
|
32
|
+
hasNot?: PlaywrightLocator | SerializedLocatorChain;
|
|
33
|
+
hasText?: string | RegExp;
|
|
34
|
+
hasNotText?: string | RegExp;
|
|
35
|
+
}
|
|
36
|
+
export interface PlaywrightLocator {
|
|
37
|
+
locator(selector: string, options?: PlaywrightLocatorOptions): PlaywrightLocator;
|
|
38
|
+
filter(options: PlaywrightLocatorFilterOptions): PlaywrightLocator;
|
|
39
|
+
first(): PlaywrightLocator;
|
|
40
|
+
last(): PlaywrightLocator;
|
|
41
|
+
nth(index: number): PlaywrightLocator;
|
|
42
|
+
and(locator: PlaywrightLocator): PlaywrightLocator;
|
|
43
|
+
or(locator: PlaywrightLocator): PlaywrightLocator;
|
|
44
|
+
getByRole(role: string, options?: PlaywrightGetByRoleOptions): PlaywrightLocator;
|
|
45
|
+
getByText(text: string | RegExp, options?: PlaywrightGetByTextOptions): PlaywrightLocator;
|
|
46
|
+
getByLabel(text: string | RegExp, options?: PlaywrightGetByLabelOptions): PlaywrightLocator;
|
|
47
|
+
getByPlaceholder(text: string | RegExp, options?: PlaywrightGetByPlaceholderOptions): PlaywrightLocator;
|
|
48
|
+
getByAltText(text: string | RegExp, options?: PlaywrightGetByAltTextOptions): PlaywrightLocator;
|
|
49
|
+
getByTitle(text: string | RegExp, options?: PlaywrightGetByTitleOptions): PlaywrightLocator;
|
|
50
|
+
getByTestId(testId: string): PlaywrightLocator;
|
|
51
|
+
click(options?: PlaywrightClickOptions): Promise<void>;
|
|
52
|
+
dblclick(options?: PlaywrightClickOptions): Promise<void>;
|
|
53
|
+
fill(value: string, options?: PlaywrightFillOptions): Promise<void>;
|
|
54
|
+
type(text: string, options?: PlaywrightTypeOptions): Promise<void>;
|
|
55
|
+
press(key: string, options?: PlaywrightPressOptions): Promise<void>;
|
|
56
|
+
check(options?: PlaywrightCheckOptions): Promise<void>;
|
|
57
|
+
uncheck(options?: PlaywrightCheckOptions): Promise<void>;
|
|
58
|
+
selectOption(values: string | string[] | {
|
|
59
|
+
value?: string;
|
|
60
|
+
label?: string;
|
|
61
|
+
index?: number;
|
|
62
|
+
}, options?: PlaywrightSelectOptionOptions): Promise<string[]>;
|
|
63
|
+
hover(options?: PlaywrightHoverOptions): Promise<void>;
|
|
64
|
+
focus(options?: PlaywrightFocusOptions): Promise<void>;
|
|
65
|
+
clear(options?: PlaywrightFillOptions): Promise<void>;
|
|
66
|
+
count(): Promise<number>;
|
|
67
|
+
textContent(options?: PlaywrightTextContentOptions): Promise<string | null>;
|
|
68
|
+
innerText(options?: PlaywrightInnerTextOptions): Promise<string>;
|
|
69
|
+
innerHTML(options?: PlaywrightInnerHTMLOptions): Promise<string>;
|
|
70
|
+
getAttribute(name: string, options?: PlaywrightGetAttributeOptions): Promise<string | null>;
|
|
71
|
+
inputValue(options?: PlaywrightInputValueOptions): Promise<string>;
|
|
72
|
+
isVisible(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
73
|
+
isHidden(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
74
|
+
isEnabled(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
75
|
+
isDisabled(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
76
|
+
isChecked(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
77
|
+
isEditable(options?: PlaywrightIsOptions): Promise<boolean>;
|
|
78
|
+
waitFor(options?: PlaywrightWaitForOptions): Promise<void>;
|
|
79
|
+
boundingBox(options?: {
|
|
80
|
+
timeout?: number;
|
|
81
|
+
}): Promise<PlaywrightBoundingBoxResult | null>;
|
|
82
|
+
screenshot(options?: PlaywrightScreenshotOptions): Promise<Buffer>;
|
|
83
|
+
evaluate<R, Arg = unknown>(pageFunction: (element: Element, arg: Arg) => R | Promise<R>, arg?: Arg): Promise<R>;
|
|
84
|
+
evaluateAll<R, Arg = unknown>(pageFunction: (elements: Element[], arg: Arg) => R | Promise<R>, arg?: Arg): Promise<R>;
|
|
85
|
+
}
|
|
86
|
+
export interface PlaywrightPage {
|
|
87
|
+
locator(selector: string, options?: PlaywrightLocatorOptions): PlaywrightLocator;
|
|
88
|
+
getByRole(role: string, options?: PlaywrightGetByRoleOptions): PlaywrightLocator;
|
|
89
|
+
getByText(text: string | RegExp, options?: PlaywrightGetByTextOptions): PlaywrightLocator;
|
|
90
|
+
getByLabel(text: string | RegExp, options?: PlaywrightGetByLabelOptions): PlaywrightLocator;
|
|
91
|
+
getByPlaceholder(text: string | RegExp, options?: PlaywrightGetByPlaceholderOptions): PlaywrightLocator;
|
|
92
|
+
getByAltText(text: string | RegExp, options?: PlaywrightGetByAltTextOptions): PlaywrightLocator;
|
|
93
|
+
getByTitle(text: string | RegExp, options?: PlaywrightGetByTitleOptions): PlaywrightLocator;
|
|
94
|
+
getByTestId(testId: string): PlaywrightLocator;
|
|
95
|
+
goto(url: string, options?: PlaywrightGotoOptions): Promise<void>;
|
|
96
|
+
reload(options?: PlaywrightReloadOptions): Promise<void>;
|
|
97
|
+
goBack(options?: PlaywrightGoBackOptions): Promise<void>;
|
|
98
|
+
goForward(options?: PlaywrightGoForwardOptions): Promise<void>;
|
|
99
|
+
url(): string;
|
|
100
|
+
title(): Promise<string>;
|
|
101
|
+
content(): Promise<string>;
|
|
102
|
+
mouse: PlaywrightMouse;
|
|
103
|
+
keyboard: PlaywrightKeyboard;
|
|
104
|
+
click(selector: string, options?: PlaywrightClickOptions): Promise<void>;
|
|
105
|
+
fill(selector: string, value: string, options?: PlaywrightFillOptions): Promise<void>;
|
|
106
|
+
check(selector: string, options?: PlaywrightCheckOptions): Promise<void>;
|
|
107
|
+
uncheck(selector: string, options?: PlaywrightCheckOptions): Promise<void>;
|
|
108
|
+
isChecked(selector: string, options?: PlaywrightIsOptions): Promise<boolean>;
|
|
109
|
+
selectOption(selector: string, values: string | string[] | {
|
|
110
|
+
value?: string;
|
|
111
|
+
label?: string;
|
|
112
|
+
index?: number;
|
|
113
|
+
}, options?: PlaywrightSelectOptionOptions): Promise<string[]>;
|
|
114
|
+
waitForSelector(selector: string, options?: PlaywrightWaitForSelectorOptions): Promise<void>;
|
|
115
|
+
waitForLoadState(state?: 'load' | 'domcontentloaded' | 'networkidle', options?: PlaywrightWaitForLoadStateOptions): Promise<void>;
|
|
116
|
+
waitForTimeout(timeout: number): Promise<void>;
|
|
117
|
+
waitForURL(url: string | RegExp | ((url: URL) => boolean), options?: PlaywrightWaitForURLOptions): Promise<void>;
|
|
118
|
+
evaluate<R, Arg>(pageFunction: (arg: Arg) => R | Promise<R>, arg?: Arg): Promise<R>;
|
|
119
|
+
evaluateHandle<R, Arg>(pageFunction: (arg: Arg) => R | Promise<R>, arg?: Arg): Promise<unknown>;
|
|
120
|
+
screenshot(options?: PlaywrightPageScreenshotOptions): Promise<Buffer>;
|
|
121
|
+
pdf(options?: PlaywrightPDFOptions): Promise<Buffer>;
|
|
122
|
+
close(): Promise<void>;
|
|
123
|
+
isClosed(): boolean;
|
|
124
|
+
context(): PlaywrightBrowserContext | null;
|
|
125
|
+
setViewportSize(viewportSize: {
|
|
126
|
+
width: number;
|
|
127
|
+
height: number;
|
|
128
|
+
}): Promise<void>;
|
|
129
|
+
viewportSize(): {
|
|
130
|
+
width: number;
|
|
131
|
+
height: number;
|
|
132
|
+
} | null;
|
|
133
|
+
bringToFront(): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
export interface PlaywrightBrowserContext {
|
|
136
|
+
newPage(): Promise<PlaywrightPage>;
|
|
137
|
+
pages(): PlaywrightPage[];
|
|
138
|
+
close(): Promise<void>;
|
|
139
|
+
browser(): PlaywrightBrowser | null;
|
|
140
|
+
}
|
|
141
|
+
export interface PlaywrightBrowser {
|
|
142
|
+
newContext(options?: PlaywrightNewContextOptions): Promise<PlaywrightBrowserContext>;
|
|
143
|
+
newPage(options?: PlaywrightNewPageOptions): Promise<PlaywrightPage>;
|
|
144
|
+
contexts(): PlaywrightBrowserContext[];
|
|
145
|
+
close(): Promise<void>;
|
|
146
|
+
isConnected(): boolean;
|
|
147
|
+
version(): Promise<string>;
|
|
148
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Playwright Type Definitions
|
|
3
|
+
// ============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Driver option and payload types live in the SDK-local generated contract module.
|
|
6
|
+
// This file contains interface definitions for runtime objects with methods.
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all Puppeteer errors.
|
|
3
|
+
* @see https://pptr.dev/api/puppeteer.puppeteererror
|
|
4
|
+
*/
|
|
5
|
+
export declare class PuppeteerError extends Error {
|
|
6
|
+
constructor(message?: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* TimeoutError is thrown when an operation times out.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { TimeoutError } from 'bctrl';
|
|
14
|
+
*
|
|
15
|
+
* try {
|
|
16
|
+
* await page.waitForSelector('.element', { timeout: 5000 });
|
|
17
|
+
* } catch (error) {
|
|
18
|
+
* if (error instanceof TimeoutError) {
|
|
19
|
+
* console.log('Element did not appear in time');
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see https://pptr.dev/api/puppeteer.timeouterror
|
|
25
|
+
*/
|
|
26
|
+
export declare class TimeoutError extends PuppeteerError {
|
|
27
|
+
constructor(message?: string);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* ProtocolError is thrown when a CDP protocol error occurs.
|
|
31
|
+
* @see https://pptr.dev/api/puppeteer.protocolerror
|
|
32
|
+
*/
|
|
33
|
+
export declare class ProtocolError extends PuppeteerError {
|
|
34
|
+
/**
|
|
35
|
+
* The original CDP error code, if available.
|
|
36
|
+
*/
|
|
37
|
+
code?: number;
|
|
38
|
+
/**
|
|
39
|
+
* The original CDP error message, if available.
|
|
40
|
+
*/
|
|
41
|
+
originalMessage?: string;
|
|
42
|
+
constructor(message?: string, code?: number, originalMessage?: string);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* UnsupportedOperation is thrown when an operation is not supported.
|
|
46
|
+
* @see https://pptr.dev/api/puppeteer.unsupportedoperation
|
|
47
|
+
*/
|
|
48
|
+
export declare class UnsupportedOperation extends PuppeteerError {
|
|
49
|
+
constructor(message?: string);
|
|
50
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Puppeteer Error Classes
|
|
3
|
+
// ============================================================================
|
|
4
|
+
//
|
|
5
|
+
// Custom error classes matching Puppeteer's error hierarchy.
|
|
6
|
+
// @see https://pptr.dev/api/puppeteer.puppeteererror
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Base error class for all Puppeteer errors.
|
|
10
|
+
* @see https://pptr.dev/api/puppeteer.puppeteererror
|
|
11
|
+
*/
|
|
12
|
+
export class PuppeteerError extends Error {
|
|
13
|
+
constructor(message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'PuppeteerError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* TimeoutError is thrown when an operation times out.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { TimeoutError } from 'bctrl';
|
|
24
|
+
*
|
|
25
|
+
* try {
|
|
26
|
+
* await page.waitForSelector('.element', { timeout: 5000 });
|
|
27
|
+
* } catch (error) {
|
|
28
|
+
* if (error instanceof TimeoutError) {
|
|
29
|
+
* console.log('Element did not appear in time');
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @see https://pptr.dev/api/puppeteer.timeouterror
|
|
35
|
+
*/
|
|
36
|
+
export class TimeoutError extends PuppeteerError {
|
|
37
|
+
constructor(message) {
|
|
38
|
+
super(message ?? 'Timeout exceeded');
|
|
39
|
+
this.name = 'TimeoutError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* ProtocolError is thrown when a CDP protocol error occurs.
|
|
44
|
+
* @see https://pptr.dev/api/puppeteer.protocolerror
|
|
45
|
+
*/
|
|
46
|
+
export class ProtocolError extends PuppeteerError {
|
|
47
|
+
/**
|
|
48
|
+
* The original CDP error code, if available.
|
|
49
|
+
*/
|
|
50
|
+
code;
|
|
51
|
+
/**
|
|
52
|
+
* The original CDP error message, if available.
|
|
53
|
+
*/
|
|
54
|
+
originalMessage;
|
|
55
|
+
constructor(message, code, originalMessage) {
|
|
56
|
+
super(message);
|
|
57
|
+
this.name = 'ProtocolError';
|
|
58
|
+
this.code = code;
|
|
59
|
+
this.originalMessage = originalMessage;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* UnsupportedOperation is thrown when an operation is not supported.
|
|
64
|
+
* @see https://pptr.dev/api/puppeteer.unsupportedoperation
|
|
65
|
+
*/
|
|
66
|
+
export class UnsupportedOperation extends PuppeteerError {
|
|
67
|
+
constructor(message) {
|
|
68
|
+
super(message ?? 'This operation is not supported');
|
|
69
|
+
this.name = 'UnsupportedOperation';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler function type for event listeners.
|
|
3
|
+
* @see https://pptr.dev/api/puppeteer.handler
|
|
4
|
+
*/
|
|
5
|
+
export type Handler<T = unknown> = (event: T) => void;
|
|
6
|
+
/**
|
|
7
|
+
* The EventEmitter class that many Puppeteer classes extend.
|
|
8
|
+
*
|
|
9
|
+
* This provides a familiar event-driven interface for handling browser events
|
|
10
|
+
* like page load, console messages, dialogs, network requests, etc.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* page.on('console', msg => {
|
|
15
|
+
* console.log('Page logged:', msg.text());
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* page.once('load', () => {
|
|
19
|
+
* console.log('Page loaded!');
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter
|
|
24
|
+
*/
|
|
25
|
+
export declare class PuppeteerEventEmitter<Events extends Record<string, unknown> = Record<string, unknown>> {
|
|
26
|
+
/**
|
|
27
|
+
* Map of event types to their listeners.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
private _listeners;
|
|
31
|
+
private notifyFirstListener;
|
|
32
|
+
private notifyNoListeners;
|
|
33
|
+
/**
|
|
34
|
+
* Bind an event listener to fire when an event occurs.
|
|
35
|
+
*
|
|
36
|
+
* @param type - The event type to listen for.
|
|
37
|
+
* @param handler - The function to call when the event occurs.
|
|
38
|
+
* @returns `this` to allow for method chaining.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* page.on('request', request => {
|
|
43
|
+
* console.log('Request:', request.url());
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.on
|
|
48
|
+
*/
|
|
49
|
+
on<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): this;
|
|
50
|
+
/**
|
|
51
|
+
* Remove an event listener.
|
|
52
|
+
*
|
|
53
|
+
* If `handler` is provided, only that specific listener is removed.
|
|
54
|
+
* If `handler` is not provided, all listeners for that event type are removed.
|
|
55
|
+
*
|
|
56
|
+
* @param type - The event type.
|
|
57
|
+
* @param handler - Optional specific handler to remove.
|
|
58
|
+
* @returns `this` to allow for method chaining.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const handler = msg => console.log(msg);
|
|
63
|
+
* page.on('console', handler);
|
|
64
|
+
* // Later...
|
|
65
|
+
* page.off('console', handler);
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.off
|
|
69
|
+
*/
|
|
70
|
+
off<Key extends keyof Events>(type: Key, handler?: Handler<Events[Key]>): this;
|
|
71
|
+
/**
|
|
72
|
+
* Bind an event listener that will fire only once.
|
|
73
|
+
*
|
|
74
|
+
* After the handler is called once, it is automatically removed.
|
|
75
|
+
*
|
|
76
|
+
* @param type - The event type to listen for.
|
|
77
|
+
* @param handler - The function to call when the event occurs.
|
|
78
|
+
* @returns `this` to allow for method chaining.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* page.once('load', () => {
|
|
83
|
+
* console.log('Page loaded for the first time!');
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.once
|
|
88
|
+
*/
|
|
89
|
+
once<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): this;
|
|
90
|
+
/**
|
|
91
|
+
* Emit an event, calling all registered handlers.
|
|
92
|
+
*
|
|
93
|
+
* This method is typically used internally by Puppeteer classes to dispatch
|
|
94
|
+
* events. Users rarely need to call this directly.
|
|
95
|
+
*
|
|
96
|
+
* @param type - The event type to emit.
|
|
97
|
+
* @param event - The event data to pass to handlers.
|
|
98
|
+
* @returns `true` if there were listeners for this event, `false` otherwise.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* // Internal usage example
|
|
103
|
+
* this.emit('console', consoleMessage);
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.emit
|
|
107
|
+
*/
|
|
108
|
+
emit<Key extends keyof Events>(type: Key, event: Events[Key]): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Get the count of listeners for a specific event type.
|
|
111
|
+
*
|
|
112
|
+
* @param type - The event type.
|
|
113
|
+
* @returns The number of registered listeners.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* const count = page.listenerCount('request');
|
|
118
|
+
* console.log(`There are ${count} request listeners`);
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.listenercount
|
|
122
|
+
*/
|
|
123
|
+
listenerCount<Key extends keyof Events>(type: Key): number;
|
|
124
|
+
/**
|
|
125
|
+
* Remove all listeners.
|
|
126
|
+
*
|
|
127
|
+
* If `type` is provided, only listeners for that event type are removed.
|
|
128
|
+
* If `type` is not provided, all listeners for all event types are removed.
|
|
129
|
+
*
|
|
130
|
+
* @param type - Optional event type to remove listeners for.
|
|
131
|
+
* @returns `this` to allow for method chaining.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts
|
|
135
|
+
* // Remove all 'request' listeners
|
|
136
|
+
* page.removeAllListeners('request');
|
|
137
|
+
*
|
|
138
|
+
* // Remove ALL listeners
|
|
139
|
+
* page.removeAllListeners();
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.removealllisteners
|
|
143
|
+
*/
|
|
144
|
+
removeAllListeners<Key extends keyof Events>(type?: Key): this;
|
|
145
|
+
}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// PuppeteerEventEmitter - EventEmitter base class for Puppeteer SDK
|
|
3
|
+
// ============================================================================
|
|
4
|
+
//
|
|
5
|
+
// This class provides an EventEmitter implementation that matches the real
|
|
6
|
+
// Puppeteer 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://pptr.dev/api/puppeteer.eventemitter
|
|
10
|
+
// ============================================================================
|
|
11
|
+
import { getRemoteListenerBinding } from '../../base/event-binding.js';
|
|
12
|
+
/**
|
|
13
|
+
* The EventEmitter class that many Puppeteer 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://pptr.dev/api/puppeteer.eventemitter
|
|
30
|
+
*/
|
|
31
|
+
export class PuppeteerEventEmitter {
|
|
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 type - 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://pptr.dev/api/puppeteer.eventemitter.on
|
|
64
|
+
*/
|
|
65
|
+
on(type, handler) {
|
|
66
|
+
const listeners = this._listeners.get(type) ?? [];
|
|
67
|
+
const hadListeners = listeners.length > 0;
|
|
68
|
+
listeners.push({ handler: handler, once: false });
|
|
69
|
+
this._listeners.set(type, listeners);
|
|
70
|
+
if (!hadListeners) {
|
|
71
|
+
this.notifyFirstListener(type);
|
|
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 type - 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://pptr.dev/api/puppeteer.eventemitter.off
|
|
94
|
+
*/
|
|
95
|
+
off(type, handler) {
|
|
96
|
+
if (!handler) {
|
|
97
|
+
// Remove all listeners for this type
|
|
98
|
+
const hadListeners = (this._listeners.get(type)?.length ?? 0) > 0;
|
|
99
|
+
this._listeners.delete(type);
|
|
100
|
+
if (hadListeners) {
|
|
101
|
+
this.notifyNoListeners(type);
|
|
102
|
+
}
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
const listeners = this._listeners.get(type);
|
|
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(type);
|
|
112
|
+
if (listeners.length > 0) {
|
|
113
|
+
this.notifyNoListeners(type);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this._listeners.set(type, filtered);
|
|
118
|
+
}
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Bind an event listener that will fire only once.
|
|
123
|
+
*
|
|
124
|
+
* After the handler is called once, it is automatically removed.
|
|
125
|
+
*
|
|
126
|
+
* @param type - The event type to listen for.
|
|
127
|
+
* @param handler - The function to call when the event occurs.
|
|
128
|
+
* @returns `this` to allow for method chaining.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* page.once('load', () => {
|
|
133
|
+
* console.log('Page loaded for the first time!');
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.once
|
|
138
|
+
*/
|
|
139
|
+
once(type, handler) {
|
|
140
|
+
const listeners = this._listeners.get(type) ?? [];
|
|
141
|
+
const hadListeners = listeners.length > 0;
|
|
142
|
+
listeners.push({ handler: handler, once: true });
|
|
143
|
+
this._listeners.set(type, listeners);
|
|
144
|
+
if (!hadListeners) {
|
|
145
|
+
this.notifyFirstListener(type);
|
|
146
|
+
}
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Emit an event, calling all registered handlers.
|
|
151
|
+
*
|
|
152
|
+
* This method is typically used internally by Puppeteer classes to dispatch
|
|
153
|
+
* events. Users rarely need to call this directly.
|
|
154
|
+
*
|
|
155
|
+
* @param type - The event type to emit.
|
|
156
|
+
* @param event - The event data to pass to handlers.
|
|
157
|
+
* @returns `true` if there were listeners for this event, `false` otherwise.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```ts
|
|
161
|
+
* // Internal usage example
|
|
162
|
+
* this.emit('console', consoleMessage);
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.emit
|
|
166
|
+
*/
|
|
167
|
+
emit(type, event) {
|
|
168
|
+
const listeners = this._listeners.get(type);
|
|
169
|
+
if (!listeners || listeners.length === 0) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
// Create a copy to avoid issues if handlers modify the listener list
|
|
173
|
+
const listenersCopy = [...listeners];
|
|
174
|
+
const toRemove = [];
|
|
175
|
+
for (const entry of listenersCopy) {
|
|
176
|
+
try {
|
|
177
|
+
entry.handler(event);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// Log but don't throw to allow other handlers to run
|
|
181
|
+
console.error(`Error in event handler for "${String(type)}":`, error);
|
|
182
|
+
}
|
|
183
|
+
if (entry.once) {
|
|
184
|
+
toRemove.push(entry);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Remove once listeners
|
|
188
|
+
if (toRemove.length > 0) {
|
|
189
|
+
const remaining = listeners.filter((entry) => !toRemove.includes(entry));
|
|
190
|
+
if (remaining.length === 0) {
|
|
191
|
+
this._listeners.delete(type);
|
|
192
|
+
if (listeners.length > 0) {
|
|
193
|
+
this.notifyNoListeners(type);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
this._listeners.set(type, remaining);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get the count of listeners for a specific event type.
|
|
204
|
+
*
|
|
205
|
+
* @param type - The event type.
|
|
206
|
+
* @returns The number of registered listeners.
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```ts
|
|
210
|
+
* const count = page.listenerCount('request');
|
|
211
|
+
* console.log(`There are ${count} request listeners`);
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.listenercount
|
|
215
|
+
*/
|
|
216
|
+
listenerCount(type) {
|
|
217
|
+
const listeners = this._listeners.get(type);
|
|
218
|
+
return listeners?.length ?? 0;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Remove all listeners.
|
|
222
|
+
*
|
|
223
|
+
* If `type` is provided, only listeners for that event type are removed.
|
|
224
|
+
* If `type` is not provided, all listeners for all event types are removed.
|
|
225
|
+
*
|
|
226
|
+
* @param type - Optional event type to remove listeners for.
|
|
227
|
+
* @returns `this` to allow for method chaining.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* // Remove all 'request' listeners
|
|
232
|
+
* page.removeAllListeners('request');
|
|
233
|
+
*
|
|
234
|
+
* // Remove ALL listeners
|
|
235
|
+
* page.removeAllListeners();
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* @see https://pptr.dev/api/puppeteer.eventemitter.removealllisteners
|
|
239
|
+
*/
|
|
240
|
+
removeAllListeners(type) {
|
|
241
|
+
if (type === undefined) {
|
|
242
|
+
const existingEvents = Array.from(this._listeners.entries())
|
|
243
|
+
.filter(([, listeners]) => listeners.length > 0)
|
|
244
|
+
.map(([eventName]) => eventName);
|
|
245
|
+
this._listeners.clear();
|
|
246
|
+
for (const eventName of existingEvents) {
|
|
247
|
+
this.notifyNoListeners(eventName);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
const hadListeners = (this._listeners.get(type)?.length ?? 0) > 0;
|
|
252
|
+
this._listeners.delete(type);
|
|
253
|
+
if (hadListeners) {
|
|
254
|
+
this.notifyNoListeners(type);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return this;
|
|
258
|
+
}
|
|
259
|
+
}
|