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,231 @@
1
+ /**
2
+ * DOM Eval Command Smoke Tests
3
+ *
4
+ * Provides basic smoke test coverage for DOM eval helpers to verify core functionality.
5
+ * These are lightweight tests that verify the helper functions work as expected without
6
+ * requiring full integration testing with real sessions.
7
+ *
8
+ * Coverage:
9
+ * 1. verifyTargetExists() - CDP target validation
10
+ * 2. executeScript() - JavaScript execution via CDP
11
+ *
12
+ * Note: Session validation functions (validateActiveSession, getValidatedSessionMetadata)
13
+ * are difficult to test in isolation due to ES module import constraints. They are covered
14
+ * by integration tests instead.
15
+ */
16
+ import assert from 'node:assert/strict';
17
+ import { afterEach, beforeEach, describe, it, mock } from 'node:test';
18
+ import { createResponse } from '../../__testfixtures__/cdpMessages.js';
19
+ import { FakeWebSocket } from '../../__testutils__/FakeWebSocket.js';
20
+ import { verifyTargetExists, executeScript } from '../../commands/domEvalHelpers.js';
21
+ import { CDPConnection } from '../../connection/cdp.js';
22
+ /**
23
+ * Mock CDP connection that simulates browser responses
24
+ */
25
+ class MockCDPConnection extends CDPConnection {
26
+ mockSocket;
27
+ constructor() {
28
+ const mockSocket = new FakeWebSocket();
29
+ super(() => mockSocket);
30
+ this.mockSocket = mockSocket;
31
+ }
32
+ /**
33
+ * Connect and open the mock WebSocket
34
+ */
35
+ async connectAndOpen() {
36
+ const connectPromise = this.connect('ws://localhost:9222/devtools/browser');
37
+ this.mockSocket.simulateOpen();
38
+ await connectPromise;
39
+ }
40
+ /**
41
+ * Simulate CDP response for next command
42
+ */
43
+ simulateNextResponse(result) {
44
+ const messages = this.mockSocket.getSentMessages();
45
+ const lastMessage = messages[messages.length - 1];
46
+ if (!lastMessage) {
47
+ throw new Error('No message sent to simulate response for');
48
+ }
49
+ const request = JSON.parse(lastMessage);
50
+ if (typeof request.id !== 'number') {
51
+ throw new Error('Invalid request ID');
52
+ }
53
+ const response = createResponse(request.id, result);
54
+ this.mockSocket.simulateMessage(JSON.stringify(response));
55
+ }
56
+ }
57
+ describe('DOM Eval Command Smoke Tests', () => {
58
+ let mockCDP;
59
+ beforeEach(async () => {
60
+ mockCDP = new MockCDPConnection();
61
+ await mockCDP.connectAndOpen();
62
+ });
63
+ afterEach(() => {
64
+ if (mockCDP.isConnected()) {
65
+ mockCDP.close();
66
+ }
67
+ mock.restoreAll();
68
+ });
69
+ describe('verifyTargetExists', () => {
70
+ it('throws error when target not found in CDP list', async () => {
71
+ // Test CONTRACT: Missing target → error
72
+ // Mock fetch to return targets without our targetId
73
+ // eslint-disable-next-line @typescript-eslint/require-await
74
+ globalThis.fetch = mock.fn(async () => {
75
+ return {
76
+ // eslint-disable-next-line @typescript-eslint/require-await
77
+ json: async () => [
78
+ { id: 'page-456', type: 'page' },
79
+ { id: 'page-789', type: 'page' },
80
+ ],
81
+ };
82
+ });
83
+ const metadata = {
84
+ bdgPid: 12345,
85
+ startTime: Date.now(),
86
+ port: 9222,
87
+ targetId: 'page-123',
88
+ webSocketDebuggerUrl: 'ws://localhost:9222/devtools/page/123',
89
+ };
90
+ await assert.rejects(async () => verifyTargetExists(metadata, 9222), {
91
+ message: /Session target not found/,
92
+ });
93
+ });
94
+ it('succeeds when target exists', async () => {
95
+ // Test CONTRACT: Target exists → no error
96
+ // eslint-disable-next-line @typescript-eslint/require-await
97
+ globalThis.fetch = mock.fn(async () => {
98
+ return {
99
+ // eslint-disable-next-line @typescript-eslint/require-await
100
+ json: async () => [
101
+ { id: 'page-123', type: 'page' },
102
+ { id: 'page-456', type: 'page' },
103
+ ],
104
+ };
105
+ });
106
+ const metadata = {
107
+ bdgPid: 12345,
108
+ startTime: Date.now(),
109
+ port: 9222,
110
+ targetId: 'page-123',
111
+ webSocketDebuggerUrl: 'ws://localhost:9222/devtools/page/123',
112
+ };
113
+ await assert.doesNotReject(async () => verifyTargetExists(metadata, 9222));
114
+ });
115
+ it('throws error when CDP response is invalid', async () => {
116
+ // Test CONTRACT: Invalid CDP response → error
117
+ // eslint-disable-next-line @typescript-eslint/require-await
118
+ globalThis.fetch = mock.fn(async () => {
119
+ return {
120
+ // eslint-disable-next-line @typescript-eslint/require-await
121
+ json: async () => ({ invalid: 'response' }),
122
+ };
123
+ });
124
+ const metadata = {
125
+ bdgPid: 12345,
126
+ startTime: Date.now(),
127
+ port: 9222,
128
+ targetId: 'page-123',
129
+ webSocketDebuggerUrl: 'ws://localhost:9222/devtools/page/123',
130
+ };
131
+ await assert.rejects(async () => verifyTargetExists(metadata, 9222), {
132
+ message: /Invalid response from CDP/,
133
+ });
134
+ });
135
+ });
136
+ describe('executeScript', () => {
137
+ it('executes simple JavaScript expression', async () => {
138
+ // Test CONTRACT: Script execution → returns result
139
+ const scriptPromise = executeScript(mockCDP, 'document.title');
140
+ mockCDP.simulateNextResponse({
141
+ result: {
142
+ type: 'string',
143
+ value: 'My Page Title',
144
+ },
145
+ });
146
+ const result = await scriptPromise;
147
+ assert.equal(result.result?.value, 'My Page Title');
148
+ });
149
+ it('executes complex JavaScript expression', async () => {
150
+ // Test CONTRACT: Complex script → returns object result
151
+ const scriptPromise = executeScript(mockCDP, 'window.location.href');
152
+ mockCDP.simulateNextResponse({
153
+ result: {
154
+ type: 'string',
155
+ value: 'https://example.com/page',
156
+ },
157
+ });
158
+ const result = await scriptPromise;
159
+ assert.equal(result.result?.value, 'https://example.com/page');
160
+ });
161
+ it('throws error when script has exception', async () => {
162
+ // Test CONTRACT: Script exception → throws error
163
+ const scriptPromise = executeScript(mockCDP, 'throw new Error("test error")');
164
+ mockCDP.simulateNextResponse({
165
+ exceptionDetails: {
166
+ exception: {
167
+ description: 'Error: test error',
168
+ },
169
+ },
170
+ });
171
+ await assert.rejects(async () => scriptPromise, {
172
+ message: /Error: test error/,
173
+ });
174
+ });
175
+ it('throws error with default message when exception has no description', async () => {
176
+ // Test CONTRACT: Exception without description → default error
177
+ const scriptPromise = executeScript(mockCDP, 'invalid script');
178
+ mockCDP.simulateNextResponse({
179
+ exceptionDetails: {
180
+ exception: {},
181
+ },
182
+ });
183
+ await assert.rejects(async () => scriptPromise, {
184
+ message: /Unknown error executing script/,
185
+ });
186
+ });
187
+ it('handles primitive return values', async () => {
188
+ // Test CONTRACT: Different primitives preserved
189
+ const tests = [
190
+ { script: '42', result: { type: 'number', value: 42 } },
191
+ { script: 'true', result: { type: 'boolean', value: true } },
192
+ { script: '"hello"', result: { type: 'string', value: 'hello' } },
193
+ { script: 'null', result: { type: 'object', subtype: 'null', value: null } },
194
+ ];
195
+ for (const test of tests) {
196
+ const scriptPromise = executeScript(mockCDP, test.script);
197
+ mockCDP.simulateNextResponse({ result: test.result });
198
+ const result = await scriptPromise;
199
+ assert.equal(result.result?.value, test.result.value);
200
+ }
201
+ });
202
+ it('handles object return values', async () => {
203
+ // Test CONTRACT: Objects returned by value
204
+ const scriptPromise = executeScript(mockCDP, '({ url: "https://example.com", title: "Example" })');
205
+ mockCDP.simulateNextResponse({
206
+ result: {
207
+ type: 'object',
208
+ value: { url: 'https://example.com', title: 'Example' },
209
+ },
210
+ });
211
+ const result = await scriptPromise;
212
+ assert.deepEqual(result.result?.value, {
213
+ url: 'https://example.com',
214
+ title: 'Example',
215
+ });
216
+ });
217
+ it('handles array return values', async () => {
218
+ // Test CONTRACT: Arrays returned by value
219
+ const scriptPromise = executeScript(mockCDP, 'Array.from(document.querySelectorAll("div")).length');
220
+ mockCDP.simulateNextResponse({
221
+ result: {
222
+ type: 'number',
223
+ value: 5,
224
+ },
225
+ });
226
+ const result = await scriptPromise;
227
+ assert.equal(result.result?.value, 5);
228
+ });
229
+ });
230
+ });
231
+ //# sourceMappingURL=domEval.contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domEval.contract.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/domEval.contract.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register CDP command.
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerCdpCommand(program: Command): void;
8
+ //# sourceMappingURL=cdp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp.d.ts","sourceRoot":"","sources":["../../src/commands/cdp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqCzD"}
@@ -0,0 +1,45 @@
1
+ import { runCommand } from '../commands/shared/CommandRunner.js';
2
+ import { callCDP } from '../ipc/client.js';
3
+ import { validateIPCResponse } from '../ipc/responseValidator.js';
4
+ import { getErrorMessage } from '../utils/errors.js';
5
+ import { EXIT_CODES } from '../utils/exitCodes.js';
6
+ /**
7
+ * Register CDP command.
8
+ *
9
+ * @param program - Commander.js Command instance to register commands on
10
+ */
11
+ export function registerCdpCommand(program) {
12
+ program
13
+ .command('cdp')
14
+ .description('Execute CDP method directly (low-level API access)')
15
+ .argument('<method>', 'CDP method name (e.g., Network.getCookies, Runtime.evaluate)')
16
+ .option('--params <json>', 'CDP method parameters as JSON')
17
+ .action(async (method, options) => {
18
+ await runCommand(async (opts) => {
19
+ // Parse parameters if provided
20
+ let params;
21
+ if (opts.params) {
22
+ try {
23
+ params = JSON.parse(opts.params);
24
+ }
25
+ catch (error) {
26
+ return {
27
+ success: false,
28
+ error: `Error parsing --params: ${getErrorMessage(error)}. Parameters must be valid JSON.`,
29
+ exitCode: EXIT_CODES.INVALID_ARGUMENTS,
30
+ };
31
+ }
32
+ }
33
+ // Send CDP call request to daemon
34
+ const response = await callCDP(method, params);
35
+ // Validate IPC response (throws on error)
36
+ validateIPCResponse(response);
37
+ return {
38
+ success: true,
39
+ data: response.data?.result,
40
+ };
41
+ }, { ...options, json: true } // Always output JSON for CDP commands
42
+ );
43
+ });
44
+ }
45
+ //# sourceMappingURL=cdp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/commands/cdp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAUlD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oDAAoD,CAAC;SACjE,QAAQ,CAAC,UAAU,EAAE,8DAA8D,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAmB,EAAE,EAAE;QACpD,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,+BAA+B;YAC/B,IAAI,MAA2C,CAAC;YAChD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAA4B,CAAC;gBAC9D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,2BAA2B,eAAe,CAAC,KAAK,CAAC,kCAAkC;wBAC1F,QAAQ,EAAE,UAAU,CAAC,iBAAiB;qBACvC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAE/C,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;aAC5B,CAAC;QACJ,CAAC,EACD,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,sCAAsC;SAClE,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register cleanup command
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerCleanupCommand(program: Command): void;
8
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgFzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I7D"}
@@ -0,0 +1,170 @@
1
+ import { execSync } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import { runCommand } from '../commands/shared/CommandRunner.js';
4
+ import { jsonOption } from '../commands/shared/commonOptions.js';
5
+ import { cleanupSession } from '../session/cleanup.js';
6
+ import { getSessionFilePath } from '../session/paths.js';
7
+ import { readPid } from '../session/pid.js';
8
+ import { isProcessAlive } from '../session/process.js';
9
+ import { sessionFilesCleanedMessage, sessionOutputRemovedMessage, sessionDirectoryCleanMessage, noSessionFilesMessage, staleSessionFoundMessage, forceCleanupWarningMessage, sessionStillActiveError, warningMessage, } from '../ui/messages/commands.js';
10
+ import { getErrorMessage } from '../utils/errors.js';
11
+ import { EXIT_CODES } from '../utils/exitCodes.js';
12
+ /**
13
+ * Format cleanup result for human-readable output.
14
+ *
15
+ * @param data - Cleanup result data
16
+ */
17
+ function formatCleanup(data) {
18
+ const lines = [];
19
+ const { cleaned } = data;
20
+ if (cleaned.session) {
21
+ lines.push(sessionFilesCleanedMessage());
22
+ }
23
+ if (cleaned.output) {
24
+ lines.push(sessionOutputRemovedMessage());
25
+ }
26
+ if (data.warnings && data.warnings.length > 0) {
27
+ data.warnings.forEach((warning) => {
28
+ lines.push(warningMessage(warning));
29
+ });
30
+ }
31
+ lines.push('');
32
+ lines.push(data.message);
33
+ return lines.join('\n');
34
+ }
35
+ /**
36
+ * Register cleanup command
37
+ *
38
+ * @param program - Commander.js Command instance to register commands on
39
+ */
40
+ export function registerCleanupCommand(program) {
41
+ program
42
+ .command('cleanup')
43
+ .description('Clean up stale session files')
44
+ .option('-f, --force', 'Force cleanup even if session appears active')
45
+ .option('-a, --all', 'Also remove session.json output file')
46
+ .option('--aggressive', 'Kill all Chrome processes (uses chrome-launcher killAll)')
47
+ .addOption(jsonOption)
48
+ .action(async (options) => {
49
+ await runCommand(async (opts) => {
50
+ // Import cleanupStaleChrome dynamically
51
+ const { cleanupStaleChrome } = await import('../commands/shared/sessionController.js');
52
+ const pid = readPid();
53
+ let didCleanup = false;
54
+ let cleanedSession = false;
55
+ let cleanedOutput = false;
56
+ let cleanedChrome = false;
57
+ const warnings = [];
58
+ // Handle aggressive Chrome cleanup first if requested
59
+ if (opts.aggressive) {
60
+ const errorCount = await cleanupStaleChrome();
61
+ cleanedChrome = true;
62
+ if (errorCount > 0) {
63
+ warnings.push('Some Chrome processes could not be killed');
64
+ }
65
+ didCleanup = true;
66
+ }
67
+ // Check for stale daemon PID (even if no session.pid exists)
68
+ const daemonPidPath = getSessionFilePath('DAEMON_PID');
69
+ if (fs.existsSync(daemonPidPath)) {
70
+ try {
71
+ const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
72
+ const daemonPid = parseInt(daemonPidStr, 10);
73
+ if (isNaN(daemonPid) || !isProcessAlive(daemonPid)) {
74
+ // Stale daemon PID - clean it up
75
+ console.error(staleSessionFoundMessage(daemonPid));
76
+ fs.unlinkSync(daemonPidPath);
77
+ cleanedSession = true;
78
+ didCleanup = true;
79
+ }
80
+ }
81
+ catch {
82
+ // Failed to read - remove it anyway
83
+ try {
84
+ fs.unlinkSync(daemonPidPath);
85
+ cleanedSession = true;
86
+ didCleanup = true;
87
+ }
88
+ catch (removeError) {
89
+ const errorMessage = getErrorMessage(removeError);
90
+ warnings.push(`Could not remove daemon.pid: ${errorMessage}`);
91
+ }
92
+ }
93
+ }
94
+ if (!pid) {
95
+ // No session files to clean up
96
+ // Fall through to check --all flag for session.json removal
97
+ }
98
+ else {
99
+ // PID file exists - handle session cleanup
100
+ const isAlive = isProcessAlive(pid);
101
+ if (isAlive && !opts.force) {
102
+ return {
103
+ success: false,
104
+ error: sessionStillActiveError(pid),
105
+ exitCode: EXIT_CODES.RESOURCE_BUSY,
106
+ errorContext: {
107
+ suggestions: ['Stop gracefully: bdg stop', 'Force cleanup: bdg cleanup --force'],
108
+ warning: 'Force cleanup will remove session files but will NOT kill the running process',
109
+ },
110
+ };
111
+ }
112
+ if (isAlive && opts.force) {
113
+ warnings.push(`Process ${pid} is still running but forcing cleanup anyway`);
114
+ console.error(forceCleanupWarningMessage(pid));
115
+ // Force-kill Chrome processes on debugging port 9222
116
+ // This ensures cleanup --force actually removes orphaned Chrome processes
117
+ // Platform-specific: macOS/Linux only (Windows not supported)
118
+ try {
119
+ execSync('lsof -ti:9222 | xargs kill -9 2>/dev/null || true', { stdio: 'ignore' });
120
+ cleanedChrome = true;
121
+ }
122
+ catch (error) {
123
+ const errorMessage = getErrorMessage(error);
124
+ warnings.push(`Could not kill Chrome processes: ${errorMessage}`);
125
+ }
126
+ }
127
+ else {
128
+ console.error(staleSessionFoundMessage(pid));
129
+ }
130
+ cleanupSession();
131
+ cleanedSession = true;
132
+ didCleanup = true;
133
+ }
134
+ // Also remove session.json output file if --all flag is specified
135
+ if (opts.all) {
136
+ const outputPath = getSessionFilePath('OUTPUT');
137
+ if (fs.existsSync(outputPath)) {
138
+ try {
139
+ fs.unlinkSync(outputPath);
140
+ cleanedOutput = true;
141
+ didCleanup = true;
142
+ }
143
+ catch (error) {
144
+ const errorMessage = getErrorMessage(error);
145
+ warnings.push(`Could not remove session.json: ${errorMessage}`);
146
+ }
147
+ }
148
+ }
149
+ // Check if any cleanup was performed
150
+ if (!didCleanup) {
151
+ return {
152
+ success: true,
153
+ data: {
154
+ cleaned: { session: false, output: false, chrome: false },
155
+ message: noSessionFilesMessage(),
156
+ },
157
+ };
158
+ }
159
+ return {
160
+ success: true,
161
+ data: {
162
+ cleaned: { session: cleanedSession, output: cleanedOutput, chrome: cleanedChrome },
163
+ message: sessionDirectoryCleanMessage(),
164
+ ...(warnings.length > 0 && { warnings }),
165
+ },
166
+ };
167
+ }, options, formatCleanup);
168
+ });
169
+ }
170
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register console command.
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerConsoleCommand(program: Command): void;
8
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C7D"}
@@ -0,0 +1,92 @@
1
+ import { runCommand } from '../commands/shared/CommandRunner.js';
2
+ import { filterOption, jsonOption, lastOption } from '../commands/shared/commonOptions.js';
3
+ import { getPeek } from '../ipc/client.js';
4
+ import { validateIPCResponse } from '../ipc/responseValidator.js';
5
+ import { noConsoleMessagesMessage, consoleMessagesHeader } from '../ui/messages/consoleMessages.js';
6
+ import { EXIT_CODES } from '../utils/exitCodes.js';
7
+ /**
8
+ * Format single console message for human-readable output.
9
+ *
10
+ * @param log - Console message to format
11
+ * @param index - Message index in the list
12
+ * @returns Formatted message string
13
+ */
14
+ function formatConsoleMessage(log, index) {
15
+ const icons = {
16
+ log: 'ℹ',
17
+ error: '❌',
18
+ warning: '⚠️',
19
+ info: 'ℹ️',
20
+ };
21
+ const icon = icons[log.type] ?? 'ℹ';
22
+ const timestamp = new Date(log.timestamp).toISOString();
23
+ let output = `[${index}] ${icon} [${timestamp}] ${log.text}`;
24
+ if (log.args && log.args.length > 0) {
25
+ log.args.forEach((arg) => {
26
+ output += `\n ${JSON.stringify(arg)}`;
27
+ });
28
+ }
29
+ return output;
30
+ }
31
+ /**
32
+ * Format console messages for human-readable output.
33
+ *
34
+ * @param data - Object containing logs array and optional filter
35
+ */
36
+ function formatConsoleLogs(data) {
37
+ const { logs, filter } = data;
38
+ if (logs.length === 0) {
39
+ return noConsoleMessagesMessage(filter);
40
+ }
41
+ const lines = [];
42
+ lines.push(consoleMessagesHeader(logs.length, filter));
43
+ lines.push('');
44
+ logs.forEach((log, idx) => {
45
+ lines.push(formatConsoleMessage(log, idx));
46
+ });
47
+ return lines.join('\n');
48
+ }
49
+ /**
50
+ * Register console command.
51
+ *
52
+ * @param program - Commander.js Command instance to register commands on
53
+ */
54
+ export function registerConsoleCommand(program) {
55
+ program
56
+ .command('console')
57
+ .description('Query console logs from the active session')
58
+ .addOption(lastOption)
59
+ .addOption(filterOption(['log', 'error', 'warning', 'info']))
60
+ .addOption(jsonOption)
61
+ .action(async (options) => {
62
+ await runCommand(async (opts) => {
63
+ // Fetch preview data via IPC from daemon
64
+ const response = await getPeek();
65
+ // Validate IPC response (throws on error)
66
+ validateIPCResponse(response);
67
+ // Extract preview data from response
68
+ const output = response.data?.preview;
69
+ if (!output?.data.console) {
70
+ return {
71
+ success: false,
72
+ error: 'No console data available. Ensure console telemetry is active.',
73
+ exitCode: EXIT_CODES.RESOURCE_NOT_FOUND,
74
+ };
75
+ }
76
+ let logs = [...output.data.console];
77
+ // Apply type filter if specified (Commander validates choices)
78
+ if (opts.filter) {
79
+ logs = logs.filter((log) => log.type === opts.filter);
80
+ }
81
+ // Apply last N filter if specified (Commander validates range)
82
+ if (opts.last > 0) {
83
+ logs = logs.slice(-opts.last);
84
+ }
85
+ return {
86
+ success: true,
87
+ data: { logs, ...(opts.filter && { filter: opts.filter }) },
88
+ };
89
+ }, options, formatConsoleLogs);
90
+ });
91
+ }
92
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAYlD;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,GAAmB,EAAE,KAAa;IAC9D,MAAM,KAAK,GAA2B;QACpC,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;KACX,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAExD,IAAI,MAAM,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,SAAS,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;IAE7D,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAiD;IAC1E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,4CAA4C,CAAC;SACzD,SAAS,CAAC,UAAU,CAAC;SACrB,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;SAC5D,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,yCAAyC;YACzC,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;YAEjC,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,qCAAqC;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAgC,CAAC;YAC/D,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gEAAgE;oBACvE,QAAQ,EAAE,UAAU,CAAC,kBAAkB;iBACxC,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpC,+DAA+D;YAC/D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YAED,+DAA+D;YAC/D,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;aAC5D,CAAC;QACJ,CAAC,EACD,OAAO,EACP,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register details command.
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerDetailsCommand(program: Command): void;
8
+ //# sourceMappingURL=details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkD7D"}