browser-debugger-cli 0.6.0 → 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.
Files changed (653) hide show
  1. package/README.md +10 -6
  2. package/dist/__tests__/smoke/error-handling.smoke.test.js +14 -48
  3. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
  4. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +1 -1
  5. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
  6. package/dist/__testutils__/testCleanup.js +1 -1
  7. package/dist/__testutils__/testCleanup.js.map +1 -1
  8. package/dist/cdp/protocol.d.ts +0 -48
  9. package/dist/cdp/protocol.d.ts.map +1 -1
  10. package/dist/cdp/protocol.js +0 -94
  11. package/dist/cdp/protocol.js.map +1 -1
  12. package/dist/commands/__tests__/cdp.contract.test.js +2 -2
  13. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
  14. package/dist/commands/__tests__/domEval.contract.test.js +8 -4
  15. package/dist/commands/__tests__/domEval.contract.test.js.map +1 -1
  16. package/dist/commands/cdp.d.ts.map +1 -1
  17. package/dist/commands/cdp.js +4 -37
  18. package/dist/commands/cdp.js.map +1 -1
  19. package/dist/commands/cleanup.d.ts.map +1 -1
  20. package/dist/commands/cleanup.js +4 -17
  21. package/dist/commands/cleanup.js.map +1 -1
  22. package/dist/commands/console.d.ts.map +1 -1
  23. package/dist/commands/console.js +3 -8
  24. package/dist/commands/console.js.map +1 -1
  25. package/dist/commands/details.d.ts.map +1 -1
  26. package/dist/commands/details.js +1 -1
  27. package/dist/commands/details.js.map +1 -1
  28. package/dist/commands/{domEvalHelpers.d.ts → dom/evalHelpers.d.ts} +8 -5
  29. package/dist/commands/dom/evalHelpers.d.ts.map +1 -0
  30. package/dist/commands/{domEvalHelpers.js → dom/evalHelpers.js} +14 -13
  31. package/dist/commands/dom/evalHelpers.js.map +1 -0
  32. package/dist/commands/dom/formFillHelpers.d.ts +47 -0
  33. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -0
  34. package/dist/commands/dom/formFillHelpers.js +185 -0
  35. package/dist/commands/dom/formFillHelpers.js.map +1 -0
  36. package/dist/commands/dom/formInteraction.d.ts +17 -0
  37. package/dist/commands/dom/formInteraction.d.ts.map +1 -0
  38. package/dist/commands/dom/formInteraction.js +239 -0
  39. package/dist/commands/dom/formInteraction.js.map +1 -0
  40. package/dist/commands/dom/formSubmitHelpers.d.ts +58 -0
  41. package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -0
  42. package/dist/commands/dom/formSubmitHelpers.js +176 -0
  43. package/dist/commands/dom/formSubmitHelpers.js.map +1 -0
  44. package/dist/commands/dom/helpers.d.ts +34 -0
  45. package/dist/commands/dom/helpers.d.ts.map +1 -0
  46. package/dist/commands/dom/helpers.js +244 -0
  47. package/dist/commands/dom/helpers.js.map +1 -0
  48. package/dist/commands/{dom.d.ts → dom/index.d.ts} +1 -1
  49. package/dist/commands/dom/index.d.ts.map +1 -0
  50. package/dist/commands/{dom.js → dom/index.js} +33 -123
  51. package/dist/commands/dom/index.js.map +1 -0
  52. package/dist/commands/dom/reactEventHelpers.d.ts +80 -0
  53. package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -0
  54. package/dist/commands/dom/reactEventHelpers.js +274 -0
  55. package/dist/commands/dom/reactEventHelpers.js.map +1 -0
  56. package/dist/commands/network.js +1 -1
  57. package/dist/commands/network.js.map +1 -1
  58. package/dist/commands/peek.d.ts.map +1 -1
  59. package/dist/commands/peek.js +47 -52
  60. package/dist/commands/peek.js.map +1 -1
  61. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  62. package/dist/commands/shared/CommandRunner.js +3 -2
  63. package/dist/commands/shared/CommandRunner.js.map +1 -1
  64. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  65. package/dist/commands/shared/commonOptions.js +3 -1
  66. package/dist/commands/shared/commonOptions.js.map +1 -1
  67. package/dist/commands/shared/daemonErrorHandler.d.ts +30 -0
  68. package/dist/commands/shared/daemonErrorHandler.d.ts.map +1 -0
  69. package/dist/commands/shared/daemonErrorHandler.js +32 -0
  70. package/dist/commands/shared/daemonErrorHandler.js.map +1 -0
  71. package/dist/commands/shared/{daemonSessionController.d.ts → startHelpers.d.ts} +7 -1
  72. package/dist/commands/shared/startHelpers.d.ts.map +1 -0
  73. package/dist/commands/shared/{daemonSessionController.js → startHelpers.js} +13 -5
  74. package/dist/commands/shared/startHelpers.js.map +1 -0
  75. package/dist/commands/shared/validation.d.ts +44 -0
  76. package/dist/commands/shared/validation.d.ts.map +1 -0
  77. package/dist/commands/shared/validation.js +68 -0
  78. package/dist/commands/shared/validation.js.map +1 -0
  79. package/dist/commands/start.d.ts.map +1 -1
  80. package/dist/commands/start.js +9 -25
  81. package/dist/commands/start.js.map +1 -1
  82. package/dist/commands/status.d.ts.map +1 -1
  83. package/dist/commands/status.js +6 -4
  84. package/dist/commands/status.js.map +1 -1
  85. package/dist/commands/stop.d.ts.map +1 -1
  86. package/dist/commands/stop.js +5 -16
  87. package/dist/commands/stop.js.map +1 -1
  88. package/dist/commands/tail.d.ts.map +1 -1
  89. package/dist/commands/tail.js +49 -44
  90. package/dist/commands/tail.js.map +1 -1
  91. package/dist/commands/types.d.ts +43 -0
  92. package/dist/commands/types.d.ts.map +1 -0
  93. package/dist/commands/types.js +8 -0
  94. package/dist/commands/types.js.map +1 -0
  95. package/dist/commands.d.ts.map +1 -1
  96. package/dist/commands.js +3 -1
  97. package/dist/commands.js.map +1 -1
  98. package/dist/connection/__tests__/cdp.contract.test.js +7 -7
  99. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
  100. package/dist/connection/__tests__/handlers.unit.test.d.ts +11 -0
  101. package/dist/connection/__tests__/handlers.unit.test.d.ts.map +1 -0
  102. package/dist/connection/__tests__/handlers.unit.test.js +220 -0
  103. package/dist/connection/__tests__/handlers.unit.test.js.map +1 -0
  104. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +14 -0
  105. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +1 -0
  106. package/dist/connection/__tests__/pageReadiness.contract.test.js +382 -0
  107. package/dist/connection/__tests__/pageReadiness.contract.test.js.map +1 -0
  108. package/dist/connection/__tests__/portReservation.contract.test.d.ts +14 -0
  109. package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +1 -0
  110. package/dist/connection/__tests__/portReservation.contract.test.js +250 -0
  111. package/dist/connection/__tests__/portReservation.contract.test.js.map +1 -0
  112. package/dist/connection/cdp.d.ts +34 -11
  113. package/dist/connection/cdp.d.ts.map +1 -1
  114. package/dist/connection/cdp.js +61 -45
  115. package/dist/connection/cdp.js.map +1 -1
  116. package/dist/connection/config.d.ts +63 -0
  117. package/dist/connection/config.d.ts.map +1 -0
  118. package/dist/connection/config.js +46 -0
  119. package/dist/connection/config.js.map +1 -0
  120. package/dist/connection/errors.d.ts +6 -21
  121. package/dist/connection/errors.d.ts.map +1 -1
  122. package/dist/connection/errors.js +7 -26
  123. package/dist/connection/errors.js.map +1 -1
  124. package/dist/connection/events.d.ts +30 -0
  125. package/dist/connection/events.d.ts.map +1 -0
  126. package/dist/connection/events.js +8 -0
  127. package/dist/connection/events.js.map +1 -0
  128. package/dist/connection/handlers.d.ts +3 -5
  129. package/dist/connection/handlers.d.ts.map +1 -1
  130. package/dist/connection/handlers.js +10 -12
  131. package/dist/connection/handlers.js.map +1 -1
  132. package/dist/connection/launcher/binaryResolver.d.ts +40 -0
  133. package/dist/connection/launcher/binaryResolver.d.ts.map +1 -0
  134. package/dist/connection/launcher/binaryResolver.js +78 -0
  135. package/dist/connection/launcher/binaryResolver.js.map +1 -0
  136. package/dist/connection/launcher/flagsBuilder.d.ts +64 -0
  137. package/dist/connection/launcher/flagsBuilder.d.ts.map +1 -0
  138. package/dist/connection/launcher/flagsBuilder.js +84 -0
  139. package/dist/connection/launcher/flagsBuilder.js.map +1 -0
  140. package/dist/connection/launcher/preferencesLoader.d.ts +74 -0
  141. package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -0
  142. package/dist/connection/launcher/preferencesLoader.js +89 -0
  143. package/dist/connection/launcher/preferencesLoader.js.map +1 -0
  144. package/dist/connection/launcher.d.ts +24 -1
  145. package/dist/connection/launcher.d.ts.map +1 -1
  146. package/dist/connection/launcher.js +30 -205
  147. package/dist/connection/launcher.js.map +1 -1
  148. package/dist/connection/pageReadiness.d.ts +8 -8
  149. package/dist/connection/pageReadiness.d.ts.map +1 -1
  150. package/dist/connection/pageReadiness.js +36 -52
  151. package/dist/connection/pageReadiness.js.map +1 -1
  152. package/dist/connection/portReservation.d.ts +40 -0
  153. package/dist/connection/portReservation.d.ts.map +1 -0
  154. package/dist/connection/portReservation.js +55 -0
  155. package/dist/connection/portReservation.js.map +1 -0
  156. package/dist/connection/typed-cdp.d.ts +2 -1
  157. package/dist/connection/typed-cdp.d.ts.map +1 -1
  158. package/dist/connection/typed-cdp.js.map +1 -1
  159. package/dist/connection/types.d.ts +103 -0
  160. package/dist/connection/types.d.ts.map +1 -0
  161. package/dist/connection/types.js +8 -0
  162. package/dist/connection/types.js.map +1 -0
  163. package/dist/constants.d.ts +0 -83
  164. package/dist/constants.d.ts.map +1 -1
  165. package/dist/constants.js +0 -83
  166. package/dist/constants.js.map +1 -1
  167. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +8 -0
  168. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +1 -0
  169. package/dist/daemon/__tests__/JsonlParser.unit.test.js +140 -0
  170. package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +1 -0
  171. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +8 -0
  172. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +1 -0
  173. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +276 -0
  174. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +1 -0
  175. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +8 -0
  176. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +1 -0
  177. package/dist/daemon/__tests__/TelemetryStore.unit.test.js +290 -0
  178. package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +1 -0
  179. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +8 -0
  180. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +1 -0
  181. package/dist/daemon/__tests__/commandRegistry.contract.test.js +384 -0
  182. package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -0
  183. package/dist/daemon/__tests__/ipcServer.contract.test.js +2 -1
  184. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  185. package/dist/daemon/errors.d.ts +65 -0
  186. package/dist/daemon/errors.d.ts.map +1 -0
  187. package/dist/daemon/errors.js +82 -0
  188. package/dist/daemon/errors.js.map +1 -0
  189. package/dist/daemon/handlers/CommandHandlers.d.ts +32 -0
  190. package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -0
  191. package/dist/daemon/handlers/CommandHandlers.js +93 -0
  192. package/dist/daemon/handlers/CommandHandlers.js.map +1 -0
  193. package/dist/daemon/handlers/QueryHandlers.d.ts +35 -0
  194. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -0
  195. package/dist/daemon/handlers/QueryHandlers.js +176 -0
  196. package/dist/daemon/handlers/QueryHandlers.js.map +1 -0
  197. package/dist/daemon/handlers/SessionHandlers.d.ts +32 -0
  198. package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -0
  199. package/dist/daemon/handlers/SessionHandlers.js +227 -0
  200. package/dist/daemon/handlers/SessionHandlers.js.map +1 -0
  201. package/dist/daemon/handlers/pendingRequests.d.ts +50 -0
  202. package/dist/daemon/handlers/pendingRequests.d.ts.map +1 -0
  203. package/dist/daemon/handlers/pendingRequests.js +57 -0
  204. package/dist/daemon/handlers/pendingRequests.js.map +1 -0
  205. package/dist/daemon/handlers/requestHandlers.d.ts +51 -0
  206. package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -0
  207. package/dist/daemon/handlers/requestHandlers.js +61 -0
  208. package/dist/daemon/handlers/requestHandlers.js.map +1 -0
  209. package/dist/daemon/handlers/responseHandler.d.ts +42 -0
  210. package/dist/daemon/handlers/responseHandler.d.ts.map +1 -0
  211. package/dist/daemon/handlers/responseHandler.js +195 -0
  212. package/dist/daemon/handlers/responseHandler.js.map +1 -0
  213. package/dist/daemon/ipcServer.d.ts +19 -41
  214. package/dist/daemon/ipcServer.d.ts.map +1 -1
  215. package/dist/daemon/ipcServer.js +83 -655
  216. package/dist/daemon/ipcServer.js.map +1 -1
  217. package/dist/daemon/launcher.d.ts.map +1 -1
  218. package/dist/daemon/launcher.js +6 -3
  219. package/dist/daemon/launcher.js.map +1 -1
  220. package/dist/daemon/lifecycle/cdpSetup.d.ts +24 -0
  221. package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -0
  222. package/dist/daemon/lifecycle/cdpSetup.js +59 -0
  223. package/dist/daemon/lifecycle/cdpSetup.js.map +1 -0
  224. package/dist/daemon/lifecycle/chromeConnection.d.ts +17 -0
  225. package/dist/daemon/lifecycle/chromeConnection.d.ts.map +1 -0
  226. package/dist/daemon/lifecycle/chromeConnection.js +80 -0
  227. package/dist/daemon/lifecycle/chromeConnection.js.map +1 -0
  228. package/dist/daemon/lifecycle/signalHandlers.d.ts +14 -0
  229. package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -0
  230. package/dist/daemon/lifecycle/signalHandlers.js +35 -0
  231. package/dist/daemon/lifecycle/signalHandlers.js.map +1 -0
  232. package/dist/daemon/lifecycle/workerCleanup.d.ts +27 -0
  233. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -0
  234. package/dist/daemon/lifecycle/workerCleanup.js +144 -0
  235. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -0
  236. package/dist/daemon/lifecycle/workerConfig.d.ts +14 -0
  237. package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -0
  238. package/dist/daemon/lifecycle/workerConfig.js +66 -0
  239. package/dist/daemon/lifecycle/workerConfig.js.map +1 -0
  240. package/dist/daemon/lifecycle/workerIpc.d.ts +14 -0
  241. package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -0
  242. package/dist/daemon/lifecycle/workerIpc.js +87 -0
  243. package/dist/daemon/lifecycle/workerIpc.js.map +1 -0
  244. package/dist/daemon/server/JsonlParser.d.ts +31 -0
  245. package/dist/daemon/server/JsonlParser.d.ts.map +1 -0
  246. package/dist/daemon/server/JsonlParser.js +57 -0
  247. package/dist/daemon/server/JsonlParser.js.map +1 -0
  248. package/dist/daemon/server/SocketServer.d.ts.map +1 -1
  249. package/dist/daemon/server/SocketServer.js +2 -2
  250. package/dist/daemon/server/SocketServer.js.map +1 -1
  251. package/dist/daemon/server/WorkerManager.d.ts +3 -3
  252. package/dist/daemon/server/WorkerManager.d.ts.map +1 -1
  253. package/dist/daemon/server/WorkerManager.js +10 -19
  254. package/dist/daemon/server/WorkerManager.js.map +1 -1
  255. package/dist/daemon/services/SessionService.d.ts +87 -0
  256. package/dist/daemon/services/SessionService.d.ts.map +1 -0
  257. package/dist/daemon/services/SessionService.js +45 -0
  258. package/dist/daemon/services/SessionService.js.map +1 -0
  259. package/dist/daemon/startSession.d.ts.map +1 -1
  260. package/dist/daemon/startSession.js +54 -31
  261. package/dist/daemon/startSession.js.map +1 -1
  262. package/dist/daemon/worker/commandRegistry.d.ts +1 -1
  263. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  264. package/dist/daemon/worker/commandRegistry.js +20 -215
  265. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  266. package/dist/daemon/worker.d.ts +3 -12
  267. package/dist/daemon/worker.d.ts.map +1 -1
  268. package/dist/daemon/worker.js +47 -367
  269. package/dist/daemon/worker.js.map +1 -1
  270. package/dist/index.js +1 -1
  271. package/dist/index.js.map +1 -1
  272. package/dist/ipc/__tests__/client.contract.test.d.ts +0 -15
  273. package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -1
  274. package/dist/ipc/__tests__/client.contract.test.js +8 -23
  275. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  276. package/dist/ipc/__tests__/errors.unit.test.d.ts +7 -0
  277. package/dist/ipc/__tests__/errors.unit.test.d.ts.map +1 -0
  278. package/dist/ipc/__tests__/errors.unit.test.js +77 -0
  279. package/dist/ipc/__tests__/errors.unit.test.js.map +1 -0
  280. package/dist/ipc/__tests__/guards.unit.test.d.ts +7 -0
  281. package/dist/ipc/__tests__/guards.unit.test.d.ts.map +1 -0
  282. package/dist/ipc/__tests__/guards.unit.test.js +73 -0
  283. package/dist/ipc/__tests__/guards.unit.test.js.map +1 -0
  284. package/dist/ipc/__tests__/jsonl.unit.test.d.ts +7 -0
  285. package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +1 -0
  286. package/dist/ipc/__tests__/jsonl.unit.test.js +85 -0
  287. package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -0
  288. package/dist/ipc/__tests__/validation.unit.test.d.ts +7 -0
  289. package/dist/ipc/__tests__/validation.unit.test.d.ts.map +1 -0
  290. package/dist/ipc/__tests__/validation.unit.test.js +60 -0
  291. package/dist/ipc/__tests__/validation.unit.test.js.map +1 -0
  292. package/dist/ipc/client.d.ts +93 -84
  293. package/dist/ipc/client.d.ts.map +1 -1
  294. package/dist/ipc/client.js +121 -192
  295. package/dist/ipc/client.js.map +1 -1
  296. package/dist/ipc/index.d.ts +17 -0
  297. package/dist/ipc/index.d.ts.map +1 -0
  298. package/dist/ipc/index.js +23 -0
  299. package/dist/ipc/index.js.map +1 -0
  300. package/dist/ipc/protocol/commands.d.ts +144 -0
  301. package/dist/ipc/protocol/commands.d.ts.map +1 -0
  302. package/dist/ipc/protocol/commands.js +23 -0
  303. package/dist/ipc/protocol/commands.js.map +1 -0
  304. package/dist/ipc/protocol/guards.d.ts +47 -0
  305. package/dist/ipc/protocol/guards.d.ts.map +1 -0
  306. package/dist/ipc/protocol/guards.js +62 -0
  307. package/dist/ipc/protocol/guards.js.map +1 -0
  308. package/dist/ipc/protocol/index.d.ts +9 -0
  309. package/dist/ipc/protocol/index.d.ts.map +1 -0
  310. package/dist/ipc/protocol/index.js +8 -0
  311. package/dist/ipc/protocol/index.js.map +1 -0
  312. package/dist/ipc/protocol/messages.d.ts +64 -0
  313. package/dist/ipc/protocol/messages.d.ts.map +1 -0
  314. package/dist/ipc/protocol/messages.js +8 -0
  315. package/dist/ipc/protocol/messages.js.map +1 -0
  316. package/dist/ipc/session/errors.d.ts +25 -0
  317. package/dist/ipc/session/errors.d.ts.map +1 -0
  318. package/dist/ipc/{types.js → session/errors.js} +11 -6
  319. package/dist/ipc/session/errors.js.map +1 -0
  320. package/dist/ipc/session/index.d.ts +16 -0
  321. package/dist/ipc/session/index.d.ts.map +1 -0
  322. package/dist/ipc/session/index.js +7 -0
  323. package/dist/ipc/session/index.js.map +1 -0
  324. package/dist/ipc/session/lifecycle.d.ts +125 -0
  325. package/dist/ipc/session/lifecycle.d.ts.map +1 -0
  326. package/dist/ipc/session/lifecycle.js +7 -0
  327. package/dist/ipc/session/lifecycle.js.map +1 -0
  328. package/dist/ipc/session/queries.d.ts +94 -0
  329. package/dist/ipc/session/queries.d.ts.map +1 -0
  330. package/dist/ipc/session/queries.js +7 -0
  331. package/dist/ipc/session/queries.js.map +1 -0
  332. package/dist/ipc/session/types.d.ts +28 -0
  333. package/dist/ipc/session/types.d.ts.map +1 -0
  334. package/dist/ipc/session/types.js +7 -0
  335. package/dist/ipc/session/types.js.map +1 -0
  336. package/dist/ipc/transport/IPCError.d.ts +82 -0
  337. package/dist/ipc/transport/IPCError.d.ts.map +1 -0
  338. package/dist/ipc/transport/IPCError.js +109 -0
  339. package/dist/ipc/transport/IPCError.js.map +1 -0
  340. package/dist/ipc/transport/errors.d.ts +11 -0
  341. package/dist/ipc/transport/errors.d.ts.map +1 -0
  342. package/dist/ipc/transport/errors.js +28 -0
  343. package/dist/ipc/transport/errors.js.map +1 -0
  344. package/dist/ipc/transport/index.d.ts +16 -0
  345. package/dist/ipc/transport/index.d.ts.map +1 -0
  346. package/dist/ipc/transport/index.js +77 -0
  347. package/dist/ipc/transport/index.js.map +1 -0
  348. package/dist/ipc/transport/jsonl.d.ts +23 -0
  349. package/dist/ipc/transport/jsonl.d.ts.map +1 -0
  350. package/dist/ipc/transport/jsonl.js +36 -0
  351. package/dist/ipc/transport/jsonl.js.map +1 -0
  352. package/dist/ipc/transport/socket.d.ts +27 -0
  353. package/dist/ipc/transport/socket.d.ts.map +1 -0
  354. package/dist/ipc/transport/socket.js +49 -0
  355. package/dist/ipc/transport/socket.js.map +1 -0
  356. package/dist/ipc/transport/validation.d.ts +21 -0
  357. package/dist/ipc/transport/validation.d.ts.map +1 -0
  358. package/dist/ipc/transport/validation.js +23 -0
  359. package/dist/ipc/transport/validation.js.map +1 -0
  360. package/dist/ipc/utils/errors.d.ts +25 -0
  361. package/dist/ipc/utils/errors.d.ts.map +1 -0
  362. package/dist/ipc/utils/errors.js +29 -0
  363. package/dist/ipc/utils/errors.js.map +1 -0
  364. package/dist/ipc/utils/index.d.ts +12 -0
  365. package/dist/ipc/utils/index.d.ts.map +1 -0
  366. package/dist/ipc/utils/index.js +11 -0
  367. package/dist/ipc/utils/index.js.map +1 -0
  368. package/dist/ipc/utils/requestId.d.ts +23 -0
  369. package/dist/ipc/utils/requestId.d.ts.map +1 -0
  370. package/dist/ipc/utils/requestId.js +27 -0
  371. package/dist/ipc/utils/requestId.js.map +1 -0
  372. package/dist/ipc/utils/responseValidator.d.ts.map +1 -0
  373. package/dist/ipc/{responseValidator.js → utils/responseValidator.js} +2 -1
  374. package/dist/ipc/utils/responseValidator.js.map +1 -0
  375. package/dist/ipc/utils/session.d.ts +36 -0
  376. package/dist/ipc/utils/session.d.ts.map +1 -0
  377. package/dist/ipc/utils/session.js +37 -0
  378. package/dist/ipc/utils/session.js.map +1 -0
  379. package/dist/ipc/utils/types.d.ts +17 -0
  380. package/dist/ipc/utils/types.d.ts.map +1 -0
  381. package/dist/ipc/utils/types.js +7 -0
  382. package/dist/ipc/utils/types.js.map +1 -0
  383. package/dist/session/__tests__/chrome-cache.contract.test.d.ts +7 -0
  384. package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +1 -0
  385. package/dist/session/__tests__/chrome-cache.contract.test.js +77 -0
  386. package/dist/session/__tests__/chrome-cache.contract.test.js.map +1 -0
  387. package/dist/session/__tests__/cleanup.contract.test.d.ts +7 -0
  388. package/dist/session/__tests__/cleanup.contract.test.d.ts.map +1 -0
  389. package/dist/session/__tests__/cleanup.contract.test.js +84 -0
  390. package/dist/session/__tests__/cleanup.contract.test.js.map +1 -0
  391. package/dist/session/__tests__/lock.contract.test.d.ts +7 -0
  392. package/dist/session/__tests__/lock.contract.test.d.ts.map +1 -0
  393. package/dist/session/__tests__/lock.contract.test.js +77 -0
  394. package/dist/session/__tests__/lock.contract.test.js.map +1 -0
  395. package/dist/session/__tests__/metadata.contract.test.d.ts +7 -0
  396. package/dist/session/__tests__/metadata.contract.test.d.ts.map +1 -0
  397. package/dist/session/__tests__/metadata.contract.test.js +87 -0
  398. package/dist/session/__tests__/metadata.contract.test.js.map +1 -0
  399. package/dist/session/chrome.d.ts +20 -0
  400. package/dist/session/chrome.d.ts.map +1 -1
  401. package/dist/session/chrome.js +80 -16
  402. package/dist/session/chrome.js.map +1 -1
  403. package/dist/session/cleanup.d.ts +15 -2
  404. package/dist/session/cleanup.d.ts.map +1 -1
  405. package/dist/session/cleanup.js +100 -72
  406. package/dist/session/cleanup.js.map +1 -1
  407. package/dist/session/lock.d.ts.map +1 -1
  408. package/dist/session/lock.js +101 -90
  409. package/dist/session/lock.js.map +1 -1
  410. package/dist/session/metadata.d.ts +10 -3
  411. package/dist/session/metadata.d.ts.map +1 -1
  412. package/dist/session/metadata.js +24 -6
  413. package/dist/session/metadata.js.map +1 -1
  414. package/dist/session/paths.d.ts +0 -9
  415. package/dist/session/paths.d.ts.map +1 -1
  416. package/dist/session/paths.js +0 -11
  417. package/dist/session/paths.js.map +1 -1
  418. package/dist/session/pid.d.ts +15 -0
  419. package/dist/session/pid.d.ts.map +1 -1
  420. package/dist/session/pid.js +39 -21
  421. package/dist/session/pid.js.map +1 -1
  422. package/dist/session/process.d.ts +4 -41
  423. package/dist/session/process.d.ts.map +1 -1
  424. package/dist/session/process.js +4 -85
  425. package/dist/session/process.js.map +1 -1
  426. package/dist/session/statusData.d.ts +50 -0
  427. package/dist/session/statusData.d.ts.map +1 -0
  428. package/dist/session/statusData.js +51 -0
  429. package/dist/session/statusData.js.map +1 -0
  430. package/dist/telemetry/__tests__/navigation.contract.test.d.ts +8 -0
  431. package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +1 -0
  432. package/dist/telemetry/__tests__/navigation.contract.test.js +211 -0
  433. package/dist/telemetry/__tests__/navigation.contract.test.js.map +1 -0
  434. package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -20
  435. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -1
  436. package/dist/telemetry/__tests__/network.contract.test.js +2 -64
  437. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  438. package/dist/telemetry/__tests__/utils.unit.test.d.ts +7 -0
  439. package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +1 -0
  440. package/dist/telemetry/__tests__/utils.unit.test.js +91 -0
  441. package/dist/telemetry/__tests__/utils.unit.test.js.map +1 -0
  442. package/dist/telemetry/console.d.ts.map +1 -1
  443. package/dist/telemetry/console.js +19 -28
  444. package/dist/telemetry/console.js.map +1 -1
  445. package/dist/telemetry/dialogs.d.ts.map +1 -1
  446. package/dist/telemetry/dialogs.js +4 -8
  447. package/dist/telemetry/dialogs.js.map +1 -1
  448. package/dist/telemetry/dom.d.ts.map +1 -1
  449. package/dist/telemetry/dom.js +51 -59
  450. package/dist/telemetry/dom.js.map +1 -1
  451. package/dist/telemetry/filters.d.ts +5 -18
  452. package/dist/telemetry/filters.d.ts.map +1 -1
  453. package/dist/telemetry/filters.js +36 -56
  454. package/dist/telemetry/filters.js.map +1 -1
  455. package/dist/telemetry/navigation.d.ts.map +1 -1
  456. package/dist/telemetry/navigation.js +5 -8
  457. package/dist/telemetry/navigation.js.map +1 -1
  458. package/dist/telemetry/network.d.ts.map +1 -1
  459. package/dist/telemetry/network.js +105 -104
  460. package/dist/telemetry/network.js.map +1 -1
  461. package/dist/telemetry/utils.d.ts +85 -0
  462. package/dist/telemetry/utils.d.ts.map +1 -0
  463. package/dist/telemetry/utils.js +138 -0
  464. package/dist/telemetry/utils.js.map +1 -0
  465. package/dist/types/dom.d.ts +66 -0
  466. package/dist/types/dom.d.ts.map +1 -0
  467. package/dist/types/dom.js +8 -0
  468. package/dist/types/dom.js.map +1 -0
  469. package/dist/types.d.ts +15 -83
  470. package/dist/types.d.ts.map +1 -1
  471. package/dist/{commands/shared → ui}/OutputBuilder.d.ts +10 -2
  472. package/dist/ui/OutputBuilder.d.ts.map +1 -0
  473. package/dist/{commands/shared → ui}/OutputBuilder.js +8 -2
  474. package/dist/ui/OutputBuilder.js.map +1 -0
  475. package/dist/ui/errors/CommandError.d.ts +16 -2
  476. package/dist/ui/errors/CommandError.d.ts.map +1 -1
  477. package/dist/ui/errors/CommandError.js +2 -1
  478. package/dist/ui/errors/CommandError.js.map +1 -1
  479. package/dist/ui/errors/index.d.ts +2 -3
  480. package/dist/ui/errors/index.d.ts.map +1 -1
  481. package/dist/ui/errors/index.js +1 -3
  482. package/dist/ui/errors/index.js.map +1 -1
  483. package/dist/ui/errors/utils.d.ts +6 -0
  484. package/dist/ui/errors/utils.d.ts.map +1 -1
  485. package/dist/ui/errors/utils.js +8 -3
  486. package/dist/ui/errors/utils.js.map +1 -1
  487. package/dist/ui/formatters/dom.d.ts +3 -18
  488. package/dist/ui/formatters/dom.d.ts.map +1 -1
  489. package/dist/ui/formatters/dom.js +4 -27
  490. package/dist/ui/formatters/dom.js.map +1 -1
  491. package/dist/ui/formatters/preview.d.ts +8 -8
  492. package/dist/ui/formatters/preview.d.ts.map +1 -1
  493. package/dist/ui/formatters/preview.js +18 -13
  494. package/dist/ui/formatters/preview.js.map +1 -1
  495. package/dist/ui/formatters/status.d.ts +1 -1
  496. package/dist/ui/formatters/status.d.ts.map +1 -1
  497. package/dist/ui/formatters/status.js +8 -30
  498. package/dist/ui/formatters/status.js.map +1 -1
  499. package/dist/ui/formatting.d.ts +2 -270
  500. package/dist/ui/formatting.d.ts.map +1 -1
  501. package/dist/ui/formatting.js +8 -331
  502. package/dist/ui/formatting.js.map +1 -1
  503. package/dist/ui/logging/index.d.ts +1 -1
  504. package/dist/ui/logging/index.d.ts.map +1 -1
  505. package/dist/ui/logging/index.js +1 -1
  506. package/dist/ui/logging/index.js.map +1 -1
  507. package/dist/ui/logging/logger.d.ts +3 -23
  508. package/dist/ui/logging/logger.d.ts.map +1 -1
  509. package/dist/ui/logging/logger.js +2 -27
  510. package/dist/ui/logging/logger.js.map +1 -1
  511. package/dist/ui/messages/chrome.d.ts +15 -7
  512. package/dist/ui/messages/chrome.d.ts.map +1 -1
  513. package/dist/ui/messages/chrome.js +23 -32
  514. package/dist/ui/messages/chrome.js.map +1 -1
  515. package/dist/ui/messages/commands.d.ts +2 -19
  516. package/dist/ui/messages/commands.d.ts.map +1 -1
  517. package/dist/ui/messages/commands.js +5 -51
  518. package/dist/ui/messages/commands.js.map +1 -1
  519. package/dist/ui/messages/consoleMessages.d.ts +1 -1
  520. package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
  521. package/dist/ui/messages/consoleMessages.js +3 -6
  522. package/dist/ui/messages/consoleMessages.js.map +1 -1
  523. package/dist/ui/messages/debug.d.ts +0 -14
  524. package/dist/ui/messages/debug.d.ts.map +1 -1
  525. package/dist/ui/messages/debug.js +0 -18
  526. package/dist/ui/messages/debug.js.map +1 -1
  527. package/dist/ui/messages/errors.d.ts +0 -34
  528. package/dist/ui/messages/errors.d.ts.map +1 -1
  529. package/dist/ui/messages/errors.js +3 -81
  530. package/dist/ui/messages/errors.js.map +1 -1
  531. package/dist/ui/messages/internal.d.ts +0 -7
  532. package/dist/ui/messages/internal.d.ts.map +1 -1
  533. package/dist/ui/messages/internal.js +0 -12
  534. package/dist/ui/messages/internal.js.map +1 -1
  535. package/dist/ui/messages/preview.d.ts +14 -1
  536. package/dist/ui/messages/preview.d.ts.map +1 -1
  537. package/dist/ui/messages/preview.js +24 -7
  538. package/dist/ui/messages/preview.js.map +1 -1
  539. package/dist/ui/messages/session.d.ts.map +1 -1
  540. package/dist/ui/messages/session.js +7 -23
  541. package/dist/ui/messages/session.js.map +1 -1
  542. package/dist/ui/messages/validation.d.ts.map +1 -1
  543. package/dist/ui/messages/validation.js +7 -8
  544. package/dist/ui/messages/validation.js.map +1 -1
  545. package/dist/utils/__tests__/atomicFile.test.d.ts +2 -0
  546. package/dist/utils/__tests__/atomicFile.test.d.ts.map +1 -0
  547. package/dist/utils/__tests__/atomicFile.test.js +43 -0
  548. package/dist/utils/__tests__/atomicFile.test.js.map +1 -0
  549. package/dist/utils/__tests__/objects.test.d.ts +2 -0
  550. package/dist/utils/__tests__/objects.test.d.ts.map +1 -0
  551. package/dist/utils/__tests__/objects.test.js +50 -0
  552. package/dist/utils/__tests__/objects.test.js.map +1 -0
  553. package/dist/utils/__tests__/session.contract.test.js +13 -3
  554. package/dist/utils/__tests__/session.contract.test.js.map +1 -1
  555. package/dist/utils/__tests__/url.test.d.ts +2 -0
  556. package/dist/utils/__tests__/url.test.d.ts.map +1 -0
  557. package/dist/utils/__tests__/url.test.js +42 -0
  558. package/dist/utils/__tests__/url.test.js.map +1 -0
  559. package/dist/utils/atomicFile.d.ts +31 -5
  560. package/dist/utils/atomicFile.d.ts.map +1 -1
  561. package/dist/utils/atomicFile.js +52 -13
  562. package/dist/utils/atomicFile.js.map +1 -1
  563. package/dist/utils/concurrency.d.ts +54 -0
  564. package/dist/utils/concurrency.d.ts.map +1 -0
  565. package/dist/utils/concurrency.js +78 -0
  566. package/dist/utils/concurrency.js.map +1 -0
  567. package/dist/utils/daemonErrors.d.ts +60 -0
  568. package/dist/utils/daemonErrors.d.ts.map +1 -0
  569. package/dist/utils/daemonErrors.js +58 -0
  570. package/dist/utils/daemonErrors.js.map +1 -0
  571. package/dist/utils/errors.d.ts +28 -0
  572. package/dist/utils/errors.d.ts.map +1 -0
  573. package/dist/utils/errors.js +33 -0
  574. package/dist/utils/errors.js.map +1 -0
  575. package/dist/utils/exitCodes.d.ts +41 -5
  576. package/dist/utils/exitCodes.d.ts.map +1 -1
  577. package/dist/utils/exitCodes.js +43 -9
  578. package/dist/utils/exitCodes.js.map +1 -1
  579. package/dist/utils/http.d.ts +9 -4
  580. package/dist/utils/http.d.ts.map +1 -1
  581. package/dist/utils/http.js +44 -10
  582. package/dist/utils/http.js.map +1 -1
  583. package/dist/utils/levenshtein.d.ts +45 -0
  584. package/dist/utils/levenshtein.d.ts.map +1 -0
  585. package/dist/utils/levenshtein.js +85 -0
  586. package/dist/utils/levenshtein.js.map +1 -0
  587. package/dist/utils/objects.d.ts +16 -1
  588. package/dist/utils/objects.d.ts.map +1 -1
  589. package/dist/utils/objects.js +16 -1
  590. package/dist/utils/objects.js.map +1 -1
  591. package/dist/utils/process.d.ts +45 -0
  592. package/dist/utils/process.d.ts.map +1 -0
  593. package/dist/utils/process.js +91 -0
  594. package/dist/utils/process.js.map +1 -0
  595. package/dist/utils/url.d.ts +10 -3
  596. package/dist/utils/url.d.ts.map +1 -1
  597. package/dist/utils/url.js +42 -29
  598. package/dist/utils/url.js.map +1 -1
  599. package/dist/utils/validation.d.ts +101 -0
  600. package/dist/utils/validation.d.ts.map +1 -0
  601. package/dist/utils/validation.js +131 -0
  602. package/dist/utils/validation.js.map +1 -0
  603. package/package.json +1 -1
  604. package/dist/commands/dom.d.ts.map +0 -1
  605. package/dist/commands/dom.js.map +0 -1
  606. package/dist/commands/domEvalHelpers.d.ts.map +0 -1
  607. package/dist/commands/domEvalHelpers.js.map +0 -1
  608. package/dist/commands/domOptionsBuilder.d.ts +0 -67
  609. package/dist/commands/domOptionsBuilder.d.ts.map +0 -1
  610. package/dist/commands/domOptionsBuilder.js +0 -86
  611. package/dist/commands/domOptionsBuilder.js.map +0 -1
  612. package/dist/commands/domSelectorParser.d.ts +0 -20
  613. package/dist/commands/domSelectorParser.d.ts.map +0 -1
  614. package/dist/commands/domSelectorParser.js +0 -20
  615. package/dist/commands/domSelectorParser.js.map +0 -1
  616. package/dist/commands/shared/OutputBuilder.d.ts.map +0 -1
  617. package/dist/commands/shared/OutputBuilder.js.map +0 -1
  618. package/dist/commands/shared/daemonSessionController.d.ts.map +0 -1
  619. package/dist/commands/shared/daemonSessionController.js.map +0 -1
  620. package/dist/commands/shared/sessionController.d.ts +0 -21
  621. package/dist/commands/shared/sessionController.d.ts.map +0 -1
  622. package/dist/commands/shared/sessionController.js +0 -54
  623. package/dist/commands/shared/sessionController.js.map +0 -1
  624. package/dist/connection/__tests__/finder.contract.test.d.ts +0 -2
  625. package/dist/connection/__tests__/finder.contract.test.d.ts.map +0 -1
  626. package/dist/connection/__tests__/finder.contract.test.js +0 -239
  627. package/dist/connection/__tests__/finder.contract.test.js.map +0 -1
  628. package/dist/connection/domOperations.d.ts +0 -48
  629. package/dist/connection/domOperations.d.ts.map +0 -1
  630. package/dist/connection/domOperations.js +0 -106
  631. package/dist/connection/domOperations.js.map +0 -1
  632. package/dist/connection/finder.d.ts +0 -12
  633. package/dist/connection/finder.d.ts.map +0 -1
  634. package/dist/connection/finder.js +0 -17
  635. package/dist/connection/finder.js.map +0 -1
  636. package/dist/ipc/commands.d.ts +0 -260
  637. package/dist/ipc/commands.d.ts.map +0 -1
  638. package/dist/ipc/commands.js +0 -77
  639. package/dist/ipc/commands.js.map +0 -1
  640. package/dist/ipc/responseValidator.d.ts.map +0 -1
  641. package/dist/ipc/responseValidator.js.map +0 -1
  642. package/dist/ipc/types.d.ts +0 -226
  643. package/dist/ipc/types.d.ts.map +0 -1
  644. package/dist/ipc/types.js.map +0 -1
  645. package/dist/session/fileOps.d.ts +0 -25
  646. package/dist/session/fileOps.d.ts.map +0 -1
  647. package/dist/session/fileOps.js +0 -39
  648. package/dist/session/fileOps.js.map +0 -1
  649. package/dist/session/queryCache.d.ts +0 -36
  650. package/dist/session/queryCache.d.ts.map +0 -1
  651. package/dist/session/queryCache.js +0 -66
  652. package/dist/session/queryCache.js.map +0 -1
  653. /package/dist/ipc/{responseValidator.d.ts → utils/responseValidator.d.ts} +0 -0
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Chrome preferences loader.
3
+ *
4
+ * Handles loading Chrome preferences from files or inline options,
5
+ * and validates that they are JSON-serializable for chrome-launcher compatibility.
6
+ */
7
+ import * as fs from 'fs';
8
+ import { ChromeLaunchError, getErrorMessage } from '../../connection/errors.js';
9
+ import { prefsFileNotFoundError, invalidPrefsFormatError, prefsLoadError, } from '../../ui/messages/chrome.js';
10
+ /**
11
+ * Load Chrome preferences from file or inline options.
12
+ *
13
+ * Supports two modes:
14
+ * 1. **File-based**: Load preferences from JSON file (prefsFile)
15
+ * 2. **Inline**: Use preferences directly from options (prefs)
16
+ *
17
+ * File-based loading takes precedence over inline preferences.
18
+ *
19
+ * @param options - Options containing preferences configuration
20
+ * @returns Preferences object, or undefined if none specified
21
+ * @throws ChromeLaunchError if file doesn't exist, is invalid JSON, or wrong format
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // From file
26
+ * const prefs = loadChromePrefs({ prefsFile: './chrome-prefs.json' });
27
+ *
28
+ * // Inline
29
+ * const prefs = loadChromePrefs({
30
+ * prefs: {
31
+ * 'profile.default_content_settings.popups': 0,
32
+ * 'download.default_directory': '/tmp/downloads'
33
+ * }
34
+ * });
35
+ * ```
36
+ */
37
+ export function loadChromePrefs(options) {
38
+ if (options.prefsFile) {
39
+ if (!fs.existsSync(options.prefsFile)) {
40
+ throw new ChromeLaunchError(prefsFileNotFoundError(options.prefsFile), new Error('File does not exist'));
41
+ }
42
+ try {
43
+ const prefsContent = fs.readFileSync(options.prefsFile, 'utf8');
44
+ const parsed = JSON.parse(prefsContent);
45
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
46
+ throw new ChromeLaunchError(invalidPrefsFormatError(options.prefsFile, typeof parsed), new Error('Invalid JSON structure'));
47
+ }
48
+ return parsed;
49
+ }
50
+ catch (error) {
51
+ if (error instanceof ChromeLaunchError) {
52
+ throw error;
53
+ }
54
+ throw new ChromeLaunchError(prefsLoadError(options.prefsFile, getErrorMessage(error)), error instanceof Error ? error : undefined);
55
+ }
56
+ }
57
+ return options.prefs;
58
+ }
59
+ /**
60
+ * Type-safe conversion for Chrome preferences from unknown to JSONLike.
61
+ *
62
+ * chrome-launcher requires preferences to match its internal JSONLike type constraint
63
+ * for type safety. This function validates that preferences are JSON-serializable
64
+ * before casting to ensure runtime safety.
65
+ *
66
+ * @param prefs - Preferences object with unknown values from JSON parsing
67
+ * @returns Preferences compatible with chrome-launcher's JSONLike constraint, or undefined
68
+ * @throws ChromeLaunchError if preferences contain non-JSON-serializable values
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const prefs = loadChromePrefs({ prefsFile: './prefs.json' });
73
+ * const compatible = ensureJSONCompatiblePrefs(prefs);
74
+ * // Now safe to pass to chrome-launcher
75
+ * ```
76
+ */
77
+ export function ensureJSONCompatiblePrefs(prefs) {
78
+ if (prefs === undefined) {
79
+ return undefined;
80
+ }
81
+ try {
82
+ JSON.stringify(prefs);
83
+ }
84
+ catch (error) {
85
+ throw new ChromeLaunchError(`Chrome preferences must be JSON-serializable: ${getErrorMessage(error)}`, error instanceof Error ? error : undefined);
86
+ }
87
+ return prefs;
88
+ }
89
+ //# sourceMappingURL=preferencesLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferencesLoader.js","sourceRoot":"","sources":["../../../src/connection/launcher/preferencesLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,GACf,MAAM,yBAAyB,CAAC;AA6BjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAiC;IAEjC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EACzC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CACjC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAEjD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,iBAAiB,CACzB,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,MAAM,CAAC,EACzD,IAAI,KAAK,CAAC,wBAAwB,CAAC,CACpC,CAAC;YACJ,CAAC;YAED,OAAO,MAAiC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,iBAAiB,CACzB,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EACzD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAA0C;IAE1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,iBAAiB,CACzB,iDAAiD,eAAe,CAAC,KAAK,CAAC,EAAE,EACzE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;IAED,OAAO,KAAiC,CAAC;AAC3C,CAAC"}
@@ -1,5 +1,5 @@
1
+ import type { LaunchedChrome, Logger } from './types.js';
1
2
  import type { Options as ChromeLaunchOptions } from 'chrome-launcher';
