react-native-ai-debugger 2.12.3 → 2.12.4

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 (266) hide show
  1. package/README.md +15 -1
  2. package/build/__tests__/unit/autoReconnectOptOut.test.js +3 -0
  3. package/build/__tests__/unit/autoReconnectOptOut.test.js.map +1 -1
  4. package/build/__tests__/unit/cdpCommand.test.d.ts +2 -0
  5. package/build/__tests__/unit/cdpCommand.test.d.ts.map +1 -0
  6. package/build/__tests__/unit/cdpCommand.test.js +84 -0
  7. package/build/__tests__/unit/cdpCommand.test.js.map +1 -0
  8. package/build/__tests__/unit/chromium.test.d.ts +2 -0
  9. package/build/__tests__/unit/chromium.test.d.ts.map +1 -0
  10. package/build/__tests__/unit/chromium.test.js +118 -0
  11. package/build/__tests__/unit/chromium.test.js.map +1 -0
  12. package/build/__tests__/unit/chromiumDevice.test.d.ts +2 -0
  13. package/build/__tests__/unit/chromiumDevice.test.d.ts.map +1 -0
  14. package/build/__tests__/unit/chromiumDevice.test.js +115 -0
  15. package/build/__tests__/unit/chromiumDevice.test.js.map +1 -0
  16. package/build/__tests__/unit/chromiumDialogAnswer.test.d.ts +2 -0
  17. package/build/__tests__/unit/chromiumDialogAnswer.test.d.ts.map +1 -0
  18. package/build/__tests__/unit/chromiumDialogAnswer.test.js +71 -0
  19. package/build/__tests__/unit/chromiumDialogAnswer.test.js.map +1 -0
  20. package/build/__tests__/unit/chromiumDialogRaces.test.d.ts +2 -0
  21. package/build/__tests__/unit/chromiumDialogRaces.test.d.ts.map +1 -0
  22. package/build/__tests__/unit/chromiumDialogRaces.test.js +100 -0
  23. package/build/__tests__/unit/chromiumDialogRaces.test.js.map +1 -0
  24. package/build/__tests__/unit/chromiumDialogs.test.d.ts +2 -0
  25. package/build/__tests__/unit/chromiumDialogs.test.d.ts.map +1 -0
  26. package/build/__tests__/unit/chromiumDialogs.test.js +167 -0
  27. package/build/__tests__/unit/chromiumDialogs.test.js.map +1 -0
  28. package/build/__tests__/unit/chromiumDiscovery.test.d.ts +2 -0
  29. package/build/__tests__/unit/chromiumDiscovery.test.d.ts.map +1 -0
  30. package/build/__tests__/unit/chromiumDiscovery.test.js +302 -0
  31. package/build/__tests__/unit/chromiumDiscovery.test.js.map +1 -0
  32. package/build/__tests__/unit/chromiumDom.test.d.ts +2 -0
  33. package/build/__tests__/unit/chromiumDom.test.d.ts.map +1 -0
  34. package/build/__tests__/unit/chromiumDom.test.js +119 -0
  35. package/build/__tests__/unit/chromiumDom.test.js.map +1 -0
  36. package/build/__tests__/unit/chromiumGate.test.d.ts +2 -0
  37. package/build/__tests__/unit/chromiumGate.test.d.ts.map +1 -0
  38. package/build/__tests__/unit/chromiumGate.test.js +149 -0
  39. package/build/__tests__/unit/chromiumGate.test.js.map +1 -0
  40. package/build/__tests__/unit/chromiumInput.test.d.ts +2 -0
  41. package/build/__tests__/unit/chromiumInput.test.d.ts.map +1 -0
  42. package/build/__tests__/unit/chromiumInput.test.js +113 -0
  43. package/build/__tests__/unit/chromiumInput.test.js.map +1 -0
  44. package/build/__tests__/unit/chromiumKeys.test.d.ts +2 -0
  45. package/build/__tests__/unit/chromiumKeys.test.d.ts.map +1 -0
  46. package/build/__tests__/unit/chromiumKeys.test.js +26 -0
  47. package/build/__tests__/unit/chromiumKeys.test.js.map +1 -0
  48. package/build/__tests__/unit/chromiumScreen.test.d.ts +2 -0
  49. package/build/__tests__/unit/chromiumScreen.test.d.ts.map +1 -0
  50. package/build/__tests__/unit/chromiumScreen.test.js +390 -0
  51. package/build/__tests__/unit/chromiumScreen.test.js.map +1 -0
  52. package/build/__tests__/unit/chromiumStaleTarget.test.d.ts +2 -0
  53. package/build/__tests__/unit/chromiumStaleTarget.test.d.ts.map +1 -0
  54. package/build/__tests__/unit/chromiumStaleTarget.test.js +26 -0
  55. package/build/__tests__/unit/chromiumStaleTarget.test.js.map +1 -0
  56. package/build/__tests__/unit/connectionGaps.test.d.ts +2 -0
  57. package/build/__tests__/unit/connectionGaps.test.d.ts.map +1 -0
  58. package/build/__tests__/unit/connectionGaps.test.js +14 -0
  59. package/build/__tests__/unit/connectionGaps.test.js.map +1 -0
  60. package/build/__tests__/unit/contextPreambleGlobals.test.d.ts +2 -0
  61. package/build/__tests__/unit/contextPreambleGlobals.test.d.ts.map +1 -0
  62. package/build/__tests__/unit/contextPreambleGlobals.test.js +25 -0
  63. package/build/__tests__/unit/contextPreambleGlobals.test.js.map +1 -0
  64. package/build/__tests__/unit/deviceResolver.test.js +9 -0
  65. package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
  66. package/build/__tests__/unit/electronLaunch.test.d.ts +2 -0
  67. package/build/__tests__/unit/electronLaunch.test.d.ts.map +1 -0
  68. package/build/__tests__/unit/electronLaunch.test.js +165 -0
  69. package/build/__tests__/unit/electronLaunch.test.js.map +1 -0
  70. package/build/__tests__/unit/fiberRoots.test.d.ts +2 -0
  71. package/build/__tests__/unit/fiberRoots.test.d.ts.map +1 -0
  72. package/build/__tests__/unit/fiberRoots.test.js +95 -0
  73. package/build/__tests__/unit/fiberRoots.test.js.map +1 -0
  74. package/build/__tests__/unit/fiberRootsDrift.test.d.ts +2 -0
  75. package/build/__tests__/unit/fiberRootsDrift.test.d.ts.map +1 -0
  76. package/build/__tests__/unit/fiberRootsDrift.test.js +23 -0
  77. package/build/__tests__/unit/fiberRootsDrift.test.js.map +1 -0
  78. package/build/__tests__/unit/hostAddress.test.d.ts +2 -0
  79. package/build/__tests__/unit/hostAddress.test.d.ts.map +1 -0
  80. package/build/__tests__/unit/hostAddress.test.js +38 -0
  81. package/build/__tests__/unit/hostAddress.test.js.map +1 -0
  82. package/build/__tests__/unit/measureComponent.test.js +1 -1
  83. package/build/__tests__/unit/measureComponent.test.js.map +1 -1
  84. package/build/__tests__/unit/networkInterceptorFetchMock.test.d.ts +2 -0
  85. package/build/__tests__/unit/networkInterceptorFetchMock.test.d.ts.map +1 -0
  86. package/build/__tests__/unit/networkInterceptorFetchMock.test.js +90 -0
  87. package/build/__tests__/unit/networkInterceptorFetchMock.test.js.map +1 -0
  88. package/build/__tests__/unit/networkMockTool.test.js +12 -1
  89. package/build/__tests__/unit/networkMockTool.test.js.map +1 -1
  90. package/build/__tests__/unit/pressKeyMobile.test.d.ts +2 -0
  91. package/build/__tests__/unit/pressKeyMobile.test.d.ts.map +1 -0
  92. package/build/__tests__/unit/pressKeyMobile.test.js +63 -0
  93. package/build/__tests__/unit/pressKeyMobile.test.js.map +1 -0
  94. package/build/__tests__/unit/reloadAppAutoConnect.test.js +4 -1
  95. package/build/__tests__/unit/reloadAppAutoConnect.test.js.map +1 -1
  96. package/build/__tests__/unit/tapAndroidSerial.test.js +16 -0
  97. package/build/__tests__/unit/tapAndroidSerial.test.js.map +1 -1
  98. package/build/core/android.d.ts +10 -0
  99. package/build/core/android.d.ts.map +1 -1
  100. package/build/core/android.js +17 -0
  101. package/build/core/android.js.map +1 -1
  102. package/build/core/appContext.d.ts.map +1 -1
  103. package/build/core/appContext.js +11 -13
  104. package/build/core/appContext.js.map +1 -1
  105. package/build/core/appDetection.d.ts.map +1 -1
  106. package/build/core/appDetection.js +7 -4
  107. package/build/core/appDetection.js.map +1 -1
  108. package/build/core/cdpCommand.d.ts +4 -0
  109. package/build/core/cdpCommand.d.ts.map +1 -0
  110. package/build/core/cdpCommand.js +58 -0
  111. package/build/core/cdpCommand.js.map +1 -0
  112. package/build/core/chromium.d.ts +157 -0
  113. package/build/core/chromium.d.ts.map +1 -0
  114. package/build/core/chromium.js +480 -0
  115. package/build/core/chromium.js.map +1 -0
  116. package/build/core/chromiumCapabilities.d.ts +11 -0
  117. package/build/core/chromiumCapabilities.d.ts.map +1 -0
  118. package/build/core/chromiumCapabilities.js +35 -0
  119. package/build/core/chromiumCapabilities.js.map +1 -0
  120. package/build/core/chromiumDialogAnswer.d.ts +11 -0
  121. package/build/core/chromiumDialogAnswer.d.ts.map +1 -0
  122. package/build/core/chromiumDialogAnswer.js +61 -0
  123. package/build/core/chromiumDialogAnswer.js.map +1 -0
  124. package/build/core/chromiumDialogs.d.ts +46 -0
  125. package/build/core/chromiumDialogs.d.ts.map +1 -0
  126. package/build/core/chromiumDialogs.js +88 -0
  127. package/build/core/chromiumDialogs.js.map +1 -0
  128. package/build/core/chromiumScreen.d.ts +97 -0
  129. package/build/core/chromiumScreen.d.ts.map +1 -0
  130. package/build/core/chromiumScreen.js +498 -0
  131. package/build/core/chromiumScreen.js.map +1 -0
  132. package/build/core/componentSearch.d.ts.map +1 -1
  133. package/build/core/componentSearch.js +7 -26
  134. package/build/core/componentSearch.js.map +1 -1
  135. package/build/core/componentSource.d.ts.map +1 -1
  136. package/build/core/componentSource.js +3 -11
  137. package/build/core/componentSource.js.map +1 -1
  138. package/build/core/componentTree.d.ts.map +1 -1
  139. package/build/core/componentTree.js +4 -18
  140. package/build/core/componentTree.js.map +1 -1
  141. package/build/core/connection.d.ts +13 -0
  142. package/build/core/connection.d.ts.map +1 -1
  143. package/build/core/connection.js +99 -18
  144. package/build/core/connection.js.map +1 -1
  145. package/build/core/connectionState.d.ts +2 -1
  146. package/build/core/connectionState.d.ts.map +1 -1
  147. package/build/core/connectionState.js +3 -0
  148. package/build/core/connectionState.js.map +1 -1
  149. package/build/core/deviceResolver.d.ts.map +1 -1
  150. package/build/core/deviceResolver.js +8 -5
  151. package/build/core/deviceResolver.js.map +1 -1
  152. package/build/core/electronLaunch.d.ts +25 -0
  153. package/build/core/electronLaunch.d.ts.map +1 -0
  154. package/build/core/electronLaunch.js +113 -0
  155. package/build/core/electronLaunch.js.map +1 -0
  156. package/build/core/errors.d.ts +1 -1
  157. package/build/core/errors.d.ts.map +1 -1
  158. package/build/core/errors.js.map +1 -1
  159. package/build/core/guides.d.ts.map +1 -1
  160. package/build/core/guides.js +9 -6
  161. package/build/core/guides.js.map +1 -1
  162. package/build/core/hostAddress.d.ts +6 -0
  163. package/build/core/hostAddress.d.ts.map +1 -0
  164. package/build/core/hostAddress.js +32 -0
  165. package/build/core/hostAddress.js.map +1 -0
  166. package/build/core/injected/fiberRoots.d.ts +2 -0
  167. package/build/core/injected/fiberRoots.d.ts.map +1 -0
  168. package/build/core/injected/fiberRoots.js +60 -0
  169. package/build/core/injected/fiberRoots.js.map +1 -0
  170. package/build/core/inputTarget.d.ts.map +1 -1
  171. package/build/core/inputTarget.js +4 -9
  172. package/build/core/inputTarget.js.map +1 -1
  173. package/build/core/inspector.d.ts.map +1 -1
  174. package/build/core/inspector.js +6 -22
  175. package/build/core/inspector.js.map +1 -1
  176. package/build/core/ios.d.ts +12 -0
  177. package/build/core/ios.d.ts.map +1 -1
  178. package/build/core/ios.js +32 -0
  179. package/build/core/ios.js.map +1 -1
  180. package/build/core/jsExecute.d.ts.map +1 -1
  181. package/build/core/jsExecute.js +20 -1
  182. package/build/core/jsExecute.js.map +1 -1
  183. package/build/core/measureComponent.d.ts.map +1 -1
  184. package/build/core/measureComponent.js +4 -8
  185. package/build/core/measureComponent.js.map +1 -1
  186. package/build/core/metro.d.ts +20 -1
  187. package/build/core/metro.d.ts.map +1 -1
  188. package/build/core/metro.js +146 -9
  189. package/build/core/metro.js.map +1 -1
  190. package/build/core/mockRules.d.ts +1 -0
  191. package/build/core/mockRules.d.ts.map +1 -1
  192. package/build/core/mockRules.js +8 -0
  193. package/build/core/mockRules.js.map +1 -1
  194. package/build/core/nativeLogs.js +1 -1
  195. package/build/core/nativeLogs.js.map +1 -1
  196. package/build/core/navigation.d.ts.map +1 -1
  197. package/build/core/navigation.js +4 -18
  198. package/build/core/navigation.js.map +1 -1
  199. package/build/core/networkInterceptor.d.ts +2 -2
  200. package/build/core/networkInterceptor.d.ts.map +1 -1
  201. package/build/core/networkInterceptor.js +90 -3
  202. package/build/core/networkInterceptor.js.map +1 -1
  203. package/build/core/pressables.d.ts.map +1 -1
  204. package/build/core/pressables.js +6 -13
  205. package/build/core/pressables.js.map +1 -1
  206. package/build/core/redux.d.ts.map +1 -1
  207. package/build/core/redux.js +6 -10
  208. package/build/core/redux.js.map +1 -1
  209. package/build/core/register.d.ts.map +1 -1
  210. package/build/core/register.js +5 -2
  211. package/build/core/register.js.map +1 -1
  212. package/build/core/rnGlobalsBootstrap.d.ts.map +1 -1
  213. package/build/core/rnGlobalsBootstrap.js +3 -1
  214. package/build/core/rnGlobalsBootstrap.js.map +1 -1
  215. package/build/core/screenLayout.d.ts.map +1 -1
  216. package/build/core/screenLayout.js +4 -13
  217. package/build/core/screenLayout.js.map +1 -1
  218. package/build/core/screenStaleness.d.ts.map +1 -1
  219. package/build/core/screenStaleness.js +2 -0
  220. package/build/core/screenStaleness.js.map +1 -1
  221. package/build/core/screenState.d.ts.map +1 -1
  222. package/build/core/screenState.js +4 -11
  223. package/build/core/screenState.js.map +1 -1
  224. package/build/core/swipeDiagnosis.d.ts.map +1 -1
  225. package/build/core/swipeDiagnosis.js +3 -10
  226. package/build/core/swipeDiagnosis.js.map +1 -1
  227. package/build/core/textEntry.d.ts +1 -1
  228. package/build/core/textEntry.d.ts.map +1 -1
  229. package/build/core/types.d.ts +4 -2
  230. package/build/core/types.d.ts.map +1 -1
  231. package/build/pro/chromiumKeys.d.ts +19 -0
  232. package/build/pro/chromiumKeys.d.ts.map +1 -0
  233. package/build/pro/chromiumKeys.js +68 -0
  234. package/build/pro/chromiumKeys.js.map +1 -0
  235. package/build/pro/chromiumSwipe.d.ts +35 -0
  236. package/build/pro/chromiumSwipe.d.ts.map +1 -0
  237. package/build/pro/chromiumSwipe.js +105 -0
  238. package/build/pro/chromiumSwipe.js.map +1 -0
  239. package/build/pro/chromiumTap.d.ts +12 -0
  240. package/build/pro/chromiumTap.d.ts.map +1 -0
  241. package/build/pro/chromiumTap.js +155 -0
  242. package/build/pro/chromiumTap.js.map +1 -0
  243. package/build/pro/tap.d.ts +1 -0
  244. package/build/pro/tap.d.ts.map +1 -1
  245. package/build/pro/tap.js +7 -1
  246. package/build/pro/tap.js.map +1 -1
  247. package/build/tools/componentTools.d.ts.map +1 -1
  248. package/build/tools/componentTools.js +31 -3
  249. package/build/tools/componentTools.js.map +1 -1
  250. package/build/tools/connectionTools.d.ts.map +1 -1
  251. package/build/tools/connectionTools.js +66 -28
  252. package/build/tools/connectionTools.js.map +1 -1
  253. package/build/tools/deviceTools.d.ts.map +1 -1
  254. package/build/tools/deviceTools.js +42 -1
  255. package/build/tools/deviceTools.js.map +1 -1
  256. package/build/tools/interactionTools.d.ts.map +1 -1
  257. package/build/tools/interactionTools.js +132 -7
  258. package/build/tools/interactionTools.js.map +1 -1
  259. package/build/tools/networkTools.d.ts.map +1 -1
  260. package/build/tools/networkTools.js +20 -5
  261. package/build/tools/networkTools.js.map +1 -1
  262. package/build/tools/screenshotTools.d.ts.map +1 -1
  263. package/build/tools/screenshotTools.js +452 -373
  264. package/build/tools/screenshotTools.js.map +1 -1
  265. package/package.json +1 -1
  266. package/tools.json +27 -1
