browser-debugger-cli 0.0.1-alpha.0 → 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +167 -52
- package/dist/__testfixtures__/cdpMessages.d.ts +43 -0
- package/dist/__testfixtures__/cdpMessages.d.ts.map +1 -0
- package/dist/__testfixtures__/cdpMessages.js +118 -0
- package/dist/__testfixtures__/cdpMessages.js.map +1 -0
- package/dist/__testfixtures__/connectionTargets.d.ts +21 -0
- package/dist/__testfixtures__/connectionTargets.d.ts.map +1 -0
- package/dist/__testfixtures__/connectionTargets.js +59 -0
- package/dist/__testfixtures__/connectionTargets.js.map +1 -0
- package/dist/__tests__/integration/session-files.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/session-files.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/session-files.integration.test.js +66 -0
- package/dist/__tests__/integration/session-files.integration.test.js.map +1 -0
- package/dist/__testutils__/FakeClock.d.ts +67 -0
- package/dist/__testutils__/FakeClock.d.ts.map +1 -0
- package/dist/__testutils__/FakeClock.js +132 -0
- package/dist/__testutils__/FakeClock.js.map +1 -0
- package/dist/__testutils__/FakeWebSocket.d.ts +106 -0
- package/dist/__testutils__/FakeWebSocket.d.ts.map +1 -0
- package/dist/__testutils__/FakeWebSocket.js +213 -0
- package/dist/__testutils__/FakeWebSocket.js.map +1 -0
- package/dist/__testutils__/assertions.d.ts +33 -0
- package/dist/__testutils__/assertions.d.ts.map +1 -0
- package/dist/__testutils__/assertions.js +57 -0
- package/dist/__testutils__/assertions.js.map +1 -0
- package/dist/__testutils__/index.d.ts +15 -0
- package/dist/__testutils__/index.d.ts.map +1 -0
- package/dist/__testutils__/index.js +15 -0
- package/dist/__testutils__/index.js.map +1 -0
- package/dist/__testutils__/testClock.d.ts +28 -0
- package/dist/__testutils__/testClock.d.ts.map +1 -0
- package/dist/__testutils__/testClock.js +81 -0
- package/dist/__testutils__/testClock.js.map +1 -0
- package/dist/__testutils__/testFixtures.d.ts +15 -0
- package/dist/__testutils__/testFixtures.d.ts.map +1 -0
- package/dist/__testutils__/testFixtures.js +23 -0
- package/dist/__testutils__/testFixtures.js.map +1 -0
- package/dist/__testutils__/testProcess.d.ts +46 -0
- package/dist/__testutils__/testProcess.d.ts.map +1 -0
- package/dist/__testutils__/testProcess.js +77 -0
- package/dist/__testutils__/testProcess.js.map +1 -0
- package/dist/cli/collectors/dom.d.ts +8 -0
- package/dist/cli/collectors/dom.d.ts.map +1 -0
- package/dist/cli/collectors/dom.js +361 -0
- package/dist/cli/collectors/dom.js.map +1 -0
- package/dist/cli/collectors/helpers/domCache.d.ts +40 -0
- package/dist/cli/collectors/helpers/domCache.d.ts.map +1 -0
- package/dist/cli/collectors/helpers/domCache.js +79 -0
- package/dist/cli/collectors/helpers/domCache.js.map +1 -0
- package/dist/cli/collectors/helpers/domQuery.d.ts +45 -0
- package/dist/cli/collectors/helpers/domQuery.d.ts.map +1 -0
- package/dist/cli/collectors/helpers/domQuery.js +100 -0
- package/dist/cli/collectors/helpers/domQuery.js.map +1 -0
- package/dist/cli/collectors/helpers/selectorParser.d.ts +20 -0
- package/dist/cli/collectors/helpers/selectorParser.d.ts.map +1 -0
- package/dist/cli/collectors/helpers/selectorParser.js +20 -0
- package/dist/cli/collectors/helpers/selectorParser.js.map +1 -0
- package/dist/cli/commands/__tests__/cdp.contract.test.d.ts +24 -0
- package/dist/cli/commands/__tests__/cdp.contract.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cdp.contract.test.js +467 -0
- package/dist/cli/commands/__tests__/cdp.contract.test.js.map +1 -0
- package/dist/cli/commands/__tests__/ipcTest.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/ipcTest.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/ipcTest.test.js +37 -0
- package/dist/cli/commands/__tests__/ipcTest.test.js.map +1 -0
- package/dist/cli/commands/cdp.d.ts +8 -0
- package/dist/cli/commands/cdp.d.ts.map +1 -0
- package/dist/cli/commands/cdp.js +45 -0
- package/dist/cli/commands/cdp.js.map +1 -0
- package/dist/cli/commands/cleanup.d.ts +8 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/cleanup.js +130 -0
- package/dist/cli/commands/cleanup.js.map +1 -0
- package/dist/cli/commands/console.d.ts +8 -0
- package/dist/cli/commands/console.d.ts.map +1 -0
- package/dist/cli/commands/console.js +97 -0
- package/dist/cli/commands/console.js.map +1 -0
- package/dist/cli/commands/details.d.ts +8 -0
- package/dist/cli/commands/details.d.ts.map +1 -0
- package/dist/cli/commands/details.js +68 -0
- package/dist/cli/commands/details.js.map +1 -0
- package/dist/cli/commands/dom/helpers/domCache.d.ts +36 -0
- package/dist/cli/commands/dom/helpers/domCache.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/domCache.js +65 -0
- package/dist/cli/commands/dom/helpers/domCache.js.map +1 -0
- package/dist/cli/commands/dom/helpers/domQuery.d.ts +48 -0
- package/dist/cli/commands/dom/helpers/domQuery.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/domQuery.js +104 -0
- package/dist/cli/commands/dom/helpers/domQuery.js.map +1 -0
- package/dist/cli/commands/dom/helpers/errorHandler.d.ts +45 -0
- package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/errorHandler.js +70 -0
- package/dist/cli/commands/dom/helpers/errorHandler.js.map +1 -0
- package/dist/cli/commands/dom/helpers/evalHelpers.d.ts +52 -0
- package/dist/cli/commands/dom/helpers/evalHelpers.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/evalHelpers.js +75 -0
- package/dist/cli/commands/dom/helpers/evalHelpers.js.map +1 -0
- package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts +35 -0
- package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/optionsBuilder.js +51 -0
- package/dist/cli/commands/dom/helpers/optionsBuilder.js.map +1 -0
- package/dist/cli/commands/dom/helpers/selectorParser.d.ts +20 -0
- package/dist/cli/commands/dom/helpers/selectorParser.d.ts.map +1 -0
- package/dist/cli/commands/dom/helpers/selectorParser.js +20 -0
- package/dist/cli/commands/dom/helpers/selectorParser.js.map +1 -0
- package/dist/cli/commands/dom/index.d.ts +8 -0
- package/dist/cli/commands/dom/index.d.ts.map +1 -0
- package/dist/cli/commands/dom/index.js +257 -0
- package/dist/cli/commands/dom/index.js.map +1 -0
- package/dist/cli/commands/ipcTest.d.ts +23 -0
- package/dist/cli/commands/ipcTest.d.ts.map +1 -0
- package/dist/cli/commands/ipcTest.js +181 -0
- package/dist/cli/commands/ipcTest.js.map +1 -0
- package/dist/cli/commands/network.d.ts +8 -0
- package/dist/cli/commands/network.d.ts.map +1 -0
- package/dist/cli/commands/network.js +40 -0
- package/dist/cli/commands/network.js.map +1 -0
- package/dist/cli/commands/peek.d.ts +8 -0
- package/dist/cli/commands/peek.d.ts.map +1 -0
- package/dist/cli/commands/peek.js +109 -0
- package/dist/cli/commands/peek.js.map +1 -0
- package/dist/cli/commands/query.d.ts +9 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +127 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/start.d.ts +9 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +78 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +9 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +84 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +8 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +146 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/formatters/detailsFormatter.d.ts +10 -0
- package/dist/cli/formatters/detailsFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/detailsFormatter.js +63 -0
- package/dist/cli/formatters/detailsFormatter.js.map +1 -0
- package/dist/cli/formatters/previewFormatter.d.ts +27 -0
- package/dist/cli/formatters/previewFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/previewFormatter.js +160 -0
- package/dist/cli/formatters/previewFormatter.js.map +1 -0
- package/dist/cli/formatters/statusFormatter.d.ts +34 -0
- package/dist/cli/formatters/statusFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/statusFormatter.js +108 -0
- package/dist/cli/formatters/statusFormatter.js.map +1 -0
- package/dist/cli/handlers/ChromeBootstrap.d.ts +24 -0
- package/dist/cli/handlers/ChromeBootstrap.d.ts.map +1 -0
- package/dist/cli/handlers/ChromeBootstrap.js +50 -0
- package/dist/cli/handlers/ChromeBootstrap.js.map +1 -0
- package/dist/cli/handlers/CommandRunner.d.ts +60 -0
- package/dist/cli/handlers/CommandRunner.d.ts.map +1 -0
- package/dist/cli/handlers/CommandRunner.js +81 -0
- package/dist/cli/handlers/CommandRunner.js.map +1 -0
- package/dist/cli/handlers/OutputBuilder.d.ts +60 -0
- package/dist/cli/handlers/OutputBuilder.d.ts.map +1 -0
- package/dist/cli/handlers/OutputBuilder.js +138 -0
- package/dist/cli/handlers/OutputBuilder.js.map +1 -0
- package/dist/cli/handlers/OutputWriter.d.ts +15 -0
- package/dist/cli/handlers/OutputWriter.d.ts.map +1 -0
- package/dist/cli/handlers/OutputWriter.js +34 -0
- package/dist/cli/handlers/OutputWriter.js.map +1 -0
- package/dist/cli/handlers/PreviewWriter.d.ts +52 -0
- package/dist/cli/handlers/PreviewWriter.d.ts.map +1 -0
- package/dist/cli/handlers/PreviewWriter.js +119 -0
- package/dist/cli/handlers/PreviewWriter.js.map +1 -0
- package/dist/cli/handlers/SessionLock.d.ts +16 -0
- package/dist/cli/handlers/SessionLock.d.ts.map +1 -0
- package/dist/cli/handlers/SessionLock.js +38 -0
- package/dist/cli/handlers/SessionLock.js.map +1 -0
- package/dist/cli/handlers/SessionLoop.d.ts +19 -0
- package/dist/cli/handlers/SessionLoop.d.ts.map +1 -0
- package/dist/cli/handlers/SessionLoop.js +47 -0
- package/dist/cli/handlers/SessionLoop.js.map +1 -0
- package/dist/cli/handlers/ShutdownController.d.ts +38 -0
- package/dist/cli/handlers/ShutdownController.d.ts.map +1 -0
- package/dist/cli/handlers/ShutdownController.js +83 -0
- package/dist/cli/handlers/ShutdownController.js.map +1 -0
- package/dist/cli/handlers/SignalHandler.d.ts +35 -0
- package/dist/cli/handlers/SignalHandler.d.ts.map +1 -0
- package/dist/cli/handlers/SignalHandler.js +81 -0
- package/dist/cli/handlers/SignalHandler.js.map +1 -0
- package/dist/cli/handlers/TargetSetup.d.ts +42 -0
- package/dist/cli/handlers/TargetSetup.d.ts.map +1 -0
- package/dist/cli/handlers/TargetSetup.js +87 -0
- package/dist/cli/handlers/TargetSetup.js.map +1 -0
- package/dist/cli/handlers/commonOptions.d.ts +54 -0
- package/dist/cli/handlers/commonOptions.d.ts.map +1 -0
- package/dist/cli/handlers/commonOptions.js +64 -0
- package/dist/cli/handlers/commonOptions.js.map +1 -0
- package/dist/cli/handlers/daemonSessionController.d.ts +23 -0
- package/dist/cli/handlers/daemonSessionController.d.ts.map +1 -0
- package/dist/cli/handlers/daemonSessionController.js +108 -0
- package/dist/cli/handlers/daemonSessionController.js.map +1 -0
- package/dist/cli/handlers/sessionController.d.ts +21 -0
- package/dist/cli/handlers/sessionController.d.ts.map +1 -0
- package/dist/cli/handlers/sessionController.js +55 -0
- package/dist/cli/handlers/sessionController.js.map +1 -0
- package/dist/cli/registry.d.ts +11 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +46 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/collectors/__tests__/network.contract.test.d.ts +28 -0
- package/dist/collectors/__tests__/network.contract.test.d.ts.map +1 -0
- package/dist/collectors/__tests__/network.contract.test.js +525 -0
- package/dist/collectors/__tests__/network.contract.test.js.map +1 -0
- package/dist/collectors/console.d.ts +5 -3
- package/dist/collectors/console.d.ts.map +1 -1
- package/dist/collectors/console.js +48 -26
- package/dist/collectors/console.js.map +1 -1
- package/dist/collectors/dom.d.ts +2 -2
- package/dist/collectors/dom.d.ts.map +1 -1
- package/dist/collectors/dom.js +23 -12
- package/dist/collectors/dom.js.map +1 -1
- package/dist/collectors/network.d.ts +18 -4
- package/dist/collectors/network.d.ts.map +1 -1
- package/dist/collectors/network.js +111 -34
- package/dist/collectors/network.js.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.d.ts +16 -0
- package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/cdp.contract.test.js +378 -0
- package/dist/connection/__tests__/cdp.contract.test.js.map +1 -0
- package/dist/connection/__tests__/finder.contract.test.d.ts +2 -0
- package/dist/connection/__tests__/finder.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/finder.contract.test.js +239 -0
- package/dist/connection/__tests__/finder.contract.test.js.map +1 -0
- package/dist/connection/__tests__/tabs.contract.test.d.ts +2 -0
- package/dist/connection/__tests__/tabs.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/tabs.contract.test.js +137 -0
- package/dist/connection/__tests__/tabs.contract.test.js.map +1 -0
- package/dist/connection/cdp.d.ts +165 -16
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +342 -122
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/finder.d.ts +5 -4
- package/dist/connection/finder.d.ts.map +1 -1
- package/dist/connection/finder.js +10 -16
- package/dist/connection/finder.js.map +1 -1
- package/dist/connection/launcher.d.ts +18 -11
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +148 -82
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/tabs.d.ts +47 -14
- package/dist/connection/tabs.d.ts.map +1 -1
- package/dist/connection/tabs.js +493 -132
- package/dist/connection/tabs.js.map +1 -1
- package/dist/constants.d.ts +209 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +232 -0
- package/dist/constants.js.map +1 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.d.ts +23 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.js +401 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -0
- package/dist/daemon/__tests__/launcher.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/launcher.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/launcher.unit.test.js +20 -0
- package/dist/daemon/__tests__/launcher.unit.test.js.map +1 -0
- package/dist/daemon/ipcServer.d.ts +83 -0
- package/dist/daemon/ipcServer.d.ts.map +1 -0
- package/dist/daemon/ipcServer.js +670 -0
- package/dist/daemon/ipcServer.js.map +1 -0
- package/dist/daemon/launcher.d.ts +31 -0
- package/dist/daemon/launcher.d.ts.map +1 -0
- package/dist/daemon/launcher.js +137 -0
- package/dist/daemon/launcher.js.map +1 -0
- package/dist/daemon/startSession.d.ts +51 -0
- package/dist/daemon/startSession.d.ts.map +1 -0
- package/dist/daemon/startSession.js +149 -0
- package/dist/daemon/startSession.js.map +1 -0
- package/dist/daemon/worker.d.ts +18 -0
- package/dist/daemon/worker.d.ts.map +1 -0
- package/dist/daemon/worker.js +623 -0
- package/dist/daemon/worker.js.map +1 -0
- package/dist/daemon/workerIpc.d.ts +33 -0
- package/dist/daemon/workerIpc.d.ts.map +1 -0
- package/dist/daemon/workerIpc.js +8 -0
- package/dist/daemon/workerIpc.js.map +1 -0
- package/dist/daemon.d.ts +10 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +32 -0
- package/dist/daemon.js.map +1 -0
- package/dist/index.js +41 -420
- package/dist/index.js.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.d.ts +23 -0
- package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/client.contract.test.js +466 -0
- package/dist/ipc/__tests__/client.contract.test.js.map +1 -0
- package/dist/ipc/client.d.ts +109 -0
- package/dist/ipc/client.d.ts.map +1 -0
- package/dist/ipc/client.js +220 -0
- package/dist/ipc/client.js.map +1 -0
- package/dist/ipc/commands.d.ts +208 -0
- package/dist/ipc/commands.d.ts.map +1 -0
- package/dist/ipc/commands.js +69 -0
- package/dist/ipc/commands.js.map +1 -0
- package/dist/ipc/responseValidator.d.ts +40 -0
- package/dist/ipc/responseValidator.d.ts.map +1 -0
- package/dist/ipc/responseValidator.js +28 -0
- package/dist/ipc/responseValidator.js.map +1 -0
- package/dist/ipc/types.d.ts +193 -0
- package/dist/ipc/types.d.ts.map +1 -0
- package/dist/ipc/types.js +21 -0
- package/dist/ipc/types.js.map +1 -0
- package/dist/session/BdgSession.d.ts +71 -4
- package/dist/session/BdgSession.d.ts.map +1 -1
- package/dist/session/BdgSession.js +173 -75
- package/dist/session/BdgSession.js.map +1 -1
- package/dist/session/chrome.d.ts +46 -0
- package/dist/session/chrome.d.ts.map +1 -0
- package/dist/session/chrome.js +92 -0
- package/dist/session/chrome.js.map +1 -0
- package/dist/session/cleanup.d.ts +45 -0
- package/dist/session/cleanup.d.ts.map +1 -0
- package/dist/session/cleanup.js +230 -0
- package/dist/session/cleanup.js.map +1 -0
- package/dist/session/index.d.ts +15 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +23 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/lock.d.ts +57 -0
- package/dist/session/lock.d.ts.map +1 -0
- package/dist/session/lock.js +154 -0
- package/dist/session/lock.js.map +1 -0
- package/dist/session/metadata.d.ts +59 -0
- package/dist/session/metadata.d.ts.map +1 -0
- package/dist/session/metadata.js +71 -0
- package/dist/session/metadata.js.map +1 -0
- package/dist/session/output.d.ts +18 -0
- package/dist/session/output.d.ts.map +1 -0
- package/dist/session/output.js +24 -0
- package/dist/session/output.js.map +1 -0
- package/dist/session/paths.d.ts +73 -0
- package/dist/session/paths.d.ts.map +1 -0
- package/dist/session/paths.js +84 -0
- package/dist/session/paths.js.map +1 -0
- package/dist/session/pid.d.ts +40 -0
- package/dist/session/pid.d.ts.map +1 -0
- package/dist/session/pid.js +73 -0
- package/dist/session/pid.js.map +1 -0
- package/dist/session/process.d.ts +45 -0
- package/dist/session/process.d.ts.map +1 -0
- package/dist/session/process.js +88 -0
- package/dist/session/process.js.map +1 -0
- package/dist/types.d.ts +114 -38
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/__tests__/filters.unit.test.d.ts +2 -0
- package/dist/utils/__tests__/filters.unit.test.d.ts.map +1 -0
- package/dist/utils/__tests__/filters.unit.test.js +239 -0
- package/dist/utils/__tests__/filters.unit.test.js.map +1 -0
- package/dist/utils/__tests__/session.contract.test.d.ts +2 -0
- package/dist/utils/__tests__/session.contract.test.d.ts.map +1 -0
- package/dist/utils/__tests__/session.contract.test.js +234 -0
- package/dist/utils/__tests__/session.contract.test.js.map +1 -0
- package/dist/utils/atomicFile.d.ts +38 -0
- package/dist/utils/atomicFile.d.ts.map +1 -0
- package/dist/utils/atomicFile.js +71 -0
- package/dist/utils/atomicFile.js.map +1 -0
- package/dist/utils/cdpHandlers.d.ts +31 -0
- package/dist/utils/cdpHandlers.d.ts.map +1 -0
- package/dist/utils/cdpHandlers.js +38 -0
- package/dist/utils/cdpHandlers.js.map +1 -0
- package/dist/utils/chromeDiagnostics.d.ts +28 -0
- package/dist/utils/chromeDiagnostics.d.ts.map +1 -0
- package/dist/utils/chromeDiagnostics.js +88 -0
- package/dist/utils/chromeDiagnostics.js.map +1 -0
- package/dist/utils/errors.d.ts +82 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +88 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exitCodes.d.ts +32 -0
- package/dist/utils/exitCodes.d.ts.map +1 -0
- package/dist/utils/exitCodes.js +36 -0
- package/dist/utils/exitCodes.js.map +1 -0
- package/dist/utils/filters.d.ts +108 -0
- package/dist/utils/filters.d.ts.map +1 -0
- package/dist/utils/filters.js +304 -0
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/formatters/network.d.ts +23 -0
- package/dist/utils/formatters/network.d.ts.map +1 -0
- package/dist/utils/formatters/network.js +35 -0
- package/dist/utils/formatters/network.js.map +1 -0
- package/dist/utils/http.d.ts +34 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +48 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/objects.d.ts +23 -0
- package/dist/utils/objects.d.ts.map +1 -0
- package/dist/utils/objects.js +25 -0
- package/dist/utils/objects.js.map +1 -0
- package/dist/utils/url/safeParseUrl.d.ts +63 -0
- package/dist/utils/url/safeParseUrl.d.ts.map +1 -0
- package/dist/utils/url/safeParseUrl.js +84 -0
- package/dist/utils/url/safeParseUrl.js.map +1 -0
- package/dist/utils/url.d.ts +63 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +152 -2
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/version.d.ts +3 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +27 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +57 -10
- package/dist/utils/pageLoad.d.ts +0 -21
- package/dist/utils/pageLoad.d.ts.map +0 -1
- package/dist/utils/pageLoad.js +0 -85
- package/dist/utils/pageLoad.js.map +0 -1
- package/dist/utils/session.d.ts +0 -104
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -244
- package/dist/utils/session.js.map +0 -1
package/dist/connection/cdp.js
CHANGED
|
@@ -1,44 +1,71 @@
|
|
|
1
1
|
import WebSocket from 'ws';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import { CDP_COMMAND_TIMEOUT_MS, CDP_CONNECTION_TIMEOUT_MS, CDP_KEEPALIVE_INTERVAL, CDP_MAX_CONNECTION_RETRIES, CDP_MAX_RECONNECT_ATTEMPTS, CDP_BASE_RETRY_DELAY_MS, CDP_MAX_RETRY_DELAY_MS, CDP_MAX_RECONNECT_DELAY_MS, CDP_MAX_MISSED_PONGS, CDP_PONG_TIMEOUT_MS, WEBSOCKET_NORMAL_CLOSURE, WEBSOCKET_NO_PONG_CLOSURE, UTF8_ENCODING, } from '../constants.js';
|
|
3
|
+
import { CDPConnectionError, CDPTimeoutError, getErrorMessage } from '../utils/errors.js';
|
|
4
|
+
// Error Messages
|
|
5
|
+
const CONNECTION_TIMEOUT_ERROR = 'Connection timeout';
|
|
6
|
+
const WEBSOCKET_CONNECTION_CLOSED_ERROR = 'WebSocket connection closed';
|
|
7
|
+
const CONNECTION_CLOSED_ERROR = 'Connection closed';
|
|
8
|
+
const NOT_CONNECTED_BROWSER_ERROR = 'Not connected to browser';
|
|
9
|
+
const NOT_CONNECTED_URL_ERROR = 'Not connected - no WebSocket URL available';
|
|
10
|
+
const RECONNECTED_SUCCESS_MESSAGE = 'Reconnected successfully';
|
|
11
|
+
const CONNECTION_LOST_MESSAGE = 'Connection lost: no pong received';
|
|
12
|
+
const PONG_TIMEOUT_MESSAGE = 'Pong timeout - connection may be stale';
|
|
13
|
+
const NO_PONG_RECEIVED_REASON = 'No pong received';
|
|
14
|
+
const NORMAL_CLOSURE_REASON = 'Normal closure';
|
|
15
|
+
// Message Templates
|
|
16
|
+
const CONNECTION_ATTEMPT_FAILED_MESSAGE = (attempt, delay) => `Connection attempt ${attempt + 1} failed, retrying in ${delay}ms...`;
|
|
17
|
+
const FAILED_CONNECT_ATTEMPTS_ERROR = (maxRetries, lastErrorMessage) => `Failed to connect after ${maxRetries} attempts: ${lastErrorMessage}`;
|
|
18
|
+
const WEBSOCKET_CLOSED_MESSAGE = (code, reason) => `WebSocket closed: ${code} - ${reason}`;
|
|
19
|
+
const RECONNECTING_MESSAGE = (delay, attempt, maxAttempts) => `Reconnecting in ${delay}ms... (attempt ${attempt}/${maxAttempts})`;
|
|
20
|
+
const UNEXPECTED_DATA_TYPE_ERROR = (dataType) => `Unexpected data type in CDP message: ${dataType}`;
|
|
21
|
+
const DATA_CONVERSION_ERROR = (errorMsg) => `Failed to convert message data: ${errorMsg}`;
|
|
22
|
+
const JSON_PARSE_ERROR = (errorMsg) => `Failed to parse JSON message: ${errorMsg}`;
|
|
23
|
+
const MESSAGE_ROUTING_ERROR = (errorMsg) => `Failed to route message: ${errorMsg}`;
|
|
24
|
+
const RECONNECTION_FAILED_ERROR = (errorMsg) => `Reconnection failed: ${errorMsg}`;
|
|
25
|
+
const INVALID_WEBSOCKET_URL_ERROR = (url, errorMsg) => `Invalid WebSocket URL: ${url}. Error: ${errorMsg}`;
|
|
26
|
+
const COMMAND_TIMEOUT_ERROR = (method) => `Command timeout: ${method}`;
|
|
11
27
|
export class CDPConnection {
|
|
12
28
|
ws = null;
|
|
13
29
|
messageId = 0;
|
|
14
30
|
pendingMessages = new Map();
|
|
15
31
|
nextHandlerId = 0;
|
|
16
|
-
eventHandlers = new Map();
|
|
17
|
-
// Keepalive state
|
|
32
|
+
eventHandlers = new Map();
|
|
18
33
|
pingInterval = null;
|
|
19
34
|
pongTimeout = null;
|
|
20
35
|
missedPongs = 0;
|
|
21
|
-
MAX_MISSED_PONGS = 3;
|
|
22
|
-
// Reconnection state
|
|
23
36
|
wsUrl = '';
|
|
24
37
|
autoReconnect = false;
|
|
25
38
|
reconnectAttempts = 0;
|
|
26
|
-
MAX_RECONNECT_ATTEMPTS = 5;
|
|
27
39
|
isIntentionallyClosed = false;
|
|
28
40
|
onReconnect;
|
|
41
|
+
onDisconnect;
|
|
42
|
+
connectionOptions = {};
|
|
43
|
+
createWebSocket;
|
|
44
|
+
constructor(createWebSocket = (url) => new WebSocket(url)) {
|
|
45
|
+
this.createWebSocket = createWebSocket;
|
|
46
|
+
}
|
|
29
47
|
/**
|
|
30
48
|
* Connect to Chrome via WebSocket.
|
|
31
49
|
*
|
|
50
|
+
* We retry with exponential backoff because Chrome startup can be slow and
|
|
51
|
+
* network conditions may cause temporary failures. Auto-reconnect defaults
|
|
52
|
+
* to false for CLI tools where connection loss should fail fast rather than
|
|
53
|
+
* continue indefinitely.
|
|
54
|
+
*
|
|
32
55
|
* @param wsUrl - WebSocket debugger URL from CDP target
|
|
33
56
|
* @param options - Connection configuration options
|
|
34
57
|
* @throws Error if connection fails after all retries
|
|
35
58
|
*/
|
|
36
59
|
async connect(wsUrl, options = {}) {
|
|
37
|
-
const
|
|
60
|
+
const maxRetries = options.maxRetries ?? CDP_MAX_CONNECTION_RETRIES;
|
|
61
|
+
const autoReconnect = options.autoReconnect ?? false;
|
|
62
|
+
const { onReconnect, onDisconnect } = options;
|
|
38
63
|
this.wsUrl = wsUrl;
|
|
39
64
|
this.autoReconnect = autoReconnect;
|
|
40
65
|
this.onReconnect = onReconnect;
|
|
66
|
+
this.onDisconnect = onDisconnect;
|
|
41
67
|
this.isIntentionallyClosed = false;
|
|
68
|
+
this.connectionOptions = options;
|
|
42
69
|
let lastError;
|
|
43
70
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
44
71
|
try {
|
|
@@ -49,117 +76,304 @@ export class CDPConnection {
|
|
|
49
76
|
catch (error) {
|
|
50
77
|
lastError = error;
|
|
51
78
|
if (attempt < maxRetries - 1) {
|
|
52
|
-
const delay =
|
|
53
|
-
console.error(
|
|
54
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
79
|
+
const delay = this.calculateBackoffDelay(attempt, CDP_MAX_RETRY_DELAY_MS);
|
|
80
|
+
console.error(CONNECTION_ATTEMPT_FAILED_MESSAGE(attempt, delay));
|
|
81
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
55
82
|
}
|
|
56
83
|
}
|
|
57
84
|
}
|
|
58
|
-
throw new
|
|
85
|
+
throw new CDPConnectionError(FAILED_CONNECT_ATTEMPTS_ERROR(maxRetries, lastError?.message), lastError);
|
|
59
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Attempt a single WebSocket connection with timeout.
|
|
89
|
+
*
|
|
90
|
+
* We use a connection timeout because WebSocket connections can hang
|
|
91
|
+
* indefinitely without it, especially in network failure scenarios.
|
|
92
|
+
*
|
|
93
|
+
* @param wsUrl - WebSocket URL to connect to
|
|
94
|
+
* @param options - Connection configuration options
|
|
95
|
+
* @returns Promise that resolves when connection is established
|
|
96
|
+
* @throws CDPTimeoutError if connection times out
|
|
97
|
+
* @throws Error if WebSocket connection fails
|
|
98
|
+
*/
|
|
60
99
|
attemptConnection(wsUrl, options = {}) {
|
|
61
|
-
const timeout = options.timeout ??
|
|
100
|
+
const timeout = options.timeout ?? CDP_CONNECTION_TIMEOUT_MS;
|
|
62
101
|
return new Promise((resolve, reject) => {
|
|
63
|
-
this.ws =
|
|
102
|
+
this.ws = this.createWebSocket(wsUrl);
|
|
64
103
|
const connectTimeout = setTimeout(() => {
|
|
65
|
-
reject(new
|
|
104
|
+
reject(new CDPTimeoutError(CONNECTION_TIMEOUT_ERROR));
|
|
66
105
|
this.ws?.close();
|
|
67
106
|
}, timeout);
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
107
|
+
this.setupWebSocketHandlers(resolve, reject, connectTimeout, options);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Configure WebSocket event handlers for connection lifecycle.
|
|
112
|
+
*
|
|
113
|
+
* We handle close events asynchronously to prevent blocking the WebSocket
|
|
114
|
+
* event loop during cleanup and reconnection attempts.
|
|
115
|
+
*
|
|
116
|
+
* @param resolve - Promise resolve function for successful connection
|
|
117
|
+
* @param reject - Promise reject function for connection failure
|
|
118
|
+
* @param connectTimeout - Timeout handle to clear on success/failure
|
|
119
|
+
* @param options - Connection options for keepalive configuration
|
|
120
|
+
*/
|
|
121
|
+
setupWebSocketHandlers(resolve, reject, connectTimeout, options) {
|
|
122
|
+
if (!this.ws)
|
|
123
|
+
return;
|
|
124
|
+
this.ws.on('open', () => {
|
|
125
|
+
clearTimeout(connectTimeout);
|
|
126
|
+
this.missedPongs = 0;
|
|
127
|
+
this.startKeepalive(options.keepaliveInterval ?? CDP_KEEPALIVE_INTERVAL);
|
|
128
|
+
resolve();
|
|
129
|
+
});
|
|
130
|
+
this.ws.on('error', (error) => {
|
|
131
|
+
clearTimeout(connectTimeout);
|
|
132
|
+
reject(error);
|
|
133
|
+
});
|
|
134
|
+
this.ws.on('close', (code, reason) => {
|
|
135
|
+
void (async () => {
|
|
78
136
|
this.stopKeepalive();
|
|
79
137
|
if (this.isIntentionallyClosed) {
|
|
80
138
|
return;
|
|
81
139
|
}
|
|
82
|
-
console.error(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (this.autoReconnect && this.reconnectAttempts < this.MAX_RECONNECT_ATTEMPTS) {
|
|
91
|
-
await this.attemptReconnection();
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
this.ws.on('pong', () => {
|
|
95
|
-
this.missedPongs = 0;
|
|
96
|
-
if (this.pongTimeout) {
|
|
97
|
-
clearTimeout(this.pongTimeout);
|
|
98
|
-
this.pongTimeout = null;
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
this.ws.on('message', (data) => {
|
|
102
|
-
try {
|
|
103
|
-
const message = JSON.parse(data.toString());
|
|
104
|
-
// Handle responses
|
|
105
|
-
if (message.id !== undefined) {
|
|
106
|
-
const pending = this.pendingMessages.get(message.id);
|
|
107
|
-
if (pending) {
|
|
108
|
-
this.pendingMessages.delete(message.id);
|
|
109
|
-
clearTimeout(pending.timeout);
|
|
110
|
-
if (message.error) {
|
|
111
|
-
pending.reject(new Error(message.error.message));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
pending.resolve(message.result);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// Handle events
|
|
119
|
-
if (message.method) {
|
|
120
|
-
const handlers = this.eventHandlers.get(message.method);
|
|
121
|
-
if (handlers) {
|
|
122
|
-
handlers.forEach(handler => handler(message.params));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
140
|
+
console.error(WEBSOCKET_CLOSED_MESSAGE(code, reason.toString()));
|
|
141
|
+
this.clearPendingMessages(new CDPConnectionError(WEBSOCKET_CONNECTION_CLOSED_ERROR));
|
|
142
|
+
// P1 Fix #1: Call onDisconnect callback if provided
|
|
143
|
+
// WHY: Allows worker to exit gracefully when Chrome dies
|
|
144
|
+
if (this.onDisconnect) {
|
|
145
|
+
void Promise.resolve(this.onDisconnect(code, reason.toString())).catch((error) => {
|
|
146
|
+
console.error('[cdp] onDisconnect callback error:', error);
|
|
147
|
+
});
|
|
125
148
|
}
|
|
126
|
-
|
|
127
|
-
|
|
149
|
+
if (this.autoReconnect && this.reconnectAttempts < CDP_MAX_RECONNECT_ATTEMPTS) {
|
|
150
|
+
await this.attemptReconnection();
|
|
128
151
|
}
|
|
129
|
-
});
|
|
152
|
+
})();
|
|
153
|
+
});
|
|
154
|
+
this.ws.on('pong', () => {
|
|
155
|
+
this.missedPongs = 0;
|
|
156
|
+
if (this.pongTimeout) {
|
|
157
|
+
clearTimeout(this.pongTimeout);
|
|
158
|
+
this.pongTimeout = null;
|
|
159
|
+
}
|
|
130
160
|
});
|
|
161
|
+
this.ws.on('message', (incomingData) => {
|
|
162
|
+
this.parseIncomingMessage(incomingData);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parse and route incoming CDP messages.
|
|
167
|
+
*
|
|
168
|
+
* We handle both responses (with ID) and events (with method) in the same
|
|
169
|
+
* message stream. Error handling is liberal to prevent one bad message
|
|
170
|
+
* from breaking the entire connection. Uses separate error handling for
|
|
171
|
+
* conversion, parsing, and routing stages for better debugging.
|
|
172
|
+
*
|
|
173
|
+
* @param incomingData - Raw WebSocket message data to parse
|
|
174
|
+
*/
|
|
175
|
+
parseIncomingMessage(incomingData) {
|
|
176
|
+
try {
|
|
177
|
+
const messageText = this.convertRawDataToString(incomingData);
|
|
178
|
+
const message = this.parseJSONMessage(messageText);
|
|
179
|
+
this.routeCDPMessage(message);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Error already logged by specific handler, no need to log again
|
|
183
|
+
}
|
|
131
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Convert WebSocket raw data to string using appropriate method.
|
|
187
|
+
*
|
|
188
|
+
* Handles all WebSocket data types with a clean conversion strategy.
|
|
189
|
+
* Uses a lookup approach for better maintainability and performance.
|
|
190
|
+
*
|
|
191
|
+
* @param data - Raw WebSocket data to convert
|
|
192
|
+
* @returns Converted string message
|
|
193
|
+
* @throws Error if data type is unsupported
|
|
194
|
+
*/
|
|
195
|
+
convertRawDataToString(data) {
|
|
196
|
+
try {
|
|
197
|
+
if (typeof data === 'string') {
|
|
198
|
+
return data;
|
|
199
|
+
}
|
|
200
|
+
if (Buffer.isBuffer(data)) {
|
|
201
|
+
return data.toString(UTF8_ENCODING);
|
|
202
|
+
}
|
|
203
|
+
if (Array.isArray(data)) {
|
|
204
|
+
return Buffer.concat(data).toString(UTF8_ENCODING);
|
|
205
|
+
}
|
|
206
|
+
throw new Error(UNEXPECTED_DATA_TYPE_ERROR(typeof data));
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
console.error(DATA_CONVERSION_ERROR(getErrorMessage(error)));
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Parse JSON string into CDP message object.
|
|
215
|
+
*
|
|
216
|
+
* Validates basic message structure to ensure we have a valid CDP message
|
|
217
|
+
* before attempting to route it.
|
|
218
|
+
*
|
|
219
|
+
* @param messageText - JSON string to parse
|
|
220
|
+
* @returns Parsed CDP message object
|
|
221
|
+
* @throws Error if JSON is invalid or message structure is malformed
|
|
222
|
+
*/
|
|
223
|
+
parseJSONMessage(messageText) {
|
|
224
|
+
try {
|
|
225
|
+
const message = JSON.parse(messageText);
|
|
226
|
+
// Basic validation - CDP messages should be objects
|
|
227
|
+
if (typeof message !== 'object' || message === null) {
|
|
228
|
+
throw new Error('CDP message must be an object');
|
|
229
|
+
}
|
|
230
|
+
return message;
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.error(JSON_PARSE_ERROR(getErrorMessage(error)));
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Route CDP message to appropriate handler based on message type.
|
|
239
|
+
*
|
|
240
|
+
* CDP messages are either responses (have ID) or events (have method).
|
|
241
|
+
* Some messages may have both, which is valid and should be handled.
|
|
242
|
+
*
|
|
243
|
+
* @param message - Parsed CDP message to route
|
|
244
|
+
* @throws Error if routing fails
|
|
245
|
+
*/
|
|
246
|
+
routeCDPMessage(message) {
|
|
247
|
+
try {
|
|
248
|
+
if (message.id !== undefined) {
|
|
249
|
+
this.handleCDPResponse(message);
|
|
250
|
+
}
|
|
251
|
+
if (message.method) {
|
|
252
|
+
this.handleCDPEvent(message);
|
|
253
|
+
}
|
|
254
|
+
// Log warning if message has neither ID nor method (unusual but not fatal)
|
|
255
|
+
if (message.id === undefined && !message.method) {
|
|
256
|
+
console.warn('Received CDP message with neither ID nor method - ignoring');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error(MESSAGE_ROUTING_ERROR(getErrorMessage(error)));
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Handle CDP command responses by resolving pending promises.
|
|
266
|
+
*
|
|
267
|
+
* @param message - CDP message containing response data
|
|
268
|
+
*/
|
|
269
|
+
handleCDPResponse(message) {
|
|
270
|
+
if (message.id === undefined)
|
|
271
|
+
return;
|
|
272
|
+
const pending = this.pendingMessages.get(message.id);
|
|
273
|
+
if (pending) {
|
|
274
|
+
this.pendingMessages.delete(message.id);
|
|
275
|
+
clearTimeout(pending.timeout);
|
|
276
|
+
if (message.error) {
|
|
277
|
+
pending.reject(new Error(message.error.message));
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
pending.resolve(message.result);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Handle CDP events by notifying registered handlers.
|
|
286
|
+
*
|
|
287
|
+
* @param message - CDP message containing event data
|
|
288
|
+
*/
|
|
289
|
+
handleCDPEvent(message) {
|
|
290
|
+
if (!message.method)
|
|
291
|
+
return;
|
|
292
|
+
const handlers = this.eventHandlers.get(message.method);
|
|
293
|
+
if (handlers) {
|
|
294
|
+
handlers.forEach((handler) => handler(message.params));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Calculate exponential backoff delay with maximum cap.
|
|
299
|
+
*
|
|
300
|
+
* We use exponential backoff to avoid thundering herd problems when many
|
|
301
|
+
* clients reconnect simultaneously. The maximum cap prevents extremely
|
|
302
|
+
* long delays that would make the tool unusable.
|
|
303
|
+
*
|
|
304
|
+
* @param attempt - Current attempt number (0-based)
|
|
305
|
+
* @param maxDelay - Maximum delay in milliseconds
|
|
306
|
+
* @returns Calculated delay in milliseconds (base delay * 2^attempt, capped at maxDelay)
|
|
307
|
+
*/
|
|
308
|
+
calculateBackoffDelay(attempt, maxDelay) {
|
|
309
|
+
return Math.min(CDP_BASE_RETRY_DELAY_MS * Math.pow(2, attempt), maxDelay);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Clear all pending command promises with the given error.
|
|
313
|
+
*
|
|
314
|
+
* We reject pending messages rather than letting them hang indefinitely
|
|
315
|
+
* because callers need to know that their commands failed due to connection
|
|
316
|
+
* loss so they can handle the error appropriately.
|
|
317
|
+
*
|
|
318
|
+
* @param error - Error to reject all pending promises with
|
|
319
|
+
*/
|
|
320
|
+
clearPendingMessages(error) {
|
|
321
|
+
this.pendingMessages.forEach((pending) => {
|
|
322
|
+
clearTimeout(pending.timeout);
|
|
323
|
+
pending.reject(error);
|
|
324
|
+
});
|
|
325
|
+
this.pendingMessages.clear();
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Attempt to reconnect to the WebSocket after connection loss.
|
|
329
|
+
*
|
|
330
|
+
* Uses exponential backoff with longer delays than initial connection
|
|
331
|
+
* attempts because reconnection typically indicates more serious issues.
|
|
332
|
+
* Calls the onReconnect callback after successful reconnection to allow
|
|
333
|
+
* callers to re-enable CDP domains or reinitialize state.
|
|
334
|
+
*
|
|
335
|
+
* @throws Never throws - errors are logged but not propagated to avoid
|
|
336
|
+
* breaking reconnection loops
|
|
337
|
+
*/
|
|
132
338
|
async attemptReconnection() {
|
|
133
339
|
this.reconnectAttempts++;
|
|
134
|
-
const delay =
|
|
135
|
-
console.error(
|
|
136
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
340
|
+
const delay = this.calculateBackoffDelay(this.reconnectAttempts - 1, CDP_MAX_RECONNECT_DELAY_MS);
|
|
341
|
+
console.error(RECONNECTING_MESSAGE(delay, this.reconnectAttempts, CDP_MAX_RECONNECT_ATTEMPTS));
|
|
342
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
137
343
|
try {
|
|
138
|
-
await this.attemptConnection(this.wsUrl);
|
|
344
|
+
await this.attemptConnection(this.wsUrl, this.connectionOptions);
|
|
139
345
|
this.reconnectAttempts = 0;
|
|
140
|
-
console.error(
|
|
141
|
-
// Re-enable domains
|
|
346
|
+
console.error(RECONNECTED_SUCCESS_MESSAGE);
|
|
142
347
|
if (this.onReconnect) {
|
|
143
348
|
await this.onReconnect();
|
|
144
349
|
}
|
|
145
350
|
}
|
|
146
351
|
catch (error) {
|
|
147
|
-
console.error(
|
|
352
|
+
console.error(RECONNECTION_FAILED_ERROR(getErrorMessage(error)));
|
|
148
353
|
}
|
|
149
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* Start keepalive ping/pong mechanism.
|
|
357
|
+
*
|
|
358
|
+
* We use 3 missed pongs as the threshold because network conditions can
|
|
359
|
+
* cause occasional packet loss, but 3 consecutive failures likely indicates
|
|
360
|
+
* a dead connection that should be terminated rather than waiting longer.
|
|
361
|
+
*/
|
|
150
362
|
startKeepalive(interval) {
|
|
151
363
|
this.pingInterval = setInterval(() => {
|
|
152
364
|
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
153
365
|
this.missedPongs++;
|
|
154
|
-
if (this.missedPongs >=
|
|
155
|
-
console.error(
|
|
156
|
-
this.ws.close(
|
|
366
|
+
if (this.missedPongs >= CDP_MAX_MISSED_PONGS) {
|
|
367
|
+
console.error(CONNECTION_LOST_MESSAGE);
|
|
368
|
+
this.ws.close(WEBSOCKET_NO_PONG_CLOSURE, NO_PONG_RECEIVED_REASON);
|
|
157
369
|
return;
|
|
158
370
|
}
|
|
159
371
|
this.ws.ping();
|
|
160
372
|
this.pongTimeout = setTimeout(() => {
|
|
161
|
-
console.error(
|
|
162
|
-
|
|
373
|
+
console.error(PONG_TIMEOUT_MESSAGE);
|
|
374
|
+
// Pong timeout is informational - the connection will be closed
|
|
375
|
+
// on the next ping cycle if no pong is received
|
|
376
|
+
}, CDP_PONG_TIMEOUT_MS);
|
|
163
377
|
}
|
|
164
378
|
}, interval);
|
|
165
379
|
}
|
|
@@ -176,52 +390,55 @@ export class CDPConnection {
|
|
|
176
390
|
/**
|
|
177
391
|
* Get the CDP port from the WebSocket URL.
|
|
178
392
|
*
|
|
393
|
+
* Used by other modules that need to make HTTP requests to the same
|
|
394
|
+
* Chrome instance (e.g., fetching target list via /json/list endpoint).
|
|
395
|
+
*
|
|
179
396
|
* @returns CDP port number
|
|
180
|
-
* @throws
|
|
397
|
+
* @throws CDPConnectionError if not connected or URL is invalid
|
|
181
398
|
*/
|
|
182
399
|
getPort() {
|
|
183
400
|
if (!this.wsUrl) {
|
|
184
|
-
throw new
|
|
401
|
+
throw new CDPConnectionError(NOT_CONNECTED_URL_ERROR);
|
|
185
402
|
}
|
|
186
403
|
try {
|
|
187
404
|
const url = new URL(this.wsUrl);
|
|
188
405
|
return parseInt(url.port, 10);
|
|
189
406
|
}
|
|
190
407
|
catch (error) {
|
|
191
|
-
throw new
|
|
408
|
+
throw new CDPConnectionError(INVALID_WEBSOCKET_URL_ERROR(this.wsUrl, getErrorMessage(error)));
|
|
192
409
|
}
|
|
193
410
|
}
|
|
194
411
|
/**
|
|
195
412
|
* Send a CDP command and wait for the response.
|
|
196
413
|
*
|
|
414
|
+
* Return type is unknown because CDP response structures vary dramatically
|
|
415
|
+
* by method (DOM.getDocument vs Page.navigate vs Runtime.evaluate all return
|
|
416
|
+
* completely different object shapes). Callers must type-assert based on
|
|
417
|
+
* the specific method being called. 30-second timeout balances responsiveness
|
|
418
|
+
* with allowing time for heavy operations like DOM traversal.
|
|
419
|
+
*
|
|
197
420
|
* @param method - CDP method name (e.g., 'Page.navigate', 'DOM.getDocument')
|
|
198
421
|
* @param params - Method parameters
|
|
199
422
|
* @param sessionId - Optional session ID for commands sent to specific targets
|
|
423
|
+
* (used when controlling specific frames or workers)
|
|
200
424
|
* @returns Promise resolving to the command result
|
|
201
|
-
* @throws
|
|
202
|
-
*
|
|
203
|
-
* @remarks
|
|
204
|
-
* Return type is `any` because CDP response structures vary by method.
|
|
205
|
-
* Callers should type-assert the result based on the specific method called.
|
|
425
|
+
* @throws CDPConnectionError if not connected to browser
|
|
426
|
+
* @throws CDPTimeoutError if command times out (30s)
|
|
206
427
|
*/
|
|
207
428
|
async send(method, params = {}, sessionId) {
|
|
208
429
|
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
209
|
-
throw new
|
|
430
|
+
throw new CDPConnectionError(NOT_CONNECTED_BROWSER_ERROR);
|
|
210
431
|
}
|
|
211
432
|
const id = ++this.messageId;
|
|
212
433
|
const message = { id, method, params };
|
|
213
|
-
// Add sessionId if provided (for commands sent to specific targets)
|
|
214
434
|
if (sessionId) {
|
|
215
435
|
message.sessionId = sessionId;
|
|
216
436
|
}
|
|
217
437
|
return new Promise((resolve, reject) => {
|
|
218
438
|
const timeout = setTimeout(() => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
reject(new Error(`Command timeout: ${method}`));
|
|
223
|
-
}
|
|
224
|
-
}, 30000);
|
|
439
|
+
this.pendingMessages.delete(id);
|
|
440
|
+
reject(new CDPTimeoutError(COMMAND_TIMEOUT_ERROR(method)));
|
|
441
|
+
}, CDP_COMMAND_TIMEOUT_MS);
|
|
225
442
|
this.pendingMessages.set(id, {
|
|
226
443
|
resolve: (value) => {
|
|
227
444
|
clearTimeout(timeout);
|
|
@@ -231,28 +448,33 @@ export class CDPConnection {
|
|
|
231
448
|
clearTimeout(timeout);
|
|
232
449
|
reject(error);
|
|
233
450
|
},
|
|
234
|
-
timeout
|
|
451
|
+
timeout,
|
|
235
452
|
});
|
|
453
|
+
// Safe to assert non-null: we checked this.ws exists on line 543
|
|
454
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
236
455
|
this.ws.send(JSON.stringify(message));
|
|
237
456
|
});
|
|
238
457
|
}
|
|
239
458
|
/**
|
|
240
459
|
* Register an event handler for CDP events.
|
|
241
460
|
*
|
|
461
|
+
* Type casting is safe because we store handlers as (params: unknown) \> void
|
|
462
|
+
* and always invoke them with unknown parameters. The generic T is only for
|
|
463
|
+
* caller convenience and type checking at the call site.
|
|
464
|
+
*
|
|
242
465
|
* @param event - CDP event name (e.g., 'Network.requestWillBeSent')
|
|
243
466
|
* @param handler - Callback function to handle the event
|
|
244
467
|
* @returns Handler ID for later removal with off()
|
|
245
|
-
*
|
|
246
|
-
* @remarks
|
|
247
|
-
* Handler parameter type is `any` for flexibility. Callers should use typed
|
|
248
|
-
* event parameter interfaces (e.g., `CDPNetworkRequestParams`) at call site.
|
|
468
|
+
* @typeParam T - Type of event parameters for type safety at call site
|
|
249
469
|
*/
|
|
250
470
|
on(event, handler) {
|
|
251
|
-
|
|
252
|
-
|
|
471
|
+
let handlersForEvent = this.eventHandlers.get(event);
|
|
472
|
+
if (!handlersForEvent) {
|
|
473
|
+
handlersForEvent = new Map();
|
|
474
|
+
this.eventHandlers.set(event, handlersForEvent);
|
|
253
475
|
}
|
|
254
476
|
const handlerId = ++this.nextHandlerId;
|
|
255
|
-
|
|
477
|
+
handlersForEvent.set(handlerId, handler);
|
|
256
478
|
return handlerId;
|
|
257
479
|
}
|
|
258
480
|
/**
|
|
@@ -286,19 +508,17 @@ export class CDPConnection {
|
|
|
286
508
|
/**
|
|
287
509
|
* Close the WebSocket connection and clean up resources.
|
|
288
510
|
*
|
|
511
|
+
* Performs complete cleanup including stopping keepalive, rejecting pending
|
|
512
|
+
* messages, closing WebSocket, and removing all event handlers.
|
|
513
|
+
*
|
|
289
514
|
* @param code - WebSocket close code (default: 1000 for normal closure)
|
|
290
515
|
* @param reason - Human-readable close reason
|
|
291
516
|
*/
|
|
292
|
-
close(code =
|
|
517
|
+
close(code = WEBSOCKET_NORMAL_CLOSURE, reason = NORMAL_CLOSURE_REASON) {
|
|
293
518
|
this.isIntentionallyClosed = true;
|
|
294
519
|
this.autoReconnect = false;
|
|
295
520
|
this.stopKeepalive();
|
|
296
|
-
|
|
297
|
-
this.pendingMessages.forEach((pending) => {
|
|
298
|
-
clearTimeout(pending.timeout);
|
|
299
|
-
pending.reject(new Error('Connection closed'));
|
|
300
|
-
});
|
|
301
|
-
this.pendingMessages.clear();
|
|
521
|
+
this.clearPendingMessages(new CDPConnectionError(CONNECTION_CLOSED_ERROR));
|
|
302
522
|
if (this.ws) {
|
|
303
523
|
this.ws.close(code, reason);
|
|
304
524
|
this.ws = null;
|
|
@@ -308,7 +528,7 @@ export class CDPConnection {
|
|
|
308
528
|
/**
|
|
309
529
|
* Check if the WebSocket connection is open and ready.
|
|
310
530
|
*
|
|
311
|
-
* @returns True if connected and ready to send/receive
|
|
531
|
+
* @returns True if connected and ready to send/receive messages
|
|
312
532
|
*/
|
|
313
533
|
isConnected() {
|
|
314
534
|
return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/connection/cdp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/connection/cdp.ts"],"names":[],"mappings":"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"}
|