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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AA6CtE;;;GAGG;AACH,MAAM,WAAW,aACf,SAAQ,IAAI,CACV,mBAAmB,EACjB,UAAU,GACV,wBAAwB,GACxB,sBAAsB,GACtB,gBAAgB,GAChB,SAAS,GACT,cAAc,GACd,oBAAoB,GACpB,aAAa,GACb,YAAY,CACf;IACD,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kGAAkG;IAClG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5C,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgGvF"}
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
|
-
import * as
|
|
2
|
+
import * as os from 'os';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import * as chromeLauncher from 'chrome-launcher';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { createLogger } from '../ui/logging/index.js';
|
|
9
|
-
import { formatDiagnosticsForError, chromeLaunchStartMessage, chromeLaunchSuccessMessage, chromeUserDataDirMessage, invalidPortError, userDataDirError, prefsFileNotFoundError, invalidPrefsFormatError, prefsLoadError, chromeLaunchFailedError, chromeBinaryOverrideNotFound, chromeBinaryOverrideNotExecutable, } from '../ui/messages/chrome.js';
|
|
5
|
+
import { BDG_CHROME_PREFS, DEFAULT_CDP_PORT, CHROME_PROFILE_DIR } from '../constants.js';
|
|
6
|
+
import { DEFAULT_CHROME_LOG_LEVEL, DEFAULT_CHROME_HANDLE_SIGINT } from '../constants.js';
|
|
7
|
+
import { formatDiagnosticsForError, chromeLaunchSuccessMessage, chromeUserDataDirMessage, invalidPortError, userDataDirError, chromeLaunchFailedError, } from '../ui/messages/chrome.js';
|
|
10
8
|
import { filterDefined } from '../utils/objects.js';
|
|
9
|
+
import { isProcessAlive } from '../utils/process.js';
|
|
11
10
|
import { getChromeDiagnostics } from './diagnostics.js';
|
|
12
11
|
import { ChromeLaunchError, getErrorMessage } from './errors.js';
|
|
13
|
-
|
|
12
|
+
import { resolveChromeBinary } from './launcher/binaryResolver.js';
|
|
13
|
+
import { buildChromeFlags } from './launcher/flagsBuilder.js';
|
|
14
|
+
import { loadChromePrefs, ensureJSONCompatiblePrefs } from './launcher/preferencesLoader.js';
|
|
15
|
+
import { reservePort } from './portReservation.js';
|
|
16
|
+
/**
|
|
17
|
+
* Default logger instance for launcher (uses console).
|
|
18
|
+
*
|
|
19
|
+
* Can be overridden in tests or when launcher is used as a library.
|
|
20
|
+
*/
|
|
21
|
+
const defaultLogger = {
|
|
22
|
+
info: (msg) => console.error(msg),
|
|
23
|
+
debug: () => { }, // No-op by default
|
|
24
|
+
};
|
|
14
25
|
/**
|
|
15
26
|
* Get formatted Chrome diagnostics for error messages.
|
|
16
27
|
*
|
|
@@ -23,10 +34,6 @@ function getFormattedDiagnostics() {
|
|
|
23
34
|
const diagnostics = getChromeDiagnostics();
|
|
24
35
|
return formatDiagnosticsForError(diagnostics);
|
|
25
36
|
}
|
|
26
|
-
// Other Constants
|
|
27
|
-
const FILE_NOT_EXIST_ERROR = 'File does not exist';
|
|
28
|
-
const INVALID_JSON_STRUCTURE_ERROR = 'Invalid JSON structure';
|
|
29
|
-
const REMOTE_DEBUGGING_FLAG = (port) => `--remote-debugging-port=${port}`;
|
|
30
37
|
/**
|
|
31
38
|
* Launch Chrome with remote debugging enabled using chrome-launcher.
|
|
32
39
|
*
|
|
@@ -46,72 +53,38 @@ const REMOTE_DEBUGGING_FLAG = (port) => `--remote-debugging-port=${port}`;
|
|
|
46
53
|
* Chrome 136+ requires --user-data-dir with a non-default directory.
|
|
47
54
|
* Uses chrome-launcher for cross-platform Chrome detection and launching.
|
|
48
55
|
*/
|
|
49
|
-
/**
|
|
50
|
-
* Atomically reserve a port to prevent race conditions during Chrome launch.
|
|
51
|
-
*
|
|
52
|
-
* Creates a temporary TCP server on the port, which prevents other processes
|
|
53
|
-
* from binding to it. Returns a release function to free the port.
|
|
54
|
-
*
|
|
55
|
-
* @param port - Port number to reserve
|
|
56
|
-
* @returns Promise resolving to reservation object with release function
|
|
57
|
-
* @throws ChromeLaunchError If port is already in use
|
|
58
|
-
*/
|
|
59
|
-
async function reservePort(port) {
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
const server = net.createServer();
|
|
62
|
-
server.once('error', (err) => {
|
|
63
|
-
if (err.code === 'EADDRINUSE') {
|
|
64
|
-
// Port is already in use - provide helpful error message
|
|
65
|
-
reject(new ChromeLaunchError(`Port ${port} is already in use.\n\n` +
|
|
66
|
-
`This usually means Chrome is still running from a previous session.\n\n` +
|
|
67
|
-
`Try:\n` +
|
|
68
|
-
` - bdg cleanup --aggressive (kills all Chrome processes)\n` +
|
|
69
|
-
` - bdg cleanup --force (removes session files + kills Chrome on port ${port})\n` +
|
|
70
|
-
` - lsof -ti:${port} | xargs kill -9 (force kill process on port)\n` +
|
|
71
|
-
` - Use different port: bdg <url> --port ${port + 1}`));
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
reject(err);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
server.listen(port, '127.0.0.1', () => {
|
|
78
|
-
// Port successfully reserved - return release function
|
|
79
|
-
resolve({
|
|
80
|
-
release: () => {
|
|
81
|
-
server.close();
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
56
|
export async function launchChrome(options = {}) {
|
|
57
|
+
const logger = options.logger ?? defaultLogger;
|
|
88
58
|
const port = options.port ?? DEFAULT_CDP_PORT;
|
|
89
|
-
// Validate port range
|
|
90
59
|
if (port < 1 || port > 65535) {
|
|
91
60
|
throw new ChromeLaunchError(invalidPortError(port));
|
|
92
61
|
}
|
|
93
|
-
// Atomically check if port is available
|
|
94
|
-
// We must release BEFORE launching Chrome so Chrome can bind to it
|
|
95
62
|
const reservation = await reservePort(port);
|
|
96
|
-
// Immediately release - we just wanted to atomically check availability
|
|
97
|
-
// Chrome needs to bind to this port, so we can't hold the reservation
|
|
98
63
|
reservation.release();
|
|
99
|
-
const userDataDir = options.userDataDir ?? getPersistentUserDataDir();
|
|
100
|
-
|
|
101
|
-
|
|
64
|
+
const userDataDir = options.userDataDir ?? getPersistentUserDataDir(options.baseDir);
|
|
65
|
+
if (!fs.existsSync(userDataDir)) {
|
|
66
|
+
try {
|
|
67
|
+
fs.mkdirSync(userDataDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new ChromeLaunchError(userDataDirError(userDataDir, getErrorMessage(error)), error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
logger.info(`Launching Chrome on port ${port}...`);
|
|
74
|
+
logger.debug(chromeUserDataDirMessage(userDataDir));
|
|
102
75
|
const chromeOptions = buildChromeOptions(options);
|
|
103
76
|
const launcher = new chromeLauncher.Launcher(chromeOptions);
|
|
104
77
|
try {
|
|
105
78
|
const launchStart = Date.now();
|
|
106
79
|
await launcher.launch();
|
|
80
|
+
logger.info('Waiting for Chrome to be ready...');
|
|
107
81
|
await launcher.waitUntilReady();
|
|
108
82
|
const launchDurationMs = Date.now() - launchStart;
|
|
83
|
+
logger.info(`✓ Chrome ready (${launchDurationMs}ms)`);
|
|
109
84
|
const chromeProcessPid = launcher.pid ?? 0;
|
|
110
|
-
// Validate PID and process liveness before success
|
|
111
85
|
if (!chromeProcessPid || chromeProcessPid <= 0 || !isProcessAlive(chromeProcessPid)) {
|
|
112
86
|
launcher.kill();
|
|
113
87
|
launcher.destroyTmp();
|
|
114
|
-
// Get Chrome diagnostics once for error context
|
|
115
88
|
const diagnosticLines = getFormattedDiagnostics();
|
|
116
89
|
const errorType = !chromeProcessPid || chromeProcessPid <= 0
|
|
117
90
|
? 'failed to launch'
|
|
@@ -128,13 +101,11 @@ export async function launchChrome(options = {}) {
|
|
|
128
101
|
` - Kill conflicting process: kill $(lsof -ti:${port})\n` +
|
|
129
102
|
` - Use different port: bdg <url> --port ${port + 1}`);
|
|
130
103
|
}
|
|
131
|
-
|
|
132
|
-
log.info(chromeLaunchSuccessMessage(chromeProcessPid, launchDurationMs));
|
|
104
|
+
logger.info(chromeLaunchSuccessMessage(chromeProcessPid, launchDurationMs));
|
|
133
105
|
return {
|
|
134
106
|
pid: chromeProcessPid,
|
|
135
107
|
port: launcher.port ?? port,
|
|
136
108
|
userDataDir: launcher.userDataDir,
|
|
137
|
-
process: launcher.chromeProcess ?? null,
|
|
138
109
|
kill: async () => {
|
|
139
110
|
return Promise.resolve().then(() => {
|
|
140
111
|
launcher.kill();
|
|
@@ -146,11 +117,9 @@ export async function launchChrome(options = {}) {
|
|
|
146
117
|
catch (error) {
|
|
147
118
|
launcher.kill();
|
|
148
119
|
launcher.destroyTmp();
|
|
149
|
-
// If it's already a ChromeLaunchError with diagnostics, just re-throw
|
|
150
120
|
if (error instanceof ChromeLaunchError) {
|
|
151
121
|
throw error;
|
|
152
122
|
}
|
|
153
|
-
// For generic launch failures, add Chrome diagnostics
|
|
154
123
|
const diagnosticLines = getFormattedDiagnostics();
|
|
155
124
|
throw new ChromeLaunchError(`${chromeLaunchFailedError(getErrorMessage(error))}\n\n${diagnosticLines.join('\n')}`, error instanceof Error ? error : undefined);
|
|
156
125
|
}
|
|
@@ -162,13 +131,13 @@ export async function launchChrome(options = {}) {
|
|
|
162
131
|
* session storage) across bdg sessions. This prevents users from having to
|
|
163
132
|
* repeatedly log in or accept cookie consent dialogs during debugging workflows.
|
|
164
133
|
*
|
|
134
|
+
* @param baseDir - Optional base directory (defaults to OS temp dir). Allows injection for testing or custom locations.
|
|
165
135
|
* @returns Absolute path to persistent user-data-dir
|
|
166
136
|
* @throws Error if user data directory cannot be created due to permission issues
|
|
167
137
|
*/
|
|
168
|
-
function getPersistentUserDataDir() {
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
const userDataDir = path.join(baseDir, CHROME_PROFILE_DIR);
|
|
138
|
+
function getPersistentUserDataDir(baseDir) {
|
|
139
|
+
const dir = baseDir ?? os.tmpdir();
|
|
140
|
+
const userDataDir = path.join(dir, 'bdg-chrome', CHROME_PROFILE_DIR);
|
|
172
141
|
if (!fs.existsSync(userDataDir)) {
|
|
173
142
|
try {
|
|
174
143
|
fs.mkdirSync(userDataDir, { recursive: true });
|
|
@@ -190,137 +159,6 @@ function getPersistentUserDataDir() {
|
|
|
190
159
|
* @returns Chrome preferences object or undefined if no preferences specified
|
|
191
160
|
* @throws ChromeLaunchError if prefs file cannot be read, parsed, or doesn't exist
|
|
192
161
|
*/
|
|
193
|
-
function loadChromePrefs(options) {
|
|
194
|
-
if (options.prefsFile) {
|
|
195
|
-
// Validate file exists before attempting to read
|
|
196
|
-
if (!fs.existsSync(options.prefsFile)) {
|
|
197
|
-
throw new ChromeLaunchError(prefsFileNotFoundError(options.prefsFile), new Error(FILE_NOT_EXIST_ERROR));
|
|
198
|
-
}
|
|
199
|
-
try {
|
|
200
|
-
const prefsContent = fs.readFileSync(options.prefsFile, 'utf8');
|
|
201
|
-
const parsed = JSON.parse(prefsContent);
|
|
202
|
-
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
203
|
-
throw new ChromeLaunchError(invalidPrefsFormatError(options.prefsFile, typeof parsed), new Error(INVALID_JSON_STRUCTURE_ERROR));
|
|
204
|
-
}
|
|
205
|
-
return parsed;
|
|
206
|
-
}
|
|
207
|
-
catch (error) {
|
|
208
|
-
if (error instanceof ChromeLaunchError) {
|
|
209
|
-
throw error;
|
|
210
|
-
}
|
|
211
|
-
throw new ChromeLaunchError(prefsLoadError(options.prefsFile, getErrorMessage(error)), error instanceof Error ? error : undefined);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return options.prefs;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Resolve Chrome binary override from LaunchOptions or CHROME_PATH.
|
|
218
|
-
*
|
|
219
|
-
* When users explicitly set a Chrome binary we skip chrome-launcher's fallback
|
|
220
|
-
* auto-detection to ensure mismatched paths fail fast with actionable errors.
|
|
221
|
-
*
|
|
222
|
-
* @param options - Launch options which may include chromePath
|
|
223
|
-
* @returns Validated Chrome binary path or undefined if no override
|
|
224
|
-
* @throws ChromeLaunchError if override path is invalid or not executable
|
|
225
|
-
*/
|
|
226
|
-
function resolveChromeBinaryOverride(options) {
|
|
227
|
-
const override = options.chromePath ?? process.env['CHROME_PATH'];
|
|
228
|
-
if (!override) {
|
|
229
|
-
return undefined;
|
|
230
|
-
}
|
|
231
|
-
const chromePath = override.trim();
|
|
232
|
-
if (!chromePath) {
|
|
233
|
-
return undefined;
|
|
234
|
-
}
|
|
235
|
-
const sourceLabel = options.chromePath ? 'chromePath option' : 'CHROME_PATH';
|
|
236
|
-
if (!fs.existsSync(chromePath)) {
|
|
237
|
-
const diagnostics = getFormattedDiagnostics();
|
|
238
|
-
throw new ChromeLaunchError(`${chromeBinaryOverrideNotFound(chromePath, sourceLabel)}\n\n${diagnostics.join('\n')}`);
|
|
239
|
-
}
|
|
240
|
-
try {
|
|
241
|
-
const stats = fs.statSync(chromePath);
|
|
242
|
-
if (stats.isDirectory()) {
|
|
243
|
-
throw new ChromeLaunchError(chromeBinaryOverrideNotExecutable(chromePath, sourceLabel));
|
|
244
|
-
}
|
|
245
|
-
fs.accessSync(chromePath, fs.constants.X_OK);
|
|
246
|
-
}
|
|
247
|
-
catch (error) {
|
|
248
|
-
if (error instanceof ChromeLaunchError) {
|
|
249
|
-
throw error;
|
|
250
|
-
}
|
|
251
|
-
throw new ChromeLaunchError(`${chromeBinaryOverrideNotExecutable(chromePath, sourceLabel)}\n\n${getErrorMessage(error)}`, error instanceof Error ? error : undefined);
|
|
252
|
-
}
|
|
253
|
-
return chromePath;
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Check if running inside a Docker container
|
|
257
|
-
* @returns true if running in Docker, false otherwise
|
|
258
|
-
*/
|
|
259
|
-
function isDocker() {
|
|
260
|
-
try {
|
|
261
|
-
// Check for /.dockerenv file (most reliable indicator)
|
|
262
|
-
if (fs.existsSync('/.dockerenv')) {
|
|
263
|
-
return true;
|
|
264
|
-
}
|
|
265
|
-
// Check /proc/self/cgroup for docker/containerd indicators
|
|
266
|
-
if (fs.existsSync('/proc/self/cgroup')) {
|
|
267
|
-
const cgroup = fs.readFileSync('/proc/self/cgroup', 'utf8');
|
|
268
|
-
return cgroup.includes('docker') || cgroup.includes('containerd');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
// If we can't read these files, assume not Docker
|
|
273
|
-
}
|
|
274
|
-
return false;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Build Chrome flags array from launch options.
|
|
278
|
-
*
|
|
279
|
-
* Uses chrome-launcher default flags as base (unless ignoreDefaultFlags is true)
|
|
280
|
-
* and layers bdg-specific overrides on top. Headless mode uses the new headless
|
|
281
|
-
* implementation for better compatibility.
|
|
282
|
-
*
|
|
283
|
-
* When running in Docker, automatically adds GPU-disabling flags to work around
|
|
284
|
-
* graphics limitations in containerized environments.
|
|
285
|
-
*
|
|
286
|
-
* @param options - Launch options containing flag preferences
|
|
287
|
-
* @returns Array of Chrome command-line flags
|
|
288
|
-
*/
|
|
289
|
-
function buildChromeFlags(options) {
|
|
290
|
-
const port = options.port ?? DEFAULT_CDP_PORT;
|
|
291
|
-
const baseFlags = options.ignoreDefaultFlags ? [] : chromeLauncher.Launcher.defaultFlags();
|
|
292
|
-
const bdgFlags = [REMOTE_DEBUGGING_FLAG(port), ...BDG_CHROME_FLAGS];
|
|
293
|
-
// Add Docker-specific flags if running in a container
|
|
294
|
-
const dockerFlags = isDocker() ? DOCKER_CHROME_FLAGS : [];
|
|
295
|
-
// Headless flag must come first to ensure it's not overridden by other flags
|
|
296
|
-
if (options.headless) {
|
|
297
|
-
return [
|
|
298
|
-
HEADLESS_FLAG,
|
|
299
|
-
...baseFlags,
|
|
300
|
-
...bdgFlags,
|
|
301
|
-
...dockerFlags,
|
|
302
|
-
...(options.chromeFlags ?? []),
|
|
303
|
-
];
|
|
304
|
-
}
|
|
305
|
-
return [...baseFlags, ...bdgFlags, ...dockerFlags, ...(options.chromeFlags ?? [])];
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Type-safe conversion for Chrome preferences from unknown to JSONLike.
|
|
309
|
-
*
|
|
310
|
-
* chrome-launcher requires preferences to match its internal JSONLike type constraint
|
|
311
|
-
* for type safety. This conversion is safe because preferences should always be
|
|
312
|
-
* JSON-serializable values loaded from JSON files or constructed with compatible types.
|
|
313
|
-
*
|
|
314
|
-
* @param prefs - Preferences object with unknown values from JSON parsing
|
|
315
|
-
* @returns Preferences compatible with chrome-launcher's JSONLike constraint, or undefined
|
|
316
|
-
*/
|
|
317
|
-
function ensureJSONCompatiblePrefs(prefs) {
|
|
318
|
-
if (prefs === undefined) {
|
|
319
|
-
return undefined;
|
|
320
|
-
}
|
|
321
|
-
// Safe cast because preferences come from JSON.parse or compatible sources
|
|
322
|
-
return prefs;
|
|
323
|
-
}
|
|
324
162
|
/**
|
|
325
163
|
* Build chrome-launcher options from bdg launch options.
|
|
326
164
|
*
|
|
@@ -335,8 +173,7 @@ function ensureJSONCompatiblePrefs(prefs) {
|
|
|
335
173
|
function buildChromeOptions(options) {
|
|
336
174
|
const userPrefs = loadChromePrefs(options);
|
|
337
175
|
const userDataDir = options.userDataDir ?? getPersistentUserDataDir();
|
|
338
|
-
const chromePathOverride =
|
|
339
|
-
// User preferences take precedence over bdg defaults
|
|
176
|
+
const chromePathOverride = resolveChromeBinary(options);
|
|
340
177
|
const mergedPrefs = userPrefs ? { ...BDG_CHROME_PREFS, ...userPrefs } : BDG_CHROME_PREFS;
|
|
341
178
|
return {
|
|
342
179
|
logLevel: options.logLevel ?? DEFAULT_CHROME_LOG_LEVEL,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,cAAc,MAAM,iBAAiB,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,aAAa,GAAW;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,mBAAmB;CACrC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,uBAAuB;IAC9B,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAuCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAyB,EAAE;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAE9C,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,CAAC,OAAO,EAAE,CAAC;IAEtB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EACrD,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;QAEhC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,mBAAmB,gBAAgB,KAAK,CAAC,CAAC;QAEtD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpF,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,QAAQ,CAAC,UAAU,EAAE,CAAC;YAEtB,MAAM,eAAe,GAAG,uBAAuB,EAAE,CAAC;YAElD,MAAM,SAAS,GACb,CAAC,gBAAgB,IAAI,gBAAgB,IAAI,CAAC;gBACxC,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,+BAA+B,CAAC;YAEtC,MAAM,IAAI,iBAAiB,CACzB,UAAU,SAAS,UAAU,gBAAgB,OAAO;gBAClD,oBAAoB;gBACpB,YAAY,IAAI,8BAA8B,IAAI,KAAK;gBACvD,+BAA+B;gBAC/B,gCAAgC;gBAChC,mCAAmC;gBACnC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnC,QAAQ;gBACR,mBAAmB;gBACnB,iDAAiD,IAAI,KAAK;gBAC1D,4CAA4C,IAAI,GAAG,CAAC,EAAE,CACzD,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAE5E,OAAO;YACL,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI;YAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,IAAI,EAAE,KAAK,IAAmB,EAAE;gBAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACjC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChB,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChB,QAAQ,CAAC,UAAU,EAAE,CAAC;QAEtB,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GAAG,uBAAuB,EAAE,CAAC;QAElD,MAAM,IAAI,iBAAiB,CACzB,GAAG,uBAAuB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;GAUG;AACH;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,OAAsB;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,wBAAwB,EAAE,CAAC;IACtE,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEzF,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,wBAAwB;QACtD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,4BAA4B;QAClE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,KAAK;QACvD,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACtC,WAAW;QAEX,GAAG,aAAa,CAAC;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,yBAAyB,CAAC,WAAW,CAAC;YAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,kBAAkB;SAC/B,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Smart page readiness detection using
|
|
2
|
+
* Smart page readiness detection using fixed thresholds
|
|
3
3
|
*
|
|
4
|
-
* This module provides
|
|
4
|
+
* This module provides page load detection that works for most page types
|
|
5
5
|
* without configuration. It uses a three-phase approach:
|
|
6
6
|
* 1. Load event (baseline readiness)
|
|
7
|
-
* 2. Network stability (
|
|
8
|
-
* 3. DOM stability (
|
|
7
|
+
* 2. Network stability (200ms idle threshold)
|
|
8
|
+
* 3. DOM stability (300ms idle threshold)
|
|
9
9
|
*/
|
|
10
10
|
import type { CDPConnection } from '../connection/cdp.js';
|
|
11
11
|
/**
|
|
@@ -19,14 +19,14 @@ export interface PageReadinessOptions {
|
|
|
19
19
|
maxWaitMs?: number;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* Wait for page to be ready using
|
|
22
|
+
* Wait for page to be ready using fixed thresholds
|
|
23
23
|
*
|
|
24
24
|
* Strategy (always applied):
|
|
25
25
|
* 1. Wait for load event (baseline readiness)
|
|
26
|
-
* 2. Wait for network to stabilize (
|
|
27
|
-
* 3. Wait for DOM to stabilize (
|
|
26
|
+
* 2. Wait for network to stabilize (200ms idle threshold)
|
|
27
|
+
* 3. Wait for DOM to stabilize (300ms idle threshold)
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* Uses fixed thresholds that work well for most pages.
|
|
30
30
|
* No framework detection, no configuration needed.
|
|
31
31
|
* Works for static HTML, SPAs, and everything in between.
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageReadiness.d.ts","sourceRoot":"","sources":["../../src/connection/pageReadiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"pageReadiness.d.ts","sourceRoot":"","sources":["../../src/connection/pageReadiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Smart page readiness detection using
|
|
2
|
+
* Smart page readiness detection using fixed thresholds
|
|
3
3
|
*
|
|
4
|
-
* This module provides
|
|
4
|
+
* This module provides page load detection that works for most page types
|
|
5
5
|
* without configuration. It uses a three-phase approach:
|
|
6
6
|
* 1. Load event (baseline readiness)
|
|
7
|
-
* 2. Network stability (
|
|
8
|
-
* 3. DOM stability (
|
|
7
|
+
* 2. Network stability (200ms idle threshold)
|
|
8
|
+
* 3. DOM stability (300ms idle threshold)
|
|
9
9
|
*/
|
|
10
|
+
// Readiness Detection Thresholds
|
|
11
|
+
/** Network idle threshold in milliseconds - network is stable when no requests for this duration */
|
|
12
|
+
const NETWORK_IDLE_THRESHOLD_MS = 200;
|
|
13
|
+
/** DOM stable threshold in milliseconds - DOM is stable when no mutations for this duration */
|
|
14
|
+
const DOM_STABLE_THRESHOLD_MS = 300;
|
|
15
|
+
/** Interval for checking deadline expiration in milliseconds */
|
|
16
|
+
const DEADLINE_CHECK_INTERVAL_MS = 100;
|
|
17
|
+
/** Interval for checking network activity in milliseconds */
|
|
18
|
+
const NETWORK_CHECK_INTERVAL_MS = 50;
|
|
10
19
|
/**
|
|
11
|
-
* Wait for page to be ready using
|
|
20
|
+
* Wait for page to be ready using fixed thresholds
|
|
12
21
|
*
|
|
13
22
|
* Strategy (always applied):
|
|
14
23
|
* 1. Wait for load event (baseline readiness)
|
|
15
|
-
* 2. Wait for network to stabilize (
|
|
16
|
-
* 3. Wait for DOM to stabilize (
|
|
24
|
+
* 2. Wait for network to stabilize (200ms idle threshold)
|
|
25
|
+
* 3. Wait for DOM to stabilize (300ms idle threshold)
|
|
17
26
|
*
|
|
18
|
-
*
|
|
27
|
+
* Uses fixed thresholds that work well for most pages.
|
|
19
28
|
* No framework detection, no configuration needed.
|
|
20
29
|
* Works for static HTML, SPAs, and everything in between.
|
|
21
30
|
*
|
|
@@ -35,13 +44,10 @@ export async function waitForPageReady(cdp, options = {}) {
|
|
|
35
44
|
const maxWaitMs = options.maxWaitMs ?? 5000;
|
|
36
45
|
const deadline = Date.now() + maxWaitMs;
|
|
37
46
|
try {
|
|
38
|
-
// Phase 1: Wait for load event (baseline)
|
|
39
47
|
await waitForLoadEvent(cdp, deadline);
|
|
40
48
|
console.error('[readiness] ✓ Load event');
|
|
41
|
-
// Phase 2: Wait for network stability (always - modern web is async)
|
|
42
49
|
const networkIdleMs = await waitForNetworkStable(cdp, deadline);
|
|
43
50
|
console.error(`[readiness] ✓ Network stable (${networkIdleMs}ms idle)`);
|
|
44
|
-
// Phase 3: Wait for DOM stability (always - SPAs mutate after load)
|
|
45
51
|
const domIdleMs = await waitForDOMStable(cdp, deadline);
|
|
46
52
|
console.error(`[readiness] ✓ DOM stable (${domIdleMs}ms idle)`);
|
|
47
53
|
console.error('[readiness] ✓ Page ready');
|
|
@@ -49,7 +55,6 @@ export async function waitForPageReady(cdp, options = {}) {
|
|
|
49
55
|
catch (error) {
|
|
50
56
|
const message = error instanceof Error ? error.message : String(error);
|
|
51
57
|
console.error(`[readiness] ${message}, proceeding anyway`);
|
|
52
|
-
// Don't rethrow - allow session to continue
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
@@ -70,27 +75,25 @@ export async function waitForPageReady(cdp, options = {}) {
|
|
|
70
75
|
*/
|
|
71
76
|
async function waitForLoadEvent(cdp, deadline) {
|
|
72
77
|
await cdp.send('Page.enable');
|
|
73
|
-
// Check if page already loaded (handles Chrome pre-navigation)
|
|
74
78
|
try {
|
|
75
|
-
const result = await cdp.send('Runtime.evaluate', {
|
|
79
|
+
const result = (await cdp.send('Runtime.evaluate', {
|
|
76
80
|
expression: 'document.readyState',
|
|
77
81
|
returnByValue: true,
|
|
78
|
-
});
|
|
79
|
-
if (result.result
|
|
80
|
-
// Load event already fired
|
|
82
|
+
}));
|
|
83
|
+
if (result.result.value === 'complete') {
|
|
81
84
|
return;
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
|
-
catch {
|
|
85
|
-
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error(`[readiness] Failed to check document.readyState: ${error instanceof Error ? error.message : String(error)}`);
|
|
86
89
|
}
|
|
87
90
|
return new Promise((resolve, reject) => {
|
|
88
91
|
let timeout;
|
|
89
|
-
let
|
|
92
|
+
let cleanupHandler;
|
|
90
93
|
const cleanup = () => {
|
|
91
94
|
clearTimeout(timeout);
|
|
92
|
-
if (
|
|
93
|
-
|
|
95
|
+
if (cleanupHandler) {
|
|
96
|
+
cleanupHandler();
|
|
94
97
|
}
|
|
95
98
|
};
|
|
96
99
|
const checkDeadline = () => {
|
|
@@ -99,14 +102,14 @@ async function waitForLoadEvent(cdp, deadline) {
|
|
|
99
102
|
reject(new Error('Load event timeout'));
|
|
100
103
|
}
|
|
101
104
|
else {
|
|
102
|
-
timeout = setTimeout(checkDeadline,
|
|
105
|
+
timeout = setTimeout(checkDeadline, DEADLINE_CHECK_INTERVAL_MS);
|
|
103
106
|
}
|
|
104
107
|
};
|
|
105
108
|
const loadHandler = () => {
|
|
106
109
|
cleanup();
|
|
107
110
|
resolve();
|
|
108
111
|
};
|
|
109
|
-
|
|
112
|
+
cleanupHandler = cdp.on('Page.loadEventFired', loadHandler);
|
|
110
113
|
checkDeadline();
|
|
111
114
|
});
|
|
112
115
|
}
|
|
@@ -136,17 +139,9 @@ async function waitForNetworkStable(cdp, deadline) {
|
|
|
136
139
|
await cdp.send('Network.enable');
|
|
137
140
|
let activeRequests = 0;
|
|
138
141
|
let lastActivity = Date.now();
|
|
139
|
-
const intervals = [];
|
|
140
|
-
let lastRequestTime = Date.now();
|
|
141
|
-
// Track request patterns
|
|
142
142
|
const requestHandler = () => {
|
|
143
|
-
const now = Date.now();
|
|
144
|
-
const interval = now - lastRequestTime;
|
|
145
|
-
if (interval < 5000)
|
|
146
|
-
intervals.push(interval);
|
|
147
|
-
lastRequestTime = now;
|
|
148
143
|
activeRequests++;
|
|
149
|
-
lastActivity = now;
|
|
144
|
+
lastActivity = Date.now();
|
|
150
145
|
};
|
|
151
146
|
const finishHandler = () => {
|
|
152
147
|
activeRequests--;
|
|
@@ -154,29 +149,25 @@ async function waitForNetworkStable(cdp, deadline) {
|
|
|
154
149
|
lastActivity = Date.now();
|
|
155
150
|
}
|
|
156
151
|
};
|
|
157
|
-
const
|
|
158
|
-
const
|
|
159
|
-
const
|
|
152
|
+
const cleanupRequest = cdp.on('Network.requestWillBeSent', requestHandler);
|
|
153
|
+
const cleanupFinished = cdp.on('Network.loadingFinished', finishHandler);
|
|
154
|
+
const cleanupFailed = cdp.on('Network.loadingFailed', finishHandler);
|
|
160
155
|
try {
|
|
161
|
-
// Use fixed threshold for immediate detection
|
|
162
|
-
const idleThreshold = 200; // 200ms idle = network stable
|
|
163
|
-
// Detection phase: wait for stability
|
|
164
156
|
while (Date.now() < deadline) {
|
|
165
157
|
if (activeRequests === 0) {
|
|
166
158
|
const idleTime = Date.now() - lastActivity;
|
|
167
|
-
if (idleTime >=
|
|
159
|
+
if (idleTime >= NETWORK_IDLE_THRESHOLD_MS) {
|
|
168
160
|
return idleTime; // Success!
|
|
169
161
|
}
|
|
170
162
|
}
|
|
171
|
-
await delay(
|
|
163
|
+
await delay(NETWORK_CHECK_INTERVAL_MS);
|
|
172
164
|
}
|
|
173
165
|
throw new Error('Network stability timeout');
|
|
174
166
|
}
|
|
175
167
|
finally {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
cdp.off('Network.loadingFailed', loadingFailedId);
|
|
168
|
+
cleanupRequest();
|
|
169
|
+
cleanupFinished();
|
|
170
|
+
cleanupFailed();
|
|
180
171
|
}
|
|
181
172
|
}
|
|
182
173
|
/**
|
|
@@ -205,7 +196,6 @@ async function waitForNetworkStable(cdp, deadline) {
|
|
|
205
196
|
* @throws Error if deadline exceeded
|
|
206
197
|
*/
|
|
207
198
|
async function waitForDOMStable(cdp, deadline) {
|
|
208
|
-
// Inject mutation observer
|
|
209
199
|
await cdp.send('Runtime.evaluate', {
|
|
210
200
|
expression: `
|
|
211
201
|
window.__bdg_mutations = 0;
|
|
@@ -227,24 +217,20 @@ async function waitForDOMStable(cdp, deadline) {
|
|
|
227
217
|
`,
|
|
228
218
|
});
|
|
229
219
|
try {
|
|
230
|
-
// Use fixed threshold for immediate detection
|
|
231
|
-
const stableThreshold = 300; // 300ms no mutations = DOM stable
|
|
232
|
-
// Detection phase: wait for stability
|
|
233
220
|
while (Date.now() < deadline) {
|
|
234
|
-
const checkResult = await cdp.send('Runtime.evaluate', {
|
|
221
|
+
const checkResult = (await cdp.send('Runtime.evaluate', {
|
|
235
222
|
expression: 'Date.now() - window.__bdg_lastMutation',
|
|
236
223
|
returnByValue: true,
|
|
237
|
-
});
|
|
238
|
-
const timeSinceLastMutation = checkResult.result
|
|
239
|
-
if (timeSinceLastMutation >=
|
|
224
|
+
}));
|
|
225
|
+
const timeSinceLastMutation = checkResult.result.value ?? 0;
|
|
226
|
+
if (timeSinceLastMutation >= DOM_STABLE_THRESHOLD_MS) {
|
|
240
227
|
return timeSinceLastMutation; // Success!
|
|
241
228
|
}
|
|
242
|
-
await delay(
|
|
229
|
+
await delay(DEADLINE_CHECK_INTERVAL_MS);
|
|
243
230
|
}
|
|
244
231
|
throw new Error('DOM stability timeout');
|
|
245
232
|
}
|
|
246
233
|
finally {
|
|
247
|
-
// Cleanup observer
|
|
248
234
|
await cdp
|
|
249
235
|
.send('Runtime.evaluate', {
|
|
250
236
|
expression: `
|
|
@@ -254,9 +240,7 @@ async function waitForDOMStable(cdp, deadline) {
|
|
|
254
240
|
delete window.__bdg_lastMutation;
|
|
255
241
|
`,
|
|
256
242
|
})
|
|
257
|
-
.catch(() => {
|
|
258
|
-
// Ignore cleanup errors
|
|
259
|
-
});
|
|
243
|
+
.catch(() => { });
|
|
260
244
|
}
|
|
261
245
|
}
|
|
262
246
|
/**
|