browser-debugger-cli 0.0.1-alpha.0 → 0.1.0-alpha.1

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/LICENSE +21 -0
  2. package/README.md +167 -52
  3. package/dist/__testfixtures__/cdpMessages.d.ts +43 -0
  4. package/dist/__testfixtures__/cdpMessages.d.ts.map +1 -0
  5. package/dist/__testfixtures__/cdpMessages.js +118 -0
  6. package/dist/__testfixtures__/cdpMessages.js.map +1 -0
  7. package/dist/__testfixtures__/connectionTargets.d.ts +21 -0
  8. package/dist/__testfixtures__/connectionTargets.d.ts.map +1 -0
  9. package/dist/__testfixtures__/connectionTargets.js +59 -0
  10. package/dist/__testfixtures__/connectionTargets.js.map +1 -0
  11. package/dist/__tests__/integration/session-files.integration.test.d.ts +2 -0
  12. package/dist/__tests__/integration/session-files.integration.test.d.ts.map +1 -0
  13. package/dist/__tests__/integration/session-files.integration.test.js +66 -0
  14. package/dist/__tests__/integration/session-files.integration.test.js.map +1 -0
  15. package/dist/__testutils__/FakeClock.d.ts +67 -0
  16. package/dist/__testutils__/FakeClock.d.ts.map +1 -0
  17. package/dist/__testutils__/FakeClock.js +132 -0
  18. package/dist/__testutils__/FakeClock.js.map +1 -0
  19. package/dist/__testutils__/FakeWebSocket.d.ts +106 -0
  20. package/dist/__testutils__/FakeWebSocket.d.ts.map +1 -0
  21. package/dist/__testutils__/FakeWebSocket.js +213 -0
  22. package/dist/__testutils__/FakeWebSocket.js.map +1 -0
  23. package/dist/__testutils__/assertions.d.ts +33 -0
  24. package/dist/__testutils__/assertions.d.ts.map +1 -0
  25. package/dist/__testutils__/assertions.js +57 -0
  26. package/dist/__testutils__/assertions.js.map +1 -0
  27. package/dist/__testutils__/index.d.ts +15 -0
  28. package/dist/__testutils__/index.d.ts.map +1 -0
  29. package/dist/__testutils__/index.js +15 -0
  30. package/dist/__testutils__/index.js.map +1 -0
  31. package/dist/__testutils__/testClock.d.ts +28 -0
  32. package/dist/__testutils__/testClock.d.ts.map +1 -0
  33. package/dist/__testutils__/testClock.js +81 -0
  34. package/dist/__testutils__/testClock.js.map +1 -0
  35. package/dist/__testutils__/testFixtures.d.ts +15 -0
  36. package/dist/__testutils__/testFixtures.d.ts.map +1 -0
  37. package/dist/__testutils__/testFixtures.js +23 -0
  38. package/dist/__testutils__/testFixtures.js.map +1 -0
  39. package/dist/__testutils__/testProcess.d.ts +46 -0
  40. package/dist/__testutils__/testProcess.d.ts.map +1 -0
  41. package/dist/__testutils__/testProcess.js +77 -0
  42. package/dist/__testutils__/testProcess.js.map +1 -0
  43. package/dist/cli/collectors/dom.d.ts +8 -0
  44. package/dist/cli/collectors/dom.d.ts.map +1 -0
  45. package/dist/cli/collectors/dom.js +361 -0
  46. package/dist/cli/collectors/dom.js.map +1 -0
  47. package/dist/cli/collectors/helpers/domCache.d.ts +40 -0
  48. package/dist/cli/collectors/helpers/domCache.d.ts.map +1 -0
  49. package/dist/cli/collectors/helpers/domCache.js +79 -0
  50. package/dist/cli/collectors/helpers/domCache.js.map +1 -0
  51. package/dist/cli/collectors/helpers/domQuery.d.ts +45 -0
  52. package/dist/cli/collectors/helpers/domQuery.d.ts.map +1 -0
  53. package/dist/cli/collectors/helpers/domQuery.js +100 -0
  54. package/dist/cli/collectors/helpers/domQuery.js.map +1 -0
  55. package/dist/cli/collectors/helpers/selectorParser.d.ts +20 -0
  56. package/dist/cli/collectors/helpers/selectorParser.d.ts.map +1 -0
  57. package/dist/cli/collectors/helpers/selectorParser.js +20 -0
  58. package/dist/cli/collectors/helpers/selectorParser.js.map +1 -0
  59. package/dist/cli/commands/__tests__/cdp.contract.test.d.ts +24 -0
  60. package/dist/cli/commands/__tests__/cdp.contract.test.d.ts.map +1 -0
  61. package/dist/cli/commands/__tests__/cdp.contract.test.js +467 -0
  62. package/dist/cli/commands/__tests__/cdp.contract.test.js.map +1 -0
  63. package/dist/cli/commands/__tests__/ipcTest.test.d.ts +2 -0
  64. package/dist/cli/commands/__tests__/ipcTest.test.d.ts.map +1 -0
  65. package/dist/cli/commands/__tests__/ipcTest.test.js +37 -0
  66. package/dist/cli/commands/__tests__/ipcTest.test.js.map +1 -0
  67. package/dist/cli/commands/cdp.d.ts +8 -0
  68. package/dist/cli/commands/cdp.d.ts.map +1 -0
  69. package/dist/cli/commands/cdp.js +45 -0
  70. package/dist/cli/commands/cdp.js.map +1 -0
  71. package/dist/cli/commands/cleanup.d.ts +8 -0
  72. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  73. package/dist/cli/commands/cleanup.js +130 -0
  74. package/dist/cli/commands/cleanup.js.map +1 -0
  75. package/dist/cli/commands/console.d.ts +8 -0
  76. package/dist/cli/commands/console.d.ts.map +1 -0
  77. package/dist/cli/commands/console.js +97 -0
  78. package/dist/cli/commands/console.js.map +1 -0
  79. package/dist/cli/commands/details.d.ts +8 -0
  80. package/dist/cli/commands/details.d.ts.map +1 -0
  81. package/dist/cli/commands/details.js +68 -0
  82. package/dist/cli/commands/details.js.map +1 -0
  83. package/dist/cli/commands/dom/helpers/domCache.d.ts +36 -0
  84. package/dist/cli/commands/dom/helpers/domCache.d.ts.map +1 -0
  85. package/dist/cli/commands/dom/helpers/domCache.js +65 -0
  86. package/dist/cli/commands/dom/helpers/domCache.js.map +1 -0
  87. package/dist/cli/commands/dom/helpers/domQuery.d.ts +48 -0
  88. package/dist/cli/commands/dom/helpers/domQuery.d.ts.map +1 -0
  89. package/dist/cli/commands/dom/helpers/domQuery.js +104 -0
  90. package/dist/cli/commands/dom/helpers/domQuery.js.map +1 -0
  91. package/dist/cli/commands/dom/helpers/errorHandler.d.ts +45 -0
  92. package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +1 -0
  93. package/dist/cli/commands/dom/helpers/errorHandler.js +70 -0
  94. package/dist/cli/commands/dom/helpers/errorHandler.js.map +1 -0
  95. package/dist/cli/commands/dom/helpers/evalHelpers.d.ts +52 -0
  96. package/dist/cli/commands/dom/helpers/evalHelpers.d.ts.map +1 -0
  97. package/dist/cli/commands/dom/helpers/evalHelpers.js +75 -0
  98. package/dist/cli/commands/dom/helpers/evalHelpers.js.map +1 -0
  99. package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts +35 -0
  100. package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts.map +1 -0
  101. package/dist/cli/commands/dom/helpers/optionsBuilder.js +51 -0
  102. package/dist/cli/commands/dom/helpers/optionsBuilder.js.map +1 -0
  103. package/dist/cli/commands/dom/helpers/selectorParser.d.ts +20 -0
  104. package/dist/cli/commands/dom/helpers/selectorParser.d.ts.map +1 -0
  105. package/dist/cli/commands/dom/helpers/selectorParser.js +20 -0
  106. package/dist/cli/commands/dom/helpers/selectorParser.js.map +1 -0
  107. package/dist/cli/commands/dom/index.d.ts +8 -0
  108. package/dist/cli/commands/dom/index.d.ts.map +1 -0
  109. package/dist/cli/commands/dom/index.js +257 -0
  110. package/dist/cli/commands/dom/index.js.map +1 -0
  111. package/dist/cli/commands/ipcTest.d.ts +23 -0
  112. package/dist/cli/commands/ipcTest.d.ts.map +1 -0
  113. package/dist/cli/commands/ipcTest.js +181 -0
  114. package/dist/cli/commands/ipcTest.js.map +1 -0
  115. package/dist/cli/commands/network.d.ts +8 -0
  116. package/dist/cli/commands/network.d.ts.map +1 -0
  117. package/dist/cli/commands/network.js +40 -0
  118. package/dist/cli/commands/network.js.map +1 -0
  119. package/dist/cli/commands/peek.d.ts +8 -0
  120. package/dist/cli/commands/peek.d.ts.map +1 -0
  121. package/dist/cli/commands/peek.js +109 -0
  122. package/dist/cli/commands/peek.js.map +1 -0
  123. package/dist/cli/commands/query.d.ts +9 -0
  124. package/dist/cli/commands/query.d.ts.map +1 -0
  125. package/dist/cli/commands/query.js +127 -0
  126. package/dist/cli/commands/query.js.map +1 -0
  127. package/dist/cli/commands/start.d.ts +9 -0
  128. package/dist/cli/commands/start.d.ts.map +1 -0
  129. package/dist/cli/commands/start.js +78 -0
  130. package/dist/cli/commands/start.js.map +1 -0
  131. package/dist/cli/commands/status.d.ts +9 -0
  132. package/dist/cli/commands/status.d.ts.map +1 -0
  133. package/dist/cli/commands/status.js +84 -0
  134. package/dist/cli/commands/status.js.map +1 -0
  135. package/dist/cli/commands/stop.d.ts +8 -0
  136. package/dist/cli/commands/stop.d.ts.map +1 -0
  137. package/dist/cli/commands/stop.js +146 -0
  138. package/dist/cli/commands/stop.js.map +1 -0
  139. package/dist/cli/formatters/detailsFormatter.d.ts +10 -0
  140. package/dist/cli/formatters/detailsFormatter.d.ts.map +1 -0
  141. package/dist/cli/formatters/detailsFormatter.js +63 -0
  142. package/dist/cli/formatters/detailsFormatter.js.map +1 -0
  143. package/dist/cli/formatters/previewFormatter.d.ts +27 -0
  144. package/dist/cli/formatters/previewFormatter.d.ts.map +1 -0
  145. package/dist/cli/formatters/previewFormatter.js +160 -0
  146. package/dist/cli/formatters/previewFormatter.js.map +1 -0
  147. package/dist/cli/formatters/statusFormatter.d.ts +34 -0
  148. package/dist/cli/formatters/statusFormatter.d.ts.map +1 -0
  149. package/dist/cli/formatters/statusFormatter.js +108 -0
  150. package/dist/cli/formatters/statusFormatter.js.map +1 -0
  151. package/dist/cli/handlers/ChromeBootstrap.d.ts +24 -0
  152. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +1 -0
  153. package/dist/cli/handlers/ChromeBootstrap.js +50 -0
  154. package/dist/cli/handlers/ChromeBootstrap.js.map +1 -0
  155. package/dist/cli/handlers/CommandRunner.d.ts +60 -0
  156. package/dist/cli/handlers/CommandRunner.d.ts.map +1 -0
  157. package/dist/cli/handlers/CommandRunner.js +81 -0
  158. package/dist/cli/handlers/CommandRunner.js.map +1 -0
  159. package/dist/cli/handlers/OutputBuilder.d.ts +60 -0
  160. package/dist/cli/handlers/OutputBuilder.d.ts.map +1 -0
  161. package/dist/cli/handlers/OutputBuilder.js +138 -0
  162. package/dist/cli/handlers/OutputBuilder.js.map +1 -0
  163. package/dist/cli/handlers/OutputWriter.d.ts +15 -0
  164. package/dist/cli/handlers/OutputWriter.d.ts.map +1 -0
  165. package/dist/cli/handlers/OutputWriter.js +34 -0
  166. package/dist/cli/handlers/OutputWriter.js.map +1 -0
  167. package/dist/cli/handlers/PreviewWriter.d.ts +52 -0
  168. package/dist/cli/handlers/PreviewWriter.d.ts.map +1 -0
  169. package/dist/cli/handlers/PreviewWriter.js +119 -0
  170. package/dist/cli/handlers/PreviewWriter.js.map +1 -0
  171. package/dist/cli/handlers/SessionLock.d.ts +16 -0
  172. package/dist/cli/handlers/SessionLock.d.ts.map +1 -0
  173. package/dist/cli/handlers/SessionLock.js +38 -0
  174. package/dist/cli/handlers/SessionLock.js.map +1 -0
  175. package/dist/cli/handlers/SessionLoop.d.ts +19 -0
  176. package/dist/cli/handlers/SessionLoop.d.ts.map +1 -0
  177. package/dist/cli/handlers/SessionLoop.js +47 -0
  178. package/dist/cli/handlers/SessionLoop.js.map +1 -0
  179. package/dist/cli/handlers/ShutdownController.d.ts +38 -0
  180. package/dist/cli/handlers/ShutdownController.d.ts.map +1 -0
  181. package/dist/cli/handlers/ShutdownController.js +83 -0
  182. package/dist/cli/handlers/ShutdownController.js.map +1 -0
  183. package/dist/cli/handlers/SignalHandler.d.ts +35 -0
  184. package/dist/cli/handlers/SignalHandler.d.ts.map +1 -0
  185. package/dist/cli/handlers/SignalHandler.js +81 -0
  186. package/dist/cli/handlers/SignalHandler.js.map +1 -0
  187. package/dist/cli/handlers/TargetSetup.d.ts +42 -0
  188. package/dist/cli/handlers/TargetSetup.d.ts.map +1 -0
  189. package/dist/cli/handlers/TargetSetup.js +87 -0
  190. package/dist/cli/handlers/TargetSetup.js.map +1 -0
  191. package/dist/cli/handlers/commonOptions.d.ts +54 -0
  192. package/dist/cli/handlers/commonOptions.d.ts.map +1 -0
  193. package/dist/cli/handlers/commonOptions.js +64 -0
  194. package/dist/cli/handlers/commonOptions.js.map +1 -0
  195. package/dist/cli/handlers/daemonSessionController.d.ts +23 -0
  196. package/dist/cli/handlers/daemonSessionController.d.ts.map +1 -0
  197. package/dist/cli/handlers/daemonSessionController.js +108 -0
  198. package/dist/cli/handlers/daemonSessionController.js.map +1 -0
  199. package/dist/cli/handlers/sessionController.d.ts +21 -0
  200. package/dist/cli/handlers/sessionController.d.ts.map +1 -0
  201. package/dist/cli/handlers/sessionController.js +55 -0
  202. package/dist/cli/handlers/sessionController.js.map +1 -0
  203. package/dist/cli/registry.d.ts +11 -0
  204. package/dist/cli/registry.d.ts.map +1 -0
  205. package/dist/cli/registry.js +46 -0
  206. package/dist/cli/registry.js.map +1 -0
  207. package/dist/collectors/__tests__/network.contract.test.d.ts +28 -0
  208. package/dist/collectors/__tests__/network.contract.test.d.ts.map +1 -0
  209. package/dist/collectors/__tests__/network.contract.test.js +525 -0
  210. package/dist/collectors/__tests__/network.contract.test.js.map +1 -0
  211. package/dist/collectors/console.d.ts +5 -3
  212. package/dist/collectors/console.d.ts.map +1 -1
  213. package/dist/collectors/console.js +48 -26
  214. package/dist/collectors/console.js.map +1 -1
  215. package/dist/collectors/dom.d.ts +2 -2
  216. package/dist/collectors/dom.d.ts.map +1 -1
  217. package/dist/collectors/dom.js +23 -12
  218. package/dist/collectors/dom.js.map +1 -1
  219. package/dist/collectors/network.d.ts +18 -4
  220. package/dist/collectors/network.d.ts.map +1 -1
  221. package/dist/collectors/network.js +111 -34
  222. package/dist/collectors/network.js.map +1 -1
  223. package/dist/connection/__tests__/cdp.contract.test.d.ts +16 -0
  224. package/dist/connection/__tests__/cdp.contract.test.d.ts.map +1 -0
  225. package/dist/connection/__tests__/cdp.contract.test.js +378 -0
  226. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -0
  227. package/dist/connection/__tests__/finder.contract.test.d.ts +2 -0
  228. package/dist/connection/__tests__/finder.contract.test.d.ts.map +1 -0
  229. package/dist/connection/__tests__/finder.contract.test.js +239 -0
  230. package/dist/connection/__tests__/finder.contract.test.js.map +1 -0
  231. package/dist/connection/__tests__/tabs.contract.test.d.ts +2 -0
  232. package/dist/connection/__tests__/tabs.contract.test.d.ts.map +1 -0
  233. package/dist/connection/__tests__/tabs.contract.test.js +137 -0
  234. package/dist/connection/__tests__/tabs.contract.test.js.map +1 -0
  235. package/dist/connection/cdp.d.ts +165 -16
  236. package/dist/connection/cdp.d.ts.map +1 -1
  237. package/dist/connection/cdp.js +342 -122
  238. package/dist/connection/cdp.js.map +1 -1
  239. package/dist/connection/finder.d.ts +5 -4
  240. package/dist/connection/finder.d.ts.map +1 -1
  241. package/dist/connection/finder.js +10 -16
  242. package/dist/connection/finder.js.map +1 -1
  243. package/dist/connection/launcher.d.ts +18 -11
  244. package/dist/connection/launcher.d.ts.map +1 -1
  245. package/dist/connection/launcher.js +148 -82
  246. package/dist/connection/launcher.js.map +1 -1
  247. package/dist/connection/tabs.d.ts +47 -14
  248. package/dist/connection/tabs.d.ts.map +1 -1
  249. package/dist/connection/tabs.js +493 -132
  250. package/dist/connection/tabs.js.map +1 -1
  251. package/dist/constants.d.ts +209 -0
  252. package/dist/constants.d.ts.map +1 -0
  253. package/dist/constants.js +232 -0
  254. package/dist/constants.js.map +1 -0
  255. package/dist/daemon/__tests__/ipcServer.contract.test.d.ts +23 -0
  256. package/dist/daemon/__tests__/ipcServer.contract.test.d.ts.map +1 -0
  257. package/dist/daemon/__tests__/ipcServer.contract.test.js +401 -0
  258. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -0
  259. package/dist/daemon/__tests__/launcher.unit.test.d.ts +8 -0
  260. package/dist/daemon/__tests__/launcher.unit.test.d.ts.map +1 -0
  261. package/dist/daemon/__tests__/launcher.unit.test.js +20 -0
  262. package/dist/daemon/__tests__/launcher.unit.test.js.map +1 -0
  263. package/dist/daemon/ipcServer.d.ts +83 -0
  264. package/dist/daemon/ipcServer.d.ts.map +1 -0
  265. package/dist/daemon/ipcServer.js +670 -0
  266. package/dist/daemon/ipcServer.js.map +1 -0
  267. package/dist/daemon/launcher.d.ts +31 -0
  268. package/dist/daemon/launcher.d.ts.map +1 -0
  269. package/dist/daemon/launcher.js +137 -0
  270. package/dist/daemon/launcher.js.map +1 -0
  271. package/dist/daemon/startSession.d.ts +51 -0
  272. package/dist/daemon/startSession.d.ts.map +1 -0
  273. package/dist/daemon/startSession.js +149 -0
  274. package/dist/daemon/startSession.js.map +1 -0
  275. package/dist/daemon/worker.d.ts +18 -0
  276. package/dist/daemon/worker.d.ts.map +1 -0
  277. package/dist/daemon/worker.js +623 -0
  278. package/dist/daemon/worker.js.map +1 -0
  279. package/dist/daemon/workerIpc.d.ts +33 -0
  280. package/dist/daemon/workerIpc.d.ts.map +1 -0
  281. package/dist/daemon/workerIpc.js +8 -0
  282. package/dist/daemon/workerIpc.js.map +1 -0
  283. package/dist/daemon.d.ts +10 -0
  284. package/dist/daemon.d.ts.map +1 -0
  285. package/dist/daemon.js +32 -0
  286. package/dist/daemon.js.map +1 -0
  287. package/dist/index.js +41 -420
  288. package/dist/index.js.map +1 -1
  289. package/dist/ipc/__tests__/client.contract.test.d.ts +23 -0
  290. package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -0
  291. package/dist/ipc/__tests__/client.contract.test.js +466 -0
  292. package/dist/ipc/__tests__/client.contract.test.js.map +1 -0
  293. package/dist/ipc/client.d.ts +109 -0
  294. package/dist/ipc/client.d.ts.map +1 -0
  295. package/dist/ipc/client.js +220 -0
  296. package/dist/ipc/client.js.map +1 -0
  297. package/dist/ipc/commands.d.ts +208 -0
  298. package/dist/ipc/commands.d.ts.map +1 -0
  299. package/dist/ipc/commands.js +69 -0
  300. package/dist/ipc/commands.js.map +1 -0
  301. package/dist/ipc/responseValidator.d.ts +40 -0
  302. package/dist/ipc/responseValidator.d.ts.map +1 -0
  303. package/dist/ipc/responseValidator.js +28 -0
  304. package/dist/ipc/responseValidator.js.map +1 -0
  305. package/dist/ipc/types.d.ts +193 -0
  306. package/dist/ipc/types.d.ts.map +1 -0
  307. package/dist/ipc/types.js +21 -0
  308. package/dist/ipc/types.js.map +1 -0
  309. package/dist/session/BdgSession.d.ts +71 -4
  310. package/dist/session/BdgSession.d.ts.map +1 -1
  311. package/dist/session/BdgSession.js +173 -75
  312. package/dist/session/BdgSession.js.map +1 -1
  313. package/dist/session/chrome.d.ts +46 -0
  314. package/dist/session/chrome.d.ts.map +1 -0
  315. package/dist/session/chrome.js +92 -0
  316. package/dist/session/chrome.js.map +1 -0
  317. package/dist/session/cleanup.d.ts +45 -0
  318. package/dist/session/cleanup.d.ts.map +1 -0
  319. package/dist/session/cleanup.js +230 -0
  320. package/dist/session/cleanup.js.map +1 -0
  321. package/dist/session/index.d.ts +15 -0
  322. package/dist/session/index.d.ts.map +1 -0
  323. package/dist/session/index.js +23 -0
  324. package/dist/session/index.js.map +1 -0
  325. package/dist/session/lock.d.ts +57 -0
  326. package/dist/session/lock.d.ts.map +1 -0
  327. package/dist/session/lock.js +154 -0
  328. package/dist/session/lock.js.map +1 -0
  329. package/dist/session/metadata.d.ts +59 -0
  330. package/dist/session/metadata.d.ts.map +1 -0
  331. package/dist/session/metadata.js +71 -0
  332. package/dist/session/metadata.js.map +1 -0
  333. package/dist/session/output.d.ts +18 -0
  334. package/dist/session/output.d.ts.map +1 -0
  335. package/dist/session/output.js +24 -0
  336. package/dist/session/output.js.map +1 -0
  337. package/dist/session/paths.d.ts +73 -0
  338. package/dist/session/paths.d.ts.map +1 -0
  339. package/dist/session/paths.js +84 -0
  340. package/dist/session/paths.js.map +1 -0
  341. package/dist/session/pid.d.ts +40 -0
  342. package/dist/session/pid.d.ts.map +1 -0
  343. package/dist/session/pid.js +73 -0
  344. package/dist/session/pid.js.map +1 -0
  345. package/dist/session/process.d.ts +45 -0
  346. package/dist/session/process.d.ts.map +1 -0
  347. package/dist/session/process.js +88 -0
  348. package/dist/session/process.js.map +1 -0
  349. package/dist/types.d.ts +114 -38
  350. package/dist/types.d.ts.map +1 -1
  351. package/dist/utils/__tests__/filters.unit.test.d.ts +2 -0
  352. package/dist/utils/__tests__/filters.unit.test.d.ts.map +1 -0
  353. package/dist/utils/__tests__/filters.unit.test.js +239 -0
  354. package/dist/utils/__tests__/filters.unit.test.js.map +1 -0
  355. package/dist/utils/__tests__/session.contract.test.d.ts +2 -0
  356. package/dist/utils/__tests__/session.contract.test.d.ts.map +1 -0
  357. package/dist/utils/__tests__/session.contract.test.js +234 -0
  358. package/dist/utils/__tests__/session.contract.test.js.map +1 -0
  359. package/dist/utils/atomicFile.d.ts +38 -0
  360. package/dist/utils/atomicFile.d.ts.map +1 -0
  361. package/dist/utils/atomicFile.js +71 -0
  362. package/dist/utils/atomicFile.js.map +1 -0
  363. package/dist/utils/cdpHandlers.d.ts +31 -0
  364. package/dist/utils/cdpHandlers.d.ts.map +1 -0
  365. package/dist/utils/cdpHandlers.js +38 -0
  366. package/dist/utils/cdpHandlers.js.map +1 -0
  367. package/dist/utils/chromeDiagnostics.d.ts +28 -0
  368. package/dist/utils/chromeDiagnostics.d.ts.map +1 -0
  369. package/dist/utils/chromeDiagnostics.js +88 -0
  370. package/dist/utils/chromeDiagnostics.js.map +1 -0
  371. package/dist/utils/errors.d.ts +82 -0
  372. package/dist/utils/errors.d.ts.map +1 -0
  373. package/dist/utils/errors.js +88 -0
  374. package/dist/utils/errors.js.map +1 -0
  375. package/dist/utils/exitCodes.d.ts +32 -0
  376. package/dist/utils/exitCodes.d.ts.map +1 -0
  377. package/dist/utils/exitCodes.js +36 -0
  378. package/dist/utils/exitCodes.js.map +1 -0
  379. package/dist/utils/filters.d.ts +108 -0
  380. package/dist/utils/filters.d.ts.map +1 -0
  381. package/dist/utils/filters.js +304 -0
  382. package/dist/utils/filters.js.map +1 -0
  383. package/dist/utils/formatters/network.d.ts +23 -0
  384. package/dist/utils/formatters/network.d.ts.map +1 -0
  385. package/dist/utils/formatters/network.js +35 -0
  386. package/dist/utils/formatters/network.js.map +1 -0
  387. package/dist/utils/http.d.ts +34 -0
  388. package/dist/utils/http.d.ts.map +1 -0
  389. package/dist/utils/http.js +48 -0
  390. package/dist/utils/http.js.map +1 -0
  391. package/dist/utils/logger.d.ts +42 -0
  392. package/dist/utils/logger.d.ts.map +1 -0
  393. package/dist/utils/logger.js +43 -0
  394. package/dist/utils/logger.js.map +1 -0
  395. package/dist/utils/objects.d.ts +23 -0
  396. package/dist/utils/objects.d.ts.map +1 -0
  397. package/dist/utils/objects.js +25 -0
  398. package/dist/utils/objects.js.map +1 -0
  399. package/dist/utils/url/safeParseUrl.d.ts +63 -0
  400. package/dist/utils/url/safeParseUrl.d.ts.map +1 -0
  401. package/dist/utils/url/safeParseUrl.js +84 -0
  402. package/dist/utils/url/safeParseUrl.js.map +1 -0
  403. package/dist/utils/url.d.ts +63 -1
  404. package/dist/utils/url.d.ts.map +1 -1
  405. package/dist/utils/url.js +152 -2
  406. package/dist/utils/url.js.map +1 -1
  407. package/dist/utils/validation.d.ts +1 -1
  408. package/dist/utils/validation.d.ts.map +1 -1
  409. package/dist/utils/version.d.ts +3 -0
  410. package/dist/utils/version.d.ts.map +1 -0
  411. package/dist/utils/version.js +27 -0
  412. package/dist/utils/version.js.map +1 -0
  413. package/package.json +57 -10
  414. package/dist/utils/pageLoad.d.ts +0 -21
  415. package/dist/utils/pageLoad.d.ts.map +0 -1
  416. package/dist/utils/pageLoad.js +0 -85
  417. package/dist/utils/pageLoad.js.map +0 -1
  418. package/dist/utils/session.d.ts +0 -104
  419. package/dist/utils/session.d.ts.map +0 -1
  420. package/dist/utils/session.js +0 -244
  421. package/dist/utils/session.js.map +0 -1
