react-native-mcp-kit 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/README.md +6 -6
  2. package/dist/babel/testIdPlugin/collectHooks.d.ts +13 -0
  3. package/dist/babel/testIdPlugin/collectHooks.d.ts.map +1 -0
  4. package/dist/babel/testIdPlugin/collectHooks.js +112 -0
  5. package/dist/babel/testIdPlugin/collectHooks.js.map +1 -0
  6. package/dist/babel/testIdPlugin/constants.d.ts +6 -0
  7. package/dist/babel/testIdPlugin/constants.d.ts.map +1 -0
  8. package/dist/babel/testIdPlugin/constants.js +49 -0
  9. package/dist/babel/testIdPlugin/constants.js.map +1 -0
  10. package/dist/babel/testIdPlugin/helpers.d.ts +7 -0
  11. package/dist/babel/testIdPlugin/helpers.d.ts.map +1 -0
  12. package/dist/babel/testIdPlugin/helpers.js +77 -0
  13. package/dist/babel/testIdPlugin/helpers.js.map +1 -0
  14. package/dist/babel/testIdPlugin/hocUnwrap.d.ts +4 -0
  15. package/dist/babel/testIdPlugin/hocUnwrap.d.ts.map +1 -0
  16. package/dist/babel/testIdPlugin/hocUnwrap.js +94 -0
  17. package/dist/babel/testIdPlugin/hocUnwrap.js.map +1 -0
  18. package/dist/babel/{testIdPlugin.d.ts → testIdPlugin/index.d.ts} +1 -1
  19. package/dist/babel/testIdPlugin/index.d.ts.map +1 -0
  20. package/dist/babel/testIdPlugin/index.js +205 -0
  21. package/dist/babel/testIdPlugin/index.js.map +1 -0
  22. package/dist/babel/testIdPlugin/inject.d.ts +7 -0
  23. package/dist/babel/testIdPlugin/inject.d.ts.map +1 -0
  24. package/dist/babel/testIdPlugin/inject.js +86 -0
  25. package/dist/babel/testIdPlugin/inject.js.map +1 -0
  26. package/dist/babel/testIdPlugin/types.d.ts +59 -0
  27. package/dist/babel/testIdPlugin/types.d.ts.map +1 -0
  28. package/dist/babel/testIdPlugin/types.js +3 -0
  29. package/dist/babel/testIdPlugin/types.js.map +1 -0
  30. package/dist/bin/ios-hid +0 -0
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/modules/alert/alert.d.ts.map +1 -1
  36. package/dist/modules/alert/alert.js +18 -3
  37. package/dist/modules/alert/alert.js.map +1 -1
  38. package/dist/modules/console/console.d.ts.map +1 -1
  39. package/dist/modules/console/console.js +38 -12
  40. package/dist/modules/console/console.js.map +1 -1
  41. package/dist/modules/console/types.d.ts +1 -1
  42. package/dist/modules/console/types.d.ts.map +1 -1
  43. package/dist/modules/device/device.d.ts.map +1 -1
  44. package/dist/modules/device/device.js +17 -4
  45. package/dist/modules/device/device.js.map +1 -1
  46. package/dist/modules/errors/errors.d.ts.map +1 -1
  47. package/dist/modules/errors/errors.js +3 -1
  48. package/dist/modules/errors/errors.js.map +1 -1
  49. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  50. package/dist/modules/fiberTree/fiberTree.js +44 -7
  51. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  52. package/dist/modules/fiberTree/finder.d.ts +2 -0
  53. package/dist/modules/fiberTree/finder.d.ts.map +1 -1
  54. package/dist/modules/fiberTree/finder.js +3 -1
  55. package/dist/modules/fiberTree/finder.js.map +1 -1
  56. package/dist/modules/fiberTree/hooks/extract.d.ts +6 -0
  57. package/dist/modules/fiberTree/hooks/extract.d.ts.map +1 -0
  58. package/dist/modules/fiberTree/hooks/extract.js +187 -0
  59. package/dist/modules/fiberTree/hooks/extract.js.map +1 -0
  60. package/dist/modules/fiberTree/hooks/flatten.d.ts +4 -0
  61. package/dist/modules/fiberTree/hooks/flatten.d.ts.map +1 -0
  62. package/dist/modules/fiberTree/hooks/flatten.js +81 -0
  63. package/dist/modules/fiberTree/hooks/flatten.js.map +1 -0
  64. package/dist/modules/fiberTree/hooks/index.d.ts +5 -0
  65. package/dist/modules/fiberTree/hooks/index.d.ts.map +1 -0
  66. package/dist/modules/fiberTree/hooks/index.js +10 -0
  67. package/dist/modules/fiberTree/hooks/index.js.map +1 -0
  68. package/dist/modules/fiberTree/hooks/options.d.ts +9 -0
  69. package/dist/modules/fiberTree/hooks/options.d.ts.map +1 -0
  70. package/dist/modules/fiberTree/hooks/options.js +27 -0
  71. package/dist/modules/fiberTree/hooks/options.js.map +1 -0
  72. package/dist/modules/fiberTree/hooks/patterns.d.ts +2 -0
  73. package/dist/modules/fiberTree/hooks/patterns.d.ts.map +1 -0
  74. package/dist/modules/fiberTree/hooks/patterns.js +26 -0
  75. package/dist/modules/fiberTree/hooks/patterns.js.map +1 -0
  76. package/dist/modules/fiberTree/hooks/shape.d.ts +3 -0
  77. package/dist/modules/fiberTree/hooks/shape.d.ts.map +1 -0
  78. package/dist/modules/fiberTree/hooks/shape.js +66 -0
  79. package/dist/modules/fiberTree/hooks/shape.js.map +1 -0
  80. package/dist/modules/fiberTree/hooks/slotCount.d.ts +2 -0
  81. package/dist/modules/fiberTree/hooks/slotCount.d.ts.map +1 -0
  82. package/dist/modules/fiberTree/hooks/slotCount.js +93 -0
  83. package/dist/modules/fiberTree/hooks/slotCount.js.map +1 -0
  84. package/dist/modules/fiberTree/{hooks.d.ts → hooks/types.d.ts} +18 -34
  85. package/dist/modules/fiberTree/hooks/types.d.ts.map +1 -0
  86. package/dist/modules/fiberTree/hooks/types.js +3 -0
  87. package/dist/modules/fiberTree/hooks/types.js.map +1 -0
  88. package/dist/modules/fiberTree/hooks/value.d.ts +2 -0
  89. package/dist/modules/fiberTree/hooks/value.d.ts.map +1 -0
  90. package/dist/modules/fiberTree/hooks/value.js +89 -0
  91. package/dist/modules/fiberTree/hooks/value.js.map +1 -0
  92. package/dist/modules/fiberTree/utils/constants.d.ts +8 -0
  93. package/dist/modules/fiberTree/utils/constants.d.ts.map +1 -0
  94. package/dist/modules/fiberTree/utils/constants.js +15 -0
  95. package/dist/modules/fiberTree/utils/constants.js.map +1 -0
  96. package/dist/modules/fiberTree/utils/index.d.ts +9 -0
  97. package/dist/modules/fiberTree/utils/index.d.ts.map +1 -0
  98. package/dist/modules/fiberTree/utils/index.js +34 -0
  99. package/dist/modules/fiberTree/utils/index.js.map +1 -0
  100. package/dist/modules/fiberTree/utils/match.d.ts +4 -0
  101. package/dist/modules/fiberTree/utils/match.d.ts.map +1 -0
  102. package/dist/modules/fiberTree/utils/match.js +169 -0
  103. package/dist/modules/fiberTree/utils/match.js.map +1 -0
  104. package/dist/modules/fiberTree/utils/naming.d.ts +4 -0
  105. package/dist/modules/fiberTree/utils/naming.d.ts.map +1 -0
  106. package/dist/modules/fiberTree/utils/naming.js +52 -0
  107. package/dist/modules/fiberTree/utils/naming.js.map +1 -0
  108. package/dist/modules/fiberTree/utils/native.d.ts +5 -0
  109. package/dist/modules/fiberTree/utils/native.d.ts.map +1 -0
  110. package/dist/modules/fiberTree/utils/native.js +101 -0
  111. package/dist/modules/fiberTree/utils/native.js.map +1 -0
  112. package/dist/modules/fiberTree/utils/projection.d.ts +9 -0
  113. package/dist/modules/fiberTree/utils/projection.d.ts.map +1 -0
  114. package/dist/modules/fiberTree/utils/projection.js +75 -0
  115. package/dist/modules/fiberTree/utils/projection.js.map +1 -0
  116. package/dist/modules/fiberTree/utils/root.d.ts +4 -0
  117. package/dist/modules/fiberTree/utils/root.d.ts.map +1 -0
  118. package/dist/modules/fiberTree/utils/root.js +30 -0
  119. package/dist/modules/fiberTree/utils/root.js.map +1 -0
  120. package/dist/modules/fiberTree/utils/screen.d.ts +10 -0
  121. package/dist/modules/fiberTree/utils/screen.d.ts.map +1 -0
  122. package/dist/modules/fiberTree/utils/screen.js +39 -0
  123. package/dist/modules/fiberTree/utils/screen.js.map +1 -0
  124. package/dist/modules/fiberTree/utils/serialize.d.ts +4 -0
  125. package/dist/modules/fiberTree/utils/serialize.d.ts.map +1 -0
  126. package/dist/modules/fiberTree/utils/serialize.js +102 -0
  127. package/dist/modules/fiberTree/utils/serialize.js.map +1 -0
  128. package/dist/modules/fiberTree/utils/traverse.d.ts +12 -0
  129. package/dist/modules/fiberTree/utils/traverse.d.ts.map +1 -0
  130. package/dist/modules/fiberTree/utils/traverse.js +107 -0
  131. package/dist/modules/fiberTree/utils/traverse.js.map +1 -0
  132. package/dist/modules/i18next/i18next.d.ts.map +1 -1
  133. package/dist/modules/i18next/i18next.js +27 -6
  134. package/dist/modules/i18next/i18next.js.map +1 -1
  135. package/dist/modules/logBox/logBox.d.ts.map +1 -1
  136. package/dist/modules/logBox/logBox.js +8 -4
  137. package/dist/modules/logBox/logBox.js.map +1 -1
  138. package/dist/modules/navigation/navigation.d.ts.map +1 -1
  139. package/dist/modules/navigation/navigation.js +19 -4
  140. package/dist/modules/navigation/navigation.js.map +1 -1
  141. package/dist/modules/network/network.js +1 -1
  142. package/dist/modules/network/network.js.map +1 -1
  143. package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
  144. package/dist/modules/reactQuery/reactQuery.js +2 -1
  145. package/dist/modules/reactQuery/reactQuery.js.map +1 -1
  146. package/dist/modules/storage/storage.d.ts.map +1 -1
  147. package/dist/modules/storage/storage.js +23 -8
  148. package/dist/modules/storage/storage.js.map +1 -1
  149. package/dist/server/bridge.d.ts +2 -0
  150. package/dist/server/bridge.d.ts.map +1 -1
  151. package/dist/server/bridge.js +61 -5
  152. package/dist/server/bridge.js.map +1 -1
  153. package/dist/server/dispatch.d.ts +15 -0
  154. package/dist/server/dispatch.d.ts.map +1 -0
  155. package/dist/server/dispatch.js +121 -0
  156. package/dist/server/dispatch.js.map +1 -0
  157. package/dist/server/helpers.d.ts +97 -0
  158. package/dist/server/helpers.d.ts.map +1 -0
  159. package/dist/server/helpers.js +162 -0
  160. package/dist/server/helpers.js.map +1 -0
  161. package/dist/server/host/deviceResolver/byClient.d.ts +5 -0
  162. package/dist/server/host/deviceResolver/byClient.d.ts.map +1 -0
  163. package/dist/server/host/deviceResolver/byClient.js +171 -0
  164. package/dist/server/host/deviceResolver/byClient.js.map +1 -0
  165. package/dist/server/host/deviceResolver/byId.d.ts +5 -0
  166. package/dist/server/host/deviceResolver/byId.d.ts.map +1 -0
  167. package/dist/server/host/deviceResolver/byId.js +81 -0
  168. package/dist/server/host/deviceResolver/byId.js.map +1 -0
  169. package/dist/server/host/deviceResolver/enrich.d.ts +5 -0
  170. package/dist/server/host/deviceResolver/enrich.d.ts.map +1 -0
  171. package/dist/server/host/deviceResolver/enrich.js +123 -0
  172. package/dist/server/host/deviceResolver/enrich.js.map +1 -0
  173. package/dist/server/host/deviceResolver/index.d.ts +13 -0
  174. package/dist/server/host/deviceResolver/index.d.ts.map +1 -0
  175. package/dist/server/host/deviceResolver/index.js +65 -0
  176. package/dist/server/host/deviceResolver/index.js.map +1 -0
  177. package/dist/server/host/deviceResolver/list.d.ts +10 -0
  178. package/dist/server/host/deviceResolver/list.d.ts.map +1 -0
  179. package/dist/server/host/deviceResolver/list.js +119 -0
  180. package/dist/server/host/deviceResolver/list.js.map +1 -0
  181. package/dist/server/host/deviceResolver/scan.d.ts +4 -0
  182. package/dist/server/host/deviceResolver/scan.d.ts.map +1 -0
  183. package/dist/server/host/deviceResolver/scan.js +102 -0
  184. package/dist/server/host/deviceResolver/scan.js.map +1 -0
  185. package/dist/server/host/{deviceResolver.d.ts → deviceResolver/types.d.ts} +1 -16
  186. package/dist/server/host/deviceResolver/types.d.ts.map +1 -0
  187. package/dist/server/host/deviceResolver/types.js +3 -0
  188. package/dist/server/host/deviceResolver/types.js.map +1 -0
  189. package/dist/server/host/tools/capture.d.ts.map +1 -1
  190. package/dist/server/host/tools/capture.js +52 -22
  191. package/dist/server/host/tools/capture.js.map +1 -1
  192. package/dist/server/host/tools/devices.d.ts.map +1 -1
  193. package/dist/server/host/tools/devices.js +25 -4
  194. package/dist/server/host/tools/devices.js.map +1 -1
  195. package/dist/server/host/tools/input/android.d.ts +15 -0
  196. package/dist/server/host/tools/input/android.d.ts.map +1 -0
  197. package/dist/server/host/tools/input/android.js +88 -0
  198. package/dist/server/host/tools/input/android.js.map +1 -0
  199. package/dist/server/host/tools/input/constants.d.ts +14 -0
  200. package/dist/server/host/tools/input/constants.d.ts.map +1 -0
  201. package/dist/server/host/tools/input/constants.js +41 -0
  202. package/dist/server/host/tools/input/constants.js.map +1 -0
  203. package/dist/server/host/tools/input/drag.d.ts +4 -0
  204. package/dist/server/host/tools/input/drag.d.ts.map +1 -0
  205. package/dist/server/host/tools/input/drag.js +76 -0
  206. package/dist/server/host/tools/input/drag.js.map +1 -0
  207. package/dist/server/host/tools/input/index.d.ts +8 -0
  208. package/dist/server/host/tools/input/index.d.ts.map +1 -0
  209. package/dist/server/host/tools/input/index.js +18 -0
  210. package/dist/server/host/tools/input/index.js.map +1 -0
  211. package/dist/server/host/tools/input/longPress.d.ts +4 -0
  212. package/dist/server/host/tools/input/longPress.d.ts.map +1 -0
  213. package/dist/server/host/tools/input/longPress.js +49 -0
  214. package/dist/server/host/tools/input/longPress.js.map +1 -0
  215. package/dist/server/host/tools/input/pressKey.d.ts +4 -0
  216. package/dist/server/host/tools/input/pressKey.d.ts.map +1 -0
  217. package/dist/server/host/tools/input/pressKey.js +42 -0
  218. package/dist/server/host/tools/input/pressKey.js.map +1 -0
  219. package/dist/server/host/tools/input/swipe.d.ts +4 -0
  220. package/dist/server/host/tools/input/swipe.d.ts.map +1 -0
  221. package/dist/server/host/tools/input/swipe.js +71 -0
  222. package/dist/server/host/tools/input/swipe.js.map +1 -0
  223. package/dist/server/host/tools/input/tap.d.ts +4 -0
  224. package/dist/server/host/tools/input/tap.d.ts.map +1 -0
  225. package/dist/server/host/tools/input/tap.js +49 -0
  226. package/dist/server/host/tools/input/tap.js.map +1 -0
  227. package/dist/server/host/tools/input/typeText.d.ts +4 -0
  228. package/dist/server/host/tools/input/typeText.d.ts.map +1 -0
  229. package/dist/server/host/tools/input/typeText.js +52 -0
  230. package/dist/server/host/tools/input/typeText.js.map +1 -0
  231. package/dist/server/host/tools/input/typeTextBatch.d.ts +4 -0
  232. package/dist/server/host/tools/input/typeTextBatch.d.ts.map +1 -0
  233. package/dist/server/host/tools/input/typeTextBatch.js +106 -0
  234. package/dist/server/host/tools/input/typeTextBatch.js.map +1 -0
  235. package/dist/server/host/tools/tapFiber.d.ts.map +1 -1
  236. package/dist/server/host/tools/tapFiber.js +2 -0
  237. package/dist/server/host/tools/tapFiber.js.map +1 -1
  238. package/dist/server/instructions.d.ts +2 -0
  239. package/dist/server/instructions.d.ts.map +1 -0
  240. package/dist/server/instructions.js +74 -0
  241. package/dist/server/instructions.js.map +1 -0
  242. package/dist/server/mcpServer.d.ts +0 -12
  243. package/dist/server/mcpServer.d.ts.map +1 -1
  244. package/dist/server/mcpServer.js +26 -877
  245. package/dist/server/mcpServer.js.map +1 -1
  246. package/dist/server/metro/tools/events.d.ts.map +1 -1
  247. package/dist/server/metro/tools/events.js +1 -0
  248. package/dist/server/metro/tools/events.js.map +1 -1
  249. package/dist/server/metro/tools/openInEditor.d.ts.map +1 -1
  250. package/dist/server/metro/tools/openInEditor.js +4 -1
  251. package/dist/server/metro/tools/openInEditor.js.map +1 -1
  252. package/dist/server/metro/tools/symbolicate.d.ts.map +1 -1
  253. package/dist/server/metro/tools/symbolicate.js +41 -11
  254. package/dist/server/metro/tools/symbolicate.js.map +1 -1
  255. package/dist/server/predicate.d.ts +31 -0
  256. package/dist/server/predicate.d.ts.map +1 -0
  257. package/dist/server/predicate.js +104 -0
  258. package/dist/server/predicate.js.map +1 -0
  259. package/dist/server/tools/assert.d.ts +4 -0
  260. package/dist/server/tools/assert.d.ts.map +1 -0
  261. package/dist/server/tools/assert.js +79 -0
  262. package/dist/server/tools/assert.js.map +1 -0
  263. package/dist/server/tools/call.d.ts +4 -0
  264. package/dist/server/tools/call.d.ts.map +1 -0
  265. package/dist/server/tools/call.js +38 -0
  266. package/dist/server/tools/call.js.map +1 -0
  267. package/dist/server/tools/connectionStatus.d.ts +4 -0
  268. package/dist/server/tools/connectionStatus.d.ts.map +1 -0
  269. package/dist/server/tools/connectionStatus.js +41 -0
  270. package/dist/server/tools/connectionStatus.js.map +1 -0
  271. package/dist/server/tools/describeTool.d.ts +4 -0
  272. package/dist/server/tools/describeTool.d.ts.map +1 -0
  273. package/dist/server/tools/describeTool.js +130 -0
  274. package/dist/server/tools/describeTool.js.map +1 -0
  275. package/dist/server/tools/listTools.d.ts +4 -0
  276. package/dist/server/tools/listTools.d.ts.map +1 -0
  277. package/dist/server/tools/listTools.js +109 -0
  278. package/dist/server/tools/listTools.js.map +1 -0
  279. package/dist/server/tools/waitUntil.d.ts +4 -0
  280. package/dist/server/tools/waitUntil.d.ts.map +1 -0
  281. package/dist/server/tools/waitUntil.js +119 -0
  282. package/dist/server/tools/waitUntil.js.map +1 -0
  283. package/dist/shared/projection/projectValue.d.ts +12 -1
  284. package/dist/shared/projection/projectValue.d.ts.map +1 -1
  285. package/dist/shared/projection/projectValue.js +42 -12
  286. package/dist/shared/projection/projectValue.js.map +1 -1
  287. package/dist/shared/projection/resolvePath.d.ts +14 -2
  288. package/dist/shared/projection/resolvePath.d.ts.map +1 -1
  289. package/dist/shared/projection/resolvePath.js +25 -3
  290. package/dist/shared/projection/resolvePath.js.map +1 -1
  291. package/package.json +2 -2
  292. package/dist/babel/testIdPlugin.d.ts.map +0 -1
  293. package/dist/babel/testIdPlugin.js +0 -537
  294. package/dist/babel/testIdPlugin.js.map +0 -1
  295. package/dist/modules/fiberTree/hooks.d.ts.map +0 -1
  296. package/dist/modules/fiberTree/hooks.js +0 -532
  297. package/dist/modules/fiberTree/hooks.js.map +0 -1
  298. package/dist/modules/fiberTree/utils.d.ts +0 -39
  299. package/dist/modules/fiberTree/utils.d.ts.map +0 -1
  300. package/dist/modules/fiberTree/utils.js +0 -616
  301. package/dist/modules/fiberTree/utils.js.map +0 -1
  302. package/dist/server/host/deviceResolver.d.ts.map +0 -1
  303. package/dist/server/host/deviceResolver.js +0 -621
  304. package/dist/server/host/deviceResolver.js.map +0 -1
  305. package/dist/server/host/tools/input.d.ts +0 -10
  306. package/dist/server/host/tools/input.d.ts.map +0 -1
  307. package/dist/server/host/tools/input.js +0 -478
  308. package/dist/server/host/tools/input.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/constants.ts"],"names":[],"mappings":";AAAA,mFAAmF;AACnF,+EAA+E;AAC/E,+EAA+E;AAC/E,gCAAgC;;;AAEnB,QAAA,cAAc,GAAG,CAAC,CAAC;AACnB,QAAA,SAAS,GAAG,CAAC,CAAC;AACd,QAAA,kBAAkB,GAAG,CAAC,CAAC;AACvB,QAAA,eAAe,GAAG,CAAC,CAAC;AACpB,QAAA,WAAW,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,GAAG,EAAE,CAAC;AACV,QAAA,WAAW,GAAG,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { findAllByQuery, matchesQuery } from './match';