2
- import type { LaunchedChrome } from '../types';
3
3
  /**
4
4
  * Options that control how Chrome is launched for CDP sessions.
5
5
  * Extended to support chrome-launcher advanced features.
@@ -9,6 +9,10 @@ export interface LaunchOptions extends Pick<ChromeLaunchOptions, 'logLevel' | 'c
9
9
  port?: number;
10
10
  /** Directory for Chrome profile data. Falls back to persistent ~/.bdg/chrome-profile directory */
11
11
  userDataDir?: string | undefined;
12
+ /** Base directory for creating user data dir (defaults to OS temp dir, injectable for testing) */
13
+ baseDir?: string | undefined;
14
+ /** Logger instance (defaults to console, injectable for testing or custom logging) */
15
+ logger?: Logger | undefined;
12
16
  /** When true, launches Chrome in headless mode. Defaults to standard windowed experience */
13
17
  headless?: boolean;
14
18
  /** Initial URL to open. Defaults to about:blank and is typically replaced during session setup */
@@ -20,5 +24,24 @@ export interface LaunchOptions extends Pick<ChromeLaunchOptions, 'logLevel' | 'c
20
24
  /** Override Chrome binary detection with an explicit path */
21
25
  chromePath?: string;
22
26
  }
27
+ /**
28
+ * Launch Chrome with remote debugging enabled using chrome-launcher.
29
+ *
30
+ * Supports macOS, Linux, and Windows. Chrome will be launched with
31
+ * the specified debugging port and user data directory.
32
+ *
33
+ * Validates Chrome process is alive after launch to detect immediate crashes
34
+ * or port conflicts. Includes Chrome installation diagnostics in error messages
35
+ * to aid troubleshooting.
36
+ *
37
+ * @param options - Launch configuration options
38
+ * @returns LaunchedChrome instance with PID and kill method
39
+ * @throws ChromeLaunchError if Chrome fails to launch, process dies immediately, or CDP doesn't become available
40
+ * @throws Error if user data directory cannot be created
41
+ *
42
+ * @remarks
43
+ * Chrome 136+ requires --user-data-dir with a non-default directory.
44
+ * Uses chrome-launcher for cross-platform Chrome detection and launching.
45
+ */
23
46
  export declare function launchChrome(options?: LaunchOptions): Promise<LaunchedChrome>;
