browser-debugger-cli 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/dist/__testfixtures__/cdpMessages.d.ts +1 -1
  2. package/dist/__testfixtures__/connectionTargets.d.ts +1 -1
  3. package/dist/__tests__/fixtures/schema-v0.2.1.golden.json +47 -0
  4. package/dist/__tests__/schema.contract.test.d.ts +19 -0
  5. package/dist/__tests__/schema.contract.test.d.ts.map +1 -0
  6. package/dist/__tests__/schema.contract.test.js +236 -0
  7. package/dist/__tests__/schema.contract.test.js.map +1 -0
  8. package/dist/__testutils__/assertions.d.ts +1 -1
  9. package/dist/__testutils__/testFixtures.d.ts +1 -1
  10. package/dist/cli/commands/cdp.js +1 -1
  11. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  12. package/dist/cli/commands/cleanup.js +12 -13
  13. package/dist/cli/commands/cleanup.js.map +1 -1
  14. package/dist/cli/commands/console.js +2 -2
  15. package/dist/cli/commands/details.js +3 -3
  16. package/dist/cli/commands/details.js.map +1 -1
  17. package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +1 -1
  18. package/dist/cli/commands/dom/helpers/errorHandler.js +4 -3
  19. package/dist/cli/commands/dom/helpers/errorHandler.js.map +1 -1
  20. package/dist/cli/commands/dom/index.js +1 -1
  21. package/dist/cli/commands/dom.d.ts.map +1 -0
  22. package/dist/cli/commands/dom.js +257 -0
  23. package/dist/cli/commands/dom.js.map +1 -0
  24. package/dist/cli/commands/domErrorHandler.d.ts +45 -0
  25. package/dist/cli/commands/domErrorHandler.d.ts.map +1 -0
  26. package/dist/cli/commands/domErrorHandler.js +71 -0
  27. package/dist/cli/commands/domErrorHandler.js.map +1 -0
  28. package/dist/cli/commands/domEvalHelpers.d.ts +52 -0
  29. package/dist/cli/commands/domEvalHelpers.d.ts.map +1 -0
  30. package/dist/cli/commands/domEvalHelpers.js +76 -0
  31. package/dist/cli/commands/domEvalHelpers.js.map +1 -0
  32. package/dist/cli/commands/domOptionsBuilder.d.ts +35 -0
  33. package/dist/cli/commands/domOptionsBuilder.d.ts.map +1 -0
  34. package/dist/cli/commands/domOptionsBuilder.js +51 -0
  35. package/dist/cli/commands/domOptionsBuilder.js.map +1 -0
  36. package/dist/cli/{collectors/helpers/selectorParser.d.ts → commands/domSelectorParser.d.ts} +1 -1
  37. package/dist/cli/commands/domSelectorParser.d.ts.map +1 -0
  38. package/dist/cli/{collectors/helpers/selectorParser.js → commands/domSelectorParser.js} +1 -1
  39. package/dist/cli/commands/domSelectorParser.js.map +1 -0
  40. package/dist/cli/commands/network.d.ts.map +1 -1
  41. package/dist/cli/commands/network.js +8 -5
  42. package/dist/cli/commands/network.js.map +1 -1
  43. package/dist/cli/commands/peek.d.ts.map +1 -1
  44. package/dist/cli/commands/peek.js +7 -7
  45. package/dist/cli/commands/peek.js.map +1 -1
  46. package/dist/cli/commands/start.d.ts.map +1 -1
  47. package/dist/cli/commands/start.js +19 -2
  48. package/dist/cli/commands/start.js.map +1 -1
  49. package/dist/cli/commands/status.d.ts.map +1 -1
  50. package/dist/cli/commands/status.js +13 -10
  51. package/dist/cli/commands/status.js.map +1 -1
  52. package/dist/cli/commands/stop.d.ts.map +1 -1
  53. package/dist/cli/commands/stop.js +7 -6
  54. package/dist/cli/commands/stop.js.map +1 -1
  55. package/dist/cli/formatters/detailsFormatter.d.ts +1 -1
  56. package/dist/cli/formatters/previewFormatter.d.ts +1 -1
  57. package/dist/cli/formatters/previewFormatter.js +1 -1
  58. package/dist/cli/formatters/previewFormatter.js.map +1 -1
  59. package/dist/cli/formatters/statusFormatter.d.ts +6 -1
  60. package/dist/cli/formatters/statusFormatter.d.ts.map +1 -1
  61. package/dist/cli/formatters/statusFormatter.js +49 -4
  62. package/dist/cli/formatters/statusFormatter.js.map +1 -1
  63. package/dist/cli/handlers/CommandRunner.d.ts.map +1 -1
  64. package/dist/cli/handlers/CommandRunner.js +5 -5
  65. package/dist/cli/handlers/CommandRunner.js.map +1 -1
  66. package/dist/cli/handlers/OutputBuilder.d.ts +1 -1
  67. package/dist/cli/handlers/daemonSessionController.d.ts +1 -1
  68. package/dist/cli/handlers/daemonSessionController.d.ts.map +1 -1
  69. package/dist/cli/handlers/daemonSessionController.js +16 -45
  70. package/dist/cli/handlers/daemonSessionController.js.map +1 -1
  71. package/dist/cli/handlers/landingPage.d.ts +8 -0
  72. package/dist/cli/handlers/landingPage.d.ts.map +1 -0
  73. package/dist/cli/handlers/landingPage.js +8 -0
  74. package/dist/cli/handlers/landingPage.js.map +1 -0
  75. package/dist/cli/registry.js +10 -10
  76. package/dist/cli/registry.js.map +1 -1
  77. package/dist/collectors/__tests__/network.contract.test.js +25 -10
  78. package/dist/collectors/__tests__/network.contract.test.js.map +1 -1
  79. package/dist/collectors/console.d.ts +1 -1
  80. package/dist/collectors/console.js.map +1 -1
  81. package/dist/collectors/dom.d.ts +1 -1
  82. package/dist/collectors/network.d.ts +1 -1
  83. package/dist/collectors/network.js.map +1 -1
  84. package/dist/commandRegistry.d.ts +11 -0
  85. package/dist/commandRegistry.d.ts.map +1 -0
  86. package/dist/commandRegistry.js +45 -0
  87. package/dist/commandRegistry.js.map +1 -0
  88. package/dist/commands/__tests__/cdp.contract.test.d.ts +24 -0
  89. package/dist/commands/__tests__/cdp.contract.test.d.ts.map +1 -0
  90. package/dist/commands/__tests__/cdp.contract.test.js +466 -0
  91. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -0
  92. package/dist/commands/__tests__/domEval.contract.test.d.ts +17 -0
  93. package/dist/commands/__tests__/domEval.contract.test.d.ts.map +1 -0
  94. package/dist/commands/__tests__/domEval.contract.test.js +231 -0
  95. package/dist/commands/__tests__/domEval.contract.test.js.map +1 -0
  96. package/dist/commands/cdp.d.ts +8 -0
  97. package/dist/commands/cdp.d.ts.map +1 -0
  98. package/dist/commands/cdp.js +45 -0
  99. package/dist/commands/cdp.js.map +1 -0
  100. package/dist/commands/cleanup.d.ts +8 -0
  101. package/dist/commands/cleanup.d.ts.map +1 -0
  102. package/dist/commands/cleanup.js +170 -0
  103. package/dist/commands/cleanup.js.map +1 -0
  104. package/dist/commands/console.d.ts +8 -0
  105. package/dist/commands/console.d.ts.map +1 -0
  106. package/dist/commands/console.js +92 -0
  107. package/dist/commands/console.js.map +1 -0
  108. package/dist/commands/details.d.ts +8 -0
  109. package/dist/commands/details.d.ts.map +1 -0
  110. package/dist/commands/details.js +68 -0
  111. package/dist/commands/details.js.map +1 -0
  112. package/dist/commands/dom.d.ts +8 -0
  113. package/dist/commands/dom.d.ts.map +1 -0
  114. package/dist/commands/dom.js +249 -0
  115. package/dist/commands/dom.js.map +1 -0
  116. package/dist/commands/domErrorHandler.d.ts +45 -0
  117. package/dist/commands/domErrorHandler.d.ts.map +1 -0
  118. package/dist/commands/domErrorHandler.js +71 -0
  119. package/dist/commands/domErrorHandler.js.map +1 -0
  120. package/dist/commands/domEvalHelpers.d.ts +48 -0
  121. package/dist/commands/domEvalHelpers.d.ts.map +1 -0
  122. package/dist/commands/domEvalHelpers.js +72 -0
  123. package/dist/commands/domEvalHelpers.js.map +1 -0
  124. package/dist/commands/domOptionsBuilder.d.ts +35 -0
  125. package/dist/commands/domOptionsBuilder.d.ts.map +1 -0
  126. package/dist/commands/domOptionsBuilder.js +51 -0
  127. package/dist/commands/domOptionsBuilder.js.map +1 -0
  128. package/dist/commands/domSelectorParser.d.ts +20 -0
  129. package/dist/commands/domSelectorParser.d.ts.map +1 -0
  130. package/dist/commands/domSelectorParser.js +20 -0
  131. package/dist/commands/domSelectorParser.js.map +1 -0
  132. package/dist/commands/network.d.ts +8 -0
  133. package/dist/commands/network.d.ts.map +1 -0
  134. package/dist/commands/network.js +41 -0
  135. package/dist/commands/network.js.map +1 -0
  136. package/dist/commands/peek.d.ts +8 -0
  137. package/dist/commands/peek.d.ts.map +1 -0
  138. package/dist/commands/peek.js +115 -0
  139. package/dist/commands/peek.js.map +1 -0
  140. package/dist/commands/shared/CommandRunner.d.ts +62 -0
  141. package/dist/commands/shared/CommandRunner.d.ts.map +1 -0
  142. package/dist/commands/shared/CommandRunner.js +97 -0
  143. package/dist/commands/shared/CommandRunner.js.map +1 -0
  144. package/dist/commands/shared/OutputBuilder.d.ts +60 -0
  145. package/dist/commands/shared/OutputBuilder.d.ts.map +1 -0
  146. package/dist/commands/shared/OutputBuilder.js +138 -0
  147. package/dist/commands/shared/OutputBuilder.js.map +1 -0
  148. package/dist/commands/shared/commonOptions.d.ts +54 -0
  149. package/dist/commands/shared/commonOptions.d.ts.map +1 -0
  150. package/dist/commands/shared/commonOptions.js +65 -0
  151. package/dist/commands/shared/commonOptions.js.map +1 -0
  152. package/dist/commands/shared/daemonSessionController.d.ts +23 -0
  153. package/dist/commands/shared/daemonSessionController.d.ts.map +1 -0
  154. package/dist/commands/shared/daemonSessionController.js +79 -0
  155. package/dist/commands/shared/daemonSessionController.js.map +1 -0
  156. package/dist/commands/shared/landingPage.d.ts +8 -0
  157. package/dist/commands/shared/landingPage.d.ts.map +1 -0
  158. package/dist/commands/shared/landingPage.js +8 -0
  159. package/dist/commands/shared/landingPage.js.map +1 -0
  160. package/dist/commands/shared/sessionController.d.ts +21 -0
  161. package/dist/commands/shared/sessionController.d.ts.map +1 -0
  162. package/dist/commands/shared/sessionController.js +54 -0
  163. package/dist/commands/shared/sessionController.js.map +1 -0
  164. package/dist/commands/start.d.ts +9 -0
  165. package/dist/commands/start.d.ts.map +1 -0
  166. package/dist/commands/start.js +85 -0
  167. package/dist/commands/start.js.map +1 -0
  168. package/dist/{cli/commands/query.d.ts → commands/status.d.ts} +3 -3
  169. package/dist/commands/status.d.ts.map +1 -0
  170. package/dist/commands/status.js +88 -0
  171. package/dist/commands/status.js.map +1 -0
  172. package/dist/commands/stop.d.ts +8 -0
  173. package/dist/commands/stop.d.ts.map +1 -0
  174. package/dist/commands/stop.js +152 -0
  175. package/dist/commands/stop.js.map +1 -0
  176. package/dist/commands.d.ts +11 -0
  177. package/dist/commands.d.ts.map +1 -0
  178. package/dist/commands.js +45 -0
  179. package/dist/commands.js.map +1 -0
  180. package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -1
  181. package/dist/connection/__tests__/cdp.contract.test.js +1 -2
  182. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
  183. package/dist/connection/__tests__/finder.contract.test.js +1 -1
  184. package/dist/connection/__tests__/finder.contract.test.js.map +1 -1
  185. package/dist/connection/cdp.d.ts +1 -1
  186. package/dist/connection/cdp.js.map +1 -1
  187. package/dist/connection/domOperations.d.ts +48 -0
  188. package/dist/connection/domOperations.d.ts.map +1 -0
  189. package/dist/connection/domOperations.js +104 -0
  190. package/dist/connection/domOperations.js.map +1 -0
  191. package/dist/connection/finder.js.map +1 -1
  192. package/dist/connection/launcher.d.ts +7 -3
  193. package/dist/connection/launcher.d.ts.map +1 -1
  194. package/dist/connection/launcher.js +82 -21
  195. package/dist/connection/launcher.js.map +1 -1
  196. package/dist/constants.d.ts +17 -0
  197. package/dist/constants.d.ts.map +1 -1
  198. package/dist/constants.js +28 -0
  199. package/dist/constants.js.map +1 -1
  200. package/dist/daemon/__tests__/ipcServer.contract.test.js +25 -11
  201. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  202. package/dist/daemon/ipcServer.d.ts.map +1 -1
  203. package/dist/daemon/ipcServer.js +86 -6
  204. package/dist/daemon/ipcServer.js.map +1 -1
  205. package/dist/daemon/launcher.d.ts.map +1 -1
  206. package/dist/daemon/launcher.js +8 -6
  207. package/dist/daemon/launcher.js.map +1 -1
  208. package/dist/daemon/startSession.d.ts +2 -2
  209. package/dist/daemon/startSession.d.ts.map +1 -1
  210. package/dist/daemon/startSession.js +14 -11
  211. package/dist/daemon/startSession.js.map +1 -1
  212. package/dist/daemon/worker.d.ts +1 -1
  213. package/dist/daemon/worker.js +179 -52
  214. package/dist/daemon/worker.js.map +1 -1
  215. package/dist/{cli/collectors/helpers/domCache.d.ts → dom/cache.d.ts} +1 -5
  216. package/dist/dom/cache.d.ts.map +1 -0
  217. package/dist/{cli/collectors/helpers/domCache.js → dom/cache.js} +5 -19
  218. package/dist/dom/cache.js.map +1 -0
  219. package/dist/dom/index.d.ts +9 -0
  220. package/dist/dom/index.d.ts.map +1 -0
  221. package/dist/dom/index.js +9 -0
  222. package/dist/dom/index.js.map +1 -0
  223. package/dist/{cli/collectors/helpers/domQuery.d.ts → dom/query.d.ts} +5 -2
  224. package/dist/dom/query.d.ts.map +1 -0
  225. package/dist/{cli/collectors/helpers/domQuery.js → dom/query.js} +11 -7
  226. package/dist/dom/query.js.map +1 -0
  227. package/dist/index.js +117 -35
  228. package/dist/index.js.map +1 -1
  229. package/dist/ipc/__tests__/client.contract.test.js +11 -1
  230. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  231. package/dist/ipc/client.d.ts +17 -4
  232. package/dist/ipc/client.d.ts.map +1 -1
  233. package/dist/ipc/client.js +26 -6
  234. package/dist/ipc/client.js.map +1 -1
  235. package/dist/ipc/commands.d.ts +52 -1
  236. package/dist/ipc/commands.d.ts.map +1 -1
  237. package/dist/ipc/commands.js +8 -0
  238. package/dist/ipc/commands.js.map +1 -1
  239. package/dist/ipc/types.d.ts +34 -3
  240. package/dist/ipc/types.d.ts.map +1 -1
  241. package/dist/ipc/types.js.map +1 -1
  242. package/dist/session/metadata.d.ts +2 -2
  243. package/dist/session/metadata.d.ts.map +1 -1
  244. package/dist/session/output.d.ts +1 -1
  245. package/dist/session/process.d.ts.map +1 -1
  246. package/dist/session/process.js +4 -3
  247. package/dist/session/process.js.map +1 -1
  248. package/dist/session/queryCache.d.ts +36 -0
  249. package/dist/session/queryCache.d.ts.map +1 -0
  250. package/dist/session/queryCache.js +66 -0
  251. package/dist/session/queryCache.js.map +1 -0
  252. package/dist/telemetry/__tests__/network.contract.test.d.ts +28 -0
  253. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -0
  254. package/dist/telemetry/__tests__/network.contract.test.js +540 -0
  255. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -0
  256. package/dist/telemetry/console.d.ts +19 -0
  257. package/dist/telemetry/console.d.ts.map +1 -0
  258. package/dist/telemetry/console.js +87 -0
  259. package/dist/telemetry/console.js.map +1 -0
  260. package/dist/telemetry/dom.d.ts +21 -0
  261. package/dist/telemetry/dom.d.ts.map +1 -0
  262. package/dist/telemetry/dom.js +99 -0
  263. package/dist/telemetry/dom.js.map +1 -0
  264. package/dist/telemetry/network.d.ts +33 -0
  265. package/dist/telemetry/network.d.ts.map +1 -0
  266. package/dist/telemetry/network.js +191 -0
  267. package/dist/telemetry/network.js.map +1 -0
  268. package/dist/types.d.ts +25 -1
  269. package/dist/types.d.ts.map +1 -1
  270. package/dist/ui/errors.d.ts +39 -0
  271. package/dist/ui/errors.d.ts.map +1 -0
  272. package/dist/ui/errors.js +48 -0
  273. package/dist/ui/errors.js.map +1 -0
  274. package/dist/ui/formatters/cookies.d.ts +32 -0
  275. package/dist/ui/formatters/cookies.d.ts.map +1 -0
  276. package/dist/ui/formatters/cookies.js +45 -0
  277. package/dist/ui/formatters/cookies.js.map +1 -0
  278. package/dist/ui/formatters/details.d.ts +10 -0
  279. package/dist/ui/formatters/details.d.ts.map +1 -0
  280. package/dist/ui/formatters/details.js +61 -0
  281. package/dist/ui/formatters/details.js.map +1 -0
  282. package/dist/ui/formatters/dom.d.ts +135 -0
  283. package/dist/ui/formatters/dom.d.ts.map +1 -0
  284. package/dist/ui/formatters/dom.js +193 -0
  285. package/dist/ui/formatters/dom.js.map +1 -0
  286. package/dist/ui/formatters/index.d.ts +11 -0
  287. package/dist/ui/formatters/index.d.ts.map +1 -0
  288. package/dist/ui/formatters/index.js +11 -0
  289. package/dist/ui/formatters/index.js.map +1 -0
  290. package/dist/ui/formatters/preview.d.ts +25 -0
  291. package/dist/ui/formatters/preview.d.ts.map +1 -0
  292. package/dist/ui/formatters/preview.js +182 -0
  293. package/dist/ui/formatters/preview.js.map +1 -0
  294. package/dist/ui/formatters/status.d.ts +39 -0
  295. package/dist/ui/formatters/status.d.ts.map +1 -0
  296. package/dist/ui/formatters/status.js +153 -0
  297. package/dist/ui/formatters/status.js.map +1 -0
  298. package/dist/ui/formatting.d.ts +300 -0
  299. package/dist/ui/formatting.d.ts.map +1 -0
  300. package/dist/ui/formatting.js +454 -0
  301. package/dist/ui/formatting.js.map +1 -0
  302. package/dist/ui/messages/chrome.d.ts +172 -0
  303. package/dist/ui/messages/chrome.d.ts.map +1 -0
  304. package/dist/ui/messages/chrome.js +253 -0
  305. package/dist/ui/messages/chrome.js.map +1 -0
  306. package/dist/ui/messages/commands.d.ts +88 -0
  307. package/dist/ui/messages/commands.d.ts.map +1 -0
  308. package/dist/ui/messages/commands.js +150 -0
  309. package/dist/ui/messages/commands.js.map +1 -0
  310. package/dist/ui/messages/consoleMessages.d.ts +39 -0
  311. package/dist/ui/messages/consoleMessages.d.ts.map +1 -0
  312. package/dist/ui/messages/consoleMessages.js +48 -0
  313. package/dist/ui/messages/consoleMessages.js.map +1 -0
  314. package/dist/ui/messages/debug.d.ts +182 -0
  315. package/dist/ui/messages/debug.d.ts.map +1 -0
  316. package/dist/ui/messages/debug.js +243 -0
  317. package/dist/ui/messages/debug.js.map +1 -0
  318. package/dist/ui/messages/errors.d.ts +91 -0
  319. package/dist/ui/messages/errors.d.ts.map +1 -0
  320. package/dist/ui/messages/errors.js +135 -0
  321. package/dist/ui/messages/errors.js.map +1 -0
  322. package/dist/ui/messages/index.d.ts +12 -0
  323. package/dist/ui/messages/index.d.ts.map +1 -0
  324. package/dist/ui/messages/index.js +12 -0
  325. package/dist/ui/messages/index.js.map +1 -0
  326. package/dist/ui/messages/internal.d.ts +30 -0
  327. package/dist/ui/messages/internal.d.ts.map +1 -0
  328. package/dist/ui/messages/internal.js +42 -0
  329. package/dist/ui/messages/internal.js.map +1 -0
  330. package/dist/ui/messages/preview.d.ts +51 -0
  331. package/dist/ui/messages/preview.d.ts.map +1 -0
  332. package/dist/ui/messages/preview.js +76 -0
  333. package/dist/ui/messages/preview.js.map +1 -0
  334. package/dist/ui/messages/session.d.ts +54 -0
  335. package/dist/ui/messages/session.d.ts.map +1 -0
  336. package/dist/ui/messages/session.js +77 -0
  337. package/dist/ui/messages/session.js.map +1 -0
  338. package/dist/ui/messages/validation.d.ts +34 -0
  339. package/dist/ui/messages/validation.d.ts.map +1 -0
  340. package/dist/ui/messages/validation.js +38 -0
  341. package/dist/ui/messages/validation.js.map +1 -0
  342. package/dist/utils/__tests__/filters.unit.test.js +1 -1
  343. package/dist/utils/cdpHandlers.d.ts +1 -1
  344. package/dist/utils/cdpHandlers.js +1 -1
  345. package/dist/utils/chromeDiagnostics.d.ts +0 -12
  346. package/dist/utils/chromeDiagnostics.d.ts.map +1 -1
  347. package/dist/utils/chromeDiagnostics.js +0 -51
  348. package/dist/utils/chromeDiagnostics.js.map +1 -1
  349. package/dist/utils/filters.js +1 -1
  350. package/dist/utils/filters.js.map +1 -1
  351. package/dist/utils/http.d.ts +1 -1
  352. package/dist/utils/http.js.map +1 -1
  353. package/dist/utils/logger.d.ts +68 -12
  354. package/dist/utils/logger.d.ts.map +1 -1
  355. package/dist/utils/logger.js +62 -12
  356. package/dist/utils/logger.js.map +1 -1
  357. package/dist/utils/pageReadiness.d.ts +46 -0
  358. package/dist/utils/pageReadiness.d.ts.map +1 -0
  359. package/dist/utils/pageReadiness.js +271 -0
  360. package/dist/utils/pageReadiness.js.map +1 -0
  361. package/dist/utils/ui.d.ts +36 -0
  362. package/dist/utils/ui.d.ts.map +1 -0
  363. package/dist/utils/ui.js +47 -0
  364. package/dist/utils/ui.js.map +1 -0
  365. package/dist/utils/url.d.ts +60 -26
  366. package/dist/utils/url.d.ts.map +1 -1
  367. package/dist/utils/url.js +130 -84
  368. package/dist/utils/url.js.map +1 -1
  369. package/package.json +2 -5
  370. package/dist/cli/collectors/dom.d.ts.map +0 -1
  371. package/dist/cli/collectors/dom.js +0 -361
  372. package/dist/cli/collectors/dom.js.map +0 -1
  373. package/dist/cli/collectors/helpers/domCache.d.ts.map +0 -1
  374. package/dist/cli/collectors/helpers/domCache.js.map +0 -1
  375. package/dist/cli/collectors/helpers/domQuery.d.ts.map +0 -1
  376. package/dist/cli/collectors/helpers/domQuery.js.map +0 -1
  377. package/dist/cli/collectors/helpers/selectorParser.d.ts.map +0 -1
  378. package/dist/cli/collectors/helpers/selectorParser.js.map +0 -1
  379. package/dist/cli/commands/__tests__/ipcTest.test.d.ts +0 -2
  380. package/dist/cli/commands/__tests__/ipcTest.test.d.ts.map +0 -1
  381. package/dist/cli/commands/__tests__/ipcTest.test.js +0 -37
  382. package/dist/cli/commands/__tests__/ipcTest.test.js.map +0 -1
  383. package/dist/cli/commands/ipcTest.d.ts +0 -23
  384. package/dist/cli/commands/ipcTest.d.ts.map +0 -1
  385. package/dist/cli/commands/ipcTest.js +0 -181
  386. package/dist/cli/commands/ipcTest.js.map +0 -1
  387. package/dist/cli/commands/query.d.ts.map +0 -1
  388. package/dist/cli/commands/query.js +0 -127
  389. package/dist/cli/commands/query.js.map +0 -1
  390. package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
  391. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
  392. package/dist/cli/handlers/ChromeBootstrap.js +0 -50
  393. package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
  394. package/dist/cli/handlers/OutputWriter.d.ts +0 -15
  395. package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
  396. package/dist/cli/handlers/OutputWriter.js +0 -34
  397. package/dist/cli/handlers/OutputWriter.js.map +0 -1
  398. package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
  399. package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
  400. package/dist/cli/handlers/PreviewWriter.js +0 -119
  401. package/dist/cli/handlers/PreviewWriter.js.map +0 -1
  402. package/dist/cli/handlers/SessionLock.d.ts +0 -16
  403. package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
  404. package/dist/cli/handlers/SessionLock.js +0 -38
  405. package/dist/cli/handlers/SessionLock.js.map +0 -1
  406. package/dist/cli/handlers/SessionLoop.d.ts +0 -19
  407. package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
  408. package/dist/cli/handlers/SessionLoop.js +0 -47
  409. package/dist/cli/handlers/SessionLoop.js.map +0 -1
  410. package/dist/cli/handlers/ShutdownController.d.ts +0 -38
  411. package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
  412. package/dist/cli/handlers/ShutdownController.js +0 -83
  413. package/dist/cli/handlers/ShutdownController.js.map +0 -1
  414. package/dist/cli/handlers/SignalHandler.d.ts +0 -35
  415. package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
  416. package/dist/cli/handlers/SignalHandler.js +0 -81
  417. package/dist/cli/handlers/SignalHandler.js.map +0 -1
  418. package/dist/cli/handlers/TargetSetup.d.ts +0 -42
  419. package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
  420. package/dist/cli/handlers/TargetSetup.js +0 -87
  421. package/dist/cli/handlers/TargetSetup.js.map +0 -1
  422. package/dist/connection/__tests__/tabs.contract.test.d.ts +0 -2
  423. package/dist/connection/__tests__/tabs.contract.test.d.ts.map +0 -1
  424. package/dist/connection/__tests__/tabs.contract.test.js +0 -137
  425. package/dist/connection/__tests__/tabs.contract.test.js.map +0 -1
  426. package/dist/connection/tabs.d.ts +0 -82
  427. package/dist/connection/tabs.d.ts.map +0 -1
  428. package/dist/connection/tabs.js +0 -577
  429. package/dist/connection/tabs.js.map +0 -1
  430. package/dist/session/BdgSession.d.ts +0 -129
  431. package/dist/session/BdgSession.d.ts.map +0 -1
  432. package/dist/session/BdgSession.js +0 -270
  433. package/dist/session/BdgSession.js.map +0 -1
  434. package/dist/session/index.d.ts +0 -15
  435. package/dist/session/index.d.ts.map +0 -1
  436. package/dist/session/index.js +0 -23
  437. package/dist/session/index.js.map +0 -1
  438. package/dist/utils/validation.d.ts +0 -12
  439. package/dist/utils/validation.d.ts.map +0 -1
  440. package/dist/utils/validation.js +0 -20
  441. package/dist/utils/validation.js.map +0 -1
  442. /package/dist/cli/{collectors → commands}/dom.d.ts +0 -0
