browser-debugger-cli 0.6.0 → 0.6.2

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 (699) hide show
  1. package/README.md +65 -6
  2. package/dist/__tests__/smoke/error-handling.smoke.test.js +23 -52
  3. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
  4. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +27 -24
  5. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
  6. package/dist/__testutils__/daemonHelpers.d.ts +13 -1
  7. package/dist/__testutils__/daemonHelpers.d.ts.map +1 -1
  8. package/dist/__testutils__/daemonHelpers.js +54 -5
  9. package/dist/__testutils__/daemonHelpers.js.map +1 -1
  10. package/dist/__testutils__/testCleanup.js +1 -1
  11. package/dist/__testutils__/testCleanup.js.map +1 -1
  12. package/dist/cdp/protocol.d.ts +0 -48
  13. package/dist/cdp/protocol.d.ts.map +1 -1
  14. package/dist/cdp/protocol.js +9 -101
  15. package/dist/cdp/protocol.js.map +1 -1
  16. package/dist/commands/__tests__/cdp.contract.test.js +2 -2
  17. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
  18. package/dist/commands/__tests__/domEval.contract.test.js +8 -4
  19. package/dist/commands/__tests__/domEval.contract.test.js.map +1 -1
  20. package/dist/commands/cdp.d.ts.map +1 -1
  21. package/dist/commands/cdp.js +4 -37
  22. package/dist/commands/cdp.js.map +1 -1
  23. package/dist/commands/cleanup.d.ts.map +1 -1
  24. package/dist/commands/cleanup.js +25 -23
  25. package/dist/commands/cleanup.js.map +1 -1
  26. package/dist/commands/console.d.ts.map +1 -1
  27. package/dist/commands/console.js +3 -8
  28. package/dist/commands/console.js.map +1 -1
  29. package/dist/commands/details.d.ts.map +1 -1
  30. package/dist/commands/details.js +1 -1
  31. package/dist/commands/details.js.map +1 -1
  32. package/dist/commands/dom/a11y.d.ts +18 -0
  33. package/dist/commands/dom/a11y.d.ts.map +1 -0
  34. package/dist/commands/dom/a11y.js +134 -0
  35. package/dist/commands/dom/a11y.js.map +1 -0
  36. package/dist/commands/{domEvalHelpers.d.ts → dom/evalHelpers.d.ts} +8 -5
  37. package/dist/commands/dom/evalHelpers.d.ts.map +1 -0
  38. package/dist/commands/{domEvalHelpers.js → dom/evalHelpers.js} +14 -13
  39. package/dist/commands/dom/evalHelpers.js.map +1 -0
  40. package/dist/commands/dom/formFillHelpers.d.ts +47 -0
  41. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -0
  42. package/dist/commands/dom/formFillHelpers.js +185 -0
  43. package/dist/commands/dom/formFillHelpers.js.map +1 -0
  44. package/dist/commands/dom/formInteraction.d.ts +17 -0
  45. package/dist/commands/dom/formInteraction.d.ts.map +1 -0
  46. package/dist/commands/dom/formInteraction.js +239 -0
  47. package/dist/commands/dom/formInteraction.js.map +1 -0
  48. package/dist/commands/dom/formSubmitHelpers.d.ts +58 -0
  49. package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -0
  50. package/dist/commands/dom/formSubmitHelpers.js +176 -0
  51. package/dist/commands/dom/formSubmitHelpers.js.map +1 -0
  52. package/dist/commands/dom/helpers.d.ts +34 -0
  53. package/dist/commands/dom/helpers.d.ts.map +1 -0
  54. package/dist/commands/dom/helpers.js +244 -0
  55. package/dist/commands/dom/helpers.js.map +1 -0
  56. package/dist/commands/{dom.d.ts → dom/index.d.ts} +1 -1
  57. package/dist/commands/dom/index.d.ts.map +1 -0
  58. package/dist/commands/dom/index.js +175 -0
  59. package/dist/commands/dom/index.js.map +1 -0
  60. package/dist/commands/dom/reactEventHelpers.d.ts +80 -0
  61. package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -0
  62. package/dist/commands/dom/reactEventHelpers.js +274 -0
  63. package/dist/commands/dom/reactEventHelpers.js.map +1 -0
  64. package/dist/commands/network.js +1 -1
  65. package/dist/commands/network.js.map +1 -1
  66. package/dist/commands/peek.d.ts.map +1 -1
  67. package/dist/commands/peek.js +49 -52
  68. package/dist/commands/peek.js.map +1 -1
  69. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  70. package/dist/commands/shared/CommandRunner.js +3 -2
  71. package/dist/commands/shared/CommandRunner.js.map +1 -1
  72. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  73. package/dist/commands/shared/commonOptions.js +3 -1
  74. package/dist/commands/shared/commonOptions.js.map +1 -1
  75. package/dist/commands/shared/daemonErrorHandler.d.ts +30 -0
  76. package/dist/commands/shared/daemonErrorHandler.d.ts.map +1 -0
  77. package/dist/commands/shared/daemonErrorHandler.js +32 -0
  78. package/dist/commands/shared/daemonErrorHandler.js.map +1 -0
  79. package/dist/commands/shared/{daemonSessionController.d.ts → startHelpers.d.ts} +7 -1
  80. package/dist/commands/shared/startHelpers.d.ts.map +1 -0
  81. package/dist/commands/shared/{daemonSessionController.js → startHelpers.js} +13 -5
  82. package/dist/commands/shared/startHelpers.js.map +1 -0
  83. package/dist/commands/shared/validation.d.ts +44 -0
  84. package/dist/commands/shared/validation.d.ts.map +1 -0
  85. package/dist/commands/shared/validation.js +68 -0
  86. package/dist/commands/shared/validation.js.map +1 -0
  87. package/dist/commands/start.d.ts.map +1 -1
  88. package/dist/commands/start.js +9 -25
  89. package/dist/commands/start.js.map +1 -1
  90. package/dist/commands/status.d.ts.map +1 -1
  91. package/dist/commands/status.js +6 -4
  92. package/dist/commands/status.js.map +1 -1
  93. package/dist/commands/stop.d.ts.map +1 -1
  94. package/dist/commands/stop.js +16 -19
  95. package/dist/commands/stop.js.map +1 -1
  96. package/dist/commands/tail.d.ts.map +1 -1
  97. package/dist/commands/tail.js +49 -44
  98. package/dist/commands/tail.js.map +1 -1
  99. package/dist/commands/types.d.ts +46 -0
  100. package/dist/commands/types.d.ts.map +1 -0
  101. package/dist/commands/types.js +8 -0
  102. package/dist/commands/types.js.map +1 -0
  103. package/dist/commands.d.ts.map +1 -1
  104. package/dist/commands.js +3 -1
  105. package/dist/commands.js.map +1 -1
  106. package/dist/connection/__tests__/cdp.contract.test.js +7 -7
  107. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
  108. package/dist/connection/__tests__/handlers.unit.test.d.ts +11 -0
  109. package/dist/connection/__tests__/handlers.unit.test.d.ts.map +1 -0
  110. package/dist/connection/__tests__/handlers.unit.test.js +220 -0
  111. package/dist/connection/__tests__/handlers.unit.test.js.map +1 -0
  112. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +14 -0
  113. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +1 -0
  114. package/dist/connection/__tests__/pageReadiness.contract.test.js +382 -0
  115. package/dist/connection/__tests__/pageReadiness.contract.test.js.map +1 -0
  116. package/dist/connection/__tests__/portReservation.contract.test.d.ts +14 -0
  117. package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +1 -0
  118. package/dist/connection/__tests__/portReservation.contract.test.js +250 -0
  119. package/dist/connection/__tests__/portReservation.contract.test.js.map +1 -0
  120. package/dist/connection/cdp.d.ts +34 -11
  121. package/dist/connection/cdp.d.ts.map +1 -1
  122. package/dist/connection/cdp.js +61 -45
  123. package/dist/connection/cdp.js.map +1 -1
  124. package/dist/connection/config.d.ts +63 -0
  125. package/dist/connection/config.d.ts.map +1 -0
  126. package/dist/connection/config.js +46 -0
  127. package/dist/connection/config.js.map +1 -0
  128. package/dist/connection/errors.d.ts +6 -21
  129. package/dist/connection/errors.d.ts.map +1 -1
  130. package/dist/connection/errors.js +7 -26
  131. package/dist/connection/errors.js.map +1 -1
  132. package/dist/connection/events.d.ts +30 -0
  133. package/dist/connection/events.d.ts.map +1 -0
  134. package/dist/connection/events.js +8 -0
  135. package/dist/connection/events.js.map +1 -0
  136. package/dist/connection/handlers.d.ts +3 -5
  137. package/dist/connection/handlers.d.ts.map +1 -1
  138. package/dist/connection/handlers.js +10 -12
  139. package/dist/connection/handlers.js.map +1 -1
  140. package/dist/connection/launcher/binaryResolver.d.ts +40 -0
  141. package/dist/connection/launcher/binaryResolver.d.ts.map +1 -0
  142. package/dist/connection/launcher/binaryResolver.js +78 -0
  143. package/dist/connection/launcher/binaryResolver.js.map +1 -0
  144. package/dist/connection/launcher/flagsBuilder.d.ts +64 -0
  145. package/dist/connection/launcher/flagsBuilder.d.ts.map +1 -0
  146. package/dist/connection/launcher/flagsBuilder.js +84 -0
  147. package/dist/connection/launcher/flagsBuilder.js.map +1 -0
  148. package/dist/connection/launcher/preferencesLoader.d.ts +74 -0
  149. package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -0
  150. package/dist/connection/launcher/preferencesLoader.js +89 -0
  151. package/dist/connection/launcher/preferencesLoader.js.map +1 -0
  152. package/dist/connection/launcher.d.ts +24 -1
  153. package/dist/connection/launcher.d.ts.map +1 -1
  154. package/dist/connection/launcher.js +30 -205
  155. package/dist/connection/launcher.js.map +1 -1
  156. package/dist/connection/pageReadiness.d.ts +8 -8
  157. package/dist/connection/pageReadiness.d.ts.map +1 -1
  158. package/dist/connection/pageReadiness.js +36 -52
  159. package/dist/connection/pageReadiness.js.map +1 -1
  160. package/dist/connection/portReservation.d.ts +40 -0
  161. package/dist/connection/portReservation.d.ts.map +1 -0
  162. package/dist/connection/portReservation.js +55 -0
  163. package/dist/connection/portReservation.js.map +1 -0
  164. package/dist/connection/typed-cdp.d.ts +2 -1
  165. package/dist/connection/typed-cdp.d.ts.map +1 -1
  166. package/dist/connection/typed-cdp.js.map +1 -1
  167. package/dist/connection/types.d.ts +103 -0
  168. package/dist/connection/types.d.ts.map +1 -0
  169. package/dist/connection/types.js +8 -0
  170. package/dist/connection/types.js.map +1 -0
  171. package/dist/constants.d.ts +6 -83
  172. package/dist/constants.d.ts.map +1 -1
  173. package/dist/constants.js +6 -83
  174. package/dist/constants.js.map +1 -1
  175. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +8 -0
  176. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +1 -0
  177. package/dist/daemon/__tests__/JsonlParser.unit.test.js +140 -0
  178. package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +1 -0
  179. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +8 -0
  180. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +1 -0
  181. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +276 -0
  182. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +1 -0
  183. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +8 -0
  184. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +1 -0
  185. package/dist/daemon/__tests__/TelemetryStore.unit.test.js +290 -0
  186. package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +1 -0
  187. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +8 -0
  188. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +1 -0
  189. package/dist/daemon/__tests__/commandRegistry.contract.test.js +384 -0
  190. package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -0
  191. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts +19 -0
  192. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts.map +1 -0
  193. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js +212 -0
  194. package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js.map +1 -0
  195. package/dist/daemon/__tests__/ipcServer.contract.test.js +2 -1
  196. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  197. package/dist/daemon/errors.d.ts +65 -0
  198. package/dist/daemon/errors.d.ts.map +1 -0
  199. package/dist/daemon/errors.js +82 -0
  200. package/dist/daemon/errors.js.map +1 -0
  201. package/dist/daemon/handlers/CommandHandlers.d.ts +32 -0
  202. package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -0
  203. package/dist/daemon/handlers/CommandHandlers.js +93 -0
  204. package/dist/daemon/handlers/CommandHandlers.js.map +1 -0
  205. package/dist/daemon/handlers/QueryHandlers.d.ts +35 -0
  206. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -0
  207. package/dist/daemon/handlers/QueryHandlers.js +176 -0
  208. package/dist/daemon/handlers/QueryHandlers.js.map +1 -0
  209. package/dist/daemon/handlers/SessionHandlers.d.ts +32 -0
  210. package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -0
  211. package/dist/daemon/handlers/SessionHandlers.js +227 -0
  212. package/dist/daemon/handlers/SessionHandlers.js.map +1 -0
  213. package/dist/daemon/handlers/pendingRequests.d.ts +50 -0
  214. package/dist/daemon/handlers/pendingRequests.d.ts.map +1 -0
  215. package/dist/daemon/handlers/pendingRequests.js +57 -0
  216. package/dist/daemon/handlers/pendingRequests.js.map +1 -0
  217. package/dist/daemon/handlers/requestHandlers.d.ts +51 -0
  218. package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -0
  219. package/dist/daemon/handlers/requestHandlers.js +61 -0
  220. package/dist/daemon/handlers/requestHandlers.js.map +1 -0
  221. package/dist/daemon/handlers/responseHandler.d.ts +42 -0
  222. package/dist/daemon/handlers/responseHandler.d.ts.map +1 -0
  223. package/dist/daemon/handlers/responseHandler.js +195 -0
  224. package/dist/daemon/handlers/responseHandler.js.map +1 -0
  225. package/dist/daemon/ipcServer.d.ts +19 -41
  226. package/dist/daemon/ipcServer.d.ts.map +1 -1
  227. package/dist/daemon/ipcServer.js +83 -655
  228. package/dist/daemon/ipcServer.js.map +1 -1
  229. package/dist/daemon/launcher.d.ts.map +1 -1
  230. package/dist/daemon/launcher.js +10 -6
  231. package/dist/daemon/launcher.js.map +1 -1
  232. package/dist/daemon/lifecycle/cdpSetup.d.ts +24 -0
  233. package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -0
  234. package/dist/daemon/lifecycle/cdpSetup.js +59 -0
  235. package/dist/daemon/lifecycle/cdpSetup.js.map +1 -0
  236. package/dist/daemon/lifecycle/chromeConnection.d.ts +17 -0
  237. package/dist/daemon/lifecycle/chromeConnection.d.ts.map +1 -0
  238. package/dist/daemon/lifecycle/chromeConnection.js +80 -0
  239. package/dist/daemon/lifecycle/chromeConnection.js.map +1 -0
  240. package/dist/daemon/lifecycle/signalHandlers.d.ts +14 -0
  241. package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -0
  242. package/dist/daemon/lifecycle/signalHandlers.js +35 -0
  243. package/dist/daemon/lifecycle/signalHandlers.js.map +1 -0
  244. package/dist/daemon/lifecycle/workerCleanup.d.ts +27 -0
  245. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -0
  246. package/dist/daemon/lifecycle/workerCleanup.js +144 -0
  247. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -0
  248. package/dist/daemon/lifecycle/workerConfig.d.ts +14 -0
  249. package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -0
  250. package/dist/daemon/lifecycle/workerConfig.js +66 -0
  251. package/dist/daemon/lifecycle/workerConfig.js.map +1 -0
  252. package/dist/daemon/lifecycle/workerIpc.d.ts +14 -0
  253. package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -0
  254. package/dist/daemon/lifecycle/workerIpc.js +87 -0
  255. package/dist/daemon/lifecycle/workerIpc.js.map +1 -0
  256. package/dist/daemon/server/JsonlParser.d.ts +31 -0
  257. package/dist/daemon/server/JsonlParser.d.ts.map +1 -0
  258. package/dist/daemon/server/JsonlParser.js +57 -0
  259. package/dist/daemon/server/JsonlParser.js.map +1 -0
  260. package/dist/daemon/server/SocketServer.d.ts.map +1 -1
  261. package/dist/daemon/server/SocketServer.js +2 -2
  262. package/dist/daemon/server/SocketServer.js.map +1 -1
  263. package/dist/daemon/server/WorkerManager.d.ts +3 -3
  264. package/dist/daemon/server/WorkerManager.d.ts.map +1 -1
  265. package/dist/daemon/server/WorkerManager.js +10 -19
  266. package/dist/daemon/server/WorkerManager.js.map +1 -1
  267. package/dist/daemon/services/SessionService.d.ts +87 -0
  268. package/dist/daemon/services/SessionService.d.ts.map +1 -0
  269. package/dist/daemon/services/SessionService.js +45 -0
  270. package/dist/daemon/services/SessionService.js.map +1 -0
  271. package/dist/daemon/startSession.d.ts.map +1 -1
  272. package/dist/daemon/startSession.js +54 -31
  273. package/dist/daemon/startSession.js.map +1 -1
  274. package/dist/daemon/worker/commandRegistry.d.ts +1 -1
  275. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  276. package/dist/daemon/worker/commandRegistry.js +20 -215
  277. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  278. package/dist/daemon/worker.d.ts +3 -12
  279. package/dist/daemon/worker.d.ts.map +1 -1
  280. package/dist/daemon/worker.js +47 -367
  281. package/dist/daemon/worker.js.map +1 -1
  282. package/dist/index.js +1 -1
  283. package/dist/index.js.map +1 -1
  284. package/dist/ipc/__tests__/client.contract.test.d.ts +0 -15
  285. package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -1
  286. package/dist/ipc/__tests__/client.contract.test.js +259 -42
  287. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  288. package/dist/ipc/__tests__/errors.unit.test.d.ts +7 -0
  289. package/dist/ipc/__tests__/errors.unit.test.d.ts.map +1 -0
  290. package/dist/ipc/__tests__/errors.unit.test.js +77 -0
  291. package/dist/ipc/__tests__/errors.unit.test.js.map +1 -0
  292. package/dist/ipc/__tests__/guards.unit.test.d.ts +7 -0
  293. package/dist/ipc/__tests__/guards.unit.test.d.ts.map +1 -0
  294. package/dist/ipc/__tests__/guards.unit.test.js +73 -0
  295. package/dist/ipc/__tests__/guards.unit.test.js.map +1 -0
  296. package/dist/ipc/__tests__/jsonl.unit.test.d.ts +7 -0
  297. package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +1 -0
  298. package/dist/ipc/__tests__/jsonl.unit.test.js +103 -0
  299. package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -0
  300. package/dist/ipc/__tests__/validation.unit.test.d.ts +7 -0
  301. package/dist/ipc/__tests__/validation.unit.test.d.ts.map +1 -0
  302. package/dist/ipc/__tests__/validation.unit.test.js +60 -0
  303. package/dist/ipc/__tests__/validation.unit.test.js.map +1 -0
  304. package/dist/ipc/client.d.ts +93 -84
  305. package/dist/ipc/client.d.ts.map +1 -1
  306. package/dist/ipc/client.js +121 -192
  307. package/dist/ipc/client.js.map +1 -1
  308. package/dist/ipc/index.d.ts +17 -0
  309. package/dist/ipc/index.d.ts.map +1 -0
  310. package/dist/ipc/index.js +23 -0
  311. package/dist/ipc/index.js.map +1 -0
  312. package/dist/ipc/protocol/commands.d.ts +144 -0
  313. package/dist/ipc/protocol/commands.d.ts.map +1 -0
  314. package/dist/ipc/protocol/commands.js +23 -0
  315. package/dist/ipc/protocol/commands.js.map +1 -0
  316. package/dist/ipc/protocol/guards.d.ts +47 -0
  317. package/dist/ipc/protocol/guards.d.ts.map +1 -0
  318. package/dist/ipc/protocol/guards.js +62 -0
  319. package/dist/ipc/protocol/guards.js.map +1 -0
  320. package/dist/ipc/protocol/index.d.ts +9 -0
  321. package/dist/ipc/protocol/index.d.ts.map +1 -0
  322. package/dist/ipc/protocol/index.js +8 -0
  323. package/dist/ipc/protocol/index.js.map +1 -0
  324. package/dist/ipc/protocol/messages.d.ts +64 -0
  325. package/dist/ipc/protocol/messages.d.ts.map +1 -0
  326. package/dist/ipc/protocol/messages.js +8 -0
  327. package/dist/ipc/protocol/messages.js.map +1 -0
  328. package/dist/ipc/session/errors.d.ts +25 -0
  329. package/dist/ipc/session/errors.d.ts.map +1 -0
  330. package/dist/ipc/{types.js → session/errors.js} +11 -6
  331. package/dist/ipc/session/errors.js.map +1 -0
  332. package/dist/ipc/session/index.d.ts +16 -0
  333. package/dist/ipc/session/index.d.ts.map +1 -0
  334. package/dist/ipc/session/index.js +7 -0
  335. package/dist/ipc/session/index.js.map +1 -0
  336. package/dist/ipc/session/lifecycle.d.ts +125 -0
  337. package/dist/ipc/session/lifecycle.d.ts.map +1 -0
  338. package/dist/ipc/session/lifecycle.js +7 -0
  339. package/dist/ipc/session/lifecycle.js.map +1 -0
  340. package/dist/ipc/session/queries.d.ts +94 -0
  341. package/dist/ipc/session/queries.d.ts.map +1 -0
  342. package/dist/ipc/session/queries.js +7 -0
  343. package/dist/ipc/session/queries.js.map +1 -0
  344. package/dist/ipc/session/types.d.ts +28 -0
  345. package/dist/ipc/session/types.d.ts.map +1 -0
  346. package/dist/ipc/session/types.js +7 -0
  347. package/dist/ipc/session/types.js.map +1 -0
  348. package/dist/ipc/transport/IPCError.d.ts +82 -0
  349. package/dist/ipc/transport/IPCError.d.ts.map +1 -0
  350. package/dist/ipc/transport/IPCError.js +109 -0
  351. package/dist/ipc/transport/IPCError.js.map +1 -0
  352. package/dist/ipc/transport/errors.d.ts +11 -0
  353. package/dist/ipc/transport/errors.d.ts.map +1 -0
  354. package/dist/ipc/transport/errors.js +28 -0
  355. package/dist/ipc/transport/errors.js.map +1 -0
  356. package/dist/ipc/transport/index.d.ts +16 -0
  357. package/dist/ipc/transport/index.d.ts.map +1 -0
  358. package/dist/ipc/transport/index.js +77 -0
  359. package/dist/ipc/transport/index.js.map +1 -0
  360. package/dist/ipc/transport/jsonl.d.ts +39 -0
  361. package/dist/ipc/transport/jsonl.d.ts.map +1 -0
  362. package/dist/ipc/transport/jsonl.js +61 -0
  363. package/dist/ipc/transport/jsonl.js.map +1 -0
  364. package/dist/ipc/transport/socket.d.ts +27 -0
  365. package/dist/ipc/transport/socket.d.ts.map +1 -0
  366. package/dist/ipc/transport/socket.js +49 -0
  367. package/dist/ipc/transport/socket.js.map +1 -0
  368. package/dist/ipc/transport/validation.d.ts +21 -0
  369. package/dist/ipc/transport/validation.d.ts.map +1 -0
  370. package/dist/ipc/transport/validation.js +23 -0
  371. package/dist/ipc/transport/validation.js.map +1 -0
  372. package/dist/ipc/utils/errors.d.ts +25 -0
  373. package/dist/ipc/utils/errors.d.ts.map +1 -0
  374. package/dist/ipc/utils/errors.js +29 -0
  375. package/dist/ipc/utils/errors.js.map +1 -0
  376. package/dist/ipc/utils/index.d.ts +12 -0
  377. package/dist/ipc/utils/index.d.ts.map +1 -0
  378. package/dist/ipc/utils/index.js +11 -0
  379. package/dist/ipc/utils/index.js.map +1 -0
  380. package/dist/ipc/utils/requestId.d.ts +23 -0
  381. package/dist/ipc/utils/requestId.d.ts.map +1 -0
  382. package/dist/ipc/utils/requestId.js +27 -0
  383. package/dist/ipc/utils/requestId.js.map +1 -0
  384. package/dist/ipc/utils/responseValidator.d.ts.map +1 -0
  385. package/dist/ipc/{responseValidator.js → utils/responseValidator.js} +2 -1
  386. package/dist/ipc/utils/responseValidator.js.map +1 -0
  387. package/dist/ipc/utils/session.d.ts +36 -0
  388. package/dist/ipc/utils/session.d.ts.map +1 -0
  389. package/dist/ipc/utils/session.js +37 -0
  390. package/dist/ipc/utils/session.js.map +1 -0
  391. package/dist/ipc/utils/types.d.ts +17 -0
  392. package/dist/ipc/utils/types.d.ts.map +1 -0
  393. package/dist/ipc/utils/types.js +7 -0
  394. package/dist/ipc/utils/types.js.map +1 -0
  395. package/dist/session/__tests__/chrome-cache.contract.test.d.ts +7 -0
  396. package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +1 -0
  397. package/dist/session/__tests__/chrome-cache.contract.test.js +77 -0
  398. package/dist/session/__tests__/chrome-cache.contract.test.js.map +1 -0
  399. package/dist/session/__tests__/cleanup.contract.test.d.ts +7 -0
  400. package/dist/session/__tests__/cleanup.contract.test.d.ts.map +1 -0
  401. package/dist/session/__tests__/cleanup.contract.test.js +84 -0
  402. package/dist/session/__tests__/cleanup.contract.test.js.map +1 -0
  403. package/dist/session/__tests__/lock.contract.test.d.ts +7 -0
  404. package/dist/session/__tests__/lock.contract.test.d.ts.map +1 -0
  405. package/dist/session/__tests__/lock.contract.test.js +77 -0
  406. package/dist/session/__tests__/lock.contract.test.js.map +1 -0
  407. package/dist/session/__tests__/metadata.contract.test.d.ts +7 -0
  408. package/dist/session/__tests__/metadata.contract.test.d.ts.map +1 -0
  409. package/dist/session/__tests__/metadata.contract.test.js +87 -0
  410. package/dist/session/__tests__/metadata.contract.test.js.map +1 -0
  411. package/dist/session/chrome.d.ts +20 -0
  412. package/dist/session/chrome.d.ts.map +1 -1
  413. package/dist/session/chrome.js +81 -17
  414. package/dist/session/chrome.js.map +1 -1
  415. package/dist/session/cleanup.d.ts +36 -2
  416. package/dist/session/cleanup.d.ts.map +1 -1
  417. package/dist/session/cleanup.js +201 -73
  418. package/dist/session/cleanup.js.map +1 -1
  419. package/dist/session/lock.d.ts.map +1 -1
  420. package/dist/session/lock.js +102 -91
  421. package/dist/session/lock.js.map +1 -1
  422. package/dist/session/metadata.d.ts +10 -3
  423. package/dist/session/metadata.d.ts.map +1 -1
  424. package/dist/session/metadata.js +24 -6
  425. package/dist/session/metadata.js.map +1 -1
  426. package/dist/session/paths.d.ts +0 -9
  427. package/dist/session/paths.d.ts.map +1 -1
  428. package/dist/session/paths.js +0 -11
  429. package/dist/session/paths.js.map +1 -1
  430. package/dist/session/pid.d.ts +15 -0
  431. package/dist/session/pid.d.ts.map +1 -1
  432. package/dist/session/pid.js +39 -21
  433. package/dist/session/pid.js.map +1 -1
  434. package/dist/session/process.d.ts +4 -41
  435. package/dist/session/process.d.ts.map +1 -1
  436. package/dist/session/process.js +4 -85
  437. package/dist/session/process.js.map +1 -1
  438. package/dist/session/statusData.d.ts +50 -0
  439. package/dist/session/statusData.d.ts.map +1 -0
  440. package/dist/session/statusData.js +51 -0
  441. package/dist/session/statusData.js.map +1 -0
  442. package/dist/telemetry/__tests__/a11y.unit.test.d.ts +10 -0
  443. package/dist/telemetry/__tests__/a11y.unit.test.d.ts.map +1 -0
  444. package/dist/telemetry/__tests__/a11y.unit.test.js +265 -0
  445. package/dist/telemetry/__tests__/a11y.unit.test.js.map +1 -0
  446. package/dist/telemetry/__tests__/navigation.contract.test.d.ts +8 -0
  447. package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +1 -0
  448. package/dist/telemetry/__tests__/navigation.contract.test.js +211 -0
  449. package/dist/telemetry/__tests__/navigation.contract.test.js.map +1 -0
  450. package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -20
  451. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -1
  452. package/dist/telemetry/__tests__/network.contract.test.js +2 -64
  453. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  454. package/dist/telemetry/__tests__/utils.unit.test.d.ts +7 -0
  455. package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +1 -0
  456. package/dist/telemetry/__tests__/utils.unit.test.js +91 -0
  457. package/dist/telemetry/__tests__/utils.unit.test.js.map +1 -0
  458. package/dist/telemetry/a11y.d.ts +78 -0
  459. package/dist/telemetry/a11y.d.ts.map +1 -0
  460. package/dist/telemetry/a11y.js +280 -0
  461. package/dist/telemetry/a11y.js.map +1 -0
  462. package/dist/telemetry/console.d.ts.map +1 -1
  463. package/dist/telemetry/console.js +19 -28
  464. package/dist/telemetry/console.js.map +1 -1
  465. package/dist/telemetry/dialogs.d.ts.map +1 -1
  466. package/dist/telemetry/dialogs.js +4 -8
  467. package/dist/telemetry/dialogs.js.map +1 -1
  468. package/dist/telemetry/dom.d.ts +1 -1
  469. package/dist/telemetry/dom.d.ts.map +1 -1
  470. package/dist/telemetry/dom.js +83 -60
  471. package/dist/telemetry/dom.js.map +1 -1
  472. package/dist/telemetry/filters.d.ts +5 -18
  473. package/dist/telemetry/filters.d.ts.map +1 -1
  474. package/dist/telemetry/filters.js +36 -56
  475. package/dist/telemetry/filters.js.map +1 -1
  476. package/dist/telemetry/navigation.d.ts.map +1 -1
  477. package/dist/telemetry/navigation.js +5 -8
  478. package/dist/telemetry/navigation.js.map +1 -1
  479. package/dist/telemetry/network.d.ts.map +1 -1
  480. package/dist/telemetry/network.js +105 -104
  481. package/dist/telemetry/network.js.map +1 -1
  482. package/dist/telemetry/utils.d.ts +85 -0
  483. package/dist/telemetry/utils.d.ts.map +1 -0
  484. package/dist/telemetry/utils.js +138 -0
  485. package/dist/telemetry/utils.js.map +1 -0
  486. package/dist/types/dom.d.ts +66 -0
  487. package/dist/types/dom.d.ts.map +1 -0
  488. package/dist/types/dom.js +8 -0
  489. package/dist/types/dom.js.map +1 -0
  490. package/dist/types.d.ts +86 -77
  491. package/dist/types.d.ts.map +1 -1
  492. package/dist/{commands/shared → ui}/OutputBuilder.d.ts +10 -2
  493. package/dist/ui/OutputBuilder.d.ts.map +1 -0
  494. package/dist/{commands/shared → ui}/OutputBuilder.js +8 -2
  495. package/dist/ui/OutputBuilder.js.map +1 -0
  496. package/dist/ui/errors/CommandError.d.ts +16 -2
  497. package/dist/ui/errors/CommandError.d.ts.map +1 -1
  498. package/dist/ui/errors/CommandError.js +2 -1
  499. package/dist/ui/errors/CommandError.js.map +1 -1
  500. package/dist/ui/errors/index.d.ts +2 -3
  501. package/dist/ui/errors/index.d.ts.map +1 -1
  502. package/dist/ui/errors/index.js +1 -3
  503. package/dist/ui/errors/index.js.map +1 -1
  504. package/dist/ui/errors/utils.d.ts +6 -0
  505. package/dist/ui/errors/utils.d.ts.map +1 -1
  506. package/dist/ui/errors/utils.js +8 -3
  507. package/dist/ui/errors/utils.js.map +1 -1
  508. package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts +2 -0
  509. package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts.map +1 -0
  510. package/dist/ui/formatters/__tests__/semantic.unit.test.js +111 -0
  511. package/dist/ui/formatters/__tests__/semantic.unit.test.js.map +1 -0
  512. package/dist/ui/formatters/a11y.d.ts +30 -0
  513. package/dist/ui/formatters/a11y.d.ts.map +1 -0
  514. package/dist/ui/formatters/a11y.js +178 -0
  515. package/dist/ui/formatters/a11y.js.map +1 -0
  516. package/dist/ui/formatters/dom.d.ts +3 -18
  517. package/dist/ui/formatters/dom.d.ts.map +1 -1
  518. package/dist/ui/formatters/dom.js +4 -27
  519. package/dist/ui/formatters/dom.js.map +1 -1
  520. package/dist/ui/formatters/preview.d.ts +10 -8
  521. package/dist/ui/formatters/preview.d.ts.map +1 -1
  522. package/dist/ui/formatters/preview.js +45 -17
  523. package/dist/ui/formatters/preview.js.map +1 -1
  524. package/dist/ui/formatters/semantic.d.ts +36 -0
  525. package/dist/ui/formatters/semantic.d.ts.map +1 -0
  526. package/dist/ui/formatters/semantic.js +98 -0
  527. package/dist/ui/formatters/semantic.js.map +1 -0
  528. package/dist/ui/formatters/status.d.ts +1 -1
  529. package/dist/ui/formatters/status.d.ts.map +1 -1
  530. package/dist/ui/formatters/status.js +9 -31
  531. package/dist/ui/formatters/status.js.map +1 -1
  532. package/dist/ui/formatting.d.ts +2 -270
  533. package/dist/ui/formatting.d.ts.map +1 -1
  534. package/dist/ui/formatting.js +8 -331
  535. package/dist/ui/formatting.js.map +1 -1
  536. package/dist/ui/logging/index.d.ts +1 -1
  537. package/dist/ui/logging/index.d.ts.map +1 -1
  538. package/dist/ui/logging/index.js +1 -1
  539. package/dist/ui/logging/index.js.map +1 -1
  540. package/dist/ui/logging/logger.d.ts +3 -23
  541. package/dist/ui/logging/logger.d.ts.map +1 -1
  542. package/dist/ui/logging/logger.js +2 -27
  543. package/dist/ui/logging/logger.js.map +1 -1
  544. package/dist/ui/messages/chrome.d.ts +15 -7
  545. package/dist/ui/messages/chrome.d.ts.map +1 -1
  546. package/dist/ui/messages/chrome.js +23 -32
  547. package/dist/ui/messages/chrome.js.map +1 -1
  548. package/dist/ui/messages/commands.d.ts +9 -19
  549. package/dist/ui/messages/commands.d.ts.map +1 -1
  550. package/dist/ui/messages/commands.js +14 -51
  551. package/dist/ui/messages/commands.js.map +1 -1
  552. package/dist/ui/messages/consoleMessages.d.ts +1 -1
  553. package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
  554. package/dist/ui/messages/consoleMessages.js +3 -6
  555. package/dist/ui/messages/consoleMessages.js.map +1 -1
  556. package/dist/ui/messages/debug.d.ts +0 -14
  557. package/dist/ui/messages/debug.d.ts.map +1 -1
  558. package/dist/ui/messages/debug.js +0 -18
  559. package/dist/ui/messages/debug.js.map +1 -1
  560. package/dist/ui/messages/errors.d.ts +0 -34
  561. package/dist/ui/messages/errors.d.ts.map +1 -1
  562. package/dist/ui/messages/errors.js +3 -81
  563. package/dist/ui/messages/errors.js.map +1 -1
  564. package/dist/ui/messages/internal.d.ts +0 -7
  565. package/dist/ui/messages/internal.d.ts.map +1 -1
  566. package/dist/ui/messages/internal.js +0 -12
  567. package/dist/ui/messages/internal.js.map +1 -1
  568. package/dist/ui/messages/preview.d.ts +14 -1
  569. package/dist/ui/messages/preview.d.ts.map +1 -1
  570. package/dist/ui/messages/preview.js +24 -7
  571. package/dist/ui/messages/preview.js.map +1 -1
  572. package/dist/ui/messages/session.d.ts.map +1 -1
  573. package/dist/ui/messages/session.js +7 -23
  574. package/dist/ui/messages/session.js.map +1 -1
  575. package/dist/ui/messages/validation.d.ts.map +1 -1
  576. package/dist/ui/messages/validation.js +7 -8
  577. package/dist/ui/messages/validation.js.map +1 -1
  578. package/dist/utils/__tests__/atomicFile.test.d.ts +2 -0
  579. package/dist/utils/__tests__/atomicFile.test.d.ts.map +1 -0
  580. package/dist/utils/__tests__/atomicFile.test.js +43 -0
  581. package/dist/utils/__tests__/atomicFile.test.js.map +1 -0
  582. package/dist/utils/__tests__/errors.unit.test.d.ts +12 -0
  583. package/dist/utils/__tests__/errors.unit.test.d.ts.map +1 -0
  584. package/dist/utils/__tests__/errors.unit.test.js +255 -0
  585. package/dist/utils/__tests__/errors.unit.test.js.map +1 -0
  586. package/dist/utils/__tests__/http.unit.test.d.ts +12 -0
  587. package/dist/utils/__tests__/http.unit.test.d.ts.map +1 -0
  588. package/dist/utils/__tests__/http.unit.test.js +218 -0
  589. package/dist/utils/__tests__/http.unit.test.js.map +1 -0
  590. package/dist/utils/__tests__/objects.test.d.ts +2 -0
  591. package/dist/utils/__tests__/objects.test.d.ts.map +1 -0
  592. package/dist/utils/__tests__/objects.test.js +50 -0
  593. package/dist/utils/__tests__/objects.test.js.map +1 -0
  594. package/dist/utils/__tests__/process.unit.test.d.ts +14 -0
  595. package/dist/utils/__tests__/process.unit.test.d.ts.map +1 -0
  596. package/dist/utils/__tests__/process.unit.test.js +124 -0
  597. package/dist/utils/__tests__/process.unit.test.js.map +1 -0
  598. package/dist/utils/__tests__/session.contract.test.js +14 -4
  599. package/dist/utils/__tests__/session.contract.test.js.map +1 -1
  600. package/dist/utils/__tests__/url.test.d.ts +2 -0
  601. package/dist/utils/__tests__/url.test.d.ts.map +1 -0
  602. package/dist/utils/__tests__/url.test.js +42 -0
  603. package/dist/utils/__tests__/url.test.js.map +1 -0
  604. package/dist/utils/atomicFile.d.ts +31 -5
  605. package/dist/utils/atomicFile.d.ts.map +1 -1
  606. package/dist/utils/atomicFile.js +52 -13
  607. package/dist/utils/atomicFile.js.map +1 -1
  608. package/dist/utils/concurrency.d.ts +54 -0
  609. package/dist/utils/concurrency.d.ts.map +1 -0
  610. package/dist/utils/concurrency.js +78 -0
  611. package/dist/utils/concurrency.js.map +1 -0
  612. package/dist/utils/daemonErrors.d.ts +60 -0
  613. package/dist/utils/daemonErrors.d.ts.map +1 -0
  614. package/dist/utils/daemonErrors.js +58 -0
  615. package/dist/utils/daemonErrors.js.map +1 -0
  616. package/dist/utils/errors.d.ts +28 -0
  617. package/dist/utils/errors.d.ts.map +1 -0
  618. package/dist/utils/errors.js +33 -0
  619. package/dist/utils/errors.js.map +1 -0
  620. package/dist/utils/exitCodes.d.ts +41 -5
  621. package/dist/utils/exitCodes.d.ts.map +1 -1
  622. package/dist/utils/exitCodes.js +43 -9
  623. package/dist/utils/exitCodes.js.map +1 -1
  624. package/dist/utils/http.d.ts +9 -4
  625. package/dist/utils/http.d.ts.map +1 -1
  626. package/dist/utils/http.js +44 -10
  627. package/dist/utils/http.js.map +1 -1
  628. package/dist/utils/levenshtein.d.ts +45 -0
  629. package/dist/utils/levenshtein.d.ts.map +1 -0
  630. package/dist/utils/levenshtein.js +85 -0
  631. package/dist/utils/levenshtein.js.map +1 -0
  632. package/dist/utils/objects.d.ts +16 -1
  633. package/dist/utils/objects.d.ts.map +1 -1
  634. package/dist/utils/objects.js +16 -1
  635. package/dist/utils/objects.js.map +1 -1
  636. package/dist/utils/process.d.ts +45 -0
  637. package/dist/utils/process.d.ts.map +1 -0
  638. package/dist/utils/process.js +91 -0
  639. package/dist/utils/process.js.map +1 -0
  640. package/dist/utils/url.d.ts +10 -3
  641. package/dist/utils/url.d.ts.map +1 -1
  642. package/dist/utils/url.js +42 -29
  643. package/dist/utils/url.js.map +1 -1
  644. package/dist/utils/validation.d.ts +101 -0
  645. package/dist/utils/validation.d.ts.map +1 -0
  646. package/dist/utils/validation.js +131 -0
  647. package/dist/utils/validation.js.map +1 -0
  648. package/package.json +22 -1
  649. package/dist/commands/dom.d.ts.map +0 -1
  650. package/dist/commands/dom.js +0 -244
  651. package/dist/commands/dom.js.map +0 -1
  652. package/dist/commands/domEvalHelpers.d.ts.map +0 -1
  653. package/dist/commands/domEvalHelpers.js.map +0 -1
  654. package/dist/commands/domOptionsBuilder.d.ts +0 -67
  655. package/dist/commands/domOptionsBuilder.d.ts.map +0 -1
  656. package/dist/commands/domOptionsBuilder.js +0 -86
  657. package/dist/commands/domOptionsBuilder.js.map +0 -1
  658. package/dist/commands/domSelectorParser.d.ts +0 -20
  659. package/dist/commands/domSelectorParser.d.ts.map +0 -1
  660. package/dist/commands/domSelectorParser.js +0 -20
  661. package/dist/commands/domSelectorParser.js.map +0 -1
  662. package/dist/commands/shared/OutputBuilder.d.ts.map +0 -1
  663. package/dist/commands/shared/OutputBuilder.js.map +0 -1
  664. package/dist/commands/shared/daemonSessionController.d.ts.map +0 -1
  665. package/dist/commands/shared/daemonSessionController.js.map +0 -1
  666. package/dist/commands/shared/sessionController.d.ts +0 -21
  667. package/dist/commands/shared/sessionController.d.ts.map +0 -1
  668. package/dist/commands/shared/sessionController.js +0 -54
  669. package/dist/commands/shared/sessionController.js.map +0 -1
  670. package/dist/connection/__tests__/finder.contract.test.d.ts +0 -2
  671. package/dist/connection/__tests__/finder.contract.test.d.ts.map +0 -1
  672. package/dist/connection/__tests__/finder.contract.test.js +0 -239
  673. package/dist/connection/__tests__/finder.contract.test.js.map +0 -1
  674. package/dist/connection/domOperations.d.ts +0 -48
  675. package/dist/connection/domOperations.d.ts.map +0 -1
  676. package/dist/connection/domOperations.js +0 -106
  677. package/dist/connection/domOperations.js.map +0 -1
  678. package/dist/connection/finder.d.ts +0 -12
  679. package/dist/connection/finder.d.ts.map +0 -1
  680. package/dist/connection/finder.js +0 -17
  681. package/dist/connection/finder.js.map +0 -1
  682. package/dist/ipc/commands.d.ts +0 -260
  683. package/dist/ipc/commands.d.ts.map +0 -1
  684. package/dist/ipc/commands.js +0 -77
  685. package/dist/ipc/commands.js.map +0 -1
  686. package/dist/ipc/responseValidator.d.ts.map +0 -1
  687. package/dist/ipc/responseValidator.js.map +0 -1
  688. package/dist/ipc/types.d.ts +0 -226
  689. package/dist/ipc/types.d.ts.map +0 -1
  690. package/dist/ipc/types.js.map +0 -1
  691. package/dist/session/fileOps.d.ts +0 -25
  692. package/dist/session/fileOps.d.ts.map +0 -1
  693. package/dist/session/fileOps.js +0 -39
  694. package/dist/session/fileOps.js.map +0 -1
  695. package/dist/session/queryCache.d.ts +0 -36
  696. package/dist/session/queryCache.d.ts.map +0 -1
  697. package/dist/session/queryCache.js +0 -66
  698. package/dist/session/queryCache.js.map +0 -1
  699. /package/dist/ipc/{responseValidator.d.ts → utils/responseValidator.d.ts} +0 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Protocol Guards Unit Tests
