react-native-windows 0.80.0 → 0.81.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/.flowconfig +10 -5
  2. package/Directory.Build.props +1 -1
  3. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  4. package/Libraries/Alert/Alert.js +3 -3
  5. package/Libraries/Alert/Alert.windows.js +5 -2
  6. package/Libraries/Alert/NativeAlertManager.js +1 -0
  7. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  8. package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
  9. package/Libraries/Alert/RCTAlertManager.js +1 -3
  10. package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
  11. package/Libraries/Animated/Animated.js +0 -1
  12. package/Libraries/Animated/Animated.js.flow +0 -1
  13. package/Libraries/Animated/AnimatedEvent.js +4 -3
  14. package/Libraries/Animated/AnimatedExports.js +0 -1
  15. package/Libraries/Animated/AnimatedExports.js.flow +5 -1
  16. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  17. package/Libraries/Animated/AnimatedMock.js +2 -2
  18. package/Libraries/Animated/Easing.js +1 -1
  19. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  20. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  21. package/Libraries/Animated/SpringConfig.js +1 -1
  22. package/Libraries/Animated/animations/Animation.js +10 -2
  23. package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
  24. package/Libraries/Animated/components/AnimatedText.js +2 -5
  25. package/Libraries/Animated/components/AnimatedView.js +2 -1
  26. package/Libraries/Animated/createAnimatedComponent.js +39 -37
  27. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  28. package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
  29. package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
  30. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  31. package/Libraries/AppState/NativeAppState.js +1 -0
  32. package/Libraries/AppTheme/AppTheme.js +1 -1
  33. package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
  34. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  35. package/Libraries/Blob/BlobManager.js +4 -0
  36. package/Libraries/Blob/NativeBlobModule.js +1 -0
  37. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  38. package/Libraries/Blob/URL.js +1 -1
  39. package/Libraries/Blob/URLSearchParams.js +5 -1
  40. package/Libraries/Blob/URLSearchParams.js.flow +2 -1
  41. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  42. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  43. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
  44. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
  45. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
  46. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +1 -1
  47. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
  48. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  49. package/Libraries/Components/Button.js +10 -7
  50. package/Libraries/Components/Button.windows.js +4 -4
  51. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  52. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  53. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
  54. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
  55. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
  56. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
  57. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
  58. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
  59. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +1 -1
  60. package/Libraries/Components/Glyph/GlyphNativeComponent.js +1 -1
  61. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  62. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
  63. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  64. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  65. package/Libraries/Components/Popup/PopupNativeComponent.js +1 -1
  66. package/Libraries/Components/Pressable/Pressable.js +17 -8
  67. package/Libraries/Components/Pressable/Pressable.windows.js +17 -14
  68. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  69. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  70. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
  71. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
  72. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
  73. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  74. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  75. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
  76. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  77. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  78. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
  79. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  80. package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
  81. package/Libraries/Components/ScrollView/ScrollView.js +25 -15
  82. package/Libraries/Components/ScrollView/ScrollView.windows.js +25 -14
  83. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  84. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  85. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  86. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  87. package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
  88. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  89. package/Libraries/Components/Sound/SoundManager.js +1 -1
  90. package/Libraries/Components/StaticRenderer.js +1 -1
  91. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  92. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  93. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  94. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  95. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
  96. package/Libraries/Components/Switch/Switch.js +10 -3
  97. package/Libraries/Components/Switch/Switch.windows.js +10 -3
  98. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
  99. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
  100. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
  101. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  102. package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
  103. package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
  104. package/Libraries/Components/TextInput/TextInput.flow.windows.js +12 -15
  105. package/Libraries/Components/TextInput/TextInput.js +42 -39
  106. package/Libraries/Components/TextInput/TextInput.windows.js +69 -38
  107. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  108. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  109. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -17
  110. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  111. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  112. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
  113. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  114. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
  115. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
  116. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  117. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  118. package/Libraries/Components/Touchable/Position.js +1 -1
  119. package/Libraries/Components/Touchable/Touchable.js +17 -3
  120. package/Libraries/Components/Touchable/Touchable.windows.js +17 -3
  121. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  122. package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
  123. package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
  124. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +14 -5
  125. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
  126. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +5 -3
  127. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  128. package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
  129. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +10 -5
  130. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  131. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +3 -3
  132. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
  133. package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
  134. package/Libraries/Components/View/View.js +114 -29
  135. package/Libraries/Components/View/View.windows.js +261 -217
  136. package/Libraries/Components/View/ViewAccessibility.js +1 -8
  137. package/Libraries/Components/View/ViewAccessibility.windows.js +1 -8
  138. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -1
  139. package/Libraries/Components/View/ViewPropTypes.js +9 -1
  140. package/Libraries/Components/View/ViewPropTypes.windows.js +9 -1
  141. package/Libraries/Core/Devtools/getDevServer.js +1 -1
  142. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  143. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +49 -7
  144. package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
  145. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
  146. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  147. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  148. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  149. package/Libraries/Core/ExceptionsManager.js +27 -16
  150. package/Libraries/Core/InitializeCore.js +2 -23
  151. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  152. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  153. package/Libraries/Core/ReactNativeVersion.js +3 -2
  154. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  155. package/Libraries/Core/Timers/JSTimers.js +1 -1
  156. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  157. package/Libraries/Core/Timers/immediateShim.js +1 -1
  158. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  159. package/Libraries/Core/checkNativeVersion.js +1 -0
  160. package/Libraries/Core/setUpDeveloperTools.js +13 -11
  161. package/Libraries/Core/setUpReactDevTools.js +21 -4
  162. package/Libraries/Debugging/DebuggingOverlay.js +12 -14
  163. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
  164. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  165. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  166. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  167. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  168. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  169. package/Libraries/Image/AssetRegistry.js +4 -10
  170. package/Libraries/Image/Image.android.js +113 -107
  171. package/Libraries/Image/Image.ios.js +10 -2
  172. package/Libraries/Image/Image.windows.js +30 -20
  173. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  174. package/Libraries/Image/ImageInjection.js +1 -1
  175. package/Libraries/Image/ImageSource.d.ts +5 -0
  176. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  177. package/Libraries/Image/NativeImageEditor.js +1 -0
  178. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  179. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  180. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  181. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  182. package/Libraries/Image/RelativeImageStub.js +2 -1
  183. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
  184. package/Libraries/Image/resolveAssetSource.js +1 -1
  185. package/Libraries/Image/resolveAssetSource.windows.js +1 -1
  186. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  187. package/Libraries/Interaction/InteractionManager.js +64 -54
  188. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  189. package/Libraries/Interaction/TaskQueue.js +8 -9
  190. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  191. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  192. package/Libraries/Linking/Linking.js +1 -1
  193. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  194. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  195. package/Libraries/Lists/FlatList.d.ts +9 -5
  196. package/Libraries/Lists/FlatList.js +6 -7
  197. package/Libraries/Lists/SectionList.js +4 -4
  198. package/Libraries/Lists/SectionListModern.js +9 -3
  199. package/Libraries/Lists/VirtualizedList.js +3 -2
  200. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  201. package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
  202. package/Libraries/LogBox/LogBox.js +72 -99
  203. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  204. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  205. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +2 -1
  206. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  207. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  208. package/Libraries/Modal/Modal.d.ts +8 -2
  209. package/Libraries/Modal/Modal.js +24 -3
  210. package/Libraries/Modal/Modal.windows.js +24 -3
  211. package/Libraries/Modal/NativeModalManager.js +1 -0
  212. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
  213. package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
  214. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
  215. package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
  216. package/Libraries/NativeComponent/BaseViewConfig.windows.js +9 -18
  217. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
  218. package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
  219. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  220. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  221. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  222. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  223. package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +1 -0
  224. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  225. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  226. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  227. package/Libraries/Network/FormData.js +1 -1
  228. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  229. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  230. package/Libraries/Network/RCTNetworking.android.js +2 -2
  231. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  232. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  233. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  234. package/Libraries/Network/XMLHttpRequest.js +3 -3
  235. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  236. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
  237. package/Libraries/Pressability/Pressability.js +1 -1
  238. package/Libraries/Pressability/Pressability.windows.js +1 -1
  239. package/Libraries/Promise.js +1 -1
  240. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  241. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
  242. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  243. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  244. package/Libraries/ReactNative/AppContainer.js +1 -1
  245. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  246. package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
  247. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  248. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  249. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  250. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  251. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  252. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  253. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
  254. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
  255. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
  256. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  257. package/Libraries/ReactNative/RendererProxy.js +1 -1
  258. package/Libraries/ReactNative/RootTag.js +2 -2
  259. package/Libraries/ReactNative/renderApplication.js +1 -1
  260. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  261. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
  262. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
  263. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  264. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  265. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  266. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
  267. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +261 -0
  268. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  269. package/Libraries/Settings/Settings.ios.js +1 -1
  270. package/Libraries/Settings/Settings.js +1 -1
  271. package/Libraries/Settings/SettingsFallback.js +1 -1
  272. package/Libraries/Share/NativeShareModule.js +1 -0
  273. package/Libraries/Share/Share.js +1 -1
  274. package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
  275. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  276. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  277. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
  278. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  279. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
  280. package/Libraries/StyleSheet/PointPropType.js +1 -1
  281. package/Libraries/StyleSheet/Rect.js +1 -1
  282. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  283. package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
  284. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  285. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  286. package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
  287. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  288. package/Libraries/StyleSheet/processColor.js +1 -1
  289. package/Libraries/StyleSheet/processColorArray.js +1 -1
  290. package/Libraries/StyleSheet/processFilter.js +1 -2
  291. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  292. package/Libraries/StyleSheet/processTransform.js +1 -1
  293. package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
  294. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  295. package/Libraries/Text/Text.d.ts +1 -2
  296. package/Libraries/Text/Text.js +255 -246
  297. package/Libraries/Text/Text.windows.js +282 -301
  298. package/Libraries/Text/TextAncestor.js +3 -9
  299. package/Libraries/Text/TextAncestorContext.js +23 -0
  300. package/Libraries/Text/TextNativeComponent.js +4 -0
  301. package/Libraries/Text/TextProps.js +2 -5
  302. package/Libraries/Text/TextProps.windows.js +2 -6
  303. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  304. package/Libraries/Types/CodegenTypes.js +1 -1
  305. package/Libraries/Types/CodegenTypesNamespace.js +2 -1
  306. package/Libraries/Types/CoreEventTypes.d.ts +4 -0
  307. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  308. package/Libraries/Utilities/Appearance.js +1 -1
  309. package/Libraries/Utilities/BackHandler.js.flow +1 -1
  310. package/Libraries/Utilities/DevLoadingView.js +1 -1
  311. package/Libraries/Utilities/DeviceInfo.js +1 -1
  312. package/Libraries/Utilities/Dimensions.js +1 -1
  313. package/Libraries/Utilities/HMRClient.js +13 -3
  314. package/Libraries/Utilities/HMRClientProdShim.js +1 -1
  315. package/Libraries/Utilities/NativeAppearance.js +1 -0
  316. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  317. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  318. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  319. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  320. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  321. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  322. package/Libraries/Utilities/PixelRatio.js +1 -1
  323. package/Libraries/Utilities/Platform.android.js +2 -5
  324. package/Libraries/Utilities/Platform.ios.js +2 -5
  325. package/Libraries/Utilities/Platform.js +1 -1
  326. package/Libraries/Utilities/Platform.js.flow +2 -2
  327. package/Libraries/Utilities/Platform.windows.js +2 -5
  328. package/Libraries/Utilities/PlatformTypes.js +2 -2
  329. package/Libraries/Utilities/RCTLog.js +1 -1
  330. package/Libraries/Utilities/SceneTracker.js +1 -1
  331. package/Libraries/Utilities/binaryToBase64.js +1 -1
  332. package/Libraries/Utilities/codegenNativeCommands.js +5 -3
  333. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  334. package/Libraries/Utilities/createPerformanceLogger.js +27 -20
  335. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  336. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  337. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  338. package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
  339. package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
  340. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  341. package/Libraries/Utilities/logError.js +1 -1
  342. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  343. package/Libraries/Utilities/stringifySafe.js +1 -1
  344. package/Libraries/Utilities/stringifyViewConfig.js +1 -1
  345. package/Libraries/Utilities/useColorScheme.js +1 -1
  346. package/Libraries/Utilities/useWindowDimensions.js +1 -1
  347. package/Libraries/Utilities/warnOnce.js +1 -1
  348. package/Libraries/Vibration/NativeVibration.js +1 -0
  349. package/Libraries/Vibration/Vibration.js +1 -2
  350. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  351. package/Libraries/WebSocket/WebSocket.js +1 -1
  352. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  353. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  354. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  355. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  356. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +3 -3
  357. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +3 -3
  358. package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +2 -1
  359. package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +2 -2
  360. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +3 -3
  361. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +2 -1
  362. package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +1 -1
  363. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +18 -7
  364. package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.cpp +169 -0
  365. package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.h +42 -0
  366. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
  367. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +68 -1
  368. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +9 -0
  369. package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +5 -37
  370. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +3 -3
  371. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +6 -6
  372. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
  373. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
  374. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
  375. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
  376. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -1
  377. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  378. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +6 -0
  379. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -17
  380. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +0 -3
  381. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +41 -37
  382. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.cpp +75 -24
  383. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.h +4 -25
  384. package/Microsoft.ReactNative/JsiApi.cpp +1 -1
  385. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -0
  386. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +3 -0
  387. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +0 -2
  388. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -1
  389. package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -3
  390. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +27 -11
  391. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
  392. package/Microsoft.ReactNative/QuirkSettings.cpp +16 -0
  393. package/Microsoft.ReactNative/QuirkSettings.h +3 -0
  394. package/Microsoft.ReactNative/QuirkSettings.idl +5 -0
  395. package/Microsoft.ReactNative/ReactHost/DebuggerNotifications.h +54 -0
  396. package/Microsoft.ReactNative/ReactHost/React.h +11 -4
  397. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +166 -29
  398. package/Microsoft.ReactNative/ReactHost/ReactHost.h +22 -4
  399. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +68 -52
  400. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  401. package/Microsoft.ReactNative/ReactRootView.cpp +108 -0
  402. package/Microsoft.ReactNative/ReactRootView.h +6 -0
  403. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +1 -0
  404. package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -1
  405. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
  406. package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
  407. package/Microsoft.ReactNative/Views/ViewManager.h +0 -1
  408. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
  409. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +41 -0
  410. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +16 -0
  411. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +125 -0
  412. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +167 -1
  413. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
  414. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +110 -38
  415. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +5 -5
  416. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +0 -2
  417. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.h +0 -19
  418. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
  419. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
  420. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
  421. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
  422. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
  423. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +14 -8
  424. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +44 -31
  425. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +13 -14
  426. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +19 -4
  427. package/Microsoft.ReactNative.Cxx/node-api/node_api.h +270 -0
  428. package/Microsoft.ReactNative.Cxx/node-api/node_api_types.h +52 -0
  429. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +13 -4
  430. package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
  431. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  432. package/PropertySheets/JSEngine.props +1 -1
  433. package/PropertySheets/React.Cpp.props +6 -4
  434. package/README.md +1 -1
  435. package/ReactCommon/ReactCommon.vcxproj +29 -21
  436. package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
  437. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +5 -0
  438. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +6 -2
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +111 -7
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +57 -4
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +17 -1
  442. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/network/HttpUtils.cpp +175 -0
  443. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
  444. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +69 -56
  445. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +35 -18
  446. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +445 -0
  447. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
  448. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
  449. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +37 -1
  450. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +250 -80
  451. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +528 -0
  452. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
  453. package/ReactCommon/TEMP_UntilReactCommonUpdate/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +9 -12
  454. package/ReactCommon/cgmanifest.json +1 -1
  455. package/Scripts/Analyze-Crash.ps1 +87 -3
  456. package/Scripts/OfficeReact.Win32.nuspec +0 -1
  457. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -0
  458. package/Scripts/Tfs/Start-TestServers.ps1 +2 -1
  459. package/Scripts/creaternwapp.cmd +10 -6
  460. package/Scripts/rnw-dependencies.ps1 +33 -4
  461. package/Shared/CreateModules.h +0 -35
  462. package/Shared/DevServerHelper.h +13 -3
  463. package/Shared/DevSettings.h +6 -5
  464. package/Shared/DevSupportManager.cpp +79 -20
  465. package/Shared/DevSupportManager.h +7 -19
  466. package/Shared/Hermes/HermesRuntimeAgentDelegate.cpp +99 -0
  467. package/Shared/Hermes/HermesRuntimeAgentDelegate.h +81 -0
  468. package/Shared/Hermes/HermesRuntimeTargetDelegate.cpp +274 -0
  469. package/Shared/Hermes/HermesRuntimeTargetDelegate.h +77 -0
  470. package/Shared/HermesRuntimeHolder.cpp +29 -111
  471. package/Shared/HermesRuntimeHolder.h +214 -32
  472. package/Shared/IDevSupportManager.h +5 -2
  473. package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.cpp +108 -0
  474. package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.h +19 -0
  475. package/Shared/Inspector/ReactInspectorThread.h +18 -0
  476. package/Shared/JSI/RuntimeHolder.h +5 -2
  477. package/Shared/Modules/BlobModule.cpp +0 -90
  478. package/Shared/Modules/BlobModule.h +0 -40
  479. package/Shared/Modules/FileReaderModule.cpp +0 -104
  480. package/Shared/Modules/FileReaderModule.h +0 -38
  481. package/Shared/Modules/HttpModule.cpp +0 -172
  482. package/Shared/Modules/HttpModule.h +0 -47
  483. package/Shared/Modules/WebSocketModule.cpp +0 -287
  484. package/Shared/Modules/WebSocketModule.h +1 -94
  485. package/Shared/OInstance.cpp +45 -139
  486. package/Shared/OInstance.h +0 -1
  487. package/Shared/Shared.vcxitems +33 -32
  488. package/Shared/Shared.vcxitems.filters +38 -51
  489. package/Shared/TurboModuleManager.cpp +0 -1
  490. package/codegen/NativeDOMSpec.g.h +6 -0
  491. package/codegen/NativeDeviceInfoSpec.g.h +2 -0
  492. package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
  493. package/codegen/NativeMutationObserverSpec.g.h +4 -4
  494. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +159 -93
  495. package/codegen/react/components/rnwcore/EventEmitters.cpp +25 -0
  496. package/codegen/react/components/rnwcore/EventEmitters.h +25 -0
  497. package/codegen/react/components/rnwcore/ModalHostView.g.h +4 -0
  498. package/codegen/react/components/rnwcore/Props.cpp +535 -24
  499. package/codegen/react/components/rnwcore/Props.h +138 -0
  500. package/codegen/react/components/rnwcore/States.h +9 -78
  501. package/codegen/react/components/rnwcore/VirtualView.g.h +226 -0
  502. package/codegen/rnwcoreJSI-generated.cpp +101 -31
  503. package/codegen/rnwcoreJSI.h +169 -88
  504. package/include/Shared/II18nModule.h +0 -1
  505. package/index.js +22 -2
  506. package/index.windows.js +131 -221
  507. package/interface.js +1 -1
  508. package/jest/MockNativeMethods.js +9 -3
  509. package/jest/RefreshControlMock.js +32 -0
  510. package/jest/assetFileTransformer.js +1 -0
  511. package/jest/local-setup.js +4 -3
  512. package/jest/mock.js +39 -0
  513. package/jest/mockComponent.js +47 -17
  514. package/jest/mockNativeComponent.js +26 -15
  515. package/jest/mocks/AccessibilityInfo.js +62 -0
  516. package/jest/mocks/ActivityIndicator.js +23 -0
  517. package/jest/mocks/AppState.js +19 -0
  518. package/jest/mocks/Clipboard.js +16 -0
  519. package/jest/mocks/Image.js +23 -0
  520. package/jest/mocks/InitializeCore.js +9 -0
  521. package/jest/mocks/Linking.js +28 -0
  522. package/jest/mocks/Modal.js +33 -0
  523. package/jest/mocks/NativeComponentRegistry.js +30 -0
  524. package/jest/mocks/NativeModules.js +239 -0
  525. package/jest/mocks/RefreshControl.js +31 -0
  526. package/jest/mocks/RendererProxy.js +45 -0
  527. package/jest/mocks/ScrollView.js +58 -0
  528. package/jest/mocks/Text.js +27 -0
  529. package/jest/mocks/TextInput.js +32 -0
  530. package/jest/mocks/UIManager.js +60 -0
  531. package/jest/mocks/Vibration.js +16 -0
  532. package/jest/mocks/View.js +27 -0
  533. package/jest/mocks/ViewNativeComponent.js +23 -0
  534. package/jest/mocks/requireNativeComponent.js +22 -0
  535. package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
  536. package/jest/react-native-env.js +1 -0
  537. package/jest/renderer.js +1 -2
  538. package/jest/resolver.js +1 -0
  539. package/jest/setup.js +64 -449
  540. package/package.json +24 -24
  541. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  542. package/src/private/animated/createAnimatedPropsHook.js +14 -4
  543. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
  544. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  545. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  546. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  547. package/src/private/components/virtualview/VirtualView.js +145 -0
  548. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  549. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
  550. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
  551. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
  552. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  553. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
  554. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
  555. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
  556. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
  557. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
  558. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  559. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
  560. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
  561. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  562. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
  563. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  564. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  565. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  566. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.windows.js +8 -9
  567. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  568. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  569. package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
  570. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
  571. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
  572. package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
  573. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  574. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  575. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
  576. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
  577. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
  578. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
  579. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  580. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  581. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  582. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
  583. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  584. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
  585. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
  586. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  587. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
  588. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  589. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  590. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  591. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
  592. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  593. package/src/private/styles/composeStyles.js +5 -12
  594. package/src/private/types/HostInstance.js +1 -1
  595. package/src/private/webapis/dom/events/Event.js +3 -0
  596. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  597. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
  598. package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
  599. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
  600. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  601. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
  602. package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
  603. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
  604. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  605. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  606. package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
  607. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  608. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
  609. package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
  610. package/src/private/webapis/errors/DOMException.js +166 -0
  611. package/src/private/webapis/geometry/DOMRect.js +5 -0
  612. package/src/private/webapis/geometry/DOMRectList.js +4 -1
  613. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  614. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  615. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  616. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  617. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
  618. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  619. package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
  620. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  621. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
  622. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
  623. package/src/private/webapis/performance/EventTiming.js +1 -1
  624. package/src/private/webapis/performance/LongTasks.js +1 -1
  625. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  626. package/src/private/webapis/performance/Performance.js +20 -9
  627. package/src/private/webapis/performance/PerformanceEntry.js +5 -1
  628. package/src/private/webapis/performance/PerformanceObserver.js +32 -28
  629. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  630. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  631. package/src/private/webapis/performance/UserTiming.js +1 -1
  632. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
  633. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  634. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  635. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  636. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  637. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  638. package/templates/cpp-lib/example/metro.config.js +1 -1
  639. package/templates/cpp-lib/template.config.js +24 -0
  640. package/templates/cpp-lib/windows/MyLib/MyLib.h +20 -1
  641. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
  642. package/types/modules/Devtools.d.ts +23 -9
  643. package/Libraries/BugReporting/BugReporting.js +0 -140
  644. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  645. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  646. package/Libraries/BugReporting/getReactData.js +0 -187
  647. package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
  648. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
  649. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
  650. package/ReactCommon/TEMP_UntilReactCommonUpdate/jserrorhandler/JsErrorHandler.cpp +0 -429
  651. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.cpp +0 -45
  652. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.h +0 -91
  653. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/CullingContext.cpp +0 -49
  654. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +0 -191
  655. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +0 -670
  656. package/Shared/InspectorPackagerConnection.cpp +0 -232
  657. package/Shared/InspectorPackagerConnection.h +0 -61
  658. package/Shared/Modules/ExceptionsManagerModule.cpp +0 -209
  659. package/Shared/Modules/ExceptionsManagerModule.h +0 -32
  660. package/Shared/Modules/I18nModule.cpp +0 -36
  661. package/Shared/Modules/I18nModule.h +0 -28
  662. package/Shared/Modules/NetworkingModule.cpp +0 -432
  663. package/Shared/Modules/NetworkingModule.h +0 -34
  664. package/Shared/Modules/PlatformConstantsModule.cpp +0 -60
  665. package/Shared/Modules/PlatformConstantsModule.h +0 -23
  666. package/Shared/Modules/SourceCodeModule.cpp +0 -35
  667. package/Shared/Modules/SourceCodeModule.h +0 -27
  668. package/Shared/Modules/StatusBarManagerModule.cpp +0 -25
  669. package/Shared/Modules/StatusBarManagerModule.h +0 -19
  670. package/codegen/NativeBugReportingSpec.g.h +0 -41
  671. package/jest/mockModal.js +0 -32
  672. package/jest/mockScrollView.js +0 -35
  673. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
  674. /package/Shared/{HermesSamplingProfiler.cpp → Hermes/HermesSamplingProfiler.cpp} +0 -0
  675. /package/Shared/{HermesSamplingProfiler.h → Hermes/HermesSamplingProfiler.h} +0 -0