@@ -1,42 +1,98 @@
1
1
  /**
2
- * Logging utilities for consistent formatted output.
2
+ * Logging utilities for consistent formatted output with log level support.
3
3
  *
4
- * WHY: Centralizes log formatting to avoid repetitive `console.error('[component] message')` patterns.
4
+ * WHY: Centralizes log formatting and enables debug mode for verbose logging.
5
+ * By default, only 'info' level logs are shown. Set BDG_DEBUG=1 or use --debug
6
+ * flag to enable verbose 'debug' level logs.
5
7
  */
8
+ /**
9
+ * Enable debug logging globally.
10
+ *
11
+ * This is typically called during CLI initialization when --debug flag is detected.
12
+ * Debug mode shows all logs including verbose internal state changes and tracing.
13
+ */
14
+ export declare function enableDebugLogging(): void;
15
+ /**
16
+ * Check if debug logging is currently enabled.
17
+ *
18
+ * @returns True if debug mode is active
19
+ */
20
+ export declare function isDebugEnabled(): boolean;
21
+ /**
22
+ * Log level determines visibility of log messages.
23
+ *
24
+ * - 'info': Always shown (important user-facing messages, errors, key milestones)
25
+ * - 'debug': Only shown in debug mode (verbose internal state, IPC traces, progress updates)
26
+ */
27
+ export type LogLevel = 'info' | 'debug';
6
28
  /**
7
29
  * Log contexts for different components.
8
30
  * Used to prefix log messages with component name.
9
31
  */