3
+ *
4
+ * Tests type guard behavior for command identification.
5
+ */
6
+ import assert from 'node:assert/strict';
7
+ import { describe, it } from 'node:test';
8
+ import { getCommandName, isCommandRequest, isCommandResponse } from '../../ipc/protocol/guards.js';
9
+ void describe('isCommandRequest', () => {
10
+ void it('identifies all registered command requests', () => {
11
+ const validCommands = ['worker_peek', 'worker_status', 'cdp_call', 'worker_details'];
12
+ validCommands.forEach((cmd) => {
13
+ assert.ok(isCommandRequest(`${cmd}_request`), `Should identify ${cmd}_request`);
14
+ });
15
+ });
16
+ void it('rejects non-command requests', () => {
17
+ const invalid = ['status_request', 'handshake_request', 'start_session_request'];
18
+ invalid.forEach((type) => {
19
+ const result = isCommandRequest(type);
20
+ assert.equal(result, false, `Should reject ${type}`);
21
+ });
22
+ });
23
+ void it('rejects malformed request types', () => {
24
+ assert.ok(!isCommandRequest('worker_peek'));
25
+ assert.ok(!isCommandRequest('worker_peek_response'));
26
+ assert.ok(!isCommandRequest('invalid_request'));
27
+ });
28
+ });
29
+ void describe('isCommandResponse', () => {
30
+ void it('identifies all registered command responses', () => {
31
+ const validCommands = ['worker_peek', 'worker_status', 'cdp_call', 'worker_details'];
32
+ validCommands.forEach((cmd) => {
33
+ const type = `${cmd}_response`;
34
+ const result = isCommandResponse(type);
35
+ assert.ok(result, `Should identify ${type}, got ${result}`);
36
+ });
37
+ });
38
+ void it('rejects non-command responses', () => {
39
+ const invalid = ['status_response', 'handshake_response', 'stop_session_response'];
40
+ invalid.forEach((type) => {
41
+ const result = isCommandResponse(type);
42
+ assert.equal(result, false, `Should reject ${type}`);
43
+ });
44
+ });
45
+ void it('rejects malformed response types', () => {
46
+ assert.ok(!isCommandResponse('worker_peek'));
47
+ assert.ok(!isCommandResponse('worker_peek_request'));
48
+ assert.ok(!isCommandResponse('invalid_response'));
49
+ });
50
+ });
51
+ void describe('getCommandName', () => {
52
+ void it('extracts command name from request types', () => {
53
+ assert.equal(getCommandName('worker_peek_request'), 'worker_peek');
54
+ assert.equal(getCommandName('worker_status_request'), 'worker_status');
55
+ assert.equal(getCommandName('cdp_call_request'), 'cdp_call');
56
+ });
57
+ void it('extracts command name from response types', () => {
58
+ assert.equal(getCommandName('worker_peek_response'), 'worker_peek');
59
+ assert.equal(getCommandName('worker_status_response'), 'worker_status');
60
+ assert.equal(getCommandName('cdp_call_response'), 'cdp_call');
61
+ });
62
+ void it('returns null for non-command types', () => {
63
+ assert.equal(getCommandName('status_request'), null);
64
+ assert.equal(getCommandName('handshake_response'), null);
65
+ assert.equal(getCommandName('invalid_type'), null);
66
+ });
67
+ void it('returns null for malformed types', () => {
68
+ assert.equal(getCommandName('worker_peek'), null);
69
+ assert.equal(getCommandName('_request'), null);
70
+ assert.equal(getCommandName(''), null);
71
+ });
72
+ });
73
+ //# sourceMappingURL=guards.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.unit.test.js","sourceRoot":"","sources":["../../../src/ipc/__tests__/guards.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * JSONL Protocol Unit Tests
3
+ *
4
+ * Tests JSONL parsing and formatting behavior.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=jsonl.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.unit.test.d.ts","sourceRoot":"","sources":["../../../src/ipc/__tests__/jsonl.unit.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * JSONL Protocol Unit Tests
3
+ *
4
+ * Tests JSONL parsing and formatting behavior.
5
+ */
6
+ import assert from 'node:assert/strict';
7
+ import { describe, it } from 'node:test';
8
+ import { JSONLBuffer, JSONLBufferOverflowError, parseJSONLFrame, toJSONLFrame, } from '../../ipc/transport/jsonl.js';
9
+ void describe('JSONLBuffer', () => {
10
+ void it('handles partial frames across chunks', () => {
11
+ const buffer = new JSONLBuffer();
12
+ const lines1 = buffer.process('{"foo":');
13
+ assert.deepEqual(lines1, []);
14
+ const lines2 = buffer.process('"bar"}\n');
15
+ assert.deepEqual(lines2, ['{"foo":"bar"}']);
16
+ });
17
+ void it('processes multiple complete frames in one chunk', () => {
18
+ const buffer = new JSONLBuffer();
19
+ const lines = buffer.process('{"a":1}\n{"b":2}\n{"c":3}\n');
20
+ assert.deepEqual(lines, ['{"a":1}', '{"b":2}', '{"c":3}']);
21
+ });
22
+ void it('filters out empty lines', () => {
23
+ const buffer = new JSONLBuffer();
24
+ const lines = buffer.process('{"a":1}\n\n{"b":2}\n \n');
25
+ assert.deepEqual(lines, ['{"a":1}', '{"b":2}']);
26
+ });
27
+ void it('accumulates across multiple chunks', () => {
28
+ const buffer = new JSONLBuffer();
29
+ buffer.process('{"type":"status",');
30
+ buffer.process('"sessionId":"123",');
31
+ const lines = buffer.process('"status":"ok"}\n');
32
+ assert.deepEqual(lines, ['{"type":"status","sessionId":"123","status":"ok"}']);
33
+ });
34
+ void it('clears buffer', () => {
35
+ const buffer = new JSONLBuffer();
36
+ buffer.process('{"incomplete":');
37
+ buffer.clear();
38
+ const lines = buffer.process('{"new":"message"}\n');
39
+ assert.deepEqual(lines, ['{"new":"message"}']);
40
+ });
41
+ void it('throws on buffer overflow', () => {
42
+ const buffer = new JSONLBuffer();
43
+ // Create a chunk larger than MAX_JSONL_BUFFER_SIZE (10MB) without newlines
44
+ const largeChunk = 'x'.repeat(11 * 1024 * 1024); // 11MB
45
+ assert.throws(() => {
46
+ buffer.process(largeChunk);
47
+ }, (error) => {
48
+ return error instanceof JSONLBufferOverflowError && error.message.includes('10485760');
49
+ });
50
+ });
51
+ void it('allows chunks under buffer limit', () => {
52
+ const buffer = new JSONLBuffer();
53
+ // Create a chunk just under the limit
54
+ const largeButValidChunk = '{"data":"' + 'x'.repeat(9 * 1024 * 1024) + '"}\n';
55
+ // Should not throw
56
+ const lines = buffer.process(largeButValidChunk);
57
+ assert.equal(lines.length, 1);
58
+ });
59
+ });
60
+ void describe('parseJSONLFrame', () => {
61
+ void it('parses valid JSON string', () => {
62
+ const result = parseJSONLFrame('{"type":"test","value":42}');
63
+ assert.equal(result.type, 'test');
64
+ assert.equal(result.value, 42);
65
+ });
66
+ void it('throws on invalid JSON', () => {
67
+ assert.throws(() => {
68
+ parseJSONLFrame('{"invalid": json}');
69
+ }, SyntaxError);
70
+ });
71
+ void it('handles complex nested objects', () => {
72
+ const result = parseJSONLFrame('{"data":{"nested":{"value":"test"}}}');
73
+ assert.equal(result.data.nested.value, 'test');
74
+ });
75
+ });
76
+ void describe('toJSONLFrame', () => {
77
+ void it('always adds newline', () => {
78
+ const inputs = [
79
+ { type: 'status' },
80
+ { type: 'peek', data: [] },
81
+ { complex: { nested: { value: true } } },
82
+ ];
83
+ inputs.forEach((input) => {
84
+ const result = toJSONLFrame(input);
85
+ assert.ok(result.endsWith('\n'));
86
+ });
87
+ });
88
+ void it('produces valid JSON', () => {
89
+ const input = { type: 'status', sessionId: '123', value: 42 };
90
+ const frame = toJSONLFrame(input);
91
+ const parsed = JSON.parse(frame.trim());
92
+ assert.deepEqual(parsed, input);
93
+ });
94
+ void it('handles empty objects', () => {
95
+ const result = toJSONLFrame({});
96
+ assert.equal(result, '{}\n');
97
+ });
98
+ void it('handles arrays', () => {
99
+ const result = toJSONLFrame([1, 2, 3]);
100
+ assert.equal(result, '[1,2,3]\n');
101
+ });
102
+ });
103
+ //# sourceMappingURL=jsonl.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.unit.test.js","sourceRoot":"","sources":["../../../src/ipc/__tests__/jsonl.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Response Validation Unit Tests
3
+ *
4
+ * Tests response validation behavior.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=validation.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.unit.test.d.ts","sourceRoot":"","sources":["../../../src/ipc/__tests__/validation.unit.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Response Validation Unit Tests
3
+ *
4
+ * Tests response validation behavior.
5
+ */
6
+ import assert from 'node:assert/strict';
7
+ import { describe, it } from 'node:test';
8
+ import { validateResponseType, validateSessionId } from '../../ipc/transport/validation.js';
9
+ void describe('validateSessionId', () => {
10
+ void it('passes when session IDs match', () => {
11
+ const request = { sessionId: '123' };
12
+ const response = { sessionId: '123' };
13
+ assert.doesNotThrow(() => {
14
+ validateSessionId(request, response, 'test');
15
+ });
16
+ });
17
+ void it('throws when session IDs mismatch', () => {
18
+ const request = { sessionId: '123' };
19
+ const response = { sessionId: '456' };
20
+ assert.throws(() => {
21
+ validateSessionId(request, response, 'status');
22
+ }, {
23
+ message: /Response sessionId mismatch/,
24
+ });
25
+ });
26
+ void it('includes request name in error message', () => {
27
+ const request = { sessionId: 'abc' };
28
+ const response = { sessionId: 'xyz' };
29
+ assert.throws(() => {
30
+ validateSessionId(request, response, 'peek');
31
+ }, {
32
+ message: /peek/,
33
+ });
34
+ });
35
+ });
36
+ void describe('validateResponseType', () => {
37
+ void it('passes when response type matches expected', () => {
38
+ const response = { type: 'status_response' };
39
+ assert.doesNotThrow(() => {
40
+ validateResponseType(response, 'status_response', 'status');
41
+ });
42
+ });
43
+ void it('throws when response type does not match expected', () => {
44
+ const response = { type: 'peek_response' };
45
+ assert.throws(() => {
46
+ validateResponseType(response, 'status_response', 'status');
47
+ }, {
48
+ message: /Unexpected response type.*peek_response.*expected.*status_response/i,
49
+ });
50
+ });
51
+ void it('includes request name in error message', () => {
52
+ const response = { type: 'wrong_type' };
53
+ assert.throws(() => {
54
+ validateResponseType(response, 'expected_type', 'test_command');
55
+ }, {
56
+ message: /test_command/,
57
+ });
58
+ });
59
+ });
60
+ //# sourceMappingURL=validation.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.unit.test.js","sourceRoot":"","sources":["../../../src/ipc/__tests__/validation.unit.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAExF,KAAK,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACtC,KAAK,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEtC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YACvB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEtC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;YACH,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC,EACD;YACE,OAAO,EAAE,6BAA6B;SACvC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACrD,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEtC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;YACH,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,EACD;YACE,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,KAAK,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACzC,KAAK,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAE7C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YACvB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAChE,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAE3C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;YACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC,EACD;YACE,OAAO,EAAE,qEAAqE;SAC/E,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAExC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;YACH,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAClE,CAAC,EACD;YACE,OAAO,EAAE,cAAc;SACxB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,124 +1,133 @@
1
1
  /**
2
- * IPC Client - Minimal JSONL handshake MVP
2
+ * IPC Client
3
3
  *
4
- * Connects to the daemon's Unix domain socket and performs handshake.
4
+ * Public API for communicating with the daemon via Unix socket.
5
+ * Provides high-level functions for session lifecycle and queries.
5
6
  */
