browser-debugger-cli 0.6.2 → 0.6.5

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 (328) hide show
  1. package/README.md +9 -3
  2. package/dist/cdp/protocol.d.ts.map +1 -1
  3. package/dist/cdp/protocol.js +0 -6
  4. package/dist/cdp/protocol.js.map +1 -1
  5. package/dist/cdp/schema.d.ts.map +1 -1
  6. package/dist/cdp/schema.js +0 -2
  7. package/dist/cdp/schema.js.map +1 -1
  8. package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts +12 -0
  9. package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts.map +1 -0
  10. package/dist/commands/__tests__/machineReadableHelp.contract.test.js +102 -0
  11. package/dist/commands/__tests__/machineReadableHelp.contract.test.js.map +1 -0
  12. package/dist/commands/cdp.d.ts.map +1 -1
  13. package/dist/commands/cdp.js +9 -24
  14. package/dist/commands/cdp.js.map +1 -1
  15. package/dist/commands/cleanup.d.ts.map +1 -1
  16. package/dist/commands/cleanup.js +0 -13
  17. package/dist/commands/cleanup.js.map +1 -1
  18. package/dist/commands/console.d.ts.map +1 -1
  19. package/dist/commands/console.js +22 -7
  20. package/dist/commands/console.js.map +1 -1
  21. package/dist/commands/details.d.ts.map +1 -1
  22. package/dist/commands/details.js +0 -5
  23. package/dist/commands/details.js.map +1 -1
  24. package/dist/commands/dom/a11y.d.ts.map +1 -1
  25. package/dist/commands/dom/a11y.js +51 -15
  26. package/dist/commands/dom/a11y.js.map +1 -1
  27. package/dist/commands/dom/evalHelpers.d.ts +1 -1
  28. package/dist/commands/dom/evalHelpers.d.ts.map +1 -1
  29. package/dist/commands/dom/evalHelpers.js +3 -7
  30. package/dist/commands/dom/evalHelpers.js.map +1 -1
  31. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
  32. package/dist/commands/dom/formFillHelpers.js +30 -11
  33. package/dist/commands/dom/formFillHelpers.js.map +1 -1
  34. package/dist/commands/dom/formInteraction.d.ts.map +1 -1
  35. package/dist/commands/dom/formInteraction.js +0 -5
  36. package/dist/commands/dom/formInteraction.js.map +1 -1
  37. package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -1
  38. package/dist/commands/dom/formSubmitHelpers.js +0 -13
  39. package/dist/commands/dom/formSubmitHelpers.js.map +1 -1
  40. package/dist/commands/dom/helpers.d.ts.map +1 -1
  41. package/dist/commands/dom/helpers.js +0 -22
  42. package/dist/commands/dom/helpers.js.map +1 -1
  43. package/dist/commands/dom/index.d.ts.map +1 -1
  44. package/dist/commands/dom/index.js +85 -19
  45. package/dist/commands/dom/index.js.map +1 -1
  46. package/dist/commands/dom/reactEventHelpers.d.ts +3 -3
  47. package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -1
  48. package/dist/commands/dom/reactEventHelpers.js +3 -31
  49. package/dist/commands/dom/reactEventHelpers.js.map +1 -1
  50. package/dist/commands/machineReadableHelp.d.ts +48 -0
  51. package/dist/commands/machineReadableHelp.d.ts.map +1 -1
  52. package/dist/commands/machineReadableHelp.js +80 -0
  53. package/dist/commands/machineReadableHelp.js.map +1 -1
  54. package/dist/commands/network.d.ts.map +1 -1
  55. package/dist/commands/network.js +185 -10
  56. package/dist/commands/network.js.map +1 -1
  57. package/dist/commands/peek.d.ts.map +1 -1
  58. package/dist/commands/peek.js +17 -14
  59. package/dist/commands/peek.js.map +1 -1
  60. package/dist/commands/shared/CommandRunner.d.ts +2 -0
  61. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  62. package/dist/commands/shared/CommandRunner.js +3 -8
  63. package/dist/commands/shared/CommandRunner.js.map +1 -1
  64. package/dist/commands/shared/__tests__/validation.unit.test.d.ts +7 -0
  65. package/dist/commands/shared/__tests__/validation.unit.test.d.ts.map +1 -0
  66. package/dist/commands/shared/__tests__/validation.unit.test.js +141 -0
  67. package/dist/commands/shared/__tests__/validation.unit.test.js.map +1 -0
  68. package/dist/commands/shared/startHelpers.d.ts.map +1 -1
  69. package/dist/commands/shared/startHelpers.js +0 -10
  70. package/dist/commands/shared/startHelpers.js.map +1 -1
  71. package/dist/commands/shared/validation.d.ts +19 -0
  72. package/dist/commands/shared/validation.d.ts.map +1 -1
  73. package/dist/commands/shared/validation.js +110 -7
  74. package/dist/commands/shared/validation.js.map +1 -1
  75. package/dist/commands/start.d.ts.map +1 -1
  76. package/dist/commands/start.js +0 -6
  77. package/dist/commands/start.js.map +1 -1
  78. package/dist/commands/status.d.ts.map +1 -1
  79. package/dist/commands/status.js +0 -2
  80. package/dist/commands/status.js.map +1 -1
  81. package/dist/commands/stop.d.ts.map +1 -1
  82. package/dist/commands/stop.js +2 -11
  83. package/dist/commands/stop.js.map +1 -1
  84. package/dist/commands/tail.js +6 -7
  85. package/dist/commands/tail.js.map +1 -1
  86. package/dist/commands.d.ts.map +1 -1
  87. package/dist/commands.js +0 -5
  88. package/dist/commands.js.map +1 -1
  89. package/dist/connection/cdp.d.ts.map +1 -1
  90. package/dist/connection/cdp.js +9 -12
  91. package/dist/connection/cdp.js.map +1 -1
  92. package/dist/connection/diagnostics.d.ts.map +1 -1
  93. package/dist/connection/diagnostics.js +7 -4
  94. package/dist/connection/diagnostics.js.map +1 -1
  95. package/dist/connection/pageReadiness.d.ts.map +1 -1
  96. package/dist/connection/pageReadiness.js +0 -1
  97. package/dist/connection/pageReadiness.js.map +1 -1
  98. package/dist/constants.d.ts.map +1 -1
  99. package/dist/constants.js +3 -1
  100. package/dist/constants.js.map +1 -1
  101. package/dist/daemon/__tests__/commandRegistry.contract.test.js +259 -0
  102. package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -1
  103. package/dist/daemon/handlers/BaseHandler.d.ts +75 -0
  104. package/dist/daemon/handlers/BaseHandler.d.ts.map +1 -0
  105. package/dist/daemon/handlers/BaseHandler.js +103 -0
  106. package/dist/daemon/handlers/BaseHandler.js.map +1 -0
  107. package/dist/daemon/handlers/CommandHandlers.d.ts +3 -4
  108. package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -1
  109. package/dist/daemon/handlers/CommandHandlers.js +14 -52
  110. package/dist/daemon/handlers/CommandHandlers.js.map +1 -1
  111. package/dist/daemon/handlers/QueryHandlers.d.ts +8 -6
  112. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -1
  113. package/dist/daemon/handlers/QueryHandlers.js +42 -94
  114. package/dist/daemon/handlers/QueryHandlers.js.map +1 -1
  115. package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -1
  116. package/dist/daemon/handlers/SessionHandlers.js +0 -15
  117. package/dist/daemon/handlers/SessionHandlers.js.map +1 -1
  118. package/dist/daemon/handlers/requestHandlers.d.ts +5 -1
  119. package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -1
  120. package/dist/daemon/handlers/requestHandlers.js +7 -2
  121. package/dist/daemon/handlers/requestHandlers.js.map +1 -1
  122. package/dist/daemon/handlers/responseHandler.d.ts.map +1 -1
  123. package/dist/daemon/handlers/responseHandler.js +19 -8
  124. package/dist/daemon/handlers/responseHandler.js.map +1 -1
  125. package/dist/daemon/ipcServer.d.ts.map +1 -1
  126. package/dist/daemon/ipcServer.js +4 -11
  127. package/dist/daemon/ipcServer.js.map +1 -1
  128. package/dist/daemon/launcher.d.ts.map +1 -1
  129. package/dist/daemon/launcher.js +0 -18
  130. package/dist/daemon/launcher.js.map +1 -1
  131. package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -1
  132. package/dist/daemon/lifecycle/cdpSetup.js +0 -4
  133. package/dist/daemon/lifecycle/cdpSetup.js.map +1 -1
  134. package/dist/daemon/lifecycle/chromeConnection.js +0 -1
  135. package/dist/daemon/lifecycle/chromeConnection.js.map +1 -1
  136. package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -1
  137. package/dist/daemon/lifecycle/signalHandlers.js +0 -3
  138. package/dist/daemon/lifecycle/signalHandlers.js.map +1 -1
  139. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
  140. package/dist/daemon/lifecycle/workerCleanup.js +0 -7
  141. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
  142. package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -1
  143. package/dist/daemon/lifecycle/workerIpc.js +0 -1
  144. package/dist/daemon/lifecycle/workerIpc.js.map +1 -1
  145. package/dist/daemon/patternDefinitions.d.ts +47 -0
  146. package/dist/daemon/patternDefinitions.d.ts.map +1 -0
  147. package/dist/daemon/patternDefinitions.js +71 -0
  148. package/dist/daemon/patternDefinitions.js.map +1 -0
  149. package/dist/daemon/patternDetector.d.ts +60 -0
  150. package/dist/daemon/patternDetector.d.ts.map +1 -0
  151. package/dist/daemon/patternDetector.js +74 -0
  152. package/dist/daemon/patternDetector.js.map +1 -0
  153. package/dist/daemon/server/JsonlParser.d.ts.map +1 -1
  154. package/dist/daemon/server/JsonlParser.js +0 -2
  155. package/dist/daemon/server/JsonlParser.js.map +1 -1
  156. package/dist/daemon/startSession.d.ts.map +1 -1
  157. package/dist/daemon/startSession.js +0 -15
  158. package/dist/daemon/startSession.js.map +1 -1
  159. package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts +11 -0
  160. package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts.map +1 -0
  161. package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js +136 -0
  162. package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js.map +1 -0
  163. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  164. package/dist/daemon/worker/commandRegistry.js +46 -2
  165. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  166. package/dist/daemon/worker/plugins.d.ts.map +1 -1
  167. package/dist/daemon/worker/plugins.js +0 -3
  168. package/dist/daemon/worker/plugins.js.map +1 -1
  169. package/dist/daemon/worker.js +0 -9
  170. package/dist/daemon/worker.js.map +1 -1
  171. package/dist/daemon.js +0 -2
  172. package/dist/daemon.js.map +1 -1
  173. package/dist/index.js +0 -14
  174. package/dist/index.js.map +1 -1
  175. package/dist/ipc/client.d.ts +47 -1
  176. package/dist/ipc/client.d.ts.map +1 -1
  177. package/dist/ipc/client.js +51 -0
  178. package/dist/ipc/client.js.map +1 -1
  179. package/dist/ipc/index.d.ts.map +1 -1
  180. package/dist/ipc/index.js +0 -6
  181. package/dist/ipc/index.js.map +1 -1
  182. package/dist/ipc/protocol/commands.d.ts +46 -0
  183. package/dist/ipc/protocol/commands.d.ts.map +1 -1
  184. package/dist/ipc/protocol/commands.js +8 -0
  185. package/dist/ipc/protocol/commands.js.map +1 -1
  186. package/dist/ipc/session/queries.d.ts +26 -2
  187. package/dist/ipc/session/queries.d.ts.map +1 -1
  188. package/dist/ipc/transport/index.d.ts.map +1 -1
  189. package/dist/ipc/transport/index.js +0 -1
  190. package/dist/ipc/transport/index.js.map +1 -1
  191. package/dist/ipc/transport/jsonl.d.ts.map +1 -1
  192. package/dist/ipc/transport/jsonl.js +0 -1
  193. package/dist/ipc/transport/jsonl.js.map +1 -1
  194. package/dist/session/cleanup.d.ts.map +1 -1
  195. package/dist/session/cleanup.js +2 -20
  196. package/dist/session/cleanup.js.map +1 -1
  197. package/dist/session/queryCache.d.ts +35 -0
  198. package/dist/session/queryCache.d.ts.map +1 -0
  199. package/dist/session/queryCache.js +83 -0
  200. package/dist/session/queryCache.js.map +1 -0
  201. package/dist/telemetry/__tests__/filters.unit.test.js +119 -1
  202. package/dist/telemetry/__tests__/filters.unit.test.js.map +1 -1
  203. package/dist/telemetry/__tests__/network.contract.test.js +114 -0
  204. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  205. package/dist/telemetry/a11y.d.ts +8 -5
  206. package/dist/telemetry/a11y.d.ts.map +1 -1
  207. package/dist/telemetry/a11y.js +34 -19
  208. package/dist/telemetry/a11y.js.map +1 -1
  209. package/dist/telemetry/dom.js +4 -4
  210. package/dist/telemetry/dom.js.map +1 -1
  211. package/dist/telemetry/filters.d.ts +17 -0
  212. package/dist/telemetry/filters.d.ts.map +1 -1
  213. package/dist/telemetry/filters.js +25 -0
  214. package/dist/telemetry/filters.js.map +1 -1
  215. package/dist/telemetry/har/__tests__/builder.unit.test.d.ts +8 -0
  216. package/dist/telemetry/har/__tests__/builder.unit.test.d.ts.map +1 -0
  217. package/dist/telemetry/har/__tests__/builder.unit.test.js +694 -0
  218. package/dist/telemetry/har/__tests__/builder.unit.test.js.map +1 -0
  219. package/dist/telemetry/har/builder.d.ts +43 -0
  220. package/dist/telemetry/har/builder.d.ts.map +1 -0
  221. package/dist/telemetry/har/builder.js +440 -0
  222. package/dist/telemetry/har/builder.js.map +1 -0
  223. package/dist/telemetry/har/types.d.ts +290 -0
  224. package/dist/telemetry/har/types.d.ts.map +1 -0
  225. package/dist/telemetry/har/types.js +7 -0
  226. package/dist/telemetry/har/types.js.map +1 -0
  227. package/dist/telemetry/network.d.ts.map +1 -1
  228. package/dist/telemetry/network.js +37 -4
  229. package/dist/telemetry/network.js.map +1 -1
  230. package/dist/types.d.ts +31 -0
  231. package/dist/types.d.ts.map +1 -1
  232. package/dist/ui/OutputBuilder.d.ts.map +1 -1
  233. package/dist/ui/OutputBuilder.js +0 -8
  234. package/dist/ui/OutputBuilder.js.map +1 -1
  235. package/dist/ui/errors/CommandError.d.ts +5 -1
  236. package/dist/ui/errors/CommandError.d.ts.map +1 -1
  237. package/dist/ui/errors/CommandError.js +0 -1
  238. package/dist/ui/errors/CommandError.js.map +1 -1
  239. package/dist/ui/errors/index.d.ts.map +1 -1
  240. package/dist/ui/errors/index.js +0 -2
  241. package/dist/ui/errors/index.js.map +1 -1
  242. package/dist/ui/formatters/__tests__/preview.unit.test.d.ts +13 -0
  243. package/dist/ui/formatters/__tests__/preview.unit.test.d.ts.map +1 -0
  244. package/dist/ui/formatters/__tests__/preview.unit.test.js +180 -0
  245. package/dist/ui/formatters/__tests__/preview.unit.test.js.map +1 -0
  246. package/dist/ui/formatters/details.d.ts.map +1 -1
  247. package/dist/ui/formatters/details.js +1 -0
  248. package/dist/ui/formatters/details.js.map +1 -1
  249. package/dist/ui/formatters/dom.d.ts.map +1 -1
  250. package/dist/ui/formatters/dom.js +5 -5
  251. package/dist/ui/formatters/dom.js.map +1 -1
  252. package/dist/ui/formatters/helpFormatters.d.ts +41 -0
  253. package/dist/ui/formatters/helpFormatters.d.ts.map +1 -0
  254. package/dist/ui/formatters/helpFormatters.js +80 -0
  255. package/dist/ui/formatters/helpFormatters.js.map +1 -0
  256. package/dist/ui/formatters/index.d.ts +1 -0
  257. package/dist/ui/formatters/index.d.ts.map +1 -1
  258. package/dist/ui/formatters/index.js +1 -0
  259. package/dist/ui/formatters/index.js.map +1 -1
  260. package/dist/ui/formatters/networkHeaders.d.ts +14 -0
  261. package/dist/ui/formatters/networkHeaders.d.ts.map +1 -0
  262. package/dist/ui/formatters/networkHeaders.js +47 -0
  263. package/dist/ui/formatters/networkHeaders.js.map +1 -0
  264. package/dist/ui/formatters/preview.d.ts.map +1 -1
  265. package/dist/ui/formatters/preview.js +102 -33
  266. package/dist/ui/formatters/preview.js.map +1 -1
  267. package/dist/ui/formatters/sessionFormatters.d.ts +58 -0
  268. package/dist/ui/formatters/sessionFormatters.d.ts.map +1 -0
  269. package/dist/ui/formatters/sessionFormatters.js +116 -0
  270. package/dist/ui/formatters/sessionFormatters.js.map +1 -0
  271. package/dist/ui/formatters/status.d.ts.map +1 -1
  272. package/dist/ui/formatters/status.js +0 -11
  273. package/dist/ui/formatters/status.js.map +1 -1
  274. package/dist/ui/formatting.d.ts.map +1 -1
  275. package/dist/ui/formatting.js +0 -6
  276. package/dist/ui/formatting.js.map +1 -1
  277. package/dist/ui/logging/logger.d.ts +1 -1
  278. package/dist/ui/logging/logger.d.ts.map +1 -1
  279. package/dist/ui/logging/logger.js.map +1 -1
  280. package/dist/ui/messages/chrome.d.ts.map +1 -1
  281. package/dist/ui/messages/chrome.js +0 -6
  282. package/dist/ui/messages/chrome.js.map +1 -1
  283. package/dist/ui/messages/commands.d.ts +9 -0
  284. package/dist/ui/messages/commands.d.ts.map +1 -1
  285. package/dist/ui/messages/commands.js +11 -13
  286. package/dist/ui/messages/commands.js.map +1 -1
  287. package/dist/ui/messages/debug.d.ts.map +1 -1
  288. package/dist/ui/messages/debug.js +0 -6
  289. package/dist/ui/messages/debug.js.map +1 -1
  290. package/dist/ui/messages/errors.d.ts +53 -0
  291. package/dist/ui/messages/errors.d.ts.map +1 -1
  292. package/dist/ui/messages/errors.js +59 -0
  293. package/dist/ui/messages/errors.js.map +1 -1
  294. package/dist/ui/messages/hints.d.ts +33 -0
  295. package/dist/ui/messages/hints.d.ts.map +1 -0
  296. package/dist/ui/messages/hints.js +37 -0
  297. package/dist/ui/messages/hints.js.map +1 -0
  298. package/dist/ui/messages/internal.d.ts.map +1 -1
  299. package/dist/ui/messages/internal.js +0 -3
  300. package/dist/ui/messages/internal.js.map +1 -1
  301. package/dist/ui/messages/preview.d.ts.map +1 -1
  302. package/dist/ui/messages/preview.js +0 -12
  303. package/dist/ui/messages/preview.js.map +1 -1
  304. package/dist/ui/messages/session.d.ts +11 -1
  305. package/dist/ui/messages/session.d.ts.map +1 -1
  306. package/dist/ui/messages/session.js +14 -24
  307. package/dist/ui/messages/session.js.map +1 -1
  308. package/dist/utils/atomicFile.d.ts.map +1 -1
  309. package/dist/utils/atomicFile.js +9 -6
  310. package/dist/utils/atomicFile.js.map +1 -1
  311. package/dist/utils/decisionTrees.d.ts +54 -0
  312. package/dist/utils/decisionTrees.d.ts.map +1 -0
  313. package/dist/utils/decisionTrees.js +171 -0
  314. package/dist/utils/decisionTrees.js.map +1 -0
  315. package/dist/utils/exitCodes.d.ts.map +1 -1
  316. package/dist/utils/exitCodes.js +0 -2
  317. package/dist/utils/exitCodes.js.map +1 -1
  318. package/dist/utils/taskMappings.d.ts +47 -0
  319. package/dist/utils/taskMappings.d.ts.map +1 -0
  320. package/dist/utils/taskMappings.js +118 -0
  321. package/dist/utils/taskMappings.js.map +1 -0
  322. package/dist/utils/validation.d.ts.map +1 -1
  323. package/dist/utils/validation.js +0 -3
  324. package/dist/utils/validation.js.map +1 -1
  325. package/dist/utils/version.d.ts.map +1 -1
  326. package/dist/utils/version.js +0 -1
  327. package/dist/utils/version.js.map +1 -1
  328. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AASxB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAQjG;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8FhF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAkIlF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyD3B"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAQxB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAQjG;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoFhF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAwHlF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAuD3B"}
