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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chrome PID cache management.
|
|
3
|
+
*
|
|
4
|
+
* Persistent cache for Chrome PID that survives session cleanup.
|
|
5
|
+
* WHY: Enables aggressive Chrome cleanup even after session ends (for `bdg cleanup --chrome`).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Write Chrome PID to persistent cache.
|
|
9
|
+
*
|
|
10
|
+
* This cache survives session cleanup so aggressive cleanup can find Chrome later.
|
|
11
|
+
* WHY: Users may want to kill Chrome after session ends, especially for testing.
|
|
12
|
+
*
|
|
13
|
+
* @param chromePid - Chrome process ID to cache
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const chrome = await launchChrome();
|
|
18
|
+
* writeChromePid(chrome.pid);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function writeChromePid(chromePid: number): void;
|
|
22
|
+
/**
|
|
23
|
+
* Read Chrome PID from persistent cache.
|
|
24
|
+
*
|
|
25
|
+
* Only returns the PID if the process is still alive.
|
|
26
|
+
* Automatically cleans up stale cache entries.
|
|
27
|
+
*
|
|
28
|
+
* @returns Chrome PID if cached and process is alive, null otherwise
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const chromePid = readChromePid();
|
|
33
|
+
* if (chromePid) {
|
|
34
|
+
* console.log(`Chrome is running with PID ${chromePid}`);
|
|
35
|
+
* killChromeProcess(chromePid, 'SIGKILL');
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function readChromePid(): number | null;
|
|
40
|
+
/**
|
|
41
|
+
* Remove Chrome PID from persistent cache.
|
|
42
|
+
*
|
|
43
|
+
* Safe to call multiple times (idempotent).
|
|
44
|
+
*/
|
|
45
|
+
export declare function clearChromePid(): void;
|
|
46
|
+
//# sourceMappingURL=chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/session/chrome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CA+B7C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAUrC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chrome PID cache management.
|
|
3
|
+
*
|
|
4
|
+
* Persistent cache for Chrome PID that survives session cleanup.
|
|
5
|
+
* WHY: Enables aggressive Chrome cleanup even after session ends (for `bdg cleanup --chrome`).
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import { AtomicFileWriter } from '../utils/atomicFile.js';
|
|
9
|
+
import { getSessionFilePath, ensureSessionDir } from './paths.js';
|
|
10
|
+
import { isProcessAlive } from './process.js';
|
|
11
|
+
/**
|
|
12
|
+
* Write Chrome PID to persistent cache.
|
|
13
|
+
*
|
|
14
|
+
* This cache survives session cleanup so aggressive cleanup can find Chrome later.
|
|
15
|
+
* WHY: Users may want to kill Chrome after session ends, especially for testing.
|
|
16
|
+
*
|
|
17
|
+
* @param chromePid - Chrome process ID to cache
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const chrome = await launchChrome();
|
|
22
|
+
* writeChromePid(chrome.pid);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function writeChromePid(chromePid) {
|
|
26
|
+
ensureSessionDir();
|
|
27
|
+
const cachePath = getSessionFilePath('CHROME_PID');
|
|
28
|
+
AtomicFileWriter.writeSync(cachePath, chromePid.toString());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read Chrome PID from persistent cache.
|
|
32
|
+
*
|
|
33
|
+
* Only returns the PID if the process is still alive.
|
|
34
|
+
* Automatically cleans up stale cache entries.
|
|
35
|
+
*
|
|
36
|
+
* @returns Chrome PID if cached and process is alive, null otherwise
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const chromePid = readChromePid();
|
|
41
|
+
* if (chromePid) {
|
|
42
|
+
* console.log(`Chrome is running with PID ${chromePid}`);
|
|
43
|
+
* killChromeProcess(chromePid, 'SIGKILL');
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function readChromePid() {
|
|
48
|
+
const cachePath = getSessionFilePath('CHROME_PID');
|
|
49
|
+
if (!fs.existsSync(cachePath)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const pidStr = fs.readFileSync(cachePath, 'utf-8').trim();
|
|
54
|
+
const pid = parseInt(pidStr, 10);
|
|
55
|
+
if (isNaN(pid)) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
// Only return the PID if the process is still alive
|
|
59
|
+
// This prevents trying to kill stale PIDs
|
|
60
|
+
if (!isProcessAlive(pid)) {
|
|
61
|
+
// Clean up stale cache
|
|
62
|
+
try {
|
|
63
|
+
fs.unlinkSync(cachePath);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore cleanup errors
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return pid;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Remove Chrome PID from persistent cache.
|
|
78
|
+
*
|
|
79
|
+
* Safe to call multiple times (idempotent).
|
|
80
|
+
*/
|
|
81
|
+
export function clearChromePid() {
|
|
82
|
+
const cachePath = getSessionFilePath('CHROME_PID');
|
|
83
|
+
try {
|
|
84
|
+
if (fs.existsSync(cachePath)) {
|
|
85
|
+
fs.unlinkSync(cachePath);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Ignore errors during cleanup
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=chrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/session/chrome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,gBAAgB,EAAE,CAAC;IACnB,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,0CAA0C;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,uBAAuB;YACvB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session cleanup operations.
|
|
3
|
+
*
|
|
4
|
+
* Handles cleanup of session files (PID, metadata, lock, socket).
|
|
5
|
+
* WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Cleanup stale session files if no active session is running.
|
|
9
|
+
*
|
|
10
|
+
* Uses lock-based serialization to safely clean up orphaned session artifacts
|
|
11
|
+
* (PID, metadata, socket) when the recorded process is dead or files are
|
|
12
|
+
* missing/corrupt.
|
|
13
|
+
*
|
|
14
|
+
* WHY: Prevents accumulation of stale session files from crashed processes.
|
|
15
|
+
*
|
|
16
|
+
* @returns True if cleanup was performed, false if an active session is running
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* if (cleanupStaleSession()) {
|
|
21
|
+
* console.log('Cleaned up stale session files');
|
|
22
|
+
* } else {
|
|
23
|
+
* console.log('Active session is running - no cleanup performed');
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function cleanupStaleSession(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Cleanup all session files after a session ends.
|
|
30
|
+
*
|
|
31
|
+
* Removes PID, lock, and metadata files.
|
|
32
|
+
* Safe to call multiple times (idempotent).
|
|
33
|
+
*
|
|
34
|
+
* WHY: Ensures clean slate for next session, prevents stale file accumulation.
|
|
35
|
+
*/
|
|
36
|
+
export declare function cleanupSession(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Cleanup stale daemon PID file if daemon process is dead.
|
|
39
|
+
*
|
|
40
|
+
* WHY: Prevents stale daemon PIDs from blocking new daemon starts (P0 Fix #2).
|
|
41
|
+
*
|
|
42
|
+
* @returns True if cleanup was performed, false if daemon is running
|
|
43
|
+
*/
|
|
44
|
+
export declare function cleanupStaleDaemonPid(): boolean;
|
|
45
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsH7C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAYrC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA0D/C"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session cleanup operations.
|
|
3
|
+
*
|
|
4
|
+
* Handles cleanup of session files (PID, metadata, lock, socket).
|
|
5
|
+
* WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import { getErrorMessage } from '../utils/errors.js';
|
|
9
|
+
import { createLogger } from '../utils/logger.js';
|
|
10
|
+
import { acquireSessionLock, releaseSessionLock } from './lock.js';
|
|
11
|
+
import { getSessionFilePath, ensureSessionDir } from './paths.js';
|
|
12
|
+
import { readPid, cleanupPidFile } from './pid.js';
|
|
13
|
+
import { isProcessAlive } from './process.js';
|
|
14
|
+
const log = createLogger('cleanup');
|
|
15
|
+
/**
|
|
16
|
+
* Cleanup stale session files if no active session is running.
|
|
17
|
+
*
|
|
18
|
+
* Uses lock-based serialization to safely clean up orphaned session artifacts
|
|
19
|
+
* (PID, metadata, socket) when the recorded process is dead or files are
|
|
20
|
+
* missing/corrupt.
|
|
21
|
+
*
|
|
22
|
+
* WHY: Prevents accumulation of stale session files from crashed processes.
|
|
23
|
+
*
|
|
24
|
+
* @returns True if cleanup was performed, false if an active session is running
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* if (cleanupStaleSession()) {
|
|
29
|
+
* console.log('Cleaned up stale session files');
|
|
30
|
+
* } else {
|
|
31
|
+
* console.log('Active session is running - no cleanup performed');
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function cleanupStaleSession() {
|
|
36
|
+
ensureSessionDir();
|
|
37
|
+
// Try to acquire the session lock
|
|
38
|
+
const lockAcquired = acquireSessionLock();
|
|
39
|
+
if (!lockAcquired) {
|
|
40
|
+
// Lock is held by another process - check if it's still alive
|
|
41
|
+
const lockPath = getSessionFilePath('LOCK');
|
|
42
|
+
try {
|
|
43
|
+
const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
|
|
44
|
+
const lockPid = parseInt(lockPidStr, 10);
|
|
45
|
+
if (!isNaN(lockPid) && isProcessAlive(lockPid)) {
|
|
46
|
+
// Active session is running - don't clean up
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Can't read lock file - will clean it up below
|
|
52
|
+
}
|
|
53
|
+
// Lock exists but process is dead - force acquire
|
|
54
|
+
try {
|
|
55
|
+
fs.unlinkSync(lockPath);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Ignore if already deleted
|
|
59
|
+
}
|
|
60
|
+
// Try to acquire lock again
|
|
61
|
+
if (!acquireSessionLock()) {
|
|
62
|
+
// Still can't acquire - another process may have grabbed it
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// We now hold the lock - check if session PID exists and is alive
|
|
67
|
+
try {
|
|
68
|
+
const sessionPid = readPid();
|
|
69
|
+
// If session PID exists and process is alive, release lock and return
|
|
70
|
+
if (sessionPid !== null && isProcessAlive(sessionPid)) {
|
|
71
|
+
releaseSessionLock();
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
// Check daemon PID if it exists
|
|
75
|
+
const daemonPidPath = getSessionFilePath('DAEMON_PID');
|
|
76
|
+
if (fs.existsSync(daemonPidPath)) {
|
|
77
|
+
try {
|
|
78
|
+
const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
|
|
79
|
+
const daemonPid = parseInt(daemonPidStr, 10);
|
|
80
|
+
// If daemon is still alive, release lock and return
|
|
81
|
+
if (!isNaN(daemonPid) && isProcessAlive(daemonPid)) {
|
|
82
|
+
releaseSessionLock();
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Can't read daemon PID - will clean it up below
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// All processes are dead - clean up stale artifacts
|
|
91
|
+
log('Removing stale session files...');
|
|
92
|
+
// Remove session PID
|
|
93
|
+
cleanupPidFile();
|
|
94
|
+
// Remove metadata
|
|
95
|
+
const metaPath = getSessionFilePath('METADATA');
|
|
96
|
+
if (fs.existsSync(metaPath)) {
|
|
97
|
+
try {
|
|
98
|
+
fs.unlinkSync(metaPath);
|
|
99
|
+
log('Removed metadata file');
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
log(`Failed to remove metadata: ${getErrorMessage(error)}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Remove daemon PID
|
|
106
|
+
if (fs.existsSync(daemonPidPath)) {
|
|
107
|
+
try {
|
|
108
|
+
fs.unlinkSync(daemonPidPath);
|
|
109
|
+
log('Removed daemon PID file');
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
log(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Remove daemon socket
|
|
116
|
+
const socketPath = getSessionFilePath('DAEMON_SOCKET');
|
|
117
|
+
if (fs.existsSync(socketPath)) {
|
|
118
|
+
try {
|
|
119
|
+
fs.unlinkSync(socketPath);
|
|
120
|
+
log('Removed daemon socket');
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
log(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Remove daemon lock (P0 Fix #1)
|
|
127
|
+
const daemonLockPath = getSessionFilePath('DAEMON_LOCK');
|
|
128
|
+
if (fs.existsSync(daemonLockPath)) {
|
|
129
|
+
try {
|
|
130
|
+
fs.unlinkSync(daemonLockPath);
|
|
131
|
+
log('Removed daemon lock');
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
log(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
log('Stale session cleanup complete');
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
// Always release the lock
|
|
142
|
+
releaseSessionLock();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Cleanup all session files after a session ends.
|
|
147
|
+
*
|
|
148
|
+
* Removes PID, lock, and metadata files.
|
|
149
|
+
* Safe to call multiple times (idempotent).
|
|
150
|
+
*
|
|
151
|
+
* WHY: Ensures clean slate for next session, prevents stale file accumulation.
|
|
152
|
+
*/
|
|
153
|
+
export function cleanupSession() {
|
|
154
|
+
cleanupPidFile();
|
|
155
|
+
releaseSessionLock();
|
|
156
|
+
const metaPath = getSessionFilePath('METADATA');
|
|
157
|
+
if (fs.existsSync(metaPath)) {
|
|
158
|
+
try {
|
|
159
|
+
fs.unlinkSync(metaPath);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Ignore errors
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Cleanup stale daemon PID file if daemon process is dead.
|
|
168
|
+
*
|
|
169
|
+
* WHY: Prevents stale daemon PIDs from blocking new daemon starts (P0 Fix #2).
|
|
170
|
+
*
|
|
171
|
+
* @returns True if cleanup was performed, false if daemon is running
|
|
172
|
+
*/
|
|
173
|
+
export function cleanupStaleDaemonPid() {
|
|
174
|
+
const daemonPidPath = getSessionFilePath('DAEMON_PID');
|
|
175
|
+
if (!fs.existsSync(daemonPidPath)) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
|
|
180
|
+
const daemonPid = parseInt(daemonPidStr, 10);
|
|
181
|
+
// If daemon is still alive, don't clean up
|
|
182
|
+
if (!isNaN(daemonPid) && isProcessAlive(daemonPid)) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
// Daemon is dead - clean up stale PID and lock files
|
|
186
|
+
log(`Daemon not running (stale PID ${daemonPid}), cleaning up...`);
|
|
187
|
+
// Remove daemon PID
|
|
188
|
+
try {
|
|
189
|
+
fs.unlinkSync(daemonPidPath);
|
|
190
|
+
log('Removed stale daemon PID file');
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
log(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
|
|
194
|
+
}
|
|
195
|
+
// Remove daemon socket
|
|
196
|
+
const socketPath = getSessionFilePath('DAEMON_SOCKET');
|
|
197
|
+
if (fs.existsSync(socketPath)) {
|
|
198
|
+
try {
|
|
199
|
+
fs.unlinkSync(socketPath);
|
|
200
|
+
log('Removed stale daemon socket');
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
log(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Remove daemon lock
|
|
207
|
+
const lockPath = getSessionFilePath('DAEMON_LOCK');
|
|
208
|
+
if (fs.existsSync(lockPath)) {
|
|
209
|
+
try {
|
|
210
|
+
fs.unlinkSync(lockPath);
|
|
211
|
+
log('Removed stale daemon lock');
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
log(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// Can't read daemon PID - will clean it up
|
|
221
|
+
try {
|
|
222
|
+
fs.unlinkSync(daemonPidPath);
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session management module - centralized exports.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all session-related utilities from focused submodules.
|
|
5
|
+
* WHY: Single import point maintains backwards compatibility while improving internal structure.
|
|
6
|
+
*/
|
|
7
|
+
export { getSessionDir, getSessionFilePath, getWorkerSocketPath, ensureSessionDir, type SessionFileType, } from './paths.js';
|
|
8
|
+
export { isProcessAlive, killChromeProcess } from './process.js';
|
|
9
|
+
export { acquireSessionLock, releaseSessionLock } from './lock.js';
|
|
10
|
+
export { writePid, readPid, cleanupPidFile } from './pid.js';
|
|
11
|
+
export { writeSessionMetadata, readSessionMetadata, type SessionMetadata } from './metadata.js';
|
|
12
|
+
export { writeChromePid, readChromePid, clearChromePid } from './chrome.js';
|
|
13
|
+
export { writeSessionOutput } from './output.js';
|
|
14
|
+
export { cleanupSession, cleanupStaleSession } from './cleanup.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG7D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session management module - centralized exports.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all session-related utilities from focused submodules.
|
|
5
|
+
* WHY: Single import point maintains backwards compatibility while improving internal structure.
|
|
6
|
+
*/
|
|
7
|
+
// Path management
|
|
8
|
+
export { getSessionDir, getSessionFilePath, getWorkerSocketPath, ensureSessionDir, } from './paths.js';
|
|
9
|
+
// Process utilities
|
|
10
|
+
export { isProcessAlive, killChromeProcess } from './process.js';
|
|
11
|
+
// Lock management
|
|
12
|
+
export { acquireSessionLock, releaseSessionLock } from './lock.js';
|
|
13
|
+
// PID management
|
|
14
|
+
export { writePid, readPid, cleanupPidFile } from './pid.js';
|
|
15
|
+
// Metadata management
|
|
16
|
+
export { writeSessionMetadata, readSessionMetadata } from './metadata.js';
|
|
17
|
+
// Chrome PID cache
|
|
18
|
+
export { writeChromePid, readChromePid, clearChromePid } from './chrome.js';
|
|
19
|
+
// Output file I/O
|
|
20
|
+
export { writeSessionOutput } from './output.js';
|
|
21
|
+
// Cleanup operations
|
|
22
|
+
export { cleanupSession, cleanupStaleSession } from './cleanup.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kBAAkB;AAClB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjE,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAwB,MAAM,eAAe,CAAC;AAEhG,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session lock management for preventing concurrent sessions.
|
|
3
|
+
*
|
|
4
|
+
* Uses exclusive file creation (wx flag) with PID tracking for atomic lock acquisition.
|
|
5
|
+
* WHY: Prevents race conditions when multiple bdg processes try to start simultaneously.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Acquire session lock atomically.
|
|
9
|
+
*
|
|
10
|
+
* Uses exclusive file creation (wx flag) to ensure only one session can run.
|
|
11
|
+
* If lock file exists but process is dead, automatically removes stale lock and retries.
|
|
12
|
+
*
|
|
13
|
+
* @returns True if lock was acquired, false if another session is running
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* if (!acquireSessionLock()) {
|
|
18
|
+
* console.error('Another session is already running');
|
|
19
|
+
* process.exit(1);
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function acquireSessionLock(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Release session lock.
|
|
26
|
+
*
|
|
27
|
+
* Removes the lock file to allow other sessions to start.
|
|
28
|
+
* Safe to call multiple times (idempotent).
|
|
29
|
+
*/
|
|
30
|
+
export declare function releaseSessionLock(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Acquire daemon lock atomically.
|
|
33
|
+
*
|
|
34
|
+
* Uses exclusive file creation (wx flag) to ensure only one daemon can start.
|
|
35
|
+
* If lock file exists but process is dead, automatically removes stale lock and retries.
|
|
36
|
+
*
|
|
37
|
+
* WHY: Prevents race condition where two concurrent bdg commands spawn 2 daemons.
|
|
38
|
+
*
|
|
39
|
+
* @returns True if lock was acquired, false if another daemon startup is in progress
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* if (!acquireDaemonLock()) {
|
|
44
|
+
* console.error('Another daemon is starting up');
|
|
45
|
+
* process.exit(1);
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function acquireDaemonLock(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Release daemon lock.
|
|
52
|
+
*
|
|
53
|
+
* Removes the daemon lock file to allow other daemon startups.
|
|
54
|
+
* Safe to call multiple times (idempotent).
|
|
55
|
+
*/
|
|
56
|
+
export declare function releaseDaemonLock(): void;
|
|
57
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAmC5C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAUzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAmC3C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}
|