browser-debugger-cli 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -6
- package/dist/__tests__/smoke/error-handling.smoke.test.js +14 -48
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +1 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
- package/dist/__testutils__/testCleanup.js +1 -1
- package/dist/__testutils__/testCleanup.js.map +1 -1
- package/dist/cdp/protocol.d.ts +0 -48
- package/dist/cdp/protocol.d.ts.map +1 -1
- package/dist/cdp/protocol.js +0 -94
- package/dist/cdp/protocol.js.map +1 -1
- package/dist/commands/__tests__/cdp.contract.test.js +2 -2
- package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/commands/__tests__/domEval.contract.test.js +8 -4
- package/dist/commands/__tests__/domEval.contract.test.js.map +1 -1
- package/dist/commands/cdp.d.ts.map +1 -1
- package/dist/commands/cdp.js +4 -37
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +4 -17
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +3 -8
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.d.ts.map +1 -1
- package/dist/commands/details.js +1 -1
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/{domEvalHelpers.d.ts → dom/evalHelpers.d.ts} +8 -5
- package/dist/commands/dom/evalHelpers.d.ts.map +1 -0
- package/dist/commands/{domEvalHelpers.js → dom/evalHelpers.js} +14 -13
- package/dist/commands/dom/evalHelpers.js.map +1 -0
- package/dist/commands/dom/formFillHelpers.d.ts +47 -0
- package/dist/commands/dom/formFillHelpers.d.ts.map +1 -0
- package/dist/commands/dom/formFillHelpers.js +185 -0
- package/dist/commands/dom/formFillHelpers.js.map +1 -0
- package/dist/commands/dom/formInteraction.d.ts +17 -0
- package/dist/commands/dom/formInteraction.d.ts.map +1 -0
- package/dist/commands/dom/formInteraction.js +239 -0
- package/dist/commands/dom/formInteraction.js.map +1 -0
- package/dist/commands/dom/formSubmitHelpers.d.ts +58 -0
- package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -0
- package/dist/commands/dom/formSubmitHelpers.js +176 -0
- package/dist/commands/dom/formSubmitHelpers.js.map +1 -0
- package/dist/commands/dom/helpers.d.ts +34 -0
- package/dist/commands/dom/helpers.d.ts.map +1 -0
- package/dist/commands/dom/helpers.js +244 -0
- package/dist/commands/dom/helpers.js.map +1 -0
- package/dist/commands/{dom.d.ts → dom/index.d.ts} +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -0
- package/dist/commands/{dom.js → dom/index.js} +33 -123
- package/dist/commands/dom/index.js.map +1 -0
- package/dist/commands/dom/reactEventHelpers.d.ts +80 -0
- package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -0
- package/dist/commands/dom/reactEventHelpers.js +274 -0
- package/dist/commands/dom/reactEventHelpers.js.map +1 -0
- package/dist/commands/network.js +1 -1
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +47 -52
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +3 -2
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +3 -1
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/daemonErrorHandler.d.ts +30 -0
- package/dist/commands/shared/daemonErrorHandler.d.ts.map +1 -0
- package/dist/commands/shared/daemonErrorHandler.js +32 -0
- package/dist/commands/shared/daemonErrorHandler.js.map +1 -0
- package/dist/commands/shared/{daemonSessionController.d.ts → startHelpers.d.ts} +7 -1
- package/dist/commands/shared/startHelpers.d.ts.map +1 -0
- package/dist/commands/shared/{daemonSessionController.js → startHelpers.js} +13 -5
- package/dist/commands/shared/startHelpers.js.map +1 -0
- package/dist/commands/shared/validation.d.ts +44 -0
- package/dist/commands/shared/validation.d.ts.map +1 -0
- package/dist/commands/shared/validation.js +68 -0
- package/dist/commands/shared/validation.js.map +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +9 -25
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +6 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +5 -16
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +49 -44
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands/types.d.ts +43 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +8 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +3 -1
- package/dist/commands.js.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.js +7 -7
- package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/connection/__tests__/handlers.unit.test.d.ts +11 -0
- package/dist/connection/__tests__/handlers.unit.test.d.ts.map +1 -0
- package/dist/connection/__tests__/handlers.unit.test.js +220 -0
- package/dist/connection/__tests__/handlers.unit.test.js.map +1 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +14 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.js +382 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.js.map +1 -0
- package/dist/connection/__tests__/portReservation.contract.test.d.ts +14 -0
- package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/portReservation.contract.test.js +250 -0
- package/dist/connection/__tests__/portReservation.contract.test.js.map +1 -0
- package/dist/connection/cdp.d.ts +34 -11
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +61 -45
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/config.d.ts +63 -0
- package/dist/connection/config.d.ts.map +1 -0
- package/dist/connection/config.js +46 -0
- package/dist/connection/config.js.map +1 -0
- package/dist/connection/errors.d.ts +6 -21
- package/dist/connection/errors.d.ts.map +1 -1
- package/dist/connection/errors.js +7 -26
- package/dist/connection/errors.js.map +1 -1
- package/dist/connection/events.d.ts +30 -0
- package/dist/connection/events.d.ts.map +1 -0
- package/dist/connection/events.js +8 -0
- package/dist/connection/events.js.map +1 -0
- package/dist/connection/handlers.d.ts +3 -5
- package/dist/connection/handlers.d.ts.map +1 -1
- package/dist/connection/handlers.js +10 -12
- package/dist/connection/handlers.js.map +1 -1
- package/dist/connection/launcher/binaryResolver.d.ts +40 -0
- package/dist/connection/launcher/binaryResolver.d.ts.map +1 -0
- package/dist/connection/launcher/binaryResolver.js +78 -0
- package/dist/connection/launcher/binaryResolver.js.map +1 -0
- package/dist/connection/launcher/flagsBuilder.d.ts +64 -0
- package/dist/connection/launcher/flagsBuilder.d.ts.map +1 -0
- package/dist/connection/launcher/flagsBuilder.js +84 -0
- package/dist/connection/launcher/flagsBuilder.js.map +1 -0
- package/dist/connection/launcher/preferencesLoader.d.ts +74 -0
- package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -0
- package/dist/connection/launcher/preferencesLoader.js +89 -0
- package/dist/connection/launcher/preferencesLoader.js.map +1 -0
- package/dist/connection/launcher.d.ts +24 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +30 -205
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts +8 -8
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +36 -52
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/connection/portReservation.d.ts +40 -0
- package/dist/connection/portReservation.d.ts.map +1 -0
- package/dist/connection/portReservation.js +55 -0
- package/dist/connection/portReservation.js.map +1 -0
- package/dist/connection/typed-cdp.d.ts +2 -1
- package/dist/connection/typed-cdp.d.ts.map +1 -1
- package/dist/connection/typed-cdp.js.map +1 -1
- package/dist/connection/types.d.ts +103 -0
- package/dist/connection/types.d.ts.map +1 -0
- package/dist/connection/types.js +8 -0
- package/dist/connection/types.js.map +1 -0
- package/dist/constants.d.ts +0 -83
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -83
- package/dist/constants.js.map +1 -1
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.js +140 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +276 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js +290 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +8 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.js +384 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.js +2 -1
- package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
- package/dist/daemon/errors.d.ts +65 -0
- package/dist/daemon/errors.d.ts.map +1 -0
- package/dist/daemon/errors.js +82 -0
- package/dist/daemon/errors.js.map +1 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts +32 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/CommandHandlers.js +93 -0
- package/dist/daemon/handlers/CommandHandlers.js.map +1 -0
- package/dist/daemon/handlers/QueryHandlers.d.ts +35 -0
- package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/QueryHandlers.js +176 -0
- package/dist/daemon/handlers/QueryHandlers.js.map +1 -0
- package/dist/daemon/handlers/SessionHandlers.d.ts +32 -0
- package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/SessionHandlers.js +227 -0
- package/dist/daemon/handlers/SessionHandlers.js.map +1 -0
- package/dist/daemon/handlers/pendingRequests.d.ts +50 -0
- package/dist/daemon/handlers/pendingRequests.d.ts.map +1 -0
- package/dist/daemon/handlers/pendingRequests.js +57 -0
- package/dist/daemon/handlers/pendingRequests.js.map +1 -0
- package/dist/daemon/handlers/requestHandlers.d.ts +51 -0
- package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/requestHandlers.js +61 -0
- package/dist/daemon/handlers/requestHandlers.js.map +1 -0
- package/dist/daemon/handlers/responseHandler.d.ts +42 -0
- package/dist/daemon/handlers/responseHandler.d.ts.map +1 -0
- package/dist/daemon/handlers/responseHandler.js +195 -0
- package/dist/daemon/handlers/responseHandler.js.map +1 -0
- package/dist/daemon/ipcServer.d.ts +19 -41
- package/dist/daemon/ipcServer.d.ts.map +1 -1
- package/dist/daemon/ipcServer.js +83 -655
- package/dist/daemon/ipcServer.js.map +1 -1
- package/dist/daemon/launcher.d.ts.map +1 -1
- package/dist/daemon/launcher.js +6 -3
- package/dist/daemon/launcher.js.map +1 -1
- package/dist/daemon/lifecycle/cdpSetup.d.ts +24 -0
- package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -0
- package/dist/daemon/lifecycle/cdpSetup.js +59 -0
- package/dist/daemon/lifecycle/cdpSetup.js.map +1 -0
- package/dist/daemon/lifecycle/chromeConnection.d.ts +17 -0
- package/dist/daemon/lifecycle/chromeConnection.d.ts.map +1 -0
- package/dist/daemon/lifecycle/chromeConnection.js +80 -0
- package/dist/daemon/lifecycle/chromeConnection.js.map +1 -0
- package/dist/daemon/lifecycle/signalHandlers.d.ts +14 -0
- package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -0
- package/dist/daemon/lifecycle/signalHandlers.js +35 -0
- package/dist/daemon/lifecycle/signalHandlers.js.map +1 -0
- package/dist/daemon/lifecycle/workerCleanup.d.ts +27 -0
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerCleanup.js +144 -0
- package/dist/daemon/lifecycle/workerCleanup.js.map +1 -0
- package/dist/daemon/lifecycle/workerConfig.d.ts +14 -0
- package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerConfig.js +66 -0
- package/dist/daemon/lifecycle/workerConfig.js.map +1 -0
- package/dist/daemon/lifecycle/workerIpc.d.ts +14 -0
- package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerIpc.js +87 -0
- package/dist/daemon/lifecycle/workerIpc.js.map +1 -0
- package/dist/daemon/server/JsonlParser.d.ts +31 -0
- package/dist/daemon/server/JsonlParser.d.ts.map +1 -0
- package/dist/daemon/server/JsonlParser.js +57 -0
- package/dist/daemon/server/JsonlParser.js.map +1 -0
- package/dist/daemon/server/SocketServer.d.ts.map +1 -1
- package/dist/daemon/server/SocketServer.js +2 -2
- package/dist/daemon/server/SocketServer.js.map +1 -1
- package/dist/daemon/server/WorkerManager.d.ts +3 -3
- package/dist/daemon/server/WorkerManager.d.ts.map +1 -1
- package/dist/daemon/server/WorkerManager.js +10 -19
- package/dist/daemon/server/WorkerManager.js.map +1 -1
- package/dist/daemon/services/SessionService.d.ts +87 -0
- package/dist/daemon/services/SessionService.d.ts.map +1 -0
- package/dist/daemon/services/SessionService.js +45 -0
- package/dist/daemon/services/SessionService.js.map +1 -0
- package/dist/daemon/startSession.d.ts.map +1 -1
- package/dist/daemon/startSession.js +54 -31
- package/dist/daemon/startSession.js.map +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +20 -215
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/daemon/worker.d.ts +3 -12
- package/dist/daemon/worker.d.ts.map +1 -1
- package/dist/daemon/worker.js +47 -367
- package/dist/daemon/worker.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.d.ts +0 -15
- package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.js +8 -23
- package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
- package/dist/ipc/__tests__/errors.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/errors.unit.test.js +77 -0
- package/dist/ipc/__tests__/errors.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/guards.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/guards.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/guards.unit.test.js +73 -0
- package/dist/ipc/__tests__/guards.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/jsonl.unit.test.js +85 -0
- package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/validation.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/validation.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/validation.unit.test.js +60 -0
- package/dist/ipc/__tests__/validation.unit.test.js.map +1 -0
- package/dist/ipc/client.d.ts +93 -84
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +121 -192
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/index.d.ts +17 -0
- package/dist/ipc/index.d.ts.map +1 -0
- package/dist/ipc/index.js +23 -0
- package/dist/ipc/index.js.map +1 -0
- package/dist/ipc/protocol/commands.d.ts +144 -0
- package/dist/ipc/protocol/commands.d.ts.map +1 -0
- package/dist/ipc/protocol/commands.js +23 -0
- package/dist/ipc/protocol/commands.js.map +1 -0
- package/dist/ipc/protocol/guards.d.ts +47 -0
- package/dist/ipc/protocol/guards.d.ts.map +1 -0
- package/dist/ipc/protocol/guards.js +62 -0
- package/dist/ipc/protocol/guards.js.map +1 -0
- package/dist/ipc/protocol/index.d.ts +9 -0
- package/dist/ipc/protocol/index.d.ts.map +1 -0
- package/dist/ipc/protocol/index.js +8 -0
- package/dist/ipc/protocol/index.js.map +1 -0
- package/dist/ipc/protocol/messages.d.ts +64 -0
- package/dist/ipc/protocol/messages.d.ts.map +1 -0
- package/dist/ipc/protocol/messages.js +8 -0
- package/dist/ipc/protocol/messages.js.map +1 -0
- package/dist/ipc/session/errors.d.ts +25 -0
- package/dist/ipc/session/errors.d.ts.map +1 -0
- package/dist/ipc/{types.js → session/errors.js} +11 -6
- package/dist/ipc/session/errors.js.map +1 -0
- package/dist/ipc/session/index.d.ts +16 -0
- package/dist/ipc/session/index.d.ts.map +1 -0
- package/dist/ipc/session/index.js +7 -0
- package/dist/ipc/session/index.js.map +1 -0
- package/dist/ipc/session/lifecycle.d.ts +125 -0
- package/dist/ipc/session/lifecycle.d.ts.map +1 -0
- package/dist/ipc/session/lifecycle.js +7 -0
- package/dist/ipc/session/lifecycle.js.map +1 -0
- package/dist/ipc/session/queries.d.ts +94 -0
- package/dist/ipc/session/queries.d.ts.map +1 -0
- package/dist/ipc/session/queries.js +7 -0
- package/dist/ipc/session/queries.js.map +1 -0
- package/dist/ipc/session/types.d.ts +28 -0
- package/dist/ipc/session/types.d.ts.map +1 -0
- package/dist/ipc/session/types.js +7 -0
- package/dist/ipc/session/types.js.map +1 -0
- package/dist/ipc/transport/IPCError.d.ts +82 -0
- package/dist/ipc/transport/IPCError.d.ts.map +1 -0
- package/dist/ipc/transport/IPCError.js +109 -0
- package/dist/ipc/transport/IPCError.js.map +1 -0
- package/dist/ipc/transport/errors.d.ts +11 -0
- package/dist/ipc/transport/errors.d.ts.map +1 -0
- package/dist/ipc/transport/errors.js +28 -0
- package/dist/ipc/transport/errors.js.map +1 -0
- package/dist/ipc/transport/index.d.ts +16 -0
- package/dist/ipc/transport/index.d.ts.map +1 -0
- package/dist/ipc/transport/index.js +77 -0
- package/dist/ipc/transport/index.js.map +1 -0
- package/dist/ipc/transport/jsonl.d.ts +23 -0
- package/dist/ipc/transport/jsonl.d.ts.map +1 -0
- package/dist/ipc/transport/jsonl.js +36 -0
- package/dist/ipc/transport/jsonl.js.map +1 -0
- package/dist/ipc/transport/socket.d.ts +27 -0
- package/dist/ipc/transport/socket.d.ts.map +1 -0
- package/dist/ipc/transport/socket.js +49 -0
- package/dist/ipc/transport/socket.js.map +1 -0
- package/dist/ipc/transport/validation.d.ts +21 -0
- package/dist/ipc/transport/validation.d.ts.map +1 -0
- package/dist/ipc/transport/validation.js +23 -0
- package/dist/ipc/transport/validation.js.map +1 -0
- package/dist/ipc/utils/errors.d.ts +25 -0
- package/dist/ipc/utils/errors.d.ts.map +1 -0
- package/dist/ipc/utils/errors.js +29 -0
- package/dist/ipc/utils/errors.js.map +1 -0
- package/dist/ipc/utils/index.d.ts +12 -0
- package/dist/ipc/utils/index.d.ts.map +1 -0
- package/dist/ipc/utils/index.js +11 -0
- package/dist/ipc/utils/index.js.map +1 -0
- package/dist/ipc/utils/requestId.d.ts +23 -0
- package/dist/ipc/utils/requestId.d.ts.map +1 -0
- package/dist/ipc/utils/requestId.js +27 -0
- package/dist/ipc/utils/requestId.js.map +1 -0
- package/dist/ipc/utils/responseValidator.d.ts.map +1 -0
- package/dist/ipc/{responseValidator.js → utils/responseValidator.js} +2 -1
- package/dist/ipc/utils/responseValidator.js.map +1 -0
- package/dist/ipc/utils/session.d.ts +36 -0
- package/dist/ipc/utils/session.d.ts.map +1 -0
- package/dist/ipc/utils/session.js +37 -0
- package/dist/ipc/utils/session.js.map +1 -0
- package/dist/ipc/utils/types.d.ts +17 -0
- package/dist/ipc/utils/types.d.ts.map +1 -0
- package/dist/ipc/utils/types.js +7 -0
- package/dist/ipc/utils/types.js.map +1 -0
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts +7 -0
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/chrome-cache.contract.test.js +77 -0
- package/dist/session/__tests__/chrome-cache.contract.test.js.map +1 -0
- package/dist/session/__tests__/cleanup.contract.test.d.ts +7 -0
- package/dist/session/__tests__/cleanup.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/cleanup.contract.test.js +84 -0
- package/dist/session/__tests__/cleanup.contract.test.js.map +1 -0
- package/dist/session/__tests__/lock.contract.test.d.ts +7 -0
- package/dist/session/__tests__/lock.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/lock.contract.test.js +77 -0
- package/dist/session/__tests__/lock.contract.test.js.map +1 -0
- package/dist/session/__tests__/metadata.contract.test.d.ts +7 -0
- package/dist/session/__tests__/metadata.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/metadata.contract.test.js +87 -0
- package/dist/session/__tests__/metadata.contract.test.js.map +1 -0
- package/dist/session/chrome.d.ts +20 -0
- package/dist/session/chrome.d.ts.map +1 -1
- package/dist/session/chrome.js +80 -16
- package/dist/session/chrome.js.map +1 -1
- package/dist/session/cleanup.d.ts +15 -2
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +100 -72
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/lock.d.ts.map +1 -1
- package/dist/session/lock.js +101 -90
- package/dist/session/lock.js.map +1 -1
- package/dist/session/metadata.d.ts +10 -3
- package/dist/session/metadata.d.ts.map +1 -1
- package/dist/session/metadata.js +24 -6
- package/dist/session/metadata.js.map +1 -1
- package/dist/session/paths.d.ts +0 -9
- package/dist/session/paths.d.ts.map +1 -1
- package/dist/session/paths.js +0 -11
- package/dist/session/paths.js.map +1 -1
- package/dist/session/pid.d.ts +15 -0
- package/dist/session/pid.d.ts.map +1 -1
- package/dist/session/pid.js +39 -21
- package/dist/session/pid.js.map +1 -1
- package/dist/session/process.d.ts +4 -41
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +4 -85
- package/dist/session/process.js.map +1 -1
- package/dist/session/statusData.d.ts +50 -0
- package/dist/session/statusData.d.ts.map +1 -0
- package/dist/session/statusData.js +51 -0
- package/dist/session/statusData.js.map +1 -0
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts +8 -0
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/navigation.contract.test.js +211 -0
- package/dist/telemetry/__tests__/navigation.contract.test.js.map +1 -0
- package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -20
- package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -1
- package/dist/telemetry/__tests__/network.contract.test.js +2 -64
- package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
- package/dist/telemetry/__tests__/utils.unit.test.d.ts +7 -0
- package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/utils.unit.test.js +91 -0
- package/dist/telemetry/__tests__/utils.unit.test.js.map +1 -0
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +19 -28
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/dialogs.d.ts.map +1 -1
- package/dist/telemetry/dialogs.js +4 -8
- package/dist/telemetry/dialogs.js.map +1 -1
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +51 -59
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/filters.d.ts +5 -18
- package/dist/telemetry/filters.d.ts.map +1 -1
- package/dist/telemetry/filters.js +36 -56
- package/dist/telemetry/filters.js.map +1 -1
- package/dist/telemetry/navigation.d.ts.map +1 -1
- package/dist/telemetry/navigation.js +5 -8
- package/dist/telemetry/navigation.js.map +1 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +105 -104
- package/dist/telemetry/network.js.map +1 -1
- package/dist/telemetry/utils.d.ts +85 -0
- package/dist/telemetry/utils.d.ts.map +1 -0
- package/dist/telemetry/utils.js +138 -0
- package/dist/telemetry/utils.js.map +1 -0
- package/dist/types/dom.d.ts +66 -0
- package/dist/types/dom.d.ts.map +1 -0
- package/dist/types/dom.js +8 -0
- package/dist/types/dom.js.map +1 -0
- package/dist/types.d.ts +15 -83
- package/dist/types.d.ts.map +1 -1
- package/dist/{commands/shared → ui}/OutputBuilder.d.ts +10 -2
- package/dist/ui/OutputBuilder.d.ts.map +1 -0
- package/dist/{commands/shared → ui}/OutputBuilder.js +8 -2
- package/dist/ui/OutputBuilder.js.map +1 -0
- package/dist/ui/errors/CommandError.d.ts +16 -2
- package/dist/ui/errors/CommandError.d.ts.map +1 -1
- package/dist/ui/errors/CommandError.js +2 -1
- package/dist/ui/errors/CommandError.js.map +1 -1
- package/dist/ui/errors/index.d.ts +2 -3
- package/dist/ui/errors/index.d.ts.map +1 -1
- package/dist/ui/errors/index.js +1 -3
- package/dist/ui/errors/index.js.map +1 -1
- package/dist/ui/errors/utils.d.ts +6 -0
- package/dist/ui/errors/utils.d.ts.map +1 -1
- package/dist/ui/errors/utils.js +8 -3
- package/dist/ui/errors/utils.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts +3 -18
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +4 -27
- package/dist/ui/formatters/dom.js.map +1 -1
- package/dist/ui/formatters/preview.d.ts +8 -8
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +18 -13
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/status.d.ts +1 -1
- package/dist/ui/formatters/status.d.ts.map +1 -1
- package/dist/ui/formatters/status.js +8 -30
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/formatting.d.ts +2 -270
- package/dist/ui/formatting.d.ts.map +1 -1
- package/dist/ui/formatting.js +8 -331
- package/dist/ui/formatting.js.map +1 -1
- package/dist/ui/logging/index.d.ts +1 -1
- package/dist/ui/logging/index.d.ts.map +1 -1
- package/dist/ui/logging/index.js +1 -1
- package/dist/ui/logging/index.js.map +1 -1
- package/dist/ui/logging/logger.d.ts +3 -23
- package/dist/ui/logging/logger.d.ts.map +1 -1
- package/dist/ui/logging/logger.js +2 -27
- package/dist/ui/logging/logger.js.map +1 -1
- package/dist/ui/messages/chrome.d.ts +15 -7
- package/dist/ui/messages/chrome.d.ts.map +1 -1
- package/dist/ui/messages/chrome.js +23 -32
- package/dist/ui/messages/chrome.js.map +1 -1
- package/dist/ui/messages/commands.d.ts +2 -19
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +5 -51
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/consoleMessages.d.ts +1 -1
- package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
- package/dist/ui/messages/consoleMessages.js +3 -6
- package/dist/ui/messages/consoleMessages.js.map +1 -1
- package/dist/ui/messages/debug.d.ts +0 -14
- package/dist/ui/messages/debug.d.ts.map +1 -1
- package/dist/ui/messages/debug.js +0 -18
- package/dist/ui/messages/debug.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +0 -34
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +3 -81
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/internal.d.ts +0 -7
- package/dist/ui/messages/internal.d.ts.map +1 -1
- package/dist/ui/messages/internal.js +0 -12
- package/dist/ui/messages/internal.js.map +1 -1
- package/dist/ui/messages/preview.d.ts +14 -1
- package/dist/ui/messages/preview.d.ts.map +1 -1
- package/dist/ui/messages/preview.js +24 -7
- package/dist/ui/messages/preview.js.map +1 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +7 -23
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +7 -8
- package/dist/ui/messages/validation.js.map +1 -1
- package/dist/utils/__tests__/atomicFile.test.d.ts +2 -0
- package/dist/utils/__tests__/atomicFile.test.d.ts.map +1 -0
- package/dist/utils/__tests__/atomicFile.test.js +43 -0
- package/dist/utils/__tests__/atomicFile.test.js.map +1 -0
- package/dist/utils/__tests__/objects.test.d.ts +2 -0
- package/dist/utils/__tests__/objects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/objects.test.js +50 -0
- package/dist/utils/__tests__/objects.test.js.map +1 -0
- package/dist/utils/__tests__/session.contract.test.js +13 -3
- package/dist/utils/__tests__/session.contract.test.js.map +1 -1
- package/dist/utils/__tests__/url.test.d.ts +2 -0
- package/dist/utils/__tests__/url.test.d.ts.map +1 -0
- package/dist/utils/__tests__/url.test.js +42 -0
- package/dist/utils/__tests__/url.test.js.map +1 -0
- package/dist/utils/atomicFile.d.ts +31 -5
- package/dist/utils/atomicFile.d.ts.map +1 -1
- package/dist/utils/atomicFile.js +52 -13
- package/dist/utils/atomicFile.js.map +1 -1
- package/dist/utils/concurrency.d.ts +54 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +78 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/daemonErrors.d.ts +60 -0
- package/dist/utils/daemonErrors.d.ts.map +1 -0
- package/dist/utils/daemonErrors.js +58 -0
- package/dist/utils/daemonErrors.js.map +1 -0
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +33 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exitCodes.d.ts +41 -5
- package/dist/utils/exitCodes.d.ts.map +1 -1
- package/dist/utils/exitCodes.js +43 -9
- package/dist/utils/exitCodes.js.map +1 -1
- package/dist/utils/http.d.ts +9 -4
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +44 -10
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/levenshtein.d.ts +45 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +85 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/dist/utils/objects.d.ts +16 -1
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +16 -1
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/process.d.ts +45 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +91 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/url.d.ts +10 -3
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +42 -29
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/validation.d.ts +101 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +131 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/dom.d.ts.map +0 -1
- package/dist/commands/dom.js.map +0 -1
- package/dist/commands/domEvalHelpers.d.ts.map +0 -1
- package/dist/commands/domEvalHelpers.js.map +0 -1
- package/dist/commands/domOptionsBuilder.d.ts +0 -67
- package/dist/commands/domOptionsBuilder.d.ts.map +0 -1
- package/dist/commands/domOptionsBuilder.js +0 -86
- package/dist/commands/domOptionsBuilder.js.map +0 -1
- package/dist/commands/domSelectorParser.d.ts +0 -20
- package/dist/commands/domSelectorParser.d.ts.map +0 -1
- package/dist/commands/domSelectorParser.js +0 -20
- package/dist/commands/domSelectorParser.js.map +0 -1
- package/dist/commands/shared/OutputBuilder.d.ts.map +0 -1
- package/dist/commands/shared/OutputBuilder.js.map +0 -1
- package/dist/commands/shared/daemonSessionController.d.ts.map +0 -1
- package/dist/commands/shared/daemonSessionController.js.map +0 -1
- package/dist/commands/shared/sessionController.d.ts +0 -21
- package/dist/commands/shared/sessionController.d.ts.map +0 -1
- package/dist/commands/shared/sessionController.js +0 -54
- package/dist/commands/shared/sessionController.js.map +0 -1
- package/dist/connection/__tests__/finder.contract.test.d.ts +0 -2
- package/dist/connection/__tests__/finder.contract.test.d.ts.map +0 -1
- package/dist/connection/__tests__/finder.contract.test.js +0 -239
- package/dist/connection/__tests__/finder.contract.test.js.map +0 -1
- package/dist/connection/domOperations.d.ts +0 -48
- package/dist/connection/domOperations.d.ts.map +0 -1
- package/dist/connection/domOperations.js +0 -106
- package/dist/connection/domOperations.js.map +0 -1
- package/dist/connection/finder.d.ts +0 -12
- package/dist/connection/finder.d.ts.map +0 -1
- package/dist/connection/finder.js +0 -17
- package/dist/connection/finder.js.map +0 -1
- package/dist/ipc/commands.d.ts +0 -260
- package/dist/ipc/commands.d.ts.map +0 -1
- package/dist/ipc/commands.js +0 -77
- package/dist/ipc/commands.js.map +0 -1
- package/dist/ipc/responseValidator.d.ts.map +0 -1
- package/dist/ipc/responseValidator.js.map +0 -1
- package/dist/ipc/types.d.ts +0 -226
- package/dist/ipc/types.d.ts.map +0 -1
- package/dist/ipc/types.js.map +0 -1
- package/dist/session/fileOps.d.ts +0 -25
- package/dist/session/fileOps.d.ts.map +0 -1
- package/dist/session/fileOps.js +0 -39
- package/dist/session/fileOps.js.map +0 -1
- package/dist/session/queryCache.d.ts +0 -36
- package/dist/session/queryCache.d.ts.map +0 -1
- package/dist/session/queryCache.js +0 -66
- package/dist/session/queryCache.js.map +0 -1
- /package/dist/ipc/{responseValidator.d.ts → utils/responseValidator.d.ts} +0 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form interaction commands for filling inputs, clicking buttons, and submitting forms.
|
|
3
|
+
*/
|
|
4
|
+
import { fillElement, clickElement } from '../../commands/dom/formFillHelpers.js';
|
|
5
|
+
import { submitForm } from '../../commands/dom/formSubmitHelpers.js';
|
|
6
|
+
import { runCommand } from '../../commands/shared/CommandRunner.js';
|
|
7
|
+
import { jsonOption } from '../../commands/shared/commonOptions.js';
|
|
8
|
+
import { CommandError } from '../../ui/errors/index.js';
|
|
9
|
+
import { OutputFormatter } from '../../ui/formatting.js';
|
|
10
|
+
import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
11
|
+
import { filterDefined } from '../../utils/objects.js';
|
|
12
|
+
/**
|
|
13
|
+
* Execute a function with an active CDP connection.
|
|
14
|
+
*
|
|
15
|
+
* Handles the full connection lifecycle:
|
|
16
|
+
* 1. Validates active session
|
|
17
|
+
* 2. Gets session metadata
|
|
18
|
+
* 3. Verifies target exists
|
|
19
|
+
* 4. Creates and connects CDP
|
|
20
|
+
* 5. Executes callback
|
|
21
|
+
* 6. Closes CDP connection (even on error)
|
|
22
|
+
*
|
|
23
|
+
* @param fn - Callback to execute with CDP connection
|
|
24
|
+
* @returns Result from callback
|
|
25
|
+
* @throws Error if session validation or connection fails
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
async function withCDPConnection(fn) {
|
|
30
|
+
const { CDPConnection } = await import('../../connection/cdp.js');
|
|
31
|
+
const { validateActiveSession, getValidatedSessionMetadata, verifyTargetExists } = await import('../../commands/dom/evalHelpers.js');
|
|
32
|
+
// Validate session
|
|
33
|
+
validateActiveSession();
|
|
34
|
+
const metadata = getValidatedSessionMetadata();
|
|
35
|
+
const port = 9222; // Default port
|
|
36
|
+
await verifyTargetExists(metadata, port);
|
|
37
|
+
// Connect to CDP
|
|
38
|
+
const cdp = new CDPConnection();
|
|
39
|
+
if (!metadata.webSocketDebuggerUrl) {
|
|
40
|
+
throw new CommandError('Missing webSocketDebuggerUrl in session metadata', { note: 'Session metadata may be corrupted or from an older version' }, EXIT_CODES.SESSION_FILE_ERROR);
|
|
41
|
+
}
|
|
42
|
+
await cdp.connect(metadata.webSocketDebuggerUrl);
|
|
43
|
+
try {
|
|
44
|
+
return await fn(cdp, metadata);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
cdp.close();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Register form interaction commands.
|
|
52
|
+
*
|
|
53
|
+
* @param program - Commander program instance
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* Registers the following commands:
|
|
57
|
+
* - `bdg dom fill <selector> <value>` - Fill form fields
|
|
58
|
+
* - `bdg dom click <selector>` - Click elements
|
|
59
|
+
* - `bdg dom submit <selector>` - Submit forms with smart waiting
|
|
60
|
+
*/
|
|
61
|
+
export function registerFormInteractionCommands(program) {
|
|
62
|
+
const domCommand = program.commands.find((cmd) => cmd.name() === 'dom');
|
|
63
|
+
if (!domCommand) {
|
|
64
|
+
throw new CommandError('DOM command group not found', { note: 'This is an internal error - DOM commands may not be registered' }, EXIT_CODES.SOFTWARE_ERROR);
|
|
65
|
+
}
|
|
66
|
+
// bdg dom fill <selector> <value>
|
|
67
|
+
domCommand
|
|
68
|
+
.command('fill')
|
|
69
|
+
.description('Fill a form field with a value (React-compatible)')
|
|
70
|
+
.argument('<selector>', 'CSS selector for the element')
|
|
71
|
+
.argument('<value>', 'Value to fill')
|
|
72
|
+
.option('--index <n>', 'Element index if selector matches multiple (1-based)', parseInt)
|
|
73
|
+
.option('--no-blur', 'Do not blur after filling (keeps focus on element)')
|
|
74
|
+
.addOption(jsonOption)
|
|
75
|
+
.action(async (selector, value, options) => {
|
|
76
|
+
await runCommand(async () => {
|
|
77
|
+
return await withCDPConnection(async (cdp) => {
|
|
78
|
+
const fillOptions = filterDefined({
|
|
79
|
+
index: options.index,
|
|
80
|
+
blur: options.blur,
|
|
81
|
+
});
|
|
82
|
+
const result = await fillElement(cdp, selector, value, fillOptions);
|
|
83
|
+
if (!result.success) {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
error: result.error ?? 'Failed to fill element',
|
|
87
|
+
exitCode: result.error?.includes('not found')
|
|
88
|
+
? EXIT_CODES.RESOURCE_NOT_FOUND
|
|
89
|
+
: EXIT_CODES.INVALID_ARGUMENTS,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return { success: true, data: result };
|
|
93
|
+
});
|
|
94
|
+
}, options, formatFillOutput);
|
|
95
|
+
});
|
|
96
|
+
// bdg dom click <selector>
|
|
97
|
+
domCommand
|
|
98
|
+
.command('click')
|
|
99
|
+
.description('Click an element')
|
|
100
|
+
.argument('<selector>', 'CSS selector for the element')
|
|
101
|
+
.option('--index <n>', 'Element index if selector matches multiple (1-based)', parseInt)
|
|
102
|
+
.addOption(jsonOption)
|
|
103
|
+
.action(async (selector, options) => {
|
|
104
|
+
await runCommand(async () => {
|
|
105
|
+
return await withCDPConnection(async (cdp) => {
|
|
106
|
+
const clickOptions = filterDefined({
|
|
107
|
+
index: options.index,
|
|
108
|
+
});
|
|
109
|
+
const result = await clickElement(cdp, selector, clickOptions);
|
|
110
|
+
if (!result.success) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
error: result.error ?? 'Failed to click element',
|
|
114
|
+
exitCode: result.error?.includes('not found')
|
|
115
|
+
? EXIT_CODES.RESOURCE_NOT_FOUND
|
|
116
|
+
: EXIT_CODES.INVALID_ARGUMENTS,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return { success: true, data: result };
|
|
120
|
+
});
|
|
121
|
+
}, options, formatClickOutput);
|
|
122
|
+
});
|
|
123
|
+
// bdg dom submit <selector>
|
|
124
|
+
domCommand
|
|
125
|
+
.command('submit')
|
|
126
|
+
.description('Submit a form by clicking submit button and waiting for completion')
|
|
127
|
+
.argument('<selector>', 'CSS selector for the submit button')
|
|
128
|
+
.option('--index <n>', 'Element index if selector matches multiple (1-based)', parseInt)
|
|
129
|
+
.option('--wait-navigation', 'Wait for page navigation after submit')
|
|
130
|
+
.option('--wait-network <ms>', 'Wait for network idle after submit (milliseconds)', '1000')
|
|
131
|
+
.option('--timeout <ms>', 'Maximum time to wait (milliseconds)', '10000')
|
|
132
|
+
.addOption(jsonOption)
|
|
133
|
+
.action(async (selector, options) => {
|
|
134
|
+
await runCommand(async () => {
|
|
135
|
+
return await withCDPConnection(async (cdp) => {
|
|
136
|
+
const submitOptions = filterDefined({
|
|
137
|
+
index: options.index,
|
|
138
|
+
waitNavigation: options.waitNavigation,
|
|
139
|
+
waitNetwork: parseInt(options.waitNetwork, 10),
|
|
140
|
+
timeout: parseInt(options.timeout, 10),
|
|
141
|
+
});
|
|
142
|
+
const result = await submitForm(cdp, selector, submitOptions);
|
|
143
|
+
if (!result.success) {
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
error: result.error ?? 'Failed to submit form',
|
|
147
|
+
exitCode: result.error?.includes('not found')
|
|
148
|
+
? EXIT_CODES.RESOURCE_NOT_FOUND
|
|
149
|
+
: result.error?.includes('Timeout')
|
|
150
|
+
? EXIT_CODES.CDP_TIMEOUT
|
|
151
|
+
: EXIT_CODES.INVALID_ARGUMENTS,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return { success: true, data: result };
|
|
155
|
+
});
|
|
156
|
+
}, options, formatSubmitOutput);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format fill command output for human-readable display.
|
|
161
|
+
*
|
|
162
|
+
* @param result - Fill result
|
|
163
|
+
* @returns Formatted string
|
|
164
|
+
*/
|
|
165
|
+
function formatFillOutput(result) {
|
|
166
|
+
const fmt = new OutputFormatter();
|
|
167
|
+
fmt.text('✓ Element Filled');
|
|
168
|
+
fmt.blank();
|
|
169
|
+
const details = [
|
|
170
|
+
['Selector', result.selector ?? 'unknown'],
|
|
171
|
+
['Element Type', result.elementType ?? 'unknown'],
|
|
172
|
+
];
|
|
173
|
+
if (result.inputType) {
|
|
174
|
+
details.push(['Input Type', result.inputType]);
|
|
175
|
+
}
|
|
176
|
+
if (result.checked !== undefined) {
|
|
177
|
+
details.push(['Checked', result.checked ? 'true' : 'false']);
|
|
178
|
+
}
|
|
179
|
+
else if (result.value) {
|
|
180
|
+
details.push(['Value', result.value]);
|
|
181
|
+
}
|
|
182
|
+
fmt.keyValueList(details, 15);
|
|
183
|
+
return fmt.build();
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Format click command output for human-readable display.
|
|
187
|
+
*
|
|
188
|
+
* @param result - Click result
|
|
189
|
+
* @returns Formatted string
|
|
190
|
+
*/
|
|
191
|
+
function formatClickOutput(result) {
|
|
192
|
+
const fmt = new OutputFormatter();
|
|
193
|
+
fmt.text('✓ Element Clicked');
|
|
194
|
+
fmt.blank();
|
|
195
|
+
fmt.keyValueList([
|
|
196
|
+
['Selector', result.selector ?? 'unknown'],
|
|
197
|
+
['Element Type', result.elementType ?? 'unknown'],
|
|
198
|
+
['Clickable', result.clickable ? 'yes' : 'no (warning)'],
|
|
199
|
+
], 15);
|
|
200
|
+
if (!result.clickable) {
|
|
201
|
+
fmt.blank();
|
|
202
|
+
fmt.text('⚠ Warning: Element may not have a click handler');
|
|
203
|
+
}
|
|
204
|
+
return fmt.build();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Format submit command output for human-readable display.
|
|
208
|
+
*
|
|
209
|
+
* @param result - Submit result
|
|
210
|
+
* @returns Formatted string
|
|
211
|
+
*/
|
|
212
|
+
function formatSubmitOutput(result) {
|
|
213
|
+
const fmt = new OutputFormatter();
|
|
214
|
+
fmt.text('✓ Form Submitted');
|
|
215
|
+
fmt.blank();
|
|
216
|
+
const details = [
|
|
217
|
+
['Selector', result.selector ?? 'unknown'],
|
|
218
|
+
['Clicked', result.clicked ? 'yes' : 'no'],
|
|
219
|
+
];
|
|
220
|
+
if (result.networkRequests !== undefined) {
|
|
221
|
+
details.push(['Network Requests', result.networkRequests.toString()]);
|
|
222
|
+
}
|
|
223
|
+
if (result.navigationOccurred !== undefined) {
|
|
224
|
+
details.push(['Navigation', result.navigationOccurred ? 'yes' : 'no']);
|
|
225
|
+
}
|
|
226
|
+
if (result.waitTimeMs !== undefined) {
|
|
227
|
+
details.push(['Wait Time', `${result.waitTimeMs}ms`]);
|
|
228
|
+
}
|
|
229
|
+
fmt.keyValueList(details, 20);
|
|
230
|
+
fmt.blank();
|
|
231
|
+
fmt.text('Next steps:');
|
|
232
|
+
fmt.section('', [
|
|
233
|
+
'bdg peek --network --last 10 Check network requests',
|
|
234
|
+
'bdg console --last 5 Check console messages',
|
|
235
|
+
'bdg status Check session state',
|
|
236
|
+
]);
|
|
237
|
+
return fmt.build();
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=formInteraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formInteraction.js","sourceRoot":"","sources":["../../../src/commands/dom/formInteraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form submission helpers with smart network waiting.
|
|
3
|
+
*/
|
|
4
|
+
import type { CDPConnection } from '../../connection/cdp.js';
|
|
5
|
+
/**
|
|
6
|
+
* Options for submitting a form.
|
|
7
|
+
*/
|
|
8
|
+
export interface SubmitOptions {
|
|
9
|
+
/** Element index if selector matches multiple (1-based) */
|
|
10
|
+
index?: number;
|
|
11
|
+
/** Wait for page navigation after submit (default: false) */
|
|
12
|
+
waitNavigation?: boolean;
|
|
13
|
+
/** Wait for network idle after submit in milliseconds (default: 1000) */
|
|
14
|
+
waitNetwork?: number;
|
|
15
|
+
/** Maximum time to wait in milliseconds (default: 10000) */
|
|
16
|
+
timeout?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Result of form submission.
|
|
20
|
+
*/
|
|
21
|
+
export interface SubmitResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
error?: string;
|
|
24
|
+
selector?: string;
|
|
25
|
+
clicked?: boolean;
|
|
26
|
+
networkRequests?: number;
|
|
27
|
+
navigationOccurred?: boolean;
|
|
28
|
+
waitTimeMs?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Submit a form by clicking the submit button and waiting for completion.
|
|
32
|
+
*
|
|
33
|
+
* @param cdp - CDP connection
|
|
34
|
+
* @param selector - CSS selector for submit button
|
|
35
|
+
* @param options - Submit options
|
|
36
|
+
* @returns Promise resolving to submit result
|
|
37
|
+
*
|
|
38
|
+
* @throws CDPTimeoutError When timeout is reached
|
|
39
|
+
* @throws CDPConnectionError When CDP communication fails
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Submit and wait for network idle
|
|
44
|
+
* const result = await submitForm(cdp, 'button[type="submit"]', {
|
|
45
|
+
* waitNetwork: 1000,
|
|
46
|
+
* timeout: 10000
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* This function:
|
|
52
|
+
* 1. Clicks the submit button
|
|
53
|
+
* 2. Monitors network activity
|
|
54
|
+
* 3. Waits for network idle (no requests for N ms)
|
|
55
|
+
* 4. Optionally waits for page navigation
|
|
56
|
+
*/
|
|
57
|
+
export declare function submitForm(cdp: CDPConnection, selector: string, options?: SubmitOptions): Promise<SubmitResult>;
|
|
58
|
+
//# sourceMappingURL=formSubmitHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formSubmitHelpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/formSubmitHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA6DvB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form submission helpers with smart network waiting.
|
|
3
|
+
*/
|
|
4
|
+
import { CDPConnectionError, CDPTimeoutError } from '../../connection/errors.js';
|
|
5
|
+
import { clickElement } from './formFillHelpers.js';
|
|
6
|
+
/**
|
|
7
|
+
* Submit a form by clicking the submit button and waiting for completion.
|
|
8
|
+
*
|
|
9
|
+
* @param cdp - CDP connection
|
|
10
|
+
* @param selector - CSS selector for submit button
|
|
11
|
+
* @param options - Submit options
|
|
12
|
+
* @returns Promise resolving to submit result
|
|
13
|
+
*
|
|
14
|
+
* @throws CDPTimeoutError When timeout is reached
|
|
15
|
+
* @throws CDPConnectionError When CDP communication fails
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Submit and wait for network idle
|
|
20
|
+
* const result = await submitForm(cdp, 'button[type="submit"]', {
|
|
21
|
+
* waitNetwork: 1000,
|
|
22
|
+
* timeout: 10000
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* This function:
|
|
28
|
+
* 1. Clicks the submit button
|
|
29
|
+
* 2. Monitors network activity
|
|
30
|
+
* 3. Waits for network idle (no requests for N ms)
|
|
31
|
+
* 4. Optionally waits for page navigation
|
|
32
|
+
*/
|
|
33
|
+
export async function submitForm(cdp, selector, options = {}) {
|
|
34
|
+
const { index, waitNavigation = false, waitNetwork = 1000, timeout = 10000 } = options;
|
|
35
|
+
const startTime = Date.now();
|
|
36
|
+
// Step 1: Click the submit button
|
|
37
|
+
const clickOptions = {};
|
|
38
|
+
if (index !== undefined) {
|
|
39
|
+
clickOptions.index = index;
|
|
40
|
+
}
|
|
41
|
+
const clickResult = await clickElement(cdp, selector, clickOptions);
|
|
42
|
+
if (!clickResult.success) {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
error: clickResult.error ?? 'Click failed',
|
|
46
|
+
selector: clickResult.selector ?? selector,
|
|
47
|
+
clicked: false,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// If no waiting requested, return immediately
|
|
51
|
+
if (waitNetwork === 0 && !waitNavigation) {
|
|
52
|
+
return {
|
|
53
|
+
success: true,
|
|
54
|
+
selector: selector,
|
|
55
|
+
clicked: true,
|
|
56
|
+
networkRequests: 0,
|
|
57
|
+
navigationOccurred: false,
|
|
58
|
+
waitTimeMs: Date.now() - startTime,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Step 2: Wait for network idle and/or navigation
|
|
62
|
+
try {
|
|
63
|
+
const waitResult = await waitForCompletion(cdp, {
|
|
64
|
+
waitNavigation,
|
|
65
|
+
waitNetwork,
|
|
66
|
+
timeout,
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
selector: selector,
|
|
71
|
+
clicked: true,
|
|
72
|
+
networkRequests: waitResult.networkRequests,
|
|
73
|
+
navigationOccurred: waitResult.navigationOccurred,
|
|
74
|
+
waitTimeMs: Date.now() - startTime,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (error instanceof CDPTimeoutError) {
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: `Timeout waiting for form submission to complete (${timeout}ms)`,
|
|
82
|
+
selector: selector,
|
|
83
|
+
clicked: true,
|
|
84
|
+
waitTimeMs: Date.now() - startTime,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Wait for form submission to complete (network idle and/or navigation).
|
|
92
|
+
*
|
|
93
|
+
* @param cdp - CDP connection
|
|
94
|
+
* @param options - Wait options
|
|
95
|
+
* @returns Promise resolving to wait result
|
|
96
|
+
*
|
|
97
|
+
* @throws CDPTimeoutError When timeout is reached
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
async function waitForCompletion(cdp, options) {
|
|
102
|
+
const { waitNavigation, waitNetwork, timeout } = options;
|
|
103
|
+
let activeRequests = 0;
|
|
104
|
+
let networkRequests = 0;
|
|
105
|
+
let navigationOccurred = false;
|
|
106
|
+
let idleTimeout = null;
|
|
107
|
+
let timeoutHandle = null;
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
// Store cleanup functions for proper cleanup
|
|
110
|
+
const cleanupFunctions = [];
|
|
111
|
+
// Set up timeout
|
|
112
|
+
timeoutHandle = setTimeout(() => {
|
|
113
|
+
cleanup();
|
|
114
|
+
reject(new CDPTimeoutError('Wait for completion timed out', new Error(`Timeout after ${timeout}ms`)));
|
|
115
|
+
}, timeout);
|
|
116
|
+
const checkCompletion = () => {
|
|
117
|
+
// Check if all conditions are met
|
|
118
|
+
const networkIdle = waitNetwork === 0 || activeRequests === 0;
|
|
119
|
+
const navigationComplete = !waitNavigation || navigationOccurred;
|
|
120
|
+
if (networkIdle && navigationComplete) {
|
|
121
|
+
cleanup();
|
|
122
|
+
resolve({ networkRequests, navigationOccurred });
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
// Monitor network requests
|
|
126
|
+
const onRequestStarted = () => {
|
|
127
|
+
networkRequests++;
|
|
128
|
+
activeRequests++;
|
|
129
|
+
if (idleTimeout) {
|
|
130
|
+
clearTimeout(idleTimeout);
|
|
131
|
+
idleTimeout = null;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const onRequestFinished = () => {
|
|
135
|
+
activeRequests--;
|
|
136
|
+
if (activeRequests === 0 && waitNetwork > 0) {
|
|
137
|
+
// Start idle timer
|
|
138
|
+
idleTimeout = setTimeout(() => {
|
|
139
|
+
checkCompletion();
|
|
140
|
+
}, waitNetwork);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
// Monitor navigation
|
|
144
|
+
const onNavigated = () => {
|
|
145
|
+
navigationOccurred = true;
|
|
146
|
+
checkCompletion();
|
|
147
|
+
};
|
|
148
|
+
// Register event listeners and store cleanup functions
|
|
149
|
+
cleanupFunctions.push(cdp.on('Network.requestWillBeSent', onRequestStarted));
|
|
150
|
+
cleanupFunctions.push(cdp.on('Network.loadingFinished', onRequestFinished));
|
|
151
|
+
cleanupFunctions.push(cdp.on('Network.loadingFailed', onRequestFinished));
|
|
152
|
+
if (waitNavigation) {
|
|
153
|
+
cleanupFunctions.push(cdp.on('Page.frameNavigated', onNavigated));
|
|
154
|
+
}
|
|
155
|
+
// Enable network monitoring if not already enabled
|
|
156
|
+
cdp.send('Network.enable').catch((error) => {
|
|
157
|
+
cleanup();
|
|
158
|
+
reject(new CDPConnectionError('Failed to enable network monitoring', error));
|
|
159
|
+
});
|
|
160
|
+
// Start initial check (in case no network requests happen)
|
|
161
|
+
if (waitNetwork === 0 || activeRequests === 0) {
|
|
162
|
+
idleTimeout = setTimeout(() => {
|
|
163
|
+
checkCompletion();
|
|
164
|
+
}, waitNetwork);
|
|
165
|
+
}
|
|
166
|
+
function cleanup() {
|
|
167
|
+
if (idleTimeout)
|
|
168
|
+
clearTimeout(idleTimeout);
|
|
169
|
+
if (timeoutHandle)
|
|
170
|
+
clearTimeout(timeoutHandle);
|
|
171
|
+
// Call all cleanup functions
|
|
172
|
+
cleanupFunctions.forEach((cleanup) => cleanup());
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=formSubmitHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formSubmitHelpers.js","sourceRoot":"","sources":["../../../src/commands/dom/formSubmitHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM helpers using CDP relay pattern.
|
|
3
|
+
*
|
|
4
|
+
* Provides query, get, and screenshot functionality using the worker's persistent CDP connection.
|
|
5
|
+
* All operations go through IPC callCDP() for optimal performance.
|
|
6
|
+
*/
|
|
7
|
+
import type { DomQueryResult, DomGetResult, ScreenshotResult, DomGetOptions, ScreenshotOptions } from '../../types/dom.js';
|
|
8
|
+
export type { DomQueryResult, DomGetResult, ScreenshotResult, DomGetOptions, ScreenshotOptions };
|
|
9
|
+
/**
|
|
10
|
+
* Query DOM elements by CSS selector using CDP relay.
|
|
11
|
+
*
|
|
12
|
+
* @param selector - CSS selector to query
|
|
13
|
+
* @returns Query result with matched nodes
|
|
14
|
+
* @throws CDPConnectionError if CDP operation fails
|
|
15
|
+
*/
|
|
16
|
+
export declare function queryDOMElements(selector: string): Promise<DomQueryResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Get full HTML and attributes for DOM elements using CDP relay.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Get options (selector or nodeId, plus optional --all or --nth flags)
|
|
21
|
+
* @returns Get result with node details
|
|
22
|
+
* @throws CDPConnectionError if CDP operation fails
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDOMElements(options: DomGetOptions): Promise<DomGetResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Capture a screenshot of the page using CDP relay.
|
|
27
|
+
*
|
|
28
|
+
* @param outputPath - Path to save screenshot
|
|
29
|
+
* @param options - Screenshot options (format, quality, fullPage)
|
|
30
|
+
* @returns Screenshot result with path, format, dimensions, and size
|
|
31
|
+
* @throws CDPConnectionError if CDP operation fails
|
|
32
|
+
*/
|
|
33
|
+
export declare function capturePageScreenshot(outputPath: string, options?: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
34
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AASxB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAQjG;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8FhF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAkIlF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyD3B"}
|