browser-debugger-cli 0.1.0 → 0.3.0

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 (442) hide show
  1. package/dist/__testfixtures__/cdpMessages.d.ts +1 -1
  2. package/dist/__testfixtures__/connectionTargets.d.ts +1 -1
  3. package/dist/__tests__/fixtures/schema-v0.2.1.golden.json +47 -0
  4. package/dist/__tests__/schema.contract.test.d.ts +19 -0
  5. package/dist/__tests__/schema.contract.test.d.ts.map +1 -0
  6. package/dist/__tests__/schema.contract.test.js +236 -0
  7. package/dist/__tests__/schema.contract.test.js.map +1 -0
  8. package/dist/__testutils__/assertions.d.ts +1 -1
  9. package/dist/__testutils__/testFixtures.d.ts +1 -1
  10. package/dist/cli/commands/cdp.js +1 -1
  11. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  12. package/dist/cli/commands/cleanup.js +12 -13
  13. package/dist/cli/commands/cleanup.js.map +1 -1
  14. package/dist/cli/commands/console.js +2 -2
  15. package/dist/cli/commands/details.js +3 -3
  16. package/dist/cli/commands/details.js.map +1 -1
  17. package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +1 -1
  18. package/dist/cli/commands/dom/helpers/errorHandler.js +4 -3
  19. package/dist/cli/commands/dom/helpers/errorHandler.js.map +1 -1
  20. package/dist/cli/commands/dom/index.js +1 -1
  21. package/dist/cli/commands/dom.d.ts.map +1 -0
  22. package/dist/cli/commands/dom.js +257 -0
  23. package/dist/cli/commands/dom.js.map +1 -0
  24. package/dist/cli/commands/domErrorHandler.d.ts +45 -0
  25. package/dist/cli/commands/domErrorHandler.d.ts.map +1 -0
  26. package/dist/cli/commands/domErrorHandler.js +71 -0
  27. package/dist/cli/commands/domErrorHandler.js.map +1 -0
  28. package/dist/cli/commands/domEvalHelpers.d.ts +52 -0
  29. package/dist/cli/commands/domEvalHelpers.d.ts.map +1 -0
  30. package/dist/cli/commands/domEvalHelpers.js +76 -0
  31. package/dist/cli/commands/domEvalHelpers.js.map +1 -0
  32. package/dist/cli/commands/domOptionsBuilder.d.ts +35 -0
  33. package/dist/cli/commands/domOptionsBuilder.d.ts.map +1 -0
  34. package/dist/cli/commands/domOptionsBuilder.js +51 -0
  35. package/dist/cli/commands/domOptionsBuilder.js.map +1 -0
  36. package/dist/cli/{collectors/helpers/selectorParser.d.ts → commands/domSelectorParser.d.ts} +1 -1
  37. package/dist/cli/commands/domSelectorParser.d.ts.map +1 -0
  38. package/dist/cli/{collectors/helpers/selectorParser.js → commands/domSelectorParser.js} +1 -1
  39. package/dist/cli/commands/domSelectorParser.js.map +1 -0
  40. package/dist/cli/commands/network.d.ts.map +1 -1
  41. package/dist/cli/commands/network.js +8 -5
  42. package/dist/cli/commands/network.js.map +1 -1
  43. package/dist/cli/commands/peek.d.ts.map +1 -1
  44. package/dist/cli/commands/peek.js +7 -7
  45. package/dist/cli/commands/peek.js.map +1 -1
  46. package/dist/cli/commands/start.d.ts.map +1 -1
  47. package/dist/cli/commands/start.js +19 -2
  48. package/dist/cli/commands/start.js.map +1 -1
  49. package/dist/cli/commands/status.d.ts.map +1 -1
  50. package/dist/cli/commands/status.js +13 -10
  51. package/dist/cli/commands/status.js.map +1 -1
  52. package/dist/cli/commands/stop.d.ts.map +1 -1
  53. package/dist/cli/commands/stop.js +7 -6
  54. package/dist/cli/commands/stop.js.map +1 -1
  55. package/dist/cli/formatters/detailsFormatter.d.ts +1 -1
  56. package/dist/cli/formatters/previewFormatter.d.ts +1 -1
  57. package/dist/cli/formatters/previewFormatter.js +1 -1
  58. package/dist/cli/formatters/previewFormatter.js.map +1 -1
  59. package/dist/cli/formatters/statusFormatter.d.ts +6 -1
  60. package/dist/cli/formatters/statusFormatter.d.ts.map +1 -1
  61. package/dist/cli/formatters/statusFormatter.js +49 -4
  62. package/dist/cli/formatters/statusFormatter.js.map +1 -1
  63. package/dist/cli/handlers/CommandRunner.d.ts.map +1 -1
  64. package/dist/cli/handlers/CommandRunner.js +5 -5
  65. package/dist/cli/handlers/CommandRunner.js.map +1 -1
  66. package/dist/cli/handlers/OutputBuilder.d.ts +1 -1
  67. package/dist/cli/handlers/daemonSessionController.d.ts +1 -1
  68. package/dist/cli/handlers/daemonSessionController.d.ts.map +1 -1
  69. package/dist/cli/handlers/daemonSessionController.js +16 -45
  70. package/dist/cli/handlers/daemonSessionController.js.map +1 -1
  71. package/dist/cli/handlers/landingPage.d.ts +8 -0
  72. package/dist/cli/handlers/landingPage.d.ts.map +1 -0
  73. package/dist/cli/handlers/landingPage.js +8 -0
  74. package/dist/cli/handlers/landingPage.js.map +1 -0
  75. package/dist/cli/registry.js +10 -10
  76. package/dist/cli/registry.js.map +1 -1
  77. package/dist/collectors/__tests__/network.contract.test.js +25 -10
  78. package/dist/collectors/__tests__/network.contract.test.js.map +1 -1
  79. package/dist/collectors/console.d.ts +1 -1
  80. package/dist/collectors/console.js.map +1 -1
  81. package/dist/collectors/dom.d.ts +1 -1
  82. package/dist/collectors/network.d.ts +1 -1
  83. package/dist/collectors/network.js.map +1 -1
  84. package/dist/commandRegistry.d.ts +11 -0
  85. package/dist/commandRegistry.d.ts.map +1 -0
  86. package/dist/commandRegistry.js +45 -0
  87. package/dist/commandRegistry.js.map +1 -0
  88. package/dist/commands/__tests__/cdp.contract.test.d.ts +24 -0
  89. package/dist/commands/__tests__/cdp.contract.test.d.ts.map +1 -0
  90. package/dist/commands/__tests__/cdp.contract.test.js +466 -0
  91. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -0
  92. package/dist/commands/__tests__/domEval.contract.test.d.ts +17 -0
  93. package/dist/commands/__tests__/domEval.contract.test.d.ts.map +1 -0
  94. package/dist/commands/__tests__/domEval.contract.test.js +231 -0
  95. package/dist/commands/__tests__/domEval.contract.test.js.map +1 -0
  96. package/dist/commands/cdp.d.ts +8 -0
  97. package/dist/commands/cdp.d.ts.map +1 -0
  98. package/dist/commands/cdp.js +45 -0
  99. package/dist/commands/cdp.js.map +1 -0
  100. package/dist/commands/cleanup.d.ts +8 -0
  101. package/dist/commands/cleanup.d.ts.map +1 -0
  102. package/dist/commands/cleanup.js +170 -0
  103. package/dist/commands/cleanup.js.map +1 -0
  104. package/dist/commands/console.d.ts +8 -0
  105. package/dist/commands/console.d.ts.map +1 -0
  106. package/dist/commands/console.js +92 -0
  107. package/dist/commands/console.js.map +1 -0
  108. package/dist/commands/details.d.ts +8 -0
  109. package/dist/commands/details.d.ts.map +1 -0
  110. package/dist/commands/details.js +68 -0
  111. package/dist/commands/details.js.map +1 -0
  112. package/dist/commands/dom.d.ts +8 -0
  113. package/dist/commands/dom.d.ts.map +1 -0
  114. package/dist/commands/dom.js +249 -0
  115. package/dist/commands/dom.js.map +1 -0
  116. package/dist/commands/domErrorHandler.d.ts +45 -0
  117. package/dist/commands/domErrorHandler.d.ts.map +1 -0
  118. package/dist/commands/domErrorHandler.js +71 -0
  119. package/dist/commands/domErrorHandler.js.map +1 -0
  120. package/dist/commands/domEvalHelpers.d.ts +48 -0
  121. package/dist/commands/domEvalHelpers.d.ts.map +1 -0
  122. package/dist/commands/domEvalHelpers.js +72 -0
  123. package/dist/commands/domEvalHelpers.js.map +1 -0
  124. package/dist/commands/domOptionsBuilder.d.ts +35 -0
  125. package/dist/commands/domOptionsBuilder.d.ts.map +1 -0
  126. package/dist/commands/domOptionsBuilder.js +51 -0
  127. package/dist/commands/domOptionsBuilder.js.map +1 -0
  128. package/dist/commands/domSelectorParser.d.ts +20 -0
  129. package/dist/commands/domSelectorParser.d.ts.map +1 -0
  130. package/dist/commands/domSelectorParser.js +20 -0
  131. package/dist/commands/domSelectorParser.js.map +1 -0
  132. package/dist/commands/network.d.ts +8 -0
  133. package/dist/commands/network.d.ts.map +1 -0
  134. package/dist/commands/network.js +41 -0
  135. package/dist/commands/network.js.map +1 -0
  136. package/dist/commands/peek.d.ts +8 -0
  137. package/dist/commands/peek.d.ts.map +1 -0
  138. package/dist/commands/peek.js +115 -0
  139. package/dist/commands/peek.js.map +1 -0
  140. package/dist/commands/shared/CommandRunner.d.ts +62 -0
  141. package/dist/commands/shared/CommandRunner.d.ts.map +1 -0
  142. package/dist/commands/shared/CommandRunner.js +97 -0
  143. package/dist/commands/shared/CommandRunner.js.map +1 -0
  144. package/dist/commands/shared/OutputBuilder.d.ts +60 -0
  145. package/dist/commands/shared/OutputBuilder.d.ts.map +1 -0
  146. package/dist/commands/shared/OutputBuilder.js +138 -0
  147. package/dist/commands/shared/OutputBuilder.js.map +1 -0
  148. package/dist/commands/shared/commonOptions.d.ts +54 -0
  149. package/dist/commands/shared/commonOptions.d.ts.map +1 -0
  150. package/dist/commands/shared/commonOptions.js +65 -0
  151. package/dist/commands/shared/commonOptions.js.map +1 -0
  152. package/dist/commands/shared/daemonSessionController.d.ts +23 -0
  153. package/dist/commands/shared/daemonSessionController.d.ts.map +1 -0
  154. package/dist/commands/shared/daemonSessionController.js +79 -0
  155. package/dist/commands/shared/daemonSessionController.js.map +1 -0
  156. package/dist/commands/shared/landingPage.d.ts +8 -0
  157. package/dist/commands/shared/landingPage.d.ts.map +1 -0
  158. package/dist/commands/shared/landingPage.js +8 -0
  159. package/dist/commands/shared/landingPage.js.map +1 -0
  160. package/dist/commands/shared/sessionController.d.ts +21 -0
  161. package/dist/commands/shared/sessionController.d.ts.map +1 -0
  162. package/dist/commands/shared/sessionController.js +54 -0
  163. package/dist/commands/shared/sessionController.js.map +1 -0
  164. package/dist/commands/start.d.ts +9 -0
  165. package/dist/commands/start.d.ts.map +1 -0
  166. package/dist/commands/start.js +85 -0
  167. package/dist/commands/start.js.map +1 -0
  168. package/dist/{cli/commands/query.d.ts → commands/status.d.ts} +3 -3
  169. package/dist/commands/status.d.ts.map +1 -0
  170. package/dist/commands/status.js +88 -0
  171. package/dist/commands/status.js.map +1 -0
  172. package/dist/commands/stop.d.ts +8 -0
  173. package/dist/commands/stop.d.ts.map +1 -0
  174. package/dist/commands/stop.js +152 -0
  175. package/dist/commands/stop.js.map +1 -0
  176. package/dist/commands.d.ts +11 -0
  177. package/dist/commands.d.ts.map +1 -0
  178. package/dist/commands.js +45 -0
  179. package/dist/commands.js.map +1 -0
  180. package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -1
  181. package/dist/connection/__tests__/cdp.contract.test.js +1 -2
  182. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
  183. package/dist/connection/__tests__/finder.contract.test.js +1 -1
  184. package/dist/connection/__tests__/finder.contract.test.js.map +1 -1
  185. package/dist/connection/cdp.d.ts +1 -1
  186. package/dist/connection/cdp.js.map +1 -1
  187. package/dist/connection/domOperations.d.ts +48 -0
  188. package/dist/connection/domOperations.d.ts.map +1 -0
  189. package/dist/connection/domOperations.js +104 -0
  190. package/dist/connection/domOperations.js.map +1 -0
  191. package/dist/connection/finder.js.map +1 -1
  192. package/dist/connection/launcher.d.ts +7 -3
  193. package/dist/connection/launcher.d.ts.map +1 -1
  194. package/dist/connection/launcher.js +82 -21
  195. package/dist/connection/launcher.js.map +1 -1
  196. package/dist/constants.d.ts +17 -0
  197. package/dist/constants.d.ts.map +1 -1
  198. package/dist/constants.js +28 -0
  199. package/dist/constants.js.map +1 -1
  200. package/dist/daemon/__tests__/ipcServer.contract.test.js +25 -11
  201. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  202. package/dist/daemon/ipcServer.d.ts.map +1 -1
  203. package/dist/daemon/ipcServer.js +86 -6
  204. package/dist/daemon/ipcServer.js.map +1 -1
  205. package/dist/daemon/launcher.d.ts.map +1 -1
  206. package/dist/daemon/launcher.js +8 -6
  207. package/dist/daemon/launcher.js.map +1 -1
  208. package/dist/daemon/startSession.d.ts +2 -2
  209. package/dist/daemon/startSession.d.ts.map +1 -1
  210. package/dist/daemon/startSession.js +14 -11
  211. package/dist/daemon/startSession.js.map +1 -1
  212. package/dist/daemon/worker.d.ts +1 -1
  213. package/dist/daemon/worker.js +179 -52
  214. package/dist/daemon/worker.js.map +1 -1
  215. package/dist/{cli/collectors/helpers/domCache.d.ts → dom/cache.d.ts} +1 -5
  216. package/dist/dom/cache.d.ts.map +1 -0
  217. package/dist/{cli/collectors/helpers/domCache.js → dom/cache.js} +5 -19
  218. package/dist/dom/cache.js.map +1 -0
  219. package/dist/dom/index.d.ts +9 -0
  220. package/dist/dom/index.d.ts.map +1 -0
  221. package/dist/dom/index.js +9 -0
  222. package/dist/dom/index.js.map +1 -0
  223. package/dist/{cli/collectors/helpers/domQuery.d.ts → dom/query.d.ts} +5 -2
  224. package/dist/dom/query.d.ts.map +1 -0
  225. package/dist/{cli/collectors/helpers/domQuery.js → dom/query.js} +11 -7
  226. package/dist/dom/query.js.map +1 -0
  227. package/dist/index.js +117 -35
  228. package/dist/index.js.map +1 -1
  229. package/dist/ipc/__tests__/client.contract.test.js +11 -1
  230. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  231. package/dist/ipc/client.d.ts +17 -4
  232. package/dist/ipc/client.d.ts.map +1 -1
  233. package/dist/ipc/client.js +26 -6
  234. package/dist/ipc/client.js.map +1 -1
  235. package/dist/ipc/commands.d.ts +52 -1
  236. package/dist/ipc/commands.d.ts.map +1 -1
  237. package/dist/ipc/commands.js +8 -0
  238. package/dist/ipc/commands.js.map +1 -1
  239. package/dist/ipc/types.d.ts +34 -3
  240. package/dist/ipc/types.d.ts.map +1 -1
  241. package/dist/ipc/types.js.map +1 -1
  242. package/dist/session/metadata.d.ts +2 -2
  243. package/dist/session/metadata.d.ts.map +1 -1
  244. package/dist/session/output.d.ts +1 -1
  245. package/dist/session/process.d.ts.map +1 -1
  246. package/dist/session/process.js +4 -3
  247. package/dist/session/process.js.map +1 -1
  248. package/dist/session/queryCache.d.ts +36 -0
  249. package/dist/session/queryCache.d.ts.map +1 -0
  250. package/dist/session/queryCache.js +66 -0
  251. package/dist/session/queryCache.js.map +1 -0
  252. package/dist/telemetry/__tests__/network.contract.test.d.ts +28 -0
  253. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -0
  254. package/dist/telemetry/__tests__/network.contract.test.js +540 -0
  255. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -0
  256. package/dist/telemetry/console.d.ts +19 -0
  257. package/dist/telemetry/console.d.ts.map +1 -0
  258. package/dist/telemetry/console.js +87 -0
  259. package/dist/telemetry/console.js.map +1 -0
  260. package/dist/telemetry/dom.d.ts +21 -0
  261. package/dist/telemetry/dom.d.ts.map +1 -0
  262. package/dist/telemetry/dom.js +99 -0
  263. package/dist/telemetry/dom.js.map +1 -0
  264. package/dist/telemetry/network.d.ts +33 -0
  265. package/dist/telemetry/network.d.ts.map +1 -0
  266. package/dist/telemetry/network.js +191 -0
  267. package/dist/telemetry/network.js.map +1 -0
  268. package/dist/types.d.ts +25 -1
  269. package/dist/types.d.ts.map +1 -1
  270. package/dist/ui/errors.d.ts +39 -0
  271. package/dist/ui/errors.d.ts.map +1 -0
  272. package/dist/ui/errors.js +48 -0
  273. package/dist/ui/errors.js.map +1 -0
  274. package/dist/ui/formatters/cookies.d.ts +32 -0
  275. package/dist/ui/formatters/cookies.d.ts.map +1 -0
  276. package/dist/ui/formatters/cookies.js +45 -0
  277. package/dist/ui/formatters/cookies.js.map +1 -0
  278. package/dist/ui/formatters/details.d.ts +10 -0
  279. package/dist/ui/formatters/details.d.ts.map +1 -0
  280. package/dist/ui/formatters/details.js +61 -0
  281. package/dist/ui/formatters/details.js.map +1 -0
  282. package/dist/ui/formatters/dom.d.ts +135 -0
  283. package/dist/ui/formatters/dom.d.ts.map +1 -0
  284. package/dist/ui/formatters/dom.js +193 -0
  285. package/dist/ui/formatters/dom.js.map +1 -0
  286. package/dist/ui/formatters/index.d.ts +11 -0
  287. package/dist/ui/formatters/index.d.ts.map +1 -0
  288. package/dist/ui/formatters/index.js +11 -0
  289. package/dist/ui/formatters/index.js.map +1 -0
  290. package/dist/ui/formatters/preview.d.ts +25 -0
  291. package/dist/ui/formatters/preview.d.ts.map +1 -0
  292. package/dist/ui/formatters/preview.js +182 -0
  293. package/dist/ui/formatters/preview.js.map +1 -0
  294. package/dist/ui/formatters/status.d.ts +39 -0
  295. package/dist/ui/formatters/status.d.ts.map +1 -0
  296. package/dist/ui/formatters/status.js +153 -0
  297. package/dist/ui/formatters/status.js.map +1 -0
  298. package/dist/ui/formatting.d.ts +300 -0
  299. package/dist/ui/formatting.d.ts.map +1 -0
  300. package/dist/ui/formatting.js +454 -0
  301. package/dist/ui/formatting.js.map +1 -0
  302. package/dist/ui/messages/chrome.d.ts +172 -0
  303. package/dist/ui/messages/chrome.d.ts.map +1 -0
  304. package/dist/ui/messages/chrome.js +253 -0
  305. package/dist/ui/messages/chrome.js.map +1 -0
  306. package/dist/ui/messages/commands.d.ts +88 -0
  307. package/dist/ui/messages/commands.d.ts.map +1 -0
  308. package/dist/ui/messages/commands.js +150 -0
  309. package/dist/ui/messages/commands.js.map +1 -0
  310. package/dist/ui/messages/consoleMessages.d.ts +39 -0
  311. package/dist/ui/messages/consoleMessages.d.ts.map +1 -0
  312. package/dist/ui/messages/consoleMessages.js +48 -0
  313. package/dist/ui/messages/consoleMessages.js.map +1 -0
  314. package/dist/ui/messages/debug.d.ts +182 -0
  315. package/dist/ui/messages/debug.d.ts.map +1 -0
  316. package/dist/ui/messages/debug.js +243 -0
  317. package/dist/ui/messages/debug.js.map +1 -0
  318. package/dist/ui/messages/errors.d.ts +91 -0
  319. package/dist/ui/messages/errors.d.ts.map +1 -0
  320. package/dist/ui/messages/errors.js +135 -0
  321. package/dist/ui/messages/errors.js.map +1 -0
  322. package/dist/ui/messages/index.d.ts +12 -0
  323. package/dist/ui/messages/index.d.ts.map +1 -0
  324. package/dist/ui/messages/index.js +12 -0
  325. package/dist/ui/messages/index.js.map +1 -0
  326. package/dist/ui/messages/internal.d.ts +30 -0
  327. package/dist/ui/messages/internal.d.ts.map +1 -0
  328. package/dist/ui/messages/internal.js +42 -0
  329. package/dist/ui/messages/internal.js.map +1 -0
  330. package/dist/ui/messages/preview.d.ts +51 -0
  331. package/dist/ui/messages/preview.d.ts.map +1 -0
  332. package/dist/ui/messages/preview.js +76 -0
  333. package/dist/ui/messages/preview.js.map +1 -0
  334. package/dist/ui/messages/session.d.ts +54 -0
  335. package/dist/ui/messages/session.d.ts.map +1 -0
  336. package/dist/ui/messages/session.js +77 -0
  337. package/dist/ui/messages/session.js.map +1 -0
  338. package/dist/ui/messages/validation.d.ts +34 -0
  339. package/dist/ui/messages/validation.d.ts.map +1 -0
  340. package/dist/ui/messages/validation.js +38 -0
  341. package/dist/ui/messages/validation.js.map +1 -0
  342. package/dist/utils/__tests__/filters.unit.test.js +1 -1
  343. package/dist/utils/cdpHandlers.d.ts +1 -1
  344. package/dist/utils/cdpHandlers.js +1 -1
  345. package/dist/utils/chromeDiagnostics.d.ts +0 -12
  346. package/dist/utils/chromeDiagnostics.d.ts.map +1 -1
  347. package/dist/utils/chromeDiagnostics.js +0 -51
  348. package/dist/utils/chromeDiagnostics.js.map +1 -1
  349. package/dist/utils/filters.js +1 -1
  350. package/dist/utils/filters.js.map +1 -1
  351. package/dist/utils/http.d.ts +1 -1
  352. package/dist/utils/http.js.map +1 -1
  353. package/dist/utils/logger.d.ts +68 -12
  354. package/dist/utils/logger.d.ts.map +1 -1
  355. package/dist/utils/logger.js +62 -12
  356. package/dist/utils/logger.js.map +1 -1
  357. package/dist/utils/pageReadiness.d.ts +46 -0
  358. package/dist/utils/pageReadiness.d.ts.map +1 -0
  359. package/dist/utils/pageReadiness.js +271 -0
  360. package/dist/utils/pageReadiness.js.map +1 -0
  361. package/dist/utils/ui.d.ts +36 -0
  362. package/dist/utils/ui.d.ts.map +1 -0
  363. package/dist/utils/ui.js +47 -0
  364. package/dist/utils/ui.js.map +1 -0
  365. package/dist/utils/url.d.ts +60 -26
  366. package/dist/utils/url.d.ts.map +1 -1
  367. package/dist/utils/url.js +130 -84
  368. package/dist/utils/url.js.map +1 -1
  369. package/package.json +2 -5
  370. package/dist/cli/collectors/dom.d.ts.map +0 -1
  371. package/dist/cli/collectors/dom.js +0 -361
  372. package/dist/cli/collectors/dom.js.map +0 -1
  373. package/dist/cli/collectors/helpers/domCache.d.ts.map +0 -1
  374. package/dist/cli/collectors/helpers/domCache.js.map +0 -1
  375. package/dist/cli/collectors/helpers/domQuery.d.ts.map +0 -1
  376. package/dist/cli/collectors/helpers/domQuery.js.map +0 -1
  377. package/dist/cli/collectors/helpers/selectorParser.d.ts.map +0 -1
  378. package/dist/cli/collectors/helpers/selectorParser.js.map +0 -1
  379. package/dist/cli/commands/__tests__/ipcTest.test.d.ts +0 -2
  380. package/dist/cli/commands/__tests__/ipcTest.test.d.ts.map +0 -1
  381. package/dist/cli/commands/__tests__/ipcTest.test.js +0 -37
  382. package/dist/cli/commands/__tests__/ipcTest.test.js.map +0 -1
  383. package/dist/cli/commands/ipcTest.d.ts +0 -23
  384. package/dist/cli/commands/ipcTest.d.ts.map +0 -1
  385. package/dist/cli/commands/ipcTest.js +0 -181
  386. package/dist/cli/commands/ipcTest.js.map +0 -1
  387. package/dist/cli/commands/query.d.ts.map +0 -1
  388. package/dist/cli/commands/query.js +0 -127
  389. package/dist/cli/commands/query.js.map +0 -1
  390. package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
  391. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
  392. package/dist/cli/handlers/ChromeBootstrap.js +0 -50
  393. package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
  394. package/dist/cli/handlers/OutputWriter.d.ts +0 -15
  395. package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
  396. package/dist/cli/handlers/OutputWriter.js +0 -34
  397. package/dist/cli/handlers/OutputWriter.js.map +0 -1
  398. package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
  399. package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
  400. package/dist/cli/handlers/PreviewWriter.js +0 -119
  401. package/dist/cli/handlers/PreviewWriter.js.map +0 -1
  402. package/dist/cli/handlers/SessionLock.d.ts +0 -16
  403. package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
  404. package/dist/cli/handlers/SessionLock.js +0 -38
  405. package/dist/cli/handlers/SessionLock.js.map +0 -1
  406. package/dist/cli/handlers/SessionLoop.d.ts +0 -19
  407. package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
  408. package/dist/cli/handlers/SessionLoop.js +0 -47
  409. package/dist/cli/handlers/SessionLoop.js.map +0 -1
  410. package/dist/cli/handlers/ShutdownController.d.ts +0 -38
  411. package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
  412. package/dist/cli/handlers/ShutdownController.js +0 -83
  413. package/dist/cli/handlers/ShutdownController.js.map +0 -1
  414. package/dist/cli/handlers/SignalHandler.d.ts +0 -35
  415. package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
  416. package/dist/cli/handlers/SignalHandler.js +0 -81
  417. package/dist/cli/handlers/SignalHandler.js.map +0 -1
  418. package/dist/cli/handlers/TargetSetup.d.ts +0 -42
  419. package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
  420. package/dist/cli/handlers/TargetSetup.js +0 -87
  421. package/dist/cli/handlers/TargetSetup.js.map +0 -1
  422. package/dist/connection/__tests__/tabs.contract.test.d.ts +0 -2
  423. package/dist/connection/__tests__/tabs.contract.test.d.ts.map +0 -1
  424. package/dist/connection/__tests__/tabs.contract.test.js +0 -137
  425. package/dist/connection/__tests__/tabs.contract.test.js.map +0 -1
  426. package/dist/connection/tabs.d.ts +0 -82
  427. package/dist/connection/tabs.d.ts.map +0 -1
  428. package/dist/connection/tabs.js +0 -577
  429. package/dist/connection/tabs.js.map +0 -1
  430. package/dist/session/BdgSession.d.ts +0 -129
  431. package/dist/session/BdgSession.d.ts.map +0 -1
  432. package/dist/session/BdgSession.js +0 -270
  433. package/dist/session/BdgSession.js.map +0 -1
  434. package/dist/session/index.d.ts +0 -15
  435. package/dist/session/index.d.ts.map +0 -1
  436. package/dist/session/index.js +0 -23
  437. package/dist/session/index.js.map +0 -1
  438. package/dist/utils/validation.d.ts +0 -12
  439. package/dist/utils/validation.d.ts.map +0 -1
  440. package/dist/utils/validation.js +0 -20
  441. package/dist/utils/validation.js.map +0 -1
  442. /package/dist/cli/{collectors → commands}/dom.d.ts +0 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Get document root node ID