@@ -0,0 +1,466 @@
1
+ /**
2
+ * IPC Client Contract Tests
3
+ *
4
+ * Tests the public API behavior of IPC client functions WITHOUT testing implementation details.
5
+ * Follows the testing philosophy: "Test the contract, not the implementation"
6
+ *
7
+ * Contract:
8
+ * - Input: Function calls with parameters
9
+ * - Output: Responses from daemon via Unix socket
10
+ * - Behavior: Connect, send request, receive response, handle errors/timeouts
11
+ *
12
+ * What we test:
13
+ * ✅ Behavior: Client function calls → daemon responses
14
+ * ✅ Invariants: "Requests receive responses", "Errors propagate correctly"
15
+ * ✅ Edge cases: Daemon not running, timeouts, malformed responses
16
+ *
17
+ * What we DON'T test:
18
+ * ❌ Internal sendRequest() implementation
19
+ * ❌ Socket buffer handling details
20
+ * ❌ How JSONL parsing works internally
21
+ */
22
+ import assert from 'node:assert/strict';
23
+ import * as fs from 'node:fs';
24
+ import * as net from 'node:net';
25
+ import * as os from 'node:os';
26
+ import * as path from 'node:path';
27
+ import { afterEach, beforeEach, describe, it } from 'node:test';
28
+ import * as ipcClient from '../client.js';
29
+ /**
30
+ * Mock daemon server that responds to IPC requests.
31
+ * Simulates daemon behavior without starting actual worker processes.
32
+ */
33
+ class MockDaemonServer {
34
+ server = null;
35
+ socketPath;
36
+ clients = [];
37
+ /**
38
+ * Behavior modes for testing different scenarios
39
+ */
40
+ mode = 'normal'; // Close connection before sending response
41
+ constructor(socketPath) {
42
+ this.socketPath = socketPath;
43
+ }
44
+ /**
45
+ * Start mock daemon server
46
+ */
47
+ async start() {
48
+ return new Promise((resolve, reject) => {
49
+ // Remove existing socket if present
50
+ try {
51
+ fs.unlinkSync(this.socketPath);
52
+ }
53
+ catch {
54
+ // Ignore - socket may not exist
55
+ }
56
+ this.server = net.createServer((socket) => {
57
+ this.clients.push(socket);
58
+ let buffer = '';
59
+ socket.on('data', (chunk) => {
60
+ buffer += chunk.toString('utf-8');
61
+ // Process complete JSONL frames
62
+ const lines = buffer.split('\n');
63
+ buffer = lines.pop() ?? '';
64
+ for (const line of lines) {
65
+ if (line.trim()) {
66
+ this.handleRequest(socket, line);
67
+ }
68
+ }
69
+ });
70
+ socket.on('error', () => {
71
+ // Ignore client errors
72
+ });
73
+ });
74
+ this.server.listen(this.socketPath, () => {
75
+ resolve();
76
+ });
77
+ this.server.on('error', reject);
78
+ });
79
+ }
80
+ /**
81
+ * Handle incoming request and send appropriate response
82
+ */
83
+ handleRequest(socket, line) {
84
+ try {
85
+ const request = JSON.parse(line);
86
+ // Handle different behavior modes
87
+ switch (this.mode) {
88
+ case 'slow':
89
+ // Delay response (useful for timeout testing)
90
+ setTimeout(() => {
91
+ this.sendNormalResponse(socket, request);
92
+ }, 10000); // 10s delay (longer than 5s client timeout)
93
+ break;
94
+ case 'malformed':
95
+ // Send invalid JSON
96
+ socket.write('{"invalid": json}\n');
97
+ break;
98
+ case 'error':
99
+ // Send error response
100
+ this.sendErrorResponse(socket, request);
101
+ break;
102
+ case 'silent':
103
+ // Don't send any response
104
+ break;
105
+ case 'close_early':
106
+ // Close connection immediately
107
+ socket.end();
108
+ break;
109
+ case 'normal':
110
+ this.sendNormalResponse(socket, request);
111
+ break;
112
+ }
113
+ }
114
+ catch {
115
+ // Invalid JSON in request - send error response
116
+ socket.write(JSON.stringify({
117
+ type: 'error_response',
118
+ sessionId: 'unknown',
119
+ status: 'error',
120
+ error: 'Invalid request JSON',
121
+ }) + '\n');
122
+ }
123
+ }
124
+ /**
125
+ * Send normal successful response
126
+ */
127
+ sendNormalResponse(socket, request) {
128
+ if (request.type === 'handshake_request') {
129
+ const response = {
130
+ type: 'handshake_response',
131
+ sessionId: request.sessionId,
132
+ status: 'ok',
133
+ message: 'Mock daemon connected',
134
+ };
135
+ socket.write(JSON.stringify(response) + '\n');
136
+ }
137
+ else if (request.type === 'status_request') {
138
+ const response = {
139
+ type: 'status_response',
140
+ sessionId: request.sessionId,
141
+ status: 'ok',
142
+ data: {
143
+ daemonPid: process.pid,
144
+ daemonStartTime: Date.now(),
145
+ socketPath: this.socketPath,
146
+ },
147
+ };
148
+ socket.write(JSON.stringify(response) + '\n');
149
+ }
150
+ }
151
+ /**
152
+ * Send error response
153
+ */
154
+ sendErrorResponse(socket, request) {
155
+ const response = {
156
+ type: request.type.replace('_request', '_response'),
157
+ sessionId: request.sessionId,
158
+ status: 'error',
159
+ error: 'Mock daemon error',
160
+ };
161
+ socket.write(JSON.stringify(response) + '\n');
162
+ }
163
+ /**
164
+ * Stop mock daemon server
165
+ */
166
+ async stop() {
167
+ return new Promise((resolve) => {
168
+ // Close all client connections
169
+ for (const client of this.clients) {
170
+ client.end();
171
+ }
172
+ this.clients = [];
173
+ if (this.server) {
174
+ this.server.close(() => {
175
+ // Remove socket file
176
+ try {
177
+ fs.unlinkSync(this.socketPath);
178
+ }
179
+ catch {
180
+ // Ignore - socket may not exist
181
+ }
182
+ resolve();
183
+ });
184
+ }
185
+ else {
186
+ resolve();
187
+ }
188
+ });
189
+ }
190
+ }
191
+ void describe('IPC Client Contract Tests', () => {
192
+ let mockDaemon;
193
+ let tmpDir;
194
+ let originalHome;
195
+ let originalUserProfile;
196
+ let socketPath;
197
+ beforeEach(async () => {
198
+ // Create temp directory for socket
199
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'bdg-ipc-client-test-'));
200
+ // Override HOME to use temp directory
201
+ originalHome = process.env['HOME'];
202
+ originalUserProfile = process.env['USERPROFILE'];
203
+ process.env['HOME'] = tmpDir;
204
+ if (process.platform === 'win32') {
205
+ process.env['USERPROFILE'] = tmpDir;
206
+ }
207
+ // Create .bdg directory
208
+ const bdgDir = path.join(tmpDir, '.bdg');
209
+ fs.mkdirSync(bdgDir, { recursive: true });
210
+ // Get socket path (matches IPCServer.getSocketPath())
211
+ socketPath = path.join(bdgDir, 'daemon.sock');
212
+ // Start mock daemon
213
+ mockDaemon = new MockDaemonServer(socketPath);
214
+ await mockDaemon.start();
215
+ });
216
+ afterEach(async () => {
217
+ // Stop mock daemon
218
+ if (mockDaemon) {
219
+ await mockDaemon.stop();
220
+ }
221
+ // Restore environment
222
+ if (originalHome !== undefined) {
223
+ process.env['HOME'] = originalHome;
224
+ }
225
+ else {
226
+ delete process.env['HOME'];
227
+ }
228
+ if (originalUserProfile !== undefined) {
229
+ process.env['USERPROFILE'] = originalUserProfile;
230
+ }
231
+ else {
232
+ delete process.env['USERPROFILE'];
233
+ }
234
+ // Cleanup temp directory
235
+ try {
236
+ fs.rmSync(tmpDir, { recursive: true, force: true });
237
+ }
238
+ catch {
239
+ // Ignore cleanup errors
240
+ }
241
+ });
242
+ void describe('connectToDaemon()', () => {
243
+ void it('connects to daemon and receives handshake response', async () => {
244
+ // Test the CONTRACT: Client connects → daemon responds
245
+ const response = await ipcClient.connectToDaemon();
246
+ // Verify response structure (contract)
247
+ assert.equal(response.type, 'handshake_response');
248
+ assert.equal(response.status, 'ok');
249
+ assert.ok(response.sessionId); // Should have a session ID
250
+ assert.ok(response.message); // Should have a message
251
+ });
252
+ void it('throws error when daemon is not running', async () => {
253
+ // Stop daemon to simulate not running
254
+ await mockDaemon.stop();
255
+ // Test the CONTRACT: No daemon → connection error
256
+ await assert.rejects(async () => {
257
+ await ipcClient.connectToDaemon();
258
+ }, {
259
+ name: 'Error',
260
+ message: /Connection error/,
261
+ });
262
+ });
263
+ void it('throws error on timeout (5s)', async () => {
264
+ // Configure mock daemon to be slow (10s delay)
265
+ mockDaemon.mode = 'slow';
266
+ // Test the CONTRACT: Slow response → timeout error
267
+ await assert.rejects(async () => {
268
+ await ipcClient.connectToDaemon();
269
+ }, {
270
+ name: 'Error',
271
+ message: /handshake request timeout after 5s/,
272
+ });
273
+ });
274
+ void it('throws error on malformed response', async () => {
275
+ // Configure mock daemon to send invalid JSON
276
+ mockDaemon.mode = 'malformed';
277
+ // Test the CONTRACT: Invalid JSON → parse error
278
+ await assert.rejects(async () => {
279
+ await ipcClient.connectToDaemon();
280
+ }, {
281
+ name: 'Error',
282
+ message: /Failed to parse handshake response/,
283
+ });
284
+ });
285
+ void it('throws error when connection closes early', async () => {
286
+ // Configure mock daemon to close connection immediately
287
+ mockDaemon.mode = 'close_early';
288
+ // Test the CONTRACT: Early close → connection closed error
289
+ await assert.rejects(async () => {
290
+ await ipcClient.connectToDaemon();
291
+ }, {
292
+ name: 'Error',
293
+ message: /Connection closed before handshake response received/,
294
+ });
295
+ });
296
+ });
297
+ void describe('getStatus()', () => {
298
+ void it('requests status and receives response', async () => {
299
+ // Test the CONTRACT: Status request → status response
300
+ const response = await ipcClient.getStatus();
301
+ // Verify response structure (contract)
302
+ assert.equal(response.type, 'status_response');
303
+ assert.equal(response.status, 'ok');
304
+ assert.ok(response.data);
305
+ assert.ok(response.data.daemonPid);
306
+ assert.ok(response.data.socketPath);
307
+ });
308
+ void it('throws error when daemon is not running', async () => {
309
+ // Stop daemon
310
+ await mockDaemon.stop();
311
+ // Test the CONTRACT: No daemon → connection error
312
+ await assert.rejects(async () => {
313
+ await ipcClient.getStatus();
314
+ }, {
315
+ name: 'Error',
316
+ message: /Connection error/,
317
+ });
318
+ });
319
+ void it('throws error on timeout', async () => {
320
+ // Configure mock daemon to be slow
321
+ mockDaemon.mode = 'slow';
322
+ // Test the CONTRACT: Slow response → timeout
323
+ await assert.rejects(async () => {
324
+ await ipcClient.getStatus();
325
+ }, {
326
+ name: 'Error',
327
+ message: /status request timeout after 5s/,
328
+ });
329
+ });
330
+ void it('propagates daemon errors', async () => {
331
+ // Configure mock daemon to send error response
332
+ mockDaemon.mode = 'error';
333
+ // Test the CONTRACT: Daemon error → client receives error
334
+ // Note: Current implementation doesn't check status in response
335
+ // This test documents current behavior
336
+ const response = await ipcClient.getStatus();
337
+ assert.equal(response.status, 'error');
338
+ });
339
+ });
340
+ void describe('Socket cleanup', () => {
341
+ void it('cleans up socket after successful response', async () => {
342
+ // First request
343
+ await ipcClient.connectToDaemon();
344
+ // Second request should work (socket was cleaned up)
345
+ const response = await ipcClient.getStatus();
346
+ assert.equal(response.status, 'ok');
347
+ // Third request should also work
348
+ const response2 = await ipcClient.connectToDaemon();
349
+ assert.equal(response2.status, 'ok');
350
+ });
351
+ void it('cleans up socket after error', async () => {
352
+ // Configure daemon to send malformed response
353
+ mockDaemon.mode = 'malformed';
354
+ // First request fails
355
+ await assert.rejects(async () => {
356
+ await ipcClient.connectToDaemon();
357
+ });
358
+ // Reset to normal mode
359
+ mockDaemon.mode = 'normal';
360
+ // Second request should work (socket was cleaned up despite error)
361
+ const response = await ipcClient.getStatus();
362
+ assert.equal(response.status, 'ok');
363
+ });
364
+ void it('cleans up socket after timeout', async () => {
365
+ // Configure daemon to be slow (causes timeout)
366
+ mockDaemon.mode = 'slow';
367
+ // First request times out
368
+ await assert.rejects(async () => {
369
+ await ipcClient.connectToDaemon();
370
+ });
371
+ // Reset to normal mode
372
+ mockDaemon.mode = 'normal';
373
+ // Second request should work (socket was cleaned up after timeout)
374
+ const response = await ipcClient.getStatus();
375
+ assert.equal(response.status, 'ok');
376
+ });
377
+ });
378
+ void describe('Concurrent requests', () => {
379
+ void it('handles multiple concurrent requests', async () => {
380
+ // Test the INVARIANT: Multiple concurrent requests all succeed
381
+ const requests = [
382
+ ipcClient.connectToDaemon(),
383
+ ipcClient.getStatus(),
384
+ ipcClient.connectToDaemon(),
385
+ ipcClient.getStatus(),
386
+ ];
387
+ const responses = await Promise.all(requests);
388
+ // Verify all requests succeeded
389
+ assert.equal(responses.length, 4);
390
+ assert.equal(responses[0]?.type, 'handshake_response');
391
+ assert.equal(responses[1]?.type, 'status_response');
392
+ assert.equal(responses[2]?.type, 'handshake_response');
393
+ assert.equal(responses[3]?.type, 'status_response');
394
+ });
395
+ void it('handles mixed success/failure in concurrent requests', async () => {
396
+ // Configure daemon to send error responses
397
+ mockDaemon.mode = 'error';
398
+ // Mix of requests that will all get errors
399
+ const requests = [ipcClient.getStatus(), ipcClient.connectToDaemon()];
400
+ const responses = await Promise.all(requests);
401
+ // Both should receive error responses
402
+ assert.equal(responses[0]?.status, 'error');
403
+ assert.equal(responses[1]?.status, 'error');
404
+ // Reset to normal mode and verify recovery
405
+ mockDaemon.mode = 'normal';
406
+ const recovery = await ipcClient.getStatus();
407
+ assert.equal(recovery.status, 'ok');
408
+ });
409
+ });
410
+ void describe('JSONL protocol', () => {
411
+ void it('handles requests with unique session IDs', async () => {
412
+ // Test the PROPERTY: Each request has unique session ID
413
+ const response1 = await ipcClient.connectToDaemon();
414
+ const response2 = await ipcClient.connectToDaemon();
415
+ // Session IDs should be different (UUID random)
416
+ assert.notEqual(response1.sessionId, response2.sessionId);
417
+ });
418
+ void it('preserves session ID in response', async () => {
419
+ // Test the INVARIANT: Response sessionId matches request sessionId
420
+ // This is tested implicitly by the mock daemon echoing back sessionId
421
+ const response = await ipcClient.getStatus();
422
+ // Mock daemon echoes sessionId, so if we get a response, it matched
423
+ assert.ok(response.sessionId);
424
+ assert.equal(typeof response.sessionId, 'string');
425
+ });
426
+ });
427
+ void describe('Error handling edge cases', () => {
428
+ void it('handles silent daemon (no response)', async () => {
429
+ // Configure daemon to receive but not respond
430
+ mockDaemon.mode = 'silent';
431
+ // Test the CONTRACT: No response → timeout
432
+ await assert.rejects(async () => {
433
+ await ipcClient.getStatus();
434
+ }, {
435
+ name: 'Error',
436
+ message: /status request timeout after 5s/,
437
+ });
438
+ });
439
+ void it('handles partial response followed by close', async () => {
440
+ // Create custom mock that sends partial JSON
441
+ await mockDaemon.stop();
442
+ const partialServer = net.createServer((socket) => {
443
+ socket.on('data', () => {
444
+ // Send incomplete JSON and close
445
+ socket.write('{"type": "status');
446
+ socket.end();
447
+ });
448
+ });
449
+ await new Promise((resolve) => {
450
+ partialServer.listen(socketPath, resolve);
451
+ });
452
+ // Test the CONTRACT: Partial response → connection closed error
453
+ await assert.rejects(async () => {
454
+ await ipcClient.getStatus();
455
+ }, {
456
+ name: 'Error',
457
+ message: /Connection closed before status response received/,
458
+ });
459
+ // Cleanup
460
+ await new Promise((resolve) => {
461
+ partialServer.close(() => resolve());
462
+ });
463
+ });
464
+ });
465
+ });
466
+ //# sourceMappingURL=client.contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.contract.test.js","sourceRoot":"","sources":["../../../src/ipc/__tests__/client.contract.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * IPC Client - Minimal JSONL handshake MVP
3
+ *
4
+ * Connects to the daemon's Unix domain socket and performs handshake.
5
+ */
6
+ import { type ClientResponse } from './commands.js';
7
+ import type { HandshakeResponse, PeekResponse, StartSessionResponse, StatusResponse, StopSessionResponse } from './types.js';
8
+ import type { CollectorType } from '@/types.js';
9
+ /**
10
+ * Connect to the daemon and perform handshake.
11
+ *
12
+ * @returns Handshake response from daemon
13
+ * @throws Error if connection fails or handshake times out
14
+ */
15
+ export declare function connectToDaemon(): Promise<HandshakeResponse>;
16
+ /**
17
+ * Request status information from the daemon.
18
+ *
19
+ * @returns Status response with daemon and session metadata
20
+ * @throws Error if connection fails, daemon is not running, or request times out
21
+ */
22
+ export declare function getStatus(): Promise<StatusResponse>;
23
+ /**
24
+ * Request preview data from the daemon.
25
+ *
26
+ * @returns Peek response with session preview data
27
+ * @throws Error if connection fails, daemon is not running, or request times out
28
+ */
29
+ export declare function getPeek(): Promise<PeekResponse>;
30
+ /**
31
+ * Request daemon to start a new browser session.
32
+ *
33
+ * @param url - Target URL to navigate to
34
+ * @param options - Session configuration options
35
+ * @returns Start session response with worker and Chrome metadata
36
+ * @throws Error if connection fails, daemon is not running, or request times out
37
+ */
38
+ export declare function startSession(url: string, options?: {
39
+ port?: number;
40
+ timeout?: number;
41
+ collectors?: CollectorType[];
42
+ includeAll?: boolean;
43
+ userDataDir?: string;
44
+ maxBodySize?: number;
45
+ }): Promise<StartSessionResponse>;
46
+ /**
47
+ * Request session stop from the daemon.
48
+ *
49
+ * @returns Stop session response with success/error status
50
+ * @throws Error if connection fails, daemon is not running, or request times out
51
+ */
52
+ export declare function stopSession(): Promise<StopSessionResponse>;
53
+ /**
54
+ * Query DOM elements by CSS selector via the daemon's worker.
55
+ *
56
+ * @param selector - CSS selector to query
57
+ * @returns DOM query response with matched elements
58
+ * @throws Error if connection fails, daemon is not running, or request times out
59
+ */
60
+ export declare function queryDOM(selector: string): Promise<ClientResponse<'dom_query'>>;
61
+ /**
62
+ * Highlight DOM elements in the browser via the daemon's worker.
63
+ *
64
+ * @param options - Highlight options (selector, index, nodeId, color, etc.)
65
+ * @returns DOM highlight response with highlighted node information
66
+ * @throws Error if connection fails, daemon is not running, or request times out
67
+ */
68
+ export declare function highlightDOM(options: {
69
+ selector?: string;
70
+ index?: number;
71
+ nodeId?: number;
72
+ first?: boolean;
73
+ nth?: number;
74
+ color?: string;
75
+ opacity?: number;
76
+ }): Promise<ClientResponse<'dom_highlight'>>;
77
+ /**
78
+ * Get full HTML and attributes for DOM elements via the daemon's worker.
79
+ *
80
+ * @param options - Get options (selector, index, nodeId, all, nth)
81
+ * @returns DOM get response with node information
82
+ * @throws Error if connection fails, daemon is not running, or request times out
83
+ */
84
+ export declare function getDOM(options: {
85
+ selector?: string;
86
+ index?: number;
87
+ nodeId?: number;
88
+ all?: boolean;
89
+ nth?: number;
90
+ }): Promise<ClientResponse<'dom_get'>>;
91
+ /**
92
+ * Get details for a specific network request or console message via the daemon's worker.
93
+ *
94
+ * @param type - Type of item: 'network' or 'console'
95
+ * @param id - Request ID for network, index for console
96
+ * @returns Worker details response with full object (including bodies/args)
97
+ * @throws Error if connection fails, daemon is not running, or request times out
98
+ */
99
+ export declare function getDetails(type: 'network' | 'console', id: string): Promise<ClientResponse<'worker_details'>>;
100
+ /**
101
+ * Execute arbitrary CDP method via the daemon's worker.
102
+ *
103
+ * @param method - CDP method name (e.g., 'Network.getCookies', 'Runtime.evaluate')
104
+ * @param params - CDP method parameters (optional)
105
+ * @returns CDP call response with method result
106
+ * @throws Error if connection fails, daemon is not running, or request times out
107
+ */
108
+ export declare function callCDP(method: string, params?: Record<string, unknown>): Promise<ClientResponse<'cdp_call'>>;
109
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,KAAK,EAEV,iBAAiB,EAEjB,YAAY,EAEZ,oBAAoB,EAEpB,cAAc,EAEd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuFhD;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOlE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAOzD;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAOrD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,oBAAoB,CAAC,CAc/B;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAOhE;AAsBD;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAErF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAE3C;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAErC;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAE3C;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAErC"}