10
32
  export type LogContext = 'bdg' | 'launcher' | 'daemon' | 'worker' | 'client' | 'cleanup' | 'session' | 'chrome' | 'cdp' | 'ipc';
11
33
  /**
12
- * Create a logger function for a specific context.
34
+ * Logger instance with support for different log levels.
35
+ */
36
+ export interface Logger {
37
+ /**
38
+ * Log an info message (always shown).
39
+ * Use for important user-facing messages and key milestones.
40
+ */
41
+ info: (message: string) => void;
42
+ /**
43
+ * Log a debug message (only shown in debug mode).
44
+ * Use for verbose internal state, progress updates, and traces.
45
+ */
46
+ debug: (message: string) => void;
47
+ /**
48
+ * Log a message (defaults to info level).
49
+ * Provided for backward compatibility.
50
+ */
51
+ (message: string): void;
52
+ }
53
+ /**
54
+ * Create a logger instance for a specific context.
13
55
  *
14
- * WHY: Provides consistent log formatting with context prefix.
56
+ * WHY: Provides consistent log formatting with context prefix and level support.
57
+ * By default, ALL logs are hidden unless --debug flag or BDG_DEBUG=1 is set.
58
+ * This keeps normal output clean and only shows logs when debugging.
15
59
  *
16
60
  * @param context - Component context for log prefix
17
- * @returns Logger function that prefixes messages with context
61
+ * @returns Logger instance with info/debug methods
18
62
  *
19
63
  * @example
20
64
  * ```typescript
21
65
  * const log = createLogger('cleanup');
22
- * log('Removed stale daemon socket');
23
- * // Output: [cleanup] Removed stale daemon socket
66
+ *
67
+ * // Always shown (even without --debug)
68
+ * log.info('Cleaned up stale session files');
69
+ *
70
+ * // Only shown in debug mode (--debug or BDG_DEBUG=1)
71
+ * log.debug('Checking PID file at ~/.bdg/daemon.pid');
72
+ *
73
+ * // Backward compatible (treated as debug - only shown in debug mode)
74
+ * log('Daemon started successfully');
24
75
  * ```
25
76
  */
