react-native-windows 0.84.0-preview.9 → 0.85.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 (487) hide show
  1. package/.flowconfig +1 -5
  2. package/Common/unicode.cpp +36 -0
  3. package/Common/unicode.h +8 -0
  4. package/Directory.Build.props +1 -16
  5. package/Directory.Build.targets +12 -4
  6. package/Folly/ThreadNameStub.cpp +4 -6
  7. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
  8. package/Libraries/Animated/Animated.d.ts +8 -1
  9. package/Libraries/Animated/AnimatedEvent.js +4 -4
  10. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  11. package/Libraries/Animated/animations/Animation.js +3 -3
  12. package/Libraries/Animated/animations/DecayAnimation.js +4 -4
  13. package/Libraries/Animated/animations/SpringAnimation.js +5 -5
  14. package/Libraries/Animated/animations/TimingAnimation.js +5 -5
  15. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  16. package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
  17. package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
  18. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  19. package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
  20. package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
  21. package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
  22. package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
  23. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  24. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  26. package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
  27. package/Libraries/Animated/useAnimatedColor.js +25 -0
  28. package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
  29. package/Libraries/Animated/useAnimatedValueXY.js +26 -0
  30. package/Libraries/AppState/AppState.js +1 -1
  31. package/Libraries/BatchedBridge/MessageQueue.js +3 -3
  32. package/Libraries/BatchedBridge/NativeModules.js +12 -10
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
  34. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +34 -30
  35. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
  36. package/Libraries/Components/Button.js +2 -2
  37. package/Libraries/Components/Button.windows.js +2 -2
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
  39. package/Libraries/Components/Keyboard/Keyboard.js +6 -6
  40. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  41. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  42. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
  43. package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
  44. package/Libraries/Components/Pressable/Pressable.js +3 -3
  45. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  46. package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
  47. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
  49. package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
  50. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +5 -5
  51. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
  52. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
  53. package/Libraries/Components/ScrollView/ScrollView.js +19 -9
  54. package/Libraries/Components/ScrollView/ScrollView.windows.js +19 -9
  55. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
  56. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +8 -18
  57. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
  58. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  59. package/Libraries/Components/StaticRenderer.js +1 -1
  60. package/Libraries/Components/StatusBar/StatusBar.js +8 -8
  61. package/Libraries/Components/Switch/Switch.js +3 -3
  62. package/Libraries/Components/Switch/Switch.windows.js +3 -3
  63. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
  64. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  65. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
  66. package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
  67. package/Libraries/Components/TextInput/TextInput.flow.windows.js +23 -22
  68. package/Libraries/Components/TextInput/TextInput.js +8 -4
  69. package/Libraries/Components/TextInput/TextInput.windows.js +3 -4
  70. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +33 -48
  71. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  72. package/Libraries/Components/Touchable/Touchable.js +2 -2
  73. package/Libraries/Components/Touchable/Touchable.windows.js +2 -2
  74. package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
  75. package/Libraries/Components/Touchable/TouchableBounce.windows.js +4 -4
  76. package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
  77. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -9
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
  79. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +7 -7
  80. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
  81. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -4
  82. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
  83. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -1
  84. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  85. package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
  86. package/Libraries/Components/View/View.windows.js +1 -1
  87. package/Libraries/Components/View/ViewAccessibility.js +7 -7
  88. package/Libraries/Components/View/ViewAccessibility.windows.js +7 -7
  89. package/Libraries/Components/View/ViewPropTypes.js +14 -14
  90. package/Libraries/Components/View/ViewPropTypes.windows.js +18 -16
  91. package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
  92. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  93. package/Libraries/Core/ExceptionsManager.js +2 -2
  94. package/Libraries/Core/ExtendedError.js +3 -3
  95. package/Libraries/Core/RawEventEmitter.js +1 -1
  96. package/Libraries/Core/ReactNativeVersion.js +2 -2
  97. package/Libraries/Core/Timers/JSTimers.js +3 -2
  98. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  99. package/Libraries/Core/setUpErrorHandling.js +4 -2
  100. package/Libraries/Core/setUpReactDevTools.js +23 -6
  101. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  102. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  103. package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
  104. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
  105. package/Libraries/Image/AssetSourceResolver.js +1 -1
  106. package/Libraries/Image/AssetSourceResolver.windows.js +1 -1
  107. package/Libraries/Image/Image.android.js +172 -306
  108. package/Libraries/Image/ImageProps.js +9 -11
  109. package/Libraries/Image/ImageSource.js +2 -2
  110. package/Libraries/Image/ImageSourceUtils.js +8 -4
  111. package/Libraries/Image/ImageTypes.flow.js +2 -2
  112. package/Libraries/Image/ImageViewNativeComponent.js +7 -16
  113. package/Libraries/Image/nativeImageSource.js +1 -1
  114. package/Libraries/Interaction/InteractionManager.js +5 -4
  115. package/Libraries/Interaction/PanResponder.js +1 -1
  116. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  117. package/Libraries/Linking/Linking.js +1 -1
  118. package/Libraries/Lists/FlatList.js +3 -3
  119. package/Libraries/Lists/SectionList.js +1 -1
  120. package/Libraries/Lists/SectionListModern.js +2 -2
  121. package/Libraries/LogBox/Data/LogBoxData.js +38 -24
  122. package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
  123. package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
  124. package/Libraries/LogBox/LogBox.js +42 -19
  125. package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
  126. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  127. package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
  128. package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
  129. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
  130. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -9
  131. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
  132. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  134. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  135. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
  136. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
  137. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
  138. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +15 -16
  139. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  140. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
  141. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
  142. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +3 -5
  143. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
  144. package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
  145. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  146. package/Libraries/Modal/Modal.d.ts +4 -0
  147. package/Libraries/Modal/Modal.js +3 -3
  148. package/Libraries/Modal/Modal.windows.js +7 -3
  149. package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
  150. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
  151. package/Libraries/NativeComponent/BaseViewConfig.windows.js +26 -17
  152. package/Libraries/Network/RCTNetworking.android.js +1 -1
  153. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  154. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  155. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  156. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
  157. package/Libraries/Network/XMLHttpRequest.js +1 -1
  158. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  159. package/Libraries/Pressability/Pressability.js +5 -5
  160. package/Libraries/Pressability/Pressability.windows.js +5 -5
  161. package/Libraries/Pressability/PressabilityDebug.js +1 -1
  162. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  163. package/Libraries/Pressability/usePressability.js +3 -14
  164. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  165. package/Libraries/ReactNative/AppContainer-dev.js +18 -1
  166. package/Libraries/ReactNative/AppContainer.js +1 -1
  167. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  168. package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
  169. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  170. package/Libraries/ReactNative/RendererImplementation.js +4 -4
  171. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  172. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
  173. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
  174. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
  175. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  176. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  177. package/Libraries/Renderer/shims/ReactNative.js +3 -2
  178. package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
  179. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +1 -3
  180. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  181. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  182. package/Libraries/StyleSheet/PointPropType.js +1 -1
  183. package/Libraries/StyleSheet/Rect.js +1 -1
  184. package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
  185. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  186. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  187. package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
  188. package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
  189. package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
  190. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
  191. package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
  192. package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
  193. package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
  194. package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
  195. package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
  196. package/Libraries/StyleSheet/processBoxShadow.js +44 -4
  197. package/Libraries/StyleSheet/processColorArray.js +2 -2
  198. package/Libraries/StyleSheet/processFilter.js +2 -2
  199. package/Libraries/Text/Text.js +295 -627
  200. package/Libraries/Text/Text.windows.js +342 -717
  201. package/Libraries/Text/TextNativeComponent.js +14 -7
  202. package/Libraries/Text/TextProps.js +4 -4
  203. package/Libraries/Text/TextProps.windows.js +4 -4
  204. package/Libraries/Types/CodegenTypes.js +1 -1
  205. package/Libraries/Types/CoreEventTypes.js +21 -21
  206. package/Libraries/Types/CoreEventTypes.windows.js +21 -21
  207. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  208. package/Libraries/Utilities/Appearance.js +6 -1
  209. package/Libraries/Utilities/Dimensions.js +1 -1
  210. package/Libraries/Utilities/HMRClient.js +32 -5
  211. package/Libraries/Utilities/IPerformanceLogger.js +4 -4
  212. package/Libraries/Utilities/codegenNativeCommands.js +4 -4
  213. package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
  214. package/Libraries/Utilities/codegenNativeComponent.js +2 -2
  215. package/Libraries/Utilities/logError.js +1 -1
  216. package/Libraries/Utilities/stringifySafe.js +3 -3
  217. package/Libraries/Utilities/useMergeRefs.js +2 -2
  218. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  219. package/Libraries/vendor/emitter/EventEmitter.js +16 -20
  220. package/Microsoft.ReactNative/CallInvoker.cpp +14 -4
  221. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
  222. package/Microsoft.ReactNative/Fabric/AbiPortalShadowNode.cpp +2 -2
  223. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
  224. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +73 -97
  225. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +4 -1
  226. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -1
  227. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +5 -0
  228. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +94 -26
  229. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +11 -0
  230. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +135 -18
  231. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +10 -0
  232. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +7 -2
  233. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +2 -0
  234. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +63 -15
  235. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +9 -5
  236. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +28 -6
  237. package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +1 -1
  238. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
  239. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -1
  240. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +80 -0
  241. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.h +17 -0
  242. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -0
  243. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -0
  244. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +3 -0
  245. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -3
  246. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +3 -8
  247. package/Microsoft.ReactNative/IReactPackageBuilder.idl +6 -0
  248. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +4 -63
  249. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -26
  250. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -1
  251. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -17
  252. package/Microsoft.ReactNative/Modules/AppStateModule.h +0 -4
  253. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -2
  254. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +16 -15
  255. package/Microsoft.ReactNative/Modules/AppearanceModule.h +5 -1
  256. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -7
  257. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +0 -1
  258. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +4 -4
  259. package/Microsoft.ReactNative/QuirkSettings.cpp +0 -133
  260. package/Microsoft.ReactNative/QuirkSettings.h +0 -43
  261. package/Microsoft.ReactNative/QuirkSettings.idl +0 -41
  262. package/Microsoft.ReactNative/ReactHost/CrashManager.cpp +0 -4
  263. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -2
  264. package/Microsoft.ReactNative/ReactHost/React.h +0 -5
  265. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -1
  266. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +3 -26
  267. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -5
  268. package/Microsoft.ReactNative/ReactHost/React_Win.h +0 -2
  269. package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +3 -0
  270. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +7 -0
  271. package/Microsoft.ReactNative/ReactPackageBuilder.h +1 -0
  272. package/Microsoft.ReactNative/RedBox.cpp +0 -9
  273. package/Microsoft.ReactNative/RedBoxHandler.cpp +0 -4
  274. package/Microsoft.ReactNative/TurboModulesProvider.cpp +5 -10
  275. package/Microsoft.ReactNative/TurboModulesProvider.h +2 -0
  276. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +33 -25
  277. package/Microsoft.ReactNative/Utils/LocalBundleReader.h +5 -3
  278. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  279. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -7
  280. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +0 -22
  281. package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +8 -2
  282. package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +36 -20
  283. package/Microsoft.ReactNative.Cxx/NamespaceRedirect.h +0 -3
  284. package/Microsoft.ReactNative.Cxx/NativeModules.h +8 -2
  285. package/Microsoft.ReactNative.Cxx/XamlUtils.h +0 -9
  286. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +3 -3
  287. package/Microsoft.ReactNative.Managed/ReactContext.cs +0 -9
  288. package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +10 -10
  289. package/Microsoft.ReactNative.Managed.CodeGen/Properties/PublishProfiles/DeployAsTool-Debug.pubxml +1 -1
  290. package/Microsoft.ReactNative.Managed.CodeGen/Properties/PublishProfiles/DeployAsTool-Release.pubxml +1 -1
  291. package/PropertySheets/Autolink.props +1 -1
  292. package/PropertySheets/Bundle.props +1 -1
  293. package/PropertySheets/Codegen.props +1 -1
  294. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  295. package/PropertySheets/JSEngine.props +1 -1
  296. package/PropertySheets/NuGet.LockFile.props +8 -0
  297. package/PropertySheets/React.Cpp.props +8 -7
  298. package/PropertySheets/ReactNativeArchitecture.props +6 -24
  299. package/PropertySheets/WinUI.props +2 -2
  300. package/ReactCommon/ReactCommon.vcxproj +5 -6
  301. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1 -1
  302. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +15 -4
  303. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +13 -0
  304. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/defaults/DefaultTurboModules.cpp +69 -0
  305. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp +717 -0
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +10 -10
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +2 -21
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +151 -0
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +50 -0
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBuffer.cpp +178 -0
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +69 -39
  312. package/Scripts/JustMyXaml.ps1 +8 -8
  313. package/Scripts/OfficeReact.Win32.nuspec +0 -1
  314. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -39
  315. package/Scripts/UnitTest.ps1 +3 -1
  316. package/Scripts/creaternwapp.cmd +1 -9
  317. package/Scripts/creaternwlib.cmd +4 -24
  318. package/Scripts/rnw-dependencies.ps1 +15 -16
  319. package/Shared/DevSettings.h +0 -3
  320. package/Shared/DevSupportManager.cpp +55 -48
  321. package/Shared/DevSupportManager.h +0 -1
  322. package/Shared/Modules/IWebSocketModuleContentHandler.h +15 -0
  323. package/Shared/Modules/WebSocketModule.cpp +8 -3
  324. package/Shared/Networking/DefaultBlobResource.cpp +37 -0
  325. package/Shared/Networking/DefaultBlobResource.h +12 -0
  326. package/Shared/Networking/WinRTWebSocketResource.cpp +23 -408
  327. package/Shared/Networking/WinRTWebSocketResource.h +8 -120
  328. package/Shared/Shared.vcxitems +63 -38
  329. package/Shared/Shared.vcxitems.filters +54 -0
  330. package/Shared/Utils.cpp +0 -88
  331. package/Shared/Utils.h +0 -14
  332. package/Shared/WebSocketResourceFactory.cpp +28 -0
  333. package/Shared/tracing/fbsystrace.h +1 -0
  334. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +172 -160
  335. package/codegen/react/components/rnwcore/ModalHostView.g.h +8 -0
  336. package/codegen/react/components/rnwcore/Props.cpp +17 -7
  337. package/codegen/react/components/rnwcore/Props.h +3 -1
  338. package/codegen/react/components/rnwcore/VirtualViewExperimental.g.h +4 -4
  339. package/codegen/rnwcoreJSI.h +93 -77
  340. package/index.js +9 -0
  341. package/index.windows.js +9 -0
  342. package/jest/RefreshControlMock.js +2 -2
  343. package/jest/assetFileTransformer.js +8 -3
  344. package/jest/mockComponent.js +3 -4
  345. package/jest/mockNativeComponent.js +1 -1
  346. package/jest/mocks/ActivityIndicator.js +2 -2
  347. package/jest/mocks/Image.js +2 -2
  348. package/jest/mocks/Modal.js +2 -2
  349. package/jest/mocks/RefreshControl.js +3 -3
  350. package/jest/mocks/RendererProxy.js +2 -2
  351. package/jest/mocks/ScrollView.js +5 -5
  352. package/jest/mocks/Text.js +2 -2
  353. package/jest/mocks/TextInput.js +2 -2
  354. package/jest/mocks/View.js +2 -2
  355. package/jest/mocks/ViewNativeComponent.js +1 -1
  356. package/jest/mocks/requireNativeComponent.js +1 -1
  357. package/jest/mocks/useColorScheme.js +1 -1
  358. package/jest/setup.js +68 -31
  359. package/just-task.js +13 -2
  360. package/package.json +25 -20
  361. package/src/private/animated/NativeAnimatedHelper.js +2 -2
  362. package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
  363. package/src/private/components/virtualview/VirtualView.js +14 -21
  364. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
  365. package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
  366. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
  367. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
  368. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
  369. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  370. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
  371. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
  372. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
  373. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
  374. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  375. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  376. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
  377. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
  378. package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
  379. package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
  380. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
  381. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
  382. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
  383. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  384. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  385. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  386. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  387. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  388. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  389. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
  390. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
  391. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  392. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
  393. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +7 -3
  394. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  395. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  396. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  397. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  398. package/src/private/styles/composeStyles.js +1 -1
  399. package/src/private/utilities/toError.js +27 -0
  400. package/src/private/utilities/toExtendedError.js +30 -0
  401. package/src/private/webapis/dom/events/Event.js +1 -1
  402. package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
  403. package/src/private/webapis/dom/events/EventTarget.js +3 -3
  404. package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
  405. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  406. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
  407. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
  408. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  409. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  410. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  411. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
  412. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
  413. package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
  414. package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
  415. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  416. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
  417. package/src/private/webapis/performance/LongTasks.js +3 -3
  418. package/src/private/webapis/performance/Performance.js +4 -4
  419. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  420. package/src/private/webapis/performance/PerformanceObserver.js +2 -2
  421. package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
  422. package/src/private/webapis/structuredClone/structuredClone.js +2 -2
  423. package/src/types/globals.d.ts +4 -4
  424. package/template/cpp-lib/proj/MyLib.sln +0 -33
  425. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  426. package/template/cs-lib/proj/MyLib.sln +0 -33
  427. package/template/metro.config.js +12 -2
  428. package/templates/cpp-app/metro.config.js +12 -2
  429. package/templates/cpp-app/windows/MyApp/MyApp.cpp +9 -6
  430. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +2 -2
  431. package/templates/cpp-app/windows/MyApp.sln +0 -33
  432. package/templates/cpp-lib/example/metro.config.js +12 -2
  433. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +2 -2
  434. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  435. package/types/index.d.ts +2 -0
  436. package/Folly/.clang-format +0 -2
  437. package/Folly/Folly.natvis +0 -25
  438. package/Folly/Folly.vcxproj +0 -378
  439. package/Folly/Folly.vcxproj.filters +0 -558
  440. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +0 -978
  441. package/Folly/TEMP_UntilFollyUpdate/Conv.cpp +0 -1205
  442. package/Folly/TEMP_UntilFollyUpdate/chrono/Hardware.h +0 -155
  443. package/Folly/TEMP_UntilFollyUpdate/concurrency/CacheLocality.cpp +0 -633
  444. package/Folly/TEMP_UntilFollyUpdate/json/dynamic-inl.h +0 -1438
  445. package/Folly/TEMP_UntilFollyUpdate/json/json.cpp +0 -1118
  446. package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +0 -188
  447. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +0 -348
  448. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +0 -182
  449. package/Folly/TEMP_UntilFollyUpdate/portability/Unistd.cpp +0 -33
  450. package/Folly/cgmanifest.json +0 -25
  451. package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
  452. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +0 -64
  453. package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
  454. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +0 -75
  455. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +0 -27
  456. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +0 -81
  457. package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -24
  458. package/Microsoft.ReactNative/ReactSupport.cpp +0 -221
  459. package/Microsoft.ReactNative/ReactSupport.h +0 -13
  460. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.cpp +0 -107
  461. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +0 -62
  462. package/Microsoft.ReactNative/Utils/UwpScriptStore.cpp +0 -56
  463. package/Microsoft.ReactNative/Utils/UwpScriptStore.h +0 -22
  464. package/Microsoft.ReactNative/XamlUIService.cpp +0 -68
  465. package/Microsoft.ReactNative/XamlUIService.h +0 -37
  466. package/Microsoft.ReactNative/XamlUIService.idl +0 -53
  467. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +0 -259
  468. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/Instance.cpp +0 -381
  469. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +0 -145
  470. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/MethodCall.cpp +0 -100
  471. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ModuleRegistry.cpp +0 -256
  472. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +0 -363
  473. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/RAMBundleRegistry.cpp +0 -93
  474. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -148
  475. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +0 -190
  476. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSINativeModules.cpp +0 -123
  477. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +0 -27
  478. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/webperformance/NativePerformance.cpp +0 -414
  479. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +0 -91
  480. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -80
  481. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +0 -138
  482. package/fmt/.clang-format +0 -2
  483. package/fmt/cgmanifest.json +0 -15
  484. package/fmt/fmt.vcxproj +0 -153
  485. package/fmt/fmt.vcxproj.filters +0 -59
  486. package/fmt/pch.cpp +0 -4
  487. package/fmt/pch.h +0 -2
