browser-debugger-cli 0.1.0-alpha.1 → 0.2.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 (421) hide show
  1. package/README.md +58 -68
  2. package/dist/__testfixtures__/cdpMessages.d.ts +1 -1
  3. package/dist/__testfixtures__/connectionTargets.d.ts +1 -1
  4. package/dist/__testutils__/assertions.d.ts +1 -1
  5. package/dist/__testutils__/testFixtures.d.ts +1 -1
  6. package/dist/cli/commands/cdp.js +1 -1
  7. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  8. package/dist/cli/commands/cleanup.js +12 -13
  9. package/dist/cli/commands/cleanup.js.map +1 -1
  10. package/dist/cli/commands/console.js +2 -2
  11. package/dist/cli/commands/details.js +3 -3
  12. package/dist/cli/commands/details.js.map +1 -1
  13. package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +1 -1
  14. package/dist/cli/commands/dom/helpers/errorHandler.js +4 -3
  15. package/dist/cli/commands/dom/helpers/errorHandler.js.map +1 -1
  16. package/dist/cli/commands/dom/index.js +1 -1
  17. package/dist/cli/commands/dom.d.ts.map +1 -0
  18. package/dist/cli/commands/dom.js +257 -0
  19. package/dist/cli/commands/dom.js.map +1 -0
  20. package/dist/cli/commands/domErrorHandler.d.ts +45 -0
  21. package/dist/cli/commands/domErrorHandler.d.ts.map +1 -0
  22. package/dist/cli/commands/domErrorHandler.js +71 -0
  23. package/dist/cli/commands/domErrorHandler.js.map +1 -0
  24. package/dist/cli/commands/domEvalHelpers.d.ts +52 -0
  25. package/dist/cli/commands/domEvalHelpers.d.ts.map +1 -0
  26. package/dist/cli/commands/domEvalHelpers.js +76 -0
  27. package/dist/cli/commands/domEvalHelpers.js.map +1 -0
  28. package/dist/cli/commands/domOptionsBuilder.d.ts +35 -0
  29. package/dist/cli/commands/domOptionsBuilder.d.ts.map +1 -0
  30. package/dist/cli/commands/domOptionsBuilder.js +51 -0
  31. package/dist/cli/commands/domOptionsBuilder.js.map +1 -0
  32. package/dist/cli/{collectors/helpers/selectorParser.d.ts → commands/domSelectorParser.d.ts} +1 -1
  33. package/dist/cli/commands/domSelectorParser.d.ts.map +1 -0
  34. package/dist/cli/{collectors/helpers/selectorParser.js → commands/domSelectorParser.js} +1 -1
  35. package/dist/cli/commands/domSelectorParser.js.map +1 -0
  36. package/dist/cli/commands/network.d.ts.map +1 -1
  37. package/dist/cli/commands/network.js +8 -5
  38. package/dist/cli/commands/network.js.map +1 -1
  39. package/dist/cli/commands/peek.d.ts.map +1 -1
  40. package/dist/cli/commands/peek.js +7 -7
  41. package/dist/cli/commands/peek.js.map +1 -1
  42. package/dist/cli/commands/start.d.ts.map +1 -1
  43. package/dist/cli/commands/start.js +19 -2
  44. package/dist/cli/commands/start.js.map +1 -1
  45. package/dist/cli/commands/status.d.ts.map +1 -1
  46. package/dist/cli/commands/status.js +13 -10
  47. package/dist/cli/commands/status.js.map +1 -1
  48. package/dist/cli/commands/stop.d.ts.map +1 -1
  49. package/dist/cli/commands/stop.js +7 -6
  50. package/dist/cli/commands/stop.js.map +1 -1
  51. package/dist/cli/formatters/detailsFormatter.d.ts +1 -1
  52. package/dist/cli/formatters/previewFormatter.d.ts +1 -1
  53. package/dist/cli/formatters/previewFormatter.js +1 -1
  54. package/dist/cli/formatters/previewFormatter.js.map +1 -1
  55. package/dist/cli/formatters/statusFormatter.d.ts +6 -1
  56. package/dist/cli/formatters/statusFormatter.d.ts.map +1 -1
  57. package/dist/cli/formatters/statusFormatter.js +49 -4
  58. package/dist/cli/formatters/statusFormatter.js.map +1 -1
  59. package/dist/cli/handlers/CommandRunner.d.ts.map +1 -1
  60. package/dist/cli/handlers/CommandRunner.js +5 -5
  61. package/dist/cli/handlers/CommandRunner.js.map +1 -1
  62. package/dist/cli/handlers/OutputBuilder.d.ts +1 -1
  63. package/dist/cli/handlers/daemonSessionController.d.ts +1 -1
  64. package/dist/cli/handlers/daemonSessionController.d.ts.map +1 -1
  65. package/dist/cli/handlers/daemonSessionController.js +16 -45
  66. package/dist/cli/handlers/daemonSessionController.js.map +1 -1
  67. package/dist/cli/handlers/landingPage.d.ts +8 -0
  68. package/dist/cli/handlers/landingPage.d.ts.map +1 -0
  69. package/dist/cli/handlers/landingPage.js +8 -0
  70. package/dist/cli/handlers/landingPage.js.map +1 -0
  71. package/dist/cli/registry.js +10 -10
  72. package/dist/cli/registry.js.map +1 -1
  73. package/dist/collectors/__tests__/network.contract.test.js +25 -10
  74. package/dist/collectors/__tests__/network.contract.test.js.map +1 -1
  75. package/dist/collectors/console.d.ts +1 -1
  76. package/dist/collectors/console.js.map +1 -1
  77. package/dist/collectors/dom.d.ts +1 -1
  78. package/dist/collectors/network.d.ts +1 -1
  79. package/dist/collectors/network.js.map +1 -1
  80. package/dist/commandRegistry.d.ts +11 -0
  81. package/dist/commandRegistry.d.ts.map +1 -0
  82. package/dist/commandRegistry.js +45 -0
  83. package/dist/commandRegistry.js.map +1 -0
  84. package/dist/commands/__tests__/cdp.contract.test.d.ts +24 -0
  85. package/dist/commands/__tests__/cdp.contract.test.d.ts.map +1 -0
  86. package/dist/commands/__tests__/cdp.contract.test.js +467 -0
  87. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -0
  88. package/dist/commands/cdp.d.ts +8 -0
  89. package/dist/commands/cdp.d.ts.map +1 -0
  90. package/dist/commands/cdp.js +45 -0
  91. package/dist/commands/cdp.js.map +1 -0
  92. package/dist/commands/cleanup.d.ts +8 -0
  93. package/dist/commands/cleanup.d.ts.map +1 -0
  94. package/dist/commands/cleanup.js +129 -0
  95. package/dist/commands/cleanup.js.map +1 -0
  96. package/dist/commands/console.d.ts +8 -0
  97. package/dist/commands/console.d.ts.map +1 -0
  98. package/dist/commands/console.js +92 -0
  99. package/dist/commands/console.js.map +1 -0
  100. package/dist/commands/details.d.ts +8 -0
  101. package/dist/commands/details.d.ts.map +1 -0
  102. package/dist/commands/details.js +68 -0
  103. package/dist/commands/details.js.map +1 -0
  104. package/dist/commands/dom.d.ts +8 -0
  105. package/dist/commands/dom.d.ts.map +1 -0
  106. package/dist/commands/dom.js +257 -0
  107. package/dist/commands/dom.js.map +1 -0
  108. package/dist/commands/domErrorHandler.d.ts +45 -0
  109. package/dist/commands/domErrorHandler.d.ts.map +1 -0
  110. package/dist/commands/domErrorHandler.js +71 -0
  111. package/dist/commands/domErrorHandler.js.map +1 -0
  112. package/dist/commands/domEvalHelpers.d.ts +52 -0
  113. package/dist/commands/domEvalHelpers.d.ts.map +1 -0
  114. package/dist/commands/domEvalHelpers.js +76 -0
  115. package/dist/commands/domEvalHelpers.js.map +1 -0
  116. package/dist/commands/domOptionsBuilder.d.ts +35 -0
  117. package/dist/commands/domOptionsBuilder.d.ts.map +1 -0
  118. package/dist/commands/domOptionsBuilder.js +51 -0
  119. package/dist/commands/domOptionsBuilder.js.map +1 -0
  120. package/dist/commands/domSelectorParser.d.ts +20 -0
  121. package/dist/commands/domSelectorParser.d.ts.map +1 -0
  122. package/dist/commands/domSelectorParser.js +20 -0
  123. package/dist/commands/domSelectorParser.js.map +1 -0
  124. package/dist/commands/network.d.ts +8 -0
  125. package/dist/commands/network.d.ts.map +1 -0
  126. package/dist/commands/network.js +43 -0
  127. package/dist/commands/network.js.map +1 -0
  128. package/dist/commands/peek.d.ts +8 -0
  129. package/dist/commands/peek.d.ts.map +1 -0
  130. package/dist/commands/peek.js +114 -0
  131. package/dist/commands/peek.js.map +1 -0
  132. package/dist/commands/shared/CommandRunner.d.ts +60 -0
  133. package/dist/commands/shared/CommandRunner.d.ts.map +1 -0
  134. package/dist/commands/shared/CommandRunner.js +81 -0
  135. package/dist/commands/shared/CommandRunner.js.map +1 -0
  136. package/dist/commands/shared/OutputBuilder.d.ts +60 -0
  137. package/dist/commands/shared/OutputBuilder.d.ts.map +1 -0
  138. package/dist/commands/shared/OutputBuilder.js +138 -0
  139. package/dist/commands/shared/OutputBuilder.js.map +1 -0
  140. package/dist/commands/shared/commonOptions.d.ts +54 -0
  141. package/dist/commands/shared/commonOptions.d.ts.map +1 -0
  142. package/dist/commands/shared/commonOptions.js +64 -0
  143. package/dist/commands/shared/commonOptions.js.map +1 -0
  144. package/dist/commands/shared/daemonSessionController.d.ts +23 -0
  145. package/dist/commands/shared/daemonSessionController.d.ts.map +1 -0
  146. package/dist/commands/shared/daemonSessionController.js +79 -0
  147. package/dist/commands/shared/daemonSessionController.js.map +1 -0
  148. package/dist/commands/shared/landingPage.d.ts +8 -0
  149. package/dist/commands/shared/landingPage.d.ts.map +1 -0
  150. package/dist/commands/shared/landingPage.js +8 -0
  151. package/dist/commands/shared/landingPage.js.map +1 -0
  152. package/dist/commands/shared/sessionController.d.ts +21 -0
  153. package/dist/commands/shared/sessionController.d.ts.map +1 -0
  154. package/dist/commands/shared/sessionController.js +55 -0
  155. package/dist/commands/shared/sessionController.js.map +1 -0
  156. package/dist/commands/start.d.ts +9 -0
  157. package/dist/commands/start.d.ts.map +1 -0
  158. package/dist/commands/start.js +85 -0
  159. package/dist/commands/start.js.map +1 -0
  160. package/dist/{cli/commands/query.d.ts → commands/status.d.ts} +3 -3
  161. package/dist/commands/status.d.ts.map +1 -0
  162. package/dist/commands/status.js +87 -0
  163. package/dist/commands/status.js.map +1 -0
  164. package/dist/commands/stop.d.ts +8 -0
  165. package/dist/commands/stop.d.ts.map +1 -0
  166. package/dist/commands/stop.js +150 -0
  167. package/dist/commands/stop.js.map +1 -0
  168. package/dist/commands.d.ts +11 -0
  169. package/dist/commands.d.ts.map +1 -0
  170. package/dist/commands.js +45 -0
  171. package/dist/commands.js.map +1 -0
  172. package/dist/connection/__tests__/cdp.contract.test.js +1 -1
  173. package/dist/connection/__tests__/finder.contract.test.js +1 -1
  174. package/dist/connection/__tests__/finder.contract.test.js.map +1 -1
  175. package/dist/connection/cdp.d.ts +1 -1
  176. package/dist/connection/cdp.js.map +1 -1
  177. package/dist/connection/domOperations.d.ts +48 -0
  178. package/dist/connection/domOperations.d.ts.map +1 -0
  179. package/dist/connection/domOperations.js +104 -0
  180. package/dist/connection/domOperations.js.map +1 -0
  181. package/dist/connection/finder.js.map +1 -1
  182. package/dist/connection/launcher.d.ts +7 -3
  183. package/dist/connection/launcher.d.ts.map +1 -1
  184. package/dist/connection/launcher.js +72 -21
  185. package/dist/connection/launcher.js.map +1 -1
  186. package/dist/constants.d.ts +17 -0
  187. package/dist/constants.d.ts.map +1 -1
  188. package/dist/constants.js +28 -0
  189. package/dist/constants.js.map +1 -1
  190. package/dist/daemon/__tests__/ipcServer.contract.test.js +25 -11
  191. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  192. package/dist/daemon/ipcServer.d.ts.map +1 -1
  193. package/dist/daemon/ipcServer.js +86 -6
  194. package/dist/daemon/ipcServer.js.map +1 -1
  195. package/dist/daemon/launcher.d.ts.map +1 -1
  196. package/dist/daemon/launcher.js +8 -6
  197. package/dist/daemon/launcher.js.map +1 -1
  198. package/dist/daemon/startSession.d.ts +2 -2
  199. package/dist/daemon/startSession.d.ts.map +1 -1
  200. package/dist/daemon/startSession.js +12 -11
  201. package/dist/daemon/startSession.js.map +1 -1
  202. package/dist/daemon/worker.d.ts +1 -1
  203. package/dist/daemon/worker.js +97 -41
  204. package/dist/daemon/worker.js.map +1 -1
  205. package/dist/{cli/collectors/helpers/domCache.d.ts → dom/cache.d.ts} +1 -5
  206. package/dist/dom/cache.d.ts.map +1 -0
  207. package/dist/{cli/collectors/helpers/domCache.js → dom/cache.js} +5 -19
  208. package/dist/dom/cache.js.map +1 -0
  209. package/dist/dom/index.d.ts +9 -0
  210. package/dist/dom/index.d.ts.map +1 -0
  211. package/dist/dom/index.js +9 -0
  212. package/dist/dom/index.js.map +1 -0
  213. package/dist/{cli/collectors/helpers/domQuery.d.ts → dom/query.d.ts} +5 -2
  214. package/dist/dom/query.d.ts.map +1 -0
  215. package/dist/{cli/collectors/helpers/domQuery.js → dom/query.js} +11 -7
  216. package/dist/dom/query.js.map +1 -0
  217. package/dist/index.js +117 -35
  218. package/dist/index.js.map +1 -1
  219. package/dist/ipc/__tests__/client.contract.test.js +11 -1
  220. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  221. package/dist/ipc/client.d.ts +4 -4
  222. package/dist/ipc/client.d.ts.map +1 -1
  223. package/dist/ipc/client.js +10 -6
  224. package/dist/ipc/client.js.map +1 -1
  225. package/dist/ipc/commands.d.ts +33 -1
  226. package/dist/ipc/commands.d.ts.map +1 -1
  227. package/dist/ipc/commands.js +4 -0
  228. package/dist/ipc/commands.js.map +1 -1
  229. package/dist/ipc/types.d.ts +34 -3
  230. package/dist/ipc/types.d.ts.map +1 -1
  231. package/dist/ipc/types.js.map +1 -1
  232. package/dist/session/metadata.d.ts +2 -2
  233. package/dist/session/metadata.d.ts.map +1 -1
  234. package/dist/session/output.d.ts +1 -1
  235. package/dist/session/process.d.ts.map +1 -1
  236. package/dist/session/process.js +4 -3
  237. package/dist/session/process.js.map +1 -1
  238. package/dist/session/queryCache.d.ts +36 -0
  239. package/dist/session/queryCache.d.ts.map +1 -0
  240. package/dist/session/queryCache.js +66 -0
  241. package/dist/session/queryCache.js.map +1 -0
  242. package/dist/telemetry/__tests__/network.contract.test.d.ts +28 -0
  243. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -0
  244. package/dist/telemetry/__tests__/network.contract.test.js +540 -0
  245. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -0
  246. package/dist/telemetry/console.d.ts +19 -0
  247. package/dist/telemetry/console.d.ts.map +1 -0
  248. package/dist/telemetry/console.js +87 -0
  249. package/dist/telemetry/console.js.map +1 -0
  250. package/dist/telemetry/dom.d.ts +21 -0
  251. package/dist/telemetry/dom.d.ts.map +1 -0
  252. package/dist/telemetry/dom.js +99 -0
  253. package/dist/telemetry/dom.js.map +1 -0
  254. package/dist/telemetry/network.d.ts +33 -0
  255. package/dist/telemetry/network.d.ts.map +1 -0
  256. package/dist/telemetry/network.js +191 -0
  257. package/dist/telemetry/network.js.map +1 -0
  258. package/dist/types.d.ts +1 -1
  259. package/dist/ui/formatters/cookies.d.ts +32 -0
  260. package/dist/ui/formatters/cookies.d.ts.map +1 -0
  261. package/dist/ui/formatters/cookies.js +48 -0
  262. package/dist/ui/formatters/cookies.js.map +1 -0
  263. package/dist/ui/formatters/details.d.ts +10 -0
  264. package/dist/ui/formatters/details.d.ts.map +1 -0
  265. package/dist/ui/formatters/details.js +63 -0
  266. package/dist/ui/formatters/details.js.map +1 -0
  267. package/dist/ui/formatters/index.d.ts +10 -0
  268. package/dist/ui/formatters/index.d.ts.map +1 -0
  269. package/dist/ui/formatters/index.js +10 -0
  270. package/dist/ui/formatters/index.js.map +1 -0
  271. package/dist/ui/formatters/preview.d.ts +25 -0
  272. package/dist/ui/formatters/preview.d.ts.map +1 -0
  273. package/dist/ui/formatters/preview.js +177 -0
  274. package/dist/ui/formatters/preview.js.map +1 -0
  275. package/dist/ui/formatters/status.d.ts +39 -0
  276. package/dist/ui/formatters/status.d.ts.map +1 -0
  277. package/dist/ui/formatters/status.js +153 -0
  278. package/dist/ui/formatters/status.js.map +1 -0
  279. package/dist/ui/formatting.d.ts +197 -0
  280. package/dist/ui/formatting.d.ts.map +1 -0
  281. package/dist/ui/formatting.js +318 -0
  282. package/dist/ui/formatting.js.map +1 -0
  283. package/dist/ui/messages/chrome.d.ts +102 -0
  284. package/dist/ui/messages/chrome.d.ts.map +1 -0
  285. package/dist/ui/messages/chrome.js +162 -0
  286. package/dist/ui/messages/chrome.js.map +1 -0
  287. package/dist/ui/messages/commands.d.ts +88 -0
  288. package/dist/ui/messages/commands.d.ts.map +1 -0
  289. package/dist/ui/messages/commands.js +150 -0
  290. package/dist/ui/messages/commands.js.map +1 -0
  291. package/dist/ui/messages/consoleMessages.d.ts +39 -0
  292. package/dist/ui/messages/consoleMessages.d.ts.map +1 -0
  293. package/dist/ui/messages/consoleMessages.js +48 -0
  294. package/dist/ui/messages/consoleMessages.js.map +1 -0
  295. package/dist/ui/messages/debug.d.ts +180 -0
  296. package/dist/ui/messages/debug.d.ts.map +1 -0
  297. package/dist/ui/messages/debug.js +241 -0
  298. package/dist/ui/messages/debug.js.map +1 -0
  299. package/dist/ui/messages/errors.d.ts +80 -0
  300. package/dist/ui/messages/errors.d.ts.map +1 -0
  301. package/dist/ui/messages/errors.js +122 -0
  302. package/dist/ui/messages/errors.js.map +1 -0
  303. package/dist/ui/messages/index.d.ts +12 -0
  304. package/dist/ui/messages/index.d.ts.map +1 -0
  305. package/dist/ui/messages/index.js +12 -0
  306. package/dist/ui/messages/index.js.map +1 -0
  307. package/dist/ui/messages/internal.d.ts +30 -0
  308. package/dist/ui/messages/internal.d.ts.map +1 -0
  309. package/dist/ui/messages/internal.js +42 -0
  310. package/dist/ui/messages/internal.js.map +1 -0
  311. package/dist/ui/messages/preview.d.ts +27 -0
  312. package/dist/ui/messages/preview.d.ts.map +1 -0
  313. package/dist/ui/messages/preview.js +45 -0
  314. package/dist/ui/messages/preview.js.map +1 -0
  315. package/dist/ui/messages/session.d.ts +54 -0
  316. package/dist/ui/messages/session.d.ts.map +1 -0
  317. package/dist/ui/messages/session.js +77 -0
  318. package/dist/ui/messages/session.js.map +1 -0
  319. package/dist/ui/messages/validation.d.ts +20 -0
  320. package/dist/ui/messages/validation.d.ts.map +1 -0
  321. package/dist/ui/messages/validation.js +22 -0
  322. package/dist/ui/messages/validation.js.map +1 -0
  323. package/dist/utils/__tests__/filters.unit.test.js +1 -1
  324. package/dist/utils/cdpHandlers.d.ts +1 -1
  325. package/dist/utils/cdpHandlers.js +1 -1
  326. package/dist/utils/chromeDiagnostics.d.ts +0 -12
  327. package/dist/utils/chromeDiagnostics.d.ts.map +1 -1
  328. package/dist/utils/chromeDiagnostics.js +0 -51
  329. package/dist/utils/chromeDiagnostics.js.map +1 -1
  330. package/dist/utils/http.d.ts +1 -1
  331. package/dist/utils/http.js.map +1 -1
  332. package/dist/utils/logger.d.ts +68 -12
  333. package/dist/utils/logger.d.ts.map +1 -1
  334. package/dist/utils/logger.js +62 -12
  335. package/dist/utils/logger.js.map +1 -1
  336. package/dist/utils/pageReadiness.d.ts +51 -0
  337. package/dist/utils/pageReadiness.d.ts.map +1 -0
  338. package/dist/utils/pageReadiness.js +271 -0
  339. package/dist/utils/pageReadiness.js.map +1 -0
  340. package/dist/utils/ui.d.ts +36 -0
  341. package/dist/utils/ui.d.ts.map +1 -0
  342. package/dist/utils/ui.js +47 -0
  343. package/dist/utils/ui.js.map +1 -0
  344. package/dist/utils/url.d.ts +6 -24
  345. package/dist/utils/url.d.ts.map +1 -1
  346. package/dist/utils/url.js +6 -67
  347. package/dist/utils/url.js.map +1 -1
  348. package/package.json +2 -2
  349. package/dist/cli/collectors/dom.d.ts.map +0 -1
  350. package/dist/cli/collectors/dom.js +0 -361
  351. package/dist/cli/collectors/dom.js.map +0 -1
  352. package/dist/cli/collectors/helpers/domCache.d.ts.map +0 -1
  353. package/dist/cli/collectors/helpers/domCache.js.map +0 -1
  354. package/dist/cli/collectors/helpers/domQuery.d.ts.map +0 -1
  355. package/dist/cli/collectors/helpers/domQuery.js.map +0 -1
  356. package/dist/cli/collectors/helpers/selectorParser.d.ts.map +0 -1
  357. package/dist/cli/collectors/helpers/selectorParser.js.map +0 -1
  358. package/dist/cli/commands/__tests__/ipcTest.test.d.ts +0 -2
  359. package/dist/cli/commands/__tests__/ipcTest.test.d.ts.map +0 -1
  360. package/dist/cli/commands/__tests__/ipcTest.test.js +0 -37
  361. package/dist/cli/commands/__tests__/ipcTest.test.js.map +0 -1
  362. package/dist/cli/commands/ipcTest.d.ts +0 -23
  363. package/dist/cli/commands/ipcTest.d.ts.map +0 -1
  364. package/dist/cli/commands/ipcTest.js +0 -181
  365. package/dist/cli/commands/ipcTest.js.map +0 -1
  366. package/dist/cli/commands/query.d.ts.map +0 -1
  367. package/dist/cli/commands/query.js +0 -127
  368. package/dist/cli/commands/query.js.map +0 -1
  369. package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
  370. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
  371. package/dist/cli/handlers/ChromeBootstrap.js +0 -50
  372. package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
  373. package/dist/cli/handlers/OutputWriter.d.ts +0 -15
  374. package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
  375. package/dist/cli/handlers/OutputWriter.js +0 -34
  376. package/dist/cli/handlers/OutputWriter.js.map +0 -1
  377. package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
  378. package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
  379. package/dist/cli/handlers/PreviewWriter.js +0 -119
  380. package/dist/cli/handlers/PreviewWriter.js.map +0 -1
  381. package/dist/cli/handlers/SessionLock.d.ts +0 -16
  382. package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
  383. package/dist/cli/handlers/SessionLock.js +0 -38
  384. package/dist/cli/handlers/SessionLock.js.map +0 -1
  385. package/dist/cli/handlers/SessionLoop.d.ts +0 -19
  386. package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
  387. package/dist/cli/handlers/SessionLoop.js +0 -47
  388. package/dist/cli/handlers/SessionLoop.js.map +0 -1
  389. package/dist/cli/handlers/ShutdownController.d.ts +0 -38
  390. package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
  391. package/dist/cli/handlers/ShutdownController.js +0 -83
  392. package/dist/cli/handlers/ShutdownController.js.map +0 -1
  393. package/dist/cli/handlers/SignalHandler.d.ts +0 -35
  394. package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
  395. package/dist/cli/handlers/SignalHandler.js +0 -81
  396. package/dist/cli/handlers/SignalHandler.js.map +0 -1
  397. package/dist/cli/handlers/TargetSetup.d.ts +0 -42
  398. package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
  399. package/dist/cli/handlers/TargetSetup.js +0 -87
  400. package/dist/cli/handlers/TargetSetup.js.map +0 -1
  401. package/dist/connection/__tests__/tabs.contract.test.d.ts +0 -2
  402. package/dist/connection/__tests__/tabs.contract.test.d.ts.map +0 -1
  403. package/dist/connection/__tests__/tabs.contract.test.js +0 -137
  404. package/dist/connection/__tests__/tabs.contract.test.js.map +0 -1
  405. package/dist/connection/tabs.d.ts +0 -82
  406. package/dist/connection/tabs.d.ts.map +0 -1
  407. package/dist/connection/tabs.js +0 -577
  408. package/dist/connection/tabs.js.map +0 -1
  409. package/dist/session/BdgSession.d.ts +0 -129
  410. package/dist/session/BdgSession.d.ts.map +0 -1
  411. package/dist/session/BdgSession.js +0 -270
  412. package/dist/session/BdgSession.js.map +0 -1
  413. package/dist/session/index.d.ts +0 -15
  414. package/dist/session/index.d.ts.map +0 -1
  415. package/dist/session/index.js +0 -23
  416. package/dist/session/index.js.map +0 -1
  417. package/dist/utils/validation.d.ts +0 -12
  418. package/dist/utils/validation.d.ts.map +0 -1
  419. package/dist/utils/validation.js +0 -20
  420. package/dist/utils/validation.js.map +0 -1
  421. /package/dist/cli/{collectors → commands}/dom.d.ts +0 -0