26
- export declare function createLogger(context: LogContext): (message: string) => void;
77
+ export declare function createLogger(context: LogContext): Logger;
27
78
  /**
28
79
  * Log a message with a specific context (one-off usage).
29
80
  *
30
- * WHY: Convenient for single log statements without creating a logger function.
81
+ * WHY: Convenient for single log statements without creating a logger instance.
31
82
  *
32
83
  * @param context - Component context for log prefix
33
84
  * @param message - Log message
85
+ * @param level - Log level (defaults to 'debug' - only shown with --debug)
34
86
  *
35
87
  * @example
36
88
  * ```typescript
37
- * log('cleanup', 'Removed stale daemon socket');
38
- * // Output: [cleanup] Removed stale daemon socket
89
+ * // Always shown (even without --debug)
90
+ * log('cleanup', 'Removed stale daemon socket', 'info');
91
+ *
92
+ * // Only shown in debug mode (default behavior)
93
+ * log('cleanup', 'Found PID file');
94
+ * log('cleanup', 'Checking lock file', 'debug');
39
95
  * ```
40
96
  */
41
- export declare function log(context: LogContext, message: string): void;
97
+ export declare function log(context: LogContext, message: string, level?: LogLevel): void;
42
98
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,KAAK,GACL,KAAK,CAAC;AAEV;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAI3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9D"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAMD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,KAAK,GACL,KAAK,CAAC;AAMV;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAaxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,QAAkB,GAAG,IAAI,CAKzF"}
@@ -1,43 +1,93 @@
1
1
  /**
2
- * Logging utilities for consistent formatted output.
2
+ * Logging utilities for consistent formatted output with log level support.
3
3
  *
4
- * WHY: Centralizes log formatting to avoid repetitive `console.error('[component] message')` patterns.
4
+ * WHY: Centralizes log formatting and enables debug mode for verbose logging.
5
+ * By default, only 'info' level logs are shown. Set BDG_DEBUG=1 or use --debug
6
+ * flag to enable verbose 'debug' level logs.
5
7
  */