@@ -1,259 +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 "CxxNativeModule.h"
9
-
10
- #ifndef RCT_REMOVE_LEGACY_ARCH
11
-
12
- #include "Instance.h"
13
-
14
- #include <folly/json.h>
15
- #include <glog/logging.h>
16
- #include <iterator>
17
-
18
- #include "JsArgumentHelpers.h"
19
- #include "MessageQueueThread.h"
20
- #include "TraceSection.h"
21
-
22
- #include <logger/react_native_log.h>
23
-
24
- using facebook::xplat::module::CxxModule;
25
- namespace facebook::react {
26
-
27
- std::function<void(folly::dynamic)> makeCallback(
28
- std::weak_ptr<Instance> instance,
29
- const folly::dynamic& callbackId) {
30
- if (!callbackId.isNumber()) {
31
- throw std::invalid_argument("Expected callback(s) as final argument");
32
- }
33
-
34
- auto id = callbackId.asInt();
35
- return [winstance = std::move(instance), id](folly::dynamic args) {
36
- if (auto instance = winstance.lock()) {
37
- instance->callJSCallback(id, std::move(args));
38
- }
39
- };
40
- }
41
-
42
- namespace {
43
-
44
- /**
45
- * CxxModule::Callback accepts a vector<dynamic>, makeCallback returns
46
- * a callback that accepts a dynamic, adapt the second into the first.
47
- * TODO: Callback types should be made equal (preferably
48
- * function<void(dynamic)>) to avoid the extra copy and indirect call.
49
- */
50
- CxxModule::Callback convertCallback(
51
- std::function<void(folly::dynamic)> callback) {
52
- return [callback = std::move(callback)](std::vector<folly::dynamic> args) {
53
- // after unpinning folly, can use folly::dynamic::array_range
54
- folly::dynamic obj = folly::dynamic::array;
55
- for (auto& arg : args) {
56
- obj.push_back(std::move(arg));
57
- }
58
- callback(std::move(obj));
59
- };
60
- }
61
-
62
- } // namespace
63
-
64
- bool CxxNativeModule::shouldWarnOnUse_ = false;
65
-
66
- void CxxNativeModule::setShouldWarnOnUse(bool value) {
67
- shouldWarnOnUse_ = value;
68
- }
69
-
70
- void CxxNativeModule::emitWarnIfWarnOnUsage(
71
- const std::string& method_name,
72
- const std::string& module_name) {
73
- if (shouldWarnOnUse_) {
74
- std::string message = "Calling " + method_name +
75
- " on Cxx NativeModule (name = \"" + module_name + "\").";
76
- react_native_log_warn(message.c_str());
77
- }
78
- }
79
-
80
- std::string CxxNativeModule::getName() {
81
- return name_;
82
- }
83
-
84
- std::string CxxNativeModule::getSyncMethodName(unsigned int reactMethodId) {
85
- if (reactMethodId >= methods_.size()) {
86
- throw std::invalid_argument(
87
- "methodId " + std::to_string(reactMethodId) + " out of range [0.." +
88
- std::to_string(methods_.size()) + "]");
89
- }
90
- return methods_[reactMethodId].name;
91
- }
92
-
93
- std::vector<MethodDescriptor> CxxNativeModule::getMethods() {
94
- lazyInit();
95
-
96
- std::vector<MethodDescriptor> descs;
97
- descs.reserve(methods_.size());
98
- for (auto& method : methods_) {
99
- descs.emplace_back(method.name, method.getType());
100
- }
101
- return descs;
102
- }
103
-
104
- folly::dynamic CxxNativeModule::getConstants() {
105
- lazyInit();
106
-
107
- if (!module_) {
108
- return nullptr;
109
- }
110
-
111
- emitWarnIfWarnOnUsage("getConstants()", getName());
112
-
113
- folly::dynamic constants = folly::dynamic::object();
114
- for (auto& pair : module_->getConstants()) {
115
- constants.insert(std::move(pair.first), std::move(pair.second));
116
- }
117
- return constants;
118
- }
119
-
120
- void CxxNativeModule::invoke(
121
- unsigned int reactMethodId,
122
- folly::dynamic&& params,
123
- int callId) {
124
- if (reactMethodId >= methods_.size()) {
125
- throw std::invalid_argument(
126
- "methodId " + std::to_string(reactMethodId) + " out of range [0.." +
127
- std::to_string(methods_.size()) + "]");
128
- }
129
- if (!params.isArray()) {
130
- throw std::invalid_argument(
131
- std::string("Method parameters should be array, but are ") +
132
- params.typeName());
133
- }
134
-
135
- CxxModule::Callback first;
136
- CxxModule::Callback second;
137
-
138
- const auto& method = methods_[reactMethodId];
139
-
140
- if (!method.func) {
141
- throw std::runtime_error(
142
- "Method " + method.name + " is synchronous but invoked asynchronously");
143
- }
144
-
145
- emitWarnIfWarnOnUsage(method.name, getName());
146
-
147
- if (params.size() < method.callbacks) {
148
- throw std::invalid_argument(
149
- "Expected " + std::to_string(method.callbacks) +
150
- " callbacks, but only " + std::to_string(params.size()) +
151
- " parameters provided");
152
- }
153
-
154
- if (method.callbacks == 1) {
155
- first = convertCallback(makeCallback(instance_, params[params.size() - 1]));
156
- } else if (method.callbacks == 2) {
157
- first = convertCallback(makeCallback(instance_, params[params.size() - 2]));
158
- second =
159
- convertCallback(makeCallback(instance_, params[params.size() - 1]));
160
- }
161
-
162
- params.resize(params.size() - method.callbacks);
163
-
164
- // I've got a few flawed options here. I can let the C++ exception
165
- // propagate, and the registry will log/convert them to java exceptions.
166
- // This lets all the java and red box handling work ok, but the only info I
167
- // can capture about the C++ exception is the what() string, not the stack.
168
- // I can std::terminate() the app. This causes the full, accurate C++
169
- // stack trace to be added to logcat by debuggerd. The java state is lost,
170
- // but in practice, the java stack is always the same in this case since
171
- // the javascript stack is not visible, and the crash is unfriendly to js
172
- // developers, but crucial to C++ developers. The what() value is also
173
- // lost. Finally, I can catch, log the java stack, then rethrow the C++
174
- // exception. In this case I get java and C++ stack data, but the C++
175
- // stack is as of the rethrow, not the original throw, both the C++ and
176
- // java stacks always look the same.
177
- //
178
- // I am going with option 2, since that seems like the most useful
179
- // choice. It would be nice to be able to get what() and the C++
180
- // stack. I'm told that will be possible in the future. TODO
181
- // mhorowitz #7128529: convert C++ exceptions to Java
182
-
183
- const auto& moduleName = name_;
184
- TraceSection s(
185
- "CxxMethodCallQueue", "module", moduleName, "method", method.name);
186
- messageQueueThread_->runOnQueue([method,
187
- moduleName,
188
- params = std::move(params),
189
- first,
190
- second,
191
- callId]() {
192
- #ifdef WITH_FBSYSTRACE
193
- if (callId != -1) {
194
- //fbsystrace_end_async_flow(TRACE_TAG_REACT, "native", callId);
195
- fbsystrace_end_async_flow(TRACE_TAG_REACT_CXX_BRIDGE, "native", callId); // [Windows] [issue #14819]
196
- }
197
- #else
198
- (void)(callId);
199
- #endif
200
- TraceSection s(
201
- "CxxMethodCallDispatch", "module", moduleName, "method", method.name);
202
- try {
203
- method.func(params, first, second);
204
- } catch (const facebook::xplat::JsArgumentException&) {
205
- throw;
206
- } catch (std::exception& e) {
207
- LOG(ERROR) << "std::exception. Method call " << method.name.c_str()
208
- << " failed: " << e.what();
209
- std::terminate();
210
- } catch (std::string& error) {
211
- LOG(ERROR) << "std::string. Method call " << method.name.c_str()
212
- << " failed: " << error.c_str();
213
- std::terminate();
214
- } catch (...) {
215
- LOG(ERROR) << "Method call " << method.name.c_str()
216
- << " failed. unknown error";
217
- std::terminate();
218
- }
219
- });
220
- }
221
-
222
- MethodCallResult CxxNativeModule::callSerializableNativeHook(
223
- unsigned int hookId,
224
- folly::dynamic&& args) {
225
- if (hookId >= methods_.size()) {
226
- throw std::invalid_argument(
227
- "methodId " + std::to_string(hookId) + " out of range [0.." +
228
- std::to_string(methods_.size()) + "]");
229
- }
230
-
231
- const auto& method = methods_[hookId];
232
-
233
- if (!method.syncFunc) {
234
- throw std::runtime_error(
235
- "Method " + method.name + " is asynchronous but invoked synchronously");
236
- }
237
-
238
- emitWarnIfWarnOnUsage(method.name, getName());
239
-
240
- return method.syncFunc(std::move(args));
241
- }
242
-
243
- void CxxNativeModule::lazyInit() {
244
- if (module_ || !provider_) {
245
- return;
246
- }
247
-
248
- // TODO 17216751: providers should never return null modules
249
- module_ = provider_();
250
- provider_ = nullptr;
251
- if (module_) {
252
- module_->setInstance(instance_);
253
- methods_ = module_->getMethods();
254
- }
255
- }
256
-
257
- } // namespace facebook::react
258
-
259
- #endif // RCT_REMOVE_LEGACY_ARCH
@@ -1,381 +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
-
9
- #if _MSC_VER
10
- #pragma warning(push)
11
- #pragma warning(disable : 4996) // deprecated APIs
12
- #endif
13
- #include "Instance.h"
14
-
15
- #ifndef RCT_REMOVE_LEGACY_ARCH
16
-
17
- #include "ErrorUtils.h"
18
- #include "JSBigString.h"
19
- #include "JSBundleType.h"
20
- #include "JSExecutor.h"
21
- #include "MessageQueueThread.h"
22
- #include "MethodCall.h"
23
- #include "NativeToJsBridge.h"
24
- #include "RAMBundleRegistry.h"
25
- #include "RecoverableError.h"
26
- #include "TraceSection.h"
27
-
28
- #include <cxxreact/JSIndexedRAMBundle.h>
29
- #include <folly/json.h>
30
- #include <react/debug/react_native_assert.h>
31
-
32
- #include <glog/logging.h>
33
-
34
- #include <condition_variable>
35
- #include <exception>
36
- #include <memory>
37
- #include <mutex>
38
- #include <string>
39
-
40
- namespace facebook::react {
41
-
42
- Instance::~Instance() {
43
- if (nativeToJsBridge_) {
44
- nativeToJsBridge_->destroy();
45
- }
46
- }
47
-
48
- void Instance::unregisterFromInspector() {
49
- if (inspectorTarget_ != nullptr) {
50
- assert(runtimeInspectorTarget_);
51
- inspectorTarget_->unregisterRuntime(*runtimeInspectorTarget_);
52
- assert(parentInspectorTarget_);
53
- parentInspectorTarget_->unregisterInstance(*inspectorTarget_);
54
- parentInspectorTarget_ = nullptr;
55
- inspectorTarget_ = nullptr;
56
- }
57
- }
58
-
59
- void Instance::initializeBridge(
60
- std::unique_ptr<InstanceCallback> callback,
61
- std::shared_ptr<JSExecutorFactory> jsef,
62
- std::shared_ptr<MessageQueueThread> jsQueue,
63
- std::shared_ptr<ModuleRegistry> moduleRegistry,
64
- jsinspector_modern::HostTarget* parentInspectorTarget) {
65
- callback_ = std::move(callback);
66
- moduleRegistry_ = std::move(moduleRegistry);
67
- parentInspectorTarget_ = parentInspectorTarget;
68
-
69
- jsQueue->runOnQueueSync([this, &jsef, jsQueue]() mutable {
70
- nativeToJsBridge_ = std::make_shared<NativeToJsBridge>(
71
- jsef.get(), moduleRegistry_, jsQueue, callback_);
72
-
73
- // If a parent inspector HostTarget is provided, perform inspector
74
- // initialization synchronously.
75
- if (parentInspectorTarget_ != nullptr) {
76
- auto inspectorExecutor = parentInspectorTarget_->executorFromThis();
77
- std::mutex inspectorInitializedMutex;
78
- std::condition_variable inspectorInitializedCv;
79
- bool inspectorInitialized = false;
80
-
81
- // Schedule work on the inspector thread. NOTE: We expect this callback
82
- // to always execute, given the invariant that `initializeBridge` (this
83
- // method) completes before `unregisterFromInspector` is called.
84
- // - On iOS, instance creation and invalidation both run on the main
85
- // queue (`RCTCxxBridge::start,invalidate` use `RCTAssertMainQueue`).
86
- // - On Android, `ReactContext` must be initialized with a constructed
87
- // `CatalystInstance` (in which `Instance::initializeBridge` has
88
- // completed) before `destroy` can be called.
89
- inspectorExecutor([this,
90
- &inspectorInitialized,
91
- &inspectorInitializedMutex,
92
- &inspectorInitializedCv](
93
- jsinspector_modern::HostTarget& hostTarget) {
94
- // NOTE: By passing *this, we strongly assume the Instance will still
95
- // be alive by the time this executes.
96
- // - On iOS, instance creation is done synchronously
97
- // (`RCTCxxBridge::_initializeBridgeLocked`).
98
- // - On Android, we explicitly wait for instance creation before
99
- // destruction (`ReactInstanceManager::mReactContextLock`).
100
- inspectorTarget_ = &hostTarget.registerInstance(*this);
101
- RuntimeExecutor runtimeExecutorIfJsi = getRuntimeExecutor();
102
- runtimeInspectorTarget_ = &inspectorTarget_->registerRuntime(
103
- nativeToJsBridge_->getInspectorTargetDelegate(),
104
- runtimeExecutorIfJsi ? runtimeExecutorIfJsi : [](auto) {});
105
-
106
- // Signal that initialization is complete
107
- {
108
- std::lock_guard lock(inspectorInitializedMutex);
109
- inspectorInitialized = true;
110
- }
111
- inspectorInitializedCv.notify_one();
112
- });
113
-
114
- // Wait for the initialization work to complete
115
- {
116
- std::unique_lock lock(inspectorInitializedMutex);
117
- inspectorInitializedCv.wait(
118
- lock, [&inspectorInitialized] { return inspectorInitialized; });
119
- }
120
- }
121
-
122
- // Initialize the JavaScript runtime after we've initialized the inspector
123
- nativeToJsBridge_->initializeRuntime();
124
-
125
- // After NativeToJsBridge is created, the jsi::Runtime should exist. Also,
126
- // the JS message queue thread exists. So, it's safe to schedule all queued
127
- // up JS calls.
128
- jsCallInvoker_->setNativeToJsBridgeAndFlushCalls(nativeToJsBridge_);
129
-
130
- std::scoped_lock lock(m_syncMutex);
131
- m_syncReady = true;
132
- m_syncCV.notify_all();
133
- });
134
-
135
- CHECK(nativeToJsBridge_);
136
- }
137
-
138
- void Instance::loadBundle(
139
- std::unique_ptr<RAMBundleRegistry> bundleRegistry,
140
- std::unique_ptr<const JSBigString> startupScript,
141
- std::string sourceURL) {
142
- callback_->incrementPendingJSCalls();
143
- TraceSection s("Instance::loadBundle", "sourceURL", sourceURL);
144
- nativeToJsBridge_->loadBundle(
145
- std::move(bundleRegistry),
146
- std::move(startupScript),
147
- std::move(sourceURL));
148
- }
149
-
150
- void Instance::loadBundleSync(
151
- std::unique_ptr<RAMBundleRegistry> bundleRegistry,
152
- std::unique_ptr<const JSBigString> startupScript,
153
- std::string sourceURL) {
154
- std::unique_lock<std::mutex> lock(m_syncMutex);
155
- m_syncCV.wait(lock, [this] { return m_syncReady; });
156
-
157
- TraceSection s("Instance::loadBundleSync", "sourceURL", sourceURL);
158
- nativeToJsBridge_->loadBundleSync(
159
- std::move(bundleRegistry),
160
- std::move(startupScript),
161
- std::move(sourceURL));
162
- }
163
-
164
- void Instance::setSourceURL(std::string sourceURL) {
165
- callback_->incrementPendingJSCalls();
166
- TraceSection s("Instance::setSourceURL", "sourceURL", sourceURL);
167
-
168
- nativeToJsBridge_->loadBundle(nullptr, nullptr, std::move(sourceURL));
169
- }
170
-
171
- void Instance::loadScriptFromString(
172
- std::unique_ptr<const JSBigString> string,
173
- std::string sourceURL,
174
- bool loadSynchronously) {
175
- TraceSection s("Instance::loadScriptFromString", "sourceURL", sourceURL);
176
- if (loadSynchronously) {
177
- loadBundleSync(nullptr, std::move(string), std::move(sourceURL));
178
- } else {
179
- loadBundle(nullptr, std::move(string), std::move(sourceURL));
180
- }
181
- }
182
-
183
- void Instance::loadRAMBundleFromString(
184
- std::unique_ptr<const JSBigString> script,
185
- const std::string& sourceURL) {
186
- auto bundle = std::make_unique<JSIndexedRAMBundle>(std::move(script));
187
- auto startupScript = bundle->getStartupCode();
188
- auto registry = RAMBundleRegistry::singleBundleRegistry(std::move(bundle));
189
- loadRAMBundle(std::move(registry), std::move(startupScript), sourceURL, true);
190
- }
191
-
192
- void Instance::loadRAMBundleFromFile(
193
- const std::string& sourcePath,
194
- const std::string& sourceURL,
195
- bool loadSynchronously) {
196
- auto bundle = std::make_unique<JSIndexedRAMBundle>(sourcePath.c_str());
197
- auto startupScript = bundle->getStartupCode();
198
- auto registry = RAMBundleRegistry::multipleBundlesRegistry(
199
- std::move(bundle), JSIndexedRAMBundle::buildFactory());
200
- loadRAMBundle(
201
- std::move(registry),
202
- std::move(startupScript),
203
- sourceURL,
204
- loadSynchronously);
205
- }
206
-
207
- void Instance::loadRAMBundle(
208
- std::unique_ptr<RAMBundleRegistry> bundleRegistry,
209
- std::unique_ptr<const JSBigString> startupScript,
210
- std::string startupScriptSourceURL,
211
- bool loadSynchronously) {
212
- if (loadSynchronously) {
213
- loadBundleSync(
214
- std::move(bundleRegistry),
215
- std::move(startupScript),
216
- std::move(startupScriptSourceURL));
217
- } else {
218
- loadBundle(
219
- std::move(bundleRegistry),
220
- std::move(startupScript),
221
- std::move(startupScriptSourceURL));
222
- }
223
- }
224
-
225
- void Instance::setGlobalVariable(
226
- std::string propName,
227
- std::unique_ptr<const JSBigString> jsonValue) {
228
- nativeToJsBridge_->setGlobalVariable(
229
- std::move(propName), std::move(jsonValue));
230
- }
231
-
232
- void* Instance::getJavaScriptContext() {
233
- return nativeToJsBridge_ ? nativeToJsBridge_->getJavaScriptContext()
234
- : nullptr;
235
- }
236
-
237
- bool Instance::isInspectable() {
238
- return nativeToJsBridge_ ? nativeToJsBridge_->isInspectable() : false;
239
- }
240
-
241
- bool Instance::isBatchActive() {
242
- return nativeToJsBridge_ ? nativeToJsBridge_->isBatchActive() : false;
243
- }
244
-
245
- void Instance::callJSFunction(
246
- std::string&& module,
247
- std::string&& method,
248
- folly::dynamic&& params) {
249
- callback_->incrementPendingJSCalls();
250
- nativeToJsBridge_->callFunction(
251
- std::move(module), std::move(method), std::move(params));
252
- }
253
-
254
- void Instance::callJSCallback(uint64_t callbackId, folly::dynamic&& params) {
255
- TraceSection s("Instance::callJSCallback");
256
- callback_->incrementPendingJSCalls();
257
- nativeToJsBridge_->invokeCallback((double)callbackId, std::move(params));
258
- }
259
-
260
- void Instance::registerBundle(
261
- uint32_t bundleId,
262
- const std::string& bundlePath) {
263
- nativeToJsBridge_->registerBundle(bundleId, bundlePath);
264
- }
265
-
266
- const ModuleRegistry& Instance::getModuleRegistry() const {
267
- return *moduleRegistry_;
268
- }
269
-
270
- ModuleRegistry& Instance::getModuleRegistry() {
271
- return *moduleRegistry_;
272
- }
273
-
274
- void Instance::handleMemoryPressure(int pressureLevel) {
275
- if (nativeToJsBridge_) {
276
- // This class resets `nativeToJsBridge_` only in the destructor,
277
- // hence a race is not possible there.
278
- nativeToJsBridge_->handleMemoryPressure(pressureLevel);
279
- }
280
- }
281
-
282
- std::shared_ptr<CallInvoker> Instance::getJSCallInvoker() {
283
- return std::static_pointer_cast<CallInvoker>(jsCallInvoker_);
284
- }
285
-
286
- RuntimeExecutor Instance::getRuntimeExecutor() {
287
- // HACK: RuntimeExecutor is not compatible with non-JSIExecutor, we return
288
- // a null callback, which the caller should handle.
289
- if (getJavaScriptContext() == nullptr) {
290
- return nullptr;
291
- }
292
-
293
- std::weak_ptr<NativeToJsBridge> weakNativeToJsBridge = nativeToJsBridge_;
294
- return [weakNativeToJsBridge](
295
- std::function<void(jsi::Runtime & runtime)>&& callback) {
296
- if (auto strongNativeToJsBridge = weakNativeToJsBridge.lock()) {
297
- strongNativeToJsBridge->runOnExecutorQueue(
298
- [callback = std::move(callback)](JSExecutor* executor) {
299
- // Assumes the underlying executor is a JSIExecutor
300
- auto* runtime =
301
- static_cast<jsi::Runtime*>(executor->getJavaScriptContext());
302
- try {
303
- react_native_assert(runtime != nullptr);
304
- callback(*runtime);
305
- executor->flush();
306
- } catch (jsi::JSError& originalError) {
307
- handleJSError(*runtime, originalError, true);
308
- }
309
- });
310
- }
311
- };
312
- }
313
-
314
- std::shared_ptr<NativeMethodCallInvoker>
315
- Instance::getDecoratedNativeMethodCallInvoker(
316
- std::shared_ptr<NativeMethodCallInvoker> nativeMethodCallInvoker) {
317
- return nativeToJsBridge_->getDecoratedNativeMethodCallInvoker(
318
- nativeMethodCallInvoker);
319
- }
320
-
321
- void Instance::JSCallInvoker::setNativeToJsBridgeAndFlushCalls(
322
- std::weak_ptr<NativeToJsBridge> nativeToJsBridge) {
323
- std::scoped_lock guard(m_mutex);
324
-
325
- m_shouldBuffer = false;
326
- m_nativeToJsBridge = nativeToJsBridge;
327
- while (!m_workBuffer.empty()) {
328
- scheduleAsync(std::move(m_workBuffer.front()));
329
- m_workBuffer.pop_front();
330
- }
331
- }
332
-
333
- void Instance::JSCallInvoker::invokeSync(CallFunc&& /*work*/) {
334
- // TODO: Replace JS Callinvoker with RuntimeExecutor.
335
- throw std::runtime_error(
336
- "Synchronous native -> JS calls are currently not supported.");
337
- }
338
-
339
- void Instance::JSCallInvoker::invokeAsync(CallFunc&& work) noexcept {
340
- std::scoped_lock guard(m_mutex);
341
-
342
- /**
343
- * Why is is necessary to queue up async work?
344
- *
345
- * 1. TurboModuleManager must be created synchronously after the Instance,
346
- * before we load the source code. This is when the NativeModule system
347
- * is initialized. RCTDevLoadingView shows bundle download progress.
348
- * 2. TurboModuleManager requires a JS CallInvoker.
349
- * 3. The JS CallInvoker requires the NativeToJsBridge, which is created on
350
- * the JS thread in Instance::initializeBridge.
351
- *
352
- * Therefore, although we don't call invokeAsync before the JS bundle is
353
- * executed, this buffering is implemented anyways to ensure that work
354
- * isn't discarded.
355
- */
356
- if (m_shouldBuffer) {
357
- m_workBuffer.push_back(std::move(work));
358
- return;
359
- }
360
-
361
- scheduleAsync(std::move(work));
362
- }
363
-
364
- void Instance::JSCallInvoker::scheduleAsync(CallFunc&& work) noexcept {
365
- if (auto strongNativeToJsBridge = m_nativeToJsBridge.lock()) {
366
- strongNativeToJsBridge->runOnExecutorQueue(
367
- [work = std::move(work)](JSExecutor* executor) {
368
- auto* runtime = (jsi::Runtime*)executor->getJavaScriptContext();
369
- work(*runtime);
370
- executor->flush();
371
- });
372
- }
373
- }
374
-
375
- } // namespace facebook::react
376
-
377
- #endif // RCT_REMOVE_LEGACY_ARCH
378
-
379
- #if _MSC_VER
380
- #pragma warning(pop)
381
- #endif