3
+ *
4
+ * @param cdp - CDP connection instance
5
+ * @returns Root node ID
6
+ * @throws Error When CDP command fails or connection is lost
7
+ */
8
+ export async function getDocumentRoot(cdp) {
9
+ const result = (await cdp.send('DOM.getDocument', { depth: -1 }));
10
+ return result.root.nodeId;
11
+ }
12
+ /**
13
+ * Query DOM by CSS selector
14
+ *
15
+ * @param cdp - CDP connection instance
16
+ * @param selector - CSS selector to query
17
+ * @param rootNodeId - Optional root node ID (defaults to document root)
18
+ * @returns Array of node IDs matching the selector
19
+ * @throws Error When CDP command fails or selector is invalid
20
+ */
21
+ export async function queryBySelector(cdp, selector, rootNodeId) {
22
+ // Get root node if not provided
23
+ const nodeId = rootNodeId ?? (await getDocumentRoot(cdp));
24
+ const result = (await cdp.send('DOM.querySelectorAll', {
25
+ nodeId,
26
+ selector,
27
+ }));
28
+ return result.nodeIds;
29
+ }
30
+ /**
31
+ * Get node information
32
+ *
33
+ * @param cdp - CDP connection instance
34
+ * @param nodeId - Node ID to query
35
+ * @returns Node information including tag, classes, attributes
36
+ * @throws Error When CDP command fails or nodeId is invalid
37
+ */
38
+ export async function getNodeInfo(cdp, nodeId) {
39
+ // Get node description
40
+ const describeResult = (await cdp.send('DOM.describeNode', {
41
+ nodeId,
42
+ }));
43
+ const node = describeResult.node;
44
+ // Parse attributes array into object
45
+ const attributes = {};
46
+ if (node.attributes) {
47
+ for (let i = 0; i < node.attributes.length; i += 2) {
48
+ const key = node.attributes[i];
49
+ const value = node.attributes[i + 1];
50
+ if (key !== undefined && value !== undefined) {
51
+ attributes[key] = value;
52
+ }
53
+ }
54
+ }
55
+ // Extract classes from class attribute
56
+ const classes = attributes['class']?.split(/\s+/).filter((c) => c.length > 0) ?? [];
57
+ // Get outer HTML
58
+ const htmlResult = (await cdp.send('DOM.getOuterHTML', {
59
+ nodeId,
60
+ }));
61
+ // Extract text content by removing HTML tags
62
+ // Uses simple regex to strip tags while preserving text content including < and > in text
63
+ // SAFETY: This HTML comes from Chrome's internal DOM via CDP, not user input.
64
+ // It's trusted browser-generated content used only for display/analysis in CLI output.
65
+ // The regex is intentionally simple because we're extracting text, not sanitizing for XSS.
66
+ const textContent = htmlResult.outerHTML
67
+ .replace(/<[^>]*>/g, '') // Remove HTML tags
68
+ .replace(/\s+/g, ' ') // Collapse whitespace
69
+ .trim();
70
+ return {
71
+ nodeId,
72
+ tag: node.nodeName.toLowerCase(),
73
+ classes,
74
+ attributes,
75
+ outerHTML: htmlResult.outerHTML,
76
+ textContent,
77
+ };
78
+ }
79
+ /**
80
+ * Create preview text for a node
81
+ *
82
+ * @param nodeInfo - Node information
83
+ * @param maxLength - Maximum preview length (default: 50)
84
+ * @returns Preview text
85
+ */
86
+ export function createNodePreview(nodeInfo, maxLength = 50) {
87
+ // If we have text content, use that
88
+ if (nodeInfo.textContent && nodeInfo.textContent.length > 0) {
89
+ const text = nodeInfo.textContent;
90
+ if (text.length > maxLength) {
91
+ return text.slice(0, maxLength) + '...';
92
+ }
93
+ return text;
94
+ }
95
+ // Otherwise show the opening tag
96
+ const tag = nodeInfo.tag ?? 'unknown';
97
+ const classAttr = nodeInfo.classes && nodeInfo.classes.length > 0 ? ` class="${nodeInfo.classes.join(' ')}"` : '';
98
+ const preview = `<${tag}${classAttr}>`;
99
+ if (preview.length > maxLength) {
100
+ return preview.slice(0, maxLength) + '...';
101
+ }
102
+ return preview;
103
+ }
104
+ //# sourceMappingURL=domOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domOperations.js","sourceRoot":"","sources":["../../src/connection/domOperations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"finder.js","sourceRoot":"","sources":["../../src/connection/finder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAI,GAAG,gBAAgB;IAC5E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"finder.js","sourceRoot":"","sources":["../../src/connection/finder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAI,GAAG,gBAAgB;IAC5E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAChD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Options as ChromeLaunchOptions } from 'chrome-launcher';
2
- import type { LaunchedChrome } from '../types.js';
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.
@@ -24,10 +24,14 @@ export interface LaunchOptions extends Pick<ChromeLaunchOptions, 'logLevel' | 'c
24
24
  * Supports macOS, Linux, and Windows. Chrome will be launched with