6
- import type { ClientResponse } from '../ipc/commands.js';
7
- import type { HandshakeResponse, PeekResponse, StartSessionResponse, StatusResponse, StopSessionResponse } from '../ipc/types.js';
8
- import type { TelemetryType } from '../types.js';
7
+ import type { ClientResponse } from './protocol/index.js';
8
+ import type { HandshakeResponse, PeekResponse, SessionOptions, StartSessionResponse, StatusResponse, StopSessionResponse } from './session/index.js';
9
9
  /**
10
10
  * Connect to the daemon and perform handshake.
11
+ * Verifies daemon is running and ready to accept commands.
11
12
  *
12
- * @returns Handshake response from daemon
13
- * @throws Error if connection fails or handshake times out
13
+ * @returns Handshake response with connection status
14
+ * @throws Error if connection fails or times out
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const response = await connectToDaemon();
19
+ * if (response.status === 'ok') {
20
+ * console.log('Connected:', response.message);
21
+ * }
22
+ * ```
14
23
  */
15
24
  export declare function connectToDaemon(): Promise<HandshakeResponse>;
16
25
  /**
17
26
  * Request status information from the daemon.
27
+ * Returns daemon state, session metadata, and activity metrics.
28
+ *
29
+ * @returns Status response with daemon and session information
30
+ * @throws Error if connection fails or times out
18
31
  *
19
- * @returns Status response with daemon and session metadata
20
- * @throws Error if connection fails, daemon is not running, or request times out
32
+ * @example
33
+ * ```typescript
34
+ * const response = await getStatus();
35
+ * if (response.status === 'ok' && response.data) {
36
+ * console.log('Daemon PID:', response.data.daemonPid);
37
+ * console.log('Session active:', !!response.data.sessionPid);
38
+ * }
39
+ * ```
21
40
  */