@@ -1 +1 @@
1
- {"version":3,"file":"componentSource.js","sourceRoot":"","sources":["../../src/core/componentSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoBvE,MAAM,aAAa,GAAG;;;;;;;;;;;;;CAarB,CAAC;AAOF,MAAM,UAAU,6BAA6B;IACzC,OAAO;;cAEG,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+DtB,CAAC;AACN,CAAC;AAiBD,MAAM,UAAU,gCAAgC,CAC5C,CAAS,EACT,CAAS,EACT,eAAuB,EAAE;IAEzB,OAAO;;iCAEsB,YAAY;cAC/B,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4CK,CAAC;gCACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsD5B,CAAC;AACN,CAAC;AAkCD,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAA2B;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAChF,CAAC;IAGD,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,kBAAkB,GAAoD,EAAE,CAAC;IAE/E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACtF,SAAS;QACb,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,uBAAuB,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACb,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO;YACH,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE;YAC/E,SAAS,EAAE,MAAM;SACpB,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,SAAS,GAAuB,CAAC,GAAG,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,GAA0B,IAAI,CAAC;IAEvC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QAGnD,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO;QACnD,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9E,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;IAC9E,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"componentSource.js","sourceRoot":"","sources":["../../src/core/componentSource.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"componentTree.d.ts","sourceRoot":"","sources":["../../src/core/componentTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA6DlD,wBAAsB,gBAAgB,CAClC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACjB,GACP,OAAO,CAAC,eAAe,CAAC,CA8P1B"}
1
+ {"version":3,"file":"componentTree.d.ts","sourceRoot":"","sources":["../../src/core/componentTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8DlD,wBAAsB,gBAAgB,CAClC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACjB,GACP,OAAO,CAAC,eAAe,CAAC,CA+O1B"}
@@ -1,5 +1,6 @@
1
1
  import { executeInApp } from "./jsExecute.js";
2
2
  import { VISIBILITY_HELPERS_JS } from "./injected/visibility.js";
3
+ import { FIBER_ROOTS_JS } from "./injected/fiberRoots.js";
3
4
  function formatTreeCompact(node, indent = 0) {
4
5
  const prefix = " ".repeat(indent);
5
6
  let result = `${prefix}${node.component}`;
@@ -39,24 +40,9 @@ export async function getComponentTree(options = {}) {
39
40
  const expression = `
40
41
  (function() {
41
42
  const hook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
42
- if (!hook) return { error: 'React DevTools hook not found. Make sure you are running a development build.' };
43
-
44
- // Try to get fiber roots (renderer ID is usually 1)
45
- let roots = [];
46
- if (hook.getFiberRoots) {
47
- roots = [...(hook.getFiberRoots(1) || [])];
48
- }
49
- if (roots.length === 0 && hook.renderers) {
50
- // Try all renderers
51
- for (const [id] of hook.renderers) {
52
- const r = hook.getFiberRoots ? [...(hook.getFiberRoots(id) || [])] : [];
53
- if (r.length > 0) {
54
- roots = r;
55
- break;
56
- }
57
- }
58
- }
59
- if (roots.length === 0) return { error: 'No fiber roots found. The app may not have rendered yet.' };
43
+ ${FIBER_ROOTS_JS}
44
+ const roots = __eb_fiberRoots(false);
45
+ if (roots.length === 0) return { error: __eb_noRootsReason() };
60
46
 
61
47
  const maxDepth = ${maxDepth};
62
48
  const includeProps = ${includeProps};
@@ -1 +1 @@
1
- {"version":3,"file":"componentTree.js","sourceRoot":"","sources":["../../src/core/componentTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"componentTree.js","sourceRoot":"","sources":["../../src/core/componentTree.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,19 @@ export type DeviceResolution = {
40
40
  export declare function failureKindForResolution(resolution: DeviceResolution): FailureKind | undefined;
41
41
  export declare function describeDeviceResolution(resolution: DeviceResolution): string;
42
42
  export declare function resolveConnectedAppByDevice(device?: string): DeviceResolution;
43
+ export declare function peekTargetPlatform(toolName: string, device: unknown): ConnectedApp["platform"] | undefined;
44
+ export declare function chromiumAppFor(toolName: string, device?: string): ConnectedApp | null;
45
+ export declare function chromiumWindowGone(listed: number, attempts: number): boolean;
46
+ export declare function staleTargetMessage(device: DeviceInfo): string;
47
+ export declare function dialogGateFor(toolName: string, device: unknown): {
48
+ content: [{
49
+ type: "text";
50
+ text: string;
51
+ }];
52
+ isError: true;
53
+ _errorMessage: string;
54
+ _failureKind: "js_dialog_open";
55
+ } | null;
43
56
  export declare function getConnectedAppByDevice(device?: string): ConnectedApp | null;
44
57
  export declare function hasConnectedApp(): boolean;
45
58
  export declare function runQuickHealthCheck(app: ConnectedApp): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,15 @@ import { serializeRules } from "./mockRules.js";
6
6
  import { findSimulatorByName } from "./ios.js";
7
7
  import { captureStack } from "./logStack.js";
8
8
  import { resolveAdbSerialForDeviceName } from "./android.js";
9
- import { fetchDevices, selectMainDevice, scanMetroPorts } from "./metro.js";
9
+ import { fetchDevices, selectMainDevice, scanMetroPorts, isChromiumTarget, pickReconnectTarget, pinChromiumName } from "./metro.js";
10
10
  import { probeCdpAlive } from "./probe.js";
11
11
  import { UserInputError } from "./errors.js";
12
12
  import { scheduleAppDetection } from "./appDetection.js";
13
13
  import { markConnectionEstablished } from "./jsExecute.js";
14
14
  import { startSdkMirrorPoller, stopSdkMirrorPoller } from "./sdkMirrorPoller.js";
15
- import { DEFAULT_RECONNECTION_CONFIG, MIN_STABLE_CONNECTION_MS, initConnectionState, updateConnectionState, getConnectionState, recordConnectionGap, closeConnectionGap, saveConnectionMetadata, clearConnectionMetadata, getConnectionMetadata, saveReconnectionTimer, cancelReconnectionTimer, shouldTerminateForMissedPong, calculateBackoffDelay, initContextHealth, markContextHealthy, markContextStale, getContextHealth, updateContextHealth, formatDuration, recordConnectionEvent, } from "./connectionState.js";
15
+ import { rememberHostAddresses, hostAddressChangeHint } from "./hostAddress.js";
16
+ import { noteDialogOpened, noteDialogClosed, openDialog, dialogGate, formatDialog, DIALOG_BLOCKED_TOOLS } from "./chromiumDialogs.js";
17
+ import { DEFAULT_RECONNECTION_CONFIG, MIN_STABLE_CONNECTION_MS, initConnectionState, updateConnectionState, getConnectionState, recordConnectionGap, closeConnectionGap, saveConnectionMetadata, clearConnectionMetadata, clearConnectionState, getConnectionMetadata, saveReconnectionTimer, cancelReconnectionTimer, shouldTerminateForMissedPong, calculateBackoffDelay, initContextHealth, markContextHealthy, markContextStale, getContextHealth, updateContextHealth, formatDuration, recordConnectionEvent, } from "./connectionState.js";
16
18
  const connectionLocks = new Set();
17
19
  const lastTargetIdByDevice = new Map();
18
20
  const devicesSeenThisSession = new Map();
@@ -532,6 +534,17 @@ export function handleCDPMessage(message, device, ws) {
532
534
  return;
533
535
  }
534
536
  const method = message.method;
537
+ if (method === "Page.javascriptDialogOpening" || method === "Page.javascriptDialogClosed") {
538
+ const dws = ws ?? connectedApps.get(findAppKeyForDevice(device) ?? "")?.ws;
539
+ if (dws) {
540
+ const p = message.params;
541
+ if (method === "Page.javascriptDialogOpening")
542
+ noteDialogOpened(dws, p);
543
+ else
544
+ noteDialogClosed(dws, p);
545
+ }
546
+ return;
547
+ }
535
548
  if (method === "Runtime.consoleAPICalled") {
536
549
  const params = message.params;
537
550
  const type = params.type || "log";
@@ -663,7 +676,7 @@ export function handleCDPMessage(message, device, ws) {
663
676
  console.error(`[execbro] Context created: ${params.context.id}`);
664
677
  const ctxApp = connectedApps.get(appKey);
665
678
  if (ctxApp?.ws?.readyState === WebSocket.OPEN) {
666
- injectNetworkInterceptor(ctxApp.ws);
679
+ injectNetworkInterceptor(ctxApp.ws, ctxApp.platform === "chromium");
667
680
  sendNetSuppressionFlag(ctxApp.ws, ctxApp.sdkPresent === true);
668
681
  pushMockRules(ctxApp.ws, serializeRules(device.deviceName || device.title || "unknown"));
669
682
  const nEnableId = sendNetworkEnable(ctxApp.ws);
@@ -705,7 +718,7 @@ export async function connectToDevice(device, port, options = {}) {
705
718
  }
706
719
  });
707
720
  if (isAlive) {
708
- resolve(`Already connected to ${device.title}`);
721
+ resolve(`Already connected to ${device.deviceName || device.title}`);
709
722
  return;
710
723
  }
711
724
  console.error(`[execbro] Existing connection to ${device.title} failed liveness check (no pong), reconnecting`);
@@ -824,11 +837,12 @@ export async function connectToDevice(device, port, options = {}) {
824
837
  else {
825
838
  clearConnectionMetadata(appKey);
826
839
  }
827
- resolve(`Skipped ${device.deviceName || device.title} (stale CDP target — no response from JS context)`);
840
+ resolve(staleTargetMessage(device));
828
841
  return;
829
842
  }
830
843
  connectionLocks.delete(appKey);
831
- connectedApps.set(appKey, { ws, deviceInfo: device, port, platform: "android" });
844
+ device.deviceName = pinChromiumName(device);
845
+ connectedApps.set(appKey, { ws, deviceInfo: device, port, platform: isChromiumTarget(device) ? "chromium" : "android" });
832
846
  recordDeviceSeen(device.deviceName || device.title);
833
847
  markConnectionEstablished();
834
848
  const bufferKey = device.deviceName || device.title || "unknown";
@@ -847,12 +861,14 @@ export async function connectToDevice(device, port, options = {}) {
847
861
  initContextHealth(appKey);
848
862
  console.error(`[execbro] Reconnected to ${device.title}`);
849
863
  recordConnectionEvent("reconnect-success", appKey, device.title);
864
+ rememberHostAddresses();
850
865
  }
851
866
  else {
852
867
  initConnectionState(appKey);
853
868
  initContextHealth(appKey);
854
869
  console.error(`[execbro] Connected to ${device.title}`);
855
870
  recordConnectionEvent("connect-success", appKey, device.title);
871
+ rememberHostAddresses();
856
872
  }
857
873
  ws.send(JSON.stringify({
858
874
  id: getNextMessageId(),
@@ -862,14 +878,17 @@ export async function connectToDevice(device, port, options = {}) {
862
878
  id: getNextMessageId(),
863
879
  method: "Log.enable"
864
880
  }));
865
- injectNetworkInterceptor(ws);
881
+ if (isChromiumTarget(device)) {
882
+ ws.send(JSON.stringify({ id: getNextMessageId(), method: "Page.enable" }));
883
+ }
884
+ injectNetworkInterceptor(ws, isChromiumTarget(device));
866
885
  pushMockRules(ws, serializeRules(device.deviceName || device.title || "unknown"));
867
886
  void import("./routeHistory.js")
868
887
  .then((m) => m.installRouteHistory(device.deviceName))
869
888
  .catch(() => { });
870
889
  const networkEnableId = sendNetworkEnable(ws);
871
890
  pendingNetworkEnableIds.add(networkEnableId);
872
- if (device.deviceName) {
891
+ if (device.deviceName && !isChromiumTarget(device)) {
873
892
  const [simulatorUdid, adbSerial] = await Promise.all([
874
893
  findSimulatorByName(device.deviceName).catch(() => null),
875
894
  resolveAdbSerialForDeviceName(device.deviceName).catch(() => null)
@@ -924,7 +943,9 @@ export async function connectToDevice(device, port, options = {}) {
924
943
  catch {
925
944
  }
926
945
  });
927
- resolve(`Connected to ${device.title} (${device.deviceName})`);
946
+ resolve(isChromiumTarget(device)
947
+ ? `Connected to ${device.deviceName} (chromium, ${device.url ?? "no url"}). Note: execbro injected an XHR/fetch interceptor into this page; other CDP clients inspecting it will observe the patched network layer.`
948
+ : `Connected to ${device.title} (${device.deviceName})`);
928
949
  }
929
950
  catch (error) {
930
951
  connectionLocks.delete(appKey);
@@ -952,7 +973,8 @@ function scheduleReconnection(appKey, config = DEFAULT_RECONNECTION_CONFIG) {
952
973
  if (attempts >= config.maxAttempts) {
953
974
  console.error(`[execbro] Max reconnection attempts (${config.maxAttempts}) reached for ${appKey}`);
954
975
  updateConnectionState(appKey, { status: "disconnected" });
955
- recordConnectionEvent("max-attempts-reached", appKey, deviceTitle, `${config.maxAttempts} attempts exhausted`);
976
+ const addressHint = hostAddressChangeHint(meta?.port);
977
+ recordConnectionEvent("max-attempts-reached", appKey, deviceTitle, `${config.maxAttempts} attempts exhausted${addressHint ? `\n${addressHint}` : ""}`);
956
978
  return;
957
979
  }
958
980
  const delay = calculateBackoffDelay(attempts, config);
@@ -986,8 +1008,14 @@ async function attemptReconnection(appKey, config = DEFAULT_RECONNECTION_CONFIG)
986
1008
  }
987
1009
  try {
988
1010
  const devices = await fetchDevices(metadata.port);
989
- const device = devices.find(d => d.id === metadata.deviceInfo.id)
990
- || selectMainDevice(devices);
1011
+ const device = pickReconnectTarget(devices, metadata.deviceInfo);
1012
+ if (!device && isChromiumTarget(metadata.deviceInfo) && chromiumWindowGone(devices.length, getConnectionState(appKey)?.reconnectionAttempts ?? 0)) {
1013
+ console.error(`[execbro] Window closed: ${appKey}`);
1014
+ recordConnectionEvent("window-closed", appKey, deviceTitle, "target no longer listed");
1015
+ clearConnectionState(appKey);
1016
+ clearConnectionMetadata(appKey);
1017
+ return false;
1018
+ }
991
1019
  if (!device) {
992
1020
  console.error(`[execbro] Device no longer available for ${appKey}`);
993
1021
  recordConnectionEvent("reconnect-failed", appKey, deviceTitle, "device no longer advertised by Metro");
@@ -1013,14 +1041,18 @@ export function getConnectedApps() {
1013
1041
  }));
1014
1042
  }
1015
1043
  export function getFirstConnectedApp() {
1044
+ let chromium = null;
1016
1045
  for (const [key, app] of connectedApps.entries()) {
1017
1046
  if (app.ws.readyState === WebSocket.OPEN) {
1018
- return app;
1047
+ if (app.platform !== "chromium")
1048
+ return app;
1049
+ chromium ??= app;
1050
+ continue;
1019
1051
  }
1020
1052
  console.error(`[execbro] Cleaning up stale connection in getFirstConnectedApp: ${key} (state: ${getWebSocketStateName(app.ws.readyState)})`);
1021
1053
  connectedApps.delete(key);
1022
1054
  }
1023
- return null;
1055
+ return chromium;
1024
1056
  }
1025
1057
  export function getConnectedAppBySimulatorUdid(udid) {
1026
1058
  for (const [key, app] of connectedApps.entries()) {
@@ -1165,6 +1197,13 @@ export function resolveConnectedAppByDevice(device) {
1165
1197
  matches.push(app);
1166
1198
  }
1167
1199
  }
1200
+ if (matches.length === 0) {
1201
+ for (const app of openApps) {
1202
+ const url = normalizeDeviceId(app.deviceInfo.url);
1203
+ if (url && url.includes(normDevice))
1204
+ matches.push(app);
1205
+ }
1206
+ }
1168
1207
  const exact = matches.find(a => deviceLabel(a).toLowerCase() === lowerDevice);
1169
1208
  if (exact)
1170
1209
  return { kind: "ok", app: exact };
@@ -1174,6 +1213,40 @@ export function resolveConnectedAppByDevice(device) {
1174
1213
  return { kind: "ambiguous", device, matches };
1175
1214
  return { kind: "none", device, connected: openApps };
1176
1215
  }
1216
+ export function peekTargetPlatform(toolName, device) {
1217
+ if (typeof device === "string" && device.length > 0) {
1218
+ const resolved = resolveConnectedAppByDevice(device);
1219
+ return resolved.kind === "ok" ? resolved.app.platform : undefined;
1220
+ }
1221
+ if (toolName.startsWith("ios_") || toolName.startsWith("android_"))
1222
+ return undefined;
1223
+ return getFirstConnectedApp()?.platform;
1224
+ }
1225
+ export function chromiumAppFor(toolName, device) {
1226
+ if (peekTargetPlatform(toolName, device) !== "chromium")
1227
+ return null;
1228
+ return device ? getConnectedAppByDevice(device) : getFirstConnectedApp();
1229
+ }
1230
+ export function chromiumWindowGone(listed, attempts) {
1231
+ return listed > 0 || attempts >= 2;
1232
+ }
1233
+ export function staleTargetMessage(device) {
1234
+ const name = device.deviceName || device.title;
1235
+ return isChromiumTarget(device)
1236
+ ? `Skipped ${name} (stale CDP target — the page does not answer. A JavaScript dialog (alert / confirm / prompt) may be open in the window: close it with the window's own buttons, then scan again)`
1237
+ : `Skipped ${name} (stale CDP target — no response from JS context)`;
1238
+ }
1239
+ export function dialogGateFor(toolName, device) {
1240
+ if (!DIALOG_BLOCKED_TOOLS.has(toolName))
1241
+ return null;
1242
+ try {
1243
+ const app = chromiumAppFor(toolName, typeof device === "string" ? device : undefined);
1244
+ return app ? dialogGate(toolName, openDialog(app.ws)) : null;
1245
+ }
1246
+ catch {
1247
+ return null;
1248
+ }
1249
+ }
1177
1250
  export function getConnectedAppByDevice(device) {
1178
1251
  const resolution = resolveConnectedAppByDevice(device);
1179
1252
  if (resolution.kind === "ok")
@@ -1264,6 +1337,8 @@ export async function verifyLogPipeline(app) {
1264
1337
  try {
1265
1338
  app.ws.send(JSON.stringify({ id: getNextMessageId(), method: "Runtime.enable" }));
1266
1339
  app.ws.send(JSON.stringify({ id: getNextMessageId(), method: "Log.enable" }));
1340
+ if (app.platform === "chromium")
1341
+ app.ws.send(JSON.stringify({ id: getNextMessageId(), method: "Page.enable" }));
1267
1342
  }
1268
1343
  catch {
1269
1344
  }
@@ -1354,7 +1429,7 @@ export async function ensureConnection(options = {}) {
1354
1429
  wasReconnected: false,
1355
1430
  healthCheckPassed: false,
1356
1431
  connectionInfos: [],
1357
- error: `No debuggable devices found on port ${targetPort}. Make sure the app is running.`,
1432
+ error: hostAddressChangeHint(targetPort) ?? `No debuggable devices found on port ${targetPort}. Make sure the app is running.`,
1358
1433
  failureKind: "no_debuggable_devices",
1359
1434
  };
1360
1435
  }
@@ -1368,7 +1443,7 @@ export async function ensureConnection(options = {}) {
1368
1443
  wasReconnected: false,
1369
1444
  healthCheckPassed: false,
1370
1445
  connectionInfos: [],
1371
- error: `${connectResult}. The CDP page advertised by Metro is no longer responsive — restart the React Native app, then retry.`,
1446
+ error: isChromiumTarget(mainDevice) ? connectResult : `${connectResult}. The CDP page advertised by Metro is no longer responsive — restart the React Native app, then retry.`,
1372
1447
  };
1373
1448
  }
1374
1449
  for (let i = 0; i < 5 && openApps.length === 0; i++) {
@@ -1410,6 +1485,11 @@ export async function ensureConnection(options = {}) {
1410
1485
  for (const candidate of openApps) {
1411
1486
  let app = candidate;
1412
1487
  let healthy = true;
1488
+ const dialog = app.platform === "chromium" ? openDialog(app.ws) : null;
1489
+ if (dialog) {
1490
+ perApp.push({ app, healthy: false, dialog: formatDialog(dialog) });
1491
+ continue;
1492
+ }
1413
1493
  if (healthCheck) {
1414
1494
  healthy = await runQuickHealthCheck(app);
1415
1495
  if (!healthy && !wasReconnected) {
@@ -1424,7 +1504,7 @@ export async function ensureConnection(options = {}) {
1424
1504
  catch { }
1425
1505
  connectedApps.delete(appKey);
1426
1506
  const devices = await fetchDevices(appPort);
1427
- const mainDevice = selectMainDevice(devices);
1507
+ const mainDevice = pickReconnectTarget(devices, app.deviceInfo);
1428
1508
  if (mainDevice) {
1429
1509
  try {
1430
1510
  await connectToDevice(mainDevice, appPort);
@@ -1452,7 +1532,7 @@ export async function ensureConnection(options = {}) {
1452
1532
  }
1453
1533
  perApp.push({ app, healthy });
1454
1534
  }
1455
- const connectionInfos = perApp.map(({ app, healthy }) => {
1535
+ const connectionInfos = perApp.map(({ app, healthy, dialog }) => {
1456
1536
  const appKey = `${app.port}-${app.deviceInfo.id}`;
1457
1537
  const connectionState = getConnectionState(appKey);
1458
1538
  const contextHealth = getContextHealth(appKey);
@@ -1468,6 +1548,7 @@ export async function ensureConnection(options = {}) {
1468
1548
  uptime,
1469
1549
  contextId: contextHealth?.contextId ?? null,
1470
1550
  healthCheckPassed: healthy,
1551
+ ...(dialog && { dialog }),
1471
1552
  };
1472
1553
  });
1473
1554
  const anyOpen = perApp.some(r => r.app.ws.readyState === WebSocket.OPEN);