25
25
  * the specified debugging port and user data directory.
26
26
  *
27
+ * Validates Chrome process is alive after launch to detect immediate crashes
28
+ * or port conflicts. Includes Chrome installation diagnostics in error messages
29
+ * to aid troubleshooting.
30
+ *
27
31
  * @param options - Launch configuration options
28
32
  * @returns LaunchedChrome instance with PID and kill method
29
- * @throws ChromeLaunchError if Chrome fails to launch or CDP doesn't become available
30
- * @throws Error if port is invalid or user data directory cannot be created
33
+ * @throws ChromeLaunchError if Chrome fails to launch, process dies immediately, or CDP doesn't become available
34
+ * @throws Error if user data directory cannot be created
31
35
  *
32
36
  * @remarks
33
37
  * Chrome 136+ requires --user-data-dir with a non-default directory.
@@ -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;AAWtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA6C9C;;;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,CAChB;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;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8CvF"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/connection/launcher.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAYtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuD9C;;;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,CAChB;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;CAChC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2GvF"}
@@ -1,23 +1,31 @@
1
+ import { execSync } from 'child_process';
1
2
  import * as fs from 'fs';
2
3
  import * as os from 'os';
3
4
  import * as path from 'path';
4
5
  import * as chromeLauncher from 'chrome-launcher';