22
41
  export declare function getStatus(): Promise<StatusResponse>;
23
42
  /**
24
43
  * Request preview data from the daemon.
44
+ * Returns snapshot of collected telemetry without stopping session.
45
+ *
46
+ * @returns Peek response with preview data
47
+ * @throws Error if connection fails, times out, or no active session
25
48
  *
26
- * @returns Peek response with session preview data
27
- * @throws Error if connection fails, daemon is not running, or request times out
49
+ * @example
50
+ * ```typescript
51
+ * const response = await getPeek();
52
+ * if (response.status === 'ok' && response.data) {
53
+ * console.log('Network requests:', response.data.preview.data.network?.length);
54
+ * console.log('Console messages:', response.data.preview.data.console?.length);
55
+ * }
56
+ * ```
28
57
  */
29
58
  export declare function getPeek(): Promise<PeekResponse>;
30
59
  /**
31
60
  * Request daemon to start a new browser session.
61
+ * Launches Chrome, establishes CDP connection, and begins telemetry collection.
32
62
  *
33
63
  * @param url - Target URL to navigate to
34
64
  * @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
- telemetry?: TelemetryType[];
42
- includeAll?: boolean;
43
- userDataDir?: string;
44
- maxBodySize?: number;
45
- headless?: boolean;
46
- chromeWsUrl?: string;
47
- }): Promise<StartSessionResponse>;
48
- /**
49
- * Request session stop from the daemon.
65
+ * @returns Start session response with worker and Chrome PIDs
66
+ * @throws Error if connection fails, session already running, or Chrome launch fails
50
67
  *
51
- * @returns Stop session response with success/error status
52
- * @throws Error if connection fails, daemon is not running, or request times out
68
+ * @example
69
+ * ```typescript
70
+ * const response = await startSession('http://localhost:3000', {
71
+ * timeout: 30,
72
+ * headless: true,
73
+ * maxBodySize: 10
74
+ * });
75
+ * if (response.status === 'ok' && response.data) {
76
+ * console.log('Session started, worker PID:', response.data.workerPid);
77
+ * }
78
+ * ```
53
79
  */