@@ -0,0 +1,129 @@
1
+ import * as fs from 'fs';
2
+ import { runCommand } from '../commands/shared/CommandRunner.js';
3
+ import { jsonOption } from '../commands/shared/commonOptions.js';
4
+ import { cleanupSession } from '../session/cleanup.js';
5
+ import { getSessionFilePath } from '../session/paths.js';
6
+ import { readPid } from '../session/pid.js';
7
+ import { isProcessAlive } from '../session/process.js';
8
+ import { sessionFilesCleanedMessage, sessionOutputRemovedMessage, sessionDirectoryCleanMessage, noSessionFilesMessage, staleSessionFoundMessage, forceCleanupWarningMessage, sessionStillActiveError, warningMessage, } from '../ui/messages/commands.js';
9
+ import { getErrorMessage } from '../utils/errors.js';
10
+ import { EXIT_CODES } from '../utils/exitCodes.js';
11
+ /**
12
+ * Format cleanup result for human-readable output.
13
+ *
14
+ * @param data - Cleanup result data
15
+ */
16
+ function formatCleanup(data) {
17
+ const { cleaned } = data;
18
+ if (cleaned.session) {
19
+ console.error(sessionFilesCleanedMessage());
20
+ }
21
+ if (cleaned.output) {
22
+ console.error(sessionOutputRemovedMessage());
23
+ }
24
+ if (data.warnings && data.warnings.length > 0) {
25
+ data.warnings.forEach((warning) => {
26
+ console.error(warningMessage(warning));
27
+ });
28
+ }
29
+ console.error('');
30
+ console.error(data.message);
31
+ }
32
+ /**
33
+ * Register cleanup command
34
+ *
35
+ * @param program - Commander.js Command instance to register commands on
36
+ */
37
+ export function registerCleanupCommand(program) {
38
+ program
39
+ .command('cleanup')
40
+ .description('Clean up stale session files')
41
+ .option('-f, --force', 'Force cleanup even if session appears active')
42
+ .option('-a, --all', 'Also remove session.json output file')
43
+ .option('--aggressive', 'Kill all Chrome processes (uses chrome-launcher killAll)')
44
+ .addOption(jsonOption)
45
+ .action(async (options) => {
46
+ await runCommand(async (opts) => {
47
+ // Import cleanupStaleChrome dynamically
48
+ const { cleanupStaleChrome } = await import('../commands/shared/sessionController.js');
49
+ const pid = readPid();
50
+ let didCleanup = false;
51
+ let cleanedSession = false;
52
+ let cleanedOutput = false;
53
+ let cleanedChrome = false;
54
+ const warnings = [];
55
+ // Handle aggressive Chrome cleanup first if requested
56
+ if (opts.aggressive) {
57
+ const errorCount = await cleanupStaleChrome();
58
+ cleanedChrome = true;
59
+ if (errorCount > 0) {
60
+ warnings.push('Some Chrome processes could not be killed');
61
+ }
62
+ didCleanup = true;
63
+ }
64
+ if (!pid) {
65
+ // No session files to clean up
66
+ // Fall through to check --all flag for session.json removal
67
+ }
68
+ else {
69
+ // PID file exists - handle session cleanup
70
+ const isAlive = isProcessAlive(pid);
71
+ if (isAlive && !opts.force) {
72
+ return {
73
+ success: false,
74
+ error: sessionStillActiveError(pid),
75
+ exitCode: EXIT_CODES.RESOURCE_BUSY,
76
+ errorContext: {
77
+ suggestions: ['Stop gracefully: bdg stop', 'Force cleanup: bdg cleanup --force'],
78
+ warning: 'Force cleanup will remove session files but will NOT kill the running process',
79
+ },
80
+ };
81
+ }
82
+ if (isAlive && opts.force) {
83
+ warnings.push(`Process ${pid} is still running but forcing cleanup anyway`);
84
+ console.error(forceCleanupWarningMessage(pid));
85
+ }
86
+ else {
87
+ console.error(staleSessionFoundMessage(pid));
88
+ }
89
+ cleanupSession();
90
+ cleanedSession = true;
91
+ didCleanup = true;
92
+ }
93
+ // Also remove session.json output file if --all flag is specified
94
+ if (opts.all) {
95
+ const outputPath = getSessionFilePath('OUTPUT');
96
+ if (fs.existsSync(outputPath)) {
97
+ try {
98
+ fs.unlinkSync(outputPath);
99
+ cleanedOutput = true;
100
+ didCleanup = true;
101
+ }
102
+ catch (error) {
103
+ const errorMessage = getErrorMessage(error);
104
+ warnings.push(`Could not remove session.json: ${errorMessage}`);
105
+ }
106
+ }
107
+ }
108
+ // Check if any cleanup was performed
109
+ if (!didCleanup) {
110
+ return {
111
+ success: true,
112
+ data: {
113
+ cleaned: { session: false, output: false, chrome: false },
114
+ message: noSessionFilesMessage(),
115
+ },
116
+ };
117
+ }
118
+ return {
119
+ success: true,
120
+ data: {
121
+ cleaned: { session: cleanedSession, output: cleanedOutput, chrome: cleanedChrome },
122
+ message: sessionDirectoryCleanMessage(),
123
+ ...(warnings.length > 0 && { warnings }),
124
+ },
125
+ };
126
+ }, options, formatCleanup);
127
+ });
128
+ }
129
+ //# 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;AAoEzC;;;;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
+ console.log(noConsoleMessagesMessage(filter));
40
+ }
41
+ else {
42
+ console.log(consoleMessagesHeader(logs.length, filter));
43
+ console.log();
44
+ logs.forEach((log, idx) => {
45
+ console.log(formatConsoleMessage(log, idx));
46
+ });
47
+ }
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,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;AACH,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"}
@@ -0,0 +1,68 @@
1
+ import { runCommand } from '../commands/shared/CommandRunner.js';
2
+ import { jsonOption } from '../commands/shared/commonOptions.js';
3
+ import { getDetails } from '../ipc/client.js';
4
+ import { validateIPCResponse } from '../ipc/responseValidator.js';
5
+ import { formatNetworkDetails, formatConsoleDetails } from '../ui/formatters/details.js';
6
+ import { EXIT_CODES } from '../utils/exitCodes.js';
7
+ /**
8
+ * Format details for human-readable output.
9
+ * Dispatches to the appropriate formatter based on type.
10
+ *
11
+ * @param data - Details result containing item and type
12
+ */
13
+ function formatDetails(data) {
14
+ if (data.type === 'network') {
15
+ console.log(formatNetworkDetails(data.item));
16
+ }
17
+ else {
18
+ console.log(formatConsoleDetails(data.item));
19
+ }
20
+ }
21
+ /**
22
+ * Register details command.
23
+ *
24
+ * @param program - Commander.js Command instance to register commands on
25
+ */
26
+ export function registerDetailsCommand(program) {
27
+ program
28
+ .command('details')
29
+ .description('Get detailed information for a specific request or console message')
30
+ .argument('<type>', 'Type of item: "network" or "console"')
31
+ .argument('<id>', 'Request ID (for network) or index (for console)')
32
+ .addOption(jsonOption)
33
+ .action(async (type, id, options) => {
34
+ // Store arguments in options for handler (type assertion safe due to validation below)
35
+ options.type = type;
36
+ options.id = id;
37
+ await runCommand(async (opts) => {
38
+ // Validate type argument
39
+ if (opts.type !== 'network' && opts.type !== 'console') {
40
+ return {
41
+ success: false,
42
+ error: `Unknown type: ${String(opts.type)}. Valid types: network, console`,
43
+ exitCode: EXIT_CODES.INVALID_ARGUMENTS,
44
+ };
45
+ }
46
+ // Fetch details via IPC from daemon/worker
47
+ const response = await getDetails(opts.type, opts.id);
48
+ // Validate IPC response (throws on error)
49
+ validateIPCResponse(response);
50
+ // Check for data in response
51
+ if (!response.data?.item) {
52
+ return {
53
+ success: false,
54
+ error: 'No data in response',
55
+ exitCode: EXIT_CODES.RESOURCE_NOT_FOUND,
56
+ };
57
+ }
58
+ return {
59
+ success: true,
60
+ data: {
61
+ item: response.data.item,
62
+ type: opts.type,
63
+ },
64
+ };
65
+ }, options, formatDetails);
66
+ });
67
+ }
68
+ //# sourceMappingURL=details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAsBlD;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,oEAAoE,CAAC;SACjF,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;SAC1D,QAAQ,CAAC,MAAM,EAAE,iDAAiD,CAAC;SACnE,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAU,EAAE,OAAuB,EAAE,EAAE;QAClE,uFAAuF;QACvF,OAAO,CAAC,IAAI,GAAG,IAA6B,CAAC;QAC7C,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAEhB,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,yBAAyB;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;oBAC1E,QAAQ,EAAE,UAAU,CAAC,iBAAiB;iBACvC,CAAC;YACJ,CAAC;YAED,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtD,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,6BAA6B;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,qBAAqB;oBAC5B,QAAQ,EAAE,UAAU,CAAC,kBAAkB;iBACxC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAkD;oBACtE,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAC;QACJ,CAAC,EACD,OAAO,EACP,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register DOM telemetry commands
4
+ *
5
+ * @param program - Commander.js Command instance
6
+ */
7
+ export declare function registerDomCommands(program: Command): void;
8
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/commands/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqSzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmD1D"}
@@ -0,0 +1,257 @@
1
+ import { OutputBuilder } from '../commands/shared/OutputBuilder.js';
2
+ import { queryDOM, highlightDOM, getDOM } from '../ipc/client.js';
3
+ import { EXIT_CODES } from '../utils/exitCodes.js';
4
+ import { handleCommandError } from './domErrorHandler.js';
5
+ import { buildSelectorOptions } from './domOptionsBuilder.js';
6
+ /**
7
+ * Handle bdg dom query <selector> command
8
+ *
9
+ * Queries the DOM using a CSS selector and displays matching elements.
10
+ * Results are cached for 5 minutes to enable index-based references in other commands.
11
+ *
12
+ * @param selector - CSS selector to query (e.g., ".error", "#app", "button")
13
+ * @param options - Command options
14
+ * @throws Error When IPC request fails or returns error response
15
+ * @throws Error When response data is missing
16
+ */
17
+ async function handleDomQuery(selector, options) {
18
+ try {
19
+ // Send query request via IPC to daemon/worker
20
+ const response = await queryDOM(selector);
21
+ if (response.status === 'error') {
22
+ throw new Error(response.error ?? 'Unknown error');
23
+ }
24
+ if (!response.data) {
25
+ throw new Error('No data in response');
26
+ }
27
+ const { count, nodes } = response.data;
28
+ if (count === 0) {
29
+ if (options.json) {
30
+ console.log(JSON.stringify({
31
+ selector,
32
+ count: 0,
33
+ nodes: [],
34
+ }, null, 2));
35
+ }
36
+ else {
37
+ console.log(`No elements found matching "${selector}"`);
38
+ }
39
+ process.exit(EXIT_CODES.SUCCESS);
40
+ }
41
+ // Output results
42
+ if (options.json) {
43
+ console.log(JSON.stringify(response.data, null, 2));
44
+ }
45
+ else {
46
+ console.log(`Found ${count} element${count === 1 ? '' : 's'} matching "${selector}":`);
47
+ for (const node of nodes) {
48
+ const classInfo = node.classes && node.classes.length > 0 ? ` class="${node.classes.join(' ')}"` : '';
49
+ console.log(` [${node.index}] <${node.tag}${classInfo}> ${node.preview}`);
50
+ }
51
+ }
52
+ process.exit(EXIT_CODES.SUCCESS);
53
+ }
54
+ catch (error) {
55
+ handleCommandError(error, options.json ?? false);
56
+ }
57
+ }
58
+ /**
59
+ * Handle bdg dom highlight command
60
+ *
61
+ * Highlights elements in the browser with visual overlay. Accepts CSS selector,
62
+ * cached index from previous query, or direct nodeId.
63
+ *
64
+ * @param selectorOrIndex - CSS selector (e.g., ".error") or index from cached query (e.g., "2")
65
+ * @param options - Command options including color, opacity, targeting flags, and nodeId
66
+ * @throws Error When cached index not found (user must run 'bdg dom query' first)
67
+ * @throws Error When IPC request fails or returns error response
68
+ * @throws Error When response data is missing
69
+ */
70
+ async function handleDomHighlight(selectorOrIndex, options) {
71
+ try {
72
+ // Build base IPC request options (color, opacity, targeting)
73
+ const ipcOptions = {
74
+ ...(options.color !== undefined && { color: options.color }),
75
+ ...(options.opacity !== undefined && { opacity: options.opacity }),
76
+ ...(options.first !== undefined && { first: options.first }),
77
+ ...(options.nth !== undefined && { nth: options.nth }),
78
+ };
79
+ // Add selector/index/nodeId using shared helper
80
+ const selectorOptions = buildSelectorOptions(selectorOrIndex, options.nodeId);
81
+ Object.assign(ipcOptions, selectorOptions);
82
+ // Send highlight request via IPC to daemon/worker
83
+ const response = await highlightDOM(ipcOptions);
84
+ if (response.status === 'error') {
85
+ throw new Error(response.error ?? 'Unknown error');
86
+ }
87
+ if (!response.data) {
88
+ throw new Error('No data in response');
89
+ }
90
+ // Output result
91
+ if (options.json) {
92
+ console.log(JSON.stringify(response.data, null, 2));
93
+ }
94
+ else {
95
+ console.log(`✓ Highlighted ${response.data.highlighted} element${response.data.highlighted === 1 ? '' : 's'}`);
96
+ }
97
+ process.exit(EXIT_CODES.SUCCESS);
98
+ }
99
+ catch (error) {
100
+ handleCommandError(error, options.json ?? false);
101
+ }
102
+ }
103
+ /**
104
+ * Handle bdg dom get command
105
+ *
106
+ * Retrieves full HTML and attributes for DOM elements. Accepts CSS selector,
107
+ * cached index from previous query, or direct nodeId.
108
+ *
109
+ * @param selectorOrIndex - CSS selector (e.g., ".error") or index from cached query (e.g., "2")
110
+ * @param options - Command options including --all, --nth, and nodeId
111
+ * @throws Error When cached index not found (user must run 'bdg dom query' first)
112
+ * @throws Error When IPC request fails or returns error response
113
+ * @throws Error When response data is missing
114
+ */
115
+ async function handleDomGet(selectorOrIndex, options) {
116
+ try {
117
+ // Build base IPC request options (targeting flags)
118
+ const ipcOptions = {
119
+ ...(options.all !== undefined && { all: options.all }),
120
+ ...(options.nth !== undefined && { nth: options.nth }),
121
+ };
122
+ // Add selector/index/nodeId using shared helper
123
+ const selectorOptions = buildSelectorOptions(selectorOrIndex, options.nodeId);
124
+ Object.assign(ipcOptions, selectorOptions);
125
+ // Send get request via IPC to daemon/worker
126
+ const response = await getDOM(ipcOptions);
127
+ if (response.status === 'error') {
128
+ throw new Error(response.error ?? 'Unknown error');
129
+ }
130
+ if (!response.data) {
131
+ throw new Error('No data in response');
132
+ }
133
+ const { nodes } = response.data;
134
+ // Output results
135
+ if (options.json) {
136
+ console.log(JSON.stringify(nodes.length === 1 ? nodes[0] : nodes, null, 2));
137
+ }
138
+ else {
139
+ if (nodes.length === 1) {
140
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
141
+ console.log(nodes[0].outerHTML);
142
+ }
143
+ else {
144
+ for (const [i, node] of nodes.entries()) {
145
+ console.log(`[${i + 1}] ${node.outerHTML}`);
146
+ }
147
+ }
148
+ }
149
+ process.exit(EXIT_CODES.SUCCESS);
150
+ }
151
+ catch (error) {
152
+ handleCommandError(error, options.json ?? false);
153
+ }
154
+ }
155
+ /**
156
+ * Handle bdg dom eval <script> command
157
+ *
158
+ * Evaluates arbitrary JavaScript in the browser context and returns the result.
159
+ * Requires an active session. Uses CDP Runtime.evaluate with async support.
160
+ *
161
+ * @param script - JavaScript expression to evaluate (e.g., "document.title", "window.location.href")
162
+ * @param options - Command options including port and json formatting
163
+ * @throws Error When no active session is running
164
+ * @throws Error When session metadata is invalid
165
+ * @throws Error When target no longer exists (tab closed)
166
+ * @throws Error When CDP connection fails
167
+ * @throws Error When script execution throws exception
168
+ */
169
+ async function handleDomEval(script, options) {
170
+ try {
171
+ // Lazy load CDP connection (only needed for eval command)
172
+ const { CDPConnection } = await import('../connection/cdp.js');
173
+ const { validateActiveSession, getValidatedSessionMetadata, verifyTargetExists, executeScript, } = await import('./domEvalHelpers.js');
174
+ // Validate session is running
175
+ const jsonOutput = options.json ?? false;
176
+ validateActiveSession(jsonOutput);
177
+ // Get and validate session metadata
178
+ const metadata = getValidatedSessionMetadata(jsonOutput);
179
+ // Verify target still exists
180
+ const port = parseInt(options.port ?? '9222', 10);
181
+ await verifyTargetExists(metadata, port, jsonOutput);
182
+ // Create temporary CDP connection and execute script
183
+ const cdp = new CDPConnection();
184
+ // getValidatedSessionMetadata ensures webSocketDebuggerUrl is defined
185
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
186
+ await cdp.connect(metadata.webSocketDebuggerUrl);
187
+ const result = await executeScript(cdp, script);
188
+ cdp.close();
189
+ // Output result (wrapped if --json, raw otherwise)
190
+ if (options.json) {
191
+ console.log(JSON.stringify(OutputBuilder.buildJsonSuccess({
192
+ result: result.result?.value,
193
+ }), null, 2));
194
+ }
195
+ else {
196
+ console.log(JSON.stringify(result.result?.value, null, 2));
197
+ }
198
+ process.exit(EXIT_CODES.SUCCESS);
199
+ }
200
+ catch (error) {
201
+ handleCommandError(error, options.json ?? false);
202
+ }
203
+ }
204
+ /**
205
+ * Register DOM telemetry commands
206
+ *
207
+ * @param program - Commander.js Command instance
208
+ */
209
+ export function registerDomCommands(program) {
210
+ const dom = program.command('dom').description('DOM inspection and manipulation');
211
+ // bdg dom query <selector>
212
+ dom
213
+ .command('query')
214
+ .description('Find elements by CSS selector')
215
+ .argument('<selector>', 'CSS selector (e.g., ".error", "#app", "button")')
216
+ .option('-j, --json', 'Output as JSON')
217
+ .action(async (selector, options) => {
218
+ await handleDomQuery(selector, options);
219
+ });
220
+ // bdg dom eval <script>
221
+ dom
222
+ .command('eval')
223
+ .description('Evaluate JavaScript expression in the page context')
224
+ .argument('<script>', 'JavaScript to execute (e.g., "document.title", "window.location.href")')
225
+ .option('-p, --port <number>', 'Chrome debugging port (default: 9222)')
226
+ .option('-j, --json', 'Wrap result in version/success format')
227
+ .action(async (script, options) => {
228
+ await handleDomEval(script, options);
229
+ });
230
+ // bdg dom highlight <selector|index>
231
+ dom
232
+ .command('highlight')
233
+ .description('Highlight elements in browser')
234
+ .argument('<selector|index>', 'CSS selector or index from last query')
235
+ .option('--first', 'Target first match only')
236
+ .option('--nth <n>', 'Target nth match', parseInt)
237
+ .option('--node-id <id>', 'Use nodeId directly (advanced)', parseInt)
238
+ .option('--color <color>', 'Highlight color (red, blue, green, yellow, orange, purple)')
239
+ .option('--opacity <value>', 'Highlight opacity (0.0 - 1.0)', parseFloat)
240
+ .option('-j, --json', 'Output as JSON')
241
+ .action(async (selectorOrIndex, options) => {
242
+ await handleDomHighlight(selectorOrIndex, options);
243
+ });
244
+ // bdg dom get <selector|index>
245
+ dom
246
+ .command('get')
247
+ .description('Get full HTML and attributes for elements')
248
+ .argument('<selector|index>', 'CSS selector or index from last query')
249
+ .option('--all', 'Target all matches')
250
+ .option('--nth <n>', 'Target nth match', parseInt)
251
+ .option('--node-id <id>', 'Use nodeId directly (advanced)', parseInt)
252
+ .option('-j, --json', 'Output as JSON')
253
+ .action(async (selectorOrIndex, options) => {
254
+ await handleDomGet(selectorOrIndex, options);
255
+ });
256
+ }
257
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/commands/dom.ts"],"names":[],"mappings":"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"}