@@ -1,670 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- #include "ReactInstance.h"
9
-
10
- #include <ReactCommon/RuntimeExecutor.h>
11
- #include <cxxreact/ErrorUtils.h>
12
- #include <cxxreact/JSBigString.h>
13
- #include <cxxreact/JSExecutor.h>
14
- #include <cxxreact/ReactMarker.h>
15
- #include <cxxreact/TraceSection.h>
16
- #include <glog/logging.h>
17
- #include <jsi/JSIDynamic.h>
18
- #include <jsi/instrumentation.h>
19
- #include <jsinspector-modern/HostTarget.h>
20
- #include <jsireact/JSIExecutor.h>
21
- #include <react/featureflags/ReactNativeFeatureFlags.h>
22
- #include <react/renderer/core/ShadowNode.h>
23
- #include <react/renderer/runtimescheduler/RuntimeSchedulerBinding.h>
24
- #include <react/utils/jsi-utils.h>
25
- #include <iostream>
26
- #include <memory>
27
- #include <utility>
28
-
29
- namespace facebook::react {
30
-
31
- namespace {
32
-
33
- std::shared_ptr<RuntimeScheduler> createRuntimeScheduler(
34
- RuntimeExecutor runtimeExecutor,
35
- RuntimeSchedulerTaskErrorHandler taskErrorHandler) {
36
- std::shared_ptr<RuntimeScheduler> scheduler =
37
- std::make_shared<RuntimeScheduler>(
38
- runtimeExecutor, RuntimeSchedulerClock::now, taskErrorHandler);
39
- scheduler->setPerformanceEntryReporter(
40
- // FIXME: Move creation of PerformanceEntryReporter to here and
41
- // guarantee that its lifetime is the same as the runtime.
42
- PerformanceEntryReporter::getInstance().get());
43
-
44
- return scheduler;
45
- }
46
-
47
- } // namespace
48
-
49
- ReactInstance::ReactInstance(
50
- std::unique_ptr<JSRuntime> runtime,
51
- std::shared_ptr<MessageQueueThread> jsMessageQueueThread,
52
- std::shared_ptr<TimerManager> timerManager,
53
- JsErrorHandler::OnJsError onJsError,
54
- jsinspector_modern::HostTarget* parentInspectorTarget)
55
- : runtime_(std::move(runtime)),
56
- jsMessageQueueThread_(jsMessageQueueThread),
57
- timerManager_(std::move(timerManager)),
58
- jsErrorHandler_(std::make_shared<JsErrorHandler>(std::move(onJsError))),
59
- parentInspectorTarget_(parentInspectorTarget) {
60
- RuntimeExecutor runtimeExecutor =
61
- [weakRuntime = std::weak_ptr(runtime_),
62
- weakTimerManager = std::weak_ptr(timerManager_),
63
- weakJsThread = std::weak_ptr(jsMessageQueueThread_),
64
- jsErrorHandler = jsErrorHandler_](auto callback) {
65
- if (weakRuntime.expired()) {
66
- return;
67
- }
68
-
69
- if (auto jsThread = weakJsThread.lock()) {
70
- jsThread->runOnQueue([jsErrorHandler,
71
- weakRuntime,
72
- weakTimerManager,
73
- callback = std::move(callback)]() {
74
- auto runtime = weakRuntime.lock();
75
- if (!runtime) {
76
- return;
77
- }
78
-
79
- jsi::Runtime& jsiRuntime = runtime->getRuntime();
80
- TraceSection s("ReactInstance::_runtimeExecutor[Callback]");
81
- try {
82
- ShadowNode::setUseRuntimeShadowNodeReferenceUpdateOnThread(true);
83
- callback(jsiRuntime);
84
- } catch (jsi::JSError& originalError) {
85
- jsErrorHandler->handleError(jsiRuntime, originalError, true);
86
- } catch (std::exception& ex) {
87
- jsi::JSError error(
88
- jsiRuntime, std::string("Non-js exception: ") + ex.what());
89
- jsErrorHandler->handleError(jsiRuntime, error, true);
90
- }
91
- });
92
- }
93
- };
94
-
95
- if (parentInspectorTarget_) {
96
- auto executor = parentInspectorTarget_->executorFromThis();
97
-
98
- auto bufferedRuntimeExecutorThatWaitsForInspectorSetup =
99
- std::make_shared<BufferedRuntimeExecutor>(runtimeExecutor);
100
- auto runtimeExecutorThatExecutesAfterInspectorSetup =
101
- [bufferedRuntimeExecutorThatWaitsForInspectorSetup](
102
- std::function<void(jsi::Runtime & runtime)>&& callback) {
103
- bufferedRuntimeExecutorThatWaitsForInspectorSetup->execute(
104
- std::move(callback));
105
- };
106
-
107
- runtimeScheduler_ = createRuntimeScheduler(
108
- runtimeExecutorThatExecutesAfterInspectorSetup,
109
- [jsErrorHandler = jsErrorHandler_](
110
- jsi::Runtime& runtime, jsi::JSError& error) {
111
- jsErrorHandler->handleError(runtime, error, true);
112
- });
113
-
114
- auto runtimeExecutorThatGoesThroughRuntimeScheduler =
115
- [runtimeScheduler = runtimeScheduler_.get()](
116
- std::function<void(jsi::Runtime & runtime)>&& callback) {
117
- runtimeScheduler->scheduleWork(std::move(callback));
118
- };
119
-
120
- // This code can execute from any thread, so we need to make sure we set up
121
- // the inspector logic in the right one. The callback executes immediately
122
- // if we are already in the right thread.
123
- executor([this,
124
- runtimeExecutorThatGoesThroughRuntimeScheduler,
125
- bufferedRuntimeExecutorThatWaitsForInspectorSetup](
126
- jsinspector_modern::HostTarget& hostTarget) {
127
- // Callbacks scheduled through the page target executor are generally
128
- // not guaranteed to run (e.g.: if the page target is destroyed)
129
- // but in this case it is because the page target cannot be destroyed
130
- // before the instance finishes its setup:
131
- // * On iOS it's because we do the setup synchronously.
132
- // * On Android it's because we explicitly wait for the instance
133
- // creation task to finish before starting the destruction.
134
- inspectorTarget_ = &hostTarget.registerInstance(*this);
135
- runtimeInspectorTarget_ =
136
- &inspectorTarget_->registerRuntime(*runtime_, runtimeExecutorThatGoesThroughRuntimeScheduler); // [Windows #13172]
137
- bufferedRuntimeExecutorThatWaitsForInspectorSetup->flush();
138
- });
139
- } else {
140
- runtimeScheduler_ = createRuntimeScheduler(
141
- runtimeExecutor,
142
- [jsErrorHandler = jsErrorHandler_](
143
- jsi::Runtime& runtime, jsi::JSError& error) {
144
- jsErrorHandler->handleError(runtime, error, true);
145
- });
146
- }
147
-
148
- bufferedRuntimeExecutor_ = std::make_shared<BufferedRuntimeExecutor>(
149
- [runtimeScheduler = runtimeScheduler_.get()](
150
- std::function<void(jsi::Runtime & runtime)>&& callback) {
151
- runtimeScheduler->scheduleWork(std::move(callback));
152
- });
153
- }
154
-
155
- void ReactInstance::unregisterFromInspector() {
156
- if (inspectorTarget_) {
157
- assert(runtimeInspectorTarget_);
158
- inspectorTarget_->unregisterRuntime(*runtimeInspectorTarget_);
159
-
160
- assert(parentInspectorTarget_);
161
- parentInspectorTarget_->unregisterInstance(*inspectorTarget_);
162
-
163
- inspectorTarget_ = nullptr;
164
- }
165
- }
166
-
167
- RuntimeExecutor ReactInstance::getUnbufferedRuntimeExecutor() noexcept {
168
- return [runtimeScheduler = runtimeScheduler_.get()](
169
- std::function<void(jsi::Runtime & runtime)>&& callback) {
170
- runtimeScheduler->scheduleWork(std::move(callback));
171
- };
172
- }
173
-
174
- // This BufferedRuntimeExecutor ensures that the main JS bundle finished
175
- // execution before any JS queued into it from C++ are executed. Use
176
- // getUnbufferedRuntimeExecutor() instead if you do not need the main JS bundle
177
- // to have finished. e.g. setting global variables into JS runtime.
178
- RuntimeExecutor ReactInstance::getBufferedRuntimeExecutor() noexcept {
179
- return [weakBufferedRuntimeExecutor_ =
180
- std::weak_ptr<BufferedRuntimeExecutor>(bufferedRuntimeExecutor_)](
181
- std::function<void(jsi::Runtime & runtime)>&& callback) {
182
- if (auto strongBufferedRuntimeExecutor_ =
183
- weakBufferedRuntimeExecutor_.lock()) {
184
- strongBufferedRuntimeExecutor_->execute(std::move(callback));
185
- }
186
- };
187
- }
188
-
189
- // TODO(T184010230): Should the RuntimeScheduler returned from this method be
190
- // buffered?
191
- std::shared_ptr<RuntimeScheduler>
192
- ReactInstance::getRuntimeScheduler() noexcept {
193
- return runtimeScheduler_;
194
- }
195
-
196
- namespace {
197
-
198
- // Copied from JSIExecutor.cpp
199
- // basename_r isn't in all iOS SDKs, so use this simple version instead.
200
- std::string simpleBasename(const std::string& path) {
201
- size_t pos = path.rfind("/");
202
- return (pos != std::string::npos) ? path.substr(pos) : path;
203
- }
204
-
205
- } // namespace
206
-
207
- /**
208
- * Load the JS bundle and flush buffered JS calls, future JS calls won't be
209
- * buffered after calling this.
210
- * Note that this method is asynchronous. However, a completion callback
211
- * isn't needed because all calls into JS should be dispatched to the JSThread,
212
- * preferably via the runtimeExecutor_.
213
- */
214
- void ReactInstance::loadScript(
215
- std::unique_ptr<const JSBigString> script,
216
- const std::string& sourceURL,
217
- std::function<void(jsi::Runtime& runtime)>&& beforeLoad,
218
- std::function<void(jsi::Runtime& runtime)>&& afterLoad) {
219
- auto buffer = std::make_shared<BigStringBuffer>(std::move(script));
220
- std::string scriptName = simpleBasename(sourceURL);
221
-
222
- runtimeScheduler_->scheduleWork([this,
223
- scriptName,
224
- sourceURL,
225
- buffer = std::move(buffer),
226
- weakBufferedRuntimeExecuter =
227
- std::weak_ptr<BufferedRuntimeExecutor>(
228
- bufferedRuntimeExecutor_),
229
- beforeLoad,
230
- afterLoad](jsi::Runtime& runtime) {
231
- if (beforeLoad) {
232
- beforeLoad(runtime);
233
- }
234
- TraceSection s("ReactInstance::loadScript");
235
- bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl);
236
- if (hasLogger) {
237
- ReactMarker::logTaggedMarkerBridgeless(
238
- ReactMarker::RUN_JS_BUNDLE_START, scriptName.c_str());
239
- }
240
-
241
- runtime.evaluateJavaScript(buffer, sourceURL);
242
-
243
- /**
244
- * TODO(T183610671): We need a safe/reliable way to enable the js
245
- * pipeline from javascript. Remove this after we figure that out, or
246
- * after we just remove the js pipeline.
247
- */
248
- if (!jsErrorHandler_->hasHandledFatalError()) {
249
- jsErrorHandler_->setRuntimeReady();
250
- }
251
-
252
- if (hasLogger) {
253
- ReactMarker::logTaggedMarkerBridgeless(
254
- ReactMarker::RUN_JS_BUNDLE_STOP, scriptName.c_str());
255
- ReactMarker::logMarkerBridgeless(ReactMarker::INIT_REACT_RUNTIME_STOP);
256
- ReactMarker::logMarkerBridgeless(ReactMarker::APP_STARTUP_STOP);
257
- }
258
- if (auto strongBufferedRuntimeExecuter =
259
- weakBufferedRuntimeExecuter.lock()) {
260
- strongBufferedRuntimeExecuter->flush();
261
- }
262
- if (afterLoad) {
263
- afterLoad(runtime);
264
- }
265
- });
266
- }
267
-
268
- /*
269
- * Calls a method on a JS module that has been registered with
270
- * `registerCallableModule`. Used to invoke a JS function from platform code.
271
- */
272
- void ReactInstance::callFunctionOnModule(
273
- const std::string& moduleName,
274
- const std::string& methodName,
275
- folly::dynamic&& args) {
276
- if (bufferedRuntimeExecutor_ == nullptr) {
277
- LOG(ERROR)
278
- << "Calling callFunctionOnModule with null BufferedRuntimeExecutor";
279
- return;
280
- }
281
-
282
- bufferedRuntimeExecutor_->execute([this,
283
- moduleName = moduleName,
284
- methodName = methodName,
285
- args = std::move(args)](
286
- jsi::Runtime& runtime) {
287
- TraceSection s(
288
- "ReactInstance::callFunctionOnModule",
289
- "moduleName",
290
- moduleName,
291
- "methodName",
292
- methodName);
293
- auto it = callableModules_.find(moduleName);
294
- if (it == callableModules_.end()) {
295
- std::ostringstream knownModules;
296
- int i = 0;
297
- for (it = callableModules_.begin(); it != callableModules_.end();
298
- it++, i++) {
299
- const char* space = (i > 0 ? ", " : " ");
300
- knownModules << space << it->first;
301
- }
302
- throw jsi::JSError(
303
- runtime,
304
- "Failed to call into JavaScript module method " + moduleName + "." +
305
- methodName +
306
- "(). Module has not been registered as callable. Registered callable JavaScript modules (n = " +
307
- std::to_string(callableModules_.size()) +
308
- "):" + knownModules.str() +
309
- ". Did you forget to call `registerCallableModule`?");
310
- }
311
-
312
- if (std::holds_alternative<jsi::Function>(it->second)) {
313
- auto module =
314
- std::get<jsi::Function>(it->second).call(runtime).asObject(runtime);
315
- it->second = std::move(module);
316
- }
317
-
318
- auto& module = std::get<jsi::Object>(it->second);
319
- auto method = module.getPropertyAsFunction(runtime, methodName.c_str());
320
-
321
- std::vector<jsi::Value> jsArgs;
322
- for (auto& arg : args) {
323
- jsArgs.push_back(jsi::valueFromDynamic(runtime, arg));
324
- }
325
- method.callWithThis(
326
- runtime, module, (const jsi::Value*)jsArgs.data(), jsArgs.size());
327
- });
328
- }
329
-
330
- void ReactInstance::registerSegment(
331
- uint32_t segmentId,
332
- const std::string& segmentPath) {
333
- LOG(WARNING) << "Starting to run ReactInstance::registerSegment with segment "
334
- << segmentId;
335
- runtimeScheduler_->scheduleWork([=](jsi::Runtime& runtime) {
336
- TraceSection s("ReactInstance::registerSegment");
337
- auto tag = std::to_string(segmentId);
338
- auto script = JSBigFileString::fromPath(segmentPath);
339
- if (script->size() == 0) {
340
- throw std::invalid_argument(
341
- "Empty segment registered with ID " + tag + " from " + segmentPath);
342
- }
343
- auto buffer = std::make_shared<BigStringBuffer>(std::move(script));
344
-
345
- bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl);
346
- if (hasLogger) {
347
- ReactMarker::logTaggedMarkerBridgeless(
348
- ReactMarker::REGISTER_JS_SEGMENT_START, tag.c_str());
349
- }
350
- LOG(WARNING) << "Starting to evaluate segment " << segmentId
351
- << " in ReactInstance::registerSegment";
352
- runtime.evaluateJavaScript(
353
- buffer, JSExecutor::getSyntheticBundlePath(segmentId, segmentPath));
354
- LOG(WARNING) << "Finished evaluating segment " << segmentId
355
- << " in ReactInstance::registerSegment";
356
- if (hasLogger) {
357
- ReactMarker::logTaggedMarkerBridgeless(
358
- ReactMarker::REGISTER_JS_SEGMENT_STOP, tag.c_str());
359
- }
360
- });
361
- }
362
-
363
- namespace {
364
- void defineReactInstanceFlags(
365
- jsi::Runtime& runtime,
366
- ReactInstance::JSRuntimeFlags options) noexcept {
367
- defineReadOnlyGlobal(runtime, "RN$Bridgeless", jsi::Value(true));
368
-
369
- if (options.isProfiling) {
370
- defineReadOnlyGlobal(runtime, "__RCTProfileIsProfiling", jsi::Value(true));
371
- }
372
-
373
- if (options.runtimeDiagnosticFlags.length() > 0) {
374
- defineReadOnlyGlobal(
375
- runtime,
376
- "RN$DiagnosticFlags",
377
- jsi::String::createFromUtf8(runtime, options.runtimeDiagnosticFlags));
378
- }
379
- }
380
-
381
- bool isTruthy(jsi::Runtime& runtime, const jsi::Value& value) {
382
- auto Boolean = runtime.global().getPropertyAsFunction(runtime, "Boolean");
383
- return Boolean.call(runtime, value).getBool();
384
- }
385
-
386
- } // namespace
387
-
388
- void ReactInstance::initializeRuntime(
389
- JSRuntimeFlags options,
390
- BindingsInstallFunc bindingsInstallFunc) noexcept {
391
- runtimeScheduler_->scheduleWork([this, options, bindingsInstallFunc](
392
- jsi::Runtime& runtime) {
393
- TraceSection s("ReactInstance::initializeRuntime");
394
-
395
- bindNativePerformanceNow(runtime);
396
-
397
- RuntimeSchedulerBinding::createAndInstallIfNeeded(
398
- runtime, runtimeScheduler_);
399
-
400
- runtime_->unstable_initializeOnJsThread();
401
-
402
- defineReactInstanceFlags(runtime, options);
403
-
404
- defineReadOnlyGlobal(
405
- runtime,
406
- "RN$useAlwaysAvailableJSErrorHandling",
407
- jsi::Value(
408
- ReactNativeFeatureFlags::useAlwaysAvailableJSErrorHandling()));
409
-
410
- defineReadOnlyGlobal(
411
- runtime,
412
- "RN$isRuntimeReady",
413
- jsi::Function::createFromHostFunction(
414
- runtime,
415
- jsi::PropNameID::forAscii(runtime, "isRuntimeReady"),
416
- 0,
417
- [jsErrorHandler = jsErrorHandler_](
418
- jsi::Runtime& /*runtime*/,
419
- const jsi::Value& /*unused*/,
420
- const jsi::Value* /*args*/,
421
- size_t /*count*/) {
422
- return jsErrorHandler->isRuntimeReady();
423
- }));
424
-
425
- defineReadOnlyGlobal(
426
- runtime,
427
- "RN$hasHandledFatalException",
428
- jsi::Function::createFromHostFunction(
429
- runtime,
430
- jsi::PropNameID::forAscii(runtime, "hasHandledFatalException"),
431
- 0,
432
- [jsErrorHandler = jsErrorHandler_](
433
- jsi::Runtime& /*runtime*/,
434
- const jsi::Value& /*unused*/,
435
- const jsi::Value* /*args*/,
436
- size_t /*count*/) {
437
- return jsErrorHandler->hasHandledFatalError();
438
- }));
439
-
440
- defineReadOnlyGlobal(
441
- runtime,
442
- "RN$notifyOfFatalException",
443
- jsi::Function::createFromHostFunction(
444
- runtime,
445
- jsi::PropNameID::forAscii(runtime, "notifyOfFatalException"),
446
- 0,
447
- [jsErrorHandler = jsErrorHandler_](
448
- jsi::Runtime& /*runtime*/,
449
- const jsi::Value& /*unused*/,
450
- const jsi::Value* /*args*/,
451
- size_t /*count*/) {
452
- jsErrorHandler->notifyOfFatalError();
453
- return jsi::Value::undefined();
454
- }));
455
-
456
- defineReadOnlyGlobal(
457
- runtime,
458
- "RN$inExceptionHandler",
459
- jsi::Function::createFromHostFunction(
460
- runtime,
461
- jsi::PropNameID::forAscii(runtime, "inExceptionHandler"),
462
- 0,
463
- [jsErrorHandler = jsErrorHandler_](
464
- jsi::Runtime& /*runtime*/,
465
- const jsi::Value& /*unused*/,
466
- const jsi::Value* /*args*/,
467
- size_t /*count*/) {
468
- return jsErrorHandler->inErrorHandler();
469
- }));
470
-
471
- // TODO(T196834299): We should really use a C++ turbomodule for this
472
- defineReadOnlyGlobal(
473
- runtime,
474
- "RN$handleException",
475
- jsi::Function::createFromHostFunction(
476
- runtime,
477
- jsi::PropNameID::forAscii(runtime, "handleException"),
478
- 3,
479
- [jsErrorHandler = jsErrorHandler_](
480
- jsi::Runtime& runtime,
481
- const jsi::Value& /*unused*/,
482
- const jsi::Value* args,
483
- size_t count) {
484
- if (count < 2) {
485
- throw jsi::JSError(
486
- runtime,
487
- "handleException requires 3 arguments: error, isFatal, logToConsole (optional)");
488
- }
489
-
490
- auto isFatal = isTruthy(runtime, args[1]);
491
-
492
- if (!ReactNativeFeatureFlags::
493
- useAlwaysAvailableJSErrorHandling()) {
494
- if (jsErrorHandler->isRuntimeReady()) {
495
- return jsi::Value(false);
496
- }
497
- }
498
-
499
- auto jsError =
500
- jsi::JSError(runtime, jsi::Value(runtime, args[0]));
501
-
502
- if (count == 2) {
503
- jsErrorHandler->handleError(runtime, jsError, isFatal);
504
- } else {
505
- auto logToConsole = isTruthy(runtime, args[2]);
506
- jsErrorHandler->handleError(
507
- runtime, jsError, isFatal, logToConsole);
508
- }
509
-
510
- return jsi::Value(true);
511
- }));
512
-
513
- defineReadOnlyGlobal(
514
- runtime,
515
- "RN$registerExceptionListener",
516
- jsi::Function::createFromHostFunction(
517
- runtime,
518
- jsi::PropNameID::forAscii(runtime, "registerExceptionListener"),
519
- 1,
520
- [errorListeners = std::vector<std::shared_ptr<jsi::Function>>(),
521
- jsErrorHandler = jsErrorHandler_](
522
- jsi::Runtime& runtime,
523
- const jsi::Value& /*unused*/,
524
- const jsi::Value* args,
525
- size_t count) mutable {
526
- if (count < 1) {
527
- throw jsi::JSError(
528
- runtime,
529
- "registerExceptionListener: requires 1 argument: fn");
530
- }
531
-
532
- if (!args[0].isObject() ||
533
- !args[0].getObject(runtime).isFunction(runtime)) {
534
- throw jsi::JSError(
535
- runtime,
536
- "registerExceptionListener: The first argument must be a function");
537
- }
538
-
539
- auto errorListener = std::make_shared<jsi::Function>(
540
- args[0].getObject(runtime).getFunction(runtime));
541
- errorListeners.emplace_back(errorListener);
542
-
543
- jsErrorHandler->registerErrorListener(
544
- [weakErrorListener = std::weak_ptr<jsi::Function>(
545
- errorListener)](jsi::Runtime& runtime, jsi::Value data) {
546
- if (auto strongErrorListener = weakErrorListener.lock()) {
547
- strongErrorListener->call(runtime, data);
548
- }
549
- });
550
-
551
- return jsi::Value::undefined();
552
- }));
553
-
554
- defineReadOnlyGlobal(
555
- runtime,
556
- "RN$registerCallableModule",
557
- jsi::Function::createFromHostFunction(
558
- runtime,
559
- jsi::PropNameID::forAscii(runtime, "registerCallableModule"),
560
- 2,
561
- [this](
562
- jsi::Runtime& runtime,
563
- const jsi::Value& /*unused*/,
564
- const jsi::Value* args,
565
- size_t count) {
566
- if (count != 2) {
567
- throw jsi::JSError(
568
- runtime,
569
- "registerCallableModule requires exactly 2 arguments");
570
- }
571
- if (!args[0].isString()) {
572
- throw jsi::JSError(
573
- runtime,
574
- "The first argument to registerCallableModule must be a string (the name of the JS module).");
575
- }
576
- auto name = args[0].asString(runtime).utf8(runtime);
577
- if (!args[1].isObject() ||
578
- !args[1].getObject(runtime).isFunction(runtime)) {
579
- throw jsi::JSError(
580
- runtime,
581
- "The second argument to registerCallableModule must be a function that returns the JS module.");
582
- }
583
- callableModules_.emplace(
584
- std::move(name),
585
- args[1].getObject(runtime).getFunction(runtime));
586
- return jsi::Value::undefined();
587
- }));
588
-
589
- timerManager_->attachGlobals(runtime);
590
-
591
- bindingsInstallFunc(runtime);
592
- });
593
- }
594
-
595
- void ReactInstance::handleMemoryPressureJs(int pressureLevel) {
596
- // The level is an enum value passed by the Android OS to an onTrimMemory
597
- // event callback. Defined in ComponentCallbacks2.
598
- enum AndroidMemoryPressure {
599
- TRIM_MEMORY_BACKGROUND = 40,
600
- TRIM_MEMORY_COMPLETE = 80,
601
- TRIM_MEMORY_MODERATE = 60,
602
- TRIM_MEMORY_RUNNING_CRITICAL = 15,
603
- TRIM_MEMORY_RUNNING_LOW = 10,
604
- TRIM_MEMORY_RUNNING_MODERATE = 5,
605
- TRIM_MEMORY_UI_HIDDEN = 20,
606
- };
607
- const char* levelName;
608
- switch (pressureLevel) {
609
- case TRIM_MEMORY_BACKGROUND:
610
- levelName = "TRIM_MEMORY_BACKGROUND";
611
- break;
612
- case TRIM_MEMORY_COMPLETE:
613
- levelName = "TRIM_MEMORY_COMPLETE";
614
- break;
615
- case TRIM_MEMORY_MODERATE:
616
- levelName = "TRIM_MEMORY_MODERATE";
617
- break;
618
- case TRIM_MEMORY_RUNNING_CRITICAL:
619
- levelName = "TRIM_MEMORY_RUNNING_CRITICAL";
620
- break;
621
- case TRIM_MEMORY_RUNNING_LOW:
622
- levelName = "TRIM_MEMORY_RUNNING_LOW";
623
- break;
624
- case TRIM_MEMORY_RUNNING_MODERATE:
625
- levelName = "TRIM_MEMORY_RUNNING_MODERATE";
626
- break;
627
- case TRIM_MEMORY_UI_HIDDEN:
628
- levelName = "TRIM_MEMORY_UI_HIDDEN";
629
- break;
630
- default:
631
- levelName = "UNKNOWN";
632
- break;
633
- }
634
-
635
- switch (pressureLevel) {
636
- case TRIM_MEMORY_RUNNING_LOW:
637
- case TRIM_MEMORY_RUNNING_MODERATE:
638
- case TRIM_MEMORY_UI_HIDDEN:
639
- // For non-severe memory trims, do nothing.
640
- LOG(INFO) << "Memory warning (pressure level: " << levelName
641
- << ") received by JS VM, ignoring because it's non-severe";
642
- break;
643
- case TRIM_MEMORY_BACKGROUND:
644
- case TRIM_MEMORY_COMPLETE:
645
- case TRIM_MEMORY_MODERATE:
646
- case TRIM_MEMORY_RUNNING_CRITICAL:
647
- // For now, pressureLevel is unused by collectGarbage.
648
- // This may change in the future if the JS GC has different styles of
649
- // collections.
650
- LOG(INFO) << "Memory warning (pressure level: " << levelName
651
- << ") received by JS VM, running a GC";
652
- runtimeScheduler_->scheduleWork([=](jsi::Runtime& runtime) {
653
- TraceSection s("ReactInstance::handleMemoryPressure");
654
- runtime.instrumentation().collectGarbage(levelName);
655
- });
656
- break;
657
- default:
658
- // Use the raw number instead of the name here since the name is
659
- // meaningless.
660
- LOG(WARNING) << "Memory warning (pressure level: " << pressureLevel
661
- << ") received by JS VM, unrecognized pressure level";
662
- break;
663
- }
664
- }
665
-
666
- void* ReactInstance::getJavaScriptContext() {
667
- return &runtime_->getRuntime();
668
- }
669
-
670
- } // namespace facebook::react