54
- export declare function stopSession(): Promise<StopSessionResponse>;
80
+ export declare function startSession(url: string, options?: SessionOptions): Promise<StartSessionResponse>;
55
81
  /**
56
- * Query DOM elements by CSS selector via the daemon's worker.
57
- *
58
- * @param selector - CSS selector to query
59
- * @returns DOM query response with matched elements
60
- * @throws Error if connection fails, daemon is not running, or request times out
61
- */
62
- export declare function queryDOM(selector: string): Promise<ClientResponse<'dom_query'>>;
63
- /**
64
- * Highlight DOM elements in the browser via the daemon's worker.
82
+ * Request session stop from the daemon.
83
+ * Stops telemetry collection, closes Chrome, and writes output file.
65
84
  *
66
- * @param options - Highlight options (selector, index, nodeId, color, etc.)
67
- * @returns DOM highlight response with highlighted node information
68
- * @throws Error if connection fails, daemon is not running, or request times out
69
- */
70
- export declare function highlightDOM(options: {
71
- selector?: string;
72
- index?: number;
73
- nodeId?: number;
74
- first?: boolean;
75
- nth?: number;
76
- color?: string;
77
- opacity?: number;
78
- }): Promise<ClientResponse<'dom_highlight'>>;
79
- /**
80
- * Get full HTML and attributes for DOM elements via the daemon's worker.
85
+ * @returns Stop session response with termination status
86
+ * @throws Error if connection fails, times out, or no active session
81
87
  *
82
- * @param options - Get options (selector, index, nodeId, all, nth)
83
- * @returns DOM get response with node information
84
- * @throws Error if connection fails, daemon is not running, or request times out
88
+ * @example
89
+ * ```typescript
90
+ * const response = await stopSession();
91
+ * if (response.status === 'ok') {
92
+ * console.log('Session stopped:', response.message);
93
+ * }
94
+ * ```
85
95
  */
