@testing-library/react-native 12.1.2 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. package/.DS_Store +0 -0
  2. package/.codecov.yml +9 -0
  3. package/.eslintcache +1 -0
  4. package/.eslintignore +2 -0
  5. package/.eslintrc +19 -0
  6. package/.flowconfig +63 -0
  7. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  9. package/.github/ISSUE_TEMPLATE/question.md +9 -0
  10. package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  11. package/.github/actions/setup-deps/action.yml +22 -0
  12. package/.github/actions/setup-website-deps/action.yml +22 -0
  13. package/.github/dependabot.yml +10 -0
  14. package/.github/workflows/deploy-website.yml +36 -0
  15. package/.github/workflows/example-apps.yml +25 -0
  16. package/.github/workflows/main.yml +103 -0
  17. package/.gitignore +11 -0
  18. package/.prettierrc.js +5 -0
  19. package/CODE_OF_CONDUCT.md +73 -0
  20. package/CONTRIBUTING.md +64 -0
  21. package/README.md +8 -7
  22. package/babel.config.js +22 -0
  23. package/build/act.js.map +1 -1
  24. package/build/cleanup.js.map +1 -1
  25. package/build/fireEvent.d.ts +9 -1
  26. package/build/fireEvent.js +11 -20
  27. package/build/fireEvent.js.map +1 -1
  28. package/build/flush-micro-tasks.d.ts +19 -0
  29. package/build/flush-micro-tasks.js +36 -0
  30. package/build/flush-micro-tasks.js.map +1 -0
  31. package/build/helpers/accessiblity.js +2 -2
  32. package/build/helpers/accessiblity.js.map +1 -1
  33. package/build/helpers/component-tree.js.map +1 -1
  34. package/build/helpers/deprecation.js +1 -1
  35. package/build/helpers/deprecation.js.map +1 -1
  36. package/build/helpers/errors.js.map +1 -1
  37. package/build/helpers/findAll.js.map +1 -1
  38. package/build/helpers/format-default.js.map +1 -1
  39. package/build/helpers/format.js.map +1 -1
  40. package/build/helpers/host-component-names.d.ts +3 -0
  41. package/build/helpers/host-component-names.js +8 -0
  42. package/build/helpers/host-component-names.js.map +1 -1
  43. package/build/helpers/matchers/matchLabelText.js.map +1 -1
  44. package/build/helpers/pointer-events.d.ts +9 -0
  45. package/build/helpers/pointer-events.js +25 -0
  46. package/build/helpers/pointer-events.js.map +1 -0
  47. package/build/helpers/stringValidation.js.map +1 -1
  48. package/build/helpers/timers.js.map +1 -1
  49. package/build/index.js +2 -2
  50. package/build/index.js.map +1 -1
  51. package/build/matches.js.map +1 -1
  52. package/build/pure.d.ts +3 -1
  53. package/build/pure.js +7 -0
  54. package/build/pure.js.map +1 -1
  55. package/build/queries/a11yState.js.map +1 -1
  56. package/build/queries/a11yValue.js.map +1 -1
  57. package/build/queries/displayValue.js.map +1 -1
  58. package/build/queries/hintText.js.map +1 -1
  59. package/build/queries/labelText.js.map +1 -1
  60. package/build/queries/makeQueries.js.map +1 -1
  61. package/build/queries/placeholderText.js.map +1 -1
  62. package/build/queries/role.js.map +1 -1
  63. package/build/queries/testId.js.map +1 -1
  64. package/build/queries/text.js.map +1 -1
  65. package/build/queries/unsafeProps.js.map +1 -1
  66. package/build/render.d.ts +171 -12
  67. package/build/render.js +11 -4
  68. package/build/render.js.map +1 -1
  69. package/build/renderHook.d.ts +3 -6
  70. package/build/renderHook.js +4 -3
  71. package/build/renderHook.js.map +1 -1
  72. package/build/shallow.js.map +1 -1
  73. package/build/test-utils/events.d.ts +10 -0
  74. package/build/test-utils/events.js +27 -0
  75. package/build/test-utils/events.js.map +1 -0
  76. package/build/test-utils/index.d.ts +1 -0
  77. package/build/test-utils/index.js +17 -0
  78. package/build/test-utils/index.js.map +1 -0
  79. package/build/user-event/event-builder/common.d.ts +87 -0
  80. package/build/user-event/event-builder/common.js +75 -0
  81. package/build/user-event/event-builder/common.js.map +1 -0
  82. package/build/user-event/event-builder/index.d.ts +126 -0
  83. package/build/user-event/event-builder/index.js +14 -0
  84. package/build/user-event/event-builder/index.js.map +1 -0
  85. package/build/user-event/event-builder/text-input.d.ts +91 -0
  86. package/build/user-event/event-builder/text-input.js +117 -0
  87. package/build/user-event/event-builder/text-input.js.map +1 -0
  88. package/build/user-event/index.d.ts +11 -0
  89. package/build/user-event/index.js +22 -0
  90. package/build/user-event/index.js.map +1 -0
  91. package/build/user-event/press/constants.d.ts +2 -0
  92. package/build/user-event/press/constants.js +16 -0
  93. package/build/user-event/press/constants.js.map +1 -0
  94. package/build/user-event/press/index.d.ts +1 -0
  95. package/build/user-event/press/index.js +25 -0
  96. package/build/user-event/press/index.js.map +1 -0
  97. package/build/user-event/press/press.d.ts +7 -0
  98. package/build/user-event/press/press.js +99 -0
  99. package/build/user-event/press/press.js.map +1 -0
  100. package/build/user-event/setup/index.d.ts +2 -0
  101. package/build/user-event/setup/index.js +13 -0
  102. package/build/user-event/setup/index.js.map +1 -0
  103. package/build/user-event/setup/setup.d.ts +69 -0
  104. package/build/user-event/setup/setup.js +69 -0
  105. package/build/user-event/setup/setup.js.map +1 -0
  106. package/build/user-event/type/index.d.ts +1 -0
  107. package/build/user-event/type/index.js +19 -0
  108. package/build/user-event/type/index.js.map +1 -0
  109. package/build/user-event/type/parseKeys.d.ts +1 -0
  110. package/build/user-event/type/parseKeys.js +40 -0
  111. package/build/user-event/type/parseKeys.js.map +1 -0
  112. package/build/user-event/type/type.d.ts +7 -0
  113. package/build/user-event/type/type.js +76 -0
  114. package/build/user-event/type/type.js.map +1 -0
  115. package/build/user-event/utils/content-size.d.ts +15 -0
  116. package/build/user-event/utils/content-size.js +26 -0
  117. package/build/user-event/utils/content-size.js.map +1 -0
  118. package/build/user-event/utils/dispatch-event.d.ts +9 -0
  119. package/build/user-event/utils/dispatch-event.js +36 -0
  120. package/build/user-event/utils/dispatch-event.js.map +1 -0
  121. package/build/user-event/utils/index.d.ts +5 -0
  122. package/build/user-event/utils/index.js +61 -0
  123. package/build/user-event/utils/index.js.map +1 -0
  124. package/build/user-event/utils/text-range.d.ts +5 -0
  125. package/build/user-event/utils/text-range.js +13 -0
  126. package/build/user-event/utils/text-range.js.map +1 -0
  127. package/build/user-event/utils/wait.d.ts +2 -0
  128. package/build/user-event/utils/wait.js +14 -0
  129. package/build/user-event/utils/wait.js.map +1 -0
  130. package/build/user-event/utils/warn-about-real-timers.d.ts +1 -0
  131. package/build/user-event/utils/warn-about-real-timers.js +20 -0
  132. package/build/user-event/utils/warn-about-real-timers.js.map +1 -0
  133. package/build/waitFor.js +3 -3
  134. package/build/waitFor.js.map +1 -1
  135. package/build/waitForElementToBeRemoved.js.map +1 -1
  136. package/coverage/clover.xml +1176 -0
  137. package/coverage/coverage-final.json +70 -0
  138. package/coverage/lcov-report/base.css +224 -0
  139. package/coverage/lcov-report/block-navigation.js +87 -0
  140. package/coverage/lcov-report/favicon.png +0 -0
  141. package/coverage/lcov-report/index.html +266 -0
  142. package/coverage/lcov-report/prettify.css +1 -0
  143. package/coverage/lcov-report/prettify.js +2 -0
  144. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  145. package/coverage/lcov-report/sorter.js +196 -0
  146. package/coverage/lcov-report/src/act.ts.html +343 -0
  147. package/coverage/lcov-report/src/cleanup.ts.html +130 -0
  148. package/coverage/lcov-report/src/config.ts.html +301 -0
  149. package/coverage/lcov-report/src/fireEvent.ts.html +559 -0
  150. package/coverage/lcov-report/src/flushMicroTasks.ts.html +124 -0
  151. package/coverage/lcov-report/src/helpers/accessiblity.ts.html +412 -0
  152. package/coverage/lcov-report/src/helpers/component-tree.ts.html +352 -0
  153. package/coverage/lcov-report/src/helpers/debugDeep.ts.html +166 -0
  154. package/coverage/lcov-report/src/helpers/debugShallow.ts.html +151 -0
  155. package/coverage/lcov-report/src/helpers/deprecation.ts.html +244 -0
  156. package/coverage/lcov-report/src/helpers/errors.ts.html +283 -0
  157. package/coverage/lcov-report/src/helpers/filterNodeByType.ts.html +106 -0
  158. package/coverage/lcov-report/src/helpers/findAll.ts.html +289 -0
  159. package/coverage/lcov-report/src/helpers/format-default.ts.html +301 -0
  160. package/coverage/lcov-report/src/helpers/format.ts.html +226 -0
  161. package/coverage/lcov-report/src/helpers/getTextContent.ts.html +145 -0
  162. package/coverage/lcov-report/src/helpers/host-component-names.tsx.html +286 -0
  163. package/coverage/lcov-report/src/helpers/index.html +326 -0
  164. package/coverage/lcov-report/src/helpers/matchers/accessibilityState.ts.html +229 -0
  165. package/coverage/lcov-report/src/helpers/matchers/accessibilityValue.ts.html +157 -0
  166. package/coverage/lcov-report/src/helpers/matchers/index.html +206 -0
  167. package/coverage/lcov-report/src/helpers/matchers/matchArrayProp.ts.html +148 -0
  168. package/coverage/lcov-report/src/helpers/matchers/matchLabelText.ts.html +238 -0
  169. package/coverage/lcov-report/src/helpers/matchers/matchObjectProp.ts.html +160 -0
  170. package/coverage/lcov-report/src/helpers/matchers/matchStringProp.ts.html +154 -0
  171. package/coverage/lcov-report/src/helpers/matchers/matchTextContent.ts.html +145 -0
  172. package/coverage/lcov-report/src/helpers/query-name.ts.html +97 -0
  173. package/coverage/lcov-report/src/helpers/stringValidation.ts.html +193 -0
  174. package/coverage/lcov-report/src/helpers/timers.ts.html +382 -0
  175. package/coverage/lcov-report/src/index.html +356 -0
  176. package/coverage/lcov-report/src/index.ts.html +184 -0
  177. package/coverage/lcov-report/src/matches.ts.html +232 -0
  178. package/coverage/lcov-report/src/pure.ts.html +157 -0
  179. package/coverage/lcov-report/src/queries/a11yState.ts.html +478 -0
  180. package/coverage/lcov-report/src/queries/a11yValue.ts.html +478 -0
  181. package/coverage/lcov-report/src/queries/displayValue.ts.html +319 -0
  182. package/coverage/lcov-report/src/queries/hintText.ts.html +421 -0
  183. package/coverage/lcov-report/src/queries/index.html +281 -0
  184. package/coverage/lcov-report/src/queries/labelText.ts.html +262 -0
  185. package/coverage/lcov-report/src/queries/makeQueries.ts.html +850 -0
  186. package/coverage/lcov-report/src/queries/placeholderText.ts.html +322 -0
  187. package/coverage/lcov-report/src/queries/role.ts.html +481 -0
  188. package/coverage/lcov-report/src/queries/testId.ts.html +298 -0
  189. package/coverage/lcov-report/src/queries/text.ts.html +283 -0
  190. package/coverage/lcov-report/src/queries/unsafeProps.ts.html +313 -0
  191. package/coverage/lcov-report/src/queries/unsafeType.ts.html +304 -0
  192. package/coverage/lcov-report/src/react-versions.ts.html +118 -0
  193. package/coverage/lcov-report/src/render-act.ts.html +142 -0
  194. package/coverage/lcov-report/src/render.tsx.html +592 -0
  195. package/coverage/lcov-report/src/renderHook.tsx.html +262 -0
  196. package/coverage/lcov-report/src/screen.ts.html +454 -0
  197. package/coverage/lcov-report/src/shallow.ts.html +139 -0
  198. package/coverage/lcov-report/src/test-utils/events.ts.html +145 -0
  199. package/coverage/lcov-report/src/test-utils/index.html +131 -0
  200. package/coverage/lcov-report/src/test-utils/index.ts.html +88 -0
  201. package/coverage/lcov-report/src/user-event/event-builder/common.ts.html +229 -0
  202. package/coverage/lcov-report/src/user-event/event-builder/index.html +146 -0
  203. package/coverage/lcov-report/src/user-event/event-builder/index.ts.html +106 -0
  204. package/coverage/lcov-report/src/user-event/event-builder/test-input.ts.html +343 -0
  205. package/coverage/lcov-report/src/user-event/event-builder/text-input.ts.html +343 -0
  206. package/coverage/lcov-report/src/user-event/index.html +116 -0
  207. package/coverage/lcov-report/src/user-event/index.ts.html +121 -0
  208. package/coverage/lcov-report/src/user-event/press/index.html +131 -0
  209. package/coverage/lcov-report/src/user-event/press/index.ts.html +88 -0
  210. package/coverage/lcov-report/src/user-event/press/press.ts.html +133 -0
  211. package/coverage/lcov-report/src/user-event/setup/index.html +131 -0
  212. package/coverage/lcov-report/src/user-event/setup/index.ts.html +91 -0
  213. package/coverage/lcov-report/src/user-event/setup/setup.ts.html +358 -0
  214. package/coverage/lcov-report/src/user-event/type/index.html +146 -0
  215. package/coverage/lcov-report/src/user-event/type/index.ts.html +88 -0
  216. package/coverage/lcov-report/src/user-event/type/parseKeys.ts.html +208 -0
  217. package/coverage/lcov-report/src/user-event/type/type.ts.html +484 -0
  218. package/coverage/lcov-report/src/user-event/utils/content-size.ts.html +160 -0
  219. package/coverage/lcov-report/src/user-event/utils/dispatch-event.ts.html +367 -0
  220. package/coverage/lcov-report/src/user-event/utils/events.ts.html +247 -0
  221. package/coverage/lcov-report/src/user-event/utils/index.html +176 -0
  222. package/coverage/lcov-report/src/user-event/utils/index.ts.html +97 -0
  223. package/coverage/lcov-report/src/user-event/utils/text-range.ts.html +118 -0
  224. package/coverage/lcov-report/src/user-event/utils/wait.ts.html +130 -0
  225. package/coverage/lcov-report/src/waitFor.ts.html +772 -0
  226. package/coverage/lcov-report/src/waitForElementToBeRemoved.ts.html +211 -0
  227. package/coverage/lcov-report/src/within.ts.html +175 -0
  228. package/coverage/lcov.info +2614 -0
  229. package/examples/.DS_Store +0 -0
  230. package/examples/basic/.expo/README.md +17 -0
  231. package/examples/basic/.expo/devices.json +3 -0
  232. package/examples/basic/.expo/packager-info.json +4 -0
  233. package/examples/basic/.expo/settings.json +8 -0
  234. package/examples/basic/.expo-shared/assets.json +4 -0
  235. package/examples/basic/.gitignore +14 -0
  236. package/examples/basic/App.tsx +20 -0
  237. package/examples/basic/README.md +11 -0
  238. package/examples/basic/__tests__/App.test.tsx +119 -0
  239. package/examples/basic/app.json +31 -0
  240. package/examples/basic/assets/adaptive-icon.png +0 -0
  241. package/examples/basic/assets/favicon.png +0 -0
  242. package/examples/basic/assets/icon.png +0 -0
  243. package/examples/basic/assets/splash.png +0 -0
  244. package/examples/basic/babel.config.js +6 -0
  245. package/examples/basic/components/Home.tsx +28 -0
  246. package/examples/basic/components/LoginForm.tsx +138 -0
  247. package/examples/basic/jest-setup.ts +7 -0
  248. package/examples/basic/jest.config.js +5 -0
  249. package/examples/basic/package.json +30 -0
  250. package/examples/basic/tsconfig.json +7 -0
  251. package/examples/basic/yarn-error.log +8083 -0
  252. package/examples/basic/yarn.lock +8878 -0
  253. package/examples/react-navigation/README.md +16 -0
  254. package/examples/react-navigation/babel.config.js +4 -0
  255. package/examples/react-navigation/jest-setup.js +11 -0
  256. package/examples/react-navigation/jest.config.js +10 -0
  257. package/examples/react-navigation/package.json +31 -0
  258. package/examples/react-navigation/src/App.js +21 -0
  259. package/examples/react-navigation/src/DrawerNavigator.js +15 -0
  260. package/examples/react-navigation/src/DrawerNavigator.test.js +42 -0
  261. package/examples/react-navigation/src/NativeStackNavigator.js +15 -0
  262. package/examples/react-navigation/src/NativeStackNavigator.test.js +34 -0
  263. package/examples/react-navigation/src/StackNavigator.js +15 -0
  264. package/examples/react-navigation/src/StackNavigator.test.js +34 -0
  265. package/examples/react-navigation/src/TabNavigator.js +15 -0
  266. package/examples/react-navigation/src/TabNavigator.test.js +21 -0
  267. package/examples/react-navigation/src/screens/DetailsScreen.js +43 -0
  268. package/examples/react-navigation/src/screens/DetailsScreen.test.js +27 -0
  269. package/examples/react-navigation/src/screens/DrawerHomeScreen.js +26 -0
  270. package/examples/react-navigation/src/screens/HomeScreen.js +48 -0
  271. package/examples/react-navigation/src/screens/SettingsScreen.js +20 -0
  272. package/examples/react-navigation/src/test-utils.js +12 -0
  273. package/examples/react-navigation/yarn.lock +5610 -0
  274. package/examples/redux/App.js +27 -0
  275. package/examples/redux/README.md +5 -0
  276. package/examples/redux/actions/todoActions.js +25 -0
  277. package/examples/redux/babel.config.js +6 -0
  278. package/examples/redux/components/AddTodo.js +73 -0
  279. package/examples/redux/components/AddTodo.test.js +27 -0
  280. package/examples/redux/components/TodoElem.js +25 -0
  281. package/examples/redux/components/TodoList.js +29 -0
  282. package/examples/redux/components/TodoList.test.js +34 -0
  283. package/examples/redux/index.js +8 -0
  284. package/examples/redux/jest-setup.js +2 -0
  285. package/examples/redux/jest.config.js +4 -0
  286. package/examples/redux/package.json +23 -0
  287. package/examples/redux/reducers/index.js +6 -0
  288. package/examples/redux/reducers/todoReducer.js +27 -0
  289. package/examples/redux/store.js +10 -0
  290. package/examples/redux/test-utils.js +11 -0
  291. package/examples/redux/yarn-error.log +8083 -0
  292. package/examples/redux/yarn.lock +8423 -0
  293. package/experiments-app/.expo/README.md +15 -0
  294. package/experiments-app/.expo/devices.json +3 -0
  295. package/experiments-app/.expo/settings.json +10 -0
  296. package/experiments-app/.gitignore +17 -0
  297. package/experiments-app/.prettierrc.js +5 -0
  298. package/experiments-app/app.json +30 -0
  299. package/experiments-app/assets/adaptive-icon.png +0 -0
  300. package/experiments-app/assets/favicon.png +0 -0
  301. package/experiments-app/assets/icon.png +0 -0
  302. package/experiments-app/assets/splash.png +0 -0
  303. package/experiments-app/babel.config.js +6 -0
  304. package/experiments-app/index.js +4 -0
  305. package/experiments-app/package.json +31 -0
  306. package/experiments-app/src/App.tsx +31 -0
  307. package/experiments-app/src/MainScreen.tsx +51 -0
  308. package/experiments-app/src/experiments.ts +17 -0
  309. package/experiments-app/src/screens/TextInputEventPropagation.tsx +54 -0
  310. package/experiments-app/src/screens/TextInputEvents.tsx +60 -0
  311. package/experiments-app/src/utils/helpers.ts +8 -0
  312. package/experiments-app/tsconfig.json +6 -0
  313. package/experiments-app/yarn.lock +6913 -0
  314. package/flow-typed/npm/jest_v26.x.x.js +1218 -0
  315. package/flow-typed/npm/react-test-renderer_v16.x.x.js +81 -0
  316. package/jest-setup.ts +10 -0
  317. package/package.json +6 -6
  318. package/renovate.json +19 -0
  319. package/scripts/test_react_17 +12 -0
  320. package/src/.DS_Store +0 -0
  321. package/src/__tests__/.DS_Store +0 -0
  322. package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +548 -0
  323. package/src/__tests__/__snapshots__/render.test.tsx.snap +39 -0
  324. package/src/__tests__/act.test.tsx +56 -0
  325. package/src/__tests__/auto-cleanup-skip.test.tsx +39 -0
  326. package/src/__tests__/auto-cleanup.test.tsx +50 -0
  327. package/src/__tests__/cleanup.test.tsx +26 -0
  328. package/src/__tests__/config.test.ts +55 -0
  329. package/src/__tests__/fireEvent-textInput.test.tsx +154 -0
  330. package/src/__tests__/fireEvent.test.tsx +485 -0
  331. package/src/__tests__/host-component-names.test.tsx +109 -0
  332. package/src/__tests__/host-text-nesting.test.tsx +90 -0
  333. package/src/__tests__/jest-native.test.tsx +84 -0
  334. package/src/__tests__/questionsBoard.test.tsx +62 -0
  335. package/src/__tests__/react-native-api.test.tsx +126 -0
  336. package/src/__tests__/render-debug.test.tsx +207 -0
  337. package/src/__tests__/render-stringValidation.test.tsx +157 -0
  338. package/src/__tests__/render.test.tsx +256 -0
  339. package/src/__tests__/renderHook.test.tsx +114 -0
  340. package/src/__tests__/screen.test.tsx +66 -0
  341. package/src/__tests__/timerUtils.ts +7 -0
  342. package/src/__tests__/timers.test.ts +27 -0
  343. package/src/__tests__/waitFor.test.tsx +327 -0
  344. package/src/__tests__/waitForElementToBeRemoved.test.tsx +151 -0
  345. package/src/__tests__/within.test.tsx +96 -0
  346. package/src/act.ts +86 -0
  347. package/src/cleanup.ts +15 -0
  348. package/src/config.ts +72 -0
  349. package/src/fireEvent.ts +159 -0
  350. package/src/flush-micro-tasks.ts +30 -0
  351. package/src/helpers/__tests__/accessiblity.test.tsx +373 -0
  352. package/src/helpers/__tests__/component-tree.test.tsx +226 -0
  353. package/src/helpers/__tests__/format-default.tsx +114 -0
  354. package/src/helpers/__tests__/getTextContent.test.tsx +49 -0
  355. package/src/helpers/__tests__/includeHiddenElements.test.tsx +39 -0
  356. package/src/helpers/__tests__/query-name.test.ts +10 -0
  357. package/src/helpers/__tests__/timers.test.ts +8 -0
  358. package/src/helpers/accessiblity.ts +108 -0
  359. package/src/helpers/component-tree.ts +89 -0
  360. package/src/helpers/debugDeep.ts +27 -0
  361. package/src/helpers/debugShallow.ts +22 -0
  362. package/src/helpers/deprecation.ts +53 -0
  363. package/src/helpers/errors.ts +66 -0
  364. package/src/helpers/filterNodeByType.ts +7 -0
  365. package/src/helpers/findAll.ts +68 -0
  366. package/src/helpers/format-default.ts +72 -0
  367. package/src/helpers/format.ts +47 -0
  368. package/src/helpers/getTextContent.ts +20 -0
  369. package/src/helpers/host-component-names.tsx +75 -0
  370. package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +34 -0
  371. package/src/helpers/matchers/__tests__/matchObject.test.ts +37 -0
  372. package/src/helpers/matchers/__tests__/matchStringValue.test.ts +15 -0
  373. package/src/helpers/matchers/accessibilityState.ts +48 -0
  374. package/src/helpers/matchers/accessibilityValue.ts +24 -0
  375. package/src/helpers/matchers/matchArrayProp.ts +21 -0
  376. package/src/helpers/matchers/matchLabelText.ts +51 -0
  377. package/src/helpers/matchers/matchObjectProp.ts +25 -0
  378. package/src/helpers/matchers/matchStringProp.ts +23 -0
  379. package/src/helpers/matchers/matchTextContent.ts +20 -0
  380. package/src/helpers/pointer-events.ts +27 -0
  381. package/src/helpers/query-name.ts +4 -0
  382. package/src/helpers/stringValidation.ts +36 -0
  383. package/src/helpers/timers.ts +98 -0
  384. package/src/index.ts +33 -0
  385. package/src/matches.ts +49 -0
  386. package/src/pure.ts +27 -0
  387. package/src/queries/__tests__/a11yState.test.tsx +439 -0
  388. package/src/queries/__tests__/a11yValue.test.tsx +309 -0
  389. package/src/queries/__tests__/displayValue.test.tsx +221 -0
  390. package/src/queries/__tests__/hintText.test.tsx +177 -0
  391. package/src/queries/__tests__/labelText.test.tsx +242 -0
  392. package/src/queries/__tests__/makeQueries.test.tsx +235 -0
  393. package/src/queries/__tests__/placeholderText.test.tsx +136 -0
  394. package/src/queries/__tests__/role-value.test.tsx +176 -0
  395. package/src/queries/__tests__/role.test.tsx +824 -0
  396. package/src/queries/__tests__/testId.test.tsx +200 -0
  397. package/src/queries/__tests__/text.test.tsx +556 -0
  398. package/src/queries/a11yState.ts +131 -0
  399. package/src/queries/a11yValue.ts +131 -0
  400. package/src/queries/displayValue.ts +78 -0
  401. package/src/queries/hintText.ts +112 -0
  402. package/src/queries/labelText.ts +59 -0
  403. package/src/queries/makeQueries.ts +255 -0
  404. package/src/queries/options.ts +14 -0
  405. package/src/queries/placeholderText.ts +79 -0
  406. package/src/queries/role.ts +132 -0
  407. package/src/queries/testId.ts +71 -0
  408. package/src/queries/text.ts +66 -0
  409. package/src/queries/unsafeProps.ts +76 -0
  410. package/src/queries/unsafeType.ts +73 -0
  411. package/src/react-versions.ts +11 -0
  412. package/src/render-act.ts +19 -0
  413. package/src/render.tsx +183 -0
  414. package/src/renderHook.tsx +56 -0
  415. package/src/screen.ts +123 -0
  416. package/src/shallow.ts +18 -0
  417. package/src/test-utils/events.ts +24 -0
  418. package/src/test-utils/index.ts +1 -0
  419. package/src/user-event/event-builder/common.ts +66 -0
  420. package/src/user-event/event-builder/index.ts +7 -0
  421. package/src/user-event/event-builder/text-input.ts +86 -0
  422. package/src/user-event/index.ts +17 -0
  423. package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +117 -0
  424. package/src/user-event/press/__tests__/longPress.test.tsx +157 -0
  425. package/src/user-event/press/__tests__/press.real-timers.test.tsx +320 -0
  426. package/src/user-event/press/__tests__/press.test.tsx +457 -0
  427. package/src/user-event/press/constants.ts +7 -0
  428. package/src/user-event/press/index.ts +1 -0
  429. package/src/user-event/press/press.ts +169 -0
  430. package/src/user-event/setup/index.ts +2 -0
  431. package/src/user-event/setup/setup.ts +127 -0
  432. package/src/user-event/type/__tests__/__snapshots__/type-managed.test.tsx.snap +339 -0
  433. package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +668 -0
  434. package/src/user-event/type/__tests__/parseKeys.test.ts +23 -0
  435. package/src/user-event/type/__tests__/type-managed.test.tsx +121 -0
  436. package/src/user-event/type/__tests__/type.test.tsx +336 -0
  437. package/src/user-event/type/index.ts +1 -0
  438. package/src/user-event/type/parseKeys.ts +41 -0
  439. package/src/user-event/type/type.ts +135 -0
  440. package/src/user-event/utils/__tests__/dispatch-event.test.tsx +41 -0
  441. package/src/user-event/utils/__tests__/wait.test.ts +63 -0
  442. package/src/user-event/utils/content-size.ts +25 -0
  443. package/src/user-event/utils/dispatch-event.ts +38 -0
  444. package/src/user-event/utils/index.ts +5 -0
  445. package/src/user-event/utils/text-range.ts +11 -0
  446. package/src/user-event/utils/wait.ts +15 -0
  447. package/src/user-event/utils/warn-about-real-timers.ts +13 -0
  448. package/src/waitFor.ts +228 -0
  449. package/src/waitForElementToBeRemoved.ts +42 -0
  450. package/src/within.ts +30 -0
  451. package/tsconfig.json +17 -0
  452. package/tsconfig.release.json +8 -0
  453. package/website/.DS_Store +0 -0
  454. package/website/.docusaurus/DONT-EDIT-THIS-FOLDER +5 -0
  455. package/website/.docusaurus/client-modules.js +6 -0
  456. package/website/.docusaurus/codeTranslations.json +1 -0
  457. package/website/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json +4 -0
  458. package/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json +4 -0
  459. package/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json +4 -0
  460. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-api-md-c82.json +27 -0
  461. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-eslint-p-llugin-testing-library-md-d24.json +27 -0
  462. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-md-ad8.json +27 -0
  463. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-md-8a6.json +23 -0
  464. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-should-i-query-md-f2d.json +27 -0
  465. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-11-md-add.json +27 -0
  466. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-12-md-14f.json +27 -0
  467. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-2-md-698.json +27 -0
  468. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-7-md-6bb.json +27 -0
  469. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-9-md-f69.json +27 -0
  470. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-queries-md-7ad.json +27 -0
  471. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-react-navigation-md-1bd.json +27 -0
  472. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-redux-integration-md-77b.json +23 -0
  473. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-testing-environment-md-1c6.json +27 -0
  474. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-md-01d.json +27 -0
  475. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-understanding-act-md-aa9.json +27 -0
  476. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-user-event-md-501.json +27 -0
  477. package/website/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json +268 -0
  478. package/website/.docusaurus/docusaurus-plugin-content-docs/react-native-testing-library-docs-route-96e.json +115 -0
  479. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-api-md-c82.json +19 -0
  480. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-eslint-p-llugin-testing-library-md-d24.json +19 -0
  481. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-faq-md-ad8.json +19 -0
  482. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-getting-started-md-8a6.json +15 -0
  483. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-how-should-i-query-md-f2d.json +19 -0
  484. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-11-md-add.json +19 -0
  485. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-2-md-698.json +19 -0
  486. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-7-md-6bb.json +19 -0
  487. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-9-md-f69.json +19 -0
  488. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-queries-md-7ad.json +19 -0
  489. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-react-navigation-md-1bd.json +19 -0
  490. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-redux-integration-md-77b.json +15 -0
  491. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-troubleshooting-md-01d.json +19 -0
  492. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-understanding-act-md-aa9.json +19 -0
  493. package/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json +4 -0
  494. package/website/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json +623 -0
  495. package/website/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json +4 -0
  496. package/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json +4 -0
  497. package/website/.docusaurus/docusaurus.config.js +267 -0
  498. package/website/.docusaurus/docusaurus.config.mjs +365 -0
  499. package/website/.docusaurus/globalData.json +113 -0
  500. package/website/.docusaurus/i18n.json +17 -0
  501. package/website/.docusaurus/registry.js +35 -0
  502. package/website/.docusaurus/routes.js +162 -0
  503. package/website/.docusaurus/routesChunkNames.json +133 -0
  504. package/website/.docusaurus/site-metadata.json +36 -0
  505. package/website/.gitignore +20 -0
  506. package/website/README.md +33 -0
  507. package/website/docker/.dockerignore +3 -0
  508. package/website/docker/Dockerfile +9 -0
  509. package/website/docker/docker-compose.yml +11 -0
  510. package/website/docs/API.md +940 -0
  511. package/website/docs/EslintPLluginTestingLibrary.md +28 -0
  512. package/website/docs/FAQ.md +44 -0
  513. package/website/docs/GettingStarted.md +100 -0
  514. package/website/docs/HowShouldIQuery.md +21 -0
  515. package/website/docs/MigrationV11.md +64 -0
  516. package/website/docs/MigrationV12.md +67 -0
  517. package/website/docs/MigrationV2.md +126 -0
  518. package/website/docs/MigrationV7.md +119 -0
  519. package/website/docs/MigrationV9.md +67 -0
  520. package/website/docs/Queries.md +567 -0
  521. package/website/docs/ReactNavigation.md +371 -0
  522. package/website/docs/ReduxIntegration.md +137 -0
  523. package/website/docs/TestingEnvironment.md +154 -0
  524. package/website/docs/Troubleshooting.md +44 -0
  525. package/website/docs/UnderstandingAct.md +227 -0
  526. package/website/docs/UserEvent.md +143 -0
  527. package/website/docusaurus.config.js +114 -0
  528. package/website/package.json +31 -0
  529. package/website/sidebars.js +20 -0
  530. package/website/src/components/Feature.js +31 -0
  531. package/website/src/css/custom.css +13 -0
  532. package/website/src/css/index.module.css +77 -0
  533. package/website/src/pages/index.js +82 -0
  534. package/website/static/.nojekyll +0 -0
  535. package/website/static/css/custom.css +28 -0
  536. package/website/static/img/hit.png +0 -0
  537. package/website/static/img/locomotive.png +0 -0
  538. package/website/static/img/owl.png +0 -0
  539. package/website/static/img/tools.png +0 -0
  540. package/website/yarn.lock +7669 -0
  541. package/yarn-error.log +10613 -0
  542. package/yarn.lock +7765 -0
  543. package/build/flushMicroTasks.d.ts +0 -5
  544. package/build/flushMicroTasks.js +0 -17
  545. package/build/flushMicroTasks.js.map +0 -1