5
6
  import { BDG_CHROME_FLAGS, BDG_CHROME_PREFS, DEFAULT_CDP_PORT, DEFAULT_CHROME_LOG_LEVEL, DEFAULT_CHROME_HANDLE_SIGINT, CHROME_PROFILE_DIR, HEADLESS_FLAG, } from '../constants.js';
7
+ import { isProcessAlive } from '../session/process.js';
8
+ import { formatDiagnosticsForError, chromeLaunchStartMessage, chromeLaunchSuccessMessage, chromeUserDataDirMessage, invalidPortError, userDataDirError, prefsFileNotFoundError, invalidPrefsFormatError, prefsLoadError, chromeLaunchFailedError, } from '../ui/messages/chrome.js';
9
+ import { getChromeDiagnostics } from '../utils/chromeDiagnostics.js';
6
10
  import { ChromeLaunchError, getErrorMessage } from '../utils/errors.js';
11
+ import { createLogger } from '../utils/logger.js';
7
12
  import { filterDefined } from '../utils/objects.js';
8
- const CHROME_LAUNCH_START_MESSAGE = (port) => `Launching Chrome with CDP on port ${port}...`;
9
- const CHROME_LAUNCH_SUCCESS_MESSAGE = (pid, duration) => `Chrome launched successfully (PID: ${pid})\nLaunch duration: ${duration}ms`;
10
- // Error Messages
11
- const INVALID_PORT_ERROR = (port) => `Invalid port number: ${port}. Port must be between 1 and 65535.`;
12
- const USER_DATA_DIR_ERROR = (dir, error) => `Failed to create user data directory at ${dir}: ${error}`;
13
- const PREFS_FILE_NOT_FOUND_ERROR = (file) => `Chrome preferences file not found: ${file}`;
14
- const INVALID_PREFS_FORMAT_ERROR = (file, type) => `Invalid Chrome preferences format in ${file}: expected object, got ${type}`;
15
- const PREFS_LOAD_ERROR = (file, error) => `Failed to load Chrome preferences from ${file}: ${error}`;
16
- const CHROME_LAUNCH_ERROR = (error) => `Failed to launch Chrome: ${error}`;
13
+ const log = createLogger('chrome');
14
+ /**
15
+ * Get formatted Chrome diagnostics for error messages.
16
+ *
17
+ * Retrieves Chrome installation information and formats it for display
18
+ * in error messages. Uses cached diagnostics to avoid repeated filesystem scans.
19
+ *
20
+ * @returns Array of formatted diagnostic strings
21
+ */
22
+ function getFormattedDiagnostics() {
23
+ const diagnostics = getChromeDiagnostics();
24
+ return formatDiagnosticsForError(diagnostics);
25
+ }
17
26
  // Other Constants