86
- export declare function getDOM(options: {
87
- selector?: string;
88
- index?: number;
89
- nodeId?: number;
90
- all?: boolean;
91
- nth?: number;
92
- }): Promise<ClientResponse<'dom_get'>>;
96
+ export declare function stopSession(): Promise<StopSessionResponse>;
93
97
  /**
94
- * Capture page screenshot via the daemon's worker.
98
+ * Get details for a specific network request or console message.
99
+ * Retrieves full data (headers, body, stack trace) for a telemetry item.
95
100
  *
96
- * @param path - Output file path (absolute path)
97
- * @param options - Screenshot options (format, quality, fullPage)
98
- * @returns Screenshot response with metadata (path, dimensions, size)
99
- * @throws Error if connection fails, daemon is not running, or request times out
100
- */
101
- export declare function captureScreenshot(path: string, options?: {
102
- format?: 'png' | 'jpeg';
103
- quality?: number;
104
- fullPage?: boolean;
105
- }): Promise<ClientResponse<'dom_screenshot'>>;
106
- /**
107
- * Get details for a specific network request or console message via the daemon's worker.
101
+ * @param type - Type of item to retrieve ('network' or 'console')
102
+ * @param id - Unique identifier of the item
103
+ * @returns Response with full item details
104
+ * @throws Error if connection fails or item not found
108
105
  *
109
- * @param type - Type of item: 'network' or 'console'
110
- * @param id - Request ID for network, index for console
111
- * @returns Worker details response with full object (including bodies/args)
112
- * @throws Error if connection fails, daemon is not running, or request times out
106
+ * @example
107
+ * ```typescript
108
+ * const response = await getDetails('network', 'req-123');
109
+ * if (response.status === 'ok' && response.data) {
110
+ * console.log('Full request:', response.data.item);
111
+ * }
112
+ * ```
113
113
  */
