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,45 @@
1
+ /**
2
+ * Handle command errors with consistent formatting
3
+ *
4
+ * Outputs error message in JSON or human-readable format and exits with error code.
5
+ * This function never returns - it always calls process.exit().
6
+ *
7
+ * @param error - Error object or message
8
+ * @param json - Whether to output JSON format
9
+ * @param exitCode - Exit code to use (defaults to UNHANDLED_EXCEPTION)
10
+ * @throws never This function always exits the process
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * try {
15
+ * await someOperation();
16
+ * } catch (error) {
17
+ * handleCommandError(error, options.json);
18
+ * }
19
+ * ```
20
+ */
21
+ export declare function handleCommandError(error: unknown, json: boolean, exitCode?: number): never;
22
+ /**
23
+ * Handle command errors with additional context
24
+ *
25
+ * Similar to handleCommandError but allows adding suggestion or note metadata
26
+ * to JSON error output for better user guidance.
27
+ *
28
+ * @param error - Error object or message
29
+ * @param json - Whether to output JSON format
30
+ * @param metadata - Additional context (suggestion, note, etc.)
31
+ * @param exitCode - Exit code to use (defaults to UNHANDLED_EXCEPTION)
32
+ * @throws never This function always exits the process
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * handleCommandErrorWithContext(
37
+ * 'Session not found',
38
+ * options.json,
39
+ * { suggestion: 'Start a session with: bdg <url>' },
40
+ * EXIT_CODES.RESOURCE_NOT_FOUND
41
+ * );
42
+ * ```
43
+ */
44
+ export declare function handleCommandErrorWithContext(error: unknown, json: boolean, metadata: Record<string, string>, exitCode?: number): never;
45
+ //# sourceMappingURL=domErrorHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domErrorHandler.d.ts","sourceRoot":"","sources":["../../src/commands/domErrorHandler.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,MAAuC,GAChD,KAAK,CAQP;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,GAAE,MAAuC,GAChD,KAAK,CAYP"}
@@ -0,0 +1,71 @@
1
+ import { OutputBuilder } from '../commands/shared/OutputBuilder.js';
2
+ import { genericError } from '../ui/messages/errors.js';
3
+ import { getErrorMessage } from '../utils/errors.js';
4
+ import { EXIT_CODES } from '../utils/exitCodes.js';
5
+ /**
6
+ * Handle command errors with consistent formatting
7
+ *
8
+ * Outputs error message in JSON or human-readable format and exits with error code.
9
+ * This function never returns - it always calls process.exit().
10
+ *
11
+ * @param error - Error object or message
12
+ * @param json - Whether to output JSON format
13
+ * @param exitCode - Exit code to use (defaults to UNHANDLED_EXCEPTION)
14
+ * @throws never This function always exits the process
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * try {
19
+ * await someOperation();
20
+ * } catch (error) {
21
+ * handleCommandError(error, options.json);
22
+ * }
23
+ * ```
24
+ */
25
+ export function handleCommandError(error, json, exitCode = EXIT_CODES.UNHANDLED_EXCEPTION) {
26
+ const errorMsg = getErrorMessage(error);
27
+ if (json) {
28
+ console.log(JSON.stringify(OutputBuilder.buildJsonError(errorMsg), null, 2));
29
+ }
30
+ else {
31
+ console.error(genericError(errorMsg));
32
+ }
33
+ process.exit(exitCode);
34
+ }
35
+ /**
36
+ * Handle command errors with additional context
37
+ *
38
+ * Similar to handleCommandError but allows adding suggestion or note metadata
39
+ * to JSON error output for better user guidance.
40
+ *
41
+ * @param error - Error object or message
42
+ * @param json - Whether to output JSON format
43
+ * @param metadata - Additional context (suggestion, note, etc.)
44
+ * @param exitCode - Exit code to use (defaults to UNHANDLED_EXCEPTION)
45
+ * @throws never This function always exits the process
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * handleCommandErrorWithContext(
50
+ * 'Session not found',
51
+ * options.json,
52
+ * { suggestion: 'Start a session with: bdg <url>' },
53
+ * EXIT_CODES.RESOURCE_NOT_FOUND
54
+ * );
55
+ * ```
56
+ */
57
+ export function handleCommandErrorWithContext(error, json, metadata, exitCode = EXIT_CODES.UNHANDLED_EXCEPTION) {
58
+ const errorMsg = getErrorMessage(error);
59
+ if (json) {
60
+ console.log(JSON.stringify(OutputBuilder.buildJsonError(errorMsg, metadata), null, 2));
61
+ }
62
+ else {
63
+ console.error(genericError(errorMsg));
64
+ // Output metadata as additional help text
65
+ for (const value of Object.values(metadata)) {
66
+ console.error(`${value}`);
67
+ }
68
+ }
69
+ process.exit(exitCode);
70
+ }
71
+ //# sourceMappingURL=domErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domErrorHandler.js","sourceRoot":"","sources":["../../src/commands/domErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,IAAa,EACb,WAAmB,UAAU,CAAC,mBAAmB;IAEjD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,IAAa,EACb,QAAgC,EAChC,WAAmB,UAAU,CAAC,mBAAmB;IAEjD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,0CAA0C;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { CDPConnection } from '../connection/cdp.js';
2
+ import { type SessionMetadata } from '../session/metadata.js';
3
+ /**
4
+ * CDP Runtime.evaluate result
5
+ */
6
+ interface RuntimeEvaluateResult {
7
+ exceptionDetails?: {
8
+ exception?: {
9
+ description?: string;
10
+ };
11
+ };
12
+ result?: {
13
+ value?: unknown;
14
+ };
15
+ }
16
+ /**
17
+ * Validate that an active session is running
18
+ *
19
+ * @param json - Whether to output JSON format
20
+ * @returns PID of running session
21
+ * @throws never Exits process if no active session found
22
+ */
23
+ export declare function validateActiveSession(json: boolean): number;
24
+ /**
25
+ * Get session metadata with validation
26
+ *
27
+ * @param json - Whether to output JSON format
28
+ * @returns Session metadata including targetId and webSocketDebuggerUrl
29
+ * @throws never Exits process if metadata is invalid or missing required fields
30
+ */
31
+ export declare function getValidatedSessionMetadata(json: boolean): SessionMetadata;
32
+ /**
33
+ * Verify that the CDP target still exists
34
+ *
35
+ * @param metadata - Session metadata containing targetId
36
+ * @param port - CDP port number
37
+ * @param json - Whether to output JSON format
38
+ * @throws Error When CDP response is invalid
39
+ * @throws never Exits process if target not found
40
+ */
41
+ export declare function verifyTargetExists(metadata: SessionMetadata, port: number, json: boolean): Promise<void>;
42
+ /**
43
+ * Execute JavaScript in browser context via CDP
44
+ *
45
+ * @param cdp - CDP connection instance
46
+ * @param script - JavaScript expression to execute
47
+ * @returns Execution result
48
+ * @throws Error When script execution throws exception
49
+ */
50
+ export declare function executeScript(cdp: CDPConnection, script: string): Promise<RuntimeEvaluateResult>;
51
+ export {};
52
+ //# sourceMappingURL=domEvalHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domEvalHelpers.d.ts","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAclF;;GAEG;AACH,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE;QACjB,SAAS,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAc1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAehC"}
@@ -0,0 +1,76 @@
1
+ import { readSessionMetadata } from '../session/metadata.js';
2
+ import { readPid } from '../session/pid.js';
3
+ import { isProcessAlive } from '../session/process.js';
4
+ import { EXIT_CODES } from '../utils/exitCodes.js';
5
+ import { handleCommandErrorWithContext } from './domErrorHandler.js';
6
+ /**
7
+ * Validate that an active session is running
8
+ *
9
+ * @param json - Whether to output JSON format
10
+ * @returns PID of running session
11
+ * @throws never Exits process if no active session found
12
+ */
13
+ export function validateActiveSession(json) {
14
+ const pid = readPid();
15
+ if (!pid || !isProcessAlive(pid)) {
16
+ handleCommandErrorWithContext('No active session running', json, { suggestion: 'Start a session with: bdg <url>' }, EXIT_CODES.RESOURCE_NOT_FOUND);
17
+ }
18
+ return pid;
19
+ }
20
+ /**
21
+ * Get session metadata with validation
22
+ *
23
+ * @param json - Whether to output JSON format
24
+ * @returns Session metadata including targetId and webSocketDebuggerUrl
25
+ * @throws never Exits process if metadata is invalid or missing required fields
26
+ */
27
+ export function getValidatedSessionMetadata(json) {
28
+ const metadata = readSessionMetadata();
29
+ if (!metadata?.targetId || !metadata.webSocketDebuggerUrl) {
30
+ handleCommandErrorWithContext('No target information in session metadata', json, { note: 'Session may have been started with an older version' }, EXIT_CODES.SESSION_FILE_ERROR);
31
+ }
32
+ // TypeScript doesn't know handleCommandErrorWithContext never returns
33
+ return metadata;
34
+ }
35
+ /**
36
+ * Verify that the CDP target still exists
37
+ *
38
+ * @param metadata - Session metadata containing targetId
39
+ * @param port - CDP port number
40
+ * @param json - Whether to output JSON format
41
+ * @throws Error When CDP response is invalid
42
+ * @throws never Exits process if target not found
43
+ */
44
+ export async function verifyTargetExists(metadata, port, json) {
45
+ const response = await fetch(`http://127.0.0.1:${port}/json/list`);
46
+ const targetsData = await response.json();
47
+ if (!Array.isArray(targetsData)) {
48
+ throw new Error('Invalid response from CDP');
49
+ }
50
+ const target = targetsData.find((t) => t.id === metadata.targetId);
51
+ if (!target) {
52
+ handleCommandErrorWithContext('Session target not found (tab may have been closed)', json, { suggestion: 'Start a new session with: bdg <url>' }, EXIT_CODES.RESOURCE_NOT_FOUND);
53
+ }
54
+ }
55
+ /**
56
+ * Execute JavaScript in browser context via CDP
57
+ *
58
+ * @param cdp - CDP connection instance
59
+ * @param script - JavaScript expression to execute
60
+ * @returns Execution result
61
+ * @throws Error When script execution throws exception
62
+ */
63
+ export async function executeScript(cdp, script) {
64
+ const result = (await cdp.send('Runtime.evaluate', {
65
+ expression: script,
66
+ returnByValue: true,
67
+ awaitPromise: true,
68
+ }));
69
+ // Check for execution exceptions
70
+ if (result.exceptionDetails) {
71
+ const errorMsg = result.exceptionDetails.exception?.description ?? 'Unknown error executing script';
72
+ throw new Error(errorMsg);
73
+ }
74
+ return result;
75
+ }
76
+ //# sourceMappingURL=domEvalHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domEvalHelpers.js","sourceRoot":"","sources":["../../src/commands/domEvalHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAuBrE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,6BAA6B,CAC3B,2BAA2B,EAC3B,IAAI,EACJ,EAAE,UAAU,EAAE,iCAAiC,EAAE,EACjD,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAa;IACvD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC1D,6BAA6B,CAC3B,2CAA2C,EAC3C,IAAI,EACJ,EAAE,IAAI,EAAE,qDAAqD,EAAE,EAC/D,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAyB,EACzB,IAAY,EACZ,IAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,YAAY,CAAC,CAAC;IACnE,MAAM,WAAW,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAI,WAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,6BAA6B,CAC3B,qDAAqD,EACrD,IAAI,EACJ,EAAE,UAAU,EAAE,qCAAqC,EAAE,EACrD,UAAU,CAAC,kBAAkB,CAC9B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAkB,EAClB,MAAc;IAEd,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACjD,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;KACnB,CAAC,CAA0B,CAAC;IAE7B,iCAAiC;IACjC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,IAAI,gCAAgC,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Base interface for IPC options that accept selector, index, or nodeId
3
+ */
4
+ export interface SelectorBasedOptions {
5
+ selector?: string;
6
+ index?: number;
7
+ nodeId?: number;
8
+ }
9
+ /**
10
+ * Build IPC request options from selector/index argument
11
+ *
12
+ * Handles three input methods:
13
+ * 1. Direct nodeId (advanced users) - sets nodeId field
14
+ * 2. Index from previous query - looks up nodeId from cache, sets index field
15
+ * 3. CSS selector - sets selector field
16
+ *
17
+ * @param selectorOrIndex - CSS selector string or numeric index
18
+ * @param nodeId - Optional direct nodeId (overrides selectorOrIndex)
19
+ * @returns Options object with selector, index, or nodeId set
20
+ * @throws Error When index is used but no cached element found at that index
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Direct nodeId (advanced)
25
+ * buildSelectorOptions('.error', 123) // → { nodeId: 123 }
26
+ *
27
+ * // Index from cache
28
+ * buildSelectorOptions('2', undefined) // → { index: 2 } (if cache has index 2)
29
+ *
30
+ * // CSS selector
31
+ * buildSelectorOptions('.error', undefined) // → { selector: '.error' }
32
+ * ```
33
+ */
34
+ export declare function buildSelectorOptions<T extends SelectorBasedOptions>(selectorOrIndex: string, nodeId: number | undefined): T;
35
+ //# sourceMappingURL=domOptionsBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domOptionsBuilder.d.ts","sourceRoot":"","sources":["../../src/commands/domOptionsBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,EACjE,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,CAAC,CA2BH"}
@@ -0,0 +1,51 @@
1
+ import { getNodeIdByIndex } from '../session/queryCache.js';
2
+ import { parseSelectorOrIndex } from './domSelectorParser.js';
3
+ /**
4
+ * Build IPC request options from selector/index argument
5
+ *
6
+ * Handles three input methods:
7
+ * 1. Direct nodeId (advanced users) - sets nodeId field
8
+ * 2. Index from previous query - looks up nodeId from cache, sets index field
9
+ * 3. CSS selector - sets selector field
10
+ *
11
+ * @param selectorOrIndex - CSS selector string or numeric index
12
+ * @param nodeId - Optional direct nodeId (overrides selectorOrIndex)
13
+ * @returns Options object with selector, index, or nodeId set
14
+ * @throws Error When index is used but no cached element found at that index
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Direct nodeId (advanced)
19
+ * buildSelectorOptions('.error', 123) // → { nodeId: 123 }
20
+ *
21
+ * // Index from cache
22
+ * buildSelectorOptions('2', undefined) // → { index: 2 } (if cache has index 2)
23
+ *
24
+ * // CSS selector
25
+ * buildSelectorOptions('.error', undefined) // → { selector: '.error' }
26
+ * ```
27
+ */
28
+ export function buildSelectorOptions(selectorOrIndex, nodeId) {
29
+ const options = {};
30
+ // Direct nodeId takes precedence (advanced users)
31
+ if (nodeId !== undefined) {
32
+ options.nodeId = nodeId;
33
+ return options;
34
+ }
35
+ // Parse as selector or index
36
+ const parsed = parseSelectorOrIndex(selectorOrIndex);
37
+ if (parsed.type === 'index') {
38
+ // Look up nodeId from cache
39
+ const cachedNodeId = getNodeIdByIndex(parsed.value);
40
+ if (!cachedNodeId) {
41
+ throw new Error(`No cached element at index ${parsed.value}. Run 'bdg dom query <selector>' first.`);
42
+ }
43
+ options.index = parsed.value;
44
+ }
45
+ else {
46
+ // Use selector directly
47
+ options.selector = parsed.value;
48
+ }
49
+ return options;
50
+ }
51
+ //# sourceMappingURL=domOptionsBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domOptionsBuilder.js","sourceRoot":"","sources":["../../src/commands/domOptionsBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAW9D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAuB,EACvB,MAA0B;IAE1B,MAAM,OAAO,GAAG,EAAO,CAAC;IAExB,kDAAkD;IAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,4BAA4B;QAC5B,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,CAAC,KAAK,yCAAyC,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAe,CAAC;IAC5C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Result of parsing a selector or index argument
3
+ */
4
+ export interface ParsedSelector {
5
+ type: 'selector' | 'index';
6
+ value: string | number;
7
+ }
8
+ /**
9
+ * Parse argument as either CSS selector or index
10
+ *
11
+ * @param arg - Argument to parse (e.g., ".error" or "1")
12
+ * @returns Parsed result indicating type and value
13
+ *
14
+ * @example
15
+ * parseSelectorOrIndex(".error") // \{ type: 'selector', value: '.error' \}
16
+ * parseSelectorOrIndex("1") // \{ type: 'index', value: 1 \}
17
+ * parseSelectorOrIndex("42") // \{ type: 'index', value: 42 \}
18
+ */
19
+ export declare function parseSelectorOrIndex(arg: string): ParsedSelector;
20
+ //# sourceMappingURL=domSelectorParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domSelectorParser.d.ts","sourceRoot":"","sources":["../../src/commands/domSelectorParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAQhE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Parse argument as either CSS selector or index
3
+ *
4
+ * @param arg - Argument to parse (e.g., ".error" or "1")
5
+ * @returns Parsed result indicating type and value
6
+ *
7
+ * @example
8
+ * parseSelectorOrIndex(".error") // \{ type: 'selector', value: '.error' \}
9
+ * parseSelectorOrIndex("1") // \{ type: 'index', value: 1 \}
10
+ * parseSelectorOrIndex("42") // \{ type: 'index', value: 42 \}
11
+ */
12
+ export function parseSelectorOrIndex(arg) {
13
+ // If arg is a positive integer, treat as index
14
+ if (/^\d+$/.test(arg)) {
15
+ return { type: 'index', value: parseInt(arg, 10) };
16
+ }
17
+ // Otherwise treat as CSS selector
18
+ return { type: 'selector', value: arg };
19
+ }
20
+ //# sourceMappingURL=domSelectorParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domSelectorParser.js","sourceRoot":"","sources":["../../src/commands/domSelectorParser.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,+CAA+C;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,kCAAkC;IAClC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register network commands.
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerNetworkCommands(program: Command): void;
8
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC9D"}
@@ -0,0 +1,43 @@
1
+ import { runCommand } from '../commands/shared/CommandRunner.js';
2
+ import { jsonOption } from '../commands/shared/commonOptions.js';
3
+ import { callCDP } from '../ipc/client.js';
4
+ import { validateIPCResponse } from '../ipc/responseValidator.js';
5
+ import { formatCookies } from '../ui/formatters/index.js';
6
+ /**
7
+ * Register network commands.
8
+ *
9
+ * @param program - Commander.js Command instance to register commands on
10
+ */
11
+ export function registerNetworkCommands(program) {
12
+ const networkCmd = program.command('network').description('Inspect network state and resources');
13
+ // bdg network getCookies
14
+ networkCmd
15
+ .command('getCookies')
16
+ .description('List cookies from the current page')
17
+ .option('--url <url>', 'Filter cookies by URL')
18
+ .addOption(jsonOption)
19
+ .action(async (options) => {
20
+ await runCommand(async (opts) => {
21
+ // Build CDP method parameters
22
+ const params = {};
23
+ if (opts.url) {
24
+ params['urls'] = [opts.url];
25
+ }
26
+ // Call CDP Network.getCookies
27
+ const response = await callCDP('Network.getCookies', params);
28
+ // Validate IPC response (throws on error)
29
+ validateIPCResponse(response);
30
+ // Extract cookies from CDP response
31
+ const cookies = response.data?.result?.cookies ?? [];
32
+ return {
33
+ success: true,
34
+ data: cookies,
35
+ };
36
+ }, options,
37
+ // Human-readable formatter (returns formatted string)
38
+ (cookies) => {
39
+ console.log(formatCookies(cookies));
40
+ });
41
+ });
42
+ }
43
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/commands/network.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEjG,yBAAyB;IACzB,UAAU;SACP,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAC9C,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,8BAA8B;YAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAE7D,0CAA0C;YAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,oCAAoC;YACpC,MAAM,OAAO,GAAI,QAAQ,CAAC,IAAI,EAAE,MAAiC,EAAE,OAAO,IAAI,EAAE,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC,EACD,OAAO;QACP,sDAAsD;QACtD,CAAC,OAAiB,EAAE,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register peek command.
4
+ *
5
+ * @param program - Commander.js Command instance to register commands on
6
+ */
7
+ export declare function registerPeekCommand(program: Command): void;
8
+ //# sourceMappingURL=peek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peek.d.ts","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoG1D"}
@@ -0,0 +1,114 @@
1
+ import { OutputBuilder } from '../commands/shared/OutputBuilder.js';
2
+ import { jsonOption } from '../commands/shared/commonOptions.js';
3
+ import { getPeek } from '../ipc/client.js';
4
+ import { validateIPCResponse } from '../ipc/responseValidator.js';
5
+ import { formatPreview } from '../ui/formatters/preview.js';
6
+ import { invalidLastArgumentError } from '../ui/messages/commands.js';
7
+ import { daemonNotRunningError, noPreviewDataError } from '../ui/messages/errors.js';
8
+ import { EXIT_CODES } from '../utils/exitCodes.js';
9
+ /**
10
+ * Handle errors in a consistent way for both follow and one-time modes.
11
+ *
12
+ * @param error - Error message
13
+ * @param options - Preview options
14
+ * @param exitCode - Exit code to use if not in follow mode
15
+ */
16
+ function handlePreviewError(error, options, exitCode) {
17
+ if (options.json) {
18
+ console.log(JSON.stringify(OutputBuilder.buildJsonError(error), null, 2));
19
+ }
20
+ else {
21
+ console.error(noPreviewDataError());
22
+ }
23
+ if (!options.follow) {
24
+ process.exit(exitCode);
25
+ }
26
+ }
27
+ /**
28
+ * Register peek command.
29
+ *
30
+ * @param program - Commander.js Command instance to register commands on
31
+ */
32
+ export function registerPeekCommand(program) {
33
+ program
34
+ .command('peek')
35
+ .description('Preview collected data without stopping the session')
36
+ .addOption(jsonOption)
37
+ .option('-v, --verbose', 'Use verbose output with full URLs and formatting')
38
+ .option('-n, --network', 'Show only network requests')
39
+ .option('-c, --console', 'Show only console messages')
40
+ .option('-f, --follow', 'Watch for updates (like tail -f)')
41
+ .option('--last <count>', 'Show last N items', '10')
42
+ .action(async (options) => {
43
+ // Validate --last parameter
44
+ const lastN = parseInt(options.last ?? '10', 10);
45
+ if (isNaN(lastN) || lastN < 1 || lastN > 1000) {
46
+ console.error(invalidLastArgumentError(options.last));
47
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
48
+ }
49
+ options.last = lastN.toString();
50
+ const showPreview = async () => {
51
+ try {
52
+ // Fetch preview data via IPC from daemon
53
+ const response = await getPeek();
54
+ // Validate IPC response (will throw on error)
55
+ try {
56
+ validateIPCResponse(response);
57
+ }
58
+ catch {
59
+ handlePreviewError(response.error ?? 'Unknown error', options, EXIT_CODES.RESOURCE_NOT_FOUND);
60
+ return;
61
+ }
62
+ // Extract preview data from response
63
+ const output = response.data?.preview;
64
+ if (!output) {
65
+ handlePreviewError('No preview data in response', options, EXIT_CODES.RESOURCE_NOT_FOUND);
66
+ return;
67
+ }
68
+ // Clear screen before rendering to prevent stacked outputs in follow mode
69
+ if (options.follow) {
70
+ console.clear();
71
+ }
72
+ // Add current view timestamp for follow mode to show refresh time
73
+ const previewOptions = options.follow
74
+ ? { ...options, viewedAt: new Date() }
75
+ : options;
76
+ console.log(formatPreview(output, previewOptions));
77
+ }
78
+ catch {
79
+ // Handle IPC connection errors (daemon not running, etc.)
80
+ // Note: validateIPCResponse errors are caught above
81
+ if (options.json) {
82
+ console.log(JSON.stringify(OutputBuilder.buildJsonError('Daemon not running', {
83
+ suggestion: 'Start it with: bdg <url>',
84
+ }), null, 2));
85
+ }
86
+ else {
87
+ console.error(daemonNotRunningError());
88
+ }
89
+ if (!options.follow) {
90
+ process.exit(EXIT_CODES.RESOURCE_NOT_FOUND);
91
+ }
92
+ }
93
+ };
94
+ if (options.follow) {
95
+ // Follow mode: update every second
96
+ console.error('Following live preview (Ctrl+C to stop)...\n');
97
+ await showPreview();
98
+ const followInterval = setInterval(() => {
99
+ void showPreview();
100
+ }, 1000);
101
+ // Handle Ctrl+C gracefully
102
+ process.on('SIGINT', () => {
103
+ clearInterval(followInterval);
104
+ console.error('\nStopped following preview');
105
+ process.exit(EXIT_CODES.SUCCESS);
106
+ });
107
+ }
108
+ else {
109
+ // One-time preview
110
+ await showPreview();
111
+ }
112
+ });
113
+ }
114
+ //# sourceMappingURL=peek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peek.js","sourceRoot":"","sources":["../../src/commands/peek.ts"],"names":[],"mappings":"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"}