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,46 @@
1
+ /**
2
+ * Chrome PID cache management.
3
+ *
4
+ * Persistent cache for Chrome PID that survives session cleanup.
5
+ * WHY: Enables aggressive Chrome cleanup even after session ends (for `bdg cleanup --chrome`).
6
+ */
7
+ /**
8
+ * Write Chrome PID to persistent cache.
9
+ *
10
+ * This cache survives session cleanup so aggressive cleanup can find Chrome later.
11
+ * WHY: Users may want to kill Chrome after session ends, especially for testing.
12
+ *
13
+ * @param chromePid - Chrome process ID to cache
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const chrome = await launchChrome();
18
+ * writeChromePid(chrome.pid);
19
+ * ```
20
+ */
21
+ export declare function writeChromePid(chromePid: number): void;
22
+ /**
23
+ * Read Chrome PID from persistent cache.
24
+ *
25
+ * Only returns the PID if the process is still alive.
26
+ * Automatically cleans up stale cache entries.
27
+ *
28
+ * @returns Chrome PID if cached and process is alive, null otherwise
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const chromePid = readChromePid();
33
+ * if (chromePid) {
34
+ * console.log(`Chrome is running with PID ${chromePid}`);
35
+ * killChromeProcess(chromePid, 'SIGKILL');
36
+ * }
37
+ * ```
38
+ */
39
+ export declare function readChromePid(): number | null;
40
+ /**
41
+ * Remove Chrome PID from persistent cache.
42
+ *
43
+ * Safe to call multiple times (idempotent).
44
+ */
45
+ export declare function clearChromePid(): void;
46
+ //# sourceMappingURL=chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/session/chrome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CA+B7C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAUrC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Chrome PID cache management.
3
+ *
4
+ * Persistent cache for Chrome PID that survives session cleanup.
5
+ * WHY: Enables aggressive Chrome cleanup even after session ends (for `bdg cleanup --chrome`).
6
+ */
7
+ import * as fs from 'fs';
8
+ import { AtomicFileWriter } from '../utils/atomicFile.js';
9
+ import { getSessionFilePath, ensureSessionDir } from './paths.js';
10
+ import { isProcessAlive } from './process.js';
11
+ /**
12
+ * Write Chrome PID to persistent cache.
13
+ *
14
+ * This cache survives session cleanup so aggressive cleanup can find Chrome later.
15
+ * WHY: Users may want to kill Chrome after session ends, especially for testing.
16
+ *
17
+ * @param chromePid - Chrome process ID to cache
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const chrome = await launchChrome();
22
+ * writeChromePid(chrome.pid);
23
+ * ```
24
+ */
25
+ export function writeChromePid(chromePid) {
26
+ ensureSessionDir();
27
+ const cachePath = getSessionFilePath('CHROME_PID');
28
+ AtomicFileWriter.writeSync(cachePath, chromePid.toString());
29
+ }
30
+ /**
31
+ * Read Chrome PID from persistent cache.
32
+ *
33
+ * Only returns the PID if the process is still alive.
34
+ * Automatically cleans up stale cache entries.
35
+ *
36
+ * @returns Chrome PID if cached and process is alive, null otherwise
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const chromePid = readChromePid();
41
+ * if (chromePid) {
42
+ * console.log(`Chrome is running with PID ${chromePid}`);
43
+ * killChromeProcess(chromePid, 'SIGKILL');
44
+ * }
45
+ * ```
46
+ */
47
+ export function readChromePid() {
48
+ const cachePath = getSessionFilePath('CHROME_PID');
49
+ if (!fs.existsSync(cachePath)) {
50
+ return null;
51
+ }
52
+ try {
53
+ const pidStr = fs.readFileSync(cachePath, 'utf-8').trim();
54
+ const pid = parseInt(pidStr, 10);
55
+ if (isNaN(pid)) {
56
+ return null;
57
+ }
58
+ // Only return the PID if the process is still alive
59
+ // This prevents trying to kill stale PIDs
60
+ if (!isProcessAlive(pid)) {
61
+ // Clean up stale cache
62
+ try {
63
+ fs.unlinkSync(cachePath);
64
+ }
65
+ catch {
66
+ // Ignore cleanup errors
67
+ }
68
+ return null;
69
+ }
70
+ return pid;
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ }
76
+ /**
77
+ * Remove Chrome PID from persistent cache.
78
+ *
79
+ * Safe to call multiple times (idempotent).
80
+ */
81
+ export function clearChromePid() {
82
+ const cachePath = getSessionFilePath('CHROME_PID');
83
+ try {
84
+ if (fs.existsSync(cachePath)) {
85
+ fs.unlinkSync(cachePath);
86
+ }
87
+ }
88
+ catch {
89
+ // Ignore errors during cleanup
90
+ }
91
+ }
92
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/session/chrome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,gBAAgB,EAAE,CAAC;IACnB,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACnD,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,0CAA0C;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,uBAAuB;YACvB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Session cleanup operations.
3
+ *
4
+ * Handles cleanup of session files (PID, metadata, lock, socket).
5
+ * WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
6
+ */
7
+ /**
8
+ * Cleanup stale session files if no active session is running.
9
+ *
10
+ * Uses lock-based serialization to safely clean up orphaned session artifacts
11
+ * (PID, metadata, socket) when the recorded process is dead or files are
12
+ * missing/corrupt.
13
+ *
14
+ * WHY: Prevents accumulation of stale session files from crashed processes.
15
+ *
16
+ * @returns True if cleanup was performed, false if an active session is running
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * if (cleanupStaleSession()) {
21
+ * console.log('Cleaned up stale session files');
22
+ * } else {
23
+ * console.log('Active session is running - no cleanup performed');
24
+ * }
25
+ * ```
26
+ */
27
+ export declare function cleanupStaleSession(): boolean;
28
+ /**
29
+ * Cleanup all session files after a session ends.
30
+ *
31
+ * Removes PID, lock, and metadata files.
32
+ * Safe to call multiple times (idempotent).
33
+ *
34
+ * WHY: Ensures clean slate for next session, prevents stale file accumulation.
35
+ */
36
+ export declare function cleanupSession(): void;
37
+ /**
38
+ * Cleanup stale daemon PID file if daemon process is dead.
39
+ *
40
+ * WHY: Prevents stale daemon PIDs from blocking new daemon starts (P0 Fix #2).
41
+ *
42
+ * @returns True if cleanup was performed, false if daemon is running
43
+ */
44
+ export declare function cleanupStaleDaemonPid(): boolean;
45
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsH7C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAYrC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA0D/C"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Session cleanup operations.
3
+ *
4
+ * Handles cleanup of session files (PID, metadata, lock, socket).
5
+ * WHY: Centralized cleanup logic ensures consistent cleanup across error paths and normal shutdown.
6
+ */
7
+ import * as fs from 'fs';
8
+ import { getErrorMessage } from '../utils/errors.js';
9
+ import { createLogger } from '../utils/logger.js';
10
+ import { acquireSessionLock, releaseSessionLock } from './lock.js';
11
+ import { getSessionFilePath, ensureSessionDir } from './paths.js';
12
+ import { readPid, cleanupPidFile } from './pid.js';
13
+ import { isProcessAlive } from './process.js';
14
+ const log = createLogger('cleanup');
15
+ /**
16
+ * Cleanup stale session files if no active session is running.
17
+ *
18
+ * Uses lock-based serialization to safely clean up orphaned session artifacts
19
+ * (PID, metadata, socket) when the recorded process is dead or files are
20
+ * missing/corrupt.
21
+ *
22
+ * WHY: Prevents accumulation of stale session files from crashed processes.
23
+ *
24
+ * @returns True if cleanup was performed, false if an active session is running
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * if (cleanupStaleSession()) {
29
+ * console.log('Cleaned up stale session files');
30
+ * } else {
31
+ * console.log('Active session is running - no cleanup performed');
32
+ * }
33
+ * ```
34
+ */
35
+ export function cleanupStaleSession() {
36
+ ensureSessionDir();
37
+ // Try to acquire the session lock
38
+ const lockAcquired = acquireSessionLock();
39
+ if (!lockAcquired) {
40
+ // Lock is held by another process - check if it's still alive
41
+ const lockPath = getSessionFilePath('LOCK');
42
+ try {
43
+ const lockPidStr = fs.readFileSync(lockPath, 'utf-8').trim();
44
+ const lockPid = parseInt(lockPidStr, 10);
45
+ if (!isNaN(lockPid) && isProcessAlive(lockPid)) {
46
+ // Active session is running - don't clean up
47
+ return false;
48
+ }
49
+ }
50
+ catch {
51
+ // Can't read lock file - will clean it up below
52
+ }
53
+ // Lock exists but process is dead - force acquire
54
+ try {
55
+ fs.unlinkSync(lockPath);
56
+ }
57
+ catch {
58
+ // Ignore if already deleted
59
+ }
60
+ // Try to acquire lock again
61
+ if (!acquireSessionLock()) {
62
+ // Still can't acquire - another process may have grabbed it
63
+ return false;
64
+ }
65
+ }
66
+ // We now hold the lock - check if session PID exists and is alive
67
+ try {
68
+ const sessionPid = readPid();
69
+ // If session PID exists and process is alive, release lock and return
70
+ if (sessionPid !== null && isProcessAlive(sessionPid)) {
71
+ releaseSessionLock();
72
+ return false;
73
+ }
74
+ // Check daemon PID if it exists
75
+ const daemonPidPath = getSessionFilePath('DAEMON_PID');
76
+ if (fs.existsSync(daemonPidPath)) {
77
+ try {
78
+ const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
79
+ const daemonPid = parseInt(daemonPidStr, 10);
80
+ // If daemon is still alive, release lock and return
81
+ if (!isNaN(daemonPid) && isProcessAlive(daemonPid)) {
82
+ releaseSessionLock();
83
+ return false;
84
+ }
85
+ }
86
+ catch {
87
+ // Can't read daemon PID - will clean it up below
88
+ }
89
+ }
90
+ // All processes are dead - clean up stale artifacts
91
+ log('Removing stale session files...');
92
+ // Remove session PID
93
+ cleanupPidFile();
94
+ // Remove metadata
95
+ const metaPath = getSessionFilePath('METADATA');
96
+ if (fs.existsSync(metaPath)) {
97
+ try {
98
+ fs.unlinkSync(metaPath);
99
+ log('Removed metadata file');
100
+ }
101
+ catch (error) {
102
+ log(`Failed to remove metadata: ${getErrorMessage(error)}`);
103
+ }
104
+ }
105
+ // Remove daemon PID
106
+ if (fs.existsSync(daemonPidPath)) {
107
+ try {
108
+ fs.unlinkSync(daemonPidPath);
109
+ log('Removed daemon PID file');
110
+ }
111
+ catch (error) {
112
+ log(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
113
+ }
114
+ }
115
+ // Remove daemon socket
116
+ const socketPath = getSessionFilePath('DAEMON_SOCKET');
117
+ if (fs.existsSync(socketPath)) {
118
+ try {
119
+ fs.unlinkSync(socketPath);
120
+ log('Removed daemon socket');
121
+ }
122
+ catch (error) {
123
+ log(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
124
+ }
125
+ }
126
+ // Remove daemon lock (P0 Fix #1)
127
+ const daemonLockPath = getSessionFilePath('DAEMON_LOCK');
128
+ if (fs.existsSync(daemonLockPath)) {
129
+ try {
130
+ fs.unlinkSync(daemonLockPath);
131
+ log('Removed daemon lock');
132
+ }
133
+ catch (error) {
134
+ log(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
135
+ }
136
+ }
137
+ log('Stale session cleanup complete');
138
+ return true;
139
+ }
140
+ finally {
141
+ // Always release the lock
142
+ releaseSessionLock();
143
+ }
144
+ }
145
+ /**
146
+ * Cleanup all session files after a session ends.
147
+ *
148
+ * Removes PID, lock, and metadata files.
149
+ * Safe to call multiple times (idempotent).
150
+ *
151
+ * WHY: Ensures clean slate for next session, prevents stale file accumulation.
152
+ */
153
+ export function cleanupSession() {
154
+ cleanupPidFile();
155
+ releaseSessionLock();
156
+ const metaPath = getSessionFilePath('METADATA');
157
+ if (fs.existsSync(metaPath)) {
158
+ try {
159
+ fs.unlinkSync(metaPath);
160
+ }
161
+ catch {
162
+ // Ignore errors
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Cleanup stale daemon PID file if daemon process is dead.
168
+ *
169
+ * WHY: Prevents stale daemon PIDs from blocking new daemon starts (P0 Fix #2).
170
+ *
171
+ * @returns True if cleanup was performed, false if daemon is running
172
+ */
173
+ export function cleanupStaleDaemonPid() {
174
+ const daemonPidPath = getSessionFilePath('DAEMON_PID');
175
+ if (!fs.existsSync(daemonPidPath)) {
176
+ return false;
177
+ }
178
+ try {
179
+ const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
180
+ const daemonPid = parseInt(daemonPidStr, 10);
181
+ // If daemon is still alive, don't clean up
182
+ if (!isNaN(daemonPid) && isProcessAlive(daemonPid)) {
183
+ return false;
184
+ }
185
+ // Daemon is dead - clean up stale PID and lock files
186
+ log(`Daemon not running (stale PID ${daemonPid}), cleaning up...`);
187
+ // Remove daemon PID
188
+ try {
189
+ fs.unlinkSync(daemonPidPath);
190
+ log('Removed stale daemon PID file');
191
+ }
192
+ catch (error) {
193
+ log(`Failed to remove daemon PID: ${getErrorMessage(error)}`);
194
+ }
195
+ // Remove daemon socket
196
+ const socketPath = getSessionFilePath('DAEMON_SOCKET');
197
+ if (fs.existsSync(socketPath)) {
198
+ try {
199
+ fs.unlinkSync(socketPath);
200
+ log('Removed stale daemon socket');
201
+ }
202
+ catch (error) {
203
+ log(`Failed to remove daemon socket: ${getErrorMessage(error)}`);
204
+ }
205
+ }
206
+ // Remove daemon lock
207
+ const lockPath = getSessionFilePath('DAEMON_LOCK');
208
+ if (fs.existsSync(lockPath)) {
209
+ try {
210
+ fs.unlinkSync(lockPath);
211
+ log('Removed stale daemon lock');
212
+ }
213
+ catch (error) {
214
+ log(`Failed to remove daemon lock: ${getErrorMessage(error)}`);
215
+ }
216
+ }
217
+ return true;
218
+ }
219
+ catch {
220
+ // Can't read daemon PID - will clean it up
221
+ try {
222
+ fs.unlinkSync(daemonPidPath);
223
+ return true;
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ }
230
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/session/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB;IACjC,gBAAgB,EAAE,CAAC;IAEnB,kCAAkC;IAClC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,6CAA6C;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,4DAA4D;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;QAE7B,sEAAsE;QACtE,IAAI,UAAU,KAAK,IAAI,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,kBAAkB,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gCAAgC;QAChC,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAE7C,oDAAoD;gBACpD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnD,kBAAkB,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iDAAiD;YACnD,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAEvC,qBAAqB;QACrB,cAAc,EAAE,CAAC;QAEjB,kBAAkB;QAClB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxB,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,8BAA8B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC7B,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,gCAAgC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC1B,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,mCAAmC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,cAAc,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC9B,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,iCAAiC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,0BAA0B;QAC1B,kBAAkB,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;IAErB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAE7C,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qDAAqD;QACrD,GAAG,CAAC,iCAAiC,SAAS,mBAAmB,CAAC,CAAC;QAEnE,oBAAoB;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7B,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,gCAAgC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC1B,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,mCAAmC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxB,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,iCAAiC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;QAC3C,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Session management module - centralized exports.
3
+ *
4
+ * Re-exports all session-related utilities from focused submodules.
5
+ * WHY: Single import point maintains backwards compatibility while improving internal structure.
6
+ */
7
+ export { getSessionDir, getSessionFilePath, getWorkerSocketPath, ensureSessionDir, type SessionFileType, } from './paths.js';
8
+ export { isProcessAlive, killChromeProcess } from './process.js';
9
+ export { acquireSessionLock, releaseSessionLock } from './lock.js';
10
+ export { writePid, readPid, cleanupPidFile } from './pid.js';
11
+ export { writeSessionMetadata, readSessionMetadata, type SessionMetadata } from './metadata.js';
12
+ export { writeChromePid, readChromePid, clearChromePid } from './chrome.js';
13
+ export { writeSessionOutput } from './output.js';
14
+ export { cleanupSession, cleanupStaleSession } from './cleanup.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG7D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Session management module - centralized exports.
3
+ *
4
+ * Re-exports all session-related utilities from focused submodules.
5
+ * WHY: Single import point maintains backwards compatibility while improving internal structure.
6
+ */
7
+ // Path management
8
+ export { getSessionDir, getSessionFilePath, getWorkerSocketPath, ensureSessionDir, } from './paths.js';
9
+ // Process utilities
10
+ export { isProcessAlive, killChromeProcess } from './process.js';
11
+ // Lock management
12
+ export { acquireSessionLock, releaseSessionLock } from './lock.js';
13
+ // PID management
14
+ export { writePid, readPid, cleanupPidFile } from './pid.js';
15
+ // Metadata management
16
+ export { writeSessionMetadata, readSessionMetadata } from './metadata.js';
17
+ // Chrome PID cache
18
+ export { writeChromePid, readChromePid, clearChromePid } from './chrome.js';
19
+ // Output file I/O
20
+ export { writeSessionOutput } from './output.js';
21
+ // Cleanup operations
22
+ export { cleanupSession, cleanupStaleSession } from './cleanup.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kBAAkB;AAClB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjE,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAwB,MAAM,eAAe,CAAC;AAEhG,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Session lock management for preventing concurrent sessions.
3
+ *
4
+ * Uses exclusive file creation (wx flag) with PID tracking for atomic lock acquisition.
5
+ * WHY: Prevents race conditions when multiple bdg processes try to start simultaneously.
6
+ */
7
+ /**
8
+ * Acquire session lock atomically.
9
+ *
10
+ * Uses exclusive file creation (wx flag) to ensure only one session can run.
11
+ * If lock file exists but process is dead, automatically removes stale lock and retries.
12
+ *
13
+ * @returns True if lock was acquired, false if another session is running
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * if (!acquireSessionLock()) {
18
+ * console.error('Another session is already running');
19
+ * process.exit(1);
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function acquireSessionLock(): boolean;
24
+ /**
25
+ * Release session lock.
26
+ *
27
+ * Removes the lock file to allow other sessions to start.
28
+ * Safe to call multiple times (idempotent).
29
+ */
30
+ export declare function releaseSessionLock(): void;
31
+ /**
32
+ * Acquire daemon lock atomically.
33
+ *
34
+ * Uses exclusive file creation (wx flag) to ensure only one daemon can start.
35
+ * If lock file exists but process is dead, automatically removes stale lock and retries.
36
+ *
37
+ * WHY: Prevents race condition where two concurrent bdg commands spawn 2 daemons.
38
+ *
39
+ * @returns True if lock was acquired, false if another daemon startup is in progress
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * if (!acquireDaemonLock()) {
44
+ * console.error('Another daemon is starting up');
45
+ * process.exit(1);
46
+ * }
47
+ * ```
48
+ */
49
+ export declare function acquireDaemonLock(): boolean;
50
+ /**
51
+ * Release daemon lock.
52
+ *
53
+ * Removes the daemon lock file to allow other daemon startups.
54
+ * Safe to call multiple times (idempotent).
55
+ */
56
+ export declare function releaseDaemonLock(): void;
57
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/session/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAmC5C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAUzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAmC3C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}