114
114
  export declare function getDetails(type: 'network' | 'console', id: string): Promise<ClientResponse<'worker_details'>>;
115
115
  /**
116
116
  * Execute arbitrary CDP method via the daemon's worker.
117
+ * Forwards CDP commands to the worker's active CDP connection.
118
+ *
119
+ * @param method - CDP method name (e.g., 'Network.getCookies')
120
+ * @param params - Optional method parameters
121
+ * @returns Response with CDP method result
122
+ * @throws Error if connection fails or CDP method fails
117
123
  *
118
- * @param method - CDP method name (e.g., 'Network.getCookies', 'Runtime.evaluate')
119
- * @param params - CDP method parameters (optional)
120
- * @returns CDP call response with method result
121
- * @throws Error if connection fails, daemon is not running, or request times out
124
+ * @example
125
+ * ```typescript
126
+ * const response = await callCDP('Network.getCookies', {});
127
+ * if (response.status === 'ok' && response.data) {
128
+ * console.log('Cookies:', response.data.result);
129
+ * }
130
+ * ```
122
131
  */
123
132
  export declare function callCDP(method: string, params?: Record<string, unknown>): Promise<ClientResponse<'cdp_call'>>;
124
133
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAiB,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAEtF,OAAO,KAAK,EAEV,iBAAiB,EAEjB,YAAY,EACZ,cAAc,EAEd,oBAAoB,EAEpB,cAAc,EAEd,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAGzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAGrD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAqB/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAOhE;AA4BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAE3C;AAED;;;;;;;;;;;;;;;;GAgBG;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"}