browser-debugger-cli 0.5.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -10
- package/dist/__tests__/smoke/error-handling.smoke.test.js +14 -59
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +1 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
- package/dist/__testutils__/testCleanup.js +1 -1
- package/dist/__testutils__/testCleanup.js.map +1 -1
- package/dist/cdp/protocol.d.ts +73 -0
- package/dist/cdp/protocol.d.ts.map +1 -0
- package/dist/cdp/protocol.js +121 -0
- package/dist/cdp/protocol.js.map +1 -0
- package/dist/cdp/schema.d.ts +159 -0
- package/dist/cdp/schema.d.ts.map +1 -0
- package/dist/cdp/schema.js +256 -0
- package/dist/cdp/schema.js.map +1 -0
- package/dist/cdp/types.d.ts +139 -0
- package/dist/cdp/types.d.ts.map +1 -0
- package/dist/cdp/types.js +7 -0
- package/dist/cdp/types.js.map +1 -0
- package/dist/commands/__tests__/cdp.contract.test.js +2 -2
- package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/commands/__tests__/domEval.contract.test.js +8 -4
- package/dist/commands/__tests__/domEval.contract.test.js.map +1 -1
- package/dist/commands/cdp.d.ts +10 -1
- package/dist/commands/cdp.d.ts.map +1 -1
- package/dist/commands/cdp.js +331 -27
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +7 -20
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +3 -8
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.d.ts.map +1 -1
- package/dist/commands/details.js +1 -1
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/{domEvalHelpers.d.ts → dom/evalHelpers.d.ts} +9 -19
- package/dist/commands/dom/evalHelpers.d.ts.map +1 -0
- package/dist/commands/{domEvalHelpers.js → dom/evalHelpers.js} +15 -14
- package/dist/commands/dom/evalHelpers.js.map +1 -0
- package/dist/commands/dom/formFillHelpers.d.ts +47 -0
- package/dist/commands/dom/formFillHelpers.d.ts.map +1 -0
- package/dist/commands/dom/formFillHelpers.js +185 -0
- package/dist/commands/dom/formFillHelpers.js.map +1 -0
- package/dist/commands/dom/formInteraction.d.ts +17 -0
- package/dist/commands/dom/formInteraction.d.ts.map +1 -0
- package/dist/commands/dom/formInteraction.js +239 -0
- package/dist/commands/dom/formInteraction.js.map +1 -0
- package/dist/commands/dom/formSubmitHelpers.d.ts +58 -0
- package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -0
- package/dist/commands/dom/formSubmitHelpers.js +176 -0
- package/dist/commands/dom/formSubmitHelpers.js.map +1 -0
- package/dist/commands/dom/helpers.d.ts +34 -0
- package/dist/commands/dom/helpers.d.ts.map +1 -0
- package/dist/commands/dom/helpers.js +244 -0
- package/dist/commands/dom/helpers.js.map +1 -0
- package/dist/commands/{dom.d.ts → dom/index.d.ts} +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -0
- package/dist/commands/dom/index.js +154 -0
- package/dist/commands/dom/index.js.map +1 -0
- package/dist/commands/dom/reactEventHelpers.d.ts +80 -0
- package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -0
- package/dist/commands/dom/reactEventHelpers.js +274 -0
- package/dist/commands/dom/reactEventHelpers.js.map +1 -0
- package/dist/commands/network.js +1 -1
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +52 -51
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +2 -0
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +16 -3
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +5 -3
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/daemonErrorHandler.d.ts +30 -0
- package/dist/commands/shared/daemonErrorHandler.d.ts.map +1 -0
- package/dist/commands/shared/daemonErrorHandler.js +32 -0
- package/dist/commands/shared/daemonErrorHandler.js.map +1 -0
- package/dist/commands/shared/{daemonSessionController.d.ts → startHelpers.d.ts} +7 -1
- package/dist/commands/shared/startHelpers.d.ts.map +1 -0
- package/dist/commands/shared/{daemonSessionController.js → startHelpers.js} +13 -5
- package/dist/commands/shared/startHelpers.js.map +1 -0
- package/dist/commands/shared/validation.d.ts +44 -0
- package/dist/commands/shared/validation.d.ts.map +1 -0
- package/dist/commands/shared/validation.js +68 -0
- package/dist/commands/shared/validation.js.map +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +23 -30
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +8 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +7 -18
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +53 -45
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands/types.d.ts +43 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +8 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +3 -1
- package/dist/commands.js.map +1 -1
- package/dist/connection/__tests__/cdp.contract.test.js +7 -7
- package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
- package/dist/connection/__tests__/handlers.unit.test.d.ts +11 -0
- package/dist/connection/__tests__/handlers.unit.test.d.ts.map +1 -0
- package/dist/connection/__tests__/handlers.unit.test.js +220 -0
- package/dist/connection/__tests__/handlers.unit.test.js.map +1 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +14 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.js +382 -0
- package/dist/connection/__tests__/pageReadiness.contract.test.js.map +1 -0
- package/dist/connection/__tests__/portReservation.contract.test.d.ts +14 -0
- package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +1 -0
- package/dist/connection/__tests__/portReservation.contract.test.js +250 -0
- package/dist/connection/__tests__/portReservation.contract.test.js.map +1 -0
- package/dist/connection/cdp.d.ts +34 -11
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +75 -46
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/config.d.ts +63 -0
- package/dist/connection/config.d.ts.map +1 -0
- package/dist/connection/config.js +46 -0
- package/dist/connection/config.js.map +1 -0
- package/dist/connection/errors.d.ts +6 -21
- package/dist/connection/errors.d.ts.map +1 -1
- package/dist/connection/errors.js +7 -26
- package/dist/connection/errors.js.map +1 -1
- package/dist/connection/events.d.ts +30 -0
- package/dist/connection/events.d.ts.map +1 -0
- package/dist/connection/events.js +8 -0
- package/dist/connection/events.js.map +1 -0
- package/dist/connection/handlers.d.ts +35 -5
- package/dist/connection/handlers.d.ts.map +1 -1
- package/dist/connection/handlers.js +34 -10
- package/dist/connection/handlers.js.map +1 -1
- package/dist/connection/launcher/binaryResolver.d.ts +40 -0
- package/dist/connection/launcher/binaryResolver.d.ts.map +1 -0
- package/dist/connection/launcher/binaryResolver.js +78 -0
- package/dist/connection/launcher/binaryResolver.js.map +1 -0
- package/dist/connection/launcher/flagsBuilder.d.ts +64 -0
- package/dist/connection/launcher/flagsBuilder.d.ts.map +1 -0
- package/dist/connection/launcher/flagsBuilder.js +84 -0
- package/dist/connection/launcher/flagsBuilder.js.map +1 -0
- package/dist/connection/launcher/preferencesLoader.d.ts +74 -0
- package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -0
- package/dist/connection/launcher/preferencesLoader.js +89 -0
- package/dist/connection/launcher/preferencesLoader.js.map +1 -0
- package/dist/connection/launcher.d.ts +24 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +38 -201
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts +8 -8
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +42 -58
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/connection/portReservation.d.ts +40 -0
- package/dist/connection/portReservation.d.ts.map +1 -0
- package/dist/connection/portReservation.js +55 -0
- package/dist/connection/portReservation.js.map +1 -0
- package/dist/connection/typed-cdp.d.ts +145 -0
- package/dist/connection/typed-cdp.d.ts.map +1 -0
- package/dist/connection/typed-cdp.js +120 -0
- package/dist/connection/typed-cdp.js.map +1 -0
- package/dist/connection/types.d.ts +103 -0
- package/dist/connection/types.d.ts.map +1 -0
- package/dist/connection/types.js +8 -0
- package/dist/connection/types.js.map +1 -0
- package/dist/constants.d.ts +0 -83
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -83
- package/dist/constants.js.map +1 -1
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.js +140 -0
- package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +276 -0
- package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +8 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js +290 -0
- package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +1 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +8 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.js +384 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -0
- package/dist/daemon/__tests__/ipcServer.contract.test.js +2 -1
- package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
- package/dist/daemon/errors.d.ts +65 -0
- package/dist/daemon/errors.d.ts.map +1 -0
- package/dist/daemon/errors.js +82 -0
- package/dist/daemon/errors.js.map +1 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts +32 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/CommandHandlers.js +93 -0
- package/dist/daemon/handlers/CommandHandlers.js.map +1 -0
- package/dist/daemon/handlers/QueryHandlers.d.ts +35 -0
- package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/QueryHandlers.js +176 -0
- package/dist/daemon/handlers/QueryHandlers.js.map +1 -0
- package/dist/daemon/handlers/SessionHandlers.d.ts +32 -0
- package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/SessionHandlers.js +227 -0
- package/dist/daemon/handlers/SessionHandlers.js.map +1 -0
- package/dist/daemon/handlers/pendingRequests.d.ts +50 -0
- package/dist/daemon/handlers/pendingRequests.d.ts.map +1 -0
- package/dist/daemon/handlers/pendingRequests.js +57 -0
- package/dist/daemon/handlers/pendingRequests.js.map +1 -0
- package/dist/daemon/handlers/requestHandlers.d.ts +51 -0
- package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -0
- package/dist/daemon/handlers/requestHandlers.js +61 -0
- package/dist/daemon/handlers/requestHandlers.js.map +1 -0
- package/dist/daemon/handlers/responseHandler.d.ts +42 -0
- package/dist/daemon/handlers/responseHandler.d.ts.map +1 -0
- package/dist/daemon/handlers/responseHandler.js +195 -0
- package/dist/daemon/handlers/responseHandler.js.map +1 -0
- package/dist/daemon/ipcServer.d.ts +19 -41
- package/dist/daemon/ipcServer.d.ts.map +1 -1
- package/dist/daemon/ipcServer.js +83 -655
- package/dist/daemon/ipcServer.js.map +1 -1
- package/dist/daemon/launcher.d.ts.map +1 -1
- package/dist/daemon/launcher.js +6 -3
- package/dist/daemon/launcher.js.map +1 -1
- package/dist/daemon/lifecycle/cdpSetup.d.ts +24 -0
- package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -0
- package/dist/daemon/lifecycle/cdpSetup.js +59 -0
- package/dist/daemon/lifecycle/cdpSetup.js.map +1 -0
- package/dist/daemon/lifecycle/chromeConnection.d.ts +17 -0
- package/dist/daemon/lifecycle/chromeConnection.d.ts.map +1 -0
- package/dist/daemon/lifecycle/chromeConnection.js +80 -0
- package/dist/daemon/lifecycle/chromeConnection.js.map +1 -0
- package/dist/daemon/lifecycle/signalHandlers.d.ts +14 -0
- package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -0
- package/dist/daemon/lifecycle/signalHandlers.js +35 -0
- package/dist/daemon/lifecycle/signalHandlers.js.map +1 -0
- package/dist/daemon/lifecycle/workerCleanup.d.ts +27 -0
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerCleanup.js +144 -0
- package/dist/daemon/lifecycle/workerCleanup.js.map +1 -0
- package/dist/daemon/lifecycle/workerConfig.d.ts +14 -0
- package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerConfig.js +66 -0
- package/dist/daemon/lifecycle/workerConfig.js.map +1 -0
- package/dist/daemon/lifecycle/workerIpc.d.ts +14 -0
- package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -0
- package/dist/daemon/lifecycle/workerIpc.js +87 -0
- package/dist/daemon/lifecycle/workerIpc.js.map +1 -0
- package/dist/daemon/server/JsonlParser.d.ts +31 -0
- package/dist/daemon/server/JsonlParser.d.ts.map +1 -0
- package/dist/daemon/server/JsonlParser.js +57 -0
- package/dist/daemon/server/JsonlParser.js.map +1 -0
- package/dist/daemon/server/SocketServer.d.ts.map +1 -1
- package/dist/daemon/server/SocketServer.js +2 -2
- package/dist/daemon/server/SocketServer.js.map +1 -1
- package/dist/daemon/server/WorkerManager.d.ts +3 -3
- package/dist/daemon/server/WorkerManager.d.ts.map +1 -1
- package/dist/daemon/server/WorkerManager.js +10 -19
- package/dist/daemon/server/WorkerManager.js.map +1 -1
- package/dist/daemon/services/SessionService.d.ts +87 -0
- package/dist/daemon/services/SessionService.d.ts.map +1 -0
- package/dist/daemon/services/SessionService.js +45 -0
- package/dist/daemon/services/SessionService.js.map +1 -0
- package/dist/daemon/startSession.d.ts.map +1 -1
- package/dist/daemon/startSession.js +54 -31
- package/dist/daemon/startSession.js.map +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +20 -215
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/daemon/worker.d.ts +3 -12
- package/dist/daemon/worker.d.ts.map +1 -1
- package/dist/daemon/worker.js +47 -367
- package/dist/daemon/worker.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.d.ts +0 -15
- package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.js +8 -23
- package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
- package/dist/ipc/__tests__/errors.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/errors.unit.test.js +77 -0
- package/dist/ipc/__tests__/errors.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/guards.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/guards.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/guards.unit.test.js +73 -0
- package/dist/ipc/__tests__/guards.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/jsonl.unit.test.js +85 -0
- package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -0
- package/dist/ipc/__tests__/validation.unit.test.d.ts +7 -0
- package/dist/ipc/__tests__/validation.unit.test.d.ts.map +1 -0
- package/dist/ipc/__tests__/validation.unit.test.js +60 -0
- package/dist/ipc/__tests__/validation.unit.test.js.map +1 -0
- package/dist/ipc/client.d.ts +93 -84
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +121 -192
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/index.d.ts +17 -0
- package/dist/ipc/index.d.ts.map +1 -0
- package/dist/ipc/index.js +23 -0
- package/dist/ipc/index.js.map +1 -0
- package/dist/ipc/protocol/commands.d.ts +144 -0
- package/dist/ipc/protocol/commands.d.ts.map +1 -0
- package/dist/ipc/protocol/commands.js +23 -0
- package/dist/ipc/protocol/commands.js.map +1 -0
- package/dist/ipc/protocol/guards.d.ts +47 -0
- package/dist/ipc/protocol/guards.d.ts.map +1 -0
- package/dist/ipc/protocol/guards.js +62 -0
- package/dist/ipc/protocol/guards.js.map +1 -0
- package/dist/ipc/protocol/index.d.ts +9 -0
- package/dist/ipc/protocol/index.d.ts.map +1 -0
- package/dist/ipc/protocol/index.js +8 -0
- package/dist/ipc/protocol/index.js.map +1 -0
- package/dist/ipc/protocol/messages.d.ts +64 -0
- package/dist/ipc/protocol/messages.d.ts.map +1 -0
- package/dist/ipc/protocol/messages.js +8 -0
- package/dist/ipc/protocol/messages.js.map +1 -0
- package/dist/ipc/session/errors.d.ts +25 -0
- package/dist/ipc/session/errors.d.ts.map +1 -0
- package/dist/ipc/{types.js → session/errors.js} +11 -6
- package/dist/ipc/session/errors.js.map +1 -0
- package/dist/ipc/session/index.d.ts +16 -0
- package/dist/ipc/session/index.d.ts.map +1 -0
- package/dist/ipc/session/index.js +7 -0
- package/dist/ipc/session/index.js.map +1 -0
- package/dist/ipc/session/lifecycle.d.ts +125 -0
- package/dist/ipc/session/lifecycle.d.ts.map +1 -0
- package/dist/ipc/session/lifecycle.js +7 -0
- package/dist/ipc/session/lifecycle.js.map +1 -0
- package/dist/ipc/session/queries.d.ts +94 -0
- package/dist/ipc/session/queries.d.ts.map +1 -0
- package/dist/ipc/session/queries.js +7 -0
- package/dist/ipc/session/queries.js.map +1 -0
- package/dist/ipc/session/types.d.ts +28 -0
- package/dist/ipc/session/types.d.ts.map +1 -0
- package/dist/ipc/session/types.js +7 -0
- package/dist/ipc/session/types.js.map +1 -0
- package/dist/ipc/transport/IPCError.d.ts +82 -0
- package/dist/ipc/transport/IPCError.d.ts.map +1 -0
- package/dist/ipc/transport/IPCError.js +109 -0
- package/dist/ipc/transport/IPCError.js.map +1 -0
- package/dist/ipc/transport/errors.d.ts +11 -0
- package/dist/ipc/transport/errors.d.ts.map +1 -0
- package/dist/ipc/transport/errors.js +28 -0
- package/dist/ipc/transport/errors.js.map +1 -0
- package/dist/ipc/transport/index.d.ts +16 -0
- package/dist/ipc/transport/index.d.ts.map +1 -0
- package/dist/ipc/transport/index.js +77 -0
- package/dist/ipc/transport/index.js.map +1 -0
- package/dist/ipc/transport/jsonl.d.ts +23 -0
- package/dist/ipc/transport/jsonl.d.ts.map +1 -0
- package/dist/ipc/transport/jsonl.js +36 -0
- package/dist/ipc/transport/jsonl.js.map +1 -0
- package/dist/ipc/transport/socket.d.ts +27 -0
- package/dist/ipc/transport/socket.d.ts.map +1 -0
- package/dist/ipc/transport/socket.js +49 -0
- package/dist/ipc/transport/socket.js.map +1 -0
- package/dist/ipc/transport/validation.d.ts +21 -0
- package/dist/ipc/transport/validation.d.ts.map +1 -0
- package/dist/ipc/transport/validation.js +23 -0
- package/dist/ipc/transport/validation.js.map +1 -0
- package/dist/ipc/utils/errors.d.ts +25 -0
- package/dist/ipc/utils/errors.d.ts.map +1 -0
- package/dist/ipc/utils/errors.js +29 -0
- package/dist/ipc/utils/errors.js.map +1 -0
- package/dist/ipc/utils/index.d.ts +12 -0
- package/dist/ipc/utils/index.d.ts.map +1 -0
- package/dist/ipc/utils/index.js +11 -0
- package/dist/ipc/utils/index.js.map +1 -0
- package/dist/ipc/utils/requestId.d.ts +23 -0
- package/dist/ipc/utils/requestId.d.ts.map +1 -0
- package/dist/ipc/utils/requestId.js +27 -0
- package/dist/ipc/utils/requestId.js.map +1 -0
- package/dist/ipc/utils/responseValidator.d.ts.map +1 -0
- package/dist/ipc/{responseValidator.js → utils/responseValidator.js} +2 -1
- package/dist/ipc/utils/responseValidator.js.map +1 -0
- package/dist/ipc/utils/session.d.ts +36 -0
- package/dist/ipc/utils/session.d.ts.map +1 -0
- package/dist/ipc/utils/session.js +37 -0
- package/dist/ipc/utils/session.js.map +1 -0
- package/dist/ipc/utils/types.d.ts +17 -0
- package/dist/ipc/utils/types.d.ts.map +1 -0
- package/dist/ipc/utils/types.js +7 -0
- package/dist/ipc/utils/types.js.map +1 -0
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts +7 -0
- package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/chrome-cache.contract.test.js +77 -0
- package/dist/session/__tests__/chrome-cache.contract.test.js.map +1 -0
- package/dist/session/__tests__/cleanup.contract.test.d.ts +7 -0
- package/dist/session/__tests__/cleanup.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/cleanup.contract.test.js +84 -0
- package/dist/session/__tests__/cleanup.contract.test.js.map +1 -0
- package/dist/session/__tests__/lock.contract.test.d.ts +7 -0
- package/dist/session/__tests__/lock.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/lock.contract.test.js +77 -0
- package/dist/session/__tests__/lock.contract.test.js.map +1 -0
- package/dist/session/__tests__/metadata.contract.test.d.ts +7 -0
- package/dist/session/__tests__/metadata.contract.test.d.ts.map +1 -0
- package/dist/session/__tests__/metadata.contract.test.js +87 -0
- package/dist/session/__tests__/metadata.contract.test.js.map +1 -0
- package/dist/session/chrome.d.ts +20 -0
- package/dist/session/chrome.d.ts.map +1 -1
- package/dist/session/chrome.js +80 -16
- package/dist/session/chrome.js.map +1 -1
- package/dist/session/cleanup.d.ts +15 -2
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +100 -72
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/lock.d.ts.map +1 -1
- package/dist/session/lock.js +101 -90
- package/dist/session/lock.js.map +1 -1
- package/dist/session/metadata.d.ts +10 -3
- package/dist/session/metadata.d.ts.map +1 -1
- package/dist/session/metadata.js +24 -6
- package/dist/session/metadata.js.map +1 -1
- package/dist/session/paths.d.ts +0 -9
- package/dist/session/paths.d.ts.map +1 -1
- package/dist/session/paths.js +0 -11
- package/dist/session/paths.js.map +1 -1
- package/dist/session/pid.d.ts +15 -0
- package/dist/session/pid.d.ts.map +1 -1
- package/dist/session/pid.js +39 -21
- package/dist/session/pid.js.map +1 -1
- package/dist/session/process.d.ts +4 -41
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +4 -85
- package/dist/session/process.js.map +1 -1
- package/dist/session/statusData.d.ts +50 -0
- package/dist/session/statusData.d.ts.map +1 -0
- package/dist/session/statusData.js +51 -0
- package/dist/session/statusData.js.map +1 -0
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts +8 -0
- package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/navigation.contract.test.js +211 -0
- package/dist/telemetry/__tests__/navigation.contract.test.js.map +1 -0
- package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -20
- package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -1
- package/dist/telemetry/__tests__/network.contract.test.js +126 -157
- package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
- package/dist/telemetry/__tests__/utils.unit.test.d.ts +7 -0
- package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/utils.unit.test.js +91 -0
- package/dist/telemetry/__tests__/utils.unit.test.js.map +1 -0
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +19 -27
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/dialogs.d.ts.map +1 -1
- package/dist/telemetry/dialogs.js +4 -8
- package/dist/telemetry/dialogs.js.map +1 -1
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +51 -57
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/filters.d.ts +5 -18
- package/dist/telemetry/filters.d.ts.map +1 -1
- package/dist/telemetry/filters.js +36 -56
- package/dist/telemetry/filters.js.map +1 -1
- package/dist/telemetry/navigation.d.ts.map +1 -1
- package/dist/telemetry/navigation.js +5 -8
- package/dist/telemetry/navigation.js.map +1 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +105 -104
- package/dist/telemetry/network.js.map +1 -1
- package/dist/telemetry/utils.d.ts +85 -0
- package/dist/telemetry/utils.d.ts.map +1 -0
- package/dist/telemetry/utils.js +138 -0
- package/dist/telemetry/utils.js.map +1 -0
- package/dist/types/dom.d.ts +66 -0
- package/dist/types/dom.d.ts.map +1 -0
- package/dist/types/dom.js +8 -0
- package/dist/types/dom.js.map +1 -0
- package/dist/types.d.ts +15 -224
- package/dist/types.d.ts.map +1 -1
- package/dist/{commands/shared → ui}/OutputBuilder.d.ts +10 -2
- package/dist/ui/OutputBuilder.d.ts.map +1 -0
- package/dist/{commands/shared → ui}/OutputBuilder.js +8 -2
- package/dist/ui/OutputBuilder.js.map +1 -0
- package/dist/ui/errors/CommandError.d.ts +16 -2
- package/dist/ui/errors/CommandError.d.ts.map +1 -1
- package/dist/ui/errors/CommandError.js +2 -1
- package/dist/ui/errors/CommandError.js.map +1 -1
- package/dist/ui/errors/index.d.ts +2 -3
- package/dist/ui/errors/index.d.ts.map +1 -1
- package/dist/ui/errors/index.js +1 -3
- package/dist/ui/errors/index.js.map +1 -1
- package/dist/ui/errors/utils.d.ts +6 -0
- package/dist/ui/errors/utils.d.ts.map +1 -1
- package/dist/ui/errors/utils.js +8 -3
- package/dist/ui/errors/utils.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts +3 -18
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +4 -27
- package/dist/ui/formatters/dom.js.map +1 -1
- package/dist/ui/formatters/preview.d.ts +8 -8
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +18 -13
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/status.d.ts +1 -1
- package/dist/ui/formatters/status.d.ts.map +1 -1
- package/dist/ui/formatters/status.js +8 -30
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/formatting.d.ts +2 -270
- package/dist/ui/formatting.d.ts.map +1 -1
- package/dist/ui/formatting.js +8 -331
- package/dist/ui/formatting.js.map +1 -1
- package/dist/ui/logging/index.d.ts +1 -1
- package/dist/ui/logging/index.d.ts.map +1 -1
- package/dist/ui/logging/index.js +1 -1
- package/dist/ui/logging/index.js.map +1 -1
- package/dist/ui/logging/logger.d.ts +3 -23
- package/dist/ui/logging/logger.d.ts.map +1 -1
- package/dist/ui/logging/logger.js +2 -27
- package/dist/ui/logging/logger.js.map +1 -1
- package/dist/ui/messages/chrome.d.ts +15 -7
- package/dist/ui/messages/chrome.d.ts.map +1 -1
- package/dist/ui/messages/chrome.js +23 -32
- package/dist/ui/messages/chrome.js.map +1 -1
- package/dist/ui/messages/commands.d.ts +2 -18
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +5 -50
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/consoleMessages.d.ts +1 -1
- package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
- package/dist/ui/messages/consoleMessages.js +3 -6
- package/dist/ui/messages/consoleMessages.js.map +1 -1
- package/dist/ui/messages/debug.d.ts +0 -14
- package/dist/ui/messages/debug.d.ts.map +1 -1
- package/dist/ui/messages/debug.js +0 -18
- package/dist/ui/messages/debug.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +27 -34
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +17 -67
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/internal.d.ts +0 -7
- package/dist/ui/messages/internal.d.ts.map +1 -1
- package/dist/ui/messages/internal.js +0 -12
- package/dist/ui/messages/internal.js.map +1 -1
- package/dist/ui/messages/preview.d.ts +14 -1
- package/dist/ui/messages/preview.d.ts.map +1 -1
- package/dist/ui/messages/preview.js +24 -7
- package/dist/ui/messages/preview.js.map +1 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +11 -26
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/ui/messages/validation.d.ts +22 -4
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +25 -5
- package/dist/ui/messages/validation.js.map +1 -1
- package/dist/utils/__tests__/atomicFile.test.d.ts +2 -0
- package/dist/utils/__tests__/atomicFile.test.d.ts.map +1 -0
- package/dist/utils/__tests__/atomicFile.test.js +43 -0
- package/dist/utils/__tests__/atomicFile.test.js.map +1 -0
- package/dist/utils/__tests__/objects.test.d.ts +2 -0
- package/dist/utils/__tests__/objects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/objects.test.js +50 -0
- package/dist/utils/__tests__/objects.test.js.map +1 -0
- package/dist/utils/__tests__/session.contract.test.js +13 -3
- package/dist/utils/__tests__/session.contract.test.js.map +1 -1
- package/dist/utils/__tests__/url.test.d.ts +2 -0
- package/dist/utils/__tests__/url.test.d.ts.map +1 -0
- package/dist/utils/__tests__/url.test.js +42 -0
- package/dist/utils/__tests__/url.test.js.map +1 -0
- package/dist/utils/atomicFile.d.ts +31 -5
- package/dist/utils/atomicFile.d.ts.map +1 -1
- package/dist/utils/atomicFile.js +52 -13
- package/dist/utils/atomicFile.js.map +1 -1
- package/dist/utils/concurrency.d.ts +54 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +78 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/daemonErrors.d.ts +60 -0
- package/dist/utils/daemonErrors.d.ts.map +1 -0
- package/dist/utils/daemonErrors.js +58 -0
- package/dist/utils/daemonErrors.js.map +1 -0
- package/dist/utils/errors.d.ts +3 -57
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +3 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exitCodes.d.ts +41 -5
- package/dist/utils/exitCodes.d.ts.map +1 -1
- package/dist/utils/exitCodes.js +43 -9
- package/dist/utils/exitCodes.js.map +1 -1
- package/dist/utils/http.d.ts +9 -4
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +44 -10
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/levenshtein.d.ts +45 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +85 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/dist/utils/objects.d.ts +16 -1
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +16 -1
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/process.d.ts +45 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +91 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/url.d.ts +10 -3
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +42 -29
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/validation.d.ts +96 -7
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +122 -11
- package/dist/utils/validation.js.map +1 -1
- package/package.json +2 -1
- package/dist/cli/commands/__tests__/start.unit.test.d.ts +0 -2
- package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +0 -1
- package/dist/cli/commands/__tests__/start.unit.test.js +0 -131
- package/dist/cli/commands/__tests__/start.unit.test.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts +0 -9
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js +0 -148
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/details.d.ts +0 -9
- package/dist/cli/commands/details.d.ts.map +0 -1
- package/dist/cli/commands/details.js +0 -120
- package/dist/cli/commands/details.js.map +0 -1
- package/dist/cli/commands/peek.d.ts +0 -9
- package/dist/cli/commands/peek.d.ts.map +0 -1
- package/dist/cli/commands/peek.js +0 -64
- package/dist/cli/commands/peek.js.map +0 -1
- package/dist/cli/commands/query.d.ts +0 -9
- package/dist/cli/commands/query.d.ts.map +0 -1
- package/dist/cli/commands/query.js +0 -125
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -83
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -204
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -9
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -75
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/stop.d.ts +0 -9
- package/dist/cli/commands/stop.d.ts.map +0 -1
- package/dist/cli/commands/stop.js +0 -133
- package/dist/cli/commands/stop.js.map +0 -1
- package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
- package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/detailsFormatter.js +0 -63
- package/dist/cli/formatters/detailsFormatter.js.map +0 -1
- package/dist/cli/formatters/previewFormatter.d.ts +0 -27
- package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/previewFormatter.js +0 -155
- package/dist/cli/formatters/previewFormatter.js.map +0 -1
- package/dist/cli/formatters/statusFormatter.d.ts +0 -42
- package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/statusFormatter.js +0 -126
- package/dist/cli/formatters/statusFormatter.js.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
- package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.js +0 -50
- package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
- package/dist/cli/handlers/OutputBuilder.d.ts +0 -59
- package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
- package/dist/cli/handlers/OutputBuilder.js +0 -136
- package/dist/cli/handlers/OutputBuilder.js.map +0 -1
- package/dist/cli/handlers/OutputWriter.d.ts +0 -15
- package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
- package/dist/cli/handlers/OutputWriter.js +0 -34
- package/dist/cli/handlers/OutputWriter.js.map +0 -1
- package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
- package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
- package/dist/cli/handlers/PreviewWriter.js +0 -118
- package/dist/cli/handlers/PreviewWriter.js.map +0 -1
- package/dist/cli/handlers/SessionLock.d.ts +0 -16
- package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLock.js +0 -35
- package/dist/cli/handlers/SessionLock.js.map +0 -1
- package/dist/cli/handlers/SessionLoop.d.ts +0 -19
- package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLoop.js +0 -47
- package/dist/cli/handlers/SessionLoop.js.map +0 -1
- package/dist/cli/handlers/ShutdownController.d.ts +0 -41
- package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
- package/dist/cli/handlers/ShutdownController.js +0 -94
- package/dist/cli/handlers/ShutdownController.js.map +0 -1
- package/dist/cli/handlers/SignalHandler.d.ts +0 -35
- package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
- package/dist/cli/handlers/SignalHandler.js +0 -81
- package/dist/cli/handlers/SignalHandler.js.map +0 -1
- package/dist/cli/handlers/TargetSetup.d.ts +0 -42
- package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
- package/dist/cli/handlers/TargetSetup.js +0 -87
- package/dist/cli/handlers/TargetSetup.js.map +0 -1
- package/dist/cli/handlers/sessionController.d.ts +0 -62
- package/dist/cli/handlers/sessionController.d.ts.map +0 -1
- package/dist/cli/handlers/sessionController.js +0 -316
- package/dist/cli/handlers/sessionController.js.map +0 -1
- package/dist/cli/registry.d.ts +0 -11
- package/dist/cli/registry.d.ts.map +0 -1
- package/dist/cli/registry.js +0 -21
- package/dist/cli/registry.js.map +0 -1
- package/dist/collectors/console.d.ts +0 -19
- package/dist/collectors/console.d.ts.map +0 -1
- package/dist/collectors/console.js +0 -87
- package/dist/collectors/console.js.map +0 -1
- package/dist/collectors/dom.d.ts +0 -21
- package/dist/collectors/dom.d.ts.map +0 -1
- package/dist/collectors/dom.js +0 -99
- package/dist/collectors/dom.js.map +0 -1
- package/dist/collectors/network.d.ts +0 -32
- package/dist/collectors/network.d.ts.map +0 -1
- package/dist/collectors/network.js +0 -191
- package/dist/collectors/network.js.map +0 -1
- package/dist/commands/dom.d.ts.map +0 -1
- package/dist/commands/dom.js +0 -243
- package/dist/commands/dom.js.map +0 -1
- package/dist/commands/domEvalHelpers.d.ts.map +0 -1
- package/dist/commands/domEvalHelpers.js.map +0 -1
- package/dist/commands/domOptionsBuilder.d.ts +0 -67
- package/dist/commands/domOptionsBuilder.d.ts.map +0 -1
- package/dist/commands/domOptionsBuilder.js +0 -86
- package/dist/commands/domOptionsBuilder.js.map +0 -1
- package/dist/commands/domSelectorParser.d.ts +0 -20
- package/dist/commands/domSelectorParser.d.ts.map +0 -1
- package/dist/commands/domSelectorParser.js +0 -20
- package/dist/commands/domSelectorParser.js.map +0 -1
- package/dist/commands/shared/OutputBuilder.d.ts.map +0 -1
- package/dist/commands/shared/OutputBuilder.js.map +0 -1
- package/dist/commands/shared/daemonSessionController.d.ts.map +0 -1
- package/dist/commands/shared/daemonSessionController.js.map +0 -1
- package/dist/commands/shared/sessionController.d.ts +0 -21
- package/dist/commands/shared/sessionController.d.ts.map +0 -1
- package/dist/commands/shared/sessionController.js +0 -54
- package/dist/commands/shared/sessionController.js.map +0 -1
- package/dist/connection/__tests__/finder.contract.test.d.ts +0 -2
- package/dist/connection/__tests__/finder.contract.test.d.ts.map +0 -1
- package/dist/connection/__tests__/finder.contract.test.js +0 -239
- package/dist/connection/__tests__/finder.contract.test.js.map +0 -1
- package/dist/connection/domOperations.d.ts +0 -48
- package/dist/connection/domOperations.d.ts.map +0 -1
- package/dist/connection/domOperations.js +0 -104
- package/dist/connection/domOperations.js.map +0 -1
- package/dist/connection/finder.d.ts +0 -12
- package/dist/connection/finder.d.ts.map +0 -1
- package/dist/connection/finder.js +0 -17
- package/dist/connection/finder.js.map +0 -1
- package/dist/connection/tabs.d.ts +0 -52
- package/dist/connection/tabs.d.ts.map +0 -1
- package/dist/connection/tabs.js +0 -227
- package/dist/connection/tabs.js.map +0 -1
- package/dist/help/machineReadableHelp.d.ts +0 -100
- package/dist/help/machineReadableHelp.d.ts.map +0 -1
- package/dist/help/machineReadableHelp.js +0 -139
- package/dist/help/machineReadableHelp.js.map +0 -1
- package/dist/ipc/commands.d.ts +0 -260
- package/dist/ipc/commands.d.ts.map +0 -1
- package/dist/ipc/commands.js +0 -77
- package/dist/ipc/commands.js.map +0 -1
- package/dist/ipc/responseValidator.d.ts.map +0 -1
- package/dist/ipc/responseValidator.js.map +0 -1
- package/dist/ipc/types.d.ts +0 -226
- package/dist/ipc/types.d.ts.map +0 -1
- package/dist/ipc/types.js.map +0 -1
- package/dist/session/BdgSession.d.ts +0 -91
- package/dist/session/BdgSession.d.ts.map +0 -1
- package/dist/session/BdgSession.js +0 -230
- package/dist/session/BdgSession.js.map +0 -1
- package/dist/session/fileOps.d.ts +0 -25
- package/dist/session/fileOps.d.ts.map +0 -1
- package/dist/session/fileOps.js +0 -39
- package/dist/session/fileOps.js.map +0 -1
- package/dist/session/queryCache.d.ts +0 -36
- package/dist/session/queryCache.d.ts.map +0 -1
- package/dist/session/queryCache.js +0 -66
- package/dist/session/queryCache.js.map +0 -1
- package/dist/ui/errors/SystemErrors.d.ts +0 -22
- package/dist/ui/errors/SystemErrors.d.ts.map +0 -1
- package/dist/ui/errors/SystemErrors.js +0 -23
- package/dist/ui/errors/SystemErrors.js.map +0 -1
- package/dist/ui/errors.d.ts +0 -39
- package/dist/ui/errors.d.ts.map +0 -1
- package/dist/ui/errors.js +0 -48
- package/dist/ui/errors.js.map +0 -1
- package/dist/ui/messages/deprecation.d.ts +0 -30
- package/dist/ui/messages/deprecation.d.ts.map +0 -1
- package/dist/ui/messages/deprecation.js +0 -49
- package/dist/ui/messages/deprecation.js.map +0 -1
- package/dist/ui/messages/index.d.ts +0 -12
- package/dist/ui/messages/index.d.ts.map +0 -1
- package/dist/ui/messages/index.js +0 -12
- package/dist/ui/messages/index.js.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.d.ts +0 -2
- package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.js +0 -239
- package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
- package/dist/utils/cdpHandlers.d.ts +0 -31
- package/dist/utils/cdpHandlers.d.ts.map +0 -1
- package/dist/utils/cdpHandlers.js +0 -38
- package/dist/utils/cdpHandlers.js.map +0 -1
- package/dist/utils/chromeDiagnostics.d.ts +0 -16
- package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
- package/dist/utils/chromeDiagnostics.js +0 -37
- package/dist/utils/chromeDiagnostics.js.map +0 -1
- package/dist/utils/filters.d.ts +0 -148
- package/dist/utils/filters.d.ts.map +0 -1
- package/dist/utils/filters.js +0 -358
- package/dist/utils/filters.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -98
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -93
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/pageReadiness.d.ts +0 -46
- package/dist/utils/pageReadiness.d.ts.map +0 -1
- package/dist/utils/pageReadiness.js +0 -270
- package/dist/utils/pageReadiness.js.map +0 -1
- package/dist/utils/session.d.ts +0 -200
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -498
- package/dist/utils/session.js.map +0 -1
- /package/dist/ipc/{responseValidator.d.ts → utils/responseValidator.d.ts} +0 -0
package/dist/session/cleanup.js
CHANGED
|
@@ -5,35 +5,21 @@
|
|
|
5
5
|
* WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
|
-
import { getErrorMessage } from '../
|
|
8
|
+
import { getErrorMessage } from '../connection/errors.js';
|
|
9
9
|
import { createLogger } from '../ui/logging/index.js';
|
|
10
10
|
import { readChromePid, clearChromePid } from './chrome.js';
|
|
11
|
-
import { safeDeleteFile } from './fileOps.js';
|
|
12
11
|
import { acquireSessionLock, releaseSessionLock } from './lock.js';
|
|
13
12
|
import { getSessionFilePath, ensureSessionDir } from './paths.js';
|
|
14
|
-
import { readPid, cleanupPidFile } from './pid.js';
|
|
13
|
+
import { readPid, cleanupPidFile, readPidFromFile } from './pid.js';
|
|
15
14
|
import { isProcessAlive, killChromeProcess } from './process.js';
|
|
16
15
|
const log = createLogger('cleanup');
|
|
17
|
-
function readPidFromFile(filePath) {
|
|
18
|
-
if (!fs.existsSync(filePath)) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const pidStr = fs.readFileSync(filePath, 'utf-8').trim();
|
|
23
|
-
const pid = parseInt(pidStr, 10);
|
|
24
|
-
return Number.isNaN(pid) ? null : pid;
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
16
|
function killOrphanedWorker(pid) {
|
|
31
17
|
try {
|
|
32
18
|
process.kill(pid, 'SIGKILL');
|
|
33
|
-
log(`Force killed orphaned worker process ${pid}`);
|
|
19
|
+
log.info(`Force killed orphaned worker process ${pid}`);
|
|
34
20
|
}
|
|
35
21
|
catch (error) {
|
|
36
|
-
log(`Failed to kill orphaned worker process ${pid}: ${getErrorMessage(error)}`);
|
|
22
|
+
log.info(`Failed to kill orphaned worker process ${pid}: ${getErrorMessage(error)}`);
|
|
37
23
|
}
|
|
38
24
|
}
|
|
39
25
|
function killCachedChromeProcess(reason) {
|
|
@@ -41,14 +27,14 @@ function killCachedChromeProcess(reason) {
|
|
|
41
27
|
if (!chromePid) {
|
|
42
28
|
return;
|
|
43
29
|
}
|
|
44
|
-
log(`Killing cached Chrome process ${chromePid} (${reason})`);
|
|
30
|
+
log.info(`Killing cached Chrome process ${chromePid} (${reason})`);
|
|
45
31
|
let killSucceeded = false;
|
|
46
32
|
try {
|
|
47
33
|
killChromeProcess(chromePid, 'SIGKILL');
|
|
48
34
|
killSucceeded = true;
|
|
49
35
|
}
|
|
50
36
|
catch (error) {
|
|
51
|
-
log(`Failed to kill Chrome process ${chromePid}: ${getErrorMessage(error)}`);
|
|
37
|
+
log.info(`Failed to kill Chrome process ${chromePid}: ${getErrorMessage(error)}`);
|
|
52
38
|
}
|
|
53
39
|
finally {
|
|
54
40
|
if (killSucceeded || !isProcessAlive(chromePid)) {
|
|
@@ -78,36 +64,29 @@ function killCachedChromeProcess(reason) {
|
|
|
78
64
|
*/
|
|
79
65
|
export function cleanupStaleSession() {
|
|
80
66
|
ensureSessionDir();
|
|
81
|
-
// Try to acquire the session lock
|
|
82
67
|
const lockAcquired = acquireSessionLock();
|
|
83
68
|
if (!lockAcquired) {
|
|
84
|
-
// Lock is held by another process - check if it's still alive
|
|
85
69
|
const lockPath = getSessionFilePath('LOCK');
|
|
86
70
|
try {
|
|
87
71
|
const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
|
|
88
72
|
const lockPid = parseInt(lockPidStr, 10);
|
|
89
|
-
if (!isNaN(lockPid) && isProcessAlive(lockPid)) {
|
|
90
|
-
// Active session is running - don't clean up
|
|
73
|
+
if (!Number.isNaN(lockPid) && isProcessAlive(lockPid)) {
|
|
91
74
|
return false;
|
|
92
75
|
}
|
|
93
76
|
}
|
|
94
|
-
catch {
|
|
95
|
-
|
|
77
|
+
catch (error) {
|
|
78
|
+
log.debug(`Failed to read stale session lock: ${getErrorMessage(error)}`);
|
|
96
79
|
}
|
|
97
|
-
// Lock exists but process is dead - force acquire
|
|
98
80
|
try {
|
|
99
|
-
fs.
|
|
81
|
+
fs.rmSync(lockPath, { force: true });
|
|
100
82
|
}
|
|
101
|
-
catch {
|
|
102
|
-
|
|
83
|
+
catch (error) {
|
|
84
|
+
log.debug(`Failed to remove stale session lock: ${getErrorMessage(error)}`);
|
|
103
85
|
}
|
|
104
|
-
// Try to acquire lock again
|
|
105
86
|
if (!acquireSessionLock()) {
|
|
106
|
-
// Still can't acquire - another process may have grabbed it
|
|
107
87
|
return false;
|
|
108
88
|
}
|
|
109
89
|
}
|
|
110
|
-
// We now hold the lock - check if session and daemon processes are alive
|
|
111
90
|
try {
|
|
112
91
|
const sessionPid = readPid();
|
|
113
92
|
let sessionAlive = sessionPid !== null && isProcessAlive(sessionPid);
|
|
@@ -115,7 +94,7 @@ export function cleanupStaleSession() {
|
|
|
115
94
|
const daemonPid = readPidFromFile(daemonPidPath);
|
|
116
95
|
const daemonAlive = daemonPid !== null && isProcessAlive(daemonPid);
|
|
117
96
|
if (sessionAlive && !daemonAlive && sessionPid !== null) {
|
|
118
|
-
log(`Detected orphaned worker process (PID ${sessionPid}) with no daemon - forcing cleanup`);
|
|
97
|
+
log.info(`Detected orphaned worker process (PID ${sessionPid}) with no daemon - forcing cleanup`);
|
|
119
98
|
killCachedChromeProcess('orphaned worker cleanup');
|
|
120
99
|
killOrphanedWorker(sessionPid);
|
|
121
100
|
sessionAlive = isProcessAlive(sessionPid);
|
|
@@ -126,44 +105,99 @@ export function cleanupStaleSession() {
|
|
|
126
105
|
if (daemonAlive) {
|
|
127
106
|
return false;
|
|
128
107
|
}
|
|
129
|
-
|
|
130
|
-
log('Removing stale session files...');
|
|
108
|
+
log.info('Removing stale session files...');
|
|
131
109
|
killCachedChromeProcess('stale session cleanup');
|
|
132
|
-
// Remove session PID
|
|
133
110
|
cleanupPidFile();
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
111
|
+
try {
|
|
112
|
+
fs.rmSync(getSessionFilePath('METADATA'), { force: true });
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
log.debug(`Failed to remove metadata file: ${getErrorMessage(error)}`);
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
fs.rmSync(daemonPidPath, { force: true });
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
log.debug(`Failed to remove daemon PID file: ${getErrorMessage(error)}`);
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
fs.rmSync(getSessionFilePath('DAEMON_SOCKET'), { force: true });
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
log.debug(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
fs.rmSync(getSessionFilePath('DAEMON_LOCK'), { force: true });
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
log.debug(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
134
|
+
}
|
|
135
|
+
log.info('Stale session cleanup complete');
|
|
140
136
|
return true;
|
|
141
137
|
}
|
|
142
138
|
finally {
|
|
143
|
-
// Always release the lock
|
|
144
139
|
releaseSessionLock();
|
|
145
140
|
}
|
|
146
141
|
}
|
|
147
142
|
/**
|
|
148
143
|
* Cleanup all session files after a session ends.
|
|
149
144
|
*
|
|
150
|
-
* Removes
|
|
145
|
+
* Removes session-specific files while preserving chrome-profile directory
|
|
146
|
+
* which contains user preferences, cookies, and cached data.
|
|
147
|
+
*
|
|
148
|
+
* Files removed:
|
|
149
|
+
* - session.pid (worker PID)
|
|
150
|
+
* - session.lock (session lock)
|
|
151
|
+
* - session.meta.json (session metadata)
|
|
152
|
+
* - daemon.pid, daemon.sock, daemon.lock (daemon files)
|
|
153
|
+
*
|
|
154
|
+
* Files preserved:
|
|
155
|
+
* - session.json (output file - user needs to read it)
|
|
156
|
+
* - chrome.pid (for emergency cleanup - auto-removed if Chrome is dead)
|
|
157
|
+
* - chrome-profile/ directory (cookies, preferences, cache)
|
|
158
|
+
*
|
|
151
159
|
* Safe to call multiple times (idempotent).
|
|
152
160
|
*
|
|
153
|
-
* WHY: Ensures clean slate for next session
|
|
161
|
+
* WHY: Ensures clean slate for next session while preserving user preferences.
|
|
154
162
|
*/
|
|
155
163
|
export function cleanupSession() {
|
|
164
|
+
// Clean up worker session files
|
|
156
165
|
cleanupPidFile();
|
|
157
166
|
releaseSessionLock();
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
// Remove session metadata
|
|
168
|
+
try {
|
|
169
|
+
fs.rmSync(getSessionFilePath('METADATA'), { force: true });
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
log.debug(`Failed to remove metadata file: ${getErrorMessage(error)}`);
|
|
173
|
+
}
|
|
174
|
+
// NOTE: chrome.pid is intentionally NOT removed here
|
|
175
|
+
// It's used for emergency cleanup (bdg cleanup --chrome)
|
|
176
|
+
// and is automatically cleaned when Chrome process dies (via readChromePid)
|
|
177
|
+
// Remove daemon files
|
|
178
|
+
try {
|
|
179
|
+
fs.rmSync(getSessionFilePath('DAEMON_PID'), { force: true });
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
log.debug(`Failed to remove daemon PID file: ${getErrorMessage(error)}`);
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
fs.rmSync(getSessionFilePath('DAEMON_SOCKET'), { force: true });
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
log.debug(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
fs.rmSync(getSessionFilePath('DAEMON_LOCK'), { force: true });
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
log.debug(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
166
195
|
}
|
|
196
|
+
// NOTE: session.json (OUTPUT) is intentionally NOT removed
|
|
197
|
+
// User needs to read the output file after session ends
|
|
198
|
+
// They can manually delete it or use `bdg cleanup` to remove all files
|
|
199
|
+
// NOTE: chrome-profile/ directory is intentionally NOT removed
|
|
200
|
+
// to preserve user preferences, cookies, and cached data across sessions
|
|
167
201
|
}
|
|
168
202
|
/**
|
|
169
203
|
* Cleanup stale daemon PID file if daemon process is dead.
|
|
@@ -180,48 +214,42 @@ export function cleanupStaleDaemonPid() {
|
|
|
180
214
|
try {
|
|
181
215
|
const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
|
|
182
216
|
const daemonPid = parseInt(daemonPidStr, 10);
|
|
183
|
-
|
|
184
|
-
if (!isNaN(daemonPid) && isProcessAlive(daemonPid)) {
|
|
217
|
+
if (!Number.isNaN(daemonPid) && isProcessAlive(daemonPid)) {
|
|
185
218
|
return false;
|
|
186
219
|
}
|
|
187
|
-
|
|
188
|
-
log(`Daemon not running (stale PID ${daemonPid}), cleaning up...`);
|
|
189
|
-
// Remove daemon PID
|
|
220
|
+
log.info(`Daemon not running (stale PID ${daemonPid}), cleaning up...`);
|
|
190
221
|
try {
|
|
191
|
-
fs.
|
|
192
|
-
log('Removed stale daemon PID file');
|
|
222
|
+
fs.rmSync(daemonPidPath, { force: true });
|
|
223
|
+
log.info('Removed stale daemon PID file');
|
|
193
224
|
}
|
|
194
225
|
catch (error) {
|
|
195
|
-
log(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
|
|
226
|
+
log.info(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
|
|
196
227
|
}
|
|
197
|
-
// Remove daemon socket
|
|
198
228
|
const socketPath = getSessionFilePath('DAEMON_SOCKET');
|
|
199
229
|
if (fs.existsSync(socketPath)) {
|
|
200
230
|
try {
|
|
201
|
-
fs.
|
|
202
|
-
log('Removed stale daemon socket');
|
|
231
|
+
fs.rmSync(socketPath, { force: true });
|
|
232
|
+
log.info('Removed stale daemon socket');
|
|
203
233
|
}
|
|
204
234
|
catch (error) {
|
|
205
|
-
log(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
235
|
+
log.info(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
|
|
206
236
|
}
|
|
207
237
|
}
|
|
208
|
-
// Remove daemon lock
|
|
209
238
|
const lockPath = getSessionFilePath('DAEMON_LOCK');
|
|
210
239
|
if (fs.existsSync(lockPath)) {
|
|
211
240
|
try {
|
|
212
|
-
fs.
|
|
213
|
-
log('Removed stale daemon lock');
|
|
241
|
+
fs.rmSync(lockPath, { force: true });
|
|
242
|
+
log.info('Removed stale daemon lock');
|
|
214
243
|
}
|
|
215
244
|
catch (error) {
|
|
216
|
-
log(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
245
|
+
log.info(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
|
|
217
246
|
}
|
|
218
247
|
}
|
|
219
248
|
return true;
|
|
220
249
|
}
|
|
221
250
|
catch {
|
|
222
|
-
// Can't read daemon PID - will clean it up
|
|
223
251
|
try {
|
|
224
|
-
fs.
|
|
252
|
+
fs.rmSync(daemonPidPath, { force: true });
|
|
225
253
|
return true;
|
|
226
254
|
}
|
|
227
255
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkHH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
package/dist/session/lock.js
CHANGED
|
@@ -5,8 +5,105 @@
|
|
|
5
5
|
* WHY: Prevents race conditions when multiple bdg processes try to start simultaneously.
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
|
+
import { getErrorMessage } from '../connection/errors.js';
|
|
9
|
+
import { createLogger } from '../ui/logging/index.js';
|
|
8
10
|
import { getSessionFilePath, ensureSessionDir } from './paths.js';
|
|
9
11
|
import { isProcessAlive } from './process.js';
|
|
12
|
+
const log = createLogger('session');
|
|
13
|
+
/**
|
|
14
|
+
* Type guard for NodeJS errno exceptions.
|
|
15
|
+
*
|
|
16
|
+
* @param e - Unknown error to check
|
|
17
|
+
* @returns True if error has errno code property
|
|
18
|
+
*/
|
|
19
|
+
function isErrnoException(e) {
|
|
20
|
+
return typeof e === 'object' && e !== null && 'code' in e;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read PID from lock file.
|
|
24
|
+
*
|
|
25
|
+
* @param lockPath - Path to lock file
|
|
26
|
+
* @returns Parsed PID or null if file doesn't exist or is invalid
|
|
27
|
+
*/
|
|
28
|
+
function readLockPid(lockPath) {
|
|
29
|
+
try {
|
|
30
|
+
const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
|
|
31
|
+
const lockPid = parseInt(lockPidStr, 10);
|
|
32
|
+
return Number.isNaN(lockPid) ? null : lockPid;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Try to remove stale lock file.
|
|
40
|
+
*
|
|
41
|
+
* @param lockPath - Path to lock file to remove
|
|
42
|
+
* @returns True if removal succeeded, false otherwise
|
|
43
|
+
*/
|
|
44
|
+
function removeStaleLock(lockPath) {
|
|
45
|
+
try {
|
|
46
|
+
fs.rmSync(lockPath, { force: true });
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Handle existing lock file by checking if owner process is still alive.
|
|
55
|
+
*
|
|
56
|
+
* @param lockPath - Path to existing lock file
|
|
57
|
+
* @param file - Lock file type for retry
|
|
58
|
+
* @returns True if lock was acquired after removing stale lock, false if active lock exists
|
|
59
|
+
*/
|
|
60
|
+
function handleExistingLock(lockPath, file) {
|
|
61
|
+
const lockPid = readLockPid(lockPath);
|
|
62
|
+
if (lockPid !== null && isProcessAlive(lockPid)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (!removeStaleLock(lockPath)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return acquireLock(file);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Acquire a lock file atomically.
|
|
72
|
+
*
|
|
73
|
+
* Uses exclusive file creation (wx flag) to ensure only one process can hold the lock.
|
|
74
|
+
* If lock exists but owner process is dead, automatically removes stale lock and retries.
|
|
75
|
+
*
|
|
76
|
+
* @param file - Lock file type to acquire
|
|
77
|
+
* @returns True if lock was acquired, false if another process holds it
|
|
78
|
+
*/
|
|
79
|
+
function acquireLock(file) {
|
|
80
|
+
ensureSessionDir();
|
|
81
|
+
const lockPath = getSessionFilePath(file);
|
|
82
|
+
try {
|
|
83
|
+
fs.writeFileSync(lockPath, process.pid.toString(), { flag: 'wx' });
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (isErrnoException(error) && error.code === 'EEXIST') {
|
|
88
|
+
return handleExistingLock(lockPath, file);
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Release a lock file.
|
|
95
|
+
*
|
|
96
|
+
* @param file - Lock file type to release
|
|
97
|
+
*/
|
|
98
|
+
function releaseLock(file) {
|
|
99
|
+
const lockPath = getSessionFilePath(file);
|
|
100
|
+
try {
|
|
101
|
+
fs.rmSync(lockPath, { force: true });
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
log.debug(`Failed to release lock file ${file}: ${getErrorMessage(error)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
10
107
|
/**
|
|
11
108
|
* Acquire session lock atomically.
|
|
12
109
|
*
|
|
@@ -24,42 +121,7 @@ import { isProcessAlive } from './process.js';
|
|
|
24
121
|
* ```
|
|
25
122
|
*/
|
|
26
123
|
export function acquireSessionLock() {
|
|
27
|
-
|
|
28
|
-
const lockPath = getSessionFilePath('LOCK');
|
|
29
|
-
try {
|
|
30
|
-
// 'wx' flag creates file exclusively - fails if exists
|
|
31
|
-
fs.writeFileSync(lockPath, process.pid.toString(), { flag: 'wx' });
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {
|
|
36
|
-
// Lock file exists - check if process is still alive
|
|
37
|
-
try {
|
|
38
|
-
const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
|
|
39
|
-
const lockPid = parseInt(lockPidStr, 10);
|
|
40
|
-
if (!isNaN(lockPid) && isProcessAlive(lockPid)) {
|
|
41
|
-
// Lock is held by active process
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
// Stale lock file - remove it and try again
|
|
46
|
-
fs.unlinkSync(lockPath);
|
|
47
|
-
return acquireSessionLock();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
// Can't read lock file - assume it's stale
|
|
52
|
-
try {
|
|
53
|
-
fs.unlinkSync(lockPath);
|
|
54
|
-
return acquireSessionLock();
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
124
|
+
return acquireLock('LOCK');
|
|
63
125
|
}
|
|
64
126
|
/**
|
|
65
127
|
* Release session lock.
|
|
@@ -68,15 +130,7 @@ export function acquireSessionLock() {
|
|
|
68
130
|
* Safe to call multiple times (idempotent).
|
|
69
131
|
*/
|
|
70
132
|
export function releaseSessionLock() {
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
if (fs.existsSync(lockPath)) {
|
|
74
|
-
fs.unlinkSync(lockPath);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
// Ignore errors during cleanup
|
|
79
|
-
}
|
|
133
|
+
releaseLock('LOCK');
|
|
80
134
|
}
|
|
81
135
|
/**
|
|
82
136
|
* Acquire daemon lock atomically.
|
|
@@ -97,42 +151,7 @@ export function releaseSessionLock() {
|
|
|
97
151
|
* ```
|
|
98
152
|
*/
|
|
99
153
|
export function acquireDaemonLock() {
|
|
100
|
-
|
|
101
|
-
const lockPath = getSessionFilePath('DAEMON_LOCK');
|
|
102
|
-
try {
|
|
103
|
-
// 'wx' flag creates file exclusively - fails if exists
|
|
104
|
-
fs.writeFileSync(lockPath, process.pid.toString(), { flag: 'wx' });
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {
|
|
109
|
-
// Lock file exists - check if process is still alive
|
|
110
|
-
try {
|
|
111
|
-
const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
|
|
112
|
-
const lockPid = parseInt(lockPidStr, 10);
|
|
113
|
-
if (!isNaN(lockPid) && isProcessAlive(lockPid)) {
|
|
114
|
-
// Lock is held by active process
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
// Stale lock file - remove it and try again
|
|
119
|
-
fs.unlinkSync(lockPath);
|
|
120
|
-
return acquireDaemonLock();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// Can't read lock file - assume it's stale
|
|
125
|
-
try {
|
|
126
|
-
fs.unlinkSync(lockPath);
|
|
127
|
-
return acquireDaemonLock();
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
154
|
+
return acquireLock('DAEMON_LOCK');
|
|
136
155
|
}
|
|
137
156
|
/**
|
|
138
157
|
* Release daemon lock.
|
|
@@ -141,14 +160,6 @@ export function acquireDaemonLock() {
|
|
|
141
160
|
* Safe to call multiple times (idempotent).
|
|
142
161
|
*/
|
|
143
162
|
export function releaseDaemonLock() {
|
|
144
|
-
|
|
145
|
-
try {
|
|
146
|
-
if (fs.existsSync(lockPath)) {
|
|
147
|
-
fs.unlinkSync(lockPath);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
// Ignore errors during cleanup
|
|
152
|
-
}
|
|
163
|
+
releaseLock('DAEMON_LOCK');
|
|
153
164
|
}
|
|
154
165
|
//# sourceMappingURL=lock.js.map
|
package/dist/session/lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAIpC;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,IAAc;IAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,IAAc;IACjC,gBAAgB,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,WAAW,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -17,6 +17,15 @@ export interface SessionMetadata {
|
|
|
17
17
|
webSocketDebuggerUrl?: string | undefined;
|
|
18
18
|
activeTelemetry?: TelemetryType[] | undefined;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Options for reading session metadata.
|
|
22
|
+
*/
|
|
23
|
+
export interface ReadSessionMetadataOptions {
|
|
24
|
+
/** Log a warning when metadata cannot be parsed */
|
|
25
|
+
warnOnCorruption?: boolean;
|
|
26
|
+
/** Delete corrupted metadata file to self-heal for subsequent runs */
|
|
27
|
+
selfHealOnCorruption?: boolean;
|
|
28
|
+
}
|
|
20
29
|
/**
|
|
21
30
|
* Write session metadata atomically.
|
|
22
31
|
*
|
|
@@ -53,7 +62,5 @@ export declare function writeSessionMetadata(metadata: SessionMetadata): void;
|
|
|
53
62
|
* }
|
|
54
63
|
* ```
|
|
55
64
|
*/
|
|
56
|
-
export declare function readSessionMetadata(options?:
|
|
57
|
-
warnOnCorruption?: boolean;
|
|
58
|
-
}): SessionMetadata | null;
|
|
65
|
+
export declare function readSessionMetadata(options?: ReadSessionMetadataOptions): SessionMetadata | null;
|
|
59
66
|
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/session/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/session/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,eAAe,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA6BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAIpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,eAAe,GAAG,IAAI,CAchG"}
|
package/dist/session/metadata.js
CHANGED
|
@@ -5,11 +5,33 @@
|
|
|
5
5
|
* WHY: Metadata persistence enables `bdg status` and other commands to inspect active sessions.
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
|
-
import { getErrorMessage } from '../
|
|
8
|
+
import { getErrorMessage } from '../connection/errors.js';
|
|
9
9
|
import { createLogger } from '../ui/logging/index.js';
|
|
10
10
|
import { AtomicFileWriter } from '../utils/atomicFile.js';
|
|
11
11
|
import { getSessionFilePath, ensureSessionDir } from './paths.js';
|
|
12
12
|
const log = createLogger('session');
|
|
13
|
+
/**
|
|
14
|
+
* Handle corrupted metadata file.
|
|
15
|
+
*
|
|
16
|
+
* @param metaPath - Path to metadata file
|
|
17
|
+
* @param error - Error that occurred during parsing
|
|
18
|
+
* @param options - Error handling options
|
|
19
|
+
*/
|
|
20
|
+
function handleCorruptedMetadata(metaPath, error, options) {
|
|
21
|
+
if (options?.warnOnCorruption) {
|
|
22
|
+
log.info(`Session metadata corrupted (cannot read details): ${getErrorMessage(error)}`);
|
|
23
|
+
log.info('Troubleshooting: Run "bdg cleanup" to remove corrupted files');
|
|
24
|
+
}
|
|
25
|
+
if (options?.selfHealOnCorruption) {
|
|
26
|
+
try {
|
|
27
|
+
fs.rmSync(metaPath, { force: true });
|
|
28
|
+
log.info('Removed corrupted session metadata file');
|
|
29
|
+
}
|
|
30
|
+
catch (deleteError) {
|
|
31
|
+
log.debug(`Failed to remove corrupted metadata: ${getErrorMessage(deleteError)}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
13
35
|
/**
|
|
14
36
|
* Write session metadata atomically.
|
|
15
37
|
*
|
|
@@ -60,11 +82,7 @@ export function readSessionMetadata(options) {
|
|
|
60
82
|
return JSON.parse(content);
|
|
61
83
|
}
|
|
62
84
|
catch (error) {
|
|
63
|
-
|
|
64
|
-
if (options?.warnOnCorruption) {
|
|
65
|
-
log(`Session metadata corrupted (cannot read details): ${getErrorMessage(error)}`);
|
|
66
|
-
log('Troubleshooting: Run "bdg cleanup" to remove corrupted files');
|
|
67
|
-
}
|
|
85
|
+
handleCorruptedMetadata(metaPath, error, options);
|
|
68
86
|
return null;
|
|
69
87
|
}
|
|
70
88
|
}
|