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
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { MAX_CONSOLE_MESSAGES } from '../constants.js';
|
|
2
|
+
import { CDPHandlerRegistry } from '../utils/cdpHandlers.js';
|
|
3
|
+
import { shouldExcludeConsoleMessage } from '../utils/filters.js';
|
|
2
4
|
/**
|
|
3
5
|
* Start collecting console messages and exceptions via CDP Runtime domain.
|
|
4
6
|
*
|
|
@@ -6,60 +8,80 @@ const MAX_MESSAGES = 10000; // Prevent memory issues
|
|
|
6
8
|
*
|
|
7
9
|
* @param cdp - CDP connection instance
|
|
8
10
|
* @param messages - Array to populate with console messages
|
|
11
|
+
* @param includeAll - If true, disable default pattern filtering (default: false)
|
|
9
12
|
* @returns Cleanup function to remove event handlers
|
|
10
13
|
*
|
|
11
14
|
* @remarks
|
|
12
15
|
* - Message limit of 10,000 prevents memory issues in long-running sessions
|
|
13
16
|
* - After limit is reached, new messages are silently dropped (warning logged once)
|
|
17
|
+
* - By default, common dev server noise patterns are filtered out (use includeAll to disable)
|
|
14
18
|
*/
|
|
15
|
-
export async function startConsoleCollection(cdp, messages) {
|
|
16
|
-
const
|
|
19
|
+
export async function startConsoleCollection(cdp, messages, includeAll = false) {
|
|
20
|
+
const registry = new CDPHandlerRegistry();
|
|
17
21
|
// Enable runtime
|
|
18
22
|
await cdp.send('Runtime.enable');
|
|
19
23
|
await cdp.send('Log.enable');
|
|
20
24
|
// Listen for console API calls
|
|
21
|
-
|
|
25
|
+
registry.register(cdp, 'Runtime.consoleAPICalled', (params) => {
|
|
26
|
+
const text = params.args
|
|
27
|
+
.map((arg) => {
|
|
28
|
+
// arg type already defined in CDPConsoleAPICalledParams
|
|
29
|
+
if (arg.value !== undefined) {
|
|
30
|
+
// Handle different value types - primitives only, objects use description
|
|
31
|
+
const value = arg.value;
|
|
32
|
+
if (typeof value === 'string' ||
|
|
33
|
+
typeof value === 'number' ||
|
|
34
|
+
typeof value === 'boolean') {
|
|
35
|
+
return String(value);
|
|
36
|
+
}
|
|
37
|
+
// For objects/arrays, use description if available
|
|
38
|
+
return arg.description ?? '[object]';
|
|
39
|
+
}
|
|
40
|
+
if (arg.description !== undefined) {
|
|
41
|
+
return arg.description;
|
|
42
|
+
}
|
|
43
|
+
return '';
|
|
44
|
+
})
|
|
45
|
+
.join(' ');
|
|
46
|
+
// Apply pattern filtering
|
|
47
|
+
if (shouldExcludeConsoleMessage(text, params.type, includeAll)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
22
50
|
const message = {
|
|
23
51
|
type: params.type,
|
|
24
|
-
text
|
|
25
|
-
.map((arg) => {
|
|
26
|
-
if (arg.value !== undefined) {
|
|
27
|
-
return String(arg.value);
|
|
28
|
-
}
|
|
29
|
-
if (arg.description !== undefined) {
|
|
30
|
-
return arg.description;
|
|
31
|
-
}
|
|
32
|
-
return '';
|
|
33
|
-
})
|
|
34
|
-
.join(' '),
|
|
52
|
+
text,
|
|
35
53
|
timestamp: params.timestamp,
|
|
36
|
-
args: params.args
|
|
54
|
+
args: params.args,
|
|
37
55
|
};
|
|
38
|
-
if (messages.length <
|
|
56
|
+
if (messages.length < MAX_CONSOLE_MESSAGES) {
|
|
39
57
|
messages.push(message);
|
|
40
58
|
}
|
|
41
|
-
else if (messages.length ===
|
|
42
|
-
console.error(`Warning: Console message limit reached (${
|
|
59
|
+
else if (messages.length === MAX_CONSOLE_MESSAGES) {
|
|
60
|
+
console.error(`Warning: Console message limit reached (${MAX_CONSOLE_MESSAGES})`);
|
|
43
61
|
}
|
|
44
62
|
});
|
|
45
|
-
handlers.push({ event: 'Runtime.consoleAPICalled', id: consoleAPIId });
|
|
46
63
|
// Listen for exceptions
|
|
47
|
-
|
|
64
|
+
registry.register(cdp, 'Runtime.exceptionThrown', (params) => {
|
|
48
65
|
const exception = params.exceptionDetails;
|
|
66
|
+
const text = exception.text ?? exception.exception?.description ?? 'Unknown error';
|
|
67
|
+
// Apply pattern filtering (but don't filter errors by default)
|
|
68
|
+
// Errors are usually important, only filter if they match noise patterns
|
|
69
|
+
if (shouldExcludeConsoleMessage(text, 'error', includeAll)) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
49
72
|
const message = {
|
|
50
73
|
type: 'error',
|
|
51
|
-
text
|
|
52
|
-
timestamp: exception.timestamp
|
|
74
|
+
text,
|
|
75
|
+
timestamp: exception.timestamp ?? Date.now(),
|
|
53
76
|
};
|
|
54
|
-
if (messages.length <
|
|
77
|
+
if (messages.length < MAX_CONSOLE_MESSAGES) {
|
|
55
78
|
messages.push(message);
|
|
56
79
|
}
|
|
57
80
|
});
|
|
58
|
-
handlers.push({ event: 'Runtime.exceptionThrown', id: exceptionId });
|
|
59
81
|
// Return cleanup function
|
|
60
82
|
return () => {
|
|
61
83
|
// Remove event handlers
|
|
62
|
-
|
|
84
|
+
registry.cleanup(cdp);
|
|
63
85
|
};
|
|
64
86
|
}
|
|
65
87
|
//# sourceMappingURL=console.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/collectors/console.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/collectors/console.ts"],"names":[],"mappings":"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"}
|
package/dist/collectors/dom.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CDPConnection } from '../connection/cdp.js';
|
|
2
|
-
import { DOMData, CleanupFunction } from '../types.js';
|
|
1
|
+
import type { CDPConnection } from '../connection/cdp.js';
|
|
2
|
+
import type { DOMData, CleanupFunction } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Prepare CDP domains for DOM collection.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/collectors/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/collectors/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EAKhB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAsBvF;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAoFrE"}
|
package/dist/collectors/dom.js
CHANGED
|
@@ -36,48 +36,59 @@ export async function prepareDOMCollection(cdp) {
|
|
|
36
36
|
* @returns DOM data including URL, title, and full HTML
|
|
37
37
|
*/
|
|
38
38
|
export async function collectDOM(cdp) {
|
|
39
|
+
const domCaptureStart = Date.now();
|
|
39
40
|
try {
|
|
40
41
|
// Add a timeout wrapper to prevent hanging
|
|
41
42
|
const timeout = 5000; // 5 seconds should be plenty for DOM capture
|
|
42
43
|
const captureWithTimeout = async (promise, label) => {
|
|
43
44
|
return Promise.race([
|
|
44
45
|
promise,
|
|
45
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error(`${label} timed out after ${timeout}ms`)), timeout))
|
|
46
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`${label} timed out after ${timeout}ms`)), timeout)),
|
|
46
47
|
]);
|
|
47
48
|
};
|
|
48
49
|
// Get document
|
|
49
50
|
console.error('Getting document...');
|
|
50
|
-
const
|
|
51
|
-
|
|
51
|
+
const docStart = Date.now();
|
|
52
|
+
const documentResponse = await captureWithTimeout(cdp.send('DOM.getDocument', { depth: -1 }), 'DOM.getDocument');
|
|
53
|
+
const root = documentResponse.root;
|
|
54
|
+
console.error(`[PERF] DOM.getDocument: ${Date.now() - docStart}ms (nodeId: ${root.nodeId})`);
|
|
52
55
|
// Get outer HTML
|
|
53
56
|
console.error('Getting outer HTML...');
|
|
54
|
-
const
|
|
55
|
-
|
|
57
|
+
const htmlStart = Date.now();
|
|
58
|
+
const htmlResponse = await captureWithTimeout(cdp.send('DOM.getOuterHTML', { nodeId: root.nodeId }), 'DOM.getOuterHTML');
|
|
59
|
+
const outerHTML = htmlResponse.outerHTML;
|
|
60
|
+
console.error(`[PERF] DOM.getOuterHTML: ${Date.now() - htmlStart}ms (${outerHTML.length} chars)`);
|
|
56
61
|
// Get page info
|
|
57
62
|
console.error('Getting page info...');
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
|
|
63
|
+
const frameStart = Date.now();
|
|
64
|
+
const frameTreeResponse = await captureWithTimeout(cdp.send('Page.getFrameTree'), 'Page.getFrameTree');
|
|
65
|
+
const frame = frameTreeResponse.frameTree.frame;
|
|
66
|
+
console.error(`[PERF] Page.getFrameTree: ${Date.now() - frameStart}ms (url: ${frame.url})`);
|
|
61
67
|
// Get real document title using Runtime.evaluate
|
|
62
68
|
console.error('Getting document title...');
|
|
63
69
|
let title = 'Untitled';
|
|
64
70
|
try {
|
|
71
|
+
const titleStart = Date.now();
|
|
65
72
|
const titleResult = await captureWithTimeout(cdp.send('Runtime.evaluate', {
|
|
66
73
|
expression: 'document.title',
|
|
67
|
-
returnByValue: true
|
|
74
|
+
returnByValue: true,
|
|
68
75
|
}), 'Runtime.evaluate (document.title)');
|
|
69
|
-
if (titleResult.result && titleResult.result.value) {
|
|
76
|
+
if (titleResult.result.value !== undefined && typeof titleResult.result.value === 'string') {
|
|
70
77
|
title = titleResult.result.value;
|
|
71
78
|
}
|
|
79
|
+
console.error(`[PERF] Runtime.evaluate (title): ${Date.now() - titleStart}ms`);
|
|
72
80
|
}
|
|
73
81
|
catch (titleError) {
|
|
74
82
|
console.error('Failed to get document title, using fallback:', titleError);
|
|
75
83
|
}
|
|
76
84
|
console.error(`Got document title: ${title}`);
|
|
85
|
+
const url = frame.url;
|
|
86
|
+
const totalDuration = Date.now() - domCaptureStart;
|
|
87
|
+
console.error(`[PERF] Total DOM capture: ${totalDuration}ms`);
|
|
77
88
|
return {
|
|
78
|
-
url
|
|
89
|
+
url,
|
|
79
90
|
title,
|
|
80
|
-
outerHTML
|
|
91
|
+
outerHTML,
|
|
81
92
|
};
|
|
82
93
|
}
|
|
83
94
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/collectors/dom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/collectors/dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import { CDPConnection } from '../connection/cdp.js';
|
|
2
|
-
import { NetworkRequest, CleanupFunction } from '../types.js';
|
|
1
|
+
import type { CDPConnection } from '../connection/cdp.js';
|
|
2
|
+
import type { NetworkRequest, CleanupFunction } from '../types.js';
|
|
3
|
+
export interface NetworkCollectionOptions {
|
|
4
|
+
includeAll?: boolean;
|
|
5
|
+
fetchAllBodies?: boolean;
|
|
6
|
+
fetchBodiesInclude?: string[];
|
|
7
|
+
fetchBodiesExclude?: string[];
|
|
8
|
+
networkInclude?: string[];
|
|
9
|
+
networkExclude?: string[];
|
|
10
|
+
maxBodySize?: number;
|
|
11
|
+
}
|
|
3
12
|
/**
|
|
4
13
|
* Start collecting network requests via CDP Network domain.
|
|
5
14
|
*
|
|
@@ -8,12 +17,17 @@ import { NetworkRequest, CleanupFunction } from '../types.js';
|
|
|
8
17
|
*
|
|
9
18
|
* @param cdp - CDP connection instance
|
|
10
19
|
* @param requests - Array to populate with completed network requests
|
|
20
|
+
* @param options - Collection options
|
|
11
21
|
* @returns Cleanup function to remove event handlers and clear state
|
|
12
22
|
*
|
|
13
23
|
* @remarks
|
|
24
|
+
* - Chrome buffer limits: 50MB total, 10MB per resource, 1MB POST data (with fallback)
|
|
14
25
|
* - Stale requests (incomplete after 60s) are removed from tracking but NOT added to output
|
|
15
26
|
* - Request limit of 10,000 prevents memory issues in long-running sessions
|
|
16
|
-
* - Response bodies are
|
|
27
|
+
* - Response bodies are automatically skipped for images, fonts, CSS, and source maps (see DEFAULT_SKIP_BODY_PATTERNS)
|
|
28
|
+
* - Response bodies larger than 5MB are skipped with a placeholder message
|
|
29
|
+
* - By default, common tracking/analytics domains are filtered out (use includeAll to disable)
|
|
30
|
+
* - Pattern precedence: include patterns always trump exclude patterns
|
|
17
31
|
*/
|
|
18
|
-
export declare function startNetworkCollection(cdp: CDPConnection, requests: NetworkRequest[]): Promise<CleanupFunction>;
|
|
32
|
+
export declare function startNetworkCollection(cdp: CDPConnection, requests: NetworkRequest[], options?: NetworkCollectionOptions): Promise<CleanupFunction>;
|
|
19
33
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/collectors/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/collectors/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAMhB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,CAwN1B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { MAX_NETWORK_REQUESTS, STALE_REQUEST_TIMEOUT, STALE_REQUEST_CLEANUP_INTERVAL, MAX_RESPONSE_SIZE, CHROME_NETWORK_BUFFER_TOTAL, CHROME_NETWORK_BUFFER_PER_RESOURCE, CHROME_POST_DATA_LIMIT, } from '../constants.js';
|
|
2
|
+
import { CDPHandlerRegistry } from '../utils/cdpHandlers.js';
|
|
3
|
+
import { shouldExcludeDomain, shouldExcludeUrl, shouldFetchBody } from '../utils/filters.js';
|
|
3
4
|
/**
|
|
4
5
|
* Start collecting network requests via CDP Network domain.
|
|
5
6
|
*
|
|
@@ -8,18 +9,40 @@ const STALE_REQUEST_TIMEOUT = 60000; // 60 seconds
|
|
|
8
9
|
*
|
|
9
10
|
* @param cdp - CDP connection instance
|
|
10
11
|
* @param requests - Array to populate with completed network requests
|
|
12
|
+
* @param options - Collection options
|
|
11
13
|
* @returns Cleanup function to remove event handlers and clear state
|
|
12
14
|
*
|
|
13
15
|
* @remarks
|
|
16
|
+
* - Chrome buffer limits: 50MB total, 10MB per resource, 1MB POST data (with fallback)
|
|
14
17
|
* - Stale requests (incomplete after 60s) are removed from tracking but NOT added to output
|
|
15
18
|
* - Request limit of 10,000 prevents memory issues in long-running sessions
|
|
16
|
-
* - Response bodies are
|
|
19
|
+
* - Response bodies are automatically skipped for images, fonts, CSS, and source maps (see DEFAULT_SKIP_BODY_PATTERNS)
|
|
20
|
+
* - Response bodies larger than 5MB are skipped with a placeholder message
|
|
21
|
+
* - By default, common tracking/analytics domains are filtered out (use includeAll to disable)
|
|
22
|
+
* - Pattern precedence: include patterns always trump exclude patterns
|
|
17
23
|
*/
|
|
18
|
-
export async function startNetworkCollection(cdp, requests) {
|
|
24
|
+
export async function startNetworkCollection(cdp, requests, options = {}) {
|
|
25
|
+
const { includeAll = false, fetchAllBodies = false, fetchBodiesInclude = [], fetchBodiesExclude = [], networkInclude = [], networkExclude = [], maxBodySize = MAX_RESPONSE_SIZE, } = options;
|
|
19
26
|
const requestMap = new Map();
|
|
20
|
-
const
|
|
21
|
-
//
|
|
22
|
-
|
|
27
|
+
const registry = new CDPHandlerRegistry();
|
|
28
|
+
// Counters for PERF logging
|
|
29
|
+
let bodiesFetched = 0;
|
|
30
|
+
let bodiesSkipped = 0;
|
|
31
|
+
// Enable network tracking with buffer limits (if supported)
|
|
32
|
+
// These parameters are optional and experimental, but widely supported in Chrome 58+
|
|
33
|
+
// See docs/chrome-cdp-compatibility.md for details
|
|
34
|
+
try {
|
|
35
|
+
await cdp.send('Network.enable', {
|
|
36
|
+
maxTotalBufferSize: CHROME_NETWORK_BUFFER_TOTAL,
|
|
37
|
+
maxResourceBufferSize: CHROME_NETWORK_BUFFER_PER_RESOURCE,
|
|
38
|
+
maxPostDataSize: CHROME_POST_DATA_LIMIT,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Fallback to basic Network.enable if buffer parameters not supported
|
|
43
|
+
console.error('Network buffer limits not supported, using default settings');
|
|
44
|
+
await cdp.send('Network.enable');
|
|
45
|
+
}
|
|
23
46
|
// Periodic cleanup of stale requests (see JSDoc @remarks for behavior)
|
|
24
47
|
const cleanupInterval = setInterval(() => {
|
|
25
48
|
const now = Date.now();
|
|
@@ -31,13 +54,13 @@ export async function startNetworkCollection(cdp, requests) {
|
|
|
31
54
|
});
|
|
32
55
|
if (staleRequests.length > 0) {
|
|
33
56
|
console.error(`Cleaning up ${staleRequests.length} stale network requests`);
|
|
34
|
-
staleRequests.forEach(requestId => requestMap.delete(requestId));
|
|
57
|
+
staleRequests.forEach((requestId) => requestMap.delete(requestId));
|
|
35
58
|
}
|
|
36
|
-
},
|
|
59
|
+
}, STALE_REQUEST_CLEANUP_INTERVAL);
|
|
37
60
|
// Listen for requests
|
|
38
|
-
|
|
39
|
-
if (requestMap.size >=
|
|
40
|
-
console.error(`Warning: Network request limit reached (${
|
|
61
|
+
registry.register(cdp, 'Network.requestWillBeSent', (params) => {
|
|
62
|
+
if (requestMap.size >= MAX_NETWORK_REQUESTS) {
|
|
63
|
+
console.error(`Warning: Network request limit reached (${MAX_NETWORK_REQUESTS}), dropping new requests`);
|
|
41
64
|
return;
|
|
42
65
|
}
|
|
43
66
|
const request = {
|
|
@@ -46,16 +69,15 @@ export async function startNetworkCollection(cdp, requests) {
|
|
|
46
69
|
method: params.request.method,
|
|
47
70
|
timestamp: params.timestamp,
|
|
48
71
|
requestHeaders: params.request.headers,
|
|
49
|
-
requestBody: params.request.postData
|
|
72
|
+
requestBody: params.request.postData,
|
|
50
73
|
};
|
|
51
74
|
requestMap.set(params.requestId, {
|
|
52
75
|
request,
|
|
53
|
-
timestamp: Date.now()
|
|
76
|
+
timestamp: Date.now(),
|
|
54
77
|
});
|
|
55
78
|
});
|
|
56
|
-
handlers.push({ event: 'Network.requestWillBeSent', id: requestWillBeSentId });
|
|
57
79
|
// Listen for responses
|
|
58
|
-
|
|
80
|
+
registry.register(cdp, 'Network.responseReceived', (params) => {
|
|
59
81
|
const entry = requestMap.get(params.requestId);
|
|
60
82
|
if (entry) {
|
|
61
83
|
entry.request.status = params.response.status;
|
|
@@ -63,50 +85,105 @@ export async function startNetworkCollection(cdp, requests) {
|
|
|
63
85
|
entry.request.responseHeaders = params.response.headers;
|
|
64
86
|
}
|
|
65
87
|
});
|
|
66
|
-
handlers.push({ event: 'Network.responseReceived', id: responseReceivedId });
|
|
67
88
|
// Listen for finished requests
|
|
68
|
-
|
|
89
|
+
registry.register(cdp, 'Network.loadingFinished', (params) => {
|
|
69
90
|
const entry = requestMap.get(params.requestId);
|
|
70
|
-
if (entry && requests.length <
|
|
91
|
+
if (entry && requests.length < MAX_NETWORK_REQUESTS) {
|
|
71
92
|
const request = entry.request;
|
|
72
|
-
//
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
93
|
+
// Apply domain filtering
|
|
94
|
+
if (shouldExcludeDomain(request.url, includeAll)) {
|
|
95
|
+
requestMap.delete(params.requestId);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Apply URL pattern filtering
|
|
99
|
+
if (shouldExcludeUrl(request.url, {
|
|
100
|
+
includePatterns: networkInclude,
|
|
101
|
+
excludePatterns: networkExclude,
|
|
102
|
+
})) {
|
|
103
|
+
requestMap.delete(params.requestId);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// Determine if we should fetch the response body
|
|
107
|
+
const isSizeAcceptable = params.encodedDataLength <= maxBodySize;
|
|
108
|
+
const isTextResponse = (request.mimeType?.includes('json') ?? false) ||
|
|
109
|
+
(request.mimeType?.includes('javascript') ?? false) ||
|
|
110
|
+
(request.mimeType?.includes('text') ?? false) ||
|
|
111
|
+
(request.mimeType?.includes('html') ?? false);
|
|
112
|
+
if (isTextResponse && isSizeAcceptable) {
|
|
113
|
+
// Check if we should fetch body based on patterns
|
|
114
|
+
const shouldFetch = shouldFetchBody(request.url, request.mimeType, {
|
|
115
|
+
fetchAllBodies,
|
|
116
|
+
includePatterns: fetchBodiesInclude,
|
|
117
|
+
excludePatterns: fetchBodiesExclude,
|
|
118
|
+
});
|
|
119
|
+
if (shouldFetch) {
|
|
120
|
+
bodiesFetched++;
|
|
121
|
+
// Fetch response body asynchronously
|
|
122
|
+
void cdp
|
|
123
|
+
.send('Network.getResponseBody', { requestId: params.requestId })
|
|
124
|
+
.then((response) => {
|
|
125
|
+
const typedResponse = response;
|
|
126
|
+
request.responseBody = typedResponse.body;
|
|
127
|
+
})
|
|
128
|
+
.catch(() => {
|
|
129
|
+
// Response body not available (e.g., 204 No Content, redirects, etc.)
|
|
130
|
+
});
|
|
77
131
|
}
|
|
78
|
-
|
|
79
|
-
|
|
132
|
+
else {
|
|
133
|
+
bodiesSkipped++;
|
|
134
|
+
request.responseBody = '[SKIPPED: Auto-optimization (see DEFAULT_SKIP_BODY_PATTERNS)]';
|
|
80
135
|
}
|
|
81
136
|
}
|
|
137
|
+
else if (isTextResponse && !isSizeAcceptable) {
|
|
138
|
+
bodiesSkipped++;
|
|
139
|
+
// Mark large responses as skipped
|
|
140
|
+
request.responseBody = `[SKIPPED: Response too large (${(params.encodedDataLength / 1024 / 1024).toFixed(2)}MB > ${maxBodySize / 1024 / 1024}MB)]`;
|
|
141
|
+
}
|
|
82
142
|
requests.push(request);
|
|
83
143
|
requestMap.delete(params.requestId);
|
|
84
144
|
}
|
|
85
|
-
else if (requests.length >=
|
|
86
|
-
console.error(`Warning: Network request limit reached (${
|
|
145
|
+
else if (requests.length >= MAX_NETWORK_REQUESTS) {
|
|
146
|
+
console.error(`Warning: Network request limit reached (${MAX_NETWORK_REQUESTS})`);
|
|
87
147
|
requestMap.delete(params.requestId);
|
|
88
148
|
}
|
|
89
149
|
});
|
|
90
|
-
handlers.push({ event: 'Network.loadingFinished', id: loadingFinishedId });
|
|
91
150
|
// Listen for failed requests
|
|
92
|
-
|
|
151
|
+
registry.register(cdp, 'Network.loadingFailed', (params) => {
|
|
93
152
|
const entry = requestMap.get(params.requestId);
|
|
94
|
-
if (entry && requests.length <
|
|
153
|
+
if (entry && requests.length < MAX_NETWORK_REQUESTS) {
|
|
154
|
+
// Apply domain filtering
|
|
155
|
+
if (shouldExcludeDomain(entry.request.url, includeAll)) {
|
|
156
|
+
requestMap.delete(params.requestId);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Apply URL pattern filtering
|
|
160
|
+
if (shouldExcludeUrl(entry.request.url, {
|
|
161
|
+
includePatterns: networkInclude,
|
|
162
|
+
excludePatterns: networkExclude,
|
|
163
|
+
})) {
|
|
164
|
+
requestMap.delete(params.requestId);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
95
167
|
entry.request.status = 0; // Indicate failure
|
|
96
168
|
requests.push(entry.request);
|
|
97
169
|
requestMap.delete(params.requestId);
|
|
98
170
|
}
|
|
99
|
-
else if (requests.length >=
|
|
171
|
+
else if (requests.length >= MAX_NETWORK_REQUESTS) {
|
|
100
172
|
requestMap.delete(params.requestId);
|
|
101
173
|
}
|
|
102
174
|
});
|
|
103
|
-
handlers.push({ event: 'Network.loadingFailed', id: loadingFailedId });
|
|
104
175
|
// Return cleanup function
|
|
105
176
|
return () => {
|
|
177
|
+
// Log PERF metrics
|
|
178
|
+
const totalBodyDecisions = bodiesFetched + bodiesSkipped;
|
|
179
|
+
if (totalBodyDecisions > 0) {
|
|
180
|
+
const percentageSkipped = ((bodiesSkipped / totalBodyDecisions) * 100).toFixed(1);
|
|
181
|
+
console.error(`[PERF] Network bodies: ${bodiesFetched} fetched, ${bodiesSkipped} skipped (${percentageSkipped}% reduction)`);
|
|
182
|
+
}
|
|
106
183
|
// Clear interval
|
|
107
184
|
clearInterval(cleanupInterval);
|
|
108
185
|
// Remove event handlers
|
|
109
|
-
|
|
186
|
+
registry.cleanup(cdp);
|
|
110
187
|
// Clear request map
|
|
111
188
|
requestMap.clear();
|
|
112
189
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/collectors/network.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/collectors/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDPConnection contract tests
|
|
3
|
+
*
|
|
4
|
+
* Tests the public API contracts of CDPConnection WITHOUT testing implementation details.
|
|
5
|
+
* Uses FakeWebSocket to mock the WebSocket boundary while keeping all CDP logic real.
|
|
6
|
+
*
|
|
7
|
+
* Coverage:
|
|
8
|
+
* 1. Message correlation - Request/response pairing with IDs
|
|
9
|
+
* 2. Connection lifecycle - Connect, close, error handling
|
|
10
|
+
* 3. Timeouts - Connection timeout (10s), command timeout (30s)
|
|
11
|
+
* 4. Keepalive - Ping/pong lifecycle, missed pongs detection
|
|
12
|
+
* 5. Event subscription - on/off/removeAllListeners
|
|
13
|
+
* 6. Edge cases - Close during send, stale handlers, state transitions
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=cdp.contract.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp.contract.test.d.ts","sourceRoot":"","sources":["../../../src/connection/__tests__/cdp.contract.test.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG"}
|