@@ -0,0 +1,73 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at [oss@callstack.io](mailto:oss@callstack.io). All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct/
72
+
73
+ [homepage]: https://www.contributor-covenant.org
@@ -0,0 +1,64 @@
1
+ # Contributing
2
+
3
+ ## Code of Conduct
4
+
5
+ We want this community to be friendly and respectful to each other. Please read [the full text](/CODE_OF_CONDUCT.md) so that you can understand what actions will and will not be tolerated.
6
+
7
+ ## Our Development Process
8
+
9
+ The core team works directly on GitHub and all work is public.
10
+
11
+ ### Development workflow
12
+
13
+ > **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).
14
+
15
+ 1. Fork the repo and create your branch from `main` (a guide on [how to fork a repository](https://help.github.com/articles/fork-a-repo/)).
16
+ 2. Run `yarn` to setup the development environment.
17
+ 3. Do the changes you want and test them out in the example app before sending a pull request.
18
+
19
+ ### Commit message convention
20
+
21
+ We prefix our commit messages with one of the following to signify the kind of change:
22
+
23
+ - `fix`: bug fixes, e.g. fix incorrect error message.
24
+ - `feat`: new features, e.g. add useful API.
25
+ - `refactor`: code/structure refactor, e.g. new folder structure.
26
+ - `docs`: changes into documentation, e.g. add usage example for `getByText`.
27
+ - `test`: adding or updating tests, eg unit, snapshot testing.
28
+ - `chore`: tooling changes, e.g. change circle ci config.
29
+ - `BREAKING`: for changes that break existing usage, e.g. change API.
30
+
31
+ Our pre-commit hooks verify that your commit message matches this format when committing.
32
+
33
+ ### Linting and tests
34
+
35
+ We use `flow` for type checking, `eslint` with `prettier` for linting and formatting the code, and `jest` for testing. Our pre-commit hooks verify that the linter and tests pass when committing. You can also run the following commands manually:
36
+
37
+ - `yarn flow`: run flow on all files.
38
+ - `yarn lint`: run eslint and prettier.
39
+ - `yarn test`: run tests.
40
+
41
+ ### Sending a pull request
42
+
43
+ When you're sending a pull request:
44
+
45
+ - Prefer small pull requests focused on one change.
46
+ - Verify that `flow`, `eslint` and tests are passing.
47
+ - Preview the documentation to make sure it looks good.
48
+ - Follow the pull request template when opening a pull request.
49
+
50
+ ### Publishing a release
51
+
52
+ If you have publish access to the NPM package, run the following from the main branch to publish a new release:
53
+
54
+ ```sh
55
+ yarn publish
56
+ ```
57
+
58
+ ## Reporting issues
59
+
60
+ You can report issues on our [bug tracker](https://github.com/callstack/react-native-testing-library/issues). Please follow the issue template when opening an issue.
61
+
62
+ ## License
63
+
64
+ By contributing to `@testing-library/react-native`, you agree that your contributions will be licensed under its **MIT** license.
package/README.md CHANGED
@@ -9,11 +9,14 @@
9
9
  <p>Simple and complete React Native testing utilities that encourage good testing practices.</P>
10
10
  </div>
11
11
 
12
- [![Version][version-badge]][package]
13
- [![PRs Welcome][prs-welcome-badge]][prs-welcome]
12
+ ![Version][version-badge]
13
+ ![codecov][codecov-badge]
14
+ ![Build](https://github.com/callstack/react-native-testing-library/actions/workflows/main.yml/badge.svg)
15
+ [![downloads](https://img.shields.io/npm/dm/@testing-library/react-native.svg?style=flat-square)](http://www.npmtrends.com/@testing-library/react-native)
16
+ ![PRs Welcome][prs-welcome-badge]
14
17
  [![Chat][chat-badge]][chat]
15
- [![codecov][codecov-badge]][codecov]
16
- [![Sponsored by Callstack][callstack-badge]][callstack]
18
+ ![Sponsored by Callstack][callstack-badge]
19
+ [![Star on GitHub](https://img.shields.io/github/stars/callstack/react-native-testing-library.svg?style=social)](https://github.com/callstack/react-native-testing-library/stargazers)
17
20
 
18
21
  ## The problem
19
22
 
@@ -43,9 +46,7 @@ yarn add --dev @testing-library/react-native
43
46
  npm install --save-dev @testing-library/react-native
44
47
  ```
45
48
 
46
- This library has a peerDependencies listing for `react-test-renderer` and, of course, `react`. Make sure to install them too!
47
-
48
- > In order to properly use helpers for async tests (`findBy` queries and `waitFor`) you need at least React >=16.9.0 (featuring async `act`) or React Native >=0.61 (which comes with React >=16.9.0).
49
+ This library has a `peerDependencies` listing for `react-test-renderer`. Make sure that your `react-test-renderer` version matches exactly the `react` version.
49
50
 
50
51
  ### Additional Jest matchers
51
52
 
@@ -0,0 +1,22 @@
1
+ module.exports = {
2
+ presets: [
3
+ '@babel/preset-typescript',
4
+ '@babel/preset-react',
5
+ [
6
+ '@babel/preset-env',
7
+ {
8
+ targets: {
9
+ node: '14',
10
+ },
11
+ bugfixes: true,
12
+ },
13
+ ],
14
+ ],
15
+ plugins: ['@babel/plugin-proposal-class-properties'],
16
+ env: {
17
+ test: {
18
+ // https://github.com/react-native-community/upgrade-support/issues/152
19
+ plugins: ['@babel/plugin-transform-flow-strip-types'],
20
+ },
21
+ },
22
+ };
package/build/act.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"act.js","names":["_reactTestRenderer","require","_reactVersions","setIsReactActEnvironment","isReactActEnvironment","globalThis","IS_REACT_ACT_ENVIRONMENT","getIsReactActEnvironment","withGlobalActEnvironment","actImplementation","callback","previousActEnvironment","callbackNeedsToBeAwaited","actResult","result","then","thenable","resolve","reject","returnValue","error","act","checkReactVersionAtLeast","reactTestRendererAct","_default","exports","default"],"sources":["../src/act.ts"],"sourcesContent":["// This file and the act() implementation is sourced from react-testing-library\n// https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js\nimport { act as reactTestRendererAct } from 'react-test-renderer';\nimport { checkReactVersionAtLeast } from './react-versions';\n\ntype ReactAct = typeof reactTestRendererAct;\n\n// See https://github.com/reactwg/react-18/discussions/102 for more context on global.IS_REACT_ACT_ENVIRONMENT\ndeclare global {\n var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;\n}\n\nfunction setIsReactActEnvironment(isReactActEnvironment: boolean | undefined) {\n globalThis.IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment;\n}\n\nfunction getIsReactActEnvironment() {\n return globalThis.IS_REACT_ACT_ENVIRONMENT;\n}\n\nfunction withGlobalActEnvironment(actImplementation: ReactAct) {\n return (callback: Parameters<ReactAct>[0]) => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n\n // this code is riddled with eslint disabling comments because this doesn't use real promises but eslint thinks we do\n try {\n // The return value of `act` is always a thenable.\n let callbackNeedsToBeAwaited = false;\n const actResult = actImplementation(() => {\n const result = callback();\n if (\n result !== null &&\n typeof result === 'object' &&\n // @ts-expect-error this should be a promise or thenable\n // eslint-disable-next-line promise/prefer-await-to-then\n typeof result.then === 'function'\n ) {\n callbackNeedsToBeAwaited = true;\n }\n return result;\n });\n\n if (callbackNeedsToBeAwaited) {\n const thenable = actResult;\n return {\n then: (\n resolve: (value: never) => never,\n reject: (value: never) => never\n ) => {\n // eslint-disable-next-line\n thenable.then(\n // eslint-disable-next-line promise/always-return\n (returnValue) => {\n setIsReactActEnvironment(previousActEnvironment);\n resolve(returnValue);\n },\n (error) => {\n setIsReactActEnvironment(previousActEnvironment);\n reject(error);\n }\n );\n },\n };\n } else {\n setIsReactActEnvironment(previousActEnvironment);\n return actResult;\n }\n } catch (error) {\n // Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT\n // or if we have to await the callback first.\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n };\n}\n\nconst act: ReactAct = checkReactVersionAtLeast(18, 0)\n ? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)\n : reactTestRendererAct;\n\nexport default act;\nexport {\n setIsReactActEnvironment as setReactActEnvironment,\n getIsReactActEnvironment,\n};\n"],"mappings":";;;;;;;;AAEA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAHA;AACA;;AAMA;;AAKA,SAASE,wBAAwBA,CAACC,qBAA0C,EAAE;EAC5EC,UAAU,CAACC,wBAAwB,GAAGF,qBAAqB;AAC7D;AAEA,SAASG,wBAAwBA,CAAA,EAAG;EAClC,OAAOF,UAAU,CAACC,wBAAwB;AAC5C;AAEA,SAASE,wBAAwBA,CAACC,iBAA2B,EAAE;EAC7D,OAAQC,QAAiC,IAAK;IAC5C,MAAMC,sBAAsB,GAAGJ,wBAAwB,EAAE;IACzDJ,wBAAwB,CAAC,IAAI,CAAC;;IAE9B;IACA,IAAI;MACF;MACA,IAAIS,wBAAwB,GAAG,KAAK;MACpC,MAAMC,SAAS,GAAGJ,iBAAiB,CAAC,MAAM;QACxC,MAAMK,MAAM,GAAGJ,QAAQ,EAAE;QACzB,IACEI,MAAM,KAAK,IAAI,IACf,OAAOA,MAAM,KAAK,QAAQ;QAC1B;QACA;QACA,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,EACjC;UACAH,wBAAwB,GAAG,IAAI;QACjC;QACA,OAAOE,MAAM;MACf,CAAC,CAAC;MAEF,IAAIF,wBAAwB,EAAE;QAC5B,MAAMI,QAAQ,GAAGH,SAAS;QAC1B,OAAO;UACLE,IAAI,EAAEA,CACJE,OAAgC,EAChCC,MAA+B,KAC5B;YACH;YACAF,QAAQ,CAACD,IAAI;YACX;YACCI,WAAW,IAAK;cACfhB,wBAAwB,CAACQ,sBAAsB,CAAC;cAChDM,OAAO,CAACE,WAAW,CAAC;YACtB,CAAC,EACAC,KAAK,IAAK;cACTjB,wBAAwB,CAACQ,sBAAsB,CAAC;cAChDO,MAAM,CAACE,KAAK,CAAC;YACf,CAAC,CACF;UACH;QACF,CAAC;MACH,CAAC,MAAM;QACLjB,wBAAwB,CAACQ,sBAAsB,CAAC;QAChD,OAAOE,SAAS;MAClB;IACF,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd;MACA;MACAjB,wBAAwB,CAACQ,sBAAsB,CAAC;MAChD,MAAMS,KAAK;IACb;EACF,CAAC;AACH;AAEA,MAAMC,GAAa,GAAG,IAAAC,uCAAwB,EAAC,EAAE,EAAE,CAAC,CAAC,GAChDd,wBAAwB,CAACe,sBAAoB,CAAC,GAC/CA,sBAAoB;AAAC,IAAAC,QAAA,GAEVH,GAAG;AAAAI,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"file":"act.js","names":["_reactTestRenderer","require","_reactVersions","setIsReactActEnvironment","isReactActEnvironment","globalThis","IS_REACT_ACT_ENVIRONMENT","getIsReactActEnvironment","withGlobalActEnvironment","actImplementation","callback","previousActEnvironment","callbackNeedsToBeAwaited","actResult","result","then","thenable","resolve","reject","returnValue","error","act","checkReactVersionAtLeast","reactTestRendererAct","_default","exports","default"],"sources":["../src/act.ts"],"sourcesContent":["// This file and the act() implementation is sourced from react-testing-library\n// https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js\nimport { act as reactTestRendererAct } from 'react-test-renderer';\nimport { checkReactVersionAtLeast } from './react-versions';\n\ntype ReactAct = typeof reactTestRendererAct;\n\n// See https://github.com/reactwg/react-18/discussions/102 for more context on global.IS_REACT_ACT_ENVIRONMENT\ndeclare global {\n var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;\n}\n\nfunction setIsReactActEnvironment(isReactActEnvironment: boolean | undefined) {\n globalThis.IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment;\n}\n\nfunction getIsReactActEnvironment() {\n return globalThis.IS_REACT_ACT_ENVIRONMENT;\n}\n\nfunction withGlobalActEnvironment(actImplementation: ReactAct) {\n return (callback: Parameters<ReactAct>[0]) => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n\n // this code is riddled with eslint disabling comments because this doesn't use real promises but eslint thinks we do\n try {\n // The return value of `act` is always a thenable.\n let callbackNeedsToBeAwaited = false;\n const actResult = actImplementation(() => {\n const result = callback();\n if (\n result !== null &&\n typeof result === 'object' &&\n // @ts-expect-error this should be a promise or thenable\n // eslint-disable-next-line promise/prefer-await-to-then\n typeof result.then === 'function'\n ) {\n callbackNeedsToBeAwaited = true;\n }\n return result;\n });\n\n if (callbackNeedsToBeAwaited) {\n const thenable = actResult;\n return {\n then: (\n resolve: (value: never) => never,\n reject: (value: never) => never\n ) => {\n // eslint-disable-next-line\n thenable.then(\n // eslint-disable-next-line promise/always-return\n (returnValue) => {\n setIsReactActEnvironment(previousActEnvironment);\n resolve(returnValue);\n },\n (error) => {\n setIsReactActEnvironment(previousActEnvironment);\n reject(error);\n }\n );\n },\n };\n } else {\n setIsReactActEnvironment(previousActEnvironment);\n return actResult;\n }\n } catch (error) {\n // Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT\n // or if we have to await the callback first.\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n };\n}\n\nconst act: ReactAct = checkReactVersionAtLeast(18, 0)\n ? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)\n : reactTestRendererAct;\n\nexport default act;\nexport {\n setIsReactActEnvironment as setReactActEnvironment,\n getIsReactActEnvironment,\n};\n"],"mappings":";;;;;;;;AAEA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAHA;AACA;;AAMA;;AAKA,SAASE,wBAAwBA,CAACC,qBAA0C,EAAE;EAC5EC,UAAU,CAACC,wBAAwB,GAAGF,qBAAqB;AAC7D;AAEA,SAASG,wBAAwBA,CAAA,EAAG;EAClC,OAAOF,UAAU,CAACC,wBAAwB;AAC5C;AAEA,SAASE,wBAAwBA,CAACC,iBAA2B,EAAE;EAC7D,OAAQC,QAAiC,IAAK;IAC5C,MAAMC,sBAAsB,GAAGJ,wBAAwB,CAAC,CAAC;IACzDJ,wBAAwB,CAAC,IAAI,CAAC;;IAE9B;IACA,IAAI;MACF;MACA,IAAIS,wBAAwB,GAAG,KAAK;MACpC,MAAMC,SAAS,GAAGJ,iBAAiB,CAAC,MAAM;QACxC,MAAMK,MAAM,GAAGJ,QAAQ,CAAC,CAAC;QACzB,IACEI,MAAM,KAAK,IAAI,IACf,OAAOA,MAAM,KAAK,QAAQ;QAC1B;QACA;QACA,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,EACjC;UACAH,wBAAwB,GAAG,IAAI;QACjC;QACA,OAAOE,MAAM;MACf,CAAC,CAAC;MAEF,IAAIF,wBAAwB,EAAE;QAC5B,MAAMI,QAAQ,GAAGH,SAAS;QAC1B,OAAO;UACLE,IAAI,EAAEA,CACJE,OAAgC,EAChCC,MAA+B,KAC5B;YACH;YACAF,QAAQ,CAACD,IAAI;YACX;YACCI,WAAW,IAAK;cACfhB,wBAAwB,CAACQ,sBAAsB,CAAC;cAChDM,OAAO,CAACE,WAAW,CAAC;YACtB,CAAC,EACAC,KAAK,IAAK;cACTjB,wBAAwB,CAACQ,sBAAsB,CAAC;cAChDO,MAAM,CAACE,KAAK,CAAC;YACf,CACF,CAAC;UACH;QACF,CAAC;MACH,CAAC,MAAM;QACLjB,wBAAwB,CAACQ,sBAAsB,CAAC;QAChD,OAAOE,SAAS;MAClB;IACF,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd;MACA;MACAjB,wBAAwB,CAACQ,sBAAsB,CAAC;MAChD,MAAMS,KAAK;IACb;EACF,CAAC;AACH;AAEA,MAAMC,GAAa,GAAG,IAAAC,uCAAwB,EAAC,EAAE,EAAE,CAAC,CAAC,GAChDd,wBAAwB,CAACe,sBAAoB,CAAC,GAC/CA,sBAAoB;AAAC,IAAAC,QAAA,GAEVH,GAAG;AAAAI,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","names":["_screen","require","cleanupQueue","Set","cleanup","clearRenderResult","forEach","fn","clear","addToCleanupQueue","add"],"sources":["../src/cleanup.ts"],"sourcesContent":["import * as React from 'react';\nimport { clearRenderResult } from './screen';\n\ntype CleanUpFunction = (nextElement?: React.ReactElement<any>) => void;\nlet cleanupQueue = new Set<CleanUpFunction>();\n\nexport default function cleanup() {\n clearRenderResult();\n cleanupQueue.forEach((fn) => fn());\n cleanupQueue.clear();\n}\n\nexport function addToCleanupQueue(fn: CleanUpFunction) {\n cleanupQueue.add(fn);\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAIC,YAAY,GAAG,IAAIC,GAAG,EAAmB;AAE9B,SAASC,OAAOA,CAAA,EAAG;EAChC,IAAAC,yBAAiB,GAAE;EACnBH,YAAY,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC;EAClCL,YAAY,CAACM,KAAK,EAAE;AACtB;AAEO,SAASC,iBAAiBA,CAACF,EAAmB,EAAE;EACrDL,YAAY,CAACQ,GAAG,CAACH,EAAE,CAAC;AACtB"}
1
+ {"version":3,"file":"cleanup.js","names":["_screen","require","cleanupQueue","Set","cleanup","clearRenderResult","forEach","fn","clear","addToCleanupQueue","add"],"sources":["../src/cleanup.ts"],"sourcesContent":["import * as React from 'react';\nimport { clearRenderResult } from './screen';\n\ntype CleanUpFunction = (nextElement?: React.ReactElement<any>) => void;\nlet cleanupQueue = new Set<CleanUpFunction>();\n\nexport default function cleanup() {\n clearRenderResult();\n cleanupQueue.forEach((fn) => fn());\n cleanupQueue.clear();\n}\n\nexport function addToCleanupQueue(fn: CleanUpFunction) {\n cleanupQueue.add(fn);\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAIC,YAAY,GAAG,IAAIC,GAAG,CAAkB,CAAC;AAE9B,SAASC,OAAOA,CAAA,EAAG;EAChC,IAAAC,yBAAiB,EAAC,CAAC;EACnBH,YAAY,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;EAClCL,YAAY,CAACM,KAAK,CAAC,CAAC;AACtB;AAEO,SAASC,iBAAiBA,CAACF,EAAmB,EAAE;EACrDL,YAAY,CAACQ,GAAG,CAACH,EAAE,CAAC;AACtB"}
@@ -1,5 +1,13 @@
1
1
  import { ReactTestInstance } from 'react-test-renderer';
2
- declare function fireEvent(element: ReactTestInstance, eventName: string, ...data: unknown[]): undefined;
2
+ import { ViewProps, TextProps, TextInputProps, PressableProps, ScrollViewProps } from 'react-native';
3
+ export declare function isTouchResponder(element: ReactTestInstance): boolean;
4
+ export declare function isEventEnabled(element: ReactTestInstance, eventName: string, nearestTouchResponder?: ReactTestInstance): boolean;
5
+ type StringWithAutoComplete<T> = T | (string & Record<never, never>);
6
+ type OnKeys<T> = keyof {
7
+ [K in keyof T as K extends `on${infer Rest}` ? Uncapitalize<Rest> : never]: T[K];
8
+ };
9
+ type EventName = StringWithAutoComplete<OnKeys<ViewProps> | OnKeys<TextProps> | OnKeys<TextInputProps> | OnKeys<PressableProps> | OnKeys<ScrollViewProps>>;
10
+ declare function fireEvent(element: ReactTestInstance, eventName: EventName, ...data: unknown[]): undefined;
3
11
  declare namespace fireEvent {
4
12
  var press: (element: ReactTestInstance, ...data: unknown[]) => undefined;
5
13
  var changeText: (element: ReactTestInstance, ...data: unknown[]) => undefined;
@@ -4,32 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ exports.isEventEnabled = isEventEnabled;
8
+ exports.isTouchResponder = isTouchResponder;
7
9
  var _act = _interopRequireDefault(require("./act"));
10
+ var _pointerEvents = require("./helpers/pointer-events");
8
11
  var _componentTree = require("./helpers/component-tree");
9
12
  var _hostComponentNames = require("./helpers/host-component-names");
10
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- const isHostTextInput = element => {
12
- return element?.type === (0, _hostComponentNames.getHostComponentNames)().textInput;
13
- };
14
14
  function isTouchResponder(element) {
15
15
  if (!(0, _componentTree.isHostElement)(element)) {
16
16
  return false;
17
17
  }
18
- return Boolean(element.props.onStartShouldSetResponder) || isHostTextInput(element);
19
- }
20
- function isPointerEventEnabled(element, isParent) {
21
- const pointerEvents = element.props.pointerEvents;
22
- if (pointerEvents === 'none') {
23
- return false;
24
- }
25
- if (isParent ? pointerEvents === 'box-only' : pointerEvents === 'box-none') {
26
- return false;
27
- }
28
- const parent = (0, _componentTree.getHostParent)(element);
29
- if (!parent) {
30
- return true;
31
- }
32
- return isPointerEventEnabled(parent, true);
18
+ return Boolean(element.props.onStartShouldSetResponder) || (0, _hostComponentNames.isHostTextInput)(element);
33
19
  }
34
20
 
35
21
  /**
@@ -48,10 +34,10 @@ const eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);
48
34
  */
49
35
  const textInputEventsIgnoringEditableProp = new Set(['contentSizeChange', 'onContentSizeChange', 'layout', 'onLayout', 'scroll', 'onScroll']);
50
36
  function isEventEnabled(element, eventName, nearestTouchResponder) {
51
- if (isHostTextInput(nearestTouchResponder)) {
37
+ if ((0, _hostComponentNames.isHostTextInput)(nearestTouchResponder)) {
52
38
  return nearestTouchResponder?.props.editable !== false || textInputEventsIgnoringEditableProp.has(eventName);
53
39
  }
54
- if (eventsAffectedByPointerEventsProp.has(eventName) && !isPointerEventEnabled(element)) {
40
+ if (eventsAffectedByPointerEventsProp.has(eventName) && !(0, _pointerEvents.isPointerEventEnabled)(element)) {
55
41
  return false;
56
42
  }
57
43
  const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();
@@ -83,6 +69,11 @@ function getEventHandler(element, eventName) {
83
69
  function getEventHandlerName(eventName) {
84
70
  return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;
85
71
  }
72
+
73
+ // Allows any string but will provide autocomplete for type T
74
+
75
+ // String union type of keys of T that start with on, stripped from on
76
+
86
77
  function fireEvent(element, eventName, ...data) {
87
78
  const handler = findEventHandler(element, eventName);
88
79
  if (!handler) {
@@ -1 +1 @@
1
- {"version":3,"file":"fireEvent.js","names":["_act","_interopRequireDefault","require","_componentTree","_hostComponentNames","obj","__esModule","default","isHostTextInput","element","type","getHostComponentNames","textInput","isTouchResponder","isHostElement","Boolean","props","onStartShouldSetResponder","isPointerEventEnabled","isParent","pointerEvents","parent","getHostParent","eventsAffectedByPointerEventsProp","Set","textInputEventsIgnoringEditableProp","isEventEnabled","eventName","nearestTouchResponder","editable","has","touchStart","touchMove","onMoveShouldSetResponder","undefined","findEventHandler","touchResponder","handler","getEventHandler","eventHandlerName","getEventHandlerName","charAt","toUpperCase","slice","fireEvent","data","returnValue","act","press","changeText","scroll","_default","exports"],"sources":["../src/fireEvent.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport act from './act';\nimport { getHostParent, isHostElement } from './helpers/component-tree';\nimport { getHostComponentNames } from './helpers/host-component-names';\n\ntype EventHandler = (...args: unknown[]) => unknown;\n\nconst isHostTextInput = (element?: ReactTestInstance) => {\n return element?.type === getHostComponentNames().textInput;\n};\n\nfunction isTouchResponder(element: ReactTestInstance) {\n if (!isHostElement(element)) {\n return false;\n }\n\n return (\n Boolean(element.props.onStartShouldSetResponder) || isHostTextInput(element)\n );\n}\n\nfunction isPointerEventEnabled(\n element: ReactTestInstance,\n isParent?: boolean\n): boolean {\n const pointerEvents = element.props.pointerEvents;\n if (pointerEvents === 'none') {\n return false;\n }\n\n if (isParent ? pointerEvents === 'box-only' : pointerEvents === 'box-none') {\n return false;\n }\n\n const parent = getHostParent(element);\n if (!parent) {\n return true;\n }\n\n return isPointerEventEnabled(parent, true);\n}\n\n/**\n * List of events affected by `pointerEvents` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);\n\n/**\n * List of `TextInput` events not affected by `editable` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst textInputEventsIgnoringEditableProp = new Set([\n 'contentSizeChange',\n 'onContentSizeChange',\n 'layout',\n 'onLayout',\n 'scroll',\n 'onScroll',\n]);\n\nfunction isEventEnabled(\n element: ReactTestInstance,\n eventName: string,\n nearestTouchResponder?: ReactTestInstance\n) {\n if (isHostTextInput(nearestTouchResponder)) {\n return (\n nearestTouchResponder?.props.editable !== false ||\n textInputEventsIgnoringEditableProp.has(eventName)\n );\n }\n\n if (\n eventsAffectedByPointerEventsProp.has(eventName) &&\n !isPointerEventEnabled(element)\n ) {\n return false;\n }\n\n const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();\n const touchMove = nearestTouchResponder?.props.onMoveShouldSetResponder?.();\n if (touchStart || touchMove) {\n return true;\n }\n\n return touchStart === undefined && touchMove === undefined;\n}\n\nfunction findEventHandler(\n element: ReactTestInstance,\n eventName: string,\n nearestTouchResponder?: ReactTestInstance\n): EventHandler | null {\n const touchResponder = isTouchResponder(element)\n ? element\n : nearestTouchResponder;\n\n const handler = getEventHandler(element, eventName);\n if (handler && isEventEnabled(element, eventName, touchResponder))\n return handler;\n\n if (element.parent === null || element.parent.parent === null) {\n return null;\n }\n\n return findEventHandler(element.parent, eventName, touchResponder);\n}\n\nfunction getEventHandler(element: ReactTestInstance, eventName: string) {\n const eventHandlerName = getEventHandlerName(eventName);\n if (typeof element.props[eventHandlerName] === 'function') {\n return element.props[eventHandlerName];\n }\n\n if (typeof element.props[eventName] === 'function') {\n return element.props[eventName];\n }\n\n return undefined;\n}\n\nfunction getEventHandlerName(eventName: string) {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\nfunction fireEvent(\n element: ReactTestInstance,\n eventName: string,\n ...data: unknown[]\n) {\n const handler = findEventHandler(element, eventName);\n if (!handler) {\n return;\n }\n\n let returnValue;\n act(() => {\n returnValue = handler(...data);\n });\n\n return returnValue;\n}\n\nfireEvent.press = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'press', ...data);\n\nfireEvent.changeText = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'changeText', ...data);\n\nfireEvent.scroll = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'scroll', ...data);\n\nexport default fireEvent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"fireEvent.js","names":["_act","_interopRequireDefault","require","_pointerEvents","_componentTree","_hostComponentNames","obj","__esModule","default","isTouchResponder","element","isHostElement","Boolean","props","onStartShouldSetResponder","isHostTextInput","eventsAffectedByPointerEventsProp","Set","textInputEventsIgnoringEditableProp","isEventEnabled","eventName","nearestTouchResponder","editable","has","isPointerEventEnabled","touchStart","touchMove","onMoveShouldSetResponder","undefined","findEventHandler","touchResponder","handler","getEventHandler","parent","eventHandlerName","getEventHandlerName","charAt","toUpperCase","slice","fireEvent","data","returnValue","act","press","changeText","scroll","_default","exports"],"sources":["../src/fireEvent.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport {\n ViewProps,\n TextProps,\n TextInputProps,\n PressableProps,\n ScrollViewProps,\n} from 'react-native';\nimport act from './act';\nimport { isPointerEventEnabled } from './helpers/pointer-events';\nimport { isHostElement } from './helpers/component-tree';\nimport { isHostTextInput } from './helpers/host-component-names';\n\ntype EventHandler = (...args: unknown[]) => unknown;\n\nexport function isTouchResponder(element: ReactTestInstance) {\n if (!isHostElement(element)) {\n return false;\n }\n\n return (\n Boolean(element.props.onStartShouldSetResponder) || isHostTextInput(element)\n );\n}\n\n/**\n * List of events affected by `pointerEvents` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst eventsAffectedByPointerEventsProp = new Set(['press', 'onPress']);\n\n/**\n * List of `TextInput` events not affected by `editable` prop.\n *\n * Note: `fireEvent` is accepting both `press` and `onPress` for event names,\n * so we need cover both forms.\n */\nconst textInputEventsIgnoringEditableProp = new Set([\n 'contentSizeChange',\n 'onContentSizeChange',\n 'layout',\n 'onLayout',\n 'scroll',\n 'onScroll',\n]);\n\nexport function isEventEnabled(\n element: ReactTestInstance,\n eventName: string,\n nearestTouchResponder?: ReactTestInstance\n) {\n if (isHostTextInput(nearestTouchResponder)) {\n return (\n nearestTouchResponder?.props.editable !== false ||\n textInputEventsIgnoringEditableProp.has(eventName)\n );\n }\n\n if (\n eventsAffectedByPointerEventsProp.has(eventName) &&\n !isPointerEventEnabled(element)\n ) {\n return false;\n }\n\n const touchStart = nearestTouchResponder?.props.onStartShouldSetResponder?.();\n const touchMove = nearestTouchResponder?.props.onMoveShouldSetResponder?.();\n if (touchStart || touchMove) {\n return true;\n }\n\n return touchStart === undefined && touchMove === undefined;\n}\n\nfunction findEventHandler(\n element: ReactTestInstance,\n eventName: string,\n nearestTouchResponder?: ReactTestInstance\n): EventHandler | null {\n const touchResponder = isTouchResponder(element)\n ? element\n : nearestTouchResponder;\n\n const handler = getEventHandler(element, eventName);\n if (handler && isEventEnabled(element, eventName, touchResponder))\n return handler;\n\n if (element.parent === null || element.parent.parent === null) {\n return null;\n }\n\n return findEventHandler(element.parent, eventName, touchResponder);\n}\n\nfunction getEventHandler(element: ReactTestInstance, eventName: string) {\n const eventHandlerName = getEventHandlerName(eventName);\n if (typeof element.props[eventHandlerName] === 'function') {\n return element.props[eventHandlerName];\n }\n\n if (typeof element.props[eventName] === 'function') {\n return element.props[eventName];\n }\n\n return undefined;\n}\n\nfunction getEventHandlerName(eventName: string) {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\n// Allows any string but will provide autocomplete for type T\ntype StringWithAutoComplete<T> = T | (string & Record<never, never>);\n\n// String union type of keys of T that start with on, stripped from on\ntype OnKeys<T> = keyof {\n [K in keyof T as K extends `on${infer Rest}`\n ? Uncapitalize<Rest>\n : never]: T[K];\n};\n\ntype EventName = StringWithAutoComplete<\n | OnKeys<ViewProps>\n | OnKeys<TextProps>\n | OnKeys<TextInputProps>\n | OnKeys<PressableProps>\n | OnKeys<ScrollViewProps>\n>;\n\nfunction fireEvent(\n element: ReactTestInstance,\n eventName: EventName,\n ...data: unknown[]\n) {\n const handler = findEventHandler(element, eventName);\n if (!handler) {\n return;\n }\n\n let returnValue;\n act(() => {\n returnValue = handler(...data);\n });\n\n return returnValue;\n}\n\nfireEvent.press = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'press', ...data);\n\nfireEvent.changeText = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'changeText', ...data);\n\nfireEvent.scroll = (element: ReactTestInstance, ...data: unknown[]) =>\n fireEvent(element, 'scroll', ...data);\n\nexport default fireEvent;\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare function flushMicroTasks(): Promise<unknown>;
2
+ /**
3
+ * @deprecated To be removed in the next major release.
4
+ */
5
+ type Thenable<T> = {
6
+ then: (callback: () => T) => unknown;
7
+ };
8
+ /**
9
+ * This legacy implementation of `flushMicroTasks` is used for compatibility with
10
+ * older versions of React Native (pre 0.71) which uses Promise polyfil.
11
+ *
12
+ * For users with older version of React Native there is a workaround of using our own
13
+ * Jest preset instead the `react-native` one, but requiring such change would be a
14
+ * breaking change for existing users.
15
+ *
16
+ * @deprecated To be removed in the next major release.
17
+ */
18
+ export declare function flushMicroTasksLegacy(): Thenable<void>;
19
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.flushMicroTasks = flushMicroTasks;
7
+ exports.flushMicroTasksLegacy = flushMicroTasksLegacy;
8
+ var _timers = require("./helpers/timers");
9
+ function flushMicroTasks() {
10
+ return new Promise(resolve => (0, _timers.setImmediate)(resolve));
11
+ }
12
+
13
+ /**
14
+ * @deprecated To be removed in the next major release.
15
+ */
16
+
17
+ /**
18
+ * This legacy implementation of `flushMicroTasks` is used for compatibility with
19
+ * older versions of React Native (pre 0.71) which uses Promise polyfil.
20
+ *
21
+ * For users with older version of React Native there is a workaround of using our own
22
+ * Jest preset instead the `react-native` one, but requiring such change would be a
23
+ * breaking change for existing users.
24
+ *
25
+ * @deprecated To be removed in the next major release.
26
+ */
27
+ function flushMicroTasksLegacy() {
28
+ return {
29
+ // using "thenable" instead of a Promise, because otherwise it breaks when
30
+ // using "modern" fake timers
31
+ then(resolve) {
32
+ (0, _timers.setImmediate)(resolve);
33
+ }
34
+ };
35
+ }
36
+ //# sourceMappingURL=flush-micro-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-micro-tasks.js","names":["_timers","require","flushMicroTasks","Promise","resolve","setImmediate","flushMicroTasksLegacy","then"],"sources":["../src/flush-micro-tasks.ts"],"sourcesContent":["import { setImmediate } from './helpers/timers';\n\nexport function flushMicroTasks() {\n return new Promise((resolve) => setImmediate(resolve));\n}\n\n/**\n * @deprecated To be removed in the next major release.\n */\ntype Thenable<T> = { then: (callback: () => T) => unknown };\n\n/**\n * This legacy implementation of `flushMicroTasks` is used for compatibility with\n * older versions of React Native (pre 0.71) which uses Promise polyfil.\n *\n * For users with older version of React Native there is a workaround of using our own\n * Jest preset instead the `react-native` one, but requiring such change would be a\n * breaking change for existing users.\n *\n * @deprecated To be removed in the next major release.\n */\nexport function flushMicroTasksLegacy(): Thenable<void> {\n return {\n // using \"thenable\" instead of a Promise, because otherwise it breaks when\n // using \"modern\" fake timers\n then(resolve) {\n setImmediate(resolve);\n },\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,SAASC,eAAeA,CAAA,EAAG;EAChC,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK,IAAAC,oBAAY,EAACD,OAAO,CAAC,CAAC;AACxD;;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,qBAAqBA,CAAA,EAAmB;EACtD,OAAO;IACL;IACA;IACAC,IAAIA,CAACH,OAAO,EAAE;MACZ,IAAAC,oBAAY,EAACD,OAAO,CAAC;IACvB;EACF,CAAC;AACH"}
@@ -8,8 +8,8 @@ exports.isAccessibilityElement = isAccessibilityElement;
8
8
  exports.isHiddenFromAccessibility = isHiddenFromAccessibility;
9
9
  exports.isInaccessible = void 0;
10
10
  var _reactNative = require("react-native");
11
- var _config = require("../config");
12
11
  var _componentTree = require("./component-tree");
12
+ var _hostComponentNames = require("./host-component-names");
13
13
  const accessibilityStateKeys = ['disabled', 'selected', 'checked', 'busy', 'expanded'];
14
14
  exports.accessibilityStateKeys = accessibilityStateKeys;
15
15
  const accessiblityValueKeys = ['min', 'max', 'now', 'text'];
@@ -75,7 +75,7 @@ function isAccessibilityElement(element) {
75
75
  if (element.props.accessible !== undefined) {
76
76
  return element.props.accessible;
77
77
  }
78
- const hostComponentNames = (0, _config.getConfig)().hostComponentNames;
78
+ const hostComponentNames = (0, _hostComponentNames.getHostComponentNames)();
79
79
  return element?.type === hostComponentNames?.text || element?.type === hostComponentNames?.textInput || element?.type === hostComponentNames?.switch;
80
80
  }
81
81
  //# sourceMappingURL=accessiblity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessiblity.js","names":["_reactNative","require","_config","_componentTree","accessibilityStateKeys","exports","accessiblityValueKeys","isHiddenFromAccessibility","element","cache","current","isCurrentSubtreeInaccessible","get","undefined","isSubtreeInaccessible","set","parent","isInaccessible","props","accessibilityElementsHidden","importantForAccessibility","flatStyle","StyleSheet","flatten","style","display","hostSiblings","getHostSiblings","some","sibling","accessibilityViewIsModal","isAccessibilityElement","accessible","hostComponentNames","getConfig","type","text","textInput","switch"],"sources":["../../src/helpers/accessiblity.ts"],"sourcesContent":["import {\n AccessibilityState,\n AccessibilityValue,\n StyleSheet,\n} from 'react-native';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport { getConfig } from '../config';\nimport { getHostSiblings } from './component-tree';\n\ntype IsInaccessibleOptions = {\n cache?: WeakMap<ReactTestInstance, boolean>;\n};\n\nexport const accessibilityStateKeys: (keyof AccessibilityState)[] = [\n 'disabled',\n 'selected',\n 'checked',\n 'busy',\n 'expanded',\n];\n\nexport const accessiblityValueKeys: (keyof AccessibilityValue)[] = [\n 'min',\n 'max',\n 'now',\n 'text',\n];\n\nexport function isHiddenFromAccessibility(\n element: ReactTestInstance | null,\n { cache }: IsInaccessibleOptions = {}\n): boolean {\n if (element == null) {\n return true;\n }\n\n let current: ReactTestInstance | null = element;\n while (current) {\n let isCurrentSubtreeInaccessible = cache?.get(current);\n\n if (isCurrentSubtreeInaccessible === undefined) {\n isCurrentSubtreeInaccessible = isSubtreeInaccessible(current);\n cache?.set(current, isCurrentSubtreeInaccessible);\n }\n\n if (isCurrentSubtreeInaccessible) {\n return true;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\n/** RTL-compatitibility alias for `isHiddenFromAccessibility` */\nexport const isInaccessible = isHiddenFromAccessibility;\n\nfunction isSubtreeInaccessible(element: ReactTestInstance): boolean {\n // Null props can happen for React.Fragments\n if (element.props == null) {\n return false;\n }\n\n // iOS: accessibilityElementsHidden\n // See: https://reactnative.dev/docs/accessibility#accessibilityelementshidden-ios\n if (element.props.accessibilityElementsHidden) {\n return true;\n }\n\n // Android: importantForAccessibility\n // See: https://reactnative.dev/docs/accessibility#importantforaccessibility-android\n if (element.props.importantForAccessibility === 'no-hide-descendants') {\n return true;\n }\n\n // Note that `opacity: 0` is not treated as inaccessible on iOS\n const flatStyle = StyleSheet.flatten(element.props.style) ?? {};\n if (flatStyle.display === 'none') return true;\n\n // iOS: accessibilityViewIsModal\n // See: https://reactnative.dev/docs/accessibility#accessibilityviewismodal-ios\n const hostSiblings = getHostSiblings(element);\n if (hostSiblings.some((sibling) => sibling.props.accessibilityViewIsModal)) {\n return true;\n }\n\n return false;\n}\n\nexport function isAccessibilityElement(\n element: ReactTestInstance | null\n): boolean {\n if (element == null) {\n return false;\n }\n\n if (element.props.accessible !== undefined) {\n return element.props.accessible;\n }\n\n const hostComponentNames = getConfig().hostComponentNames;\n\n return (\n element?.type === hostComponentNames?.text ||\n element?.type === hostComponentNames?.textInput ||\n element?.type === hostComponentNames?.switch\n );\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAMO,MAAMG,sBAAoD,GAAG,CAClE,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EACN,UAAU,CACX;AAACC,OAAA,CAAAD,sBAAA,GAAAA,sBAAA;AAEK,MAAME,qBAAmD,GAAG,CACjE,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,CACP;AAACD,OAAA,CAAAC,qBAAA,GAAAA,qBAAA;AAEK,SAASC,yBAAyBA,CACvCC,OAAiC,EACjC;EAAEC;AAA6B,CAAC,GAAG,CAAC,CAAC,EAC5B;EACT,IAAID,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,IAAIE,OAAiC,GAAGF,OAAO;EAC/C,OAAOE,OAAO,EAAE;IACd,IAAIC,4BAA4B,GAAGF,KAAK,EAAEG,GAAG,CAACF,OAAO,CAAC;IAEtD,IAAIC,4BAA4B,KAAKE,SAAS,EAAE;MAC9CF,4BAA4B,GAAGG,qBAAqB,CAACJ,OAAO,CAAC;MAC7DD,KAAK,EAAEM,GAAG,CAACL,OAAO,EAAEC,4BAA4B,CAAC;IACnD;IAEA,IAAIA,4BAA4B,EAAE;MAChC,OAAO,IAAI;IACb;IAEAD,OAAO,GAAGA,OAAO,CAACM,MAAM;EAC1B;EAEA,OAAO,KAAK;AACd;;AAEA;AACO,MAAMC,cAAc,GAAGV,yBAAyB;AAACF,OAAA,CAAAY,cAAA,GAAAA,cAAA;AAExD,SAASH,qBAAqBA,CAACN,OAA0B,EAAW;EAClE;EACA,IAAIA,OAAO,CAACU,KAAK,IAAI,IAAI,EAAE;IACzB,OAAO,KAAK;EACd;;EAEA;EACA;EACA,IAAIV,OAAO,CAACU,KAAK,CAACC,2BAA2B,EAAE;IAC7C,OAAO,IAAI;EACb;;EAEA;EACA;EACA,IAAIX,OAAO,CAACU,KAAK,CAACE,yBAAyB,KAAK,qBAAqB,EAAE;IACrE,OAAO,IAAI;EACb;;EAEA;EACA,MAAMC,SAAS,GAAGC,uBAAU,CAACC,OAAO,CAACf,OAAO,CAACU,KAAK,CAACM,KAAK,CAAC,IAAI,CAAC,CAAC;EAC/D,IAAIH,SAAS,CAACI,OAAO,KAAK,MAAM,EAAE,OAAO,IAAI;;EAE7C;EACA;EACA,MAAMC,YAAY,GAAG,IAAAC,8BAAe,EAACnB,OAAO,CAAC;EAC7C,IAAIkB,YAAY,CAACE,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACX,KAAK,CAACY,wBAAwB,CAAC,EAAE;IAC1E,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd;AAEO,SAASC,sBAAsBA,CACpCvB,OAAiC,EACxB;EACT,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,KAAK;EACd;EAEA,IAAIA,OAAO,CAACU,KAAK,CAACc,UAAU,KAAKnB,SAAS,EAAE;IAC1C,OAAOL,OAAO,CAACU,KAAK,CAACc,UAAU;EACjC;EAEA,MAAMC,kBAAkB,GAAG,IAAAC,iBAAS,GAAE,CAACD,kBAAkB;EAEzD,OACEzB,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEG,IAAI,IAC1C5B,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEI,SAAS,IAC/C7B,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEK,MAAM;AAEhD"}
1
+ {"version":3,"file":"accessiblity.js","names":["_reactNative","require","_componentTree","_hostComponentNames","accessibilityStateKeys","exports","accessiblityValueKeys","isHiddenFromAccessibility","element","cache","current","isCurrentSubtreeInaccessible","get","undefined","isSubtreeInaccessible","set","parent","isInaccessible","props","accessibilityElementsHidden","importantForAccessibility","flatStyle","StyleSheet","flatten","style","display","hostSiblings","getHostSiblings","some","sibling","accessibilityViewIsModal","isAccessibilityElement","accessible","hostComponentNames","getHostComponentNames","type","text","textInput","switch"],"sources":["../../src/helpers/accessiblity.ts"],"sourcesContent":["import {\n AccessibilityState,\n AccessibilityValue,\n StyleSheet,\n} from 'react-native';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport { getHostSiblings } from './component-tree';\nimport { getHostComponentNames } from './host-component-names';\n\ntype IsInaccessibleOptions = {\n cache?: WeakMap<ReactTestInstance, boolean>;\n};\n\nexport const accessibilityStateKeys: (keyof AccessibilityState)[] = [\n 'disabled',\n 'selected',\n 'checked',\n 'busy',\n 'expanded',\n];\n\nexport const accessiblityValueKeys: (keyof AccessibilityValue)[] = [\n 'min',\n 'max',\n 'now',\n 'text',\n];\n\nexport function isHiddenFromAccessibility(\n element: ReactTestInstance | null,\n { cache }: IsInaccessibleOptions = {}\n): boolean {\n if (element == null) {\n return true;\n }\n\n let current: ReactTestInstance | null = element;\n while (current) {\n let isCurrentSubtreeInaccessible = cache?.get(current);\n\n if (isCurrentSubtreeInaccessible === undefined) {\n isCurrentSubtreeInaccessible = isSubtreeInaccessible(current);\n cache?.set(current, isCurrentSubtreeInaccessible);\n }\n\n if (isCurrentSubtreeInaccessible) {\n return true;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\n/** RTL-compatitibility alias for `isHiddenFromAccessibility` */\nexport const isInaccessible = isHiddenFromAccessibility;\n\nfunction isSubtreeInaccessible(element: ReactTestInstance): boolean {\n // Null props can happen for React.Fragments\n if (element.props == null) {\n return false;\n }\n\n // iOS: accessibilityElementsHidden\n // See: https://reactnative.dev/docs/accessibility#accessibilityelementshidden-ios\n if (element.props.accessibilityElementsHidden) {\n return true;\n }\n\n // Android: importantForAccessibility\n // See: https://reactnative.dev/docs/accessibility#importantforaccessibility-android\n if (element.props.importantForAccessibility === 'no-hide-descendants') {\n return true;\n }\n\n // Note that `opacity: 0` is not treated as inaccessible on iOS\n const flatStyle = StyleSheet.flatten(element.props.style) ?? {};\n if (flatStyle.display === 'none') return true;\n\n // iOS: accessibilityViewIsModal\n // See: https://reactnative.dev/docs/accessibility#accessibilityviewismodal-ios\n const hostSiblings = getHostSiblings(element);\n if (hostSiblings.some((sibling) => sibling.props.accessibilityViewIsModal)) {\n return true;\n }\n\n return false;\n}\n\nexport function isAccessibilityElement(\n element: ReactTestInstance | null\n): boolean {\n if (element == null) {\n return false;\n }\n\n if (element.props.accessible !== undefined) {\n return element.props.accessible;\n }\n\n const hostComponentNames = getHostComponentNames();\n return (\n element?.type === hostComponentNames?.text ||\n element?.type === hostComponentNames?.textInput ||\n element?.type === hostComponentNames?.switch\n );\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAMO,MAAMG,sBAAoD,GAAG,CAClE,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EACN,UAAU,CACX;AAACC,OAAA,CAAAD,sBAAA,GAAAA,sBAAA;AAEK,MAAME,qBAAmD,GAAG,CACjE,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,CACP;AAACD,OAAA,CAAAC,qBAAA,GAAAA,qBAAA;AAEK,SAASC,yBAAyBA,CACvCC,OAAiC,EACjC;EAAEC;AAA6B,CAAC,GAAG,CAAC,CAAC,EAC5B;EACT,IAAID,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,IAAIE,OAAiC,GAAGF,OAAO;EAC/C,OAAOE,OAAO,EAAE;IACd,IAAIC,4BAA4B,GAAGF,KAAK,EAAEG,GAAG,CAACF,OAAO,CAAC;IAEtD,IAAIC,4BAA4B,KAAKE,SAAS,EAAE;MAC9CF,4BAA4B,GAAGG,qBAAqB,CAACJ,OAAO,CAAC;MAC7DD,KAAK,EAAEM,GAAG,CAACL,OAAO,EAAEC,4BAA4B,CAAC;IACnD;IAEA,IAAIA,4BAA4B,EAAE;MAChC,OAAO,IAAI;IACb;IAEAD,OAAO,GAAGA,OAAO,CAACM,MAAM;EAC1B;EAEA,OAAO,KAAK;AACd;;AAEA;AACO,MAAMC,cAAc,GAAGV,yBAAyB;AAACF,OAAA,CAAAY,cAAA,GAAAA,cAAA;AAExD,SAASH,qBAAqBA,CAACN,OAA0B,EAAW;EAClE;EACA,IAAIA,OAAO,CAACU,KAAK,IAAI,IAAI,EAAE;IACzB,OAAO,KAAK;EACd;;EAEA;EACA;EACA,IAAIV,OAAO,CAACU,KAAK,CAACC,2BAA2B,EAAE;IAC7C,OAAO,IAAI;EACb;;EAEA;EACA;EACA,IAAIX,OAAO,CAACU,KAAK,CAACE,yBAAyB,KAAK,qBAAqB,EAAE;IACrE,OAAO,IAAI;EACb;;EAEA;EACA,MAAMC,SAAS,GAAGC,uBAAU,CAACC,OAAO,CAACf,OAAO,CAACU,KAAK,CAACM,KAAK,CAAC,IAAI,CAAC,CAAC;EAC/D,IAAIH,SAAS,CAACI,OAAO,KAAK,MAAM,EAAE,OAAO,IAAI;;EAE7C;EACA;EACA,MAAMC,YAAY,GAAG,IAAAC,8BAAe,EAACnB,OAAO,CAAC;EAC7C,IAAIkB,YAAY,CAACE,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACX,KAAK,CAACY,wBAAwB,CAAC,EAAE;IAC1E,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd;AAEO,SAASC,sBAAsBA,CACpCvB,OAAiC,EACxB;EACT,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,KAAK;EACd;EAEA,IAAIA,OAAO,CAACU,KAAK,CAACc,UAAU,KAAKnB,SAAS,EAAE;IAC1C,OAAOL,OAAO,CAACU,KAAK,CAACc,UAAU;EACjC;EAEA,MAAMC,kBAAkB,GAAG,IAAAC,yCAAqB,EAAC,CAAC;EAClD,OACE1B,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEG,IAAI,IAC1C5B,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEI,SAAS,IAC/C7B,OAAO,EAAE2B,IAAI,KAAKF,kBAAkB,EAAEK,MAAM;AAEhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"component-tree.js","names":["isHostElement","element","type","getHostParent","current","parent","getHostChildren","hostChildren","children","forEach","child","push","getHostSelves","getHostSiblings","hostParent","hostSelves","filter","sibling","includes"],"sources":["../../src/helpers/component-tree.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\n\n/**\n * Checks if the given element is a host element.\n * @param element The element to check.\n */\nexport function isHostElement(element?: ReactTestInstance | null) {\n return typeof element?.type === 'string';\n}\n\n/**\n * Returns first host ancestor for given element.\n * @param element The element start traversing from.\n */\nexport function getHostParent(\n element: ReactTestInstance | null\n): ReactTestInstance | null {\n if (element == null) {\n return null;\n }\n\n let current = element.parent;\n while (current) {\n if (isHostElement(current)) {\n return current;\n }\n\n current = current.parent;\n }\n\n return null;\n}\n\n/**\n * Returns host children for given element.\n * @param element The element start traversing from.\n */\nexport function getHostChildren(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n if (element == null) {\n return [];\n }\n\n const hostChildren: ReactTestInstance[] = [];\n\n element.children.forEach((child) => {\n if (typeof child !== 'object') {\n return;\n }\n\n if (isHostElement(child)) {\n hostChildren.push(child);\n } else {\n hostChildren.push(...getHostChildren(child));\n }\n });\n\n return hostChildren;\n}\n\n/**\n * Return the array of host elements that represent the passed element.\n *\n * @param element The element start traversing from.\n * @returns If the passed element is a host element, it will return an array containing only that element,\n * if the passed element is a composite element, it will return an array containing its host children (zero, one or many).\n */\nexport function getHostSelves(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n return typeof element?.type === 'string'\n ? [element]\n : getHostChildren(element);\n}\n\n/**\n * Returns host siblings for given element.\n * @param element The element start traversing from.\n */\nexport function getHostSiblings(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n const hostParent = getHostParent(element);\n const hostSelves = getHostSelves(element);\n return getHostChildren(hostParent).filter(\n (sibling) => !hostSelves.includes(sibling)\n );\n}\n"],"mappings":";;;;;;;;;;AAEA;AACA;AACA;AACA;AACO,SAASA,aAAaA,CAACC,OAAkC,EAAE;EAChE,OAAO,OAAOA,OAAO,EAAEC,IAAI,KAAK,QAAQ;AAC1C;;AAEA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAC3BF,OAAiC,EACP;EAC1B,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,IAAIG,OAAO,GAAGH,OAAO,CAACI,MAAM;EAC5B,OAAOD,OAAO,EAAE;IACd,IAAIJ,aAAa,CAACI,OAAO,CAAC,EAAE;MAC1B,OAAOA,OAAO;IAChB;IAEAA,OAAO,GAAGA,OAAO,CAACC,MAAM;EAC1B;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BL,OAAiC,EACZ;EACrB,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,EAAE;EACX;EAEA,MAAMM,YAAiC,GAAG,EAAE;EAE5CN,OAAO,CAACO,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAK;IAClC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B;IACF;IAEA,IAAIV,aAAa,CAACU,KAAK,CAAC,EAAE;MACxBH,YAAY,CAACI,IAAI,CAACD,KAAK,CAAC;IAC1B,CAAC,MAAM;MACLH,YAAY,CAACI,IAAI,CAAC,GAAGL,eAAe,CAACI,KAAK,CAAC,CAAC;IAC9C;EACF,CAAC,CAAC;EAEF,OAAOH,YAAY;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,aAAaA,CAC3BX,OAAiC,EACZ;EACrB,OAAO,OAAOA,OAAO,EAAEC,IAAI,KAAK,QAAQ,GACpC,CAACD,OAAO,CAAC,GACTK,eAAe,CAACL,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAASY,eAAeA,CAC7BZ,OAAiC,EACZ;EACrB,MAAMa,UAAU,GAAGX,aAAa,CAACF,OAAO,CAAC;EACzC,MAAMc,UAAU,GAAGH,aAAa,CAACX,OAAO,CAAC;EACzC,OAAOK,eAAe,CAACQ,UAAU,CAAC,CAACE,MAAM,CACtCC,OAAO,IAAK,CAACF,UAAU,CAACG,QAAQ,CAACD,OAAO,CAAC,CAC3C;AACH"}
1
+ {"version":3,"file":"component-tree.js","names":["isHostElement","element","type","getHostParent","current","parent","getHostChildren","hostChildren","children","forEach","child","push","getHostSelves","getHostSiblings","hostParent","hostSelves","filter","sibling","includes"],"sources":["../../src/helpers/component-tree.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\n\n/**\n * Checks if the given element is a host element.\n * @param element The element to check.\n */\nexport function isHostElement(element?: ReactTestInstance | null) {\n return typeof element?.type === 'string';\n}\n\n/**\n * Returns first host ancestor for given element.\n * @param element The element start traversing from.\n */\nexport function getHostParent(\n element: ReactTestInstance | null\n): ReactTestInstance | null {\n if (element == null) {\n return null;\n }\n\n let current = element.parent;\n while (current) {\n if (isHostElement(current)) {\n return current;\n }\n\n current = current.parent;\n }\n\n return null;\n}\n\n/**\n * Returns host children for given element.\n * @param element The element start traversing from.\n */\nexport function getHostChildren(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n if (element == null) {\n return [];\n }\n\n const hostChildren: ReactTestInstance[] = [];\n\n element.children.forEach((child) => {\n if (typeof child !== 'object') {\n return;\n }\n\n if (isHostElement(child)) {\n hostChildren.push(child);\n } else {\n hostChildren.push(...getHostChildren(child));\n }\n });\n\n return hostChildren;\n}\n\n/**\n * Return the array of host elements that represent the passed element.\n *\n * @param element The element start traversing from.\n * @returns If the passed element is a host element, it will return an array containing only that element,\n * if the passed element is a composite element, it will return an array containing its host children (zero, one or many).\n */\nexport function getHostSelves(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n return typeof element?.type === 'string'\n ? [element]\n : getHostChildren(element);\n}\n\n/**\n * Returns host siblings for given element.\n * @param element The element start traversing from.\n */\nexport function getHostSiblings(\n element: ReactTestInstance | null\n): ReactTestInstance[] {\n const hostParent = getHostParent(element);\n const hostSelves = getHostSelves(element);\n return getHostChildren(hostParent).filter(\n (sibling) => !hostSelves.includes(sibling)\n );\n}\n"],"mappings":";;;;;;;;;;AAEA;AACA;AACA;AACA;AACO,SAASA,aAAaA,CAACC,OAAkC,EAAE;EAChE,OAAO,OAAOA,OAAO,EAAEC,IAAI,KAAK,QAAQ;AAC1C;;AAEA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAC3BF,OAAiC,EACP;EAC1B,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,IAAIG,OAAO,GAAGH,OAAO,CAACI,MAAM;EAC5B,OAAOD,OAAO,EAAE;IACd,IAAIJ,aAAa,CAACI,OAAO,CAAC,EAAE;MAC1B,OAAOA,OAAO;IAChB;IAEAA,OAAO,GAAGA,OAAO,CAACC,MAAM;EAC1B;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BL,OAAiC,EACZ;EACrB,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,EAAE;EACX;EAEA,MAAMM,YAAiC,GAAG,EAAE;EAE5CN,OAAO,CAACO,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAK;IAClC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B;IACF;IAEA,IAAIV,aAAa,CAACU,KAAK,CAAC,EAAE;MACxBH,YAAY,CAACI,IAAI,CAACD,KAAK,CAAC;IAC1B,CAAC,MAAM;MACLH,YAAY,CAACI,IAAI,CAAC,GAAGL,eAAe,CAACI,KAAK,CAAC,CAAC;IAC9C;EACF,CAAC,CAAC;EAEF,OAAOH,YAAY;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,aAAaA,CAC3BX,OAAiC,EACZ;EACrB,OAAO,OAAOA,OAAO,EAAEC,IAAI,KAAK,QAAQ,GACpC,CAACD,OAAO,CAAC,GACTK,eAAe,CAACL,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACO,SAASY,eAAeA,CAC7BZ,OAAiC,EACZ;EACrB,MAAMa,UAAU,GAAGX,aAAa,CAACF,OAAO,CAAC;EACzC,MAAMc,UAAU,GAAGH,aAAa,CAACX,OAAO,CAAC;EACzC,OAAOK,eAAe,CAACQ,UAAU,CAAC,CAACE,MAAM,CACtCC,OAAO,IAAK,CAACF,UAAU,CAACG,QAAQ,CAACD,OAAO,CAC3C,CAAC;AACH"}
@@ -29,7 +29,7 @@ function deprecateQuery(queryFn, queryName, recommendation) {
29
29
  }
30
30
  const warned = {};
31
31
 
32
- // istambul ignore next: Occasionally used
32
+ /* istanbul ignore next: occasionally used */
33
33
  function printDeprecationWarning(functionName) {
34
34
  if (warned[functionName]) {
35
35
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"deprecation.js","names":["_queryName","require","deprecateQueries","queriesObject","recommendation","result","Object","keys","forEach","queryName","queryFn","deprecateQuery","formattedRecommendation","replace","getQueryPrefix","wrapper","args","errorMessage","console","warn","warned","printDeprecationWarning","functionName"],"sources":["../../src/helpers/deprecation.ts"],"sourcesContent":["import { getQueryPrefix } from './query-name';\n\nexport function deprecateQueries<Queries extends Record<string, any>>(\n queriesObject: Queries,\n recommendation: string\n): Queries {\n const result = {} as Queries;\n Object.keys(queriesObject).forEach((queryName) => {\n const queryFn = queriesObject[queryName];\n // @ts-expect-error: generic typing is hard\n result[queryName] = deprecateQuery(queryFn, queryName, recommendation);\n });\n\n return result;\n}\n\nfunction deprecateQuery<QueryFn extends (...args: any) => any>(\n queryFn: QueryFn,\n queryName: string,\n recommendation: string\n): QueryFn {\n const formattedRecommendation = recommendation.replace(\n /{queryPrefix}/g,\n getQueryPrefix(queryName)\n );\n\n // @ts-expect-error: generic typing is hard\n const wrapper: QueryFn = (...args: any) => {\n const errorMessage = `${queryName}(...) is deprecated and will be removed in the future.\\n\\n${formattedRecommendation}`;\n // eslint-disable-next-line no-console\n console.warn(errorMessage);\n return queryFn(...args);\n };\n\n return wrapper;\n}\n\nconst warned: { [functionName: string]: boolean } = {};\n\n// istambul ignore next: Occasionally used\nexport function printDeprecationWarning(functionName: string) {\n if (warned[functionName]) {\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(`\n Deprecation Warning:\n Use of ${functionName} is not recommended and will be deleted in future versions of @testing-library/react-native.\n `);\n\n warned[functionName] = true;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,gBAAgBA,CAC9BC,aAAsB,EACtBC,cAAsB,EACb;EACT,MAAMC,MAAM,GAAG,CAAC,CAAY;EAC5BC,MAAM,CAACC,IAAI,CAACJ,aAAa,CAAC,CAACK,OAAO,CAAEC,SAAS,IAAK;IAChD,MAAMC,OAAO,GAAGP,aAAa,CAACM,SAAS,CAAC;IACxC;IACAJ,MAAM,CAACI,SAAS,CAAC,GAAGE,cAAc,CAACD,OAAO,EAAED,SAAS,EAAEL,cAAc,CAAC;EACxE,CAAC,CAAC;EAEF,OAAOC,MAAM;AACf;AAEA,SAASM,cAAcA,CACrBD,OAAgB,EAChBD,SAAiB,EACjBL,cAAsB,EACb;EACT,MAAMQ,uBAAuB,GAAGR,cAAc,CAACS,OAAO,CACpD,gBAAgB,EAChB,IAAAC,yBAAc,EAACL,SAAS,CAAC,CAC1B;;EAED;EACA,MAAMM,OAAgB,GAAGA,CAAC,GAAGC,IAAS,KAAK;IACzC,MAAMC,YAAY,GAAI,GAAER,SAAU,6DAA4DG,uBAAwB,EAAC;IACvH;IACAM,OAAO,CAACC,IAAI,CAACF,YAAY,CAAC;IAC1B,OAAOP,OAAO,CAAC,GAAGM,IAAI,CAAC;EACzB,CAAC;EAED,OAAOD,OAAO;AAChB;AAEA,MAAMK,MAA2C,GAAG,CAAC,CAAC;;AAEtD;AACO,SAASC,uBAAuBA,CAACC,YAAoB,EAAE;EAC5D,IAAIF,MAAM,CAACE,YAAY,CAAC,EAAE;IACxB;EACF;;EAEA;EACAJ,OAAO,CAACC,IAAI,CAAE;AAChB;AACA,WAAWG,YAAa;AACxB,GAAG,CAAC;EAEFF,MAAM,CAACE,YAAY,CAAC,GAAG,IAAI;AAC7B"}
1
+ {"version":3,"file":"deprecation.js","names":["_queryName","require","deprecateQueries","queriesObject","recommendation","result","Object","keys","forEach","queryName","queryFn","deprecateQuery","formattedRecommendation","replace","getQueryPrefix","wrapper","args","errorMessage","console","warn","warned","printDeprecationWarning","functionName"],"sources":["../../src/helpers/deprecation.ts"],"sourcesContent":["import { getQueryPrefix } from './query-name';\n\nexport function deprecateQueries<Queries extends Record<string, any>>(\n queriesObject: Queries,\n recommendation: string\n): Queries {\n const result = {} as Queries;\n Object.keys(queriesObject).forEach((queryName) => {\n const queryFn = queriesObject[queryName];\n // @ts-expect-error: generic typing is hard\n result[queryName] = deprecateQuery(queryFn, queryName, recommendation);\n });\n\n return result;\n}\n\nfunction deprecateQuery<QueryFn extends (...args: any) => any>(\n queryFn: QueryFn,\n queryName: string,\n recommendation: string\n): QueryFn {\n const formattedRecommendation = recommendation.replace(\n /{queryPrefix}/g,\n getQueryPrefix(queryName)\n );\n\n // @ts-expect-error: generic typing is hard\n const wrapper: QueryFn = (...args: any) => {\n const errorMessage = `${queryName}(...) is deprecated and will be removed in the future.\\n\\n${formattedRecommendation}`;\n // eslint-disable-next-line no-console\n console.warn(errorMessage);\n return queryFn(...args);\n };\n\n return wrapper;\n}\n\nconst warned: { [functionName: string]: boolean } = {};\n\n/* istanbul ignore next: occasionally used */\nexport function printDeprecationWarning(functionName: string) {\n if (warned[functionName]) {\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(`\n Deprecation Warning:\n Use of ${functionName} is not recommended and will be deleted in future versions of @testing-library/react-native.\n `);\n\n warned[functionName] = true;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,gBAAgBA,CAC9BC,aAAsB,EACtBC,cAAsB,EACb;EACT,MAAMC,MAAM,GAAG,CAAC,CAAY;EAC5BC,MAAM,CAACC,IAAI,CAACJ,aAAa,CAAC,CAACK,OAAO,CAAEC,SAAS,IAAK;IAChD,MAAMC,OAAO,GAAGP,aAAa,CAACM,SAAS,CAAC;IACxC;IACAJ,MAAM,CAACI,SAAS,CAAC,GAAGE,cAAc,CAACD,OAAO,EAAED,SAAS,EAAEL,cAAc,CAAC;EACxE,CAAC,CAAC;EAEF,OAAOC,MAAM;AACf;AAEA,SAASM,cAAcA,CACrBD,OAAgB,EAChBD,SAAiB,EACjBL,cAAsB,EACb;EACT,MAAMQ,uBAAuB,GAAGR,cAAc,CAACS,OAAO,CACpD,gBAAgB,EAChB,IAAAC,yBAAc,EAACL,SAAS,CAC1B,CAAC;;EAED;EACA,MAAMM,OAAgB,GAAGA,CAAC,GAAGC,IAAS,KAAK;IACzC,MAAMC,YAAY,GAAI,GAAER,SAAU,6DAA4DG,uBAAwB,EAAC;IACvH;IACAM,OAAO,CAACC,IAAI,CAACF,YAAY,CAAC;IAC1B,OAAOP,OAAO,CAAC,GAAGM,IAAI,CAAC;EACzB,CAAC;EAED,OAAOD,OAAO;AAChB;AAEA,MAAMK,MAA2C,GAAG,CAAC,CAAC;;AAEtD;AACO,SAASC,uBAAuBA,CAACC,YAAoB,EAAE;EAC5D,IAAIF,MAAM,CAACE,YAAY,CAAC,EAAE;IACxB;EACF;;EAEA;EACAJ,OAAO,CAACC,IAAI,CAAE;AAChB;AACA,WAAWG,YAAa;AACxB,GAAG,CAAC;EAEFF,MAAM,CAACE,YAAY,CAAC,GAAG,IAAI;AAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","names":["_prettyFormat","_interopRequireDefault","require","obj","__esModule","default","ErrorWithStack","Error","constructor","message","callsite","captureStackTrace","exports","prepareErrorMessage","error","name","value","errorMessage","replace","toString","prettyFormat","min","createQueryByError","includes","copyStackTrace","target","stackTraceSource","stack"],"sources":["../../src/helpers/errors.ts"],"sourcesContent":["import prettyFormat from 'pretty-format';\n\nexport class ErrorWithStack extends Error {\n constructor(message: string | undefined, callsite: Function) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, callsite);\n }\n }\n}\n\nexport const prepareErrorMessage = (\n // TS states that error caught in a catch close are of type `unknown`\n // most real cases will be `Error`, but better safe than sorry\n error: unknown,\n name?: string,\n value?: unknown\n): string => {\n let errorMessage: string;\n if (error instanceof Error) {\n // Strip info about custom predicate\n errorMessage = error.message.replace(\n / matching custom predicate[^]*/gm,\n ''\n );\n } else if (error && typeof error === 'object') {\n errorMessage = error.toString();\n } else {\n errorMessage = 'Caught unknown error';\n }\n\n if (name && value) {\n errorMessage += ` with ${name} ${prettyFormat(value, { min: true })}`;\n }\n return errorMessage;\n};\n\nexport const createQueryByError = (\n error: unknown,\n callsite: Function\n): null => {\n if (error instanceof Error) {\n if (error.message.includes('No instances found')) {\n return null;\n }\n throw new ErrorWithStack(error.message, callsite);\n }\n\n throw new ErrorWithStack(\n // generic refining of `unknown` is very hard, you cannot do `'toString' in error` or anything like that\n // Converting as any with extra safe optional chaining will do the job just as well\n `Query: caught unknown error type: ${typeof error}, value: ${(\n error as any\n )?.toString?.()}`,\n callsite\n );\n};\n\nexport function copyStackTrace(target: unknown, stackTraceSource: Error) {\n if (target instanceof Error && stackTraceSource.stack) {\n target.stack = stackTraceSource.stack.replace(\n stackTraceSource.message,\n target.message\n );\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAElC,MAAMG,cAAc,SAASC,KAAK,CAAC;EACxCC,WAAWA,CAACC,OAA2B,EAAEC,QAAkB,EAAE;IAC3D,KAAK,CAACD,OAAO,CAAC;IACd,IAAIF,KAAK,CAACI,iBAAiB,EAAE;MAC3BJ,KAAK,CAACI,iBAAiB,CAAC,IAAI,EAAED,QAAQ,CAAC;IACzC;EACF;AACF;AAACE,OAAA,CAAAN,cAAA,GAAAA,cAAA;AAEM,MAAMO,mBAAmB,GAAGA,CAGjCC,KAAc,EACdC,IAAa,EACbC,KAAe,KACJ;EACX,IAAIC,YAAoB;EACxB,IAAIH,KAAK,YAAYP,KAAK,EAAE;IAC1B;IACAU,YAAY,GAAGH,KAAK,CAACL,OAAO,CAACS,OAAO,CAClC,kCAAkC,EAClC,EAAE,CACH;EACH,CAAC,MAAM,IAAIJ,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7CG,YAAY,GAAGH,KAAK,CAACK,QAAQ,EAAE;EACjC,CAAC,MAAM;IACLF,YAAY,GAAG,sBAAsB;EACvC;EAEA,IAAIF,IAAI,IAAIC,KAAK,EAAE;IACjBC,YAAY,IAAK,SAAQF,IAAK,IAAG,IAAAK,qBAAY,EAACJ,KAAK,EAAE;MAAEK,GAAG,EAAE;IAAK,CAAC,CAAE,EAAC;EACvE;EACA,OAAOJ,YAAY;AACrB,CAAC;AAACL,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAEK,MAAMS,kBAAkB,GAAGA,CAChCR,KAAc,EACdJ,QAAkB,KACT;EACT,IAAII,KAAK,YAAYP,KAAK,EAAE;IAC1B,IAAIO,KAAK,CAACL,OAAO,CAACc,QAAQ,CAAC,oBAAoB,CAAC,EAAE;MAChD,OAAO,IAAI;IACb;IACA,MAAM,IAAIjB,cAAc,CAACQ,KAAK,CAACL,OAAO,EAAEC,QAAQ,CAAC;EACnD;EAEA,MAAM,IAAIJ,cAAc;EACtB;EACA;EACC,qCAAoC,OAAOQ,KAAM,YAChDA,KAAK,EACJK,QAAQ,IAAK,EAAC,EACjBT,QAAQ,CACT;AACH,CAAC;AAACE,OAAA,CAAAU,kBAAA,GAAAA,kBAAA;AAEK,SAASE,cAAcA,CAACC,MAAe,EAAEC,gBAAuB,EAAE;EACvE,IAAID,MAAM,YAAYlB,KAAK,IAAImB,gBAAgB,CAACC,KAAK,EAAE;IACrDF,MAAM,CAACE,KAAK,GAAGD,gBAAgB,CAACC,KAAK,CAACT,OAAO,CAC3CQ,gBAAgB,CAACjB,OAAO,EACxBgB,MAAM,CAAChB,OAAO,CACf;EACH;AACF"}
1
+ {"version":3,"file":"errors.js","names":["_prettyFormat","_interopRequireDefault","require","obj","__esModule","default","ErrorWithStack","Error","constructor","message","callsite","captureStackTrace","exports","prepareErrorMessage","error","name","value","errorMessage","replace","toString","prettyFormat","min","createQueryByError","includes","copyStackTrace","target","stackTraceSource","stack"],"sources":["../../src/helpers/errors.ts"],"sourcesContent":["import prettyFormat from 'pretty-format';\n\nexport class ErrorWithStack extends Error {\n constructor(message: string | undefined, callsite: Function) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, callsite);\n }\n }\n}\n\nexport const prepareErrorMessage = (\n // TS states that error caught in a catch close are of type `unknown`\n // most real cases will be `Error`, but better safe than sorry\n error: unknown,\n name?: string,\n value?: unknown\n): string => {\n let errorMessage: string;\n if (error instanceof Error) {\n // Strip info about custom predicate\n errorMessage = error.message.replace(\n / matching custom predicate[^]*/gm,\n ''\n );\n } else if (error && typeof error === 'object') {\n errorMessage = error.toString();\n } else {\n errorMessage = 'Caught unknown error';\n }\n\n if (name && value) {\n errorMessage += ` with ${name} ${prettyFormat(value, { min: true })}`;\n }\n return errorMessage;\n};\n\nexport const createQueryByError = (\n error: unknown,\n callsite: Function\n): null => {\n if (error instanceof Error) {\n if (error.message.includes('No instances found')) {\n return null;\n }\n throw new ErrorWithStack(error.message, callsite);\n }\n\n throw new ErrorWithStack(\n // generic refining of `unknown` is very hard, you cannot do `'toString' in error` or anything like that\n // Converting as any with extra safe optional chaining will do the job just as well\n `Query: caught unknown error type: ${typeof error}, value: ${(\n error as any\n )?.toString?.()}`,\n callsite\n );\n};\n\nexport function copyStackTrace(target: unknown, stackTraceSource: Error) {\n if (target instanceof Error && stackTraceSource.stack) {\n target.stack = stackTraceSource.stack.replace(\n stackTraceSource.message,\n target.message\n );\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAElC,MAAMG,cAAc,SAASC,KAAK,CAAC;EACxCC,WAAWA,CAACC,OAA2B,EAAEC,QAAkB,EAAE;IAC3D,KAAK,CAACD,OAAO,CAAC;IACd,IAAIF,KAAK,CAACI,iBAAiB,EAAE;MAC3BJ,KAAK,CAACI,iBAAiB,CAAC,IAAI,EAAED,QAAQ,CAAC;IACzC;EACF;AACF;AAACE,OAAA,CAAAN,cAAA,GAAAA,cAAA;AAEM,MAAMO,mBAAmB,GAAGA,CAGjCC,KAAc,EACdC,IAAa,EACbC,KAAe,KACJ;EACX,IAAIC,YAAoB;EACxB,IAAIH,KAAK,YAAYP,KAAK,EAAE;IAC1B;IACAU,YAAY,GAAGH,KAAK,CAACL,OAAO,CAACS,OAAO,CAClC,kCAAkC,EAClC,EACF,CAAC;EACH,CAAC,MAAM,IAAIJ,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7CG,YAAY,GAAGH,KAAK,CAACK,QAAQ,CAAC,CAAC;EACjC,CAAC,MAAM;IACLF,YAAY,GAAG,sBAAsB;EACvC;EAEA,IAAIF,IAAI,IAAIC,KAAK,EAAE;IACjBC,YAAY,IAAK,SAAQF,IAAK,IAAG,IAAAK,qBAAY,EAACJ,KAAK,EAAE;MAAEK,GAAG,EAAE;IAAK,CAAC,CAAE,EAAC;EACvE;EACA,OAAOJ,YAAY;AACrB,CAAC;AAACL,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAEK,MAAMS,kBAAkB,GAAGA,CAChCR,KAAc,EACdJ,QAAkB,KACT;EACT,IAAII,KAAK,YAAYP,KAAK,EAAE;IAC1B,IAAIO,KAAK,CAACL,OAAO,CAACc,QAAQ,CAAC,oBAAoB,CAAC,EAAE;MAChD,OAAO,IAAI;IACb;IACA,MAAM,IAAIjB,cAAc,CAACQ,KAAK,CAACL,OAAO,EAAEC,QAAQ,CAAC;EACnD;EAEA,MAAM,IAAIJ,cAAc;EACtB;EACA;EACC,qCAAoC,OAAOQ,KAAM,YAChDA,KAAK,EACJK,QAAQ,GAAG,CAAE,EAAC,EACjBT,QACF,CAAC;AACH,CAAC;AAACE,OAAA,CAAAU,kBAAA,GAAAA,kBAAA;AAEK,SAASE,cAAcA,CAACC,MAAe,EAAEC,gBAAuB,EAAE;EACvE,IAAID,MAAM,YAAYlB,KAAK,IAAImB,gBAAgB,CAACC,KAAK,EAAE;IACrDF,MAAM,CAACE,KAAK,GAAGD,gBAAgB,CAACC,KAAK,CAACT,OAAO,CAC3CQ,gBAAgB,CAACjB,OAAO,EACxBgB,MAAM,CAAChB,OACT,CAAC;EACH;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"findAll.js","names":["_config","require","_accessiblity","findAll","root","predicate","options","results","findAllInternal","includeHiddenElements","hidden","getConfig","defaultIncludeHiddenElements","cache","WeakMap","filter","element","isHiddenFromAccessibility","matchingDescendants","children","forEach","child","push","matchDeepestOnly","length"],"sources":["../../src/helpers/findAll.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { getConfig } from '../config';\nimport { isHiddenFromAccessibility } from './accessiblity';\n\ninterface FindAllOptions {\n /** Match elements hidden from accessibility */\n includeHiddenElements?: boolean;\n\n /** RTL-compatible alias to `includeHiddenElements` */\n hidden?: boolean;\n\n /* Exclude any ancestors of deepest matched elements even if they match the predicate */\n matchDeepestOnly?: boolean;\n}\n\nexport function findAll(\n root: ReactTestInstance,\n predicate: (element: ReactTestInstance) => boolean,\n options?: FindAllOptions\n) {\n const results = findAllInternal(root, predicate, options);\n\n const includeHiddenElements =\n options?.includeHiddenElements ??\n options?.hidden ??\n getConfig()?.defaultIncludeHiddenElements;\n\n if (includeHiddenElements) {\n return results;\n }\n\n const cache = new WeakMap<ReactTestInstance>();\n return results.filter(\n (element) => !isHiddenFromAccessibility(element, { cache })\n );\n}\n\n// Extracted from React Test Renderer\n// src: https://github.com/facebook/react/blob/8e2bde6f2751aa6335f3cef488c05c3ea08e074a/packages/react-test-renderer/src/ReactTestRenderer.js#L402\nfunction findAllInternal(\n root: ReactTestInstance,\n predicate: (element: ReactTestInstance) => boolean,\n options?: FindAllOptions\n): Array<ReactTestInstance> {\n const results: ReactTestInstance[] = [];\n\n // Match descendants first but do not add them to results yet.\n const matchingDescendants: ReactTestInstance[] = [];\n root.children.forEach((child) => {\n if (typeof child === 'string') {\n return;\n }\n matchingDescendants.push(...findAllInternal(child, predicate, options));\n });\n\n if (\n // When matchDeepestOnly = true: add current element only if no descendants match\n (!options?.matchDeepestOnly || matchingDescendants.length === 0) &&\n predicate(root)\n ) {\n results.push(root);\n }\n\n // Add matching descendants after element to preserve original tree walk order.\n results.push(...matchingDescendants);\n\n return results;\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAaO,SAASE,OAAOA,CACrBC,IAAuB,EACvBC,SAAkD,EAClDC,OAAwB,EACxB;EACA,MAAMC,OAAO,GAAGC,eAAe,CAACJ,IAAI,EAAEC,SAAS,EAAEC,OAAO,CAAC;EAEzD,MAAMG,qBAAqB,GACzBH,OAAO,EAAEG,qBAAqB,IAC9BH,OAAO,EAAEI,MAAM,IACf,IAAAC,iBAAS,GAAE,EAAEC,4BAA4B;EAE3C,IAAIH,qBAAqB,EAAE;IACzB,OAAOF,OAAO;EAChB;EAEA,MAAMM,KAAK,GAAG,IAAIC,OAAO,EAAqB;EAC9C,OAAOP,OAAO,CAACQ,MAAM,CAClBC,OAAO,IAAK,CAAC,IAAAC,uCAAyB,EAACD,OAAO,EAAE;IAAEH;EAAM,CAAC,CAAC,CAC5D;AACH;;AAEA;AACA;AACA,SAASL,eAAeA,CACtBJ,IAAuB,EACvBC,SAAkD,EAClDC,OAAwB,EACE;EAC1B,MAAMC,OAA4B,GAAG,EAAE;;EAEvC;EACA,MAAMW,mBAAwC,GAAG,EAAE;EACnDd,IAAI,CAACe,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAK;IAC/B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B;IACF;IACAH,mBAAmB,CAACI,IAAI,CAAC,GAAGd,eAAe,CAACa,KAAK,EAAEhB,SAAS,EAAEC,OAAO,CAAC,CAAC;EACzE,CAAC,CAAC;EAEF;EACE;EACA,CAAC,CAACA,OAAO,EAAEiB,gBAAgB,IAAIL,mBAAmB,CAACM,MAAM,KAAK,CAAC,KAC/DnB,SAAS,CAACD,IAAI,CAAC,EACf;IACAG,OAAO,CAACe,IAAI,CAAClB,IAAI,CAAC;EACpB;;EAEA;EACAG,OAAO,CAACe,IAAI,CAAC,GAAGJ,mBAAmB,CAAC;EAEpC,OAAOX,OAAO;AAChB"}
1
+ {"version":3,"file":"findAll.js","names":["_config","require","_accessiblity","findAll","root","predicate","options","results","findAllInternal","includeHiddenElements","hidden","getConfig","defaultIncludeHiddenElements","cache","WeakMap","filter","element","isHiddenFromAccessibility","matchingDescendants","children","forEach","child","push","matchDeepestOnly","length"],"sources":["../../src/helpers/findAll.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { getConfig } from '../config';\nimport { isHiddenFromAccessibility } from './accessiblity';\n\ninterface FindAllOptions {\n /** Match elements hidden from accessibility */\n includeHiddenElements?: boolean;\n\n /** RTL-compatible alias to `includeHiddenElements` */\n hidden?: boolean;\n\n /* Exclude any ancestors of deepest matched elements even if they match the predicate */\n matchDeepestOnly?: boolean;\n}\n\nexport function findAll(\n root: ReactTestInstance,\n predicate: (element: ReactTestInstance) => boolean,\n options?: FindAllOptions\n) {\n const results = findAllInternal(root, predicate, options);\n\n const includeHiddenElements =\n options?.includeHiddenElements ??\n options?.hidden ??\n getConfig()?.defaultIncludeHiddenElements;\n\n if (includeHiddenElements) {\n return results;\n }\n\n const cache = new WeakMap<ReactTestInstance>();\n return results.filter(\n (element) => !isHiddenFromAccessibility(element, { cache })\n );\n}\n\n// Extracted from React Test Renderer\n// src: https://github.com/facebook/react/blob/8e2bde6f2751aa6335f3cef488c05c3ea08e074a/packages/react-test-renderer/src/ReactTestRenderer.js#L402\nfunction findAllInternal(\n root: ReactTestInstance,\n predicate: (element: ReactTestInstance) => boolean,\n options?: FindAllOptions\n): Array<ReactTestInstance> {\n const results: ReactTestInstance[] = [];\n\n // Match descendants first but do not add them to results yet.\n const matchingDescendants: ReactTestInstance[] = [];\n root.children.forEach((child) => {\n if (typeof child === 'string') {\n return;\n }\n matchingDescendants.push(...findAllInternal(child, predicate, options));\n });\n\n if (\n // When matchDeepestOnly = true: add current element only if no descendants match\n (!options?.matchDeepestOnly || matchingDescendants.length === 0) &&\n predicate(root)\n ) {\n results.push(root);\n }\n\n // Add matching descendants after element to preserve original tree walk order.\n results.push(...matchingDescendants);\n\n return results;\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAaO,SAASE,OAAOA,CACrBC,IAAuB,EACvBC,SAAkD,EAClDC,OAAwB,EACxB;EACA,MAAMC,OAAO,GAAGC,eAAe,CAACJ,IAAI,EAAEC,SAAS,EAAEC,OAAO,CAAC;EAEzD,MAAMG,qBAAqB,GACzBH,OAAO,EAAEG,qBAAqB,IAC9BH,OAAO,EAAEI,MAAM,IACf,IAAAC,iBAAS,EAAC,CAAC,EAAEC,4BAA4B;EAE3C,IAAIH,qBAAqB,EAAE;IACzB,OAAOF,OAAO;EAChB;EAEA,MAAMM,KAAK,GAAG,IAAIC,OAAO,CAAoB,CAAC;EAC9C,OAAOP,OAAO,CAACQ,MAAM,CAClBC,OAAO,IAAK,CAAC,IAAAC,uCAAyB,EAACD,OAAO,EAAE;IAAEH;EAAM,CAAC,CAC5D,CAAC;AACH;;AAEA;AACA;AACA,SAASL,eAAeA,CACtBJ,IAAuB,EACvBC,SAAkD,EAClDC,OAAwB,EACE;EAC1B,MAAMC,OAA4B,GAAG,EAAE;;EAEvC;EACA,MAAMW,mBAAwC,GAAG,EAAE;EACnDd,IAAI,CAACe,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAK;IAC/B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B;IACF;IACAH,mBAAmB,CAACI,IAAI,CAAC,GAAGd,eAAe,CAACa,KAAK,EAAEhB,SAAS,EAAEC,OAAO,CAAC,CAAC;EACzE,CAAC,CAAC;EAEF;EACE;EACA,CAAC,CAACA,OAAO,EAAEiB,gBAAgB,IAAIL,mBAAmB,CAACM,MAAM,KAAK,CAAC,KAC/DnB,SAAS,CAACD,IAAI,CAAC,EACf;IACAG,OAAO,CAACe,IAAI,CAAClB,IAAI,CAAC;EACpB;;EAEA;EACAG,OAAO,CAACe,IAAI,CAAC,GAAGJ,mBAAmB,CAAC;EAEpC,OAAOX,OAAO;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-default.js","names":["_reactNative","require","propsToDisplay","defaultMapProps","props","result","styles","StyleSheet","flatten","style","display","accessibilityState","removeUndefinedKeys","undefined","accessibilityValue","forEach","propName","exports","isObject","value","Array","isArray","prop","Object","entries","key","keys","length"],"sources":["../../src/helpers/format-default.ts"],"sourcesContent":["import { StyleSheet, ViewStyle } from 'react-native';\nimport { MapPropsFunction } from './format';\n\nconst propsToDisplay = [\n 'testID',\n 'nativeID',\n 'accessibilityElementsHidden',\n 'accessibilityViewIsModal',\n 'importantForAccessibility',\n 'accessibilityRole',\n 'accessibilityLabel',\n 'accessibilityLabelledBy',\n 'accessibilityHint',\n 'placeholder',\n 'value',\n 'defaultValue',\n 'title',\n];\n\n/**\n * Preserve props that are helpful in diagnosing test failures, while stripping rest\n */\nexport const defaultMapProps: MapPropsFunction = (props) => {\n const result: Record<string, unknown> = {};\n\n const styles = StyleSheet.flatten(props.style as ViewStyle);\n if (styles?.display === 'none') {\n result.style = { display: 'none' };\n }\n\n const accessibilityState = removeUndefinedKeys(props.accessibilityState);\n if (accessibilityState !== undefined) {\n result.accessibilityState = accessibilityState;\n }\n\n const accessibilityValue = removeUndefinedKeys(props.accessibilityValue);\n if (accessibilityValue !== undefined) {\n result.accessibilityValue = accessibilityValue;\n }\n\n propsToDisplay.forEach((propName) => {\n if (propName in props) {\n result[propName] = props[propName];\n }\n });\n\n return result;\n};\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction removeUndefinedKeys(prop: unknown) {\n if (!isObject(prop)) {\n return prop;\n }\n\n const result: Record<string, unknown> = {};\n Object.entries(prop).forEach(([key, value]) => {\n if (value !== undefined) {\n result[key] = value;\n }\n });\n\n // If object does not have any props we will ignore it.\n if (Object.keys(result).length === 0) {\n return undefined;\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,cAAc,GAAG,CACrB,QAAQ,EACR,UAAU,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,cAAc,EACd,OAAO,CACR;;AAED;AACA;AACA;AACO,MAAMC,eAAiC,GAAIC,KAAK,IAAK;EAC1D,MAAMC,MAA+B,GAAG,CAAC,CAAC;EAE1C,MAAMC,MAAM,GAAGC,uBAAU,CAACC,OAAO,CAACJ,KAAK,CAACK,KAAK,CAAc;EAC3D,IAAIH,MAAM,EAAEI,OAAO,KAAK,MAAM,EAAE;IAC9BL,MAAM,CAACI,KAAK,GAAG;MAAEC,OAAO,EAAE;IAAO,CAAC;EACpC;EAEA,MAAMC,kBAAkB,GAAGC,mBAAmB,CAACR,KAAK,CAACO,kBAAkB,CAAC;EACxE,IAAIA,kBAAkB,KAAKE,SAAS,EAAE;IACpCR,MAAM,CAACM,kBAAkB,GAAGA,kBAAkB;EAChD;EAEA,MAAMG,kBAAkB,GAAGF,mBAAmB,CAACR,KAAK,CAACU,kBAAkB,CAAC;EACxE,IAAIA,kBAAkB,KAAKD,SAAS,EAAE;IACpCR,MAAM,CAACS,kBAAkB,GAAGA,kBAAkB;EAChD;EAEAZ,cAAc,CAACa,OAAO,CAAEC,QAAQ,IAAK;IACnC,IAAIA,QAAQ,IAAIZ,KAAK,EAAE;MACrBC,MAAM,CAACW,QAAQ,CAAC,GAAGZ,KAAK,CAACY,QAAQ,CAAC;IACpC;EACF,CAAC,CAAC;EAEF,OAAOX,MAAM;AACf,CAAC;AAACY,OAAA,CAAAd,eAAA,GAAAA,eAAA;AAEF,SAASe,QAAQA,CAACC,KAAc,EAAoC;EAClE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC;AAC7E;AAEA,SAASP,mBAAmBA,CAACU,IAAa,EAAE;EAC1C,IAAI,CAACJ,QAAQ,CAACI,IAAI,CAAC,EAAE;IACnB,OAAOA,IAAI;EACb;EAEA,MAAMjB,MAA+B,GAAG,CAAC,CAAC;EAC1CkB,MAAM,CAACC,OAAO,CAACF,IAAI,CAAC,CAACP,OAAO,CAAC,CAAC,CAACU,GAAG,EAAEN,KAAK,CAAC,KAAK;IAC7C,IAAIA,KAAK,KAAKN,SAAS,EAAE;MACvBR,MAAM,CAACoB,GAAG,CAAC,GAAGN,KAAK;IACrB;EACF,CAAC,CAAC;;EAEF;EACA,IAAII,MAAM,CAACG,IAAI,CAACrB,MAAM,CAAC,CAACsB,MAAM,KAAK,CAAC,EAAE;IACpC,OAAOd,SAAS;EAClB;EAEA,OAAOR,MAAM;AACf"}
1
+ {"version":3,"file":"format-default.js","names":["_reactNative","require","propsToDisplay","defaultMapProps","props","result","styles","StyleSheet","flatten","style","display","accessibilityState","removeUndefinedKeys","undefined","accessibilityValue","forEach","propName","exports","isObject","value","Array","isArray","prop","Object","entries","key","keys","length"],"sources":["../../src/helpers/format-default.ts"],"sourcesContent":["import { StyleSheet, ViewStyle } from 'react-native';\nimport { MapPropsFunction } from './format';\n\nconst propsToDisplay = [\n 'testID',\n 'nativeID',\n 'accessibilityElementsHidden',\n 'accessibilityViewIsModal',\n 'importantForAccessibility',\n 'accessibilityRole',\n 'accessibilityLabel',\n 'accessibilityLabelledBy',\n 'accessibilityHint',\n 'placeholder',\n 'value',\n 'defaultValue',\n 'title',\n];\n\n/**\n * Preserve props that are helpful in diagnosing test failures, while stripping rest\n */\nexport const defaultMapProps: MapPropsFunction = (props) => {\n const result: Record<string, unknown> = {};\n\n const styles = StyleSheet.flatten(props.style as ViewStyle);\n if (styles?.display === 'none') {\n result.style = { display: 'none' };\n }\n\n const accessibilityState = removeUndefinedKeys(props.accessibilityState);\n if (accessibilityState !== undefined) {\n result.accessibilityState = accessibilityState;\n }\n\n const accessibilityValue = removeUndefinedKeys(props.accessibilityValue);\n if (accessibilityValue !== undefined) {\n result.accessibilityValue = accessibilityValue;\n }\n\n propsToDisplay.forEach((propName) => {\n if (propName in props) {\n result[propName] = props[propName];\n }\n });\n\n return result;\n};\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction removeUndefinedKeys(prop: unknown) {\n if (!isObject(prop)) {\n return prop;\n }\n\n const result: Record<string, unknown> = {};\n Object.entries(prop).forEach(([key, value]) => {\n if (value !== undefined) {\n result[key] = value;\n }\n });\n\n // If object does not have any props we will ignore it.\n if (Object.keys(result).length === 0) {\n return undefined;\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,cAAc,GAAG,CACrB,QAAQ,EACR,UAAU,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,cAAc,EACd,OAAO,CACR;;AAED;AACA;AACA;AACO,MAAMC,eAAiC,GAAIC,KAAK,IAAK;EAC1D,MAAMC,MAA+B,GAAG,CAAC,CAAC;EAE1C,MAAMC,MAAM,GAAGC,uBAAU,CAACC,OAAO,CAACJ,KAAK,CAACK,KAAkB,CAAC;EAC3D,IAAIH,MAAM,EAAEI,OAAO,KAAK,MAAM,EAAE;IAC9BL,MAAM,CAACI,KAAK,GAAG;MAAEC,OAAO,EAAE;IAAO,CAAC;EACpC;EAEA,MAAMC,kBAAkB,GAAGC,mBAAmB,CAACR,KAAK,CAACO,kBAAkB,CAAC;EACxE,IAAIA,kBAAkB,KAAKE,SAAS,EAAE;IACpCR,MAAM,CAACM,kBAAkB,GAAGA,kBAAkB;EAChD;EAEA,MAAMG,kBAAkB,GAAGF,mBAAmB,CAACR,KAAK,CAACU,kBAAkB,CAAC;EACxE,IAAIA,kBAAkB,KAAKD,SAAS,EAAE;IACpCR,MAAM,CAACS,kBAAkB,GAAGA,kBAAkB;EAChD;EAEAZ,cAAc,CAACa,OAAO,CAAEC,QAAQ,IAAK;IACnC,IAAIA,QAAQ,IAAIZ,KAAK,EAAE;MACrBC,MAAM,CAACW,QAAQ,CAAC,GAAGZ,KAAK,CAACY,QAAQ,CAAC;IACpC;EACF,CAAC,CAAC;EAEF,OAAOX,MAAM;AACf,CAAC;AAACY,OAAA,CAAAd,eAAA,GAAAA,eAAA;AAEF,SAASe,QAAQA,CAACC,KAAc,EAAoC;EAClE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC;AAC7E;AAEA,SAASP,mBAAmBA,CAACU,IAAa,EAAE;EAC1C,IAAI,CAACJ,QAAQ,CAACI,IAAI,CAAC,EAAE;IACnB,OAAOA,IAAI;EACb;EAEA,MAAMjB,MAA+B,GAAG,CAAC,CAAC;EAC1CkB,MAAM,CAACC,OAAO,CAACF,IAAI,CAAC,CAACP,OAAO,CAAC,CAAC,CAACU,GAAG,EAAEN,KAAK,CAAC,KAAK;IAC7C,IAAIA,KAAK,KAAKN,SAAS,EAAE;MACvBR,MAAM,CAACoB,GAAG,CAAC,GAAGN,KAAK;IACrB;EACF,CAAC,CAAC;;EAEF;EACA,IAAII,MAAM,CAACG,IAAI,CAACrB,MAAM,CAAC,CAACsB,MAAM,KAAK,CAAC,EAAE;IACpC,OAAOd,SAAS;EAClB;EAEA,OAAOR,MAAM;AACf"}