8
+ // ============================================================================
9
+ // Global Debug State
10
+ // ============================================================================
11
+ let debugEnabled = false;
6
12
  /**
7
- * Create a logger function for a specific context.
13
+ * Enable debug logging globally.
8
14
  *
9
- * WHY: Provides consistent log formatting with context prefix.
15
+ * This is typically called during CLI initialization when --debug flag is detected.
16
+ * Debug mode shows all logs including verbose internal state changes and tracing.
17
+ */
18
+ export function enableDebugLogging() {
19
+ debugEnabled = true;
20
+ }
21
+ /**
22
+ * Check if debug logging is currently enabled.
23
+ *
24
+ * @returns True if debug mode is active
25
+ */
26
+ export function isDebugEnabled() {
27
+ return debugEnabled || process.env['BDG_DEBUG'] === '1';
28
+ }
29
+ // ============================================================================
30
+ // Logger Implementation
31
+ // ============================================================================
32
+ /**
33
+ * Create a logger instance for a specific context.
34
+ *
35
+ * WHY: Provides consistent log formatting with context prefix and level support.
36
+ * By default, ALL logs are hidden unless --debug flag or BDG_DEBUG=1 is set.
37
+ * This keeps normal output clean and only shows logs when debugging.
10
38
  *
11
39
  * @param context - Component context for log prefix
12
- * @returns Logger function that prefixes messages with context
40
+ * @returns Logger instance with info/debug methods
13
41
  *
14
42
  * @example
15
43
  * ```typescript
16
44
  * const log = createLogger('cleanup');
17
- * log('Removed stale daemon socket');
18
- * // Output: [cleanup] Removed stale daemon socket
45
+ *
46
+ * // Always shown (even without --debug)
47
+ * log.info('Cleaned up stale session files');
48
+ *
49
+ * // Only shown in debug mode (--debug or BDG_DEBUG=1)
50
+ * log.debug('Checking PID file at ~/.bdg/daemon.pid');
51
+ *
52
+ * // Backward compatible (treated as debug - only shown in debug mode)
53
+ * log('Daemon started successfully');
19
54
  * ```
20
55
  */
