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,67 @@
1
+ /**
2
+ * FakeClock - Deterministic timer control for tests
3
+ *
4
+ * Simulates setTimeout/setInterval and queueMicrotask to enable
5
+ * deterministic testing of async code with timeouts.
6
+ *
7
+ * Key features:
8
+ * - Separate macrotask (timers) and microtask (promise callbacks) queues
9
+ * - Loop-based flush() drains microtasks until completely empty
10
+ * - tick() advances timers without draining microtasks
11
+ * - tickAsync() advances timers AND drains microtasks (for timeout tests)
12
+ */
13
+ export declare class FakeClock {
14
+ private currentTime;
15
+ private nextTimerId;
16
+ private timerTasks;
17
+ private microtaskQueue;
18
+ /**
19
+ * Get current fake time in milliseconds
20
+ */
21
+ now(): number;
22
+ /**
23
+ * Schedule a one-time timer (setTimeout)
24
+ */
25
+ setTimeout(callback: () => void, delay: number): NodeJS.Timeout;
26
+ /**
27
+ * Schedule a repeating timer (setInterval)
28
+ */
29
+ setInterval(callback: () => void, interval: number): NodeJS.Timeout;
30
+ /**
31
+ * Cancel a timer (clearTimeout/clearInterval)
32
+ */
33
+ clearTimer(id: NodeJS.Timeout): void;
34
+ /**
35
+ * Queue a microtask (queueMicrotask, promise callbacks)
36
+ */
37
+ queueMicrotask(callback: () => void): void;
38
+ /**
39
+ * Advance time and execute all timers that should fire
40
+ * Does NOT drain microtasks - use flush() or tickAsync() for that
41
+ */
42
+ tick(ms: number): void;
43
+ /**
44
+ * Drain the microtask queue completely
45
+ * CRITICAL: Loops until queue is empty to handle cascading microtasks
46
+ * (e.g., rejection handler that schedules another microtask)
47
+ */
48
+ flush(): void;
49
+ /**
50
+ * Advance time AND drain all microtasks
51
+ * Use this for timeout tests where rejections propagate via microtasks
52
+ */
53
+ tickAsync(ms: number): Promise<void>;
54
+ /**
55
+ * Get number of pending timers
56
+ */
57
+ getPendingTimers(): number;
58
+ /**
59
+ * Get number of queued microtasks
60
+ */
61
+ getPendingMicrotasks(): number;
62
+ /**
63
+ * Reset clock to initial state
64
+ */
65
+ reset(): void;
66
+ }
67
+ //# sourceMappingURL=FakeClock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeClock.d.ts","sourceRoot":"","sources":["../../src/__testutils__/FakeClock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,cAAc,CAAyB;IAE/C;;OAEG;IACH,GAAG,IAAI,MAAM;IAIb;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAW/D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO;IAYnE;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAuBtB;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAUb;;;OAGG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * FakeClock - Deterministic timer control for tests
3
+ *
4
+ * Simulates setTimeout/setInterval and queueMicrotask to enable
5
+ * deterministic testing of async code with timeouts.
6
+ *
7
+ * Key features:
8
+ * - Separate macrotask (timers) and microtask (promise callbacks) queues
9
+ * - Loop-based flush() drains microtasks until completely empty
10
+ * - tick() advances timers without draining microtasks
11
+ * - tickAsync() advances timers AND drains microtasks (for timeout tests)
12
+ */
13
+ export class FakeClock {
14
+ currentTime = 0;
15
+ nextTimerId = 1;
16
+ timerTasks = new Map();
17
+ microtaskQueue = [];
18
+ /**
19
+ * Get current fake time in milliseconds
20
+ */
21
+ now() {
22
+ return this.currentTime;
23
+ }
24
+ /**
25
+ * Schedule a one-time timer (setTimeout)
26
+ */
27
+ setTimeout(callback, delay) {
28
+ const id = this.nextTimerId++;
29
+ this.timerTasks.set(id, {
30
+ id,
31
+ callback,
32
+ triggerAt: this.currentTime + delay,
33
+ type: 'timeout',
34
+ });
35
+ return id;
36
+ }
37
+ /**
38
+ * Schedule a repeating timer (setInterval)
39
+ */
40
+ setInterval(callback, interval) {
41
+ const id = this.nextTimerId++;
42
+ this.timerTasks.set(id, {
43
+ id,
44
+ callback,
45
+ triggerAt: this.currentTime + interval,
46
+ interval,
47
+ type: 'interval',
48
+ });
49
+ return id;
50
+ }
51
+ /**
52
+ * Cancel a timer (clearTimeout/clearInterval)
53
+ */
54
+ clearTimer(id) {
55
+ this.timerTasks.delete(id);
56
+ }
57
+ /**
58
+ * Queue a microtask (queueMicrotask, promise callbacks)
59
+ */
60
+ queueMicrotask(callback) {
61
+ this.microtaskQueue.push(callback);
62
+ }
63
+ /**
64
+ * Advance time and execute all timers that should fire
65
+ * Does NOT drain microtasks - use flush() or tickAsync() for that
66
+ */
67
+ tick(ms) {
68
+ this.currentTime += ms;
69
+ // Find and execute all timers that should fire
70
+ const tasksToFire = Array.from(this.timerTasks.values())
71
+ .filter((task) => task.triggerAt <= this.currentTime)
72
+ .sort((a, b) => a.triggerAt - b.triggerAt);
73
+ for (const task of tasksToFire) {
74
+ // Remove one-time timers
75
+ if (task.type === 'timeout') {
76
+ this.timerTasks.delete(task.id);
77
+ }
78
+ // Reschedule intervals
79
+ else if (task.interval !== undefined) {
80
+ task.triggerAt = this.currentTime + task.interval;
81
+ }
82
+ // Execute callback
83
+ task.callback();
84
+ }
85
+ }
86
+ /**
87
+ * Drain the microtask queue completely
88
+ * CRITICAL: Loops until queue is empty to handle cascading microtasks
89
+ * (e.g., rejection handler that schedules another microtask)
90
+ */
91
+ flush() {
92
+ // Loop-based drainage handles cascading microtasks
93
+ while (this.microtaskQueue.length > 0) {
94
+ const task = this.microtaskQueue.shift();
95
+ if (task) {
96
+ task(); // May enqueue more microtasks - loop continues
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Advance time AND drain all microtasks
102
+ * Use this for timeout tests where rejections propagate via microtasks
103
+ */
104
+ async tickAsync(ms) {
105
+ this.tick(ms);
106
+ this.flush();
107
+ // Allow Node's event loop to process any actual promises
108
+ await Promise.resolve();
109
+ }
110
+ /**
111
+ * Get number of pending timers
112
+ */
113
+ getPendingTimers() {
114
+ return this.timerTasks.size;
115
+ }
116
+ /**
117
+ * Get number of queued microtasks
118
+ */
119
+ getPendingMicrotasks() {
120
+ return this.microtaskQueue.length;
121
+ }
122
+ /**
123
+ * Reset clock to initial state
124
+ */
125
+ reset() {
126
+ this.currentTime = 0;
127
+ this.nextTimerId = 1;
128
+ this.timerTasks.clear();
129
+ this.microtaskQueue = [];
130
+ }
131
+ }
132
+ //# sourceMappingURL=FakeClock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeClock.js","sourceRoot":"","sources":["../../src/__testutils__/FakeClock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * FakeWebSocket - Complete WebSocket boundary fake for testing
3
+ *
4
+ * Mimics the `ws` library API to enable contract testing of CDPConnection
5
+ * without network I/O.
6
+ *
7
+ * Key features:
8
+ * - Full ws API compatibility (readyState, ping, pong, send, close, terminate)
9
+ * - Event emitters (open, message, close, error, ping, pong)
10
+ * - Test control methods (simulate*) for driving state from tests
11
+ * - Defensive copies in verification methods (getSentMessages) prevent mutation
12
+ */
13
+ import { EventEmitter } from 'node:events';
14
+ export declare const CONNECTING = 0;
15
+ export declare const OPEN = 1;
16
+ export declare const CLOSING = 2;
17
+ export declare const CLOSED = 3;
18
+ type ReadyState = typeof CONNECTING | typeof OPEN | typeof CLOSING | typeof CLOSED;
19
+ export declare class FakeWebSocket extends EventEmitter {
20
+ readyState: ReadyState;
21
+ private sentMessages;
22
+ private pingSentCount;
23
+ private pongSentCount;
24
+ private closeCode;
25
+ private closeReason;
26
+ static readonly CONNECTING = 0;
27
+ static readonly OPEN = 1;
28
+ static readonly CLOSING = 2;
29
+ static readonly CLOSED = 3;
30
+ constructor();
31
+ /**
32
+ * ws API - Send a message
33
+ * Throws if connection is not OPEN
34
+ */
35
+ send(data: string, callback?: (err?: Error) => void): void;
36
+ /**
37
+ * ws API - Send a ping frame
38
+ */
39
+ ping(callback?: (err?: Error) => void): void;
40
+ /**
41
+ * ws API - Send a pong frame (usually in response to ping)
42
+ */
43
+ pong(callback?: (err?: Error) => void): void;
44
+ /**
45
+ * ws API - Close connection gracefully
46
+ * Transitions: OPEN \> CLOSING \> CLOSED
47
+ */
48
+ close(code?: number, reason?: string): void;
49
+ /**
50
+ * ws API - Forceful close without handshake
51
+ * Immediately transitions to CLOSED
52
+ */
53
+ terminate(): void;
54
+ /**
55
+ * TEST CONTROL - Simulate connection open
56
+ * Transitions: CONNECTING \> OPEN, emits 'open'
57
+ */
58
+ simulateOpen(): void;
59
+ /**
60
+ * TEST CONTROL - Simulate receiving a message
61
+ * Only valid in OPEN state
62
+ */
63
+ simulateMessage(data: string | Buffer): void;
64
+ /**
65
+ * TEST CONTROL - Simulate connection close
66
+ * Transitions to CLOSED and emits 'close'
67
+ */
68
+ simulateClose(code: number, reason: string): void;
69
+ /**
70
+ * TEST CONTROL - Simulate connection error
71
+ * Emits 'error' event
72
+ */
73
+ simulateError(error: Error): void;
74
+ /**
75
+ * TEST CONTROL - Simulate receiving a pong frame
76
+ * Emits 'pong' event (for keepalive tests)
77
+ */
78
+ simulatePong(data?: Buffer): void;
79
+ /**
80
+ * VERIFICATION - Get sent messages (defensive copy)
81
+ * Returns shallow copy to prevent accidental mutation between assertions
82
+ */
83
+ getSentMessages(): string[];
84
+ /**
85
+ * VERIFICATION - Get number of pings sent
86
+ */
87
+ getPingSent(): number;
88
+ /**
89
+ * VERIFICATION - Get number of pongs sent
90
+ */
91
+ getPongSent(): number;
92
+ /**
93
+ * VERIFICATION - Get close code (if closed)
94
+ */
95
+ getCloseCode(): number | null;
96
+ /**
97
+ * VERIFICATION - Get close reason (if closed)
98
+ */
99
+ getCloseReason(): string | null;
100
+ /**
101
+ * TEST CONTROL - Reset to initial state
102
+ */
103
+ reset(): void;
104
+ }
105
+ export {};
106
+ //# sourceMappingURL=FakeWebSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeWebSocket.d.ts","sourceRoot":"","sources":["../../src/__testutils__/FakeWebSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,IAAI,IAAI,CAAC;AACtB,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,KAAK,UAAU,GAAG,OAAO,UAAU,GAAG,OAAO,IAAI,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM,CAAC;AAEnF,qBAAa,aAAc,SAAQ,YAAY;IAEtC,UAAU,EAAE,UAAU,CAAc;IAG3C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAG1C,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAc;IACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAQ;IAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAW;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAU;;IAMhC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAiB1D;;OAEG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAgB5C;;OAEG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAe5C;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAe3C;;;OAGG;IACH,SAAS,IAAI,IAAI;IAWjB;;;OAGG;IACH,YAAY,IAAI,IAAI;IASpB;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ5C;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWjD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjC;;;OAGG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjC;;;OAGG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;CASd"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * FakeWebSocket - Complete WebSocket boundary fake for testing
3
+ *
4
+ * Mimics the `ws` library API to enable contract testing of CDPConnection
5
+ * without network I/O.
6
+ *
7
+ * Key features:
8
+ * - Full ws API compatibility (readyState, ping, pong, send, close, terminate)
9
+ * - Event emitters (open, message, close, error, ping, pong)
10
+ * - Test control methods (simulate*) for driving state from tests
11
+ * - Defensive copies in verification methods (getSentMessages) prevent mutation
12
+ */
13
+ import { EventEmitter } from 'node:events';
14
+ // ws library readyState constants
15
+ export const CONNECTING = 0;
16
+ export const OPEN = 1;
17
+ export const CLOSING = 2;
18
+ export const CLOSED = 3;
19
+ export class FakeWebSocket extends EventEmitter {
20
+ // ws API - readyState property
21
+ readyState = CONNECTING;
22
+ // Internal state
23
+ sentMessages = [];
24
+ pingSentCount = 0;
25
+ pongSentCount = 0;
26
+ closeCode = null;
27
+ closeReason = null;
28
+ // ws API constants
29
+ static CONNECTING = CONNECTING;
30
+ static OPEN = OPEN;
31
+ static CLOSING = CLOSING;
32
+ static CLOSED = CLOSED;
33
+ constructor() {
34
+ super();
35
+ }
36
+ /**
37
+ * ws API - Send a message
38
+ * Throws if connection is not OPEN
39
+ */
40
+ send(data, callback) {
41
+ if (this.readyState !== OPEN) {
42
+ const err = new Error('WebSocket is not open: readyState ' + this.readyState);
43
+ if (callback) {
44
+ callback(err);
45
+ }
46
+ else {
47
+ throw err;
48
+ }
49
+ return;
50
+ }
51
+ this.sentMessages.push(data);
52
+ if (callback) {
53
+ callback();
54
+ }
55
+ }
56
+ /**
57
+ * ws API - Send a ping frame
58
+ */
59
+ ping(callback) {
60
+ if (this.readyState !== OPEN) {
61
+ const err = new Error('WebSocket is not open');
62
+ if (callback) {
63
+ callback(err);
64
+ }
65
+ return;
66
+ }
67
+ this.pingSentCount++;
68
+ this.emit('ping');
69
+ if (callback) {
70
+ callback();
71
+ }
72
+ }
73
+ /**
74
+ * ws API - Send a pong frame (usually in response to ping)
75
+ */
76
+ pong(callback) {
77
+ if (this.readyState !== OPEN) {
78
+ const err = new Error('WebSocket is not open');
79
+ if (callback) {
80
+ callback(err);
81
+ }
82
+ return;
83
+ }
84
+ this.pongSentCount++;
85
+ if (callback) {
86
+ callback();
87
+ }
88
+ }
89
+ /**
90
+ * ws API - Close connection gracefully
91
+ * Transitions: OPEN \> CLOSING \> CLOSED
92
+ */
93
+ close(code, reason) {
94
+ if (this.readyState === CLOSED || this.readyState === CLOSING) {
95
+ return;
96
+ }
97
+ this.readyState = CLOSING;
98
+ this.closeCode = code ?? null;
99
+ this.closeReason = reason ?? null;
100
+ // Immediately transition to CLOSED and emit close event
101
+ // In real ws, there's a handshake, but for tests we can be immediate
102
+ this.readyState = CLOSED;
103
+ this.emit('close', code ?? 1000, reason ?? '');
104
+ }
105
+ /**
106
+ * ws API - Forceful close without handshake
107
+ * Immediately transitions to CLOSED
108
+ */
109
+ terminate() {
110
+ if (this.readyState === CLOSED) {
111
+ return;
112
+ }
113
+ this.readyState = CLOSED;
114
+ this.closeCode = 1006;
115
+ this.closeReason = 'Connection terminated';
116
+ this.emit('close', 1006, 'Connection terminated');
117
+ }
118
+ /**
119
+ * TEST CONTROL - Simulate connection open
120
+ * Transitions: CONNECTING \> OPEN, emits 'open'
121
+ */
122
+ simulateOpen() {
123
+ if (this.readyState !== CONNECTING) {
124
+ throw new Error('Can only open from CONNECTING state');
125
+ }
126
+ this.readyState = OPEN;
127
+ this.emit('open');
128
+ }
129
+ /**
130
+ * TEST CONTROL - Simulate receiving a message
131
+ * Only valid in OPEN state
132
+ */
133
+ simulateMessage(data) {
134
+ if (this.readyState !== OPEN) {
135
+ throw new Error('Cannot receive message when not OPEN');
136
+ }
137
+ this.emit('message', data);
138
+ }
139
+ /**
140
+ * TEST CONTROL - Simulate connection close
141
+ * Transitions to CLOSED and emits 'close'
142
+ */
143
+ simulateClose(code, reason) {
144
+ if (this.readyState === CLOSED) {
145
+ return;
146
+ }
147
+ this.readyState = CLOSED;
148
+ this.closeCode = code;
149
+ this.closeReason = reason;
150
+ this.emit('close', code, reason);
151
+ }
152
+ /**
153
+ * TEST CONTROL - Simulate connection error
154
+ * Emits 'error' event
155
+ */
156
+ simulateError(error) {
157
+ this.emit('error', error);
158
+ }
159
+ /**
160
+ * TEST CONTROL - Simulate receiving a pong frame
161
+ * Emits 'pong' event (for keepalive tests)
162
+ */
163
+ simulatePong(data) {
164
+ if (this.readyState !== OPEN) {
165
+ throw new Error('Cannot receive pong when not OPEN');
166
+ }
167
+ this.emit('pong', data);
168
+ }
169
+ /**
170
+ * VERIFICATION - Get sent messages (defensive copy)
171
+ * Returns shallow copy to prevent accidental mutation between assertions
172
+ */
173
+ getSentMessages() {
174
+ return [...this.sentMessages];
175
+ }
176
+ /**
177
+ * VERIFICATION - Get number of pings sent
178
+ */
179
+ getPingSent() {
180
+ return this.pingSentCount;
181
+ }
182
+ /**
183
+ * VERIFICATION - Get number of pongs sent
184
+ */
185
+ getPongSent() {
186
+ return this.pongSentCount;
187
+ }
188
+ /**
189
+ * VERIFICATION - Get close code (if closed)
190
+ */
191
+ getCloseCode() {
192
+ return this.closeCode;
193
+ }
194
+ /**
195
+ * VERIFICATION - Get close reason (if closed)
196
+ */
197
+ getCloseReason() {
198
+ return this.closeReason;
199
+ }
200
+ /**
201
+ * TEST CONTROL - Reset to initial state
202
+ */
203
+ reset() {
204
+ this.readyState = CONNECTING;
205
+ this.sentMessages = [];
206
+ this.pingSentCount = 0;
207
+ this.pongSentCount = 0;
208
+ this.closeCode = null;
209
+ this.closeReason = null;
210
+ this.removeAllListeners();
211
+ }
212
+ }
213
+ //# sourceMappingURL=FakeWebSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeWebSocket.js","sourceRoot":"","sources":["../../src/__testutils__/FakeWebSocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * assertions - Custom assertion helpers for contract tests
3
+ *
4
+ * Provides ergonomic assertions for common test patterns.
5
+ */
6
+ import type { CDPMessage } from '@/types.js';
7
+ /**
8
+ * Poll a condition until it becomes true or timeout
9
+ * Useful for eventually-consistent assertions
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * await assertEventually(() => ws.getSentMessages().length > 0, 1000);
14
+ * ```
15
+ */
16
+ export declare function assertEventually(fn: () => boolean, timeoutMs: number, message?: string): Promise<void>;
17
+ /**
18
+ * Assert deep equality for CDP messages
19
+ * Handles partial matching for convenience
20
+ */
21
+ export declare function assertCDPMessage(actual: CDPMessage, expected: Partial<CDPMessage>): void;
22
+ /**
23
+ * Assert that async function throws with specific pattern
24
+ * @example
25
+ * ```ts
26
+ * await assertThrowsAsync(
27
+ * () => cdp.send('Invalid.method'),
28
+ * /timeout/
29
+ * );
30
+ * ```
31
+ */
32
+ export declare function assertThrowsAsync(fn: () => Promise<unknown>, pattern: RegExp | string, message?: string): Promise<void>;
33
+ //# sourceMappingURL=assertions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/__testutils__/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAKxF;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * assertions - Custom assertion helpers for contract tests
3
+ *
4
+ * Provides ergonomic assertions for common test patterns.
5
+ */
6
+ import assert from 'node:assert/strict';
7
+ /**
8
+ * Poll a condition until it becomes true or timeout
9
+ * Useful for eventually-consistent assertions
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * await assertEventually(() => ws.getSentMessages().length > 0, 1000);
14
+ * ```
15
+ */
16
+ export async function assertEventually(fn, timeoutMs, message) {
17
+ const start = Date.now();
18
+ while (Date.now() - start < timeoutMs) {
19
+ if (fn()) {
20
+ return;
21
+ }
22
+ await new Promise((resolve) => setTimeout(resolve, 10));
23
+ }
24
+ throw new Error(message ?? `Condition not met within ${timeoutMs}ms`);
25
+ }
26
+ /**
27
+ * Assert deep equality for CDP messages
28
+ * Handles partial matching for convenience
29
+ */
30
+ export function assertCDPMessage(actual, expected) {
31
+ const actualRecord = actual;
32
+ for (const [key, value] of Object.entries(expected)) {
33
+ assert.deepEqual(actualRecord[key], value, `CDP message field '${key}' mismatch`);
34
+ }
35
+ }
36
+ /**
37
+ * Assert that async function throws with specific pattern
38
+ * @example
39
+ * ```ts
40
+ * await assertThrowsAsync(
41
+ * () => cdp.send('Invalid.method'),
42
+ * /timeout/
43
+ * );
44
+ * ```
45
+ */
46
+ export async function assertThrowsAsync(fn, pattern, message) {
47
+ try {
48
+ await fn();
49
+ throw new Error(message ?? `Expected function to throw matching ${pattern}`);
50
+ }
51
+ catch (err) {
52
+ const errorMessage = err instanceof Error ? err.message : String(err);
53
+ const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
54
+ assert.match(errorMessage, regex, message);
55
+ }
56
+ }
57
+ //# sourceMappingURL=assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/__testutils__/assertions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAIxC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAiB,EACjB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,EAAE,EAAE,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,4BAA4B,SAAS,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,QAA6B;IAChF,MAAM,YAAY,GAAG,MAA4C,CAAC;IAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAA0B,EAC1B,OAAwB,EACxB,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,uCAAuC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Test utilities - Re-export all test helpers
3
+ *
4
+ * Single import point for all test utilities:
5
+ * ```ts
6
+ * import { FakeClock, FakeWebSocket, useFakeClock, ... } from '../__testutils__/index.js';
7
+ * ```
8
+ */
9
+ export { FakeClock } from './FakeClock.js';
10
+ export { FakeWebSocket, CONNECTING, OPEN, CLOSING, CLOSED } from './FakeWebSocket.js';
11
+ export { useFakeClock, type ClockHelper } from './testClock.js';
12
+ export { mockProcessAlive, restoreProcessAlive, isProcessMocked } from './testProcess.js';
13
+ export { assertEventually, assertCDPMessage, assertThrowsAsync } from './assertions.js';
14
+ export { createMockCDPMessage, createMockWebSocketUrl } from './testFixtures.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/__testutils__/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Test utilities - Re-export all test helpers
3
+ *
4
+ * Single import point for all test utilities:
5
+ * ```ts
6
+ * import { FakeClock, FakeWebSocket, useFakeClock, ... } from '../__testutils__/index.js';
7
+ * ```
8
+ */
9
+ export { FakeClock } from './FakeClock.js';
10
+ export { FakeWebSocket, CONNECTING, OPEN, CLOSING, CLOSED } from './FakeWebSocket.js';
11
+ export { useFakeClock } from './testClock.js';
12
+ export { mockProcessAlive, restoreProcessAlive, isProcessMocked } from './testProcess.js';
13
+ export { assertEventually, assertCDPMessage, assertThrowsAsync } from './assertions.js';
14
+ export { createMockCDPMessage, createMockWebSocketUrl } from './testFixtures.js';
15
+ //# sourceMappingURL=index.js.map