24
47
  //# sourceMappingURL=launcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AActE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAyD9C;;;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,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;AAiED,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA6GvF"}
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 net from 'net';
2
+ import * as os from 'os';
3
3
  import * as path from 'path';
4
4
  import * as chromeLauncher from 'chrome-launcher';
5
- import { BDG_CHROME_FLAGS, BDG_CHROME_PREFS, DEFAULT_CDP_PORT, DEFAULT_CHROME_LOG_LEVEL, DEFAULT_CHROME_HANDLE_SIGINT, CHROME_PROFILE_DIR, HEADLESS_FLAG, DOCKER_CHROME_FLAGS, } from '../constants.js';
6
- import { ensureSessionDir, getSessionDir } from '../session/paths.js';
7
- import { isProcessAlive } from '../session/process.js';
8
- import { createLogger } from '../ui/logging/index.js';
9
- import { formatDiagnosticsForError, 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
- const log = createLogger('chrome');
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,58 +53,15 @@ 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
- // Ensure userDataDir exists (chrome-launcher needs it for chrome-out.log)
64
+ const userDataDir = options.userDataDir ?? getPersistentUserDataDir(options.baseDir);
101
65
  if (!fs.existsSync(userDataDir)) {
102
66
  try {
103
67
  fs.mkdirSync(userDataDir, { recursive: true });
@@ -106,24 +70,21 @@ export async function launchChrome(options = {}) {
106
70
  throw new ChromeLaunchError(userDataDirError(userDataDir, getErrorMessage(error)), error);
107
71
  }
108
72
  }
109
- // Show progress to user (always visible, not just debug)
110
- console.error(`Launching Chrome on port ${port}...`);
111
- log.debug(chromeUserDataDirMessage(userDataDir));
73
+ logger.info(`Launching Chrome on port ${port}...`);
74
+ logger.debug(chromeUserDataDirMessage(userDataDir));
112
75
  const chromeOptions = buildChromeOptions(options);
113
76
  const launcher = new chromeLauncher.Launcher(chromeOptions);
114
77
  try {
115
78
  const launchStart = Date.now();
116
79
  await launcher.launch();
117
- console.error('Waiting for Chrome to be ready...');
80
+ logger.info('Waiting for Chrome to be ready...');
118
81
  await launcher.waitUntilReady();
119
82
  const launchDurationMs = Date.now() - launchStart;
120
- console.error(`✓ Chrome ready (${launchDurationMs}ms)`);
83
+ logger.info(`✓ Chrome ready (${launchDurationMs}ms)`);
121
84
  const chromeProcessPid = launcher.pid ?? 0;
122
- // Validate PID and process liveness before success
123
85
  if (!chromeProcessPid || chromeProcessPid <= 0 || !isProcessAlive(chromeProcessPid)) {
124
86
  launcher.kill();
125
87
  launcher.destroyTmp();
126
- // Get Chrome diagnostics once for error context
127
88
  const diagnosticLines = getFormattedDiagnostics();
128
89
  const errorType = !chromeProcessPid || chromeProcessPid <= 0
129
90
  ? 'failed to launch'
@@ -140,13 +101,11 @@ export async function launchChrome(options = {}) {
140
101
  ` - Kill conflicting process: kill $(lsof -ti:${port})\n` +
141
102
  ` - Use different port: bdg <url> --port ${port + 1}`);
142
103
  }
143
- // Only print success message after validating PID and process liveness
144
- log.info(chromeLaunchSuccessMessage(chromeProcessPid, launchDurationMs));
104
+ logger.info(chromeLaunchSuccessMessage(chromeProcessPid, launchDurationMs));
145
105
  return {
146
106
  pid: chromeProcessPid,
147
107
  port: launcher.port ?? port,
148
108
  userDataDir: launcher.userDataDir,
149
- process: launcher.chromeProcess ?? null,
150
109
  kill: async () => {
151
110
  return Promise.resolve().then(() => {
152
111
  launcher.kill();
@@ -158,11 +117,9 @@ export async function launchChrome(options = {}) {
158
117
  catch (error) {
159
118
  launcher.kill();
160
119
  launcher.destroyTmp();
161
- // If it's already a ChromeLaunchError with diagnostics, just re-throw
162
120
  if (error instanceof ChromeLaunchError) {
163
121
  throw error;
164
122
  }
165
- // For generic launch failures, add Chrome diagnostics
166
123
  const diagnosticLines = getFormattedDiagnostics();
167
124
  throw new ChromeLaunchError(`${chromeLaunchFailedError(getErrorMessage(error))}\n\n${diagnosticLines.join('\n')}`, error instanceof Error ? error : undefined);
168
125
  }
@@ -174,13 +131,13 @@ export async function launchChrome(options = {}) {
174
131
  * session storage) across bdg sessions. This prevents users from having to
175
132
  * repeatedly log in or accept cookie consent dialogs during debugging workflows.
176
133
  *
134
+ * @param baseDir - Optional base directory (defaults to OS temp dir). Allows injection for testing or custom locations.
177
135
  * @returns Absolute path to persistent user-data-dir
178
136
  * @throws Error if user data directory cannot be created due to permission issues
179
137
  */
180
- function getPersistentUserDataDir() {
181
- ensureSessionDir();
182
- const baseDir = getSessionDir();
183
- 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);
184
141
  if (!fs.existsSync(userDataDir)) {
185
142
  try {
186
143
  fs.mkdirSync(userDataDir, { recursive: true });
@@ -202,137 +159,6 @@ function getPersistentUserDataDir() {
202
159
  * @returns Chrome preferences object or undefined if no preferences specified
203
160
  * @throws ChromeLaunchError if prefs file cannot be read, parsed, or doesn't exist
204
161
  */
205
- function loadChromePrefs(options) {
206
- if (options.prefsFile) {
207
- // Validate file exists before attempting to read
208
- if (!fs.existsSync(options.prefsFile)) {
209
- throw new ChromeLaunchError(prefsFileNotFoundError(options.prefsFile), new Error(FILE_NOT_EXIST_ERROR));
210
- }
211
- try {
212
- const prefsContent = fs.readFileSync(options.prefsFile, 'utf8');
213
- const parsed = JSON.parse(prefsContent);
214
- if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
215
- throw new ChromeLaunchError(invalidPrefsFormatError(options.prefsFile, typeof parsed), new Error(INVALID_JSON_STRUCTURE_ERROR));
216
- }
217
- return parsed;
218
- }
219
- catch (error) {
220
- if (error instanceof ChromeLaunchError) {
221
- throw error;
222
- }
223
- throw new ChromeLaunchError(prefsLoadError(options.prefsFile, getErrorMessage(error)), error instanceof Error ? error : undefined);
224
- }
225
- }
226
- return options.prefs;
227
- }
228
- /**
229
- * Resolve Chrome binary override from LaunchOptions or CHROME_PATH.
230
- *
231
- * When users explicitly set a Chrome binary we skip chrome-launcher's fallback
232
- * auto-detection to ensure mismatched paths fail fast with actionable errors.
233
- *
234
- * @param options - Launch options which may include chromePath
235
- * @returns Validated Chrome binary path or undefined if no override
236
- * @throws ChromeLaunchError if override path is invalid or not executable
237
- */
238
- function resolveChromeBinaryOverride(options) {
239
- const override = options.chromePath ?? process.env['CHROME_PATH'];
240
- if (!override) {
241
- return undefined;
242
- }
243
- const chromePath = override.trim();
244
- if (!chromePath) {
245
- return undefined;
246
- }
247
- const sourceLabel = options.chromePath ? 'chromePath option' : 'CHROME_PATH';
248
- if (!fs.existsSync(chromePath)) {
249
- const diagnostics = getFormattedDiagnostics();
250
- throw new ChromeLaunchError(`${chromeBinaryOverrideNotFound(chromePath, sourceLabel)}\n\n${diagnostics.join('\n')}`);
251
- }
252
- try {
253
- const stats = fs.statSync(chromePath);
254
- if (stats.isDirectory()) {
255
- throw new ChromeLaunchError(chromeBinaryOverrideNotExecutable(chromePath, sourceLabel));
256
- }
257
- fs.accessSync(chromePath, fs.constants.X_OK);
258
- }
259
- catch (error) {
260
- if (error instanceof ChromeLaunchError) {
261
- throw error;
262
- }
263
- throw new ChromeLaunchError(`${chromeBinaryOverrideNotExecutable(chromePath, sourceLabel)}\n\n${getErrorMessage(error)}`, error instanceof Error ? error : undefined);
264
- }
265
- return chromePath;
266
- }
267
- /**
268
- * Check if running inside a Docker container
269
- * @returns true if running in Docker, false otherwise
270
- */
271
- function isDocker() {
272
- try {
273
- // Check for /.dockerenv file (most reliable indicator)
274
- if (fs.existsSync('/.dockerenv')) {
275
- return true;
276
- }
277
- // Check /proc/self/cgroup for docker/containerd indicators
278
- if (fs.existsSync('/proc/self/cgroup')) {
279
- const cgroup = fs.readFileSync('/proc/self/cgroup', 'utf8');
280
- return cgroup.includes('docker') || cgroup.includes('containerd');
281
- }
282
- }
283
- catch {
284
- // If we can't read these files, assume not Docker
285
- }
286
- return false;
287
- }
288
- /**
289
- * Build Chrome flags array from launch options.
290
- *
291
- * Uses chrome-launcher default flags as base (unless ignoreDefaultFlags is true)
292
- * and layers bdg-specific overrides on top. Headless mode uses the new headless
293
- * implementation for better compatibility.
294
- *
295
- * When running in Docker, automatically adds GPU-disabling flags to work around
296
- * graphics limitations in containerized environments.
297
- *
298
- * @param options - Launch options containing flag preferences
299
- * @returns Array of Chrome command-line flags
300
- */
301
- function buildChromeFlags(options) {
302
- const port = options.port ?? DEFAULT_CDP_PORT;
303
- const baseFlags = options.ignoreDefaultFlags ? [] : chromeLauncher.Launcher.defaultFlags();
304
- const bdgFlags = [REMOTE_DEBUGGING_FLAG(port), ...BDG_CHROME_FLAGS];
305
- // Add Docker-specific flags if running in a container
306
- const dockerFlags = isDocker() ? DOCKER_CHROME_FLAGS : [];
307
- // Headless flag must come first to ensure it's not overridden by other flags
308
- if (options.headless) {
309
- return [
310
- HEADLESS_FLAG,
311
- ...baseFlags,
312
- ...bdgFlags,
313
- ...dockerFlags,
314
- ...(options.chromeFlags ?? []),
315
- ];
316
- }
317
- return [...baseFlags, ...bdgFlags, ...dockerFlags, ...(options.chromeFlags ?? [])];
318
- }
319
- /**
320
- * Type-safe conversion for Chrome preferences from unknown to JSONLike.
321
- *
322
- * chrome-launcher requires preferences to match its internal JSONLike type constraint
323
- * for type safety. This conversion is safe because preferences should always be
324
- * JSON-serializable values loaded from JSON files or constructed with compatible types.
325
- *
326
- * @param prefs - Preferences object with unknown values from JSON parsing
327
- * @returns Preferences compatible with chrome-launcher's JSONLike constraint, or undefined
328
- */
329
- function ensureJSONCompatiblePrefs(prefs) {
330
- if (prefs === undefined) {
331
- return undefined;
332
- }
333
- // Safe cast because preferences come from JSON.parse or compatible sources
334
- return prefs;
335
- }
336
162
  /**
337
163
  * Build chrome-launcher options from bdg launch options.
338
164
  *
@@ -347,8 +173,7 @@ function ensureJSONCompatiblePrefs(prefs) {
347
173
  function buildChromeOptions(options) {
348
174
  const userPrefs = loadChromePrefs(options);
349
175
  const userDataDir = options.userDataDir ?? getPersistentUserDataDir();
350
- const chromePathOverride = resolveChromeBinaryOverride(options);
351
- // User preferences take precedence over bdg defaults
176
+ const chromePathOverride = resolveChromeBinary(options);
352
177
  const mergedPrefs = userPrefs ? { ...BDG_CHROME_PREFS, ...userPrefs } : BDG_CHROME_PREFS;
353
178
  return {
354
179
  logLevel: options.logLevel ?? DEFAULT_CHROME_LOG_LEVEL,
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Smart page readiness detection using self-tuning thresholds
2
+ * Smart page readiness detection using fixed thresholds
3
3
  *
4
- * This module provides adaptive page load detection that works for any page type
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 (adapts to request patterns)
8
- * 3. DOM stability (adapts to mutation rate)
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 self-tuning detection
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 (adaptive 200ms idle)
27
- * 3. Wait for DOM to stabilize (adaptive 300ms idle)
26
+ * 2. Wait for network to stabilize (200ms idle threshold)
27
+ * 3. Wait for DOM to stabilize (300ms idle threshold)
28
28
  *
29
- * All thresholds adapt to observed page behavior.
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;AAGzD;;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,CAuBf"}
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"}