21
56
  export function createLogger(context) {
22
- return (message) => {
57
+ const logMessage = (message, level = 'debug') => {
58
+ if (level === 'debug' && !isDebugEnabled()) {
59
+ return;
60
+ }
23
61
  console.error(`[${context}] ${message}`);
24
62
  };
63
+ const logger = ((message) => logMessage(message, 'debug'));
64
+ logger.info = (message) => logMessage(message, 'info');
65
+ logger.debug = (message) => logMessage(message, 'debug');
66
+ return logger;
25
67
  }
26
68
  /**
27
69
  * Log a message with a specific context (one-off usage).
28
70
  *
29
- * WHY: Convenient for single log statements without creating a logger function.
71
+ * WHY: Convenient for single log statements without creating a logger instance.
30
72
  *
31
73
  * @param context - Component context for log prefix
32
74
  * @param message - Log message
75
+ * @param level - Log level (defaults to 'debug' - only shown with --debug)
33
76
  *
34
77
  * @example
35
78
  * ```typescript
36
- * log('cleanup', 'Removed stale daemon socket');
37
- * // Output: [cleanup] Removed stale daemon socket
79
+ * // Always shown (even without --debug)
80
+ * log('cleanup', 'Removed stale daemon socket', 'info');
81
+ *
82
+ * // Only shown in debug mode (default behavior)
83
+ * log('cleanup', 'Found PID file');
84
+ * log('cleanup', 'Checking lock file', 'debug');
38
85
  * ```
39
86
  */
40
- export function log(context, message) {
87
+ export function log(context, message, level = 'debug') {
88
+ if (level === 'debug' && !isDebugEnabled()) {
89
+ return;
90
+ }
41
91
  console.error(`[${context}] ${message}`);
42
92
  }
43
93
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,OAAO,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAG,CAAC,OAAmB,EAAE,OAAe;IACtD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC;AAC1D,CAAC;AAyDD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,QAAkB,OAAO,EAAQ,EAAE;QACtE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAW,CAAC;IAC7E,MAAM,CAAC,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,GAAG,CAAC,OAAmB,EAAE,OAAe,EAAE,QAAkB,OAAO;IACjF,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Smart page readiness detection using self-tuning thresholds
3
+ *
4
+ * This module provides adaptive page load detection that works for any page type
5
+ * without configuration. It uses a three-phase approach:
6
+ * 1. Load event (baseline readiness)
7
+ * 2. Network stability (adapts to request patterns)
8
+ * 3. DOM stability (adapts to mutation rate)
9
+ */
10
+ import type { CDPConnection } from '../connection/cdp.js';
11
+ /**
12
+ * Options for page readiness detection
13
+ */
14
+ export interface PageReadinessOptions {
15
+ /**
16
+ * Maximum wait time before proceeding anyway
17
+ * Default: 5000ms (5 seconds)
18
+ */
19
+ maxWaitMs?: number;
20
+ }
21
+ /**
22
+ * Wait for page to be ready using self-tuning detection
23
+ *
24
+ * Strategy (always applied):
25
+ * 1. Wait for load event (baseline readiness)
26
+ * 2. Wait for network to stabilize (adaptive 200ms idle)
27
+ * 3. Wait for DOM to stabilize (adaptive 300ms idle)
28
+ *
29
+ * All thresholds adapt to observed page behavior.
30
+ * No framework detection, no configuration needed.
31
+ * Works for static HTML, SPAs, and everything in between.
32
+ *
33
+ * @param cdp - CDP connection
34
+ * @param options - Optional configuration
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Default: Wait up to 5s for full stability
39
+ * await waitForPageReady(cdp);
40
+ *
41
+ * // Custom timeout for very slow apps
42
+ * await waitForPageReady(cdp, { maxWaitMs: 15000 });
43
+ * ```
44
+ */
45
+ export declare function waitForPageReady(cdp: CDPConnection, options?: PageReadinessOptions): Promise<void>;
46
+ //# sourceMappingURL=pageReadiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageReadiness.d.ts","sourceRoot":"","sources":["../../src/utils/pageReadiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Smart page readiness detection using self-tuning thresholds
3
+ *
4
+ * This module provides adaptive page load detection that works for any page type
5
+ * without configuration. It uses a three-phase approach:
6
+ * 1. Load event (baseline readiness)
7
+ * 2. Network stability (adapts to request patterns)
8
+ * 3. DOM stability (adapts to mutation rate)
9
+ */
10
+ /**
11
+ * Wait for page to be ready using self-tuning detection
12
+ *
13
+ * Strategy (always applied):
14
+ * 1. Wait for load event (baseline readiness)
15
+ * 2. Wait for network to stabilize (adaptive 200ms idle)
16
+ * 3. Wait for DOM to stabilize (adaptive 300ms idle)
17
+ *
18
+ * All thresholds adapt to observed page behavior.
19
+ * No framework detection, no configuration needed.
20
+ * Works for static HTML, SPAs, and everything in between.
21
+ *
22
+ * @param cdp - CDP connection
23
+ * @param options - Optional configuration
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Default: Wait up to 5s for full stability
28
+ * await waitForPageReady(cdp);
29
+ *
30
+ * // Custom timeout for very slow apps
31
+ * await waitForPageReady(cdp, { maxWaitMs: 15000 });
32
+ * ```
33
+ */
34
+ export async function waitForPageReady(cdp, options = {}) {
35
+ const maxWaitMs = options.maxWaitMs ?? 5000;
36
+ const deadline = Date.now() + maxWaitMs;
37
+ try {
38
+ // Phase 1: Wait for load event (baseline)
39
+ await waitForLoadEvent(cdp, deadline);
40
+ console.error('[readiness] ✓ Load event');
41
+ // Phase 2: Wait for network stability (always - modern web is async)
42
+ const networkIdleMs = await waitForNetworkStable(cdp, deadline);
43
+ console.error(`[readiness] ✓ Network stable (${networkIdleMs}ms idle)`);
44
+ // Phase 3: Wait for DOM stability (always - SPAs mutate after load)
45
+ const domIdleMs = await waitForDOMStable(cdp, deadline);
46
+ console.error(`[readiness] ✓ DOM stable (${domIdleMs}ms idle)`);
47
+ console.error('[readiness] ✓ Page ready');
48
+ }
49
+ catch (error) {
50
+ const message = error instanceof Error ? error.message : String(error);
51
+ console.error(`[readiness] ${message}, proceeding anyway`);
52
+ // Don't rethrow - allow session to continue
53
+ }
54
+ }
55
+ /**
56
+ * Wait for Page.loadEventFired (window.onload equivalent)
57
+ *
58
+ * This is the browser's native load event - fires when:
59
+ * - Document is fully loaded
60
+ * - All synchronous scripts executed
61
+ * - DOMContentLoaded already fired
62
+ *
63
+ * Framework-agnostic baseline.
64
+ *
65
+ * Handles edge case where load event already fired (Chrome navigates during launch).
66
+ *
67
+ * @param cdp - CDP connection
68
+ * @param deadline - Timestamp when to timeout
69
+ * @throws Error if deadline exceeded
70
+ */
71
+ async function waitForLoadEvent(cdp, deadline) {
72
+ await cdp.send('Page.enable');
73
+ // Check if page already loaded (handles Chrome pre-navigation)
74
+ try {
75
+ const result = await cdp.send('Runtime.evaluate', {
76
+ expression: 'document.readyState',
77
+ returnByValue: true,
78
+ });
79
+ if (result.result?.value === 'complete') {
80
+ // Load event already fired
81
+ return;
82
+ }
83
+ }
84
+ catch {
85
+ // Ignore evaluation errors, proceed to wait for event
86
+ }
87
+ return new Promise((resolve, reject) => {
88
+ let timeout;
89
+ let handlerId;
90
+ const cleanup = () => {
91
+ clearTimeout(timeout);
92
+ if (handlerId !== undefined) {
93
+ cdp.off('Page.loadEventFired', handlerId);
94
+ }
95
+ };
96
+ const checkDeadline = () => {
97
+ if (Date.now() >= deadline) {
98
+ cleanup();
99
+ reject(new Error('Load event timeout'));
100
+ }
101
+ else {
102
+ timeout = setTimeout(checkDeadline, 100);
103
+ }
104
+ };
105
+ const loadHandler = () => {
106
+ cleanup();
107
+ resolve();
108
+ };
109
+ handlerId = cdp.on('Page.loadEventFired', loadHandler);
110
+ checkDeadline();
111
+ });
112
+ }
113
+ /**
114
+ * Wait for network to stabilize using adaptive thresholds
115
+ *
116
+ * LEARNING PHASE (first 2s):
117
+ * - Track request intervals
118
+ * - Calculate average request frequency
119
+ *
120
+ * DETECTION PHASE:
121
+ * - Fast pattern (avg \< 100ms): 200ms idle = stable
122
+ * - Steady pattern (100-500ms): 500ms idle = stable
123
+ * - Slow pattern (\> 500ms): 1000ms idle = stable
124
+ *
125
+ * Why this works:
126
+ * - Fast sites: Quick bursts, fast stabilization
127
+ * - SSR apps: Steady hydration requests, medium wait
128
+ * - API-heavy: Slow requests, longer patience
129
+ *
130
+ * Framework-agnostic - adapts to actual behavior.
131
+ *
132
+ * @param cdp - CDP connection
133
+ * @param deadline - Timestamp when to timeout
134
+ * @returns Actual idle duration detected
135
+ * @throws Error if deadline exceeded
136
+ */
137
+ async function waitForNetworkStable(cdp, deadline) {
138
+ await cdp.send('Network.enable');
139
+ let activeRequests = 0;
140
+ let lastActivity = Date.now();
141
+ const intervals = [];
142
+ let lastRequestTime = Date.now();
143
+ // Track request patterns
144
+ const requestHandler = () => {
145
+ const now = Date.now();
146
+ const interval = now - lastRequestTime;
147
+ if (interval < 5000)
148
+ intervals.push(interval);
149
+ lastRequestTime = now;
150
+ activeRequests++;
151
+ lastActivity = now;
152
+ };
153
+ const finishHandler = () => {
154
+ activeRequests--;
155
+ if (activeRequests === 0) {
156
+ lastActivity = Date.now();
157
+ }
158
+ };
159
+ const requestHandlerId = cdp.on('Network.requestWillBeSent', requestHandler);
160
+ const loadingFinishedId = cdp.on('Network.loadingFinished', finishHandler);
161
+ const loadingFailedId = cdp.on('Network.loadingFailed', finishHandler);
162
+ try {
163
+ // Use fixed threshold for immediate detection
164
+ const idleThreshold = 200; // 200ms idle = network stable
165
+ // Detection phase: wait for stability
166
+ while (Date.now() < deadline) {
167
+ if (activeRequests === 0) {
168
+ const idleTime = Date.now() - lastActivity;
169
+ if (idleTime >= idleThreshold) {
170
+ return idleTime; // Success!
171
+ }
172
+ }
173
+ await delay(50); // Check every 50ms
174
+ }
175
+ throw new Error('Network stability timeout');
176
+ }
177
+ finally {
178
+ // Cleanup handlers
179
+ cdp.off('Network.requestWillBeSent', requestHandlerId);
180
+ cdp.off('Network.loadingFinished', loadingFinishedId);
181
+ cdp.off('Network.loadingFailed', loadingFailedId);
182
+ }
183
+ }
184
+ /**
185
+ * Wait for DOM to stabilize using adaptive thresholds
186
+ *
187
+ * HOW IT WORKS:
188
+ * 1. Inject MutationObserver into page
189
+ * 2. Track mutation rate for 1 second
190
+ * 3. Calculate adaptive stability threshold:
191
+ * - High rate (\>50 mutations/sec): 1000ms no-change = stable
192
+ * - Medium rate (10-50 mutations/sec): 500ms no-change = stable
193
+ * - Low rate (\<10 mutations/sec): 300ms no-change = stable
194
+ * 4. Wait for DOM to remain unchanged for threshold duration
195
+ *
196
+ * Why this works:
197
+ * - SSR hydration causes DOM mutations
198
+ * - React/Vue/Svelte all mutate during hydration
199
+ * - When mutations stop, hydration is complete
200
+ *
201
+ * Framework-agnostic - detects actual mutations.
202
+ *
203
+ * @param cdp - CDP connection
204
+ * @param deadline - Timestamp when to timeout
205
+ * @returns Actual stable duration detected
206
+ * @throws Error if deadline exceeded
207
+ */
208
+ async function waitForDOMStable(cdp, deadline) {
209
+ // Inject mutation observer
210
+ await cdp.send('Runtime.evaluate', {
211
+ expression: `
212
+ window.__bdg_mutations = 0;
213
+ window.__bdg_lastMutation = Date.now();
214
+
215
+ const observer = new MutationObserver(() => {
216
+ window.__bdg_mutations++;
217
+ window.__bdg_lastMutation = Date.now();
218
+ });
219
+
220
+ observer.observe(document.body, {
221
+ childList: true,
222
+ subtree: true,
223
+ attributes: true,
224
+ characterData: true
225
+ });
226
+
227
+ window.__bdg_observer = observer;
228
+ `,
229
+ });
230
+ try {
231
+ // Use fixed threshold for immediate detection
232
+ const stableThreshold = 300; // 300ms no mutations = DOM stable
233
+ // Detection phase: wait for stability
234
+ while (Date.now() < deadline) {
235
+ const checkResult = await cdp.send('Runtime.evaluate', {
236
+ expression: 'Date.now() - window.__bdg_lastMutation',
237
+ returnByValue: true,
238
+ });
239
+ const timeSinceLastMutation = checkResult.result?.value ?? 0;
240
+ if (timeSinceLastMutation >= stableThreshold) {
241
+ return timeSinceLastMutation; // Success!
242
+ }
243
+ await delay(100); // Check every 100ms
244
+ }
245
+ throw new Error('DOM stability timeout');
246
+ }
247
+ finally {
248
+ // Cleanup observer
249
+ await cdp
250
+ .send('Runtime.evaluate', {
251
+ expression: `
252
+ window.__bdg_observer?.disconnect();
253
+ delete window.__bdg_observer;
254
+ delete window.__bdg_mutations;
255
+ delete window.__bdg_lastMutation;
256
+ `,
257
+ })
258
+ .catch(() => {
259
+ // Ignore cleanup errors
260
+ });
261
+ }
262
+ }
263
+ /**
264
+ * Delay utility
265
+ *
266
+ * @param ms - Milliseconds to delay
267
+ */
268
+ function delay(ms) {
269
+ return new Promise((resolve) => setTimeout(resolve, ms));
270
+ }
271
+ //# sourceMappingURL=pageReadiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageReadiness.js","sourceRoot":"","sources":["../../src/utils/pageReadiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * UI utilities for enhanced terminal output.
3
+ *
4
+ * WHY: Provides visual feedback and branding for CLI operations.
5
+ */
6
+ /**
7
+ * Options for the landing page display.
8
+ */
9
+ export interface LandingPageOptions {
10
+ /** Target URL being monitored */
11
+ url: string;
12
+ /** Worker process ID */
13
+ workerPid: number;
14
+ /** Chrome process ID */
15
+ chromePid: number;
16
+ /** Collectors enabled */
17
+ collectors: string[];
18
+ }
19
+ /**
20
+ * Generate the landing page display for session start.
21
+ *
22
+ * @param options - Landing page options
23
+ * @returns Formatted landing page string
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * landingPage({
28
+ * url: 'http://localhost:3000',
29
+ * workerPid: 12345,
30
+ * chromePid: 12346,
31
+ * collectors: ['network', 'console', 'dom']
32
+ * });
33
+ * ```
34
+ */
35
+ export declare function landingPage(options: LandingPageOptions): string;
36
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA2B/D"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * UI utilities for enhanced terminal output.
3
+ *
4
+ * WHY: Provides visual feedback and branding for CLI operations.
5
+ */
6
+ /**
7
+ * Generate the landing page display for session start.
8
+ *
9
+ * @param options - Landing page options
10
+ * @returns Formatted landing page string
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * landingPage({
15
+ * url: 'http://localhost:3000',
16
+ * workerPid: 12345,
17
+ * chromePid: 12346,
18
+ * collectors: ['network', 'console', 'dom']
19
+ * });
20
+ * ```
21
+ */
22
+ export function landingPage(options) {
23
+ const { url, workerPid, chromePid, collectors } = options;
24
+ const lines = [];
25
+ lines.push('');
26
+ lines.push(' bdg');
27
+ lines.push('');
28
+ lines.push(' ▲ Session Started');
29
+ lines.push('');
30
+ lines.push(` ○ Target ${url}`);
31
+ lines.push(` ○ Chrome PID ${chromePid}`);
32
+ lines.push(` ○ Worker PID ${workerPid}`);
33
+ lines.push(` ○ Collecting ${collectors.join(', ')}`);
34
+ lines.push('');
35
+ lines.push(' Ready — use these commands:');
36
+ lines.push('');
37
+ lines.push(' bdg status Session info');
38
+ lines.push(' bdg peek Preview data');
39
+ lines.push(' bdg cdp <method> [params] Execute CDP commands');
40
+ lines.push(' bdg stop Stop & save');
41
+ lines.push('');
42
+ lines.push(' 💡 Run any Chrome DevTools Protocol command:');
43
+ lines.push(' bdg cdp Runtime.evaluate \'{"expression": "document.title"}\'');
44
+ lines.push('');
45
+ return lines.join('\n');
46
+ }
47
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}