browser-debugger-cli 0.3.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/README.md +182 -125
  2. package/dist/__tests__/smoke/error-handling.smoke.test.d.ts +8 -0
  3. package/dist/__tests__/smoke/error-handling.smoke.test.d.ts.map +1 -0
  4. package/dist/__tests__/smoke/error-handling.smoke.test.js +95 -0
  5. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -0
  6. package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts +8 -0
  7. package/dist/__tests__/smoke/session-lifecycle.smoke.test.d.ts.map +1 -0
  8. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +109 -0
  9. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -0
  10. package/dist/__testutils__/commandRunner.d.ts +45 -0
  11. package/dist/__testutils__/commandRunner.d.ts.map +1 -0
  12. package/dist/__testutils__/commandRunner.js +108 -0
  13. package/dist/__testutils__/commandRunner.js.map +1 -0
  14. package/dist/__testutils__/daemonHelpers.d.ts +81 -0
  15. package/dist/__testutils__/daemonHelpers.d.ts.map +1 -0
  16. package/dist/__testutils__/daemonHelpers.js +206 -0
  17. package/dist/__testutils__/daemonHelpers.js.map +1 -0
  18. package/dist/__testutils__/index.d.ts +1 -0
  19. package/dist/__testutils__/index.d.ts.map +1 -1
  20. package/dist/__testutils__/index.js +1 -0
  21. package/dist/__testutils__/index.js.map +1 -1
  22. package/dist/__testutils__/testCleanup.d.ts +45 -0
  23. package/dist/__testutils__/testCleanup.d.ts.map +1 -0
  24. package/dist/__testutils__/testCleanup.js +87 -0
  25. package/dist/__testutils__/testCleanup.js.map +1 -0
  26. package/dist/__testutils__/testHome.d.ts +26 -0
  27. package/dist/__testutils__/testHome.d.ts.map +1 -0
  28. package/dist/__testutils__/testHome.js +57 -0
  29. package/dist/__testutils__/testHome.js.map +1 -0
  30. package/dist/__testutils__/testProcess.d.ts.map +1 -1
  31. package/dist/__testutils__/testProcess.js +11 -3
  32. package/dist/__testutils__/testProcess.js.map +1 -1
  33. package/dist/cdp/protocol.d.ts +121 -0
  34. package/dist/cdp/protocol.d.ts.map +1 -0
  35. package/dist/cdp/protocol.js +215 -0
  36. package/dist/cdp/protocol.js.map +1 -0
  37. package/dist/cdp/schema.d.ts +159 -0
  38. package/dist/cdp/schema.d.ts.map +1 -0
  39. package/dist/cdp/schema.js +256 -0
  40. package/dist/cdp/schema.js.map +1 -0
  41. package/dist/cdp/types.d.ts +139 -0
  42. package/dist/cdp/types.d.ts.map +1 -0
  43. package/dist/cdp/types.js +7 -0
  44. package/dist/cdp/types.js.map +1 -0
  45. package/dist/commands/cdp.d.ts +10 -1
  46. package/dist/commands/cdp.d.ts.map +1 -1
  47. package/dist/commands/cdp.js +363 -26
  48. package/dist/commands/cdp.js.map +1 -1
  49. package/dist/commands/cleanup.d.ts.map +1 -1
  50. package/dist/commands/cleanup.js +15 -18
  51. package/dist/commands/cleanup.js.map +1 -1
  52. package/dist/commands/dom.d.ts.map +1 -1
  53. package/dist/commands/dom.js +14 -19
  54. package/dist/commands/dom.js.map +1 -1
  55. package/dist/commands/domEvalHelpers.d.ts +3 -16
  56. package/dist/commands/domEvalHelpers.d.ts.map +1 -1
  57. package/dist/commands/domEvalHelpers.js +56 -7
  58. package/dist/commands/domEvalHelpers.js.map +1 -1
  59. package/dist/commands/domOptionsBuilder.d.ts +32 -0
  60. package/dist/commands/domOptionsBuilder.d.ts.map +1 -1
  61. package/dist/commands/domOptionsBuilder.js +35 -0
  62. package/dist/commands/domOptionsBuilder.js.map +1 -1
  63. package/dist/commands/machineReadableHelp.d.ts +98 -0
  64. package/dist/commands/machineReadableHelp.d.ts.map +1 -0
  65. package/dist/commands/machineReadableHelp.js +137 -0
  66. package/dist/commands/machineReadableHelp.js.map +1 -0
  67. package/dist/commands/peek.d.ts.map +1 -1
  68. package/dist/commands/peek.js +12 -6
  69. package/dist/commands/peek.js.map +1 -1
  70. package/dist/commands/shared/CommandRunner.d.ts +2 -0
  71. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  72. package/dist/commands/shared/CommandRunner.js +15 -4
  73. package/dist/commands/shared/CommandRunner.js.map +1 -1
  74. package/dist/commands/shared/OutputBuilder.js +1 -1
  75. package/dist/commands/shared/OutputBuilder.js.map +1 -1
  76. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  77. package/dist/commands/shared/commonOptions.js +11 -5
  78. package/dist/commands/shared/commonOptions.js.map +1 -1
  79. package/dist/commands/shared/daemonSessionController.d.ts +2 -0
  80. package/dist/commands/shared/daemonSessionController.d.ts.map +1 -1
  81. package/dist/commands/shared/daemonSessionController.js +13 -16
  82. package/dist/commands/shared/daemonSessionController.js.map +1 -1
  83. package/dist/commands/shared/sessionController.js +1 -1
  84. package/dist/commands/shared/sessionController.js.map +1 -1
  85. package/dist/commands/start.d.ts.map +1 -1
  86. package/dist/commands/start.js +35 -11
  87. package/dist/commands/start.js.map +1 -1
  88. package/dist/commands/status.d.ts.map +1 -1
  89. package/dist/commands/status.js +74 -57
  90. package/dist/commands/status.js.map +1 -1
  91. package/dist/commands/stop.d.ts.map +1 -1
  92. package/dist/commands/stop.js +13 -27
  93. package/dist/commands/stop.js.map +1 -1
  94. package/dist/commands/tail.d.ts +11 -0
  95. package/dist/commands/tail.d.ts.map +1 -0
  96. package/dist/commands/tail.js +117 -0
  97. package/dist/commands/tail.js.map +1 -0
  98. package/dist/commands.d.ts.map +1 -1
  99. package/dist/commands.js +2 -0
  100. package/dist/commands.js.map +1 -1
  101. package/dist/connection/cdp.d.ts +46 -2
  102. package/dist/connection/cdp.d.ts.map +1 -1
  103. package/dist/connection/cdp.js +86 -7
  104. package/dist/connection/cdp.js.map +1 -1
  105. package/dist/{utils/chromeDiagnostics.d.ts → connection/diagnostics.d.ts} +1 -1
  106. package/dist/connection/diagnostics.d.ts.map +1 -0
  107. package/dist/{utils/chromeDiagnostics.js → connection/diagnostics.js} +1 -1
  108. package/dist/connection/diagnostics.js.map +1 -0
  109. package/dist/connection/domOperations.d.ts.map +1 -1
  110. package/dist/connection/domOperations.js +3 -1
  111. package/dist/connection/domOperations.js.map +1 -1
  112. package/dist/{utils → connection}/errors.d.ts +9 -17
  113. package/dist/connection/errors.d.ts.map +1 -0
  114. package/dist/{utils → connection}/errors.js +12 -17
  115. package/dist/connection/errors.js.map +1 -0
  116. package/dist/connection/handlers.d.ts +63 -0
  117. package/dist/connection/handlers.d.ts.map +1 -0
  118. package/dist/connection/handlers.js +64 -0
  119. package/dist/connection/handlers.js.map +1 -0
  120. package/dist/connection/launcher.d.ts +3 -20
  121. package/dist/connection/launcher.d.ts.map +1 -1
  122. package/dist/connection/launcher.js +141 -31
  123. package/dist/connection/launcher.js.map +1 -1
  124. package/dist/connection/pageReadiness.d.ts.map +1 -0
  125. package/dist/{utils → connection}/pageReadiness.js +30 -31
  126. package/dist/connection/pageReadiness.js.map +1 -0
  127. package/dist/connection/typed-cdp.d.ts +144 -0
  128. package/dist/connection/typed-cdp.d.ts.map +1 -0
  129. package/dist/connection/typed-cdp.js +120 -0
  130. package/dist/connection/typed-cdp.js.map +1 -0
  131. package/dist/constants.d.ts +20 -40
  132. package/dist/constants.d.ts.map +1 -1
  133. package/dist/constants.js +26 -40
  134. package/dist/constants.js.map +1 -1
  135. package/dist/daemon/ipcServer.d.ts +5 -7
  136. package/dist/daemon/ipcServer.d.ts.map +1 -1
  137. package/dist/daemon/ipcServer.js +178 -143
  138. package/dist/daemon/ipcServer.js.map +1 -1
  139. package/dist/daemon/launcher.js +1 -1
  140. package/dist/daemon/launcher.js.map +1 -1
  141. package/dist/daemon/server/SocketServer.d.ts +22 -0
  142. package/dist/daemon/server/SocketServer.d.ts.map +1 -0
  143. package/dist/daemon/server/SocketServer.js +67 -0
  144. package/dist/daemon/server/SocketServer.js.map +1 -0
  145. package/dist/daemon/server/WorkerManager.d.ts +36 -0
  146. package/dist/daemon/server/WorkerManager.d.ts.map +1 -0
  147. package/dist/daemon/server/WorkerManager.js +98 -0
  148. package/dist/daemon/server/WorkerManager.js.map +1 -0
  149. package/dist/daemon/startSession.d.ts +2 -0
  150. package/dist/daemon/startSession.d.ts.map +1 -1
  151. package/dist/daemon/startSession.js +4 -2
  152. package/dist/daemon/startSession.js.map +1 -1
  153. package/dist/daemon/worker/TelemetryStore.d.ts +18 -0
  154. package/dist/daemon/worker/TelemetryStore.d.ts.map +1 -0
  155. package/dist/daemon/worker/TelemetryStore.js +49 -0
  156. package/dist/daemon/worker/TelemetryStore.js.map +1 -0
  157. package/dist/daemon/worker/collectors.d.ts +8 -0
  158. package/dist/daemon/worker/collectors.d.ts.map +1 -0
  159. package/dist/daemon/worker/collectors.js +19 -0
  160. package/dist/daemon/worker/collectors.js.map +1 -0
  161. package/dist/daemon/worker/commandRegistry.d.ts +10 -0
  162. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -0
  163. package/dist/daemon/worker/commandRegistry.js +289 -0
  164. package/dist/daemon/worker/commandRegistry.js.map +1 -0
  165. package/dist/daemon/worker/plugins.d.ts +21 -0
  166. package/dist/daemon/worker/plugins.d.ts.map +1 -0
  167. package/dist/daemon/worker/plugins.js +71 -0
  168. package/dist/daemon/worker/plugins.js.map +1 -0
  169. package/dist/daemon/worker/types.d.ts +13 -0
  170. package/dist/daemon/worker/types.d.ts.map +1 -0
  171. package/dist/daemon/worker/types.js +2 -0
  172. package/dist/daemon/worker/types.js.map +1 -0
  173. package/dist/daemon/worker.js +206 -529
  174. package/dist/daemon/worker.js.map +1 -1
  175. package/dist/index.js +18 -9
  176. package/dist/index.js.map +1 -1
  177. package/dist/ipc/__tests__/client.contract.test.js +2 -2
  178. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  179. package/dist/ipc/client.d.ts +3 -1
  180. package/dist/ipc/client.d.ts.map +1 -1
  181. package/dist/ipc/client.js +27 -14
  182. package/dist/ipc/client.js.map +1 -1
  183. package/dist/ipc/commands.d.ts +1 -0
  184. package/dist/ipc/commands.d.ts.map +1 -1
  185. package/dist/ipc/commands.js.map +1 -1
  186. package/dist/ipc/types.d.ts +2 -0
  187. package/dist/ipc/types.d.ts.map +1 -1
  188. package/dist/session/cleanup.d.ts.map +1 -1
  189. package/dist/session/cleanup.js +67 -65
  190. package/dist/session/cleanup.js.map +1 -1
  191. package/dist/session/fileOps.d.ts +25 -0
  192. package/dist/session/fileOps.d.ts.map +1 -0
  193. package/dist/session/fileOps.js +39 -0
  194. package/dist/session/fileOps.js.map +1 -0
  195. package/dist/session/metadata.js +2 -2
  196. package/dist/session/metadata.js.map +1 -1
  197. package/dist/session/paths.d.ts +2 -7
  198. package/dist/session/paths.d.ts.map +1 -1
  199. package/dist/session/paths.js +8 -8
  200. package/dist/session/paths.js.map +1 -1
  201. package/dist/session/queryCache.js +1 -1
  202. package/dist/session/queryCache.js.map +1 -1
  203. package/dist/telemetry/__tests__/filters.unit.test.d.ts.map +1 -0
  204. package/dist/{utils → telemetry}/__tests__/filters.unit.test.js +1 -1
  205. package/dist/telemetry/__tests__/filters.unit.test.js.map +1 -0
  206. package/dist/telemetry/__tests__/network.contract.test.js +124 -93
  207. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  208. package/dist/telemetry/console.d.ts +1 -1
  209. package/dist/telemetry/console.d.ts.map +1 -1
  210. package/dist/telemetry/console.js +8 -5
  211. package/dist/telemetry/console.js.map +1 -1
  212. package/dist/telemetry/dialogs.d.ts +27 -0
  213. package/dist/telemetry/dialogs.d.ts.map +1 -0
  214. package/dist/telemetry/dialogs.js +51 -0
  215. package/dist/telemetry/dialogs.js.map +1 -0
  216. package/dist/telemetry/dom.d.ts.map +1 -1
  217. package/dist/telemetry/dom.js +3 -1
  218. package/dist/telemetry/dom.js.map +1 -1
  219. package/dist/{utils → telemetry}/filters.d.ts +40 -0
  220. package/dist/telemetry/filters.d.ts.map +1 -0
  221. package/dist/{utils → telemetry}/filters.js +55 -1
  222. package/dist/telemetry/filters.js.map +1 -0
  223. package/dist/telemetry/navigation.d.ts +49 -0
  224. package/dist/telemetry/navigation.d.ts.map +1 -0
  225. package/dist/telemetry/navigation.js +69 -0
  226. package/dist/telemetry/navigation.js.map +1 -0
  227. package/dist/telemetry/network.d.ts +1 -0
  228. package/dist/telemetry/network.d.ts.map +1 -1
  229. package/dist/telemetry/network.js +23 -34
  230. package/dist/telemetry/network.js.map +1 -1
  231. package/dist/types.d.ts +2 -141
  232. package/dist/types.d.ts.map +1 -1
  233. package/dist/ui/{errors.d.ts → errors/CommandError.d.ts} +1 -1
  234. package/dist/ui/errors/CommandError.d.ts.map +1 -0
  235. package/dist/ui/{errors.js → errors/CommandError.js} +1 -1
  236. package/dist/ui/errors/CommandError.js.map +1 -0
  237. package/dist/ui/errors/index.d.ts +9 -0
  238. package/dist/ui/errors/index.d.ts.map +1 -0
  239. package/dist/ui/errors/index.js +12 -0
  240. package/dist/ui/errors/index.js.map +1 -0
  241. package/dist/ui/errors/utils.d.ts +24 -0
  242. package/dist/ui/errors/utils.d.ts.map +1 -0
  243. package/dist/ui/errors/utils.js +28 -0
  244. package/dist/ui/errors/utils.js.map +1 -0
  245. package/dist/ui/formatters/status.d.ts.map +1 -1
  246. package/dist/ui/formatters/status.js +1 -1
  247. package/dist/ui/formatters/status.js.map +1 -1
  248. package/dist/ui/logging/index.d.ts +7 -0
  249. package/dist/ui/logging/index.d.ts.map +1 -0
  250. package/dist/ui/logging/index.js +7 -0
  251. package/dist/ui/logging/index.js.map +1 -0
  252. package/dist/{utils → ui/logging}/logger.d.ts +1 -1
  253. package/dist/ui/logging/logger.d.ts.map +1 -0
  254. package/dist/ui/logging/logger.js.map +1 -0
  255. package/dist/ui/messages/chrome.d.ts +50 -1
  256. package/dist/ui/messages/chrome.d.ts.map +1 -1
  257. package/dist/ui/messages/chrome.js +77 -0
  258. package/dist/ui/messages/chrome.js.map +1 -1
  259. package/dist/ui/messages/commands.d.ts +1 -0
  260. package/dist/ui/messages/commands.d.ts.map +1 -1
  261. package/dist/ui/messages/commands.js +1 -0
  262. package/dist/ui/messages/commands.js.map +1 -1
  263. package/dist/ui/messages/errors.d.ts +30 -3
  264. package/dist/ui/messages/errors.d.ts.map +1 -1
  265. package/dist/ui/messages/errors.js +36 -8
  266. package/dist/ui/messages/errors.js.map +1 -1
  267. package/dist/ui/messages/preview.js +1 -1
  268. package/dist/ui/messages/preview.js.map +1 -1
  269. package/dist/ui/messages/session.d.ts.map +1 -1
  270. package/dist/ui/messages/session.js +22 -7
  271. package/dist/ui/messages/session.js.map +1 -1
  272. package/dist/ui/messages/validation.d.ts +22 -4
  273. package/dist/ui/messages/validation.d.ts.map +1 -1
  274. package/dist/ui/messages/validation.js +26 -5
  275. package/dist/ui/messages/validation.js.map +1 -1
  276. package/dist/utils/__tests__/session.contract.test.js +15 -1
  277. package/dist/utils/__tests__/session.contract.test.js.map +1 -1
  278. package/dist/utils/url.d.ts.map +1 -1
  279. package/dist/utils/url.js +10 -0
  280. package/dist/utils/url.js.map +1 -1
  281. package/package.json +3 -1
  282. package/dist/cli/commands/__tests__/cdp.contract.test.d.ts +0 -24
  283. package/dist/cli/commands/__tests__/cdp.contract.test.d.ts.map +0 -1
  284. package/dist/cli/commands/__tests__/cdp.contract.test.js +0 -467
  285. package/dist/cli/commands/__tests__/cdp.contract.test.js.map +0 -1
  286. package/dist/cli/commands/cdp.d.ts +0 -8
  287. package/dist/cli/commands/cdp.d.ts.map +0 -1
  288. package/dist/cli/commands/cdp.js +0 -45
  289. package/dist/cli/commands/cdp.js.map +0 -1
  290. package/dist/cli/commands/cleanup.d.ts +0 -8
  291. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  292. package/dist/cli/commands/cleanup.js +0 -129
  293. package/dist/cli/commands/cleanup.js.map +0 -1
  294. package/dist/cli/commands/console.d.ts +0 -8
  295. package/dist/cli/commands/console.d.ts.map +0 -1
  296. package/dist/cli/commands/console.js +0 -97
  297. package/dist/cli/commands/console.js.map +0 -1
  298. package/dist/cli/commands/details.d.ts +0 -8
  299. package/dist/cli/commands/details.d.ts.map +0 -1
  300. package/dist/cli/commands/details.js +0 -68
  301. package/dist/cli/commands/details.js.map +0 -1
  302. package/dist/cli/commands/dom/helpers/domCache.d.ts +0 -36
  303. package/dist/cli/commands/dom/helpers/domCache.d.ts.map +0 -1
  304. package/dist/cli/commands/dom/helpers/domCache.js +0 -65
  305. package/dist/cli/commands/dom/helpers/domCache.js.map +0 -1
  306. package/dist/cli/commands/dom/helpers/domQuery.d.ts +0 -48
  307. package/dist/cli/commands/dom/helpers/domQuery.d.ts.map +0 -1
  308. package/dist/cli/commands/dom/helpers/domQuery.js +0 -104
  309. package/dist/cli/commands/dom/helpers/domQuery.js.map +0 -1
  310. package/dist/cli/commands/dom/helpers/errorHandler.d.ts +0 -45
  311. package/dist/cli/commands/dom/helpers/errorHandler.d.ts.map +0 -1
  312. package/dist/cli/commands/dom/helpers/errorHandler.js +0 -71
  313. package/dist/cli/commands/dom/helpers/errorHandler.js.map +0 -1
  314. package/dist/cli/commands/dom/helpers/evalHelpers.d.ts +0 -52
  315. package/dist/cli/commands/dom/helpers/evalHelpers.d.ts.map +0 -1
  316. package/dist/cli/commands/dom/helpers/evalHelpers.js +0 -75
  317. package/dist/cli/commands/dom/helpers/evalHelpers.js.map +0 -1
  318. package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts +0 -35
  319. package/dist/cli/commands/dom/helpers/optionsBuilder.d.ts.map +0 -1
  320. package/dist/cli/commands/dom/helpers/optionsBuilder.js +0 -51
  321. package/dist/cli/commands/dom/helpers/optionsBuilder.js.map +0 -1
  322. package/dist/cli/commands/dom/helpers/selectorParser.d.ts +0 -20
  323. package/dist/cli/commands/dom/helpers/selectorParser.d.ts.map +0 -1
  324. package/dist/cli/commands/dom/helpers/selectorParser.js +0 -20
  325. package/dist/cli/commands/dom/helpers/selectorParser.js.map +0 -1
  326. package/dist/cli/commands/dom/index.d.ts +0 -8
  327. package/dist/cli/commands/dom/index.d.ts.map +0 -1
  328. package/dist/cli/commands/dom/index.js +0 -257
  329. package/dist/cli/commands/dom/index.js.map +0 -1
  330. package/dist/cli/commands/dom.d.ts +0 -8
  331. package/dist/cli/commands/dom.d.ts.map +0 -1
  332. package/dist/cli/commands/dom.js +0 -257
  333. package/dist/cli/commands/dom.js.map +0 -1
  334. package/dist/cli/commands/domErrorHandler.d.ts +0 -45
  335. package/dist/cli/commands/domErrorHandler.d.ts.map +0 -1
  336. package/dist/cli/commands/domErrorHandler.js +0 -71
  337. package/dist/cli/commands/domErrorHandler.js.map +0 -1
  338. package/dist/cli/commands/domEvalHelpers.d.ts +0 -52
  339. package/dist/cli/commands/domEvalHelpers.d.ts.map +0 -1
  340. package/dist/cli/commands/domEvalHelpers.js +0 -76
  341. package/dist/cli/commands/domEvalHelpers.js.map +0 -1
  342. package/dist/cli/commands/domOptionsBuilder.d.ts +0 -35
  343. package/dist/cli/commands/domOptionsBuilder.d.ts.map +0 -1
  344. package/dist/cli/commands/domOptionsBuilder.js +0 -51
  345. package/dist/cli/commands/domOptionsBuilder.js.map +0 -1
  346. package/dist/cli/commands/domSelectorParser.d.ts +0 -20
  347. package/dist/cli/commands/domSelectorParser.d.ts.map +0 -1
  348. package/dist/cli/commands/domSelectorParser.js +0 -20
  349. package/dist/cli/commands/domSelectorParser.js.map +0 -1
  350. package/dist/cli/commands/network.d.ts +0 -8
  351. package/dist/cli/commands/network.d.ts.map +0 -1
  352. package/dist/cli/commands/network.js +0 -43
  353. package/dist/cli/commands/network.js.map +0 -1
  354. package/dist/cli/commands/peek.d.ts +0 -8
  355. package/dist/cli/commands/peek.d.ts.map +0 -1
  356. package/dist/cli/commands/peek.js +0 -109
  357. package/dist/cli/commands/peek.js.map +0 -1
  358. package/dist/cli/commands/start.d.ts +0 -9
  359. package/dist/cli/commands/start.d.ts.map +0 -1
  360. package/dist/cli/commands/start.js +0 -95
  361. package/dist/cli/commands/start.js.map +0 -1
  362. package/dist/cli/commands/status.d.ts +0 -9
  363. package/dist/cli/commands/status.d.ts.map +0 -1
  364. package/dist/cli/commands/status.js +0 -87
  365. package/dist/cli/commands/status.js.map +0 -1
  366. package/dist/cli/commands/stop.d.ts +0 -8
  367. package/dist/cli/commands/stop.d.ts.map +0 -1
  368. package/dist/cli/commands/stop.js +0 -147
  369. package/dist/cli/commands/stop.js.map +0 -1
  370. package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
  371. package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
  372. package/dist/cli/formatters/detailsFormatter.js +0 -63
  373. package/dist/cli/formatters/detailsFormatter.js.map +0 -1
  374. package/dist/cli/formatters/previewFormatter.d.ts +0 -27
  375. package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
  376. package/dist/cli/formatters/previewFormatter.js +0 -160
  377. package/dist/cli/formatters/previewFormatter.js.map +0 -1
  378. package/dist/cli/formatters/statusFormatter.d.ts +0 -39
  379. package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
  380. package/dist/cli/formatters/statusFormatter.js +0 -153
  381. package/dist/cli/formatters/statusFormatter.js.map +0 -1
  382. package/dist/cli/handlers/CommandRunner.d.ts +0 -60
  383. package/dist/cli/handlers/CommandRunner.d.ts.map +0 -1
  384. package/dist/cli/handlers/CommandRunner.js +0 -81
  385. package/dist/cli/handlers/CommandRunner.js.map +0 -1
  386. package/dist/cli/handlers/OutputBuilder.d.ts +0 -60
  387. package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
  388. package/dist/cli/handlers/OutputBuilder.js +0 -138
  389. package/dist/cli/handlers/OutputBuilder.js.map +0 -1
  390. package/dist/cli/handlers/commonOptions.d.ts +0 -54
  391. package/dist/cli/handlers/commonOptions.d.ts.map +0 -1
  392. package/dist/cli/handlers/commonOptions.js +0 -64
  393. package/dist/cli/handlers/commonOptions.js.map +0 -1
  394. package/dist/cli/handlers/daemonSessionController.d.ts +0 -23
  395. package/dist/cli/handlers/daemonSessionController.d.ts.map +0 -1
  396. package/dist/cli/handlers/daemonSessionController.js +0 -79
  397. package/dist/cli/handlers/daemonSessionController.js.map +0 -1
  398. package/dist/cli/handlers/landingPage.d.ts +0 -8
  399. package/dist/cli/handlers/landingPage.d.ts.map +0 -1
  400. package/dist/cli/handlers/landingPage.js +0 -8
  401. package/dist/cli/handlers/landingPage.js.map +0 -1
  402. package/dist/cli/handlers/sessionController.d.ts +0 -21
  403. package/dist/cli/handlers/sessionController.d.ts.map +0 -1
  404. package/dist/cli/handlers/sessionController.js +0 -55
  405. package/dist/cli/handlers/sessionController.js.map +0 -1
  406. package/dist/cli/registry.d.ts +0 -11
  407. package/dist/cli/registry.d.ts.map +0 -1
  408. package/dist/cli/registry.js +0 -46
  409. package/dist/cli/registry.js.map +0 -1
  410. package/dist/collectors/__tests__/network.contract.test.d.ts +0 -28
  411. package/dist/collectors/__tests__/network.contract.test.d.ts.map +0 -1
  412. package/dist/collectors/__tests__/network.contract.test.js +0 -540
  413. package/dist/collectors/__tests__/network.contract.test.js.map +0 -1
  414. package/dist/collectors/console.d.ts +0 -19
  415. package/dist/collectors/console.d.ts.map +0 -1
  416. package/dist/collectors/console.js +0 -87
  417. package/dist/collectors/console.js.map +0 -1
  418. package/dist/collectors/dom.d.ts +0 -21
  419. package/dist/collectors/dom.d.ts.map +0 -1
  420. package/dist/collectors/dom.js +0 -99
  421. package/dist/collectors/dom.js.map +0 -1
  422. package/dist/collectors/network.d.ts +0 -33
  423. package/dist/collectors/network.d.ts.map +0 -1
  424. package/dist/collectors/network.js +0 -191
  425. package/dist/collectors/network.js.map +0 -1
  426. package/dist/commandRegistry.d.ts +0 -11
  427. package/dist/commandRegistry.d.ts.map +0 -1
  428. package/dist/commandRegistry.js +0 -45
  429. package/dist/commandRegistry.js.map +0 -1
  430. package/dist/commands/domErrorHandler.d.ts +0 -45
  431. package/dist/commands/domErrorHandler.d.ts.map +0 -1
  432. package/dist/commands/domErrorHandler.js +0 -71
  433. package/dist/commands/domErrorHandler.js.map +0 -1
  434. package/dist/dom/cache.d.ts +0 -36
  435. package/dist/dom/cache.d.ts.map +0 -1
  436. package/dist/dom/cache.js +0 -65
  437. package/dist/dom/cache.js.map +0 -1
  438. package/dist/dom/index.d.ts +0 -9
  439. package/dist/dom/index.d.ts.map +0 -1
  440. package/dist/dom/index.js +0 -9
  441. package/dist/dom/index.js.map +0 -1
  442. package/dist/dom/query.d.ts +0 -48
  443. package/dist/dom/query.d.ts.map +0 -1
  444. package/dist/dom/query.js +0 -104
  445. package/dist/dom/query.js.map +0 -1
  446. package/dist/ui/errors.d.ts.map +0 -1
  447. package/dist/ui/errors.js.map +0 -1
  448. package/dist/ui/messages/index.d.ts +0 -12
  449. package/dist/ui/messages/index.d.ts.map +0 -1
  450. package/dist/ui/messages/index.js +0 -12
  451. package/dist/ui/messages/index.js.map +0 -1
  452. package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
  453. package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
  454. package/dist/utils/cdpHandlers.d.ts +0 -31
  455. package/dist/utils/cdpHandlers.d.ts.map +0 -1
  456. package/dist/utils/cdpHandlers.js +0 -38
  457. package/dist/utils/cdpHandlers.js.map +0 -1
  458. package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
  459. package/dist/utils/chromeDiagnostics.js.map +0 -1
  460. package/dist/utils/errors.d.ts.map +0 -1
  461. package/dist/utils/errors.js.map +0 -1
  462. package/dist/utils/filters.d.ts.map +0 -1
  463. package/dist/utils/filters.js.map +0 -1
  464. package/dist/utils/formatters/network.d.ts +0 -23
  465. package/dist/utils/formatters/network.d.ts.map +0 -1
  466. package/dist/utils/formatters/network.js +0 -35
  467. package/dist/utils/formatters/network.js.map +0 -1
  468. package/dist/utils/logger.d.ts.map +0 -1
  469. package/dist/utils/logger.js.map +0 -1
  470. package/dist/utils/pageReadiness.d.ts.map +0 -1
  471. package/dist/utils/pageReadiness.js.map +0 -1
  472. package/dist/utils/ui.d.ts +0 -36
  473. package/dist/utils/ui.d.ts.map +0 -1
  474. package/dist/utils/ui.js +0 -47
  475. package/dist/utils/ui.js.map +0 -1
  476. package/dist/utils/url/safeParseUrl.d.ts +0 -63
  477. package/dist/utils/url/safeParseUrl.d.ts.map +0 -1
  478. package/dist/utils/url/safeParseUrl.js +0 -84
  479. package/dist/utils/url/safeParseUrl.js.map +0 -1
  480. /package/dist/{utils → connection}/pageReadiness.d.ts +0 -0
  481. /package/dist/{utils → telemetry}/__tests__/filters.unit.test.d.ts +0 -0
  482. /package/dist/{utils → ui/logging}/logger.js +0 -0