@@ -24,36 +24,29 @@ const CDP_CONCURRENCY_LIMIT = 10;
24
24
  * @throws CDPConnectionError if CDP operation fails
25
25
  */
26
26
  export async function queryDOMElements(selector) {
27
- // Enable DOM domain
28
27
  await callCDP('DOM.enable', {});
29
- // Get document root
30
28
  const docResponse = await callCDP('DOM.getDocument', {});
31
29
  const doc = docResponse.data?.result;
32
30
  if (!doc?.root?.nodeId) {
33
31
  throw new CDPConnectionError('Failed to get document root', new Error('No root node'));
34
32
  }
35
- // Query selector
36
33
  const queryResponse = await callCDP('DOM.querySelectorAll', {
37
34
  nodeId: doc.root.nodeId,
38
35
  selector,
39
36
  });
40
37
  const queryResult = queryResponse.data?.result;
41
38
  const nodeIds = queryResult?.nodeIds ?? [];
42
- // Log progress for large queries
43
39
  if (nodeIds.length > 20) {
44
40
  log.debug(`Querying ${nodeIds.length} elements with selector: ${selector}`);
45
41
  }
46
- // Get info for each node with concurrency control
47
42
  const limiter = new ConcurrencyLimiter(CDP_CONCURRENCY_LIMIT);
48
43
  const nodes = await Promise.all(nodeIds.map((nodeId, index) => limiter.run(async () => {
49
- // Describe node
50
44
  const descResponse = await callCDP('DOM.describeNode', { nodeId });
51
45
  const descResult = descResponse.data?.result;
52
46
  const nodeDesc = descResult?.node;
53
47
  if (!nodeDesc) {
54
48
  return { index, nodeId };
55
49
  }
56
- // Parse attributes
57
50
  const attributes = {};
58
51
  if (nodeDesc.attributes) {
59
52
  for (let i = 0; i < nodeDesc.attributes.length; i += 2) {
@@ -64,14 +57,11 @@ export async function queryDOMElements(selector) {
64
57
  }
65
58
  }
66
59
  }
67
- // Extract classes and create preview
68
60
  const classes = attributes['class']?.split(/\s+/).filter((c) => c.length > 0);
69
61
  const tag = nodeDesc.nodeName.toLowerCase();
70
- // Get outer HTML for preview
71
62
  const htmlResponse = await callCDP('DOM.getOuterHTML', { nodeId });
72
63
  const htmlResult = htmlResponse.data?.result;
73
64
  const outerHTML = htmlResult?.outerHTML ?? '';
74
- // Create preview text
75
65
  const textContent = outerHTML
76
66
  .replace(/<[^>]*>/g, '')
77
67
  .replace(/\s+/g, ' ')
@@ -106,13 +96,11 @@ export async function getDOMElements(options) {
106
96
  nodeIds = [options.nodeId];
107
97
  }
108
98
  else if (options.selector) {
109
- // Get document root
110
99
  const docResponse = await callCDP('DOM.getDocument', {});
111
100
  const doc = docResponse.data?.result;
112
101
  if (!doc?.root?.nodeId) {
113
102
  throw new CDPConnectionError('Failed to get document root', new Error('No root node'));
114
103
  }
115
- // Query selector
116
104
  const queryResponse = await callCDP('DOM.querySelectorAll', {
117
105
  nodeId: doc.root.nodeId,
118
106
  selector: options.selector,
@@ -122,7 +110,6 @@ export async function getDOMElements(options) {
122
110
  if (nodeIds.length === 0) {
123
111
  throw new CommandError(`No elements found matching "${options.selector}"`, { suggestion: 'Verify the CSS selector is correct' }, EXIT_CODES.RESOURCE_NOT_FOUND);
124
112
  }
125
- // Apply filtering
126
113
  if (options.nth !== undefined) {
127
114
  if (options.nth < 1 || options.nth > nodeIds.length) {
128
115
  throw new CommandError(`--nth ${options.nth} out of range (found ${nodeIds.length} elements)`, { suggestion: `Use a value between 1 and ${nodeIds.length}` }, EXIT_CODES.INVALID_ARGUMENTS);
@@ -134,7 +121,6 @@ export async function getDOMElements(options) {
134
121
  nodeIds = [nthNode];
135
122
  }
136
123
  else if (!options.all) {
137
- // Default: return first match only
138
124
  const firstNode = nodeIds[0];
139
125
  if (firstNode === undefined) {
140
126
  throw new CommandError('No elements found', {}, EXIT_CODES.RESOURCE_NOT_FOUND);
@@ -145,21 +131,17 @@ export async function getDOMElements(options) {
145
131
  else {
146
132
  throw new CommandError('Either selector or nodeId must be provided', {}, EXIT_CODES.INVALID_ARGUMENTS);
147
133
  }
148
- // Log progress for large fetches
149
134
  if (nodeIds.length > 20) {
150
135
  log.debug(`Fetching details for ${nodeIds.length} DOM elements`);
151
136
  }
152
- // Fetch node details with concurrency control
153
137
  const limiter = new ConcurrencyLimiter(CDP_CONCURRENCY_LIMIT);
154
138
  const nodes = await Promise.all(nodeIds.map((nodeId) => limiter.run(async () => {
155
- // Describe node
156
139
  const descResponse = await callCDP('DOM.describeNode', { nodeId });
157
140
  const descResult = descResponse.data?.result;
158
141
  const nodeDesc = descResult?.node;
159
142
  if (!nodeDesc) {
160
143
  return { nodeId };
161
144
  }
162
- // Parse attributes
163
145
  const attributes = {};
164
146
  if (nodeDesc.attributes) {
165
147
  for (let i = 0; i < nodeDesc.attributes.length; i += 2) {
@@ -170,10 +152,8 @@ export async function getDOMElements(options) {
170
152
  }
171
153
  }
172
154
  }
173
- // Extract classes
174
155
  const classes = attributes['class']?.split(/\s+/).filter((c) => c.length > 0);
175
156
  const tag = nodeDesc.nodeName.toLowerCase();
176
- // Get outer HTML
177
157
  const htmlResponse = await callCDP('DOM.getOuterHTML', { nodeId });
178
158
  const htmlResult = htmlResponse.data?.result;
179
159
  const outerHTML = htmlResult?.outerHTML;
@@ -202,12 +182,10 @@ export async function capturePageScreenshot(outputPath, options = {}) {
202
182
  const format = options.format ?? 'png';
203
183
  const quality = format === 'jpeg' ? (options.quality ?? 90) : undefined;
204
184
  const fullPage = options.fullPage ?? true;
205
- // Get viewport dimensions
206
185
  const metricsResponse = await callCDP('Page.getLayoutMetrics', {});
207
186
  const metricsResult = metricsResponse.data?.result;
208
187
  const contentSize = metricsResult?.contentSize ?? { width: 0, height: 0 };
209
188
  const viewport = metricsResult?.visualViewport ?? { clientWidth: 0, clientHeight: 0 };
210
- // Capture screenshot
211
189
  const screenshotResponse = await callCDP('Page.captureScreenshot', {
212
190
  format,
213
191
  ...(quality !== undefined && { quality }),
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/dom/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/dom/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiNzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoTzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD1D"}
@@ -1,10 +1,11 @@
1
1
  import { registerA11yCommands } from '../../commands/dom/a11y.js';
2
2
  import { queryDOMElements, getDOMElements, capturePageScreenshot } from '../../commands/dom/helpers.js';
3
3
  import { runCommand } from '../../commands/shared/CommandRunner.js';
4
- import { getA11yNodeBySelector } from '../../telemetry/a11y.js';
4
+ import { resolveA11yNode } from '../../telemetry/a11y.js';
5
5
  import { CommandError } from '../../ui/errors/index.js';
6
6
  import { formatDomQuery, formatDomGet, formatDomEval, formatDomScreenshot, } from '../../ui/formatters/dom.js';
7
7
  import { semantic } from '../../ui/formatters/semantic.js';
8
+ import { elementNotFoundError } from '../../ui/messages/errors.js';
8
9
  import { EXIT_CODES } from '../../utils/exitCodes.js';
9
10
  import { filterDefined } from '../../utils/objects.js';
10
11
  import { parsePositiveIntOption } from '../../utils/validation.js';
@@ -13,6 +14,7 @@ import { parsePositiveIntOption } from '../../utils/validation.js';
13
14
  *
14
15
  * Queries the DOM using a CSS selector and displays matching elements.
15
16
  * Uses CDP relay through worker's persistent connection.
17
+ * Results are cached for index-based access via "bdg dom get <index>".
16
18
  *
17
19
  * @param selector - CSS selector to query (e.g., ".error", "#app", "button")
18
20
  * @param options - Command options
@@ -20,19 +22,85 @@ import { parsePositiveIntOption } from '../../utils/validation.js';
20
22
  async function handleDomQuery(selector, options) {
21
23
  await runCommand(async () => {
22
24
  const result = await queryDOMElements(selector);
25
+ const { setSessionQueryCache } = await import('../../session/queryCache.js');
26
+ setSessionQueryCache(result);
23
27
  return { success: true, data: result };
24
28
  }, options, formatDomQuery);
25
29
  }
30
+ /**
31
+ * Retrieve cached node by index with validation.
32
+ *
33
+ * @param index - Zero-based index from query results
34
+ * @returns Node from cache
35
+ * @throws CommandError if cache missing, index out of range, or node not found
36
+ */
37
+ async function getCachedNodeByIndex(index) {
38
+ const { getSessionQueryCache } = await import('../../session/queryCache.js');
39
+ const cachedQuery = getSessionQueryCache();
40
+ if (!cachedQuery) {
41
+ throw new CommandError('No cached query results found', {
42
+ suggestion: 'Run "bdg dom query <selector>" first to generate indexed results',
43
+ }, EXIT_CODES.INVALID_ARGUMENTS);
44
+ }
45
+ if (index < 0 || index >= cachedQuery.nodes.length) {
46
+ throw new CommandError(`Index ${index} out of range (found ${cachedQuery.nodes.length} elements)`, {
47
+ suggestion: `Use an index between 0 and ${cachedQuery.nodes.length - 1}`,
48
+ }, EXIT_CODES.INVALID_ARGUMENTS);
49
+ }
50
+ const targetNode = cachedQuery.nodes[index];
51
+ if (!targetNode) {
52
+ throw new CommandError(`Element at index ${index} not found`, {}, EXIT_CODES.RESOURCE_NOT_FOUND);
53
+ }
54
+ return targetNode;
55
+ }
26
56
  /**
27
57
  * Handle bdg dom get command
28
58
  *
29
59
  * Retrieves semantic accessibility structure by default (70% token reduction).
30
60
  * Use --raw flag for full HTML output.
61
+ * Supports index-based access from query results (e.g., "bdg dom get 0").
31
62
  *
32
- * @param selector - CSS selector (e.g., ".error")
63
+ * @param selectorOrIndex - CSS selector (e.g., ".error") or numeric index from query results
33
64
  * @param options - Command options including --all, --nth, nodeId, and raw
34
65
  */
35
- async function handleDomGet(selector, options) {
66
+ async function handleDomGet(selectorOrIndex, options) {
67
+ const isNumericIndex = /^\d+$/.test(selectorOrIndex);
68
+ if (isNumericIndex) {
69
+ await handleIndexGet(parseInt(selectorOrIndex, 10), options);
70
+ }
71
+ else {
72
+ await handleSelectorGet(selectorOrIndex, options);
73
+ }
74
+ }
75
+ /**
76
+ * Handle get command with numeric index
77
+ */
78
+ async function handleIndexGet(index, options) {
79
+ if (options.raw) {
80
+ await runCommand(async () => {
81
+ const targetNode = await getCachedNodeByIndex(index);
82
+ const getOptions = filterDefined({
83
+ nodeId: targetNode.nodeId,
84
+ });
85
+ const result = await getDOMElements(getOptions);
86
+ return { success: true, data: result };
87
+ }, options, formatDomGet);
88
+ }
89
+ else {
90
+ await runCommand(async () => {
91
+ const targetNode = await getCachedNodeByIndex(index);
92
+ const node = await resolveA11yNode('', targetNode.nodeId);
93
+ if (!node) {
94
+ throw new CommandError(elementNotFoundError(`index ${index}`), {}, EXIT_CODES.RESOURCE_NOT_FOUND);
95
+ }
96
+ return { success: true, data: node };
97
+ }, options, formatSemanticNode);
98
+ }
99
+ }
100
+ /**
101
+ * Handle get command with CSS selector
102
+ */
103
+ async function handleSelectorGet(selector, options) {
36
104
  if (options.raw) {
37
105
  await runCommand(async () => {
38
106
  const getOptions = filterDefined({
@@ -47,21 +115,25 @@ async function handleDomGet(selector, options) {
47
115
  }
48
116
  else {
49
117
  await runCommand(async () => {
50
- const node = await getA11yNodeBySelector(selector);
118
+ const node = await resolveA11yNode(selector);
51
119
  if (!node) {
52
- throw new CommandError(`Element not found or has no accessibility information: ${selector}`, { suggestion: 'Try: bdg dom query <selector> to verify element exists' }, EXIT_CODES.RESOURCE_NOT_FOUND);
120
+ throw new CommandError(elementNotFoundError(selector), {}, EXIT_CODES.RESOURCE_NOT_FOUND);
53
121
  }
54
122
  return { success: true, data: node };
55
- }, options, (node) => {
56
- const fakeTree = {
57
- root: node,
58
- nodes: new Map([[node.nodeId, node]]),
59
- count: 1,
60
- };
61
- return semantic(fakeTree);
62
- });
123
+ }, options, formatSemanticNode);
63
124
  }
64
125
  }
126
+ /**
127
+ * Formatter for single semantic node
128
+ */
129
+ function formatSemanticNode(node) {
130
+ const fakeTree = {
131
+ root: node,
132
+ nodes: new Map([[node.nodeId, node]]),
133
+ count: 1,
134
+ };
135
+ return semantic(fakeTree);
136
+ }
65
137
  /**
66
138
  * Handle bdg dom screenshot <path> command
67
139
  *
@@ -95,23 +167,17 @@ async function handleDomScreenshot(path, options) {
95
167
  */
96
168
  async function handleDomEval(script, options) {
97
169
  await runCommand(async () => {
98
- // Lazy load CDP connection (only needed for eval command)
99
170
  const { CDPConnection } = await import('../../connection/cdp.js');
100
171
  const { validateActiveSession, getValidatedSessionMetadata, verifyTargetExists, executeScript, } = await import('../../commands/dom/evalHelpers.js');
101
- // Validate session is running
102
172
  validateActiveSession();
103
- // Get and validate session metadata
104
173
  const metadata = getValidatedSessionMetadata();
105
- // Verify target still exists
106
174
  const port = parsePositiveIntOption('port', options.port, {
107
175
  defaultValue: 9222,
108
176
  min: 1,
109
177
  max: 65535,
110
178
  });
111
179
  await verifyTargetExists(metadata, port);
112
- // Create temporary CDP connection and execute script
113
180
  const cdp = new CDPConnection();
114
- // getValidatedSessionMetadata ensures webSocketDebuggerUrl is defined
115
181
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
116
182
  await cdp.connect(metadata.webSocketDebuggerUrl);
117
183
  const result = await executeScript(cdp, script);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dom/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dom/index.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * @remarks
17
17
  * Works with React, Vue, Angular, and vanilla JS applications.
18
18
  */
19
- export declare const REACT_FILL_SCRIPT = "\n(function(selector, value, options) {\n const el = document.querySelector(selector);\n \n if (!el) {\n return { \n success: false, \n error: 'Element not found',\n selector: selector\n };\n }\n \n // Check if element is fillable\n const tagName = el.tagName.toLowerCase();\n const inputType = el.type?.toLowerCase();\n \n const isFillable = (\n tagName === 'input' || \n tagName === 'textarea' || \n tagName === 'select' ||\n el.isContentEditable\n );\n \n if (!isFillable) {\n return {\n success: false,\n error: 'Element is not fillable',\n elementType: tagName,\n suggestion: 'Only input, textarea, select, and contenteditable elements can be filled'\n };\n }\n \n // Focus element first\n el.focus();\n \n // Handle different input types\n if (tagName === 'select') {\n // For select elements\n el.value = value;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (inputType === 'checkbox' || inputType === 'radio') {\n // For checkbox/radio, value should be \"true\" or \"false\"\n const shouldCheck = value === 'true' || value === true;\n el.checked = shouldCheck;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (inputType === 'file') {\n return {\n success: false,\n error: 'File inputs require CDP DOM.setFileInputFiles method',\n suggestion: 'Use: bdg cdp DOM.setFileInputFiles --params {\\\"files\\\":[\\\"path\\\"]}'\n };\n } else if (el.isContentEditable) {\n // For contenteditable elements\n el.textContent = value;\n el.dispatchEvent(new Event('input', { bubbles: true }));\n } else {\n // For text inputs, use native setter (React compatibility)\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set;\n \n const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLTextAreaElement.prototype,\n 'value'\n )?.set;\n \n const setter = tagName === 'textarea' \n ? nativeTextAreaValueSetter \n : nativeInputValueSetter;\n \n if (setter) {\n setter.call(el, value);\n } else {\n el.value = value;\n }\n \n // Dispatch events that React/Vue/Angular listen for\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n }\n \n // Blur if requested (triggers validation in many forms)\n if (options.blur !== false) {\n el.blur();\n // Dispatch focusout event for React/framework validation handlers\n el.dispatchEvent(new FocusEvent('focusout', { bubbles: true }));\n }\n \n return {\n success: true,\n selector: selector,\n value: el.value || el.textContent,\n elementType: tagName,\n inputType: inputType || null,\n checked: el.checked || undefined\n };\n})\n";
19
+ export declare const REACT_FILL_SCRIPT = "\n(function(selector, value, options) {\n const el = document.querySelector(selector);\n \n if (!el) {\n return { \n success: false, \n error: 'Element not found',\n selector: selector\n };\n }\n \n const tagName = el.tagName.toLowerCase();\n const inputType = el.type?.toLowerCase();\n \n const isFillable = (\n tagName === 'input' || \n tagName === 'textarea' || \n tagName === 'select' ||\n el.isContentEditable\n );\n \n if (!isFillable) {\n return {\n success: false,\n error: 'Element is not fillable',\n elementType: tagName,\n suggestion: 'Only input, textarea, select, and contenteditable elements can be filled'\n };\n }\n \n el.focus();\n \n if (tagName === 'select') {\n el.value = value;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (inputType === 'checkbox' || inputType === 'radio') {\n const shouldCheck = value === 'true' || value === true;\n el.checked = shouldCheck;\n el.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (inputType === 'file') {\n return {\n success: false,\n error: 'File inputs require CDP DOM.setFileInputFiles method',\n suggestion: 'Use: bdg cdp DOM.setFileInputFiles --params {\\\"files\\\":[\\\"path\\\"]}'\n };\n } else if (el.isContentEditable) {\n el.textContent = value;\n el.dispatchEvent(new Event('input', { bubbles: true }));\n } else {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set;\n \n const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLTextAreaElement.prototype,\n 'value'\n )?.set;\n \n const setter = tagName === 'textarea' \n ? nativeTextAreaValueSetter \n : nativeInputValueSetter;\n \n if (setter) {\n setter.call(el, value);\n } else {\n el.value = value;\n }\n \n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n }\n \n if (options.blur !== false) {\n el.blur();\n el.dispatchEvent(new FocusEvent('focusout', { bubbles: true }));\n }\n \n return {\n success: true,\n selector: selector,\n value: el.value || el.textContent,\n elementType: tagName,\n inputType: inputType || null,\n checked: el.checked || undefined\n };\n})\n";
20
20
  /**
21
21
  * JavaScript function to click an element.
22
22
  *
@@ -24,14 +24,14 @@ export declare const REACT_FILL_SCRIPT = "\n(function(selector, value, options)
24
24
  * Simple click implementation that works with buttons, links, and custom components.
25
25
  * When selector matches multiple elements, prioritizes visible ones.
26
26
  */
27
- export declare const CLICK_ELEMENT_SCRIPT = "\n(function(selector) {\n let el = document.querySelector(selector);\n \n // If not found, return error\n if (!el) {\n return {\n success: false,\n error: 'Element not found',\n selector: selector\n };\n }\n \n // Check if there are multiple matches and pick the visible one\n const allMatches = document.querySelectorAll(selector);\n if (allMatches.length > 1) {\n // Find first visible element using bounding rect and computed styles\n for (const candidate of allMatches) {\n const style = window.getComputedStyle(candidate);\n const rect = candidate.getBoundingClientRect();\n \n // Check if element is actually visible:\n // - Must have dimensions (non-zero width/height)\n // - Must not be display:none or visibility:hidden\n // - Opacity check (but allow semi-transparent elements)\n // - offsetParent check (but position:fixed elements have null offsetParent, so also check position)\n const hasSize = rect.width > 0 && rect.height > 0;\n const isDisplayed = style.display !== 'none' && style.visibility !== 'hidden';\n const isOpaque = parseFloat(style.opacity) > 0;\n const isPositioned = candidate.offsetParent !== null || style.position === 'fixed';\n \n // Don't filter out elements without text - icon buttons, inputs, etc. are valid\n const isVisible = hasSize && isDisplayed && isOpaque && isPositioned;\n \n if (isVisible) {\n el = candidate;\n break;\n }\n }\n }\n \n // Check if element is clickable (has click handler or is a button/link)\n const tagName = el.tagName.toLowerCase();\n const isClickable = (\n tagName === 'button' ||\n tagName === 'a' ||\n tagName === 'input' ||\n el.onclick !== null ||\n el.getAttribute('role') === 'button' ||\n window.getComputedStyle(el).cursor === 'pointer'\n );\n \n if (!isClickable) {\n console.warn('Warning: Element may not be clickable:', el);\n }\n \n // Scroll element into view first\n el.scrollIntoView({ behavior: 'auto', block: 'center' });\n \n // Click the element\n el.click();\n \n return {\n success: true,\n selector: selector,\n elementType: tagName,\n clickable: isClickable\n };\n})\n";
27
+ export declare const CLICK_ELEMENT_SCRIPT = "\n(function(selector) {\n let el = document.querySelector(selector);\n \n if (!el) {\n return {\n success: false,\n error: 'Element not found',\n selector: selector\n };\n }\n \n const allMatches = document.querySelectorAll(selector);\n if (allMatches.length > 1) {\n for (const candidate of allMatches) {\n const style = window.getComputedStyle(candidate);\n const rect = candidate.getBoundingClientRect();\n \n const hasSize = rect.width > 0 && rect.height > 0;\n const isDisplayed = style.display !== 'none' && style.visibility !== 'hidden';\n const isOpaque = parseFloat(style.opacity) > 0;\n const isPositioned = candidate.offsetParent !== null || style.position === 'fixed';\n \n const isVisible = hasSize && isDisplayed && isOpaque && isPositioned;\n \n if (isVisible) {\n el = candidate;\n break;\n }\n }\n }\n \n const tagName = el.tagName.toLowerCase();\n const isClickable = (\n tagName === 'button' ||\n tagName === 'a' ||\n tagName === 'input' ||\n el.onclick !== null ||\n el.getAttribute('role') === 'button' ||\n window.getComputedStyle(el).cursor === 'pointer'\n );\n \n if (!isClickable) {\n console.warn('Warning: Element may not be clickable:', el);\n }\n \n el.scrollIntoView({ behavior: 'auto', block: 'center' });\n \n el.click();\n \n return {\n success: true,\n selector: selector,\n elementType: tagName,\n clickable: isClickable\n };\n})\n";
28
28
  /**
29
29
  * JavaScript function to get multiple elements by selector.
30
30
  *
31
31
  * @remarks
32
32
  * Used when --index is specified to select from multiple matches.
33
33
  */
34
- export declare const GET_ELEMENT_BY_INDEX_SCRIPT = "\n(function(selector, index) {\n const elements = document.querySelectorAll(selector);\n \n if (elements.length === 0) {\n return {\n success: false,\n error: 'No elements found',\n selector: selector,\n matchCount: 0\n };\n }\n \n if (index < 1 || index > elements.length) {\n return {\n success: false,\n error: 'Index out of range',\n selector: selector,\n matchCount: elements.length,\n requestedIndex: index,\n suggestion: `Use --index between 1 and ${elements.length}`\n };\n }\n \n // Return element info (we'll use this to build a more specific selector)\n const el = elements[index - 1]; // Convert to 0-based\n \n // Build a truly unique selector by constructing a scoped DOM path\n function buildUniquePath(element: Element): string {\n // If element has an ID, that's unique enough\n if (element.id) {\n return `#${CSS.escape(element.id)}`;\n }\n \n // Build path from root using nth-of-type for each ancestor\n const path: string[] = [];\n let current: Element | null = element;\n \n while (current && current !== document.documentElement) {\n let selector = current.tagName.toLowerCase();\n \n // Use nth-of-type to ensure uniqueness within parent\n if (current.parentElement) {\n const siblings = Array.from(current.parentElement.children);\n const sameTagSiblings = siblings.filter(\n (sibling) => sibling.tagName === current!.tagName\n );\n \n if (sameTagSiblings.length > 1) {\n const index = sameTagSiblings.indexOf(current) + 1;\n selector += `:nth-of-type(${index})`;\n }\n }\n \n path.unshift(selector);\n current = current.parentElement;\n }\n \n // Prefix with html to anchor to document root\n return 'html > ' + path.join(' > ');\n }\n \n const uniqueSelector = buildUniquePath(el);\n \n return {\n success: true,\n selector: selector,\n matchCount: elements.length,\n selectedIndex: index,\n uniqueSelector: uniqueSelector\n };\n})\n";
34
+ export declare const GET_ELEMENT_BY_INDEX_SCRIPT = "\n(function(selector, index) {\n const elements = document.querySelectorAll(selector);\n \n if (elements.length === 0) {\n return {\n success: false,\n error: 'No elements found',\n selector: selector,\n matchCount: 0\n };\n }\n \n if (index < 1 || index > elements.length) {\n return {\n success: false,\n error: 'Index out of range',\n selector: selector,\n matchCount: elements.length,\n requestedIndex: index,\n suggestion: `Use --index between 1 and ${elements.length}`\n };\n }\n \n const el = elements[index - 1]; // Convert to 0-based\n \n function buildUniquePath(element) {\n if (element.id) {\n return `#${CSS.escape(element.id)}`;\n }\n \n const path = [];\n let current = element;\n \n while (current && current !== document.documentElement) {\n let selector = current.tagName.toLowerCase();\n \n if (current.parentElement) {\n const siblings = Array.from(current.parentElement.children);\n const sameTagSiblings = siblings.filter(\n (sibling) => sibling.tagName === current!.tagName\n );\n \n if (sameTagSiblings.length > 1) {\n const index = sameTagSiblings.indexOf(current) + 1;\n selector += `:nth-of-type(${index})`;\n }\n }\n \n path.unshift(selector);\n current = current.parentElement;\n }\n \n return 'html > ' + path.join(' > ');\n }\n \n const uniqueSelector = buildUniquePath(el);\n \n return {\n success: true,\n selector: selector,\n matchCount: elements.length,\n selectedIndex: index,\n uniqueSelector: uniqueSelector\n };\n})\n";
35
35
  /**
36
36
  * Options for filling an element.
37
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reactEventHelpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/reactEventHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,i3FAkG7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,stEAqEhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,kkEAwEvC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"reactEventHelpers.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/reactEventHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,+4EAwF7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,u/CAyDhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+pDAkEvC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -28,7 +28,6 @@ export const REACT_FILL_SCRIPT = `
28
28
  };
29
29
  }
30
30
 
31
- // Check if element is fillable
32
31
  const tagName = el.tagName.toLowerCase();
33
32
  const inputType = el.type?.toLowerCase();
34
33
 
@@ -48,16 +47,12 @@ export const REACT_FILL_SCRIPT = `
48
47
  };
49
48
  }
50
49
 
51
- // Focus element first
52
50
  el.focus();
53
51
 
54
- // Handle different input types
55
52
  if (tagName === 'select') {
56
- // For select elements
57
53
  el.value = value;
58
54
  el.dispatchEvent(new Event('change', { bubbles: true }));
59
55
  } else if (inputType === 'checkbox' || inputType === 'radio') {
60
- // For checkbox/radio, value should be "true" or "false"
61
56
  const shouldCheck = value === 'true' || value === true;
62
57
  el.checked = shouldCheck;
63
58
  el.dispatchEvent(new Event('change', { bubbles: true }));
@@ -68,11 +63,9 @@ export const REACT_FILL_SCRIPT = `
68
63
  suggestion: 'Use: bdg cdp DOM.setFileInputFiles --params {\\"files\\":[\\"path\\"]}'
69
64
  };
70
65
  } else if (el.isContentEditable) {
71
- // For contenteditable elements
72
66
  el.textContent = value;
73
67
  el.dispatchEvent(new Event('input', { bubbles: true }));
74
68
  } else {
75
- // For text inputs, use native setter (React compatibility)
76
69
  const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
77
70
  window.HTMLInputElement.prototype,
78
71
  'value'
@@ -93,15 +86,12 @@ export const REACT_FILL_SCRIPT = `
93
86
  el.value = value;
94
87
  }
95
88
 
96
- // Dispatch events that React/Vue/Angular listen for
97
89
  el.dispatchEvent(new Event('input', { bubbles: true }));
98
90
  el.dispatchEvent(new Event('change', { bubbles: true }));
99
91
  }
100
92
 
101
- // Blur if requested (triggers validation in many forms)
102
93
  if (options.blur !== false) {
103
94
  el.blur();
104
- // Dispatch focusout event for React/framework validation handlers
105
95
  el.dispatchEvent(new FocusEvent('focusout', { bubbles: true }));
106
96
  }
107
97
 
@@ -126,7 +116,6 @@ export const CLICK_ELEMENT_SCRIPT = `
126
116
  (function(selector) {
127
117
  let el = document.querySelector(selector);
128
118
 
129
- // If not found, return error
130
119
  if (!el) {
131
120
  return {
132
121
  success: false,
@@ -135,25 +124,17 @@ export const CLICK_ELEMENT_SCRIPT = `
135
124
  };
136
125
  }
137
126
 
138
- // Check if there are multiple matches and pick the visible one
139
127
  const allMatches = document.querySelectorAll(selector);
140
128
  if (allMatches.length > 1) {
141
- // Find first visible element using bounding rect and computed styles
142
129
  for (const candidate of allMatches) {
143
130
  const style = window.getComputedStyle(candidate);
144
131
  const rect = candidate.getBoundingClientRect();
145
132
 
146
- // Check if element is actually visible:
147
- // - Must have dimensions (non-zero width/height)
148
- // - Must not be display:none or visibility:hidden
149
- // - Opacity check (but allow semi-transparent elements)
150
- // - offsetParent check (but position:fixed elements have null offsetParent, so also check position)
151
133
  const hasSize = rect.width > 0 && rect.height > 0;
152
134
  const isDisplayed = style.display !== 'none' && style.visibility !== 'hidden';
153
135
  const isOpaque = parseFloat(style.opacity) > 0;
154
136
  const isPositioned = candidate.offsetParent !== null || style.position === 'fixed';
155
137
 
156
- // Don't filter out elements without text - icon buttons, inputs, etc. are valid
157
138
  const isVisible = hasSize && isDisplayed && isOpaque && isPositioned;
158
139
 
159
140
  if (isVisible) {
@@ -163,7 +144,6 @@ export const CLICK_ELEMENT_SCRIPT = `
163
144
  }
164
145
  }
165
146
 
166
- // Check if element is clickable (has click handler or is a button/link)
167
147
  const tagName = el.tagName.toLowerCase();
168
148
  const isClickable = (
169
149
  tagName === 'button' ||
@@ -178,10 +158,8 @@ export const CLICK_ELEMENT_SCRIPT = `
178
158
  console.warn('Warning: Element may not be clickable:', el);
179
159
  }
180
160
 
181
- // Scroll element into view first
182
161
  el.scrollIntoView({ behavior: 'auto', block: 'center' });
183
162
 
184
- // Click the element
185
163
  el.click();
186
164
 
187
165
  return {
@@ -222,24 +200,19 @@ export const GET_ELEMENT_BY_INDEX_SCRIPT = `
222
200
  };
223
201
  }
224
202
 
225
- // Return element info (we'll use this to build a more specific selector)
226
203
  const el = elements[index - 1]; // Convert to 0-based
227
204
 
228
- // Build a truly unique selector by constructing a scoped DOM path
229
- function buildUniquePath(element: Element): string {
230
- // If element has an ID, that's unique enough
205
+ function buildUniquePath(element) {
231
206
  if (element.id) {
232
207
  return \`#\${CSS.escape(element.id)}\`;
233
208
  }
234
209
 
235
- // Build path from root using nth-of-type for each ancestor
236
- const path: string[] = [];
237
- let current: Element | null = element;
210
+ const path = [];
211
+ let current = element;
238
212
 
239
213
  while (current && current !== document.documentElement) {
240
214
  let selector = current.tagName.toLowerCase();
241
215
 
242
- // Use nth-of-type to ensure uniqueness within parent
243
216
  if (current.parentElement) {
244
217
  const siblings = Array.from(current.parentElement.children);
245
218
  const sameTagSiblings = siblings.filter(
@@ -256,7 +229,6 @@ export const GET_ELEMENT_BY_INDEX_SCRIPT = `
256
229
  current = current.parentElement;
257
230
  }
258
231
 
259
- // Prefix with html to anchor to document root
260
232
  return 'html > ' + path.join(' > ');
261
233
  }
262
234
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactEventHelpers.js","sourceRoot":"","sources":["../../../src/commands/dom/reactEventHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGhC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE1C,CAAC"}
1
+ {"version":3,"file":"reactEventHelpers.js","sourceRoot":"","sources":["../../../src/commands/dom/reactEventHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFhC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkE1C,CAAC"}