18
27
  const FILE_NOT_EXIST_ERROR = 'File does not exist';
19
28
  const INVALID_JSON_STRUCTURE_ERROR = 'Invalid JSON structure';
20
- const USER_DATA_DIR_LOG = (dir) => `User data directory: ${dir}`;
21
29
  const REMOTE_DEBUGGING_FLAG = (port) => `--remote-debugging-port=${port}`;
22
30
  /**
23
31
  * Launch Chrome with remote debugging enabled using chrome-launcher.
@@ -25,10 +33,14 @@ const REMOTE_DEBUGGING_FLAG = (port) => `--remote-debugging-port=${port}`;
25
33
  * Supports macOS, Linux, and Windows. Chrome will be launched with
26
34
  * the specified debugging port and user data directory.
27
35
  *
36
+ * Validates Chrome process is alive after launch to detect immediate crashes
37
+ * or port conflicts. Includes Chrome installation diagnostics in error messages
38
+ * to aid troubleshooting.
39
+ *
28
40
  * @param options - Launch configuration options
29
41
  * @returns LaunchedChrome instance with PID and kill method
30
- * @throws ChromeLaunchError if Chrome fails to launch or CDP doesn't become available
31
- * @throws Error if port is invalid or user data directory cannot be created
42
+ * @throws ChromeLaunchError if Chrome fails to launch, process dies immediately, or CDP doesn't become available
43
+ * @throws Error if user data directory cannot be created
32
44
  *
33
45
  * @remarks
34
46
  * Chrome 136+ requires --user-data-dir with a non-default directory.
@@ -38,11 +50,32 @@ export async function launchChrome(options = {}) {
38
50
  const port = options.port ?? DEFAULT_CDP_PORT;
39
51
  // Validate port range
40
52
  if (port < 1 || port > 65535) {
41
- throw new Error(INVALID_PORT_ERROR(port));
53
+ throw new ChromeLaunchError(invalidPortError(port));
54
+ }
55
+ // Check if port is already in use by orphaned Chrome process
56
+ // This prevents confusing launch failures when cleanup didn't fully remove Chrome
57
+ // Platform-specific: macOS/Linux only (Windows uses different approach)
58
+ try {
59
+ const portInUse = execSync(`lsof -ti:${port} 2>/dev/null || true`, { encoding: 'utf8' }).trim();
60
+ if (portInUse) {
61
+ throw new ChromeLaunchError(`Port ${port} is already in use by process ${portInUse}\n\n` +
62
+ `This usually means Chrome is still running from a previous session.\n\n` +
63
+ `Try:\n` +
64
+ ` - bdg cleanup --aggressive (kills all Chrome processes)\n` +
65
+ ` - bdg cleanup --force (removes session files + kills Chrome on port ${port})\n` +
66
+ ` - kill ${portInUse} (manually kill the process)\n` +
67
+ ` - Use different port: bdg <url> --port ${port + 1}`);
68
+ }
69
+ }
70
+ catch (error) {
71
+ // Re-throw ChromeLaunchError, ignore other errors (lsof not available, etc.)
72
+ if (error instanceof ChromeLaunchError) {
73
+ throw error;
74
+ }
42
75
  }
43
76
  const userDataDir = options.userDataDir ?? getPersistentUserDataDir();
44
- console.error(CHROME_LAUNCH_START_MESSAGE(port));
45
- console.error(USER_DATA_DIR_LOG(userDataDir));
77
+ log.info(chromeLaunchStartMessage(port));
78
+ log.debug(chromeUserDataDirMessage(userDataDir));
46
79
  const chromeOptions = buildChromeOptions(options);
47
80
  const launcher = new chromeLauncher.Launcher(chromeOptions);
48
81
  try {
@@ -51,7 +84,29 @@ export async function launchChrome(options = {}) {
51
84
  await launcher.waitUntilReady();
52
85
  const launchDurationMs = Date.now() - launchStart;
53
86
  const chromeProcessPid = launcher.pid ?? 0;
54
- console.error(CHROME_LAUNCH_SUCCESS_MESSAGE(chromeProcessPid, launchDurationMs));
87
+ // Validate PID and process liveness before success
88
+ if (!chromeProcessPid || chromeProcessPid <= 0 || !isProcessAlive(chromeProcessPid)) {
89
+ launcher.kill();
90
+ launcher.destroyTmp();
91
+ // Get Chrome diagnostics once for error context
92
+ const diagnosticLines = getFormattedDiagnostics();
93
+ const errorType = !chromeProcessPid || chromeProcessPid <= 0
94
+ ? 'failed to launch'
95
+ : 'died immediately after launch';
96
+ throw new ChromeLaunchError(`Chrome ${errorType} (PID: ${chromeProcessPid})\n\n` +
97
+ `Possible causes:\n` +
98
+ ` - Port ${port} conflict (check: lsof -ti:${port})\n` +
99
+ ` - Chrome binary not found\n` +
100
+ ` - Insufficient permissions\n` +
101
+ ` - Chrome crashed on startup\n\n` +
102
+ `${diagnosticLines.join('\n')}\n\n` +
103
+ `Try:\n` +
104
+ ` - bdg cleanup\n` +
105
+ ` - Kill conflicting process: kill $(lsof -ti:${port})\n` +
106
+ ` - Use different port: bdg <url> --port ${port + 1}`);
107
+ }
108
+ // Only print success message after validating PID and process liveness
109
+ log.info(chromeLaunchSuccessMessage(chromeProcessPid, launchDurationMs));
55
110
  return {
56
111
  pid: chromeProcessPid,
57
112
  port: launcher.port ?? port,
@@ -68,7 +123,13 @@ export async function launchChrome(options = {}) {
68
123
  catch (error) {
69
124
  launcher.kill();
70
125
  launcher.destroyTmp();
71
- throw new ChromeLaunchError(CHROME_LAUNCH_ERROR(getErrorMessage(error)), error instanceof Error ? error : undefined);
126
+ // If it's already a ChromeLaunchError with diagnostics, just re-throw
127
+ if (error instanceof ChromeLaunchError) {
128
+ throw error;
129
+ }
130
+ // For generic launch failures, add Chrome diagnostics
131
+ const diagnosticLines = getFormattedDiagnostics();
132
+ throw new ChromeLaunchError(`${chromeLaunchFailedError(getErrorMessage(error))}\n\n${diagnosticLines.join('\n')}`, error instanceof Error ? error : undefined);
72
133
  }
73
134
  }
74
135
  /**
@@ -89,7 +150,7 @@ function getPersistentUserDataDir() {
89
150
  fs.mkdirSync(userDataDir, { recursive: true });
90
151
  }
91
152
  catch (error) {
92
- throw new Error(USER_DATA_DIR_ERROR(userDataDir, getErrorMessage(error)));
153
+ throw new Error(userDataDirError(userDataDir, getErrorMessage(error)));
93
154
  }
94
155
  }
95
156
  return userDataDir;
@@ -109,13 +170,13 @@ function loadChromePrefs(options) {
109
170
  if (options.prefsFile) {
110
171
  // Validate file exists before attempting to read
111
172
  if (!fs.existsSync(options.prefsFile)) {
112
- throw new ChromeLaunchError(PREFS_FILE_NOT_FOUND_ERROR(options.prefsFile), new Error(FILE_NOT_EXIST_ERROR));
173
+ throw new ChromeLaunchError(prefsFileNotFoundError(options.prefsFile), new Error(FILE_NOT_EXIST_ERROR));
113
174
  }
114
175
  try {
115
176
  const prefsContent = fs.readFileSync(options.prefsFile, 'utf8');
116
177
  const parsed = JSON.parse(prefsContent);
117
178
  if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
118
- throw new ChromeLaunchError(INVALID_PREFS_FORMAT_ERROR(options.prefsFile, typeof parsed), new Error(INVALID_JSON_STRUCTURE_ERROR));
179
+ throw new ChromeLaunchError(invalidPrefsFormatError(options.prefsFile, typeof parsed), new Error(INVALID_JSON_STRUCTURE_ERROR));
119
180
  }
120
181
  return parsed;
121
182
  }
@@ -123,7 +184,7 @@ function loadChromePrefs(options) {
123
184
  if (error instanceof ChromeLaunchError) {
124
185
  throw error;
125
186
  }
126
- throw new ChromeLaunchError(PREFS_LOAD_ERROR(options.prefsFile, getErrorMessage(error)), error instanceof Error ? error : undefined);
187
+ throw new ChromeLaunchError(prefsLoadError(options.prefsFile, getErrorMessage(error)), error instanceof Error ? error : undefined);
127
188
  }
128
189
  }
129
190
  return options.prefs;
@@ -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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"}
@@ -184,6 +184,23 @@ export declare const STALE_REQUEST_CLEANUP_INTERVAL = 30000;
184
184
  * How often to log memory statistics during session collection
185
185
  */