@@ -72,11 +72,11 @@ async function waitForLoadEvent(cdp, deadline) {
72
72
  await cdp.send('Page.enable');
73
73
  // Check if page already loaded (handles Chrome pre-navigation)
74
74
  try {
75
- const result = await cdp.send('Runtime.evaluate', {
75
+ const result = (await cdp.send('Runtime.evaluate', {
76
76
  expression: 'document.readyState',
77
77
  returnByValue: true,
78
- });
79
- if (result.result?.value === 'complete') {
78
+ }));
79
+ if (result.result.value === 'complete') {
80
80
  // Load event already fired
81
81
  return;
82
82
  }
@@ -111,23 +111,21 @@ async function waitForLoadEvent(cdp, deadline) {
111
111
  });
112
112
  }
113
113
  /**
114
- * Wait for network to stabilize using adaptive thresholds
114
+ * Wait for network to stabilize
115
115
  *
116
- * LEARNING PHASE (first 2s):
117
- * - Track request intervals
118
- * - Calculate average request frequency
116
+ * Uses a fixed 200ms idle threshold which works well for most pages:
117
+ * - Fast enough for quick sites (avoids unnecessary waiting)
118
+ * - Patient enough for API-heavy apps (catches late requests)
119
+ * - Simpler and more predictable than adaptive learning
119
120
  *
120
- * DETECTION PHASE:
121
- * - Fast pattern (avg \< 100ms): 200ms idle = stable
122
- * - Steady pattern (100-500ms): 500ms idle = stable
123
- * - Slow pattern (\> 500ms): 1000ms idle = stable
121
+ * Network is considered stable when there are zero active requests
122
+ * for at least 200ms continuously.
124
123
  *
125
124
  * Why this works:
126
- * - Fast sites: Quick bursts, fast stabilization
127
- * - SSR apps: Steady hydration requests, medium wait
128
- * - API-heavy: Slow requests, longer patience
129
- *
130
- * Framework-agnostic - adapts to actual behavior.
125
+ * - Catches initial request bursts (CSS, JS, images)
126
+ * - Waits for lazy-loaded resources
127
+ * - Detects API calls triggered by hydration
128
+ * - Framework-agnostic - based on actual network activity
131
129
  *
132
130
  * @param cdp - CDP connection
133
131
  * @param deadline - Timestamp when to timeout
@@ -182,23 +180,24 @@ async function waitForNetworkStable(cdp, deadline) {
182
180
  }
183
181
  }
184
182
  /**
185
- * Wait for DOM to stabilize using adaptive thresholds
183
+ * Wait for DOM to stabilize
184
+ *
185
+ * Uses a MutationObserver to detect when the DOM stops changing.
186
+ * DOM is considered stable when there are no mutations for 300ms continuously.
186
187
  *
187
188
  * HOW IT WORKS:
188
- * 1. Inject MutationObserver into page
189
- * 2. Track mutation rate for 1 second
190
- * 3. Calculate adaptive stability threshold:
191
- * - High rate (\>50 mutations/sec): 1000ms no-change = stable
192
- * - Medium rate (10-50 mutations/sec): 500ms no-change = stable
193
- * - Low rate (\<10 mutations/sec): 300ms no-change = stable
194
- * 4. Wait for DOM to remain unchanged for threshold duration
189
+ * 1. Inject MutationObserver into page to track all DOM changes
190
+ * 2. Monitor childList, attributes, subtree, and characterData changes
191
+ * 3. Wait for 300ms of continuous no-change activity
192
+ * 4. Clean up observer when complete
195
193
  *
196
194
  * Why this works:
197
- * - SSR hydration causes DOM mutations
198
- * - React/Vue/Svelte all mutate during hydration
199
- * - When mutations stop, hydration is complete
195
+ * - SSR hydration causes DOM mutations (React, Vue, Svelte)
196
+ * - Client-side rendering creates DOM elements
197
+ * - When mutations stop, framework initialization is complete
198
+ * - 300ms is long enough to catch batched updates, short enough to be responsive
200
199
  *
201
- * Framework-agnostic - detects actual mutations.
200
+ * Framework-agnostic - detects actual mutations regardless of framework.
202
201
  *
203
202
  * @param cdp - CDP connection
204
203
  * @param deadline - Timestamp when to timeout
@@ -232,11 +231,11 @@ async function waitForDOMStable(cdp, deadline) {
232
231
  const stableThreshold = 300; // 300ms no mutations = DOM stable
233
232
  // Detection phase: wait for stability
234
233
  while (Date.now() < deadline) {
235
- const checkResult = await cdp.send('Runtime.evaluate', {
234
+ const checkResult = (await cdp.send('Runtime.evaluate', {
236
235
  expression: 'Date.now() - window.__bdg_lastMutation',
237
236
  returnByValue: true,
238
- });
239
- const timeSinceLastMutation = checkResult.result?.value ?? 0;
237
+ }));
238
+ const timeSinceLastMutation = checkResult.result.value ?? 0;
240
239
  if (timeSinceLastMutation >= stableThreshold) {
241
240
  return timeSinceLastMutation; // Success!
242
241
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageReadiness.js","sourceRoot":"","sources":["../../src/connection/pageReadiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Type-safe CDP Connection Wrapper
3
+ *
4
+ * Provides compile-time type safety for Chrome DevTools Protocol methods
5
+ * using official TypeScript definitions from devtools-protocol package.
6
+ *
7
+ * Benefits:
8
+ * - Autocomplete for all 300+ CDP methods
9
+ * - Type-checked parameters and return values
10
+ * - Type-safe event handlers
11
+ * - No runtime overhead (types erased at compile time)
12
+ */
13
+ import type { CDPConnection } from './cdp.js';
14
+ import type Protocol from 'devtools-protocol/types/protocol';
15
+ import type ProtocolMapping from 'devtools-protocol/types/protocol-mapping';
16
+ /**
17
+ * Extract parameter type from a CDP command.
18
+ *
19
+ * If command has no parameters, returns empty object type.
20
+ * If command has single parameter array, returns first element.
21
+ */
22
+ type CommandParams<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['paramsType'] extends [infer P] ? P : ProtocolMapping.Commands[T]['paramsType'] extends [] ? Record<string, never> : never;
23
+ /**
24
+ * Extract return type from a CDP command.
25
+ */
26
+ type CommandReturn<T extends keyof ProtocolMapping.Commands> = ProtocolMapping.Commands[T]['returnType'];
27
+ /**
28
+ * Extract event parameter type from a CDP event.
29
+ *
30
+ * If event has no parameters, returns empty object.
31
+ * If event has single parameter array, returns first element.
32
+ */
33
+ type EventParams<T extends keyof ProtocolMapping.Events> = ProtocolMapping.Events[T] extends [
34
+ infer P
35
+ ] ? P : ProtocolMapping.Events[T] extends [] ? void : never;
36
+ /**
37
+ * Type-safe wrapper around CDPConnection.
38
+ *
39
+ * Provides strongly-typed methods for sending CDP commands and
40
+ * registering event handlers.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const cdp = new CDPConnection(wsUrl);
45
+ * const typed = new TypedCDPConnection(cdp);
46
+ *
47
+ * // Type-safe command with autocomplete
48
+ * const response = await typed.send('Network.getCookies', { urls: ['http://example.com'] });
49
+ * // response type: Protocol.Network.GetCookiesResponse
50
+ *
51
+ * // Type-safe event handler
52
+ * typed.on('Network.requestWillBeSent', (event) => {
53
+ * // event type: Protocol.Network.RequestWillBeSentEvent
54
+ * console.log(event.request.url);
55
+ * });
56
+ * ```
57
+ */
58
+ export declare class TypedCDPConnection {
59
+ private cdp;
60
+ constructor(cdp: CDPConnection);
61
+ /**
62
+ * Send a type-safe CDP command.
63
+ *
64
+ * @param method - CDP method name (autocomplete available for 300+ methods)
65
+ * @param params - Command parameters (type-checked)
66
+ * @returns Promise resolving to command response (type-safe)
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * // Network domain
71
+ * const cookies = await typed.send('Network.getCookies', { urls: ['http://example.com'] });
72
+ *
73
+ * // Runtime domain
74
+ * const result = await typed.send('Runtime.evaluate', {
75
+ * expression: 'document.title',
76
+ * returnByValue: true
77
+ * });
78
+ *
79
+ * // DOM domain
80
+ * const doc = await typed.send('DOM.getDocument', {});
81
+ * ```
82
+ */
83
+ send<T extends keyof ProtocolMapping.Commands>(method: T, params: CommandParams<T>): Promise<CommandReturn<T>>;
84
+ /**
85
+ * Register a type-safe event handler.
86
+ *
87
+ * @param event - CDP event name (autocomplete available)
88
+ * @param handler - Event handler with type-safe parameters
89
+ * @returns Handler ID for later removal
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * // Network events
94
+ * const id = typed.on('Network.requestWillBeSent', (event) => {
95
+ * console.log(event.request.url, event.request.method);
96
+ * });
97
+ *
98
+ * // Console events
99
+ * typed.on('Runtime.consoleAPICalled', (event) => {
100
+ * console.log(event.type, event.args);
101
+ * });
102
+ *
103
+ * // Page events
104
+ * typed.on('Page.loadEventFired', (event) => {
105
+ * console.log('Page loaded at:', event.timestamp);
106
+ * });
107
+ * ```
108
+ */
109
+ on<T extends keyof ProtocolMapping.Events>(event: T, handler: (params: EventParams<T>) => void): number;
110
+ /**
111
+ * Remove an event handler by ID.
112
+ *
113
+ * @param event - CDP event name
114
+ * @param handlerId - Handler ID returned from on()
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const id = typed.on('Network.requestWillBeSent', handler);
119
+ * // Later...
120
+ * typed.off('Network.requestWillBeSent', id);
121
+ * ```
122
+ */
123
+ off(event: string, handlerId: number): void;
124
+ /**
125
+ * Access underlying CDPConnection for advanced use cases.
126
+ *
127
+ * Use this when you need to call methods not covered by the typed wrapper,
128
+ * or when you need to access connection state/methods directly.
129
+ */
130
+ get raw(): CDPConnection;
131
+ }
132
+ /**
133
+ * Re-export Protocol namespace for easy access to types.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * import { Protocol } from '../connection/typed-cdp.js';
138
+ *
139
+ * type Cookie = Protocol.Network.Cookie;
140
+ * type Headers = Protocol.Network.Headers;
141
+ * ```
142
+ */
143
+ export type { Protocol };
144
+ //# sourceMappingURL=typed-cdp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-cdp.d.ts","sourceRoot":"","sources":["../../src/connection/typed-cdp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAC;AAE5E;;;;;GAKG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,IACzD,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GACvD,CAAC,GACD,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,GAClD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrB,KAAK,CAAC;AAEd;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,IACzD,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;IAC3F,MAAM,CAAC;CACR,GACG,CAAC,GACD,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,GAClC,IAAI,GACJ,KAAK,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,EACjD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAK5B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,MAAM,EACvC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GACxC,MAAM;IAIT;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;;OAKG;IACH,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF;AAED;;;;;;;;;;GAUG;AACH,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Type-safe CDP Connection Wrapper
3
+ *
4
+ * Provides compile-time type safety for Chrome DevTools Protocol methods
5
+ * using official TypeScript definitions from devtools-protocol package.
6
+ *
7
+ * Benefits:
8
+ * - Autocomplete for all 300+ CDP methods
9
+ * - Type-checked parameters and return values
10
+ * - Type-safe event handlers
11
+ * - No runtime overhead (types erased at compile time)
12
+ */
13
+ /**
14
+ * Type-safe wrapper around CDPConnection.
15
+ *
16
+ * Provides strongly-typed methods for sending CDP commands and
17
+ * registering event handlers.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const cdp = new CDPConnection(wsUrl);
22
+ * const typed = new TypedCDPConnection(cdp);
23
+ *
24
+ * // Type-safe command with autocomplete
25
+ * const response = await typed.send('Network.getCookies', { urls: ['http://example.com'] });
26
+ * // response type: Protocol.Network.GetCookiesResponse
27
+ *
28
+ * // Type-safe event handler
29
+ * typed.on('Network.requestWillBeSent', (event) => {
30
+ * // event type: Protocol.Network.RequestWillBeSentEvent
31
+ * console.log(event.request.url);
32
+ * });
33
+ * ```
34
+ */
35
+ export class TypedCDPConnection {
36
+ cdp;
37
+ constructor(cdp) {
38
+ this.cdp = cdp;
39
+ }
40
+ /**
41
+ * Send a type-safe CDP command.
42
+ *
43
+ * @param method - CDP method name (autocomplete available for 300+ methods)
44
+ * @param params - Command parameters (type-checked)
45
+ * @returns Promise resolving to command response (type-safe)
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // Network domain
50
+ * const cookies = await typed.send('Network.getCookies', { urls: ['http://example.com'] });
51
+ *
52
+ * // Runtime domain
53
+ * const result = await typed.send('Runtime.evaluate', {
54
+ * expression: 'document.title',
55
+ * returnByValue: true
56
+ * });
57
+ *
58
+ * // DOM domain
59
+ * const doc = await typed.send('DOM.getDocument', {});
60
+ * ```
61
+ */
62
+ async send(method, params) {
63
+ const result = await this.cdp.send(method, params);
64
+ return result;
65
+ }
66
+ /**
67
+ * Register a type-safe event handler.
68
+ *
69
+ * @param event - CDP event name (autocomplete available)
70
+ * @param handler - Event handler with type-safe parameters
71
+ * @returns Handler ID for later removal
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Network events
76
+ * const id = typed.on('Network.requestWillBeSent', (event) => {
77
+ * console.log(event.request.url, event.request.method);
78
+ * });
79
+ *
80
+ * // Console events
81
+ * typed.on('Runtime.consoleAPICalled', (event) => {
82
+ * console.log(event.type, event.args);
83
+ * });
84
+ *
85
+ * // Page events
86
+ * typed.on('Page.loadEventFired', (event) => {
87
+ * console.log('Page loaded at:', event.timestamp);
88
+ * });
89
+ * ```
90
+ */
91
+ on(event, handler) {
92
+ return this.cdp.on(event, handler);
93
+ }
94
+ /**
95
+ * Remove an event handler by ID.
96
+ *
97
+ * @param event - CDP event name
98
+ * @param handlerId - Handler ID returned from on()
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const id = typed.on('Network.requestWillBeSent', handler);
103
+ * // Later...
104
+ * typed.off('Network.requestWillBeSent', id);
105
+ * ```
106
+ */
107
+ off(event, handlerId) {
108
+ this.cdp.off(event, handlerId);
109
+ }
110
+ /**
111
+ * Access underlying CDPConnection for advanced use cases.
112
+ *
113
+ * Use this when you need to call methods not covered by the typed wrapper,
114
+ * or when you need to access connection state/methods directly.
115
+ */
116
+ get raw() {
117
+ return this.cdp;
118
+ }
119
+ }
120
+ //# sourceMappingURL=typed-cdp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-cdp.js","sourceRoot":"","sources":["../../src/connection/typed-cdp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuCH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,GAAkB;QAAlB,QAAG,GAAH,GAAG,CAAe;IAAG,CAAC;IAE1C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,IAAI,CACR,MAAS,EACT,MAAwB;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAiC,CAAC,CAAC;QAC9E,OAAO,MAA0B,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,EAAE,CACA,KAAQ,EACR,OAAyC;QAEzC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,OAAoC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,KAAa,EAAE,SAAiB;QAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF"}
@@ -24,7 +24,7 @@ export declare const DEFAULT_CHROME_HANDLE_SIGINT = false;
24
24
  /**
25
25
  * Persistent Chrome profile directory path (relative to user home)
26
26
  */
27
- export declare const CHROME_PROFILE_DIR = ".bdg/chrome-profile";
27
+ export declare const CHROME_PROFILE_DIR = "chrome-profile";
28
28
  /**
29
29
  * Maximum CDP connection retry attempts before failing
30
30
  */
@@ -34,6 +34,16 @@ export declare const CDP_MAX_CONNECTION_RETRIES = 3;
34
34
  * Maximum time to wait for WebSocket connection to establish
35
35
  */
36
36
  export declare const CDP_CONNECTION_TIMEOUT_MS = 10000;
37
+ /**
38
+ * WebSocket handshake timeout in milliseconds (5 seconds)
39
+ * Maximum time to wait for WebSocket handshake to complete
40
+ */
41
+ export declare const WEBSOCKET_HANDSHAKE_TIMEOUT_MS = 5000;
42
+ /**
43
+ * WebSocket maximum payload size in bytes (100MB)
44
+ * Allows large DOM snapshots without hitting payload limits
45
+ */
46
+ export declare const WEBSOCKET_MAX_PAYLOAD_BYTES: number;
37
47
  /**
38
48
  * CDP command timeout in milliseconds (30 seconds)
39
49
  * Maximum time to wait for CDP command responses
@@ -45,10 +55,6 @@ export declare const CDP_COMMAND_TIMEOUT_MS = 30000;
45
55
  * Prevents connection timeout during long-running sessions
46
56
  */
47
57
  export declare const CDP_KEEPALIVE_INTERVAL = 30000;
48
- /**
49
- * Enable CDP target discovery for tab detection
50
- */
51
- export declare const CDP_DISCOVER_TARGETS = true;
52
58
  /**
53
59
  * CDP reconnection retry limit
54
60
  * Maximum number of reconnection attempts before giving up
@@ -94,26 +100,6 @@ export declare const WEBSOCKET_NO_PONG_CLOSURE = 1001;
94
100
  * Standard encoding for text data conversion
95
101
  */
96
102
  export declare const UTF8_ENCODING = "utf8";
97
- /**
98
- * CDP target type for browser pages
99
- * Identifies page-type targets (vs service workers, extensions, etc.)
100
- */
101
- export declare const PAGE_TARGET_TYPE = "page";
102
- /**
103
- * Blank page URL used by Chrome
104
- * Standard initial/empty page URL
105
- */
106
- export declare const BLANK_PAGE_URL = "about:blank";
107
- /**
108
- * CDP createTarget new window flag (default: false for tabs)
109
- * Controls whether targets are created as new windows or tabs
110
- */
111
- export declare const CDP_NEW_WINDOW_FLAG = false;
112
- /**
113
- * CDP attachToTarget flatten flag (default: true for simplified sessions)
114
- * Prevents nested session hierarchies for easier management
115
- */
116
- export declare const CDP_FLATTEN_SESSION_FLAG = true;
117
103
  /**
118
104
  * HTTP localhost address for CDP endpoints
119
105
  * Standard loopback address for Chrome DevTools Protocol
@@ -127,8 +113,17 @@ export declare const HEADLESS_FLAG = "--headless=new";
127
113
  /**
128
114
  * BDG-specific Chrome flags for automation and popup suppression
129
115
  * These flags are automatically applied when launching Chrome via chrome-launcher
116
+ *
117
+ * Note: Chrome has a known issue (Chromium bug #854609) where it steals focus on macOS
118
+ * despite --disable-background-mode. This is a long-standing Chrome bug with no workaround.
119
+ * Headless mode (--headless) avoids this issue entirely.
130
120
  */
131
121
  export declare const BDG_CHROME_FLAGS: string[];
122
+ /**
123
+ * Docker-specific Chrome flags to work around GPU/graphics limitations
124
+ * These flags disable hardware acceleration and GPU features that fail in containerized environments
125
+ */
126
+ export declare const DOCKER_CHROME_FLAGS: string[];
132
127
  /**
133
128
  * BDG-specific Chrome preferences for automation
134
129
  * These preferences are automatically merged with user preferences when launching Chrome
@@ -179,11 +174,6 @@ export declare const STALE_REQUEST_TIMEOUT = 60000;
179
174
  * How often to check for and remove stale network requests
180
175
  */
181
176
  export declare const STALE_REQUEST_CLEANUP_INTERVAL = 30000;
182
- /**
183
- * Memory usage logging interval (30 seconds)
184
- * How often to log memory statistics during session collection
185
- */
186
- export declare const MEMORY_LOG_INTERVAL = 30000;
187
177
  /**
188
178
  * Default page readiness timeout (2 seconds)
189
179
  * Maximum time to wait for page to be ready before proceeding
@@ -209,16 +199,6 @@ export declare const PORT_OPTION_DESCRIPTION = "Chrome debugging port";
209
199
  * Description for timeout option in CLI commands
210
200
  */
211
201
  export declare const TIMEOUT_OPTION_DESCRIPTION = "Auto-stop after timeout (optional)";
212
- /**
213
- * Description for reuse-tab option in CLI commands
214
- */
215
- export declare const REUSE_TAB_OPTION_DESCRIPTION = "Navigate existing tab instead of creating new one";
216
- /**
217
- * Default value for reuse-tab option
218
- * When true, bdg will attempt to find and reuse existing tabs instead of creating new ones
219
- * This is the preferred default for better UX and avoiding tab proliferation
220
- */
221
- export declare const DEFAULT_REUSE_TAB = true;
222
202
  /**
223
203
  * Description for user-data-dir option in CLI commands
224
204
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIpD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAMtD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,4BAA4B,sDAAsD,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,gCAAgC,gEACkB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAoB,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UAS5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIpD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAMtD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,gCAAgC,gEACkB,CAAC"}
package/dist/constants.js CHANGED
@@ -27,7 +27,7 @@ export const DEFAULT_CHROME_HANDLE_SIGINT = false;
27
27
  /**
28
28
  * Persistent Chrome profile directory path (relative to user home)
29
29
  */
30
- export const CHROME_PROFILE_DIR = '.bdg/chrome-profile';
30
+ export const CHROME_PROFILE_DIR = 'chrome-profile';
31
31
  /**
32
32
  * Maximum CDP connection retry attempts before failing
33
33
  */
@@ -37,6 +37,16 @@ export const CDP_MAX_CONNECTION_RETRIES = 3;
37
37
  * Maximum time to wait for WebSocket connection to establish
38
38
  */
39
39
  export const CDP_CONNECTION_TIMEOUT_MS = 10000;
40
+ /**
41
+ * WebSocket handshake timeout in milliseconds (5 seconds)
42
+ * Maximum time to wait for WebSocket handshake to complete
43
+ */
44
+ export const WEBSOCKET_HANDSHAKE_TIMEOUT_MS = 5000;
45
+ /**
46
+ * WebSocket maximum payload size in bytes (100MB)
47
+ * Allows large DOM snapshots without hitting payload limits
48
+ */
49
+ export const WEBSOCKET_MAX_PAYLOAD_BYTES = 100 * 1024 * 1024;
40
50
  /**
41
51
  * CDP command timeout in milliseconds (30 seconds)
42
52
  * Maximum time to wait for CDP command responses
@@ -48,10 +58,6 @@ export const CDP_COMMAND_TIMEOUT_MS = 30000;
48
58
  * Prevents connection timeout during long-running sessions
49
59
  */
50
60
  export const CDP_KEEPALIVE_INTERVAL = 30000;
51
- /**
52
- * Enable CDP target discovery for tab detection
53
- */
54
- export const CDP_DISCOVER_TARGETS = true;
55
61
  /**
56
62
  * CDP reconnection retry limit
57
63
  * Maximum number of reconnection attempts before giving up
@@ -97,26 +103,6 @@ export const WEBSOCKET_NO_PONG_CLOSURE = 1001;
97
103
  * Standard encoding for text data conversion
98
104
  */
99
105
  export const UTF8_ENCODING = 'utf8';
100
- /**
101
- * CDP target type for browser pages
102
- * Identifies page-type targets (vs service workers, extensions, etc.)
103
- */
104
- export const PAGE_TARGET_TYPE = 'page';
105
- /**
106
- * Blank page URL used by Chrome
107
- * Standard initial/empty page URL
108
- */
109
- export const BLANK_PAGE_URL = 'about:blank';
110
- /**
111
- * CDP createTarget new window flag (default: false for tabs)
112
- * Controls whether targets are created as new windows or tabs
113
- */
114
- export const CDP_NEW_WINDOW_FLAG = false;
115
- /**
116
- * CDP attachToTarget flatten flag (default: true for simplified sessions)
117
- * Prevents nested session hierarchies for easier management
118
- */
119
- export const CDP_FLATTEN_SESSION_FLAG = true;
120
106
  /**
121
107
  * HTTP localhost address for CDP endpoints
122
108
  * Standard loopback address for Chrome DevTools Protocol
@@ -130,6 +116,10 @@ export const HEADLESS_FLAG = '--headless=new';
130
116
  /**
131
117
  * BDG-specific Chrome flags for automation and popup suppression
132
118
  * These flags are automatically applied when launching Chrome via chrome-launcher
119
+ *
120
+ * Note: Chrome has a known issue (Chromium bug #854609) where it steals focus on macOS
121
+ * despite --disable-background-mode. This is a long-standing Chrome bug with no workaround.
122
+ * Headless mode (--headless) avoids this issue entirely.
133
123
  */
134
124
  export const BDG_CHROME_FLAGS = [
135
125
  '--no-first-run',
@@ -139,6 +129,17 @@ export const BDG_CHROME_FLAGS = [
139
129
  '--disable-infobars', // Disable all info bars including restore prompt
140
130
  '--disable-notifications', // Suppress notification permission prompts
141
131
  '--disable-features=Translate', // Suppress Google Translate popup (replaces deprecated --disable-translate)
132
+ '--disable-background-mode', // Attempt to prevent focus stealing (doesn't work reliably on macOS)
133
+ ];
134
+ /**
135
+ * Docker-specific Chrome flags to work around GPU/graphics limitations
136
+ * These flags disable hardware acceleration and GPU features that fail in containerized environments
137
+ */
138
+ export const DOCKER_CHROME_FLAGS = [
139
+ '--disable-gpu', // Disable GPU hardware acceleration
140
+ '--disable-dev-shm-usage', // Overcome limited resource problems in Docker
141
+ '--disable-software-rasterizer', // Don't fall back to software rendering
142
+ '--single-process', // Run Chrome in single-process mode (safer in containers)
142
143
  ];
143
144
  /**
144
145
  * BDG-specific Chrome preferences for automation
@@ -203,11 +204,6 @@ export const STALE_REQUEST_TIMEOUT = 60000;
203
204
  * How often to check for and remove stale network requests
204
205
  */
205
206
  export const STALE_REQUEST_CLEANUP_INTERVAL = 30000;
206
- /**
207
- * Memory usage logging interval (30 seconds)
208
- * How often to log memory statistics during session collection
209
- */
210
- export const MEMORY_LOG_INTERVAL = 30000;
211
207
  /**
212
208
  * Default page readiness timeout (2 seconds)
213
209
  * Maximum time to wait for page to be ready before proceeding
@@ -243,16 +239,6 @@ export const PORT_OPTION_DESCRIPTION = 'Chrome debugging port';
243
239
  * Description for timeout option in CLI commands
244
240
  */
245
241
  export const TIMEOUT_OPTION_DESCRIPTION = 'Auto-stop after timeout (optional)';
246
- /**
247
- * Description for reuse-tab option in CLI commands
248
- */
249
- export const REUSE_TAB_OPTION_DESCRIPTION = 'Navigate existing tab instead of creating new one';
250
- /**
251
- * Default value for reuse-tab option
252
- * When true, bdg will attempt to find and reuse existing tabs instead of creating new ones
253
- * This is the preferred default for better UX and avoiding tab proliferation
254
- */
255
- export const DEFAULT_REUSE_TAB = true;
256
242
  /**
257
243
  * Description for user-data-dir option in CLI commands
258
244
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB;IAChB,4BAA4B;IAC5B,uCAAuC;IACvC,kCAAkC,EAAE,yDAAyD;IAC7F,oBAAoB,EAAE,iDAAiD;IACvE,yBAAyB,EAAE,2CAA2C;IACtE,8BAA8B,EAAE,4EAA4E;CAC7G,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA4B;IACvD,uCAAuC,EAAE,KAAK,EAAE,2CAA2C;IAC3F,mBAAmB,EAAE,KAAK,EAAE,iCAAiC;IAC7D,wBAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,gCAAgC;CAClE,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAExD,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAE7D,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,SAAS;QACpD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,oCAAoC,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mDAAmD,CAAC;AAEhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,6DAA6D,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}