browser-debugger-cli 0.7.1 → 0.8.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.
- package/README.md +14 -6
- package/dist/cdp/protocol.d.ts +1 -1
- package/dist/cdp/protocol.js +1 -1
- package/dist/cdp/schema.d.ts +10 -0
- package/dist/cdp/schema.js +13 -0
- package/dist/commands/cdp.js +75 -23
- package/dist/commands/cleanup.js +31 -23
- package/dist/commands/console.d.ts +18 -1
- package/dist/commands/console.js +98 -53
- package/dist/commands/details.js +13 -3
- package/dist/commands/dom/DomElementResolver.d.ts +24 -69
- package/dist/commands/dom/DomElementResolver.js +71 -162
- package/dist/commands/dom/a11y.js +52 -33
- package/dist/commands/dom/eval.d.ts +13 -0
- package/dist/commands/dom/eval.js +43 -0
- package/dist/commands/dom/form.js +103 -147
- package/dist/commands/dom/formInteraction.d.ts +6 -1
- package/dist/commands/dom/formInteraction.js +223 -305
- package/dist/commands/dom/frames.d.ts +12 -0
- package/dist/commands/dom/frames.js +28 -0
- package/dist/commands/dom/get.d.ts +20 -0
- package/dist/commands/dom/get.js +141 -0
- package/dist/commands/dom/helpers/index.d.ts +11 -0
- package/dist/commands/dom/helpers/index.js +10 -0
- package/dist/commands/dom/helpers/query.d.ts +78 -0
- package/dist/commands/dom/helpers/query.js +457 -0
- package/dist/commands/dom/helpers/runElementCommand.d.ts +56 -0
- package/dist/commands/dom/helpers/runElementCommand.js +63 -0
- package/dist/commands/dom/helpers/screenshot.d.ts +30 -0
- package/dist/commands/dom/helpers/screenshot.js +374 -0
- package/dist/commands/dom/index.d.ts +15 -3
- package/dist/commands/dom/index.js +45 -511
- package/dist/commands/dom/listeners.d.ts +16 -0
- package/dist/commands/dom/listeners.js +54 -0
- package/dist/commands/dom/query.d.ts +14 -0
- package/dist/commands/dom/query.js +36 -0
- package/dist/commands/dom/screenshot.d.ts +21 -0
- package/dist/commands/dom/screenshot.js +248 -0
- package/dist/commands/dom/semanticUtils.d.ts +44 -0
- package/dist/commands/dom/semanticUtils.js +102 -0
- package/dist/commands/helpJson.d.ts +4 -2
- package/dist/commands/helpJson.js +12 -32
- package/dist/commands/helpTopic.d.ts +32 -0
- package/dist/commands/helpTopic.js +58 -0
- package/dist/commands/network/har.js +50 -24
- package/dist/commands/network/list.js +96 -63
- package/dist/commands/network/shared.d.ts +9 -15
- package/dist/commands/network/shared.js +30 -51
- package/dist/commands/optionBehaviors.d.ts +1 -9
- package/dist/commands/optionBehaviors.js +46 -25
- package/dist/commands/page.d.ts +11 -0
- package/dist/commands/page.js +112 -0
- package/dist/commands/peek.js +62 -48
- package/dist/commands/shared/CommandRunner.d.ts +18 -1
- package/dist/commands/shared/CommandRunner.js +83 -26
- package/dist/commands/shared/commonOptions.d.ts +10 -0
- package/dist/commands/shared/commonOptions.js +12 -0
- package/dist/commands/shared/daemonErrorHandler.d.ts +9 -0
- package/dist/commands/shared/daemonErrorHandler.js +31 -11
- package/dist/commands/shared/dataFetcher.d.ts +33 -10
- package/dist/commands/shared/dataFetcher.js +57 -20
- package/dist/commands/shared/followMode.d.ts +0 -3
- package/dist/commands/shared/followMode.js +6 -11
- package/dist/commands/shared/handleValidationError.d.ts +14 -0
- package/dist/commands/shared/handleValidationError.js +39 -0
- package/dist/commands/shared/optionTypes.d.ts +42 -22
- package/dist/commands/shared/outputFile.d.ts +33 -0
- package/dist/commands/shared/outputFile.js +78 -0
- package/dist/commands/shared/startHelpers.d.ts +5 -8
- package/dist/commands/shared/startHelpers.js +226 -37
- package/dist/commands/shared/validation.d.ts +42 -0
- package/dist/commands/shared/validation.js +101 -22
- package/dist/commands/start.d.ts +28 -1
- package/dist/commands/start.js +226 -38
- package/dist/commands/status.js +48 -11
- package/dist/commands/stop.js +16 -26
- package/dist/commands/tail.js +20 -35
- package/dist/commands.js +2 -0
- package/dist/connection/cdp.d.ts +12 -6
- package/dist/connection/cdp.js +59 -16
- package/dist/connection/diagnostics.d.ts +0 -9
- package/dist/connection/diagnostics.js +0 -13
- package/dist/connection/errors.d.ts +36 -1
- package/dist/connection/errors.js +43 -3
- package/dist/connection/handlers.d.ts +5 -5
- package/dist/connection/handlers.js +1 -1
- package/dist/connection/inFlightRequests.d.ts +33 -0
- package/dist/connection/inFlightRequests.js +52 -0
- package/dist/connection/launcher/binaryResolver.js +20 -7
- package/dist/connection/launcher/flagsBuilder.d.ts +24 -54
- package/dist/connection/launcher/flagsBuilder.js +65 -40
- package/dist/connection/launcher/preferencesLoader.js +27 -8
- package/dist/connection/launcher.d.ts +2 -0
- package/dist/connection/launcher.js +48 -29
- package/dist/connection/pageReadiness.d.ts +5 -6
- package/dist/connection/pageReadiness.js +63 -120
- package/dist/connection/portReservation.d.ts +10 -0
- package/dist/connection/portReservation.js +37 -2
- package/dist/connection/startupExit.d.ts +37 -0
- package/dist/connection/startupExit.js +107 -0
- package/dist/connection/typed-cdp.d.ts +8 -6
- package/dist/connection/typed-cdp.js +5 -3
- package/dist/connection/types.d.ts +3 -0
- package/dist/constants.d.ts +21 -22
- package/dist/constants.js +28 -25
- package/dist/daemon/SessionController.d.ts +125 -0
- package/dist/daemon/SessionController.js +472 -0
- package/dist/daemon/errors.d.ts +15 -19
- package/dist/daemon/errors.js +18 -21
- package/dist/daemon/ipcServer.d.ts +44 -30
- package/dist/daemon/ipcServer.js +164 -132
- package/dist/daemon/launcher.d.ts +13 -21
- package/dist/daemon/launcher.js +94 -101
- package/dist/daemon/messages.d.ts +29 -0
- package/dist/daemon/messages.js +35 -0
- package/dist/daemon/patternDefinitions.d.ts +1 -1
- package/dist/daemon/patternDefinitions.js +3 -2
- package/dist/daemon/patternDetector.d.ts +13 -29
- package/dist/daemon/patternDetector.js +26 -47
- package/dist/daemon/server/SocketServer.d.ts +56 -2
- package/dist/daemon/server/SocketServer.js +131 -30
- package/dist/daemon/session/Session.d.ts +137 -0
- package/dist/daemon/session/Session.js +288 -0
- package/dist/daemon/session/TelemetryStore.d.ts +30 -0
- package/dist/daemon/session/TelemetryStore.js +44 -0
- package/dist/daemon/session/cdpSetup.d.ts +47 -0
- package/dist/daemon/session/cdpSetup.js +94 -0
- package/dist/daemon/session/chromeConnection.d.ts +38 -0
- package/dist/daemon/session/chromeConnection.js +178 -0
- package/dist/daemon/{worker → session}/collectors.d.ts +3 -3
- package/dist/daemon/{worker → session}/collectors.js +3 -3
- package/dist/daemon/session/commandRegistry.js +445 -0
- package/dist/daemon/session/interactions.d.ts +27 -0
- package/dist/daemon/session/interactions.js +44 -0
- package/dist/daemon/{worker → session}/plugins.d.ts +3 -3
- package/dist/daemon/session/plugins.js +219 -0
- package/dist/daemon/session/targetMismatch.d.ts +34 -0
- package/dist/daemon/session/targetMismatch.js +83 -0
- package/dist/daemon/session/teardown.d.ts +27 -0
- package/dist/daemon/session/teardown.js +128 -0
- package/dist/daemon/{worker → session}/types.d.ts +2 -2
- package/dist/daemon.d.ts +3 -4
- package/dist/daemon.js +15356 -24
- package/dist/{ui/errors → errors}/CommandError.js +1 -1
- package/dist/{ui/errors → errors}/index.d.ts +2 -0
- package/dist/errors/issues.d.ts +16 -0
- package/dist/errors/issues.js +11 -0
- package/dist/errors/messages.d.ts +545 -0
- package/dist/errors/messages.js +959 -0
- package/dist/errors/notices.d.ts +30 -0
- package/dist/errors/notices.js +11 -0
- package/dist/{ui/errors → errors}/utils.js +1 -1
- package/dist/index.js +16410 -168
- package/dist/ipc/client.d.ts +44 -8
- package/dist/ipc/client.js +95 -18
- package/dist/ipc/index.d.ts +2 -2
- package/dist/ipc/index.js +2 -2
- package/dist/ipc/protocol/commands.d.ts +220 -59
- package/dist/ipc/protocol/commands.js +27 -21
- package/dist/ipc/protocol/domTypes.d.ts +236 -0
- package/dist/ipc/protocol/domTypes.js +10 -0
- package/dist/ipc/protocol/guards.d.ts +4 -4
- package/dist/ipc/protocol/guards.js +4 -4
- package/dist/ipc/protocol/messages.d.ts +9 -33
- package/dist/ipc/protocol/messages.js +1 -1
- package/dist/ipc/session/errors.d.ts +10 -2
- package/dist/ipc/session/errors.js +10 -2
- package/dist/ipc/session/lifecycle.d.ts +20 -22
- package/dist/ipc/session/queries.d.ts +21 -4
- package/dist/ipc/session/types.d.ts +1 -1
- package/dist/ipc/session/types.js +1 -1
- package/dist/ipc/transport/IPCError.d.ts +3 -3
- package/dist/ipc/transport/IPCError.js +3 -3
- package/dist/ipc/transport/index.d.ts +7 -1
- package/dist/ipc/transport/index.js +7 -2
- package/dist/ipc/transport/jsonl.d.ts +28 -2
- package/dist/ipc/transport/jsonl.js +57 -10
- package/dist/ipc/utils/errors.d.ts +4 -2
- package/dist/ipc/utils/errors.js +10 -4
- package/dist/ipc/utils/index.d.ts +0 -1
- package/dist/ipc/utils/index.js +0 -1
- package/dist/ipc/utils/responseValidator.d.ts +5 -1
- package/dist/ipc/utils/responseValidator.js +7 -3
- package/dist/runtime/dom/evalHelpers.d.ts +76 -0
- package/dist/runtime/dom/evalHelpers.js +406 -0
- package/dist/runtime/dom/eventListeners.d.ts +23 -0
- package/dist/runtime/dom/eventListeners.js +252 -0
- package/dist/runtime/dom/formDiscovery.d.ts +26 -0
- package/dist/{commands → runtime}/dom/formDiscovery.js +48 -9
- package/dist/runtime/dom/formFillHelpers/fill.d.ts +29 -0
- package/dist/runtime/dom/formFillHelpers/fill.js +299 -0
- package/dist/runtime/dom/formFillHelpers/index.d.ts +17 -0
- package/dist/runtime/dom/formFillHelpers/index.js +17 -0
- package/dist/runtime/dom/formFillHelpers/pressKey.d.ts +28 -0
- package/dist/runtime/dom/formFillHelpers/pressKey.js +195 -0
- package/dist/runtime/dom/formFillHelpers/scroll.d.ts +24 -0
- package/dist/runtime/dom/formFillHelpers/scroll.js +188 -0
- package/dist/runtime/dom/formFillHelpers/shared.d.ts +43 -0
- package/dist/runtime/dom/formFillHelpers/shared.js +100 -0
- package/dist/runtime/dom/formFillHelpers/stability.d.ts +14 -0
- package/dist/runtime/dom/formFillHelpers/stability.js +40 -0
- package/dist/runtime/dom/formSubmitHelpers.d.ts +29 -0
- package/dist/runtime/dom/formSubmitHelpers.js +252 -0
- package/dist/runtime/dom/formTypes.d.ts +8 -0
- package/dist/runtime/dom/frameSelection.d.ts +27 -0
- package/dist/runtime/dom/frameSelection.js +66 -0
- package/dist/runtime/dom/frames.d.ts +38 -0
- package/dist/runtime/dom/frames.js +305 -0
- package/dist/runtime/dom/keyMapping.d.ts +103 -0
- package/dist/runtime/dom/keyMapping.js +232 -0
- package/dist/runtime/dom/listenerSummary.d.ts +72 -0
- package/dist/runtime/dom/listenerSummary.js +150 -0
- package/dist/runtime/dom/reactEventHelpers.d.ts +61 -0
- package/dist/runtime/dom/reactEventHelpers.js +470 -0
- package/dist/runtime/dom/targetNode.d.ts +78 -0
- package/dist/runtime/dom/targetNode.js +154 -0
- package/dist/runtime/page/navigation.d.ts +34 -0
- package/dist/runtime/page/navigation.js +249 -0
- package/dist/session/QueryCacheManager.d.ts +25 -82
- package/dist/session/QueryCacheManager.js +41 -133
- package/dist/session/chrome.d.ts +21 -16
- package/dist/session/chrome.js +28 -44
- package/dist/session/cleanup/staleSession.d.ts +49 -0
- package/dist/session/cleanup/staleSession.js +124 -0
- package/dist/session/cleanup/userCommands.d.ts +36 -0
- package/dist/session/cleanup/userCommands.js +95 -0
- package/dist/session/daemonSocket.d.ts +25 -0
- package/dist/session/daemonSocket.js +40 -0
- package/dist/session/lastSession.d.ts +29 -0
- package/dist/session/lastSession.js +45 -0
- package/dist/session/metadata.d.ts +3 -1
- package/dist/session/paths.d.ts +2 -4
- package/dist/session/paths.js +2 -4
- package/dist/session/pid.d.ts +9 -38
- package/dist/session/pid.js +14 -64
- package/dist/session/port.d.ts +0 -5
- package/dist/session/port.js +9 -19
- package/dist/telemetry/a11y.d.ts +26 -20
- package/dist/telemetry/a11y.js +237 -104
- package/dist/telemetry/attachedTargets.d.ts +36 -0
- package/dist/telemetry/attachedTargets.js +163 -0
- package/dist/telemetry/console.d.ts +21 -4
- package/dist/telemetry/console.js +122 -11
- package/dist/telemetry/dialogs.d.ts +4 -2
- package/dist/telemetry/dialogs.js +3 -1
- package/dist/telemetry/dom.d.ts +1 -11
- package/dist/telemetry/dom.js +0 -102
- package/dist/telemetry/filterDsl.d.ts +9 -1
- package/dist/telemetry/filterDsl.js +101 -31
- package/dist/telemetry/filterPresets.js +12 -2
- package/dist/telemetry/filters.d.ts +1 -1
- package/dist/telemetry/filters.js +38 -3
- package/dist/telemetry/har/builder.js +190 -160
- package/dist/telemetry/har/types.d.ts +21 -4
- package/dist/telemetry/navigation.d.ts +13 -29
- package/dist/telemetry/navigation.js +12 -46
- package/dist/telemetry/network.d.ts +37 -1
- package/dist/telemetry/network.js +343 -130
- package/dist/telemetry/networkExtraInfo.d.ts +106 -0
- package/dist/telemetry/networkExtraInfo.js +241 -0
- package/dist/telemetry/objectExpander.d.ts +14 -5
- package/dist/telemetry/objectExpander.js +13 -6
- package/dist/telemetry/remoteObject.d.ts +10 -2
- package/dist/telemetry/remoteObject.js +59 -2
- package/dist/telemetry/remoteObjectUtils.js +22 -3
- package/dist/types.d.ts +64 -44
- package/dist/types.js +1 -33
- package/dist/ui/OutputBuilder.d.ts +17 -14
- package/dist/ui/OutputBuilder.js +18 -87
- package/dist/ui/formatters/a11y.js +72 -9
- package/dist/ui/formatters/console/chronological.d.ts +14 -0
- package/dist/ui/formatters/console/chronological.js +58 -0
- package/dist/ui/formatters/console/follow.d.ts +18 -0
- package/dist/ui/formatters/console/follow.js +36 -0
- package/dist/ui/formatters/console/json.d.ts +21 -0
- package/dist/ui/formatters/console/json.js +53 -0
- package/dist/ui/formatters/console/shared.d.ts +136 -0
- package/dist/ui/formatters/console/shared.js +158 -0
- package/dist/ui/formatters/console/summarize.d.ts +10 -0
- package/dist/ui/formatters/console/summarize.js +63 -0
- package/dist/ui/formatters/console.d.ts +16 -137
- package/dist/ui/formatters/console.js +17 -418
- package/dist/ui/formatters/cookies.js +3 -3
- package/dist/ui/formatters/details.d.ts +5 -2
- package/dist/ui/formatters/details.js +183 -24
- package/dist/ui/formatters/dom.d.ts +27 -6
- package/dist/ui/formatters/dom.js +80 -28
- package/dist/ui/formatters/form.js +35 -56
- package/dist/ui/formatters/helpFormatters.js +5 -4
- package/dist/ui/formatters/listeners.d.ts +24 -0
- package/dist/ui/formatters/listeners.js +96 -0
- package/dist/ui/formatters/networkHeaders.d.ts +3 -3
- package/dist/ui/formatters/networkHeaders.js +7 -4
- package/dist/ui/formatters/networkList.d.ts +14 -2
- package/dist/ui/formatters/networkList.js +80 -35
- package/dist/ui/formatters/preview.d.ts +21 -3
- package/dist/ui/formatters/preview.js +53 -72
- package/dist/ui/formatters/requestStatus.d.ts +34 -0
- package/dist/ui/formatters/requestStatus.js +55 -0
- package/dist/ui/formatters/semantic.d.ts +1 -1
- package/dist/ui/formatters/semantic.js +1 -1
- package/dist/ui/formatters/sessionFormatters.js +11 -8
- package/dist/ui/formatters/status.d.ts +23 -5
- package/dist/ui/formatters/status.js +48 -24
- package/dist/ui/formatting.d.ts +35 -0
- package/dist/ui/formatting.js +122 -23
- package/dist/ui/logging/logger.d.ts +1 -1
- package/dist/ui/messages/chrome.d.ts +35 -100
- package/dist/ui/messages/chrome.js +102 -136
- package/dist/ui/messages/commands.d.ts +121 -3
- package/dist/ui/messages/commands.js +153 -6
- package/dist/ui/messages/consoleMessages.d.ts +0 -6
- package/dist/ui/messages/consoleMessages.js +0 -8
- package/dist/ui/messages/hints.d.ts +9 -15
- package/dist/ui/messages/hints.js +17 -16
- package/dist/ui/messages/networkMessages.d.ts +0 -6
- package/dist/ui/messages/networkMessages.js +0 -8
- package/dist/ui/messages/preview.js +2 -2
- package/dist/ui/messages/session.d.ts +24 -3
- package/dist/ui/messages/session.js +38 -7
- package/dist/ui/messages/validation.d.ts +15 -26
- package/dist/ui/messages/validation.js +33 -38
- package/dist/utils/atomicFile.js +1 -1
- package/dist/utils/decisionTrees.js +1 -1
- package/dist/utils/errorMapping.js +15 -4
- package/dist/utils/errors.d.ts +13 -0
- package/dist/utils/errors.js +21 -0
- package/dist/utils/exitCodes.d.ts +5 -0
- package/dist/utils/exitCodes.js +36 -2
- package/dist/utils/http.d.ts +35 -4
- package/dist/utils/http.js +59 -6
- package/dist/utils/packageRoot.d.ts +12 -0
- package/dist/utils/packageRoot.js +33 -0
- package/dist/utils/process.d.ts +10 -0
- package/dist/utils/process.js +35 -3
- package/dist/utils/selectorFilters.d.ts +45 -0
- package/dist/utils/selectorFilters.js +224 -0
- package/dist/utils/suggestions.js +1 -1
- package/dist/utils/taskMappings.js +7 -2
- package/dist/utils/typeGuards.js +2 -2
- package/dist/utils/url.d.ts +13 -5
- package/dist/utils/url.js +53 -52
- package/dist/utils/validation.d.ts +15 -93
- package/dist/utils/validation.js +10 -118
- package/dist/utils/version.js +3 -5
- package/package.json +39 -30
- package/dist/__testfixtures__/cdpMessages.d.ts +0 -43
- package/dist/__testfixtures__/cdpMessages.d.ts.map +0 -1
- package/dist/__testfixtures__/cdpMessages.js +0 -118
- package/dist/__testfixtures__/cdpMessages.js.map +0 -1
- package/dist/__testfixtures__/connectionTargets.d.ts +0 -21
- package/dist/__testfixtures__/connectionTargets.d.ts.map +0 -1
- package/dist/__testfixtures__/connectionTargets.js +0 -59
- package/dist/__testfixtures__/connectionTargets.js.map +0 -1
- package/dist/__tests__/fixtures/schema-v0.2.1.golden.json +0 -47
- package/dist/__tests__/integration/session-files.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/session-files.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/session-files.integration.test.js +0 -66
- package/dist/__tests__/integration/session-files.integration.test.js.map +0 -1
- package/dist/__tests__/schema.contract.test.d.ts +0 -19
- package/dist/__tests__/schema.contract.test.d.ts.map +0 -1
- package/dist/__tests__/schema.contract.test.js +0 -236
- package/dist/__tests__/schema.contract.test.js.map +0 -1
- package/dist/__tests__/smoke/error-handling.smoke.test.d.ts +0 -8
- package/dist/__tests__/smoke/error-handling.smoke.test.d.ts.map +0 -1
- package/dist/__tests__/smoke/error-handling.smoke.test.js +0 -66
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +0 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts +0 -8
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts.map +0 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +0 -112
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +0 -1
- package/dist/__tests__/telemetry/filterDsl.unit.test.d.ts +0 -12
- package/dist/__tests__/telemetry/filterDsl.unit.test.d.ts.map +0 -1
- package/dist/__tests__/telemetry/filterDsl.unit.test.js +0 -374
- package/dist/__tests__/telemetry/filterDsl.unit.test.js.map +0 -1
- package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts +0 -10
- package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts.map +0 -1
- package/dist/__tests__/telemetry/filterPresets.unit.test.js +0 -89
- package/dist/__tests__/telemetry/filterPresets.unit.test.js.map +0 -1
- package/dist/__testutils__/FakeClock.d.ts +0 -67
- package/dist/__testutils__/FakeClock.d.ts.map +0 -1
- package/dist/__testutils__/FakeClock.js +0 -132
- package/dist/__testutils__/FakeClock.js.map +0 -1
- package/dist/__testutils__/FakeWebSocket.d.ts +0 -106
- package/dist/__testutils__/FakeWebSocket.d.ts.map +0 -1
- package/dist/__testutils__/FakeWebSocket.js +0 -213
- package/dist/__testutils__/FakeWebSocket.js.map +0 -1
- package/dist/__testutils__/assertions.d.ts +0 -33
- package/dist/__testutils__/assertions.d.ts.map +0 -1
- package/dist/__testutils__/assertions.js +0 -57
- package/dist/__testutils__/assertions.js.map +0 -1
- package/dist/__testutils__/commandRunner.d.ts +0 -45
- package/dist/__testutils__/commandRunner.d.ts.map +0 -1
- package/dist/__testutils__/commandRunner.js +0 -108
- package/dist/__testutils__/commandRunner.js.map +0 -1
- package/dist/__testutils__/daemonHelpers.d.ts +0 -93
- package/dist/__testutils__/daemonHelpers.d.ts.map +0 -1
- package/dist/__testutils__/daemonHelpers.js +0 -255
- package/dist/__testutils__/daemonHelpers.js.map +0 -1
- package/dist/__testutils__/index.d.ts +0 -16
- package/dist/__testutils__/index.d.ts.map +0 -1
- package/dist/__testutils__/index.js +0 -16
- package/dist/__testutils__/index.js.map +0 -1
- package/dist/__testutils__/testCleanup.d.ts +0 -45
- package/dist/__testutils__/testCleanup.d.ts.map +0 -1
- package/dist/__testutils__/testCleanup.js +0 -87
- package/dist/__testutils__/testCleanup.js.map +0 -1
- package/dist/__testutils__/testClock.d.ts +0 -28
- package/dist/__testutils__/testClock.d.ts.map +0 -1
- package/dist/__testutils__/testClock.js +0 -81
- package/dist/__testutils__/testClock.js.map +0 -1
- package/dist/__testutils__/testFixtures.d.ts +0 -15
- package/dist/__testutils__/testFixtures.d.ts.map +0 -1
- package/dist/__testutils__/testFixtures.js +0 -23
- package/dist/__testutils__/testFixtures.js.map +0 -1
- package/dist/__testutils__/testHome.d.ts +0 -26
- package/dist/__testutils__/testHome.d.ts.map +0 -1
- package/dist/__testutils__/testHome.js +0 -57
- package/dist/__testutils__/testHome.js.map +0 -1
- package/dist/__testutils__/testProcess.d.ts +0 -46
- package/dist/__testutils__/testProcess.d.ts.map +0 -1
- package/dist/__testutils__/testProcess.js +0 -85
- package/dist/__testutils__/testProcess.js.map +0 -1
- package/dist/cdp/protocol.d.ts.map +0 -1
- package/dist/cdp/protocol.js.map +0 -1
- package/dist/cdp/schema.d.ts.map +0 -1
- package/dist/cdp/schema.js.map +0 -1
- package/dist/cdp/types.d.ts.map +0 -1
- package/dist/cdp/types.js.map +0 -1
- package/dist/commands/__tests__/cdp.contract.test.d.ts +0 -24
- package/dist/commands/__tests__/cdp.contract.test.d.ts.map +0 -1
- package/dist/commands/__tests__/cdp.contract.test.js +0 -466
- package/dist/commands/__tests__/cdp.contract.test.js.map +0 -1
- package/dist/commands/__tests__/console.contract.test.d.ts +0 -9
- package/dist/commands/__tests__/console.contract.test.d.ts.map +0 -1
- package/dist/commands/__tests__/console.contract.test.js +0 -118
- package/dist/commands/__tests__/console.contract.test.js.map +0 -1
- package/dist/commands/__tests__/domEval.contract.test.d.ts +0 -17
- package/dist/commands/__tests__/domEval.contract.test.d.ts.map +0 -1
- package/dist/commands/__tests__/domEval.contract.test.js +0 -235
- package/dist/commands/__tests__/domEval.contract.test.js.map +0 -1
- package/dist/commands/__tests__/helpJson.contract.test.d.ts +0 -12
- package/dist/commands/__tests__/helpJson.contract.test.d.ts.map +0 -1
- package/dist/commands/__tests__/helpJson.contract.test.js +0 -121
- package/dist/commands/__tests__/helpJson.contract.test.js.map +0 -1
- package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts +0 -12
- package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts.map +0 -1
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js +0 -121
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js.map +0 -1
- package/dist/commands/cdp.d.ts.map +0 -1
- package/dist/commands/cdp.js.map +0 -1
- package/dist/commands/cleanup.d.ts.map +0 -1
- package/dist/commands/cleanup.js.map +0 -1
- package/dist/commands/console.d.ts.map +0 -1
- package/dist/commands/console.js.map +0 -1
- package/dist/commands/details.d.ts.map +0 -1
- package/dist/commands/details.js.map +0 -1
- package/dist/commands/dom/DomElementResolver.d.ts.map +0 -1
- package/dist/commands/dom/DomElementResolver.js.map +0 -1
- package/dist/commands/dom/__tests__/screenshotResize.unit.test.d.ts +0 -2
- package/dist/commands/dom/__tests__/screenshotResize.unit.test.d.ts.map +0 -1
- package/dist/commands/dom/__tests__/screenshotResize.unit.test.js +0 -184
- package/dist/commands/dom/__tests__/screenshotResize.unit.test.js.map +0 -1
- package/dist/commands/dom/a11y.d.ts.map +0 -1
- package/dist/commands/dom/a11y.js.map +0 -1
- package/dist/commands/dom/evalHelpers.d.ts +0 -38
- package/dist/commands/dom/evalHelpers.d.ts.map +0 -1
- package/dist/commands/dom/evalHelpers.js +0 -121
- package/dist/commands/dom/evalHelpers.js.map +0 -1
- package/dist/commands/dom/form.d.ts.map +0 -1
- package/dist/commands/dom/form.js.map +0 -1
- package/dist/commands/dom/formDiscovery.d.ts +0 -26
- package/dist/commands/dom/formDiscovery.d.ts.map +0 -1
- package/dist/commands/dom/formDiscovery.js.map +0 -1
- package/dist/commands/dom/formFillHelpers.d.ts +0 -186
- package/dist/commands/dom/formFillHelpers.d.ts.map +0 -1
- package/dist/commands/dom/formFillHelpers.js +0 -650
- package/dist/commands/dom/formFillHelpers.js.map +0 -1
- package/dist/commands/dom/formInteraction.d.ts.map +0 -1
- package/dist/commands/dom/formInteraction.js.map +0 -1
- package/dist/commands/dom/formSubmitHelpers.d.ts +0 -59
- package/dist/commands/dom/formSubmitHelpers.d.ts.map +0 -1
- package/dist/commands/dom/formSubmitHelpers.js +0 -163
- package/dist/commands/dom/formSubmitHelpers.js.map +0 -1
- package/dist/commands/dom/formTypes.d.ts +0 -75
- package/dist/commands/dom/formTypes.d.ts.map +0 -1
- package/dist/commands/dom/formTypes.js.map +0 -1
- package/dist/commands/dom/helpers.d.ts +0 -86
- package/dist/commands/dom/helpers.d.ts.map +0 -1
- package/dist/commands/dom/helpers.js +0 -656
- package/dist/commands/dom/helpers.js.map +0 -1
- package/dist/commands/dom/index.d.ts.map +0 -1
- package/dist/commands/dom/index.js.map +0 -1
- package/dist/commands/dom/keyMapping.d.ts +0 -56
- package/dist/commands/dom/keyMapping.d.ts.map +0 -1
- package/dist/commands/dom/keyMapping.js +0 -110
- package/dist/commands/dom/keyMapping.js.map +0 -1
- package/dist/commands/dom/reactEventHelpers.d.ts +0 -79
- package/dist/commands/dom/reactEventHelpers.d.ts.map +0 -1
- package/dist/commands/dom/reactEventHelpers.js +0 -239
- package/dist/commands/dom/reactEventHelpers.js.map +0 -1
- package/dist/commands/dom/screenshotResize.d.ts.map +0 -1
- package/dist/commands/dom/screenshotResize.js.map +0 -1
- package/dist/commands/helpJson.d.ts.map +0 -1
- package/dist/commands/helpJson.js.map +0 -1
- package/dist/commands/machineReadableHelp.d.ts +0 -165
- package/dist/commands/machineReadableHelp.d.ts.map +0 -1
- package/dist/commands/machineReadableHelp.js +0 -252
- package/dist/commands/machineReadableHelp.js.map +0 -1
- package/dist/commands/network/har.d.ts.map +0 -1
- package/dist/commands/network/har.js.map +0 -1
- package/dist/commands/network/index.d.ts.map +0 -1
- package/dist/commands/network/index.js.map +0 -1
- package/dist/commands/network/list.d.ts.map +0 -1
- package/dist/commands/network/list.js.map +0 -1
- package/dist/commands/network/shared.d.ts.map +0 -1
- package/dist/commands/network/shared.js.map +0 -1
- package/dist/commands/network.d.ts +0 -8
- package/dist/commands/network.d.ts.map +0 -1
- package/dist/commands/network.js +0 -216
- package/dist/commands/network.js.map +0 -1
- package/dist/commands/optionBehaviors.d.ts.map +0 -1
- package/dist/commands/optionBehaviors.js.map +0 -1
- package/dist/commands/peek.d.ts.map +0 -1
- package/dist/commands/peek.js.map +0 -1
- package/dist/commands/shared/CommandRunner.d.ts.map +0 -1
- package/dist/commands/shared/CommandRunner.js.map +0 -1
- package/dist/commands/shared/__tests__/validation.unit.test.d.ts +0 -7
- package/dist/commands/shared/__tests__/validation.unit.test.d.ts.map +0 -1
- package/dist/commands/shared/__tests__/validation.unit.test.js +0 -141
- package/dist/commands/shared/__tests__/validation.unit.test.js.map +0 -1
- package/dist/commands/shared/commonOptions.d.ts.map +0 -1
- package/dist/commands/shared/commonOptions.js.map +0 -1
- package/dist/commands/shared/daemonErrorHandler.d.ts.map +0 -1
- package/dist/commands/shared/daemonErrorHandler.js.map +0 -1
- package/dist/commands/shared/dataFetcher.d.ts.map +0 -1
- package/dist/commands/shared/dataFetcher.js.map +0 -1
- package/dist/commands/shared/followMode.d.ts.map +0 -1
- package/dist/commands/shared/followMode.js.map +0 -1
- package/dist/commands/shared/landingPage.d.ts.map +0 -1
- package/dist/commands/shared/landingPage.js.map +0 -1
- package/dist/commands/shared/optionTypes.d.ts.map +0 -1
- package/dist/commands/shared/optionTypes.js.map +0 -1
- package/dist/commands/shared/startHelpers.d.ts.map +0 -1
- package/dist/commands/shared/startHelpers.js.map +0 -1
- package/dist/commands/shared/validation.d.ts.map +0 -1
- package/dist/commands/shared/validation.js.map +0 -1
- package/dist/commands/start.d.ts.map +0 -1
- package/dist/commands/start.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/stop.d.ts.map +0 -1
- package/dist/commands/stop.js.map +0 -1
- package/dist/commands/tail.d.ts.map +0 -1
- package/dist/commands/tail.js.map +0 -1
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/commands.d.ts.map +0 -1
- package/dist/commands.js.map +0 -1
- package/dist/connection/__tests__/cdp.contract.test.d.ts +0 -16
- package/dist/connection/__tests__/cdp.contract.test.d.ts.map +0 -1
- package/dist/connection/__tests__/cdp.contract.test.js +0 -377
- package/dist/connection/__tests__/cdp.contract.test.js.map +0 -1
- package/dist/connection/__tests__/flagsBuilder.unit.test.d.ts +0 -9
- package/dist/connection/__tests__/flagsBuilder.unit.test.d.ts.map +0 -1
- package/dist/connection/__tests__/flagsBuilder.unit.test.js +0 -94
- package/dist/connection/__tests__/flagsBuilder.unit.test.js.map +0 -1
- package/dist/connection/__tests__/handlers.unit.test.d.ts +0 -11
- package/dist/connection/__tests__/handlers.unit.test.d.ts.map +0 -1
- package/dist/connection/__tests__/handlers.unit.test.js +0 -220
- package/dist/connection/__tests__/handlers.unit.test.js.map +0 -1
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +0 -14
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +0 -1
- package/dist/connection/__tests__/pageReadiness.contract.test.js +0 -382
- package/dist/connection/__tests__/pageReadiness.contract.test.js.map +0 -1
- package/dist/connection/__tests__/portReservation.contract.test.d.ts +0 -14
- package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +0 -1
- package/dist/connection/__tests__/portReservation.contract.test.js +0 -250
- package/dist/connection/__tests__/portReservation.contract.test.js.map +0 -1
- package/dist/connection/cdp.d.ts.map +0 -1
- package/dist/connection/cdp.js.map +0 -1
- package/dist/connection/config.d.ts.map +0 -1
- package/dist/connection/config.js.map +0 -1
- package/dist/connection/diagnostics.d.ts.map +0 -1
- package/dist/connection/diagnostics.js.map +0 -1
- package/dist/connection/errors.d.ts.map +0 -1
- package/dist/connection/errors.js.map +0 -1
- package/dist/connection/events.d.ts.map +0 -1
- package/dist/connection/events.js.map +0 -1
- package/dist/connection/handlers.d.ts.map +0 -1
- package/dist/connection/handlers.js.map +0 -1
- package/dist/connection/launcher/binaryResolver.d.ts.map +0 -1
- package/dist/connection/launcher/binaryResolver.js.map +0 -1
- package/dist/connection/launcher/flagsBuilder.d.ts.map +0 -1
- package/dist/connection/launcher/flagsBuilder.js.map +0 -1
- package/dist/connection/launcher/preferencesLoader.d.ts.map +0 -1
- package/dist/connection/launcher/preferencesLoader.js.map +0 -1
- package/dist/connection/launcher.d.ts.map +0 -1
- package/dist/connection/launcher.js.map +0 -1
- package/dist/connection/pageReadiness.d.ts.map +0 -1
- package/dist/connection/pageReadiness.js.map +0 -1
- package/dist/connection/portReservation.d.ts.map +0 -1
- package/dist/connection/portReservation.js.map +0 -1
- package/dist/connection/typed-cdp.d.ts.map +0 -1
- package/dist/connection/typed-cdp.js.map +0 -1
- package/dist/connection/types.d.ts.map +0 -1
- package/dist/connection/types.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +0 -8
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/JsonlParser.unit.test.js +0 -140
- package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +0 -1
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +0 -8
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +0 -276
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +0 -1
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +0 -8
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js +0 -290
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +0 -1
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +0 -8
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/commandRegistry.contract.test.js +0 -647
- package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +0 -1
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts +0 -19
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js +0 -212
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js.map +0 -1
- package/dist/daemon/__tests__/ipcServer.contract.test.d.ts +0 -23
- package/dist/daemon/__tests__/ipcServer.contract.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/ipcServer.contract.test.js +0 -416
- package/dist/daemon/__tests__/ipcServer.contract.test.js.map +0 -1
- package/dist/daemon/__tests__/launcher.unit.test.d.ts +0 -8
- package/dist/daemon/__tests__/launcher.unit.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/launcher.unit.test.js +0 -20
- package/dist/daemon/__tests__/launcher.unit.test.js.map +0 -1
- package/dist/daemon/errors.d.ts.map +0 -1
- package/dist/daemon/errors.js.map +0 -1
- package/dist/daemon/handlers/BaseHandler.d.ts +0 -75
- package/dist/daemon/handlers/BaseHandler.d.ts.map +0 -1
- package/dist/daemon/handlers/BaseHandler.js +0 -103
- package/dist/daemon/handlers/BaseHandler.js.map +0 -1
- package/dist/daemon/handlers/CommandHandlers.d.ts +0 -36
- package/dist/daemon/handlers/CommandHandlers.d.ts.map +0 -1
- package/dist/daemon/handlers/CommandHandlers.js +0 -60
- package/dist/daemon/handlers/CommandHandlers.js.map +0 -1
- package/dist/daemon/handlers/QueryHandlers.d.ts +0 -37
- package/dist/daemon/handlers/QueryHandlers.d.ts.map +0 -1
- package/dist/daemon/handlers/QueryHandlers.js +0 -126
- package/dist/daemon/handlers/QueryHandlers.js.map +0 -1
- package/dist/daemon/handlers/SessionHandlers.d.ts +0 -32
- package/dist/daemon/handlers/SessionHandlers.d.ts.map +0 -1
- package/dist/daemon/handlers/SessionHandlers.js +0 -213
- package/dist/daemon/handlers/SessionHandlers.js.map +0 -1
- package/dist/daemon/handlers/pendingRequests.d.ts +0 -50
- package/dist/daemon/handlers/pendingRequests.d.ts.map +0 -1
- package/dist/daemon/handlers/pendingRequests.js +0 -57
- package/dist/daemon/handlers/pendingRequests.js.map +0 -1
- package/dist/daemon/handlers/requestHandlers.d.ts +0 -55
- package/dist/daemon/handlers/requestHandlers.d.ts.map +0 -1
- package/dist/daemon/handlers/requestHandlers.js +0 -66
- package/dist/daemon/handlers/requestHandlers.js.map +0 -1
- package/dist/daemon/handlers/responseHandler.d.ts +0 -42
- package/dist/daemon/handlers/responseHandler.d.ts.map +0 -1
- package/dist/daemon/handlers/responseHandler.js +0 -217
- package/dist/daemon/handlers/responseHandler.js.map +0 -1
- package/dist/daemon/ipcServer.d.ts.map +0 -1
- package/dist/daemon/ipcServer.js.map +0 -1
- package/dist/daemon/launcher.d.ts.map +0 -1
- package/dist/daemon/launcher.js.map +0 -1
- package/dist/daemon/lifecycle/cdpSetup.d.ts +0 -24
- package/dist/daemon/lifecycle/cdpSetup.d.ts.map +0 -1
- package/dist/daemon/lifecycle/cdpSetup.js +0 -55
- package/dist/daemon/lifecycle/cdpSetup.js.map +0 -1
- package/dist/daemon/lifecycle/chromeConnection.d.ts +0 -17
- package/dist/daemon/lifecycle/chromeConnection.d.ts.map +0 -1
- package/dist/daemon/lifecycle/chromeConnection.js +0 -79
- package/dist/daemon/lifecycle/chromeConnection.js.map +0 -1
- package/dist/daemon/lifecycle/signalHandlers.d.ts +0 -14
- package/dist/daemon/lifecycle/signalHandlers.d.ts.map +0 -1
- package/dist/daemon/lifecycle/signalHandlers.js +0 -48
- package/dist/daemon/lifecycle/signalHandlers.js.map +0 -1
- package/dist/daemon/lifecycle/workerCleanup.d.ts +0 -27
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +0 -1
- package/dist/daemon/lifecycle/workerCleanup.js +0 -143
- package/dist/daemon/lifecycle/workerCleanup.js.map +0 -1
- package/dist/daemon/lifecycle/workerConfig.d.ts +0 -14
- package/dist/daemon/lifecycle/workerConfig.d.ts.map +0 -1
- package/dist/daemon/lifecycle/workerConfig.js +0 -69
- package/dist/daemon/lifecycle/workerConfig.js.map +0 -1
- package/dist/daemon/lifecycle/workerIpc.d.ts +0 -14
- package/dist/daemon/lifecycle/workerIpc.d.ts.map +0 -1
- package/dist/daemon/lifecycle/workerIpc.js +0 -86
- package/dist/daemon/lifecycle/workerIpc.js.map +0 -1
- package/dist/daemon/patternDefinitions.d.ts.map +0 -1
- package/dist/daemon/patternDefinitions.js.map +0 -1
- package/dist/daemon/patternDetector.d.ts.map +0 -1
- package/dist/daemon/patternDetector.js.map +0 -1
- package/dist/daemon/server/JsonlParser.d.ts +0 -31
- package/dist/daemon/server/JsonlParser.d.ts.map +0 -1
- package/dist/daemon/server/JsonlParser.js +0 -55
- package/dist/daemon/server/JsonlParser.js.map +0 -1
- package/dist/daemon/server/SocketServer.d.ts.map +0 -1
- package/dist/daemon/server/SocketServer.js.map +0 -1
- package/dist/daemon/server/WorkerManager.d.ts +0 -36
- package/dist/daemon/server/WorkerManager.d.ts.map +0 -1
- package/dist/daemon/server/WorkerManager.js +0 -89
- package/dist/daemon/server/WorkerManager.js.map +0 -1
- package/dist/daemon/services/SessionService.d.ts +0 -87
- package/dist/daemon/services/SessionService.d.ts.map +0 -1
- package/dist/daemon/services/SessionService.js +0 -45
- package/dist/daemon/services/SessionService.js.map +0 -1
- package/dist/daemon/startSession.d.ts +0 -55
- package/dist/daemon/startSession.d.ts.map +0 -1
- package/dist/daemon/startSession.js +0 -168
- package/dist/daemon/startSession.js.map +0 -1
- package/dist/daemon/worker/TelemetryStore.d.ts +0 -19
- package/dist/daemon/worker/TelemetryStore.d.ts.map +0 -1
- package/dist/daemon/worker/TelemetryStore.js +0 -53
- package/dist/daemon/worker/TelemetryStore.js.map +0 -1
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts +0 -11
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts.map +0 -1
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js +0 -136
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js.map +0 -1
- package/dist/daemon/worker/collectors.d.ts.map +0 -1
- package/dist/daemon/worker/collectors.js.map +0 -1
- package/dist/daemon/worker/commandRegistry.d.ts.map +0 -1
- package/dist/daemon/worker/commandRegistry.js +0 -236
- package/dist/daemon/worker/commandRegistry.js.map +0 -1
- package/dist/daemon/worker/plugins.d.ts.map +0 -1
- package/dist/daemon/worker/plugins.js +0 -75
- package/dist/daemon/worker/plugins.js.map +0 -1
- package/dist/daemon/worker/types.d.ts.map +0 -1
- package/dist/daemon/worker/types.js.map +0 -1
- package/dist/daemon/worker.d.ts +0 -9
- package/dist/daemon/worker.d.ts.map +0 -1
- package/dist/daemon/worker.js +0 -98
- package/dist/daemon/worker.js.map +0 -1
- package/dist/daemon/workerIpc.d.ts +0 -33
- package/dist/daemon/workerIpc.d.ts.map +0 -1
- package/dist/daemon/workerIpc.js +0 -8
- package/dist/daemon/workerIpc.js.map +0 -1
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ipc/__tests__/client.contract.test.d.ts +0 -8
- package/dist/ipc/__tests__/client.contract.test.d.ts.map +0 -1
- package/dist/ipc/__tests__/client.contract.test.js +0 -693
- package/dist/ipc/__tests__/client.contract.test.js.map +0 -1
- package/dist/ipc/__tests__/errors.unit.test.d.ts +0 -7
- package/dist/ipc/__tests__/errors.unit.test.d.ts.map +0 -1
- package/dist/ipc/__tests__/errors.unit.test.js +0 -77
- package/dist/ipc/__tests__/errors.unit.test.js.map +0 -1
- package/dist/ipc/__tests__/guards.unit.test.d.ts +0 -7
- package/dist/ipc/__tests__/guards.unit.test.d.ts.map +0 -1
- package/dist/ipc/__tests__/guards.unit.test.js +0 -73
- package/dist/ipc/__tests__/guards.unit.test.js.map +0 -1
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts +0 -7
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +0 -1
- package/dist/ipc/__tests__/jsonl.unit.test.js +0 -103
- package/dist/ipc/__tests__/jsonl.unit.test.js.map +0 -1
- package/dist/ipc/__tests__/validation.unit.test.d.ts +0 -7
- package/dist/ipc/__tests__/validation.unit.test.d.ts.map +0 -1
- package/dist/ipc/__tests__/validation.unit.test.js +0 -60
- package/dist/ipc/__tests__/validation.unit.test.js.map +0 -1
- package/dist/ipc/client.d.ts.map +0 -1
- package/dist/ipc/client.js.map +0 -1
- package/dist/ipc/index.d.ts.map +0 -1
- package/dist/ipc/index.js.map +0 -1
- package/dist/ipc/protocol/commands.d.ts.map +0 -1
- package/dist/ipc/protocol/commands.js.map +0 -1
- package/dist/ipc/protocol/guards.d.ts.map +0 -1
- package/dist/ipc/protocol/guards.js.map +0 -1
- package/dist/ipc/protocol/index.d.ts.map +0 -1
- package/dist/ipc/protocol/index.js.map +0 -1
- package/dist/ipc/protocol/messages.d.ts.map +0 -1
- package/dist/ipc/protocol/messages.js.map +0 -1
- package/dist/ipc/session/errors.d.ts.map +0 -1
- package/dist/ipc/session/errors.js.map +0 -1
- package/dist/ipc/session/index.d.ts.map +0 -1
- package/dist/ipc/session/index.js.map +0 -1
- package/dist/ipc/session/lifecycle.d.ts.map +0 -1
- package/dist/ipc/session/lifecycle.js.map +0 -1
- package/dist/ipc/session/queries.d.ts.map +0 -1
- package/dist/ipc/session/queries.js.map +0 -1
- package/dist/ipc/session/types.d.ts.map +0 -1
- package/dist/ipc/session/types.js.map +0 -1
- package/dist/ipc/transport/IPCError.d.ts.map +0 -1
- package/dist/ipc/transport/IPCError.js.map +0 -1
- package/dist/ipc/transport/errors.d.ts.map +0 -1
- package/dist/ipc/transport/errors.js.map +0 -1
- package/dist/ipc/transport/index.d.ts.map +0 -1
- package/dist/ipc/transport/index.js.map +0 -1
- package/dist/ipc/transport/jsonl.d.ts.map +0 -1
- package/dist/ipc/transport/jsonl.js.map +0 -1
- package/dist/ipc/transport/socket.d.ts.map +0 -1
- package/dist/ipc/transport/socket.js.map +0 -1
- package/dist/ipc/transport/validation.d.ts.map +0 -1
- package/dist/ipc/transport/validation.js.map +0 -1
- package/dist/ipc/utils/errors.d.ts.map +0 -1
- package/dist/ipc/utils/errors.js.map +0 -1
- package/dist/ipc/utils/index.d.ts.map +0 -1
- package/dist/ipc/utils/index.js.map +0 -1
- package/dist/ipc/utils/requestId.d.ts +0 -23
- package/dist/ipc/utils/requestId.d.ts.map +0 -1
- package/dist/ipc/utils/requestId.js +0 -27
- package/dist/ipc/utils/requestId.js.map +0 -1
- package/dist/ipc/utils/responseValidator.d.ts.map +0 -1
- package/dist/ipc/utils/responseValidator.js.map +0 -1
- package/dist/ipc/utils/session.d.ts.map +0 -1
- package/dist/ipc/utils/session.js.map +0 -1
- package/dist/ipc/utils/types.d.ts.map +0 -1
- package/dist/ipc/utils/types.js.map +0 -1
- package/dist/session/QueryCacheManager.d.ts.map +0 -1
- package/dist/session/QueryCacheManager.js.map +0 -1
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts +0 -7
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +0 -1
- package/dist/session/__tests__/chrome-cache.contract.test.js +0 -77
- package/dist/session/__tests__/chrome-cache.contract.test.js.map +0 -1
- package/dist/session/__tests__/cleanup.contract.test.d.ts +0 -7
- package/dist/session/__tests__/cleanup.contract.test.d.ts.map +0 -1
- package/dist/session/__tests__/cleanup.contract.test.js +0 -84
- package/dist/session/__tests__/cleanup.contract.test.js.map +0 -1
- package/dist/session/__tests__/lock.contract.test.d.ts +0 -7
- package/dist/session/__tests__/lock.contract.test.d.ts.map +0 -1
- package/dist/session/__tests__/lock.contract.test.js +0 -77
- package/dist/session/__tests__/lock.contract.test.js.map +0 -1
- package/dist/session/__tests__/metadata.contract.test.d.ts +0 -7
- package/dist/session/__tests__/metadata.contract.test.d.ts.map +0 -1
- package/dist/session/__tests__/metadata.contract.test.js +0 -87
- package/dist/session/__tests__/metadata.contract.test.js.map +0 -1
- package/dist/session/chrome.d.ts.map +0 -1
- package/dist/session/chrome.js.map +0 -1
- package/dist/session/cleanup.d.ts +0 -141
- package/dist/session/cleanup.d.ts.map +0 -1
- package/dist/session/cleanup.js +0 -514
- package/dist/session/cleanup.js.map +0 -1
- package/dist/session/lock.d.ts +0 -57
- package/dist/session/lock.d.ts.map +0 -1
- package/dist/session/lock.js +0 -165
- package/dist/session/lock.js.map +0 -1
- package/dist/session/metadata.d.ts.map +0 -1
- package/dist/session/metadata.js.map +0 -1
- package/dist/session/output.d.ts +0 -18
- package/dist/session/output.d.ts.map +0 -1
- package/dist/session/output.js +0 -24
- package/dist/session/output.js.map +0 -1
- package/dist/session/paths.d.ts.map +0 -1
- package/dist/session/paths.js.map +0 -1
- package/dist/session/pid.d.ts.map +0 -1
- package/dist/session/pid.js.map +0 -1
- package/dist/session/port.d.ts.map +0 -1
- package/dist/session/port.js.map +0 -1
- package/dist/session/process.d.ts +0 -8
- package/dist/session/process.d.ts.map +0 -1
- package/dist/session/process.js +0 -8
- package/dist/session/process.js.map +0 -1
- package/dist/session/queryCache.d.ts +0 -46
- package/dist/session/queryCache.d.ts.map +0 -1
- package/dist/session/queryCache.js +0 -54
- package/dist/session/queryCache.js.map +0 -1
- package/dist/session/statusData.d.ts.map +0 -1
- package/dist/session/statusData.js.map +0 -1
- package/dist/telemetry/__tests__/a11y.unit.test.d.ts +0 -10
- package/dist/telemetry/__tests__/a11y.unit.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/a11y.unit.test.js +0 -265
- package/dist/telemetry/__tests__/a11y.unit.test.js.map +0 -1
- package/dist/telemetry/__tests__/filters.unit.test.d.ts +0 -2
- package/dist/telemetry/__tests__/filters.unit.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/filters.unit.test.js +0 -357
- package/dist/telemetry/__tests__/filters.unit.test.js.map +0 -1
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts +0 -8
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/navigation.contract.test.js +0 -211
- package/dist/telemetry/__tests__/navigation.contract.test.js.map +0 -1
- package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -8
- package/dist/telemetry/__tests__/network.contract.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/network.contract.test.js +0 -623
- package/dist/telemetry/__tests__/network.contract.test.js.map +0 -1
- package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts +0 -2
- package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/remoteObject.unit.test.js +0 -261
- package/dist/telemetry/__tests__/remoteObject.unit.test.js.map +0 -1
- package/dist/telemetry/__tests__/roleInference.unit.test.d.ts +0 -9
- package/dist/telemetry/__tests__/roleInference.unit.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/roleInference.unit.test.js +0 -138
- package/dist/telemetry/__tests__/roleInference.unit.test.js.map +0 -1
- package/dist/telemetry/__tests__/utils.unit.test.d.ts +0 -7
- package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/utils.unit.test.js +0 -91
- package/dist/telemetry/__tests__/utils.unit.test.js.map +0 -1
- package/dist/telemetry/a11y.d.ts.map +0 -1
- package/dist/telemetry/a11y.js.map +0 -1
- package/dist/telemetry/console.d.ts.map +0 -1
- package/dist/telemetry/console.js.map +0 -1
- package/dist/telemetry/dialogs.d.ts.map +0 -1
- package/dist/telemetry/dialogs.js.map +0 -1
- package/dist/telemetry/dom.d.ts.map +0 -1
- package/dist/telemetry/dom.js.map +0 -1
- package/dist/telemetry/filterDsl.d.ts.map +0 -1
- package/dist/telemetry/filterDsl.js.map +0 -1
- package/dist/telemetry/filterPresets.d.ts.map +0 -1
- package/dist/telemetry/filterPresets.js.map +0 -1
- package/dist/telemetry/filters.d.ts.map +0 -1
- package/dist/telemetry/filters.js.map +0 -1
- package/dist/telemetry/har/__tests__/builder.unit.test.d.ts +0 -8
- package/dist/telemetry/har/__tests__/builder.unit.test.d.ts.map +0 -1
- package/dist/telemetry/har/__tests__/builder.unit.test.js +0 -694
- package/dist/telemetry/har/__tests__/builder.unit.test.js.map +0 -1
- package/dist/telemetry/har/builder.d.ts.map +0 -1
- package/dist/telemetry/har/builder.js.map +0 -1
- package/dist/telemetry/har/types.d.ts.map +0 -1
- package/dist/telemetry/har/types.js.map +0 -1
- package/dist/telemetry/navigation.d.ts.map +0 -1
- package/dist/telemetry/navigation.js.map +0 -1
- package/dist/telemetry/network.d.ts.map +0 -1
- package/dist/telemetry/network.js.map +0 -1
- package/dist/telemetry/objectExpander.d.ts.map +0 -1
- package/dist/telemetry/objectExpander.js.map +0 -1
- package/dist/telemetry/remoteObject.d.ts.map +0 -1
- package/dist/telemetry/remoteObject.js.map +0 -1
- package/dist/telemetry/remoteObjectUtils.d.ts.map +0 -1
- package/dist/telemetry/remoteObjectUtils.js.map +0 -1
- package/dist/telemetry/roleInference.d.ts.map +0 -1
- package/dist/telemetry/roleInference.js.map +0 -1
- package/dist/telemetry/utils.d.ts.map +0 -1
- package/dist/telemetry/utils.js.map +0 -1
- package/dist/types/dom.d.ts +0 -77
- package/dist/types/dom.d.ts.map +0 -1
- package/dist/types/dom.js +0 -8
- package/dist/types/dom.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/ui/OutputBuilder.d.ts.map +0 -1
- package/dist/ui/OutputBuilder.js.map +0 -1
- package/dist/ui/errors/CommandError.d.ts.map +0 -1
- package/dist/ui/errors/CommandError.js.map +0 -1
- package/dist/ui/errors/index.d.ts.map +0 -1
- package/dist/ui/errors/index.js.map +0 -1
- package/dist/ui/errors/utils.d.ts.map +0 -1
- package/dist/ui/errors/utils.js.map +0 -1
- package/dist/ui/formatters/__tests__/preview.unit.test.d.ts +0 -13
- package/dist/ui/formatters/__tests__/preview.unit.test.d.ts.map +0 -1
- package/dist/ui/formatters/__tests__/preview.unit.test.js +0 -180
- package/dist/ui/formatters/__tests__/preview.unit.test.js.map +0 -1
- package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts +0 -2
- package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts.map +0 -1
- package/dist/ui/formatters/__tests__/semantic.unit.test.js +0 -111
- package/dist/ui/formatters/__tests__/semantic.unit.test.js.map +0 -1
- package/dist/ui/formatters/a11y.d.ts.map +0 -1
- package/dist/ui/formatters/a11y.js.map +0 -1
- package/dist/ui/formatters/console.d.ts.map +0 -1
- package/dist/ui/formatters/console.js.map +0 -1
- package/dist/ui/formatters/cookies.d.ts.map +0 -1
- package/dist/ui/formatters/cookies.js.map +0 -1
- package/dist/ui/formatters/details.d.ts.map +0 -1
- package/dist/ui/formatters/details.js.map +0 -1
- package/dist/ui/formatters/dom.d.ts.map +0 -1
- package/dist/ui/formatters/dom.js.map +0 -1
- package/dist/ui/formatters/form.d.ts.map +0 -1
- package/dist/ui/formatters/form.js.map +0 -1
- package/dist/ui/formatters/helpFormatters.d.ts.map +0 -1
- package/dist/ui/formatters/helpFormatters.js.map +0 -1
- package/dist/ui/formatters/index.d.ts.map +0 -1
- package/dist/ui/formatters/index.js.map +0 -1
- package/dist/ui/formatters/networkHeaders.d.ts.map +0 -1
- package/dist/ui/formatters/networkHeaders.js.map +0 -1
- package/dist/ui/formatters/networkList.d.ts.map +0 -1
- package/dist/ui/formatters/networkList.js.map +0 -1
- package/dist/ui/formatters/preview.d.ts.map +0 -1
- package/dist/ui/formatters/preview.js.map +0 -1
- package/dist/ui/formatters/semantic.d.ts.map +0 -1
- package/dist/ui/formatters/semantic.js.map +0 -1
- package/dist/ui/formatters/sessionFormatters.d.ts.map +0 -1
- package/dist/ui/formatters/sessionFormatters.js.map +0 -1
- package/dist/ui/formatters/status.d.ts.map +0 -1
- package/dist/ui/formatters/status.js.map +0 -1
- package/dist/ui/formatting.d.ts.map +0 -1
- package/dist/ui/formatting.js.map +0 -1
- package/dist/ui/logging/index.d.ts.map +0 -1
- package/dist/ui/logging/index.js.map +0 -1
- package/dist/ui/logging/logger.d.ts.map +0 -1
- package/dist/ui/logging/logger.js.map +0 -1
- package/dist/ui/messages/chrome.d.ts.map +0 -1
- package/dist/ui/messages/chrome.js.map +0 -1
- package/dist/ui/messages/commands.d.ts.map +0 -1
- package/dist/ui/messages/commands.js.map +0 -1
- package/dist/ui/messages/consoleMessages.d.ts.map +0 -1
- package/dist/ui/messages/consoleMessages.js.map +0 -1
- package/dist/ui/messages/debug.d.ts +0 -168
- package/dist/ui/messages/debug.d.ts.map +0 -1
- package/dist/ui/messages/debug.js +0 -219
- package/dist/ui/messages/debug.js.map +0 -1
- package/dist/ui/messages/dom.d.ts +0 -14
- package/dist/ui/messages/dom.d.ts.map +0 -1
- package/dist/ui/messages/dom.js +0 -28
- package/dist/ui/messages/dom.js.map +0 -1
- package/dist/ui/messages/errors.d.ts +0 -233
- package/dist/ui/messages/errors.d.ts.map +0 -1
- package/dist/ui/messages/errors.js +0 -395
- package/dist/ui/messages/errors.js.map +0 -1
- package/dist/ui/messages/hints.d.ts.map +0 -1
- package/dist/ui/messages/hints.js.map +0 -1
- package/dist/ui/messages/internal.d.ts +0 -23
- package/dist/ui/messages/internal.d.ts.map +0 -1
- package/dist/ui/messages/internal.js +0 -27
- package/dist/ui/messages/internal.js.map +0 -1
- package/dist/ui/messages/networkMessages.d.ts.map +0 -1
- package/dist/ui/messages/networkMessages.js.map +0 -1
- package/dist/ui/messages/preview.d.ts.map +0 -1
- package/dist/ui/messages/preview.js.map +0 -1
- package/dist/ui/messages/session.d.ts.map +0 -1
- package/dist/ui/messages/session.js.map +0 -1
- package/dist/ui/messages/validation.d.ts.map +0 -1
- package/dist/ui/messages/validation.js.map +0 -1
- package/dist/utils/__tests__/atomicFile.test.d.ts +0 -2
- package/dist/utils/__tests__/atomicFile.test.d.ts.map +0 -1
- package/dist/utils/__tests__/atomicFile.test.js +0 -43
- package/dist/utils/__tests__/atomicFile.test.js.map +0 -1
- package/dist/utils/__tests__/errors.unit.test.d.ts +0 -12
- package/dist/utils/__tests__/errors.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/errors.unit.test.js +0 -255
- package/dist/utils/__tests__/errors.unit.test.js.map +0 -1
- package/dist/utils/__tests__/http.unit.test.d.ts +0 -12
- package/dist/utils/__tests__/http.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/http.unit.test.js +0 -218
- package/dist/utils/__tests__/http.unit.test.js.map +0 -1
- package/dist/utils/__tests__/objects.test.d.ts +0 -2
- package/dist/utils/__tests__/objects.test.d.ts.map +0 -1
- package/dist/utils/__tests__/objects.test.js +0 -50
- package/dist/utils/__tests__/objects.test.js.map +0 -1
- package/dist/utils/__tests__/process.unit.test.d.ts +0 -14
- package/dist/utils/__tests__/process.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/process.unit.test.js +0 -124
- package/dist/utils/__tests__/process.unit.test.js.map +0 -1
- package/dist/utils/__tests__/session.contract.test.d.ts +0 -2
- package/dist/utils/__tests__/session.contract.test.d.ts.map +0 -1
- package/dist/utils/__tests__/session.contract.test.js +0 -258
- package/dist/utils/__tests__/session.contract.test.js.map +0 -1
- package/dist/utils/__tests__/shellDetection.unit.test.d.ts +0 -12
- package/dist/utils/__tests__/shellDetection.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/shellDetection.unit.test.js +0 -220
- package/dist/utils/__tests__/shellDetection.unit.test.js.map +0 -1
- package/dist/utils/__tests__/url.test.d.ts +0 -2
- package/dist/utils/__tests__/url.test.d.ts.map +0 -1
- package/dist/utils/__tests__/url.test.js +0 -42
- package/dist/utils/__tests__/url.test.js.map +0 -1
- package/dist/utils/async.d.ts.map +0 -1
- package/dist/utils/async.js.map +0 -1
- package/dist/utils/atomicFile.d.ts.map +0 -1
- package/dist/utils/atomicFile.js.map +0 -1
- package/dist/utils/concurrency.d.ts.map +0 -1
- package/dist/utils/concurrency.js.map +0 -1
- package/dist/utils/daemonErrors.d.ts +0 -60
- package/dist/utils/daemonErrors.d.ts.map +0 -1
- package/dist/utils/daemonErrors.js +0 -58
- package/dist/utils/daemonErrors.js.map +0 -1
- package/dist/utils/decisionTrees.d.ts.map +0 -1
- package/dist/utils/decisionTrees.js.map +0 -1
- package/dist/utils/errorMapping.d.ts.map +0 -1
- package/dist/utils/errorMapping.js.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/exitCodes.d.ts.map +0 -1
- package/dist/utils/exitCodes.js.map +0 -1
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/file.js.map +0 -1
- package/dist/utils/http.d.ts.map +0 -1
- package/dist/utils/http.js.map +0 -1
- package/dist/utils/levenshtein.d.ts.map +0 -1
- package/dist/utils/levenshtein.js.map +0 -1
- package/dist/utils/objects.d.ts.map +0 -1
- package/dist/utils/objects.js.map +0 -1
- package/dist/utils/process.d.ts.map +0 -1
- package/dist/utils/process.js.map +0 -1
- package/dist/utils/shellDetection.d.ts.map +0 -1
- package/dist/utils/shellDetection.js.map +0 -1
- package/dist/utils/strings.d.ts.map +0 -1
- package/dist/utils/strings.js.map +0 -1
- package/dist/utils/suggestions.d.ts.map +0 -1
- package/dist/utils/suggestions.js.map +0 -1
- package/dist/utils/taskMappings.d.ts.map +0 -1
- package/dist/utils/taskMappings.js.map +0 -1
- package/dist/utils/typeGuards.d.ts.map +0 -1
- package/dist/utils/typeGuards.js.map +0 -1
- package/dist/utils/url.d.ts.map +0 -1
- package/dist/utils/url.js.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js.map +0 -1
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js.map +0 -1
- /package/dist/daemon/{worker → session}/commandRegistry.d.ts +0 -0
- /package/dist/daemon/{worker → session}/types.js +0 -0
- /package/dist/{ui/errors → errors}/CommandError.d.ts +0 -0
- /package/dist/{ui/errors → errors}/index.js +0 -0
- /package/dist/{ui/errors → errors}/utils.d.ts +0 -0
- /package/dist/{commands → runtime}/dom/formTypes.js +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key name to CDP key event parameters mapping.
|
|
3
|
+
*
|
|
4
|
+
* Maps human-readable key names to Chrome DevTools Protocol Input.dispatchKeyEvent parameters.
|
|
5
|
+
*/
|
|
6
|
+
import { findSimilar } from '../../utils/suggestions.js';
|
|
7
|
+
/**
|
|
8
|
+
* Modifier key bit flags for CDP Input.dispatchKeyEvent
|
|
9
|
+
* (Alt=1, Ctrl=2, Meta/Command=4, Shift=8).
|
|
10
|
+
*/
|
|
11
|
+
export const MODIFIER_FLAGS = {
|
|
12
|
+
alt: 1,
|
|
13
|
+
ctrl: 2,
|
|
14
|
+
meta: 4,
|
|
15
|
+
shift: 8,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Map of supported key names to their CDP parameters.
|
|
19
|
+
*
|
|
20
|
+
* Keys are case-insensitive for user convenience.
|
|
21
|
+
*/
|
|
22
|
+
const KEY_DEFINITIONS = {
|
|
23
|
+
enter: { code: 'Enter', key: 'Enter', keyCode: 13, text: '\r' },
|
|
24
|
+
tab: { code: 'Tab', key: 'Tab', keyCode: 9 },
|
|
25
|
+
escape: { code: 'Escape', key: 'Escape', keyCode: 27 },
|
|
26
|
+
space: { code: 'Space', key: ' ', keyCode: 32, text: ' ' },
|
|
27
|
+
backspace: { code: 'Backspace', key: 'Backspace', keyCode: 8 },
|
|
28
|
+
delete: { code: 'Delete', key: 'Delete', keyCode: 46 },
|
|
29
|
+
arrowup: { code: 'ArrowUp', key: 'ArrowUp', keyCode: 38 },
|
|
30
|
+
arrowdown: { code: 'ArrowDown', key: 'ArrowDown', keyCode: 40 },
|
|
31
|
+
arrowleft: { code: 'ArrowLeft', key: 'ArrowLeft', keyCode: 37 },
|
|
32
|
+
arrowright: { code: 'ArrowRight', key: 'ArrowRight', keyCode: 39 },
|
|
33
|
+
home: { code: 'Home', key: 'Home', keyCode: 36 },
|
|
34
|
+
end: { code: 'End', key: 'End', keyCode: 35 },
|
|
35
|
+
pageup: { code: 'PageUp', key: 'PageUp', keyCode: 33 },
|
|
36
|
+
pagedown: { code: 'PageDown', key: 'PageDown', keyCode: 34 },
|
|
37
|
+
f1: { code: 'F1', key: 'F1', keyCode: 112 },
|
|
38
|
+
f2: { code: 'F2', key: 'F2', keyCode: 113 },
|
|
39
|
+
f3: { code: 'F3', key: 'F3', keyCode: 114 },
|
|
40
|
+
f4: { code: 'F4', key: 'F4', keyCode: 115 },
|
|
41
|
+
f5: { code: 'F5', key: 'F5', keyCode: 116 },
|
|
42
|
+
f6: { code: 'F6', key: 'F6', keyCode: 117 },
|
|
43
|
+
f7: { code: 'F7', key: 'F7', keyCode: 118 },
|
|
44
|
+
f8: { code: 'F8', key: 'F8', keyCode: 119 },
|
|
45
|
+
f9: { code: 'F9', key: 'F9', keyCode: 120 },
|
|
46
|
+
f10: { code: 'F10', key: 'F10', keyCode: 121 },
|
|
47
|
+
f11: { code: 'F11', key: 'F11', keyCode: 122 },
|
|
48
|
+
f12: { code: 'F12', key: 'F12', keyCode: 123 },
|
|
49
|
+
};
|
|
50
|
+
for (let i = 0; i < 26; i++) {
|
|
51
|
+
const letter = String.fromCharCode(97 + i); // 'a' = 97
|
|
52
|
+
const upperLetter = letter.toUpperCase();
|
|
53
|
+
KEY_DEFINITIONS[letter] = {
|
|
54
|
+
code: `Key${upperLetter}`,
|
|
55
|
+
key: letter,
|
|
56
|
+
keyCode: 65 + i, // 'A' = 65
|
|
57
|
+
text: letter,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
for (let i = 0; i < 10; i++) {
|
|
61
|
+
const digit = String(i);
|
|
62
|
+
KEY_DEFINITIONS[digit] = {
|
|
63
|
+
code: `Digit${digit}`,
|
|
64
|
+
key: digit,
|
|
65
|
+
keyCode: 48 + i, // '0' = 48
|
|
66
|
+
text: digit,
|
|
67
|
+
shiftText: ')!@#$%^&*('.charAt(i),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get key definition by name (case-insensitive).
|
|
72
|
+
*
|
|
73
|
+
* @param keyName - Human-readable key name (e.g., "Enter", "Tab", "a")
|
|
74
|
+
* @returns Key definition or undefined if not found
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const def = getKeyDefinition('Enter');
|
|
79
|
+
* // { code: 'Enter', key: 'Enter', keyCode: 13 }
|
|
80
|
+
*
|
|
81
|
+
* const letterDef = getKeyDefinition('a');
|
|
82
|
+
* // { code: 'KeyA', key: 'a', keyCode: 65 }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function getKeyDefinition(keyName) {
|
|
86
|
+
const name = keyName.toLowerCase();
|
|
87
|
+
const digit = keyName.length === 1 ? SHIFTED_DIGITS.indexOf(keyName) : -1;
|
|
88
|
+
if (digit !== -1)
|
|
89
|
+
return KEY_DEFINITIONS[String(digit)];
|
|
90
|
+
return KEY_DEFINITIONS[KEY_ALIASES[name] ?? name];
|
|
91
|
+
}
|
|
92
|
+
/** Other names users write for keys */
|
|
93
|
+
const KEY_ALIASES = {
|
|
94
|
+
esc: 'escape',
|
|
95
|
+
return: 'enter',
|
|
96
|
+
del: 'delete',
|
|
97
|
+
spacebar: 'space',
|
|
98
|
+
' ': 'space',
|
|
99
|
+
up: 'arrowup',
|
|
100
|
+
down: 'arrowdown',
|
|
101
|
+
left: 'arrowleft',
|
|
102
|
+
right: 'arrowright',
|
|
103
|
+
pgup: 'pageup',
|
|
104
|
+
pgdn: 'pagedown',
|
|
105
|
+
pagedn: 'pagedown',
|
|
106
|
+
};
|
|
107
|
+
/** Characters typed with Shift on the digit keys 0-9 (US layout) */
|
|
108
|
+
const SHIFTED_DIGITS = ')!@#$%^&*(';
|
|
109
|
+
/**
|
|
110
|
+
* Whether a key name needs Shift to produce it (an uppercase letter, or a
|
|
111
|
+
* symbol on a digit key such as "!").
|
|
112
|
+
*
|
|
113
|
+
* @param keyName - Key name as given
|
|
114
|
+
* @returns True if Shift is implied
|
|
115
|
+
*/
|
|
116
|
+
export function impliesShift(keyName) {
|
|
117
|
+
return /^[A-Z]$/.test(keyName) || (keyName.length === 1 && SHIFTED_DIGITS.includes(keyName));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Key names closest to an unknown one.
|
|
121
|
+
*
|
|
122
|
+
* @param keyName - Unknown key name
|
|
123
|
+
* @returns Up to three key names, in their usual spelling
|
|
124
|
+
*/
|
|
125
|
+
export function similarKeyNames(keyName) {
|
|
126
|
+
const names = Object.values(KEY_DEFINITIONS)
|
|
127
|
+
.map((definition) => definition.key)
|
|
128
|
+
.filter((key) => key.length > 1);
|
|
129
|
+
return findSimilar(keyName, names);
|
|
130
|
+
}
|
|
131
|
+
/** Accepted modifier names (and common aliases) mapped to their flag. */
|
|
132
|
+
const MODIFIER_NAMES = {
|
|
133
|
+
alt: 'alt',
|
|
134
|
+
option: 'alt',
|
|
135
|
+
opt: 'alt',
|
|
136
|
+
ctrl: 'ctrl',
|
|
137
|
+
control: 'ctrl',
|
|
138
|
+
meta: 'meta',
|
|
139
|
+
cmd: 'meta',
|
|
140
|
+
command: 'meta',
|
|
141
|
+
shift: 'shift',
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Split a comma-separated modifier list into lowercase names.
|
|
145
|
+
*
|
|
146
|
+
* @param modifiers - e.g. "Ctrl, shift"
|
|
147
|
+
* @returns Non-empty names
|
|
148
|
+
*/
|
|
149
|
+
function modifierNames(modifiers) {
|
|
150
|
+
return modifiers
|
|
151
|
+
.toLowerCase()
|
|
152
|
+
.split(',')
|
|
153
|
+
.map((part) => part.trim())
|
|
154
|
+
.filter(Boolean);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Names in a modifier list that are not recognized.
|
|
158
|
+
*
|
|
159
|
+
* @param modifiers - Comma-separated modifier names
|
|
160
|
+
* @returns Unknown names (empty when all are valid)
|
|
161
|
+
*/
|
|
162
|
+
export function findUnknownModifiers(modifiers) {
|
|
163
|
+
return modifierNames(modifiers).filter((name) => !(name in MODIFIER_NAMES));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parse modifier string into CDP modifier flags.
|
|
167
|
+
*
|
|
168
|
+
* @param modifiers - Comma-separated modifier names (e.g., "ctrl,shift"; aliases cmd, control, option)
|
|
169
|
+
* @returns Combined modifier bit flags
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* parseModifiers('ctrl,shift'); // Returns 10 (2 + 8)
|
|
174
|
+
* parseModifiers('cmd'); // Returns 4
|
|
175
|
+
* parseModifiers(''); // Returns 0
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export function parseModifiers(modifiers) {
|
|
179
|
+
if (!modifiers)
|
|
180
|
+
return 0;
|
|
181
|
+
return modifierNames(modifiers).reduce((flags, name) => {
|
|
182
|
+
const flag = MODIFIER_NAMES[name];
|
|
183
|
+
return flag ? flags | MODIFIER_FLAGS[flag] : flags;
|
|
184
|
+
}, 0);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Human-readable names of set modifier flags.
|
|
188
|
+
*
|
|
189
|
+
* @param flags - CDP modifier bit flags
|
|
190
|
+
* @returns e.g. ["Ctrl", "Shift"]
|
|
191
|
+
*/
|
|
192
|
+
export function describeModifiers(flags) {
|
|
193
|
+
const labels = {
|
|
194
|
+
ctrl: 'Ctrl',
|
|
195
|
+
alt: 'Alt',
|
|
196
|
+
shift: 'Shift',
|
|
197
|
+
meta: 'Meta',
|
|
198
|
+
};
|
|
199
|
+
return Object.keys(labels)
|
|
200
|
+
.filter((name) => flags & MODIFIER_FLAGS[name])
|
|
201
|
+
.map((name) => labels[name]);
|
|
202
|
+
}
|
|
203
|
+
/** Editor commands of the standard Ctrl/Cmd shortcuts, by key code */
|
|
204
|
+
const SHORTCUT_COMMANDS = {
|
|
205
|
+
KeyA: 'selectAll',
|
|
206
|
+
KeyC: 'copy',
|
|
207
|
+
KeyX: 'cut',
|
|
208
|
+
KeyV: 'paste',
|
|
209
|
+
KeyZ: 'undo',
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Editor commands a key press triggers, like a physical keyboard does.
|
|
213
|
+
*
|
|
214
|
+
* Chrome only runs shortcuts such as Ctrl+A (Cmd+A on macOS) for events it
|
|
215
|
+
* gets from the OS; for CDP key events the command has to be named. Either
|
|
216
|
+
* Ctrl or Meta works, so scripts behave the same on every platform; Shift+Z
|
|
217
|
+
* redoes.
|
|
218
|
+
*
|
|
219
|
+
* @param code - Key code, e.g. "KeyA"
|
|
220
|
+
* @param flags - CDP modifier bit flags
|
|
221
|
+
* @returns Editor commands for `Input.dispatchKeyEvent`, empty if none
|
|
222
|
+
*/
|
|
223
|
+
export function shortcutCommands(code, flags) {
|
|
224
|
+
const command = SHORTCUT_COMMANDS[code];
|
|
225
|
+
const shortcutModifier = flags & (MODIFIER_FLAGS.ctrl | MODIFIER_FLAGS.meta);
|
|
226
|
+
if (!command || !shortcutModifier || flags & MODIFIER_FLAGS.alt)
|
|
227
|
+
return [];
|
|
228
|
+
if (command === 'undo' && flags & MODIFIER_FLAGS.shift)
|
|
229
|
+
return ['redo'];
|
|
230
|
+
return flags & MODIFIER_FLAGS.shift ? [] : [command];
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=keyMapping.js.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning CDP event listener data into the `bdg dom listeners` report.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions: the daemon collects the listeners of an element, its
|
|
5
|
+
* ancestors, its document and window (`inspectEventListeners`), and
|
|
6
|
+
* these name, place, filter and order them.
|
|
7
|
+
*/
|
|
8
|
+
import type { Protocol } from '../../connection/typed-cdp.js';
|
|
9
|
+
import type { ElementListener, ListenerPlacement } from '../../ipc/protocol/domTypes.js';
|
|
10
|
+
/** An event target on the path from the element out to its window. */
|
|
11
|
+
export interface ChainEntry {
|
|
12
|
+
/** CDP class name, e.g. `HTMLDivElement`, `HTMLDocument`, `Window` */
|
|
13
|
+
className?: string | undefined;
|
|
14
|
+
/** CDP description, e.g. `div#root.app` */
|
|
15
|
+
description?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Listeners found on one entry of the chain. */
|
|
18
|
+
export interface ChainListeners {
|
|
19
|
+
/** Position in the chain: 0 is the element itself */
|
|
20
|
+
position: number;
|
|
21
|
+
entry: ChainEntry;
|
|
22
|
+
listeners: Protocol.DOMDebugger.EventListener[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Where an entry of the chain sits relative to the element.
|
|
26
|
+
*
|
|
27
|
+
* @param entry - Chain entry
|
|
28
|
+
* @param position - Position in the chain (0 = the element)
|
|
29
|
+
* @returns Placement
|
|
30
|
+
*/
|
|
31
|
+
export declare function listenerPlacement(entry: ChainEntry, position: number): ListenerPlacement;
|
|
32
|
+
/**
|
|
33
|
+
* Short description of a chain entry, e.g. `div#root.app`.
|
|
34
|
+
*
|
|
35
|
+
* @param entry - Chain entry
|
|
36
|
+
* @returns Description
|
|
37
|
+
*/
|
|
38
|
+
export declare function describeChainEntry(entry: ChainEntry): string;
|
|
39
|
+
/**
|
|
40
|
+
* First characters of a function's source, on one line.
|
|
41
|
+
*
|
|
42
|
+
* @param source - Function source (the handler's CDP description)
|
|
43
|
+
* @returns Preview
|
|
44
|
+
*/
|
|
45
|
+
export declare function handlerPreview(source: string | undefined): string;
|
|
46
|
+
/**
|
|
47
|
+
* Name of a function as written in its source (fallback when the page could
|
|
48
|
+
* not report `Function.name`).
|
|
49
|
+
*
|
|
50
|
+
* @param source - Function source
|
|
51
|
+
* @returns Name, or '' for anonymous and arrow functions
|
|
52
|
+
*/
|
|
53
|
+
export declare function functionNameFromSource(source: string | undefined): string;
|
|
54
|
+
/**
|
|
55
|
+
* Build the listener report: filtered to `types` (if given), grouped by
|
|
56
|
+
* event type (alphabetically), nearest first within a type.
|
|
57
|
+
*
|
|
58
|
+
* @param found - Listeners per chain entry, in chain order
|
|
59
|
+
* @param names - Handler names in the order of the flattened listeners (missing = unknown)
|
|
60
|
+
* @param types - Event types to keep (default: all)
|
|
61
|
+
* @returns Ordered listeners
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildListenerReport(found: ChainListeners[], names: Array<string | undefined>, types?: string[]): ElementListener[];
|
|
64
|
+
/**
|
|
65
|
+
* Interaction event types that have listeners, but none on the element
|
|
66
|
+
* itself: frameworks (React, jQuery) handle these by delegation.
|
|
67
|
+
*
|
|
68
|
+
* @param listeners - Listener report
|
|
69
|
+
* @returns Event types, in report order
|
|
70
|
+
*/
|
|
71
|
+
export declare function delegatedOnlyTypes(listeners: ElementListener[]): string[];
|
|
72
|
+
//# sourceMappingURL=listenerSummary.d.ts.map
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning CDP event listener data into the `bdg dom listeners` report.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions: the daemon collects the listeners of an element, its
|
|
5
|
+
* ancestors, its document and window (`inspectEventListeners`), and
|
|
6
|
+
* these name, place, filter and order them.
|
|
7
|
+
*/
|
|
8
|
+
import { truncateByLength } from '../../utils/strings.js';
|
|
9
|
+
/** Longest handler source preview */
|
|
10
|
+
const PREVIEW_MAX_LENGTH = 80;
|
|
11
|
+
/** Longest node description (class lists can be very long) */
|
|
12
|
+
const NODE_MAX_LENGTH = 60;
|
|
13
|
+
/** Event types a user interaction triggers (for the delegation note) */
|
|
14
|
+
const INTERACTION_EVENT_TYPES = new Set([
|
|
15
|
+
'beforeinput',
|
|
16
|
+
'blur',
|
|
17
|
+
'change',
|
|
18
|
+
'click',
|
|
19
|
+
'contextmenu',
|
|
20
|
+
'dblclick',
|
|
21
|
+
'focus',
|
|
22
|
+
'focusin',
|
|
23
|
+
'focusout',
|
|
24
|
+
'input',
|
|
25
|
+
'keydown',
|
|
26
|
+
'keypress',
|
|
27
|
+
'keyup',
|
|
28
|
+
'mousedown',
|
|
29
|
+
'mouseup',
|
|
30
|
+
'pointerdown',
|
|
31
|
+
'pointerup',
|
|
32
|
+
'submit',
|
|
33
|
+
'touchend',
|
|
34
|
+
'touchstart',
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* Where an entry of the chain sits relative to the element.
|
|
38
|
+
*
|
|
39
|
+
* @param entry - Chain entry
|
|
40
|
+
* @param position - Position in the chain (0 = the element)
|
|
41
|
+
* @returns Placement
|
|
42
|
+
*/
|
|
43
|
+
export function listenerPlacement(entry, position) {
|
|
44
|
+
if (position === 0)
|
|
45
|
+
return 'target';
|
|
46
|
+
if (entry.className === 'Window')
|
|
47
|
+
return 'window';
|
|
48
|
+
if (entry.description === '#document')
|
|
49
|
+
return 'document';
|
|
50
|
+
return 'ancestor';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Short description of a chain entry, e.g. `div#root.app`.
|
|
54
|
+
*
|
|
55
|
+
* @param entry - Chain entry
|
|
56
|
+
* @returns Description
|
|
57
|
+
*/
|
|
58
|
+
export function describeChainEntry(entry) {
|
|
59
|
+
if (entry.className === 'Window')
|
|
60
|
+
return 'window';
|
|
61
|
+
if (entry.description === '#document')
|
|
62
|
+
return 'document';
|
|
63
|
+
if (entry.className === 'ShadowRoot')
|
|
64
|
+
return '#shadow-root';
|
|
65
|
+
return truncateByLength(entry.description ?? entry.className ?? '?', NODE_MAX_LENGTH);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* First characters of a function's source, on one line.
|
|
69
|
+
*
|
|
70
|
+
* @param source - Function source (the handler's CDP description)
|
|
71
|
+
* @returns Preview
|
|
72
|
+
*/
|
|
73
|
+
export function handlerPreview(source) {
|
|
74
|
+
return truncateByLength((source ?? '').replace(/\s+/g, ' ').trim(), PREVIEW_MAX_LENGTH);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Name of a function as written in its source (fallback when the page could
|
|
78
|
+
* not report `Function.name`).
|
|
79
|
+
*
|
|
80
|
+
* @param source - Function source
|
|
81
|
+
* @returns Name, or '' for anonymous and arrow functions
|
|
82
|
+
*/
|
|
83
|
+
export function functionNameFromSource(source) {
|
|
84
|
+
const text = (source ?? '').trim();
|
|
85
|
+
const declared = /^(?:async\s+)?function\s*\*?\s*([\w$]+)/.exec(text);
|
|
86
|
+
if (declared?.[1])
|
|
87
|
+
return declared[1];
|
|
88
|
+
const method = /^(?:async\s+)?(?:get\s+|set\s+)?([\w$]+)\s*\(/.exec(text);
|
|
89
|
+
return method?.[1] && method[1] !== 'function' ? method[1] : '';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build the report entry for one listener.
|
|
93
|
+
*
|
|
94
|
+
* @param listener - CDP listener
|
|
95
|
+
* @param found - Chain entry it is attached to
|
|
96
|
+
* @param name - Handler name reported by the page, if known
|
|
97
|
+
* @returns Listener entry
|
|
98
|
+
*/
|
|
99
|
+
function toElementListener(listener, found, name) {
|
|
100
|
+
const source = listener.handler?.description;
|
|
101
|
+
return {
|
|
102
|
+
type: listener.type,
|
|
103
|
+
on: listenerPlacement(found.entry, found.position),
|
|
104
|
+
node: describeChainEntry(found.entry),
|
|
105
|
+
useCapture: listener.useCapture,
|
|
106
|
+
passive: listener.passive,
|
|
107
|
+
once: listener.once,
|
|
108
|
+
handler: {
|
|
109
|
+
name: name ?? functionNameFromSource(source),
|
|
110
|
+
preview: handlerPreview(source),
|
|
111
|
+
scriptId: listener.scriptId,
|
|
112
|
+
lineNumber: listener.lineNumber,
|
|
113
|
+
columnNumber: listener.columnNumber,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Build the listener report: filtered to `types` (if given), grouped by
|
|
119
|
+
* event type (alphabetically), nearest first within a type.
|
|
120
|
+
*
|
|
121
|
+
* @param found - Listeners per chain entry, in chain order
|
|
122
|
+
* @param names - Handler names in the order of the flattened listeners (missing = unknown)
|
|
123
|
+
* @param types - Event types to keep (default: all)
|
|
124
|
+
* @returns Ordered listeners
|
|
125
|
+
*/
|
|
126
|
+
export function buildListenerReport(found, names, types) {
|
|
127
|
+
const flat = found.flatMap((entry) => entry.listeners.map((listener) => ({ entry, listener })));
|
|
128
|
+
const listeners = flat
|
|
129
|
+
.map(({ entry, listener }, i) => ({
|
|
130
|
+
position: entry.position,
|
|
131
|
+
listener: toElementListener(listener, entry, names[i]),
|
|
132
|
+
}))
|
|
133
|
+
.filter(({ listener }) => !types?.length || types.includes(listener.type));
|
|
134
|
+
return listeners
|
|
135
|
+
.sort((a, b) => a.listener.type.localeCompare(b.listener.type) || a.position - b.position)
|
|
136
|
+
.map(({ listener }) => listener);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Interaction event types that have listeners, but none on the element
|
|
140
|
+
* itself: frameworks (React, jQuery) handle these by delegation.
|
|
141
|
+
*
|
|
142
|
+
* @param listeners - Listener report
|
|
143
|
+
* @returns Event types, in report order
|
|
144
|
+
*/
|
|
145
|
+
export function delegatedOnlyTypes(listeners) {
|
|
146
|
+
const types = [...new Set(listeners.map((listener) => listener.type))];
|
|
147
|
+
return types.filter((type) => INTERACTION_EVENT_TYPES.has(type) &&
|
|
148
|
+
!listeners.some((listener) => listener.type === type && listener.on === 'target'));
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=listenerSummary.js.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React-compatible event handling for form interactions.
|
|
3
|
+
*
|
|
4
|
+
* React uses synthetic events and doesn't detect direct DOM manipulation.
|
|
5
|
+
* This module provides JavaScript snippets that can be injected via Runtime.evaluate
|
|
6
|
+
* to properly trigger React's event system.
|
|
7
|
+
*/
|
|
8
|
+
import type { FillResult, ClickResult } from '../../ipc/protocol/domTypes.js';
|
|
9
|
+
/**
|
|
10
|
+
* JavaScript function to fill an input element in a React-compatible way.
|
|
11
|
+
*
|
|
12
|
+
* This approach:
|
|
13
|
+
* 1. Uses native property setters to bypass React's value tracking
|
|
14
|
+
* 2. Dispatches input/change events that React listens for
|
|
15
|
+
* 3. Properly handles focus/blur for form validation
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* Works with React, Vue, Angular, and vanilla JS applications.
|
|
19
|
+
*/
|
|
20
|
+
export declare const REACT_FILL_SCRIPT = "\n(function(selector, parts, value, options) {\n const allMatches = (function (selector, parts) {\n if (selector === '__bdg_bound_target__') {\n const el = window.__bdgTarget;\n return el && el.isConnected ? [el] : [];\n }\n return (function (selector, parts) {\n const css = parts ? parts.map((part) => part.css).join(', ') : selector;\n const found = [];\n const visit = (root) => {\n for (const match of root.querySelectorAll(css)) found.push(match);\n for (const el of root.querySelectorAll('*')) {\n if (el.shadowRoot) visit(el.shadowRoot);\n if (el.tagName === 'IFRAME' || el.tagName === 'FRAME') {\n let frameDocument = null;\n try { frameDocument = el.contentDocument; } catch (e) { frameDocument = null; }\n if (frameDocument) visit(frameDocument);\n }\n }\n };\n visit(document);\n if (!parts) return found;\n const passes = (el, filter) => {\n if (filter.kind === 'visible') {\n const rect = el.getBoundingClientRect();\n return rect.width > 0 && rect.height > 0 && el.ownerDocument.defaultView.getComputedStyle(el).visibility === 'visible';\n }\n const text = (typeof el.innerText === 'string' ? el.innerText : el.textContent || '').replace(/\\s+/g, ' ').trim();\n return filter.kind === 'text-is' ? text === filter.text : text.toLowerCase().includes(filter.text);\n};\n return found.filter((el) => parts.some((part) => el.matches(part.css) && part.filters.every((filter) => passes(el, filter))));\n})(selector, parts);\n})(selector, parts);\n const warnings = [];\n // Why a user could not reach the field (the value is still set, so scripted\n // flows keep working, but the result may not be what a user would see)\n const unreachableReason = (field) => {\n if (field.closest('[inert]')) return 'inert';\n const modal = field.ownerDocument.querySelector('dialog:modal');\n if (modal && !modal.contains(field)) return 'behind an open modal dialog';\n if (field.checkVisibility && !field.checkVisibility({ visibilityProperty: true, opacityProperty: true })) return 'hidden';\n return null;\n };\n // Why the browser did not take the value as given (it sanitizes instead of\n // throwing: bad dates become \"\", colors #000000, ranges are clamped)\n const rejectedValue = (field, type, text) => {\n const formats = {\n number: 'a number',\n date: 'YYYY-MM-DD',\n time: 'HH:MM',\n 'datetime-local': 'YYYY-MM-DDTHH:MM',\n month: 'YYYY-MM',\n week: 'YYYY-Www'\n };\n const rejected = 'The browser rejected \"' + text + '\" for a ' + type + ' field (it keeps its previous value)';\n if (formats[type] && text.trim() !== '' && field.value === '') {\n return { error: rejected, suggestion: 'Expected ' + formats[type] };\n }\n if (type === 'color' && field.value.toLowerCase() !== text.trim().toLowerCase()) {\n return { error: rejected, suggestion: 'Expected a hex color like #1a2b3c' };\n }\n if (type === 'range' && Number(field.value) !== Number(text)) {\n return {\n error: 'The browser would set ' + field.value + ' instead of \"' + text + '\" (range ' + (field.min || 0) + ' to ' + (field.max || 100) + ', step ' + (field.step || 1) + ')',\n suggestion: 'Use a value within the range that matches the step'\n };\n }\n return null;\n };\n \n if (allMatches.length === 0) {\n return { \n success: false, \n error: 'Element not found: ' + selector,\n selector: selector\n };\n }\n \n let el;\n const index = options.index;\n \n // If index is provided, use it directly (0-based)\n if (typeof index === 'number' && index >= 0) {\n if (index >= allMatches.length) {\n return {\n success: false,\n error: 'Index out of range',\n selector: selector,\n matchCount: allMatches.length,\n requestedIndex: index,\n suggestion: 'Use --index between 0 and ' + (allMatches.length - 1)\n };\n }\n el = allMatches[index];\n } else {\n el = allMatches[0];\n }\n \n const tagName = el.tagName.toLowerCase();\n const inputType = el.type?.toLowerCase();\n \n const isFillable = (\n tagName === 'input' || \n tagName === 'textarea' || \n tagName === 'select' ||\n el.isContentEditable\n );\n \n if (!isFillable) {\n return {\n success: false,\n error: 'Element is not fillable',\n elementType: tagName,\n suggestion: 'Only input, textarea, select, and contenteditable elements can be filled'\n };\n }\n\n if (el.disabled || el.matches(':disabled')) {\n return {\n success: false,\n error: 'Element is disabled',\n elementType: tagName,\n suggestion: 'Enable the field first (it may depend on another input)'\n };\n }\n if (el.readOnly) {\n return {\n success: false,\n error: 'Element is read-only',\n elementType: tagName,\n suggestion: 'Read-only fields cannot be filled'\n };\n }\n\n const unreachable = unreachableReason(el);\n if (unreachable) {\n warnings.push('The field is ' + unreachable + '; a user could not fill it (the value was set anyway)');\n }\n\n el.focus();\n\n if (tagName === 'select' && el.multiple) {\n // Several options, separated by commas (an option whose value contains a\n // comma matches as a whole); \"\" selects none\n const options = Array.from(el.options);\n const whole = options.some((o) => o.value === value || o.text.trim() === value);\n const wanted = whole ? [value] : value.split(',').map((part) => part.trim()).filter(Boolean);\n const chosen = wanted.map((part) =>\n options.find((o) => o.value === part) || options.find((o) => o.text.trim() === part)\n );\n const missing = wanted.find((part, i) => !chosen[i]);\n if (missing !== undefined) {\n return {\n success: false,\n error: 'Option not found: ' + missing,\n exitCode: 81,\n elementType: tagName,\n suggestion: 'Available options: ' + options.slice(0, 10).map((o) => o.value || o.text.trim()).join(', ')\n };\n }\n options.forEach((o) => { o.selected = chosen.includes(o); });\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (tagName === 'select') {\n // Match by option value first, then by visible label\n const options = Array.from(el.options);\n const option =\n options.find((o) => o.value === value) ||\n options.find((o) => o.text.trim() === value);\n if (!option) {\n return {\n success: false,\n error: 'Option not found: ' + value,\n exitCode: 81,\n elementType: tagName,\n suggestion: 'Available options: ' + options.slice(0, 10).map((o) => o.value || o.text.trim()).join(', ')\n };\n }\n el.value = option.value;\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (inputType === 'checkbox' || inputType === 'radio') {\n // Toggle through a click, like a user: frameworks (React) track checkable\n // state via click events and revert a programmatic `checked` assignment\n const normalized = String(value).trim().toLowerCase();\n const truthy = ['true', '1', 'yes', 'on', 'checked'];\n const falsy = ['false', '0', 'no', 'off', 'unchecked'];\n if (!truthy.includes(normalized) && !falsy.includes(normalized)) {\n return {\n success: false,\n error: 'Expected true or false for a ' + inputType + ', got \"' + value + '\"',\n elementType: tagName,\n inputType: inputType,\n suggestion: 'Use true/false (also yes/no, on/off, 1/0)'\n };\n }\n const shouldCheck = truthy.includes(normalized);\n if (inputType === 'radio' && !shouldCheck) {\n return {\n success: false,\n error: 'A radio button cannot be unchecked',\n elementType: tagName,\n inputType: inputType,\n suggestion: 'Select another option in the same group instead'\n };\n }\n if (el.checked !== shouldCheck) {\n el.click();\n }\n } else if (inputType === 'file') {\n return {\n success: false,\n fileInput: true,\n elementType: tagName,\n inputType: inputType,\n error: 'File input'\n };\n } else if (el.isContentEditable) {\n el.textContent = value;\n el.dispatchEvent(new Event('input', { bubbles: true }));\n } else {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n el.ownerDocument.defaultView.HTMLInputElement.prototype,\n 'value'\n )?.set;\n \n const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\n el.ownerDocument.defaultView.HTMLTextAreaElement.prototype,\n 'value'\n )?.set;\n \n const setter = tagName === 'textarea' \n ? nativeTextAreaValueSetter \n : nativeInputValueSetter;\n\n if (el.maxLength > 0 && value.length > el.maxLength) {\n return {\n success: false,\n error: 'Value is ' + value.length + ' characters; the field accepts at most ' + el.maxLength,\n elementType: tagName,\n inputType: inputType || null,\n suggestion: 'Shorten the value (a user could not type more than maxlength characters)'\n };\n }\n \n const setValue = (text) => (setter ? setter.call(el, text) : (el.value = text));\n const previous = el.value;\n setValue(value);\n const rejection = rejectedValue(el, inputType, value);\n if (rejection) {\n setValue(previous);\n if (options.blur !== false) el.blur();\n return {\n success: false,\n error: rejection.error,\n elementType: tagName,\n inputType: inputType,\n suggestion: rejection.suggestion\n };\n }\n\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n if (el.validity && (el.validity.rangeOverflow || el.validity.rangeUnderflow)) {\n warnings.push('The value is outside the allowed range (' + (el.min || 'no minimum') + ' to ' + (el.max || 'no maximum') + '); the form will not submit until it is fixed');\n }\n }\n \n if (options.blur !== false) {\n el.blur();\n }\n \n return {\n success: true,\n selector: selector,\n value: el.isContentEditable\n ? el.textContent\n : inputType === 'password'\n ? '********'\n : tagName === 'select' && el.multiple\n ? Array.from(el.selectedOptions).map((o) => o.value).join(', ')\n : el.value,\n elementType: tagName,\n inputType: inputType || null,\n checked: inputType === 'checkbox' || inputType === 'radio' ? el.checked : undefined,\n matchCount: allMatches.length,\n warning: warnings.concat(allMatches.length > 1 && typeof index !== 'number'\n ? [allMatches.length + ' elements match; filled the first (use --index or a more specific selector)']\n : []).join('; ') || undefined\n };\n})\n";
|
|
21
|
+
/**
|
|
22
|
+
* JavaScript function to locate an element for clicking.
|
|
23
|
+
*
|
|
24
|
+
* Scrolls the element into view and reports its center point and whether it
|
|
25
|
+
* is the topmost element there (`hittable`). It does not click; see
|
|
26
|
+
* `clickElement`, which dispatches real mouse events or falls back to
|
|
27
|
+
* `el.click()`.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* Handles both direct selector matching and indexed selection.
|
|
31
|
+
* When index is provided, selects the nth matching element (0-based).
|
|
32
|
+
* When selector matches multiple elements without index, prioritizes visible ones.
|
|
33
|
+
*/
|
|
34
|
+
export declare const CLICK_ELEMENT_SCRIPT = "\n(function(selector, parts, index, action) {\n const allMatches = (function (selector, parts) {\n if (selector === '__bdg_bound_target__') {\n const el = window.__bdgTarget;\n return el && el.isConnected ? [el] : [];\n }\n return (function (selector, parts) {\n const css = parts ? parts.map((part) => part.css).join(', ') : selector;\n const found = [];\n const visit = (root) => {\n for (const match of root.querySelectorAll(css)) found.push(match);\n for (const el of root.querySelectorAll('*')) {\n if (el.shadowRoot) visit(el.shadowRoot);\n if (el.tagName === 'IFRAME' || el.tagName === 'FRAME') {\n let frameDocument = null;\n try { frameDocument = el.contentDocument; } catch (e) { frameDocument = null; }\n if (frameDocument) visit(frameDocument);\n }\n }\n };\n visit(document);\n if (!parts) return found;\n const passes = (el, filter) => {\n if (filter.kind === 'visible') {\n const rect = el.getBoundingClientRect();\n return rect.width > 0 && rect.height > 0 && el.ownerDocument.defaultView.getComputedStyle(el).visibility === 'visible';\n }\n const text = (typeof el.innerText === 'string' ? el.innerText : el.textContent || '').replace(/\\s+/g, ' ').trim();\n return filter.kind === 'text-is' ? text === filter.text : text.toLowerCase().includes(filter.text);\n};\n return found.filter((el) => parts.some((part) => el.matches(part.css) && part.filters.every((filter) => passes(el, filter))));\n})(selector, parts);\n})(selector, parts);\n \n if (allMatches.length === 0) {\n return {\n success: false,\n error: 'Element not found: ' + selector,\n selector: selector\n };\n }\n \n let el;\n \n // If index is provided, use it directly (0-based)\n if (typeof index === 'number' && index >= 0) {\n if (index >= allMatches.length) {\n return {\n success: false,\n error: 'Index out of range',\n selector: selector,\n matchCount: allMatches.length,\n requestedIndex: index,\n suggestion: 'Use --index between 0 and ' + (allMatches.length - 1)\n };\n }\n el = allMatches[index];\n } else if (allMatches.length === 1) {\n // Single match - use it directly\n el = allMatches[0];\n } else {\n // Multiple matches without index - find first visible one\n el = allMatches[0];\n for (const candidate of allMatches) {\n const style = candidate.ownerDocument.defaultView.getComputedStyle(candidate);\n const rect = candidate.getBoundingClientRect();\n \n const hasSize = rect.width > 0 && rect.height > 0;\n const isDisplayed = style.display !== 'none' && style.visibility !== 'hidden';\n const isOpaque = parseFloat(style.opacity) > 0;\n const isPositioned = candidate.offsetParent !== null || style.position === 'fixed';\n \n const isVisible = hasSize && isDisplayed && isOpaque && isPositioned;\n \n if (isVisible) {\n el = candidate;\n break;\n }\n }\n }\n \n const tagName = el.tagName.toLowerCase();\n if (tagName === 'option') {\n const quote = (text) => \"'\" + String(text).split(\"'\").join(\"'\\\\''\") + \"'\";\n const select = el.closest('select');\n const target = select && select.id ? '#' + select.id : select && select.name ? 'select[name=\"' + select.name + '\"]' : 'select';\n return {\n success: false,\n error: 'An <option> is chosen through its <select>, not clicked',\n selector: selector,\n elementType: tagName,\n exitCode: 81,\n suggestion: 'bdg dom fill ' + quote(target) + ' ' + quote(el.value || el.text.trim())\n };\n }\n // Disabled elements still get hover (tooltips often explain why)\n if (action !== 'hover' && (el.disabled || el.matches(':disabled'))) {\n return {\n success: false,\n error: 'Element is disabled',\n selector: selector,\n elementType: tagName,\n suggestion: 'A user cannot click a disabled element; enable it first (it may depend on other fields)'\n };\n }\n el.scrollIntoView({ behavior: 'auto', block: 'center' });\n\n // The caller clicks with real mouse events at (x, y) when the element is the\n // topmost thing there; otherwise it falls back to el.click() via this handle.\n // Hit-testing happens in the element's own root (shadow root or frame\n // document), then in each enclosing document at the frame's position, so an\n // overlay over the iframe counts as covering it. The mouse events need\n // top-page coordinates: frame offsets (border and padding) are added.\n window.__bdgClickTarget = el;\n const rect = el.getBoundingClientRect();\n const view = el.ownerDocument.defaultView;\n const hitTest = (node, px, py) => {\n const root = node.getRootNode();\n const hit = (typeof root.elementFromPoint === 'function' ? root : node.ownerDocument).elementFromPoint(px, py);\n return hit !== null && (hit === node || node.contains(hit));\n };\n const toTopPage = (px, py) => {\n let hittable = hitTest(el, px, py);\n for (let frameWindow = view; frameWindow && frameWindow.frameElement; frameWindow = frameWindow.parent) {\n const frame = frameWindow.frameElement;\n const frameRect = frame.getBoundingClientRect();\n const frameStyle = frame.ownerDocument.defaultView.getComputedStyle(frame);\n px += frameRect.left + frame.clientLeft + parseFloat(frameStyle.paddingLeft);\n py += frameRect.top + frame.clientTop + parseFloat(frameStyle.paddingTop);\n hittable = hittable && hitTest(frame, px, py);\n }\n return { x: px, y: py, hittable: hittable };\n };\n const left = Math.max(rect.left, 0);\n const right = Math.min(rect.right, view.innerWidth);\n const top = Math.max(rect.top, 0);\n const bottom = Math.min(rect.bottom, view.innerHeight);\n const area = right > left && bottom > top\n ? { left: left, top: top, width: right - left, height: bottom - top }\n : { left: rect.left, top: rect.top, width: rect.width, height: rect.height };\n const fractions = [[0.5, 0.5], [0.5, 0.25], [0.5, 0.75], [0.25, 0.5], [0.75, 0.5], [0.25, 0.25], [0.75, 0.25], [0.25, 0.75], [0.75, 0.75]];\n const hasSize = rect.width > 0 && rect.height > 0;\n let point = null;\n for (const [fx, fy] of hasSize ? fractions : [[0.5, 0.5]]) {\n const candidate = toTopPage(area.left + area.width * fx, area.top + area.height * fy);\n point = point || candidate;\n if (hasSize && candidate.hittable) { point = candidate; break; }\n }\n const x = point.x;\n const y = point.y;\n const hittable = hasSize && point.hittable;\n const describe = (node) => node.tagName.toLowerCase() + (node.id ? '#' + node.id : '') +\n (node.classList && node.classList.length ? '.' + Array.from(node.classList).slice(0, 2).join('.') : '');\n const coveredBy = () => {\n const root = el.getRootNode();\n const hit = (typeof root.elementFromPoint === 'function' ? root : el.ownerDocument)\n .elementFromPoint(area.left + area.width / 2, area.top + area.height / 2);\n return hit && !el.contains(hit) ? ' (' + describe(hit) + ')' : '';\n };\n const style = view.getComputedStyle(el);\n let obstruction = null;\n if (style.display === 'none' || el.getClientRects().length === 0) obstruction = 'not rendered (display: none)';\n else if (style.visibility === 'hidden') obstruction = 'hidden (visibility: hidden)';\n else if (el.closest('[inert]')) obstruction = 'inert (the page made it non-interactive)';\n else if (style.pointerEvents === 'none') obstruction = 'not clickable (pointer-events: none)';\n else if (!hasSize) obstruction = 'zero-size';\n else if (!hittable) obstruction = 'covered by another element' + coveredBy();\n\n return {\n success: true,\n selector: selector,\n elementType: tagName,\n matchCount: allMatches.length,\n selectedIndex: typeof index === 'number' ? index : undefined,\n x: x,\n y: y,\n hittable: hittable,\n obstruction: obstruction\n };\n})\n";
|
|
35
|
+
/**
|
|
36
|
+
* Options for filling an element.
|
|
37
|
+
*/
|
|
38
|
+
export interface FillOptions {
|
|
39
|
+
/** Whether to blur the element after filling (default: true) */
|
|
40
|
+
blur?: boolean;
|
|
41
|
+
/** Index to use if selector matches multiple elements (0-based) */
|
|
42
|
+
index?: number;
|
|
43
|
+
/** Directory relative file paths are resolved against (file inputs) */
|
|
44
|
+
cwd?: string;
|
|
45
|
+
}
|
|
46
|
+
export type { FillResult, ClickResult } from '../../ipc/protocol/domTypes.js';
|
|
47
|
+
/**
|
|
48
|
+
* Type guard for FillResult.
|
|
49
|
+
*
|
|
50
|
+
* @param value - Value to check
|
|
51
|
+
* @returns True if value is a valid FillResult
|
|
52
|
+
*/
|
|
53
|
+
export declare function isFillResult(value: unknown): value is FillResult;
|
|
54
|
+
/**
|
|
55
|
+
* Type guard for ClickResult.
|
|
56
|
+
*
|
|
57
|
+
* @param value - Value to check
|
|
58
|
+
* @returns True if value is a valid ClickResult
|
|
59
|
+
*/
|
|
60
|
+
export declare function isClickResult(value: unknown): value is ClickResult;
|
|
61
|
+
//# sourceMappingURL=reactEventHelpers.d.ts.map
|