2
+ export { getComponentName, getComponentType } from './naming';
3
+ export { getAvailableMethods, getNativeInstance, measureFiber } from './native';
4
+ export { projectFiberValue } from './projection';
5
+ export { getFiberRoot, setRootRef } from './root';
6
+ export { findScreenFiberByRouteKey } from './screen';
7
+ export { serializeFiber } from './serialize';
8
+ export { findAllFibers, findByMcpId, findByName, findByTestID, findByText, findFiber, findHostFiber, getAncestors, getDirectChildren, getSiblings, } from './traverse';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSiblings = exports.getDirectChildren = exports.getAncestors = exports.findHostFiber = exports.findFiber = exports.findByText = exports.findByTestID = exports.findByName = exports.findByMcpId = exports.findAllFibers = exports.serializeFiber = exports.findScreenFiberByRouteKey = exports.setRootRef = exports.getFiberRoot = exports.projectFiberValue = exports.measureFiber = exports.getNativeInstance = exports.getAvailableMethods = exports.getComponentType = exports.getComponentName = exports.matchesQuery = exports.findAllByQuery = void 0;
4
+ var match_1 = require("./match");
5
+ Object.defineProperty(exports, "findAllByQuery", { enumerable: true, get: function () { return match_1.findAllByQuery; } });
6
+ Object.defineProperty(exports, "matchesQuery", { enumerable: true, get: function () { return match_1.matchesQuery; } });
7
+ var naming_1 = require("./naming");
8
+ Object.defineProperty(exports, "getComponentName", { enumerable: true, get: function () { return naming_1.getComponentName; } });
9
+ Object.defineProperty(exports, "getComponentType", { enumerable: true, get: function () { return naming_1.getComponentType; } });
10
+ var native_1 = require("./native");
11
+ Object.defineProperty(exports, "getAvailableMethods", { enumerable: true, get: function () { return native_1.getAvailableMethods; } });
12
+ Object.defineProperty(exports, "getNativeInstance", { enumerable: true, get: function () { return native_1.getNativeInstance; } });
13
+ Object.defineProperty(exports, "measureFiber", { enumerable: true, get: function () { return native_1.measureFiber; } });
14
+ var projection_1 = require("./projection");
15
+ Object.defineProperty(exports, "projectFiberValue", { enumerable: true, get: function () { return projection_1.projectFiberValue; } });
16
+ var root_1 = require("./root");
17
+ Object.defineProperty(exports, "getFiberRoot", { enumerable: true, get: function () { return root_1.getFiberRoot; } });
18
+ Object.defineProperty(exports, "setRootRef", { enumerable: true, get: function () { return root_1.setRootRef; } });
19
+ var screen_1 = require("./screen");
20
+ Object.defineProperty(exports, "findScreenFiberByRouteKey", { enumerable: true, get: function () { return screen_1.findScreenFiberByRouteKey; } });
21
+ var serialize_1 = require("./serialize");
22
+ Object.defineProperty(exports, "serializeFiber", { enumerable: true, get: function () { return serialize_1.serializeFiber; } });
23
+ var traverse_1 = require("./traverse");
24
+ Object.defineProperty(exports, "findAllFibers", { enumerable: true, get: function () { return traverse_1.findAllFibers; } });
25
+ Object.defineProperty(exports, "findByMcpId", { enumerable: true, get: function () { return traverse_1.findByMcpId; } });
26
+ Object.defineProperty(exports, "findByName", { enumerable: true, get: function () { return traverse_1.findByName; } });
27
+ Object.defineProperty(exports, "findByTestID", { enumerable: true, get: function () { return traverse_1.findByTestID; } });
28
+ Object.defineProperty(exports, "findByText", { enumerable: true, get: function () { return traverse_1.findByText; } });
29
+ Object.defineProperty(exports, "findFiber", { enumerable: true, get: function () { return traverse_1.findFiber; } });
30
+ Object.defineProperty(exports, "findHostFiber", { enumerable: true, get: function () { return traverse_1.findHostFiber; } });
31
+ Object.defineProperty(exports, "getAncestors", { enumerable: true, get: function () { return traverse_1.getAncestors; } });
32
+ Object.defineProperty(exports, "getDirectChildren", { enumerable: true, get: function () { return traverse_1.getDirectChildren; } });
33
+ Object.defineProperty(exports, "getSiblings", { enumerable: true, get: function () { return traverse_1.getSiblings; } });
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/index.ts"],"names":[],"mappings":";;;AAAA,iCAAuD;AAA9C,uGAAA,cAAc,OAAA;AAAE,qGAAA,YAAY,OAAA;AACrC,mCAA8D;AAArD,0GAAA,gBAAgB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAC3C,mCAAgF;AAAvE,6GAAA,mBAAmB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,sGAAA,YAAY,OAAA;AAC7D,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,+BAAkD;AAAzC,oGAAA,YAAY,OAAA;AAAE,kGAAA,UAAU,OAAA;AACjC,mCAAqD;AAA5C,mHAAA,yBAAyB,OAAA;AAClC,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,uCAWoB;AAVlB,yGAAA,aAAa,OAAA;AACb,uGAAA,WAAW,OAAA;AACX,sGAAA,UAAU,OAAA;AACV,wGAAA,YAAY,OAAA;AACZ,sGAAA,UAAU,OAAA;AACV,qGAAA,SAAS,OAAA;AACT,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA;AACZ,6GAAA,iBAAiB,OAAA;AACjB,uGAAA,WAAW,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { type ComponentQuery, type Fiber } from '../../../modules/fiberTree/types';
2
+ export declare const matchesQuery: (fiber: Fiber, query: ComponentQuery) => boolean;
3
+ export declare const findAllByQuery: (root: Fiber, query: ComponentQuery) => Fiber[];
4
+ //# sourceMappingURL=match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/match.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,KAAK,EAAoB,MAAM,2BAA2B,CAAC;AAgG9F,eAAO,MAAM,YAAY,UAAW,KAAK,SAAS,cAAc,KAAG,OA8DlE,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,KAAK,SAAS,cAAc,KAAG,KAAK,EAIxE,CAAC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findAllByQuery = exports.matchesQuery = void 0;
4
+ const naming_1 = require("./naming");
5
+ const serialize_1 = require("./serialize");
6
+ const traverse_1 = require("./traverse");
7
+ // Cap for object/array serialization used by contains/regex matchers.
8
+ // Large fiber props (e.g. deep Redux state, Reanimated shared values) would
9
+ // otherwise turn into megabyte-strings per fiber.
10
+ const MATCH_STRING_CAP = 10_000;
11
+ /**
12
+ * Turn any prop value into a string usable by `contains` / `regex` matchers.
13
+ * - Primitives and functions/symbols go through String(), preserving the
14
+ * "substring on text props" intuition (e.g. placeholder = "Search" stays
15
+ * "Search", not '"Search"').
16
+ * - Objects and arrays are JSON-serialized with circular refs replaced, so a
17
+ * regex like `"title":"Hello"` or `\\bonPress\\b` can still land. Functions
18
+ * and symbols become placeholders; bigint becomes its decimal string.
19
+ * - Output is capped at MATCH_STRING_CAP characters to keep response costs
20
+ * bounded on large prop graphs.
21
+ */
22
+ const stringifyForMatching = (value) => {
23
+ if (value === null || value === undefined)
24
+ return String(value);
25
+ const type = typeof value;
26
+ if (type !== 'object')
27
+ return String(value);
28
+ try {
29
+ const seen = new WeakSet();
30
+ const serialized = JSON.stringify(value, (_key, v) => {
31
+ if (v && typeof v === 'object') {
32
+ if (seen.has(v))
33
+ return '[Circular]';
34
+ seen.add(v);
35
+ }
36
+ if (typeof v === 'function')
37
+ return '[Function]';
38
+ if (typeof v === 'symbol')
39
+ return v.toString();
40
+ if (typeof v === 'bigint')
41
+ return v.toString();
42
+ return v;
43
+ });
44
+ if (typeof serialized !== 'string')
45
+ return String(value);
46
+ return serialized.length > MATCH_STRING_CAP
47
+ ? serialized.slice(0, MATCH_STRING_CAP)
48
+ : serialized;
49
+ }
50
+ catch {
51
+ return String(value);
52
+ }
53
+ };
54
+ const matchPropValue = (actual, matcher) => {
55
+ if (matcher !== null && typeof matcher === 'object') {
56
+ if (actual === undefined || actual === null)
57
+ return false;
58
+ const isPrimitive = typeof actual !== 'object';
59
+ const deep = matcher.deep === true;
60
+ // Non-primitive values only participate when the caller opts in with
61
+ // `deep: true`. This keeps naive placeholder/testID matchers from
62
+ // accidentally hitting stringified objects.
63
+ if (!isPrimitive && !deep)
64
+ return false;
65
+ const asString = isPrimitive ? String(actual) : stringifyForMatching(actual);
66
+ if ('contains' in matcher && typeof matcher.contains === 'string') {
67
+ return asString.includes(matcher.contains);
68
+ }
69
+ if ('regex' in matcher && typeof matcher.regex === 'string') {
70
+ try {
71
+ return new RegExp(matcher.regex).test(asString);
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ return false;
78
+ }
79
+ return actual === matcher;
80
+ };
81
+ // Match a string criterion against an actual value with `/regex/flags`-aware
82
+ // semantics. Matches step-level `name` / `mcpId` / `testID` against
83
+ // strict equality OR a slash-delimited regex; `text` against substring OR
84
+ // regex. Mirrors the syntax used by `select.hooks.names` / `mcpIds` so the
85
+ // agent has one consistent rule across the tool.
86
+ const matchStringCriterion = (actual, pattern, mode) => {
87
+ if (actual === undefined)
88
+ return false;
89
+ const re = pattern.match(/^\/(.+)\/([gimsuy]*)$/);
90
+ if (re && re[1] !== undefined) {
91
+ try {
92
+ return new RegExp(re[1], re[2] ?? '').test(actual);
93
+ }
94
+ catch {
95
+ // Malformed regex — fall through to literal comparison so users get
96
+ // exact-equality semantics rather than silent no-match.
97
+ }
98
+ }
99
+ return mode === 'equals' ? actual === pattern : actual.includes(pattern);
100
+ };
101
+ const matchesQuery = (fiber, query) => {
102
+ try {
103
+ if (query.mcpId &&
104
+ !matchStringCriterion(fiber.memoizedProps?.['data-mcp-id'], query.mcpId, 'equals')) {
105
+ return false;
106
+ }
107
+ if (query.testID &&
108
+ !matchStringCriterion(fiber.memoizedProps?.testID, query.testID, 'equals')) {
109
+ return false;
110
+ }
111
+ if (query.name && !matchStringCriterion((0, naming_1.getComponentName)(fiber), query.name, 'equals')) {
112
+ return false;
113
+ }
114
+ if (query.text) {
115
+ const content = (0, serialize_1.getTextContent)(fiber);
116
+ if (!matchStringCriterion(content ?? undefined, query.text, 'includes'))
117
+ return false;
118
+ }
119
+ if (query.hasProps && Array.isArray(query.hasProps)) {
120
+ const props = fiber.memoizedProps;
121
+ if (!props || typeof props !== 'object')
122
+ return false;
123
+ for (const prop of query.hasProps) {
124
+ if (!(prop in props))
125
+ return false;
126
+ }
127
+ }
128
+ if (query.props && typeof query.props === 'object') {
129
+ const props = fiber.memoizedProps;
130
+ if (!props || typeof props !== 'object')
131
+ return false;
132
+ for (const key of Object.keys(query.props)) {
133
+ if (!matchPropValue(props[key], query.props[key]))
134
+ return false;
135
+ }
136
+ }
137
+ if (Array.isArray(query.any) && query.any.length > 0) {
138
+ const anyMatched = query.any.some((sub) => {
139
+ return (0, exports.matchesQuery)(fiber, sub);
140
+ });
141
+ if (!anyMatched)
142
+ return false;
143
+ }
144
+ if (query.not) {
145
+ if (Array.isArray(query.not)) {
146
+ for (const sub of query.not) {
147
+ if ((0, exports.matchesQuery)(fiber, sub))
148
+ return false;
149
+ }
150
+ }
151
+ else if (typeof query.not === 'object') {
152
+ if ((0, exports.matchesQuery)(fiber, query.not))
153
+ return false;
154
+ }
155
+ }
156
+ return true;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ };
162
+ exports.matchesQuery = matchesQuery;
163
+ const findAllByQuery = (root, query) => {
164
+ return (0, traverse_1.findAllFibers)(root, (fiber) => {
165
+ return (0, exports.matchesQuery)(fiber, query);
166
+ });
167
+ };
168
+ exports.findAllByQuery = findAllByQuery;
169
+ //# sourceMappingURL=match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ComponentType, type Fiber } from '../../../modules/fiberTree/types';
2
+ export declare const getComponentName: (fiber: Fiber) => string;
3
+ export declare const getComponentType: (fiber: Fiber) => ComponentType;
4
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/naming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAY3E,eAAO,MAAM,gBAAgB,UAAW,KAAK,KAAG,MAqC/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,KAAK,KAAG,aAa/C,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getComponentType = exports.getComponentName = void 0;
4
+ const constants_1 = require("./constants");
5
+ const getComponentName = (fiber) => {
6
+ // Host root has no `type` and no `return` parent. Surface it as
7
+ // "FiberRoot" instead of "Unknown" so dumps via scope:'root' read
8
+ // sensibly (and the name doesn't collide with a real component).
9
+ if (!fiber.type) {
10
+ if (!fiber.return)
11
+ return 'FiberRoot';
12
+ return 'Unknown';
13
+ }
14
+ if (typeof fiber.type === 'string') {
15
+ return fiber.type;
16
+ }
17
+ if (typeof fiber.type === 'function') {
18
+ return fiber.type.displayName || fiber.type.name || 'Anonymous';
19
+ }
20
+ if (typeof fiber.type === 'object') {
21
+ // ForwardRef
22
+ if (fiber.type.render) {
23
+ return (fiber.type.displayName ||
24
+ fiber.type.render.displayName ||
25
+ fiber.type.render.name ||
26
+ 'ForwardRef');
27
+ }
28
+ // Memo
29
+ if (fiber.type.type) {
30
+ return (fiber.type.displayName || fiber.type.type.displayName || fiber.type.type.name || 'Memo');
31
+ }
32
+ return fiber.type.displayName || 'Unknown';
33
+ }
34
+ return 'Unknown';
35
+ };
36
+ exports.getComponentName = getComponentName;
37
+ const getComponentType = (fiber) => {
38
+ if (fiber.tag === constants_1.HOST_TEXT)
39
+ return 'text';
40
+ if (fiber.tag === constants_1.HOST_COMPONENT)
41
+ return 'host';
42
+ if (fiber.tag === constants_1.FUNCTION_COMPONENT ||
43
+ fiber.tag === constants_1.CLASS_COMPONENT ||
44
+ fiber.tag === constants_1.FORWARD_REF ||
45
+ fiber.tag === constants_1.MEMO ||
46
+ fiber.tag === constants_1.SIMPLE_MEMO) {
47
+ return 'composite';
48
+ }
49
+ return 'other';
50
+ };
51
+ exports.getComponentType = getComponentType;
52
+ //# sourceMappingURL=naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/naming.ts"],"names":[],"mappings":";;;AAEA,2CAQqB;AAEd,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAU,EAAE;IACvD,gEAAgE;IAChE,kEAAkE;IAClE,iEAAiE;IACjE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,aAAa;QACb,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,CACL,KAAK,CAAC,IAAI,CAAC,WAAW;gBACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;gBAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,YAAY,CACb,CAAC;QACJ,CAAC;QACD,OAAO;QACP,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CACL,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AArCW,QAAA,gBAAgB,oBAqC3B;AAEK,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAiB,EAAE;IAC9D,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAS;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,0BAAc;QAAE,OAAO,MAAM,CAAC;IAChD,IACE,KAAK,CAAC,GAAG,KAAK,8BAAkB;QAChC,KAAK,CAAC,GAAG,KAAK,2BAAe;QAC7B,KAAK,CAAC,GAAG,KAAK,uBAAW;QACzB,KAAK,CAAC,GAAG,KAAK,gBAAI;QAClB,KAAK,CAAC,GAAG,KAAK,uBAAW,EACzB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
@@ -0,0 +1,5 @@
1
+ import { type Bounds, type Fiber } from '../../../modules/fiberTree/types';
2
+ export declare const getNativeInstance: (fiber: Fiber) => unknown;
3
+ export declare const measureFiber: (fiber: Fiber) => Promise<Bounds | null>;
4
+ export declare const getAvailableMethods: (instance: unknown) => string[];
5
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMpE,eAAO,MAAM,iBAAiB,UAAW,KAAK,KAAG,OAoBhD,CAAC;AAYF,eAAO,MAAM,YAAY,UAAiB,KAAK,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAgDtE,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,OAAO,KAAG,MAAM,EAiB7D,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAvailableMethods = exports.measureFiber = exports.getNativeInstance = void 0;
4
+ const core_1 = require("../../../shared/rn/core");
5
+ const traverse_1 = require("./traverse");
6
+ // Get the native instance (stateNode) or ref from a fiber
7
+ const getNativeInstance = (fiber) => {
8
+ // For host components, stateNode has the native instance
9
+ const hostFiber = (0, traverse_1.findHostFiber)(fiber);
10
+ if (hostFiber?.stateNode) {
11
+ // Fabric (new architecture): stateNode.canonical.publicInstance
12
+ const canonical = hostFiber.stateNode.canonical;
13
+ if (canonical?.publicInstance) {
14
+ return canonical.publicInstance;
15
+ }
16
+ // Old architecture: stateNode directly
17
+ return hostFiber.stateNode;
18
+ }
19
+ // Check for ref on the fiber
20
+ if (fiber.ref) {
21
+ if (typeof fiber.ref === 'function')
22
+ return null;
23
+ if (fiber.ref.current)
24
+ return fiber.ref.current;
25
+ }
26
+ return null;
27
+ };
28
+ exports.getNativeInstance = getNativeInstance;
29
+ // Measure the on-screen rect of the host view backing a fiber, in PHYSICAL
30
+ // pixels (top-left origin). Uses `UIManager.measure(node, cb)` which yields
31
+ // `pageX/pageY` — coordinates relative to the React root view, mapped to
32
+ // `View.getLocationOnScreen` on Android. This is what `adb shell input tap`
33
+ // expects (and `xcrun simctl io ... tap` on iOS), unlike `measureInWindow`
34
+ // whose origin is the visible window and shifts depending on translucent
35
+ // status-bar / SafeArea insets.
36
+ //
37
+ // Returns null when the fiber has no mounted host view (unmounted, virtualized
38
+ // off-screen, etc.) or when measure throws.
39
+ const measureFiber = async (fiber) => {
40
+ const hostFiber = (0, traverse_1.findHostFiber)(fiber);
41
+ if (!hostFiber?.stateNode)
42
+ return null;
43
+ // Mirror the Fabric / old-arch fork from getNativeInstance.
44
+ const canonical = hostFiber.stateNode.canonical;
45
+ const instance = canonical?.publicInstance ?? hostFiber.stateNode;
46
+ if (!instance)
47
+ return null;
48
+ const RN = (0, core_1.getRN)();
49
+ const { PixelRatio, UIManager, findNodeHandle } = RN;
50
+ const handle = typeof findNodeHandle === 'function' ? findNodeHandle(instance) : null;
51
+ if (handle == null)
52
+ return null;
53
+ return new Promise((resolve) => {
54
+ try {
55
+ UIManager.measure(handle, (_x, _y, width, height, pageX, pageY) => {
56
+ if (!Number.isFinite(pageX) ||
57
+ !Number.isFinite(pageY) ||
58
+ !Number.isFinite(width) ||
59
+ !Number.isFinite(height)) {
60
+ resolve(null);
61
+ return;
62
+ }
63
+ const ratio = PixelRatio.get();
64
+ const px = Math.round(pageX * ratio);
65
+ const py = Math.round(pageY * ratio);
66
+ const pw = Math.round(width * ratio);
67
+ const ph = Math.round(height * ratio);
68
+ resolve({
69
+ centerX: Math.round(px + pw / 2),
70
+ centerY: Math.round(py + ph / 2),
71
+ height: ph,
72
+ width: pw,
73
+ x: px,
74
+ y: py,
75
+ });
76
+ });
77
+ }
78
+ catch {
79
+ resolve(null);
80
+ }
81
+ });
82
+ };
83
+ exports.measureFiber = measureFiber;
84
+ const getAvailableMethods = (instance) => {
85
+ if (!instance || typeof instance !== 'object')
86
+ return [];
87
+ const methods = [];
88
+ let proto = Object.getPrototypeOf(instance);
89
+ while (proto && proto !== Object.prototype) {
90
+ for (const key of Object.getOwnPropertyNames(proto)) {
91
+ if (key !== 'constructor' &&
92
+ typeof instance[key] === 'function') {
93
+ methods.push(key);
94
+ }
95
+ }
96
+ proto = Object.getPrototypeOf(proto);
97
+ }
98
+ return [...new Set(methods)].sort();
99
+ };
100
+ exports.getAvailableMethods = getAvailableMethods;
101
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ProjectOptions } from '../../../shared/projection/projectValue';
2
+ /**
3
+ * Projection helper used everywhere fiber values are serialised (props, hook
4
+ * values, fiber refs). Pre-applies the fiber-aware collapse rule + skip list
5
+ * over the shared `projectValue`. Callers can pass `path` / `depth` / etc.
6
+ * through `options` like with `projectValue` directly.
7
+ */
8
+ export declare const projectFiberValue: (value: unknown, options?: ProjectOptions) => unknown;
9
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/projection.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAC;AA8D1C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,UAAW,OAAO,YAAW,cAAc,KAAQ,OAMhF,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.projectFiberValue = void 0;
4
+ const projectValue_1 = require("../../../shared/projection/projectValue");
5
+ // Props/values to drop — internal React/RN bookkeeping that bloats output.
6
+ // Used by `projectFiberValue` below as `skipKeys`. Anything matching the
7
+ // `__`-prefix regex is also dropped (covers `__nativeTag`, `__reactProps$...`,
8
+ // react-refresh internal markers, etc.).
9
+ const SKIP_KEYS_FIBER = [
10
+ '__internalInstanceHandle',
11
+ '__nativeTag',
12
+ 'children',
13
+ 'collapsableChildren',
14
+ 'ref',
15
+ /^__/,
16
+ ];
17
+ // Collapse rule: detect React elements / fiber nodes / native instances and
18
+ // replace them with compact `${...}`-keyed marker objects. Stops projectValue
19
+ // from descending into ~unbounded React internals graph and emits something
20
+ // the agent can act on (mcpId / componentName).
21
+ const fiberCollapseRule = (value) => {
22
+ if (!value || typeof value !== 'object')
23
+ return undefined;
24
+ const obj = value;
25
+ // React element — has `$$typeof` symbol
26
+ if ('$$typeof' in obj) {
27
+ return { ['${ReactElement}']: true };
28
+ }
29
+ // Fiber-like or native-instance — try to extract a compact ref
30
+ const looksLikeFiberOrNative = 'stateNode' in obj || 'memoizedProps' in obj || '__nativeTag' in obj;
31
+ if (!looksLikeFiberOrNative)
32
+ return undefined;
33
+ // pull a fiber out — direct, or via internal handle on a native view
34
+ const fiber = obj._reactInternals ??
35
+ obj._reactInternalFiber ??
36
+ obj._internalFiberInstanceHandleDEV ??
37
+ obj._internalInstanceHandle ??
38
+ ('memoizedProps' in obj ? obj : undefined);
39
+ const meta = {};
40
+ if (fiber) {
41
+ const props = fiber.memoizedProps;
42
+ const mcpId = props?.['data-mcp-id'];
43
+ const testID = props?.testID;
44
+ if (mcpId)
45
+ meta.mcpId = mcpId;
46
+ if (testID)
47
+ meta.testID = testID;
48
+ const typeName = fiber.type?.displayName ??
49
+ fiber.type?.name;
50
+ if (typeName)
51
+ meta.name = typeName;
52
+ }
53
+ if ('__nativeTag' in obj) {
54
+ meta.nativeTag = obj.__nativeTag;
55
+ const viewConfig = obj.viewConfig;
56
+ if (viewConfig?.uiViewClassName)
57
+ meta.viewClass = viewConfig.uiViewClassName;
58
+ }
59
+ return { ['${ref}']: Object.keys(meta).length > 0 ? meta : true };
60
+ };
61
+ /**
62
+ * Projection helper used everywhere fiber values are serialised (props, hook
63
+ * values, fiber refs). Pre-applies the fiber-aware collapse rule + skip list
64
+ * over the shared `projectValue`. Callers can pass `path` / `depth` / etc.
65
+ * through `options` like with `projectValue` directly.
66
+ */
67
+ const projectFiberValue = (value, options = {}) => {
68
+ return (0, projectValue_1.projectValue)(value, {
69
+ ...options,
70
+ collapse: [fiberCollapseRule, ...(options.collapse ?? [])],
71
+ skipKeys: [...SKIP_KEYS_FIBER, ...(options.skipKeys ?? [])],
72
+ }).value;
73
+ };
74
+ exports.projectFiberValue = projectFiberValue;
75
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/projection.ts"],"names":[],"mappings":";;;AACA,mEAI0C;AAE1C,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,yCAAyC;AACzC,MAAM,eAAe,GAA2B;IAC9C,0BAA0B;IAC1B,aAAa;IACb,UAAU;IACV,qBAAqB;IACrB,KAAK;IACL,KAAK;CACN,CAAC;AAEF,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,gDAAgD;AAChD,MAAM,iBAAiB,GAAiB,CAAC,KAAc,EAAE,EAAE;IACzD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,wCAAwC;IACxC,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,+DAA+D;IAC/D,MAAM,sBAAsB,GAC1B,WAAW,IAAI,GAAG,IAAI,eAAe,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,CAAC;IACvE,IAAI,CAAC,sBAAsB;QAAE,OAAO,SAAS,CAAC;IAE9C,qEAAqE;IACrE,MAAM,KAAK,GACR,GAAG,CAAC,eAAqC;QACzC,GAAG,CAAC,mBAAyC;QAC7C,GAAG,CAAC,+BAAqD;QACzD,GAAG,CAAC,uBAA6C;QAClD,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC,CAAE,GAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,KAAK,CAAC,aAA2D,CAAC;QAChF,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAC;QAC7B,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9B,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,MAAM,QAAQ,GACX,KAAK,CAAC,IAAmE,EAAE,WAAW;YACtF,KAAK,CAAC,IAAmE,EAAE,IAAI,CAAC;QACnF,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACrC,CAAC;IACD,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QACjC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAsD,CAAC;QAC9E,IAAI,UAAU,EAAE,eAAe;YAAE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC;IAC/E,CAAC;IAED,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,UAA0B,EAAE,EAAW,EAAE;IACzF,OAAO,IAAA,2BAAY,EAAC,KAAK,EAAE;QACzB,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC1D,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;KAC5D,CAAC,CAAC,KAAK,CAAC;AACX,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B"}
@@ -0,0 +1,4 @@
1
+ import { type Fiber } from '../../../modules/fiberTree/types';
2
+ export declare const setRootRef: (ref: unknown) => void;
3
+ export declare const getFiberRoot: () => Fiber | null;
4
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,IAEzC,CAAC;AAeF,eAAO,MAAM,YAAY,QAAO,KAAK,GAAG,IAKvC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFiberRoot = exports.setRootRef = void 0;
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ let rootRefStore = null;
6
+ const setRootRef = (ref) => {
7
+ rootRefStore = ref;
8
+ };
9
+ exports.setRootRef = setRootRef;
10
+ const getFiberFromRef = (ref) => {
11
+ if (!ref)
12
+ return null;
13
+ const r = ref;
14
+ const fiber = r._internalInstanceHandle ?? r.__internalInstanceHandle ?? r._reactInternals;
15
+ if (!fiber)
16
+ return null;
17
+ let current = fiber;
18
+ while (current.return) {
19
+ current = current.return;
20
+ }
21
+ return current;
22
+ };
23
+ const getFiberRoot = () => {
24
+ if (rootRefStore?.current) {
25
+ return getFiberFromRef(rootRefStore.current);
26
+ }
27
+ return null;
28
+ };
29
+ exports.getFiberRoot = getFiberRoot;
30
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/root.ts"],"names":[],"mappings":";;;AAEA,8DAA8D;AAC9D,IAAI,YAAY,GAAQ,IAAI,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,GAAY,EAAQ,EAAE;IAC/C,YAAY,GAAG,GAAG,CAAC;AACrB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF,MAAM,eAAe,GAAG,CAAC,GAAY,EAAgB,EAAE;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC,wBAAwB,IAAI,CAAC,CAAC,eAAe,CAAC;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,OAAO,GAAG,KAAc,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,GAAiB,EAAE;IAC7C,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB"}
@@ -0,0 +1,10 @@
1
+ import { type Fiber } from '../../../modules/fiberTree/types';
2
+ /**
3
+ * Locate the screen fiber rendering the given React Navigation route key.
4
+ * Route keys are unique per mounted screen; React Navigation forwards the
5
+ * `route` prop down a short wrapper chain (SceneView → StaticContainer → …→
6
+ * user component). Returns the deepest non-wrapper match so queries land on
7
+ * the developer's screen component, not on a generated wrapper.
8
+ */
9
+ export declare const findScreenFiberByRouteKey: (root: Fiber, routeKey: string) => Fiber | null;
10
+ //# sourceMappingURL=screen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../../../src/modules/fiberTree/utils/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAgBvD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,SAAU,KAAK,YAAY,MAAM,KAAG,KAAK,GAAG,IAajF,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findScreenFiberByRouteKey = void 0;
4
+ const naming_1 = require("./naming");
5
+ const traverse_1 = require("./traverse");
6
+ // React Navigation internals that appear in the route.key match chain but
7
+ // are not the user's screen component — we walk past them to the real leaf.
8
+ const RN_NAV_WRAPPERS = new Set([
9
+ 'Anonymous',
10
+ 'ForwardRef',
11
+ 'Memo',
12
+ 'SceneView',
13
+ 'Screen',
14
+ 'StaticContainer',
15
+ ]);
16
+ /**
17
+ * Locate the screen fiber rendering the given React Navigation route key.
18
+ * Route keys are unique per mounted screen; React Navigation forwards the
19
+ * `route` prop down a short wrapper chain (SceneView → StaticContainer → …→
20
+ * user component). Returns the deepest non-wrapper match so queries land on
21
+ * the developer's screen component, not on a generated wrapper.
22
+ */
23
+ const findScreenFiberByRouteKey = (root, routeKey) => {
24
+ const matches = (0, traverse_1.findAllFibers)(root, (f) => {
25
+ const props = f.memoizedProps;
26
+ return props?.route?.key === routeKey;
27
+ });
28
+ if (matches.length === 0)
29
+ return null;
30
+ for (let i = matches.length - 1; i >= 0; i--) {
31
+ const candidate = matches[i];
32
+ if (!RN_NAV_WRAPPERS.has((0, naming_1.getComponentName)(candidate))) {
33
+ return candidate;
34
+ }
35
+ }
36
+ return matches[matches.length - 1];
37
+ };
38
+ exports.findScreenFiberByRouteKey = findScreenFiberByRouteKey;
39
+ //# sourceMappingURL=screen.js.map