186
186
  export declare const MEMORY_LOG_INTERVAL = 30000;
187
+ /**
188
+ * Default page readiness timeout (2 seconds)
189
+ * Maximum time to wait for page to be ready before proceeding
190
+ * Uses adaptive detection for load, network stability, and DOM stability
191
+ */
192
+ export declare const DEFAULT_PAGE_READINESS_TIMEOUT_MS = 2000;
193
+ /**
194
+ * IPC request timeout in milliseconds (45 seconds in production, 5 seconds in tests)
195
+ * Maximum time to wait for IPC responses from daemon
196
+ * Must accommodate: Chrome launch (~2s) + Page readiness detection (up to 30s) + buffer (~13s)
197
+ *
198
+ * Can be overridden via BDG_IPC_TIMEOUT_MS environment variable (used by tests)
199
+ *
200
+ * @returns IPC request timeout in milliseconds
201
+ * @see docs/IMPROVEMENTS_ANALYSIS.md - Issue #3: Smart Page Readiness Detection
202
+ */
203
+ export declare function getIPCRequestTimeout(): number;
187
204
  /**
188
205
  * Description for port option in CLI commands
189
206
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAM5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAEpD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAMzC;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,4BAA4B,sDAAsD,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,gCAAgC,gEACkB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIpD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAMtD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,4BAA4B,sDAAsD,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,gCAAgC,gEACkB,CAAC"}
package/dist/constants.js CHANGED
@@ -137,6 +137,8 @@ export const BDG_CHROME_FLAGS = [
137
137
  '--disable-search-engine-choice-screen',
138
138
  '--disable-session-crashed-bubble', // Suppress "Restore Pages?" popup after unclean shutdown
139
139
  '--disable-infobars', // Disable all info bars including restore prompt
140
+ '--disable-notifications', // Suppress notification permission prompts
141
+ '--disable-features=Translate', // Suppress Google Translate popup (replaces deprecated --disable-translate)
140
142
  ];
141
143
  /**
142
144
  * BDG-specific Chrome preferences for automation
@@ -148,6 +150,8 @@ export const BDG_CHROME_FLAGS = [
148
150
  */
149
151
  export const BDG_CHROME_PREFS = {
150
152
  'browser.show_quit_confirmation_dialog': false, // Disable quit confirmation for automation
153
+ 'translate.enabled': false, // Disable Google Translate popup
154
+ translate_site_blacklist: ['*'], // Block translate for all sites
151
155
  };
152
156
  // ============================================================================
153
157
  // DATA COLLECTION LIMITS
@@ -204,6 +208,30 @@ export const STALE_REQUEST_CLEANUP_INTERVAL = 30000;
204
208
  * How often to log memory statistics during session collection
205
209
  */
206
210
  export const MEMORY_LOG_INTERVAL = 30000;
211
+ /**
212
+ * Default page readiness timeout (2 seconds)
213
+ * Maximum time to wait for page to be ready before proceeding
214
+ * Uses adaptive detection for load, network stability, and DOM stability
215
+ */
216
+ export const DEFAULT_PAGE_READINESS_TIMEOUT_MS = 2000;
217
+ // ============================================================================
218
+ // IPC CONFIGURATION
219
+ // ============================================================================
220
+ /**
221
+ * IPC request timeout in milliseconds (45 seconds in production, 5 seconds in tests)
222
+ * Maximum time to wait for IPC responses from daemon
223
+ * Must accommodate: Chrome launch (~2s) + Page readiness detection (up to 30s) + buffer (~13s)
224
+ *
225
+ * Can be overridden via BDG_IPC_TIMEOUT_MS environment variable (used by tests)
226
+ *
227
+ * @returns IPC request timeout in milliseconds
228
+ * @see docs/IMPROVEMENTS_ANALYSIS.md - Issue #3: Smart Page Readiness Detection
229
+ */
230
+ export function getIPCRequestTimeout() {
231
+ return process.env['BDG_IPC_TIMEOUT_MS'] !== undefined
232
+ ? parseInt(process.env['BDG_IPC_TIMEOUT_MS'], 10)
233
+ : 45000;
234
+ }
207
235
  // ============================================================================
208
236
  // CLI OPTION DESCRIPTIONS
209
237
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ import * as net from 'node:net';
25
25
  import * as os from 'node:os';
26
26
  import * as path from 'node:path';
27
27
  import { afterEach, beforeEach, describe, it } from 'node:test';
28
- import { IPCServer } from '../ipcServer.js';
28
+ import { IPCServer } from '../../daemon/ipcServer.js';
29
29
  import { getSessionFilePath } from '../../session/paths.js';
30
30
  /**
31
31
  * Mock client for sending/receiving JSONL messages via Unix socket.
@@ -76,6 +76,15 @@ class MockIPCClient {
76
76
  }
77
77
  this.socket.write(JSON.stringify(message) + '\n');
78
78
  }
79
+ /**
80
+ * Write raw data to socket (for testing fragmentation)
81
+ */
82
+ writeRaw(data) {
83
+ if (!this.socket) {
84
+ throw new Error('Not connected');
85
+ }
86
+ this.socket.write(data);
87
+ }
79
88
  /**
80
89
  * Wait for next response (with timeout)
81
90
  */
@@ -87,7 +96,11 @@ class MockIPCClient {
87
96
  }
88
97
  await new Promise((resolve) => setTimeout(resolve, 10));
89
98
  }
90
- return this.responses.shift();
99
+ const response = this.responses.shift();
100
+ if (!response) {
101
+ throw new Error('No response available');
102
+ }
103
+ return response;
91
104
  }
92
105
  /**
93
106
  * Close socket
@@ -227,6 +240,7 @@ void describe('IPC Server Contract Tests', () => {
227
240
  const responseStr = await client.waitForResponse();
228
241
  const response = JSON.parse(responseStr);
229
242
  assert.equal(response.status, 'ok');
243
+ assert.ok(response.data, 'Should have data field');
230
244
  assert.ok(!response.data.sessionPid, 'Should not have session PID');
231
245
  assert.ok(!response.data.sessionMetadata, 'Should not have session metadata');
232
246
  });
@@ -243,11 +257,11 @@ void describe('IPC Server Contract Tests', () => {
243
257
  const json = JSON.stringify(request) + '\n';
244
258
  const mid = Math.floor(json.length / 2);
245
259
  // Send first half
246
- client['socket'].write(json.slice(0, mid));
260
+ client.writeRaw(json.slice(0, mid));
247
261
  // Wait a bit
248
262
  await new Promise((resolve) => setTimeout(resolve, 10));
249
263
  // Send second half
250
- client['socket'].write(json.slice(mid));
264
+ client.writeRaw(json.slice(mid));
251
265
  const responseStr = await client.waitForResponse();
252
266
  const response = JSON.parse(responseStr);
253
267
  assert.equal(response.sessionId, 'fragmented-test');
@@ -263,7 +277,7 @@ void describe('IPC Server Contract Tests', () => {
263
277
  { type: 'handshake_request', sessionId: 'batch-3' },
264
278
  ];
265
279
  const batch = messages.map((m) => JSON.stringify(m)).join('\n') + '\n';
266
- client['socket'].write(batch);
280
+ client.writeRaw(batch);
267
281
  // Should receive 3 responses
268
282
  const response1 = JSON.parse(await client.waitForResponse());
269
283
  const response2 = JSON.parse(await client.waitForResponse());
@@ -282,7 +296,7 @@ void describe('IPC Server Contract Tests', () => {
282
296
  sessionId: 'empty-lines-test',
283
297
  }) +
284
298
  '\n\n';
285
- client['socket'].write(json);
299
+ client.writeRaw(json);
286
300
  const responseStr = await client.waitForResponse();
287
301
  const response = JSON.parse(responseStr);
288
302
  assert.equal(response.sessionId, 'empty-lines-test');
@@ -294,7 +308,7 @@ void describe('IPC Server Contract Tests', () => {
294
308
  const socketPath = getSessionFilePath('DAEMON_SOCKET');
295
309
  await client.connect(socketPath);
296
310
  // Send invalid JSON
297
- client['socket'].write('{ invalid json }\n');
311
+ client.writeRaw('{ invalid json }\n');
298
312
  // Wait a bit to ensure server processes it
299
313
  await new Promise((resolve) => setTimeout(resolve, 50));
300
314
  // Server should still accept valid messages after error
@@ -340,15 +354,15 @@ void describe('IPC Server Contract Tests', () => {
340
354
  const clients = [new MockIPCClient(), new MockIPCClient(), new MockIPCClient()];
341
355
  await Promise.all(clients.map((c) => c.connect(socketPath)));
342
356
  // Send different handshakes from each client
343
- for (let i = 0; i < clients.length; i++) {
344
- clients[i].send({
357
+ for (const [i, client] of clients.entries()) {
358
+ client.send({
345
359
  type: 'handshake_request',
346
360
  sessionId: `concurrent-${i}`,
347
361
  });
348
362
  }
349
363
  // Each client should receive correct response
350
- for (let i = 0; i < clients.length; i++) {
351
- const responseStr = await clients[i].waitForResponse();
364
+ for (const [i, client] of clients.entries()) {
365
+ const responseStr = await client.waitForResponse();
352
366
  const response = JSON.parse(responseStr);
353
367
  assert.equal(response.sessionId, `concurrent-${i}`);
354
368
  assert.equal(response.status, 'ok');