react-native-windows 0.74.12 → 0.75.0-preview.2

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 (335) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Utilities.cpp +2 -2
  3. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  4. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  5. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  6. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  7. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  8. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  9. package/Libraries/Animated/useAnimatedProps.js +56 -28
  10. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  11. package/Libraries/Components/Button.js +10 -5
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  13. package/Libraries/Components/Flyout/Flyout.js +10 -10
  14. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  15. package/Libraries/Components/Pressable/Pressable.js +13 -6
  16. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  17. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  18. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  19. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  20. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  21. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  22. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  23. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  24. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  25. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  26. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  27. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  28. package/Libraries/Components/TextInput/TextInput.js +14 -70
  29. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  30. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  31. package/Libraries/Components/Touchable/Touchable.js +2 -2
  32. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  33. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  34. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  35. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  36. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  37. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  39. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  40. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  41. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  42. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  43. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  44. package/Libraries/Components/View/View.js +0 -11
  45. package/Libraries/Components/View/View.windows.js +0 -11
  46. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  47. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  48. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  49. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  50. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  51. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  52. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  53. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  54. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  55. package/Libraries/Core/ErrorHandlers.js +116 -0
  56. package/Libraries/Core/ExceptionsManager.js +2 -2
  57. package/Libraries/Core/ReactNativeVersion.js +3 -3
  58. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  59. package/Libraries/Core/setUpPerformance.js +6 -4
  60. package/Libraries/Core/setUpReactDevTools.js +70 -10
  61. package/Libraries/Core/setUpTimers.js +50 -31
  62. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  63. package/Libraries/Image/Image.android.js +23 -13
  64. package/Libraries/Image/Image.d.ts +14 -15
  65. package/Libraries/Image/Image.ios.js +21 -11
  66. package/Libraries/Image/Image.windows.js +21 -11
  67. package/Libraries/Image/ImageProps.js +16 -5
  68. package/Libraries/Image/ImageTypes.flow.js +7 -2
  69. package/Libraries/Image/ImageUtils.js +1 -0
  70. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  71. package/Libraries/Inspector/ElementBox.js +6 -3
  72. package/Libraries/Inspector/ElementProperties.js +1 -1
  73. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  74. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  75. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  76. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  77. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  78. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  79. package/Libraries/LogBox/LogBox.js +29 -12
  80. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  81. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  82. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  83. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  84. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  85. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  86. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  87. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  88. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  89. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  90. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  91. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  92. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  93. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  94. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  95. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  96. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  97. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  98. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  99. package/Libraries/Network/XMLHttpRequest.js +5 -1
  100. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  101. package/Libraries/Pressability/Pressability.js +3 -51
  102. package/Libraries/Pressability/Pressability.windows.js +3 -51
  103. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  104. package/Libraries/ReactNative/AppRegistry.js +2 -4
  105. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  106. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  107. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  108. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  109. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  110. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  111. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  112. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  113. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  114. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  115. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  116. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  117. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  118. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  119. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  120. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  121. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  122. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  123. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  124. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  125. package/Libraries/Share/Share.d.ts +16 -10
  126. package/Libraries/Share/Share.js +14 -15
  127. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  128. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  129. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  130. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  131. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  132. package/Libraries/StyleSheet/processFilter.js +132 -0
  133. package/Libraries/StyleSheet/processTransform.js +18 -3
  134. package/Libraries/Text/Text.js +151 -128
  135. package/Libraries/Text/Text.windows.js +144 -128
  136. package/Libraries/Text/TextNativeComponent.js +5 -4
  137. package/Libraries/Text/TextProps.js +6 -6
  138. package/Libraries/Text/TextProps.windows.js +6 -6
  139. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  140. package/Libraries/Types/CodegenTypes.js +3 -0
  141. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  142. package/Libraries/Utilities/Dimensions.js +1 -0
  143. package/Libraries/Utilities/HMRClient.js +36 -8
  144. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  145. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  146. package/Libraries/Utilities/Platform.android.js +4 -4
  147. package/Libraries/Utilities/RCTLog.js +1 -0
  148. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  149. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  150. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  151. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  152. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  153. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  154. package/Microsoft.ReactNative/Composition.Input.idl +3 -3
  155. package/Microsoft.ReactNative/CompositionSwitcher.idl +0 -1
  156. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  157. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  158. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +0 -3
  159. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +2 -2
  160. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +4 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -10
  162. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -16
  163. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +48 -85
  165. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +0 -4
  166. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +24 -24
  167. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +6 -8
  168. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  169. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  170. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  171. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  172. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +6 -43
  173. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +23 -34
  174. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  175. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  176. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  177. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +17 -48
  178. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -7
  179. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  180. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  184. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  185. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  186. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  187. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  188. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  189. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  190. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  191. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +13 -20
  192. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  193. package/Microsoft.ReactNative/Timer.idl +1 -3
  194. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  195. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  196. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  197. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  198. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  199. package/Microsoft.ReactNative/packages.lock.json +41 -78
  200. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  201. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  202. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  203. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  204. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  205. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  206. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  207. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  208. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +2 -0
  211. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  224. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  225. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  226. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  228. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  229. package/Scripts/rnw-dependencies.ps1 +36 -23
  230. package/Shared/HermesRuntimeHolder.cpp +19 -1
  231. package/Shared/HermesRuntimeHolder.h +8 -1
  232. package/Shared/HermesSamplingProfiler.cpp +1 -2
  233. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  234. package/Shared/OInstance.cpp +1 -2
  235. package/Shared/Shared.vcxitems +21 -15
  236. package/Shared/Shared.vcxitems.filters +8 -3
  237. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  238. package/Shared/Threading/BatchingQueueThread.h +2 -2
  239. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  240. package/codegen/NativeAppStateSpec.g.h +8 -8
  241. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  242. package/codegen/NativeDOMSpec.g.h +136 -0
  243. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  244. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  245. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  246. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  247. package/codegen/NativePerformanceSpec.g.h +35 -7
  248. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  249. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  250. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  251. package/codegen/NativeUIManagerSpec.g.h +5 -17
  252. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  253. package/codegen/react/components/rnwcore/Props.h +16 -12
  254. package/codegen/react/components/rnwcore/States.h +0 -26
  255. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  256. package/codegen/rnwcoreJSI.h +1374 -2867
  257. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  258. package/fmt/fmt.vcxproj +1 -1
  259. package/jest/mockComponent.js +7 -0
  260. package/jest/renderer.js +25 -14
  261. package/jest/setup.js +19 -13
  262. package/package.json +29 -27
  263. package/rn-get-polyfills.js +1 -0
  264. package/src/private/core/composeStyles.js +27 -0
  265. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  266. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  267. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  268. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  269. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  270. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  271. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  272. package/src/private/specs/modules/NativeUIManager.js +0 -7
  273. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  274. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  275. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  276. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  277. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  278. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  279. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  280. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  281. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  283. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  284. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  285. package/src/private/webapis/performance/EventCounts.js +1 -1
  286. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  287. package/src/private/webapis/performance/Performance.js +10 -56
  288. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  289. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  290. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  291. package/src/private/webapis/performance/UserTiming.js +63 -0
  292. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  293. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  294. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  296. package/stubs/glog/logging.h +1 -0
  297. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  298. package/template/cs-lib/proj/MyLib.csproj +1 -1
  299. package/template/metro.config.js +13 -2
  300. package/templates/cpp-app/template.config.js +1 -1
  301. package/templates/cpp-lib/example/metro.config.js +2 -2
  302. package/templates/cpp-lib/template.config.js +1 -1
  303. package/templates/old/generateWrapper.js +4 -1
  304. package/types/modules/globals.d.ts +4 -0
  305. package/Libraries/Lists/FlatList.windows.js +0 -717
  306. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  307. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  308. package/Libraries/Utilities/LoadingView.js +0 -16
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  320. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  321. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  322. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  323. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  324. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  325. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  326. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  329. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  330. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  331. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  332. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  333. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  334. package/template/metro.devMode.config.js +0 -56
  335. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -11,9 +11,8 @@
11
11
  #include <string>
12
12
 
13
13
  #include <jsi/jsi.h>
14
-
15
- #include <ReactCommon/CallInvoker.h>
16
14
  #include <CallbackWrapper.h> // [Windows]
15
+ #include <LongLivedObject.h> // [Windows]
17
16
 
18
17
  namespace facebook::react {
19
18
 
@@ -26,7 +25,6 @@ struct Promise : public LongLivedObject {
26
25
  void resolve(const jsi::Value& result);
27
26
  void reject(const std::string& error);
28
27
 
29
- jsi::Runtime& runtime_;
30
28
  jsi::Function resolve_;
31
29
  jsi::Function reject_;
32
30
  };
@@ -56,4 +54,4 @@ class RAIICallbackWrapperDestroyer {
56
54
  std::weak_ptr<CallbackWrapper> callbackWrapper_;
57
55
  };
58
56
 
59
- } // namespace facebook::react
57
+ } // namespace facebook::react
@@ -111,17 +111,15 @@ ScrollViewProps::ScrollViewProps(
111
111
  // [Windows fix
112
112
  (Float)1)),
113
113
  // Windows]
114
- endDraggingSensitivityVelocityMultiplier(
114
+ enableSyncOnScroll(
115
115
  CoreFeatures::enablePropIteratorSetter
116
- ? sourceProps.endDraggingSensitivityVelocityMultiplier
116
+ ? sourceProps.enableSyncOnScroll
117
117
  : convertRawProp(
118
118
  context,
119
119
  rawProps,
120
- "endDraggingSensitivityVelocityMultiplier",
121
- sourceProps.endDraggingSensitivityVelocityMultiplier,
122
- // [Windows fix
123
- (Float)0)),
124
- // Windows]
120
+ "enableSyncOnScroll",
121
+ sourceProps.enableSyncOnScroll,
122
+ false)),
125
123
  directionalLockEnabled(
126
124
  CoreFeatures::enablePropIteratorSetter
127
125
  ? sourceProps.directionalLockEnabled
@@ -229,6 +227,23 @@ ScrollViewProps::ScrollViewProps(
229
227
  "showsVerticalScrollIndicator",
230
228
  sourceProps.showsVerticalScrollIndicator,
231
229
  true)),
230
+ persistentScrollbar(
231
+ CoreFeatures::enablePropIteratorSetter
232
+ ? sourceProps.persistentScrollbar
233
+ : convertRawProp(
234
+ context,
235
+ rawProps,
236
+ "persistentScrollbar",
237
+ sourceProps.persistentScrollbar,
238
+ true)),
239
+ horizontal(
240
+ CoreFeatures::enablePropIteratorSetter ? sourceProps.horizontal
241
+ : convertRawProp(
242
+ context,
243
+ rawProps,
244
+ "horizontal",
245
+ sourceProps.horizontal,
246
+ true)),
232
247
  scrollEventThrottle(
233
248
  CoreFeatures::enablePropIteratorSetter
234
249
  ? sourceProps.scrollEventThrottle
@@ -381,11 +396,14 @@ void ScrollViewProps::setProp(
381
396
  RAW_SET_PROP_SWITCH_CASE_BASIC(maximumZoomScale);
382
397
  RAW_SET_PROP_SWITCH_CASE_BASIC(minimumZoomScale);
383
398
  RAW_SET_PROP_SWITCH_CASE_BASIC(scrollEnabled);
399
+ RAW_SET_PROP_SWITCH_CASE_BASIC(enableSyncOnScroll);
400
+ RAW_SET_PROP_SWITCH_CASE_BASIC(endDraggingSensitivityMultiplier);
384
401
  RAW_SET_PROP_SWITCH_CASE_BASIC(pagingEnabled);
385
402
  RAW_SET_PROP_SWITCH_CASE_BASIC(pinchGestureEnabled);
386
403
  RAW_SET_PROP_SWITCH_CASE_BASIC(scrollsToTop);
387
404
  RAW_SET_PROP_SWITCH_CASE_BASIC(showsHorizontalScrollIndicator);
388
- RAW_SET_PROP_SWITCH_CASE_BASIC(showsVerticalScrollIndicator);
405
+ RAW_SET_PROP_SWITCH_CASE_BASIC(persistentScrollbar);
406
+ RAW_SET_PROP_SWITCH_CASE_BASIC(horizontal);
389
407
  RAW_SET_PROP_SWITCH_CASE_BASIC(scrollEventThrottle);
390
408
  RAW_SET_PROP_SWITCH_CASE_BASIC(zoomScale);
391
409
  RAW_SET_PROP_SWITCH_CASE_BASIC(contentInset);
@@ -491,6 +509,12 @@ SharedDebugStringConvertibleList ScrollViewProps::getDebugProps() const {
491
509
  "showsVerticalScrollIndicator",
492
510
  showsVerticalScrollIndicator,
493
511
  defaultScrollViewProps.showsVerticalScrollIndicator),
512
+ debugStringConvertibleItem(
513
+ "persistentScrollbar",
514
+ persistentScrollbar,
515
+ defaultScrollViewProps.persistentScrollbar),
516
+ debugStringConvertibleItem(
517
+ "horizontal", horizontal, defaultScrollViewProps.horizontal),
494
518
  debugStringConvertibleItem(
495
519
  "scrollEventThrottle",
496
520
  scrollEventThrottle,
@@ -533,3 +557,4 @@ SharedDebugStringConvertibleList ScrollViewProps::getDebugProps() const {
533
557
  #endif
534
558
 
535
559
  } // namespace facebook::react
560
+
@@ -0,0 +1,45 @@
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 "JSRuntimeFactory.h"
9
+ #include <jsinspector-modern/ConsoleMessage.h>
10
+ #include <jsinspector-modern/FallbackRuntimeAgentDelegate.h>
11
+
12
+ namespace facebook::react {
13
+
14
+ jsi::Runtime& JSIRuntimeHolder::getRuntime() noexcept {
15
+ return *runtime_;
16
+ }
17
+
18
+ JSIRuntimeHolder::JSIRuntimeHolder(std::unique_ptr<jsi::Runtime> runtime)
19
+ : runtime_(std::move(runtime)) {
20
+ assert(runtime_ != nullptr);
21
+ }
22
+
23
+ void JSIRuntimeHolder::addConsoleMessage(jsi::Runtime& runtime, jsinspector_modern::ConsoleMessage message) {
24
+ return;
25
+ }
26
+
27
+ bool JSIRuntimeHolder::supportsConsole() const{
28
+ return false;
29
+ }
30
+
31
+ std::unique_ptr<jsinspector_modern::RuntimeAgentDelegate>
32
+ JSIRuntimeHolder::createAgentDelegate(
33
+ jsinspector_modern::FrontendChannel frontendChannel,
34
+ jsinspector_modern::SessionState& sessionState,
35
+ std::unique_ptr<jsinspector_modern::RuntimeAgentDelegate::ExportedState>,
36
+ const jsinspector_modern::ExecutionContextDescription&
37
+ executionContextDescription,
38
+ RuntimeExecutor runtimeExecutor) {
39
+ (void)executionContextDescription;
40
+ (void)runtimeExecutor;
41
+ return std::make_unique<jsinspector_modern::FallbackRuntimeAgentDelegate>(
42
+ std::move(frontendChannel), sessionState, runtime_->description());
43
+ }
44
+
45
+ } // namespace facebook::react
@@ -0,0 +1,67 @@
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
+ #pragma once
9
+
10
+ #include <ReactCommon/RuntimeExecutor.h>
11
+ #include <cxxreact/MessageQueueThread.h>
12
+ #include <jsinspector-modern/ConsoleMessage.h>
13
+ #include <jsi/jsi.h>
14
+ #include <jsinspector-modern/ReactCdp.h>
15
+
16
+
17
+ namespace facebook::react {
18
+
19
+ /**
20
+ * An interface that represents an instance of a JS VM
21
+ */
22
+ class JSRuntime : public jsinspector_modern::RuntimeTargetDelegate {
23
+ public:
24
+ virtual jsi::Runtime& getRuntime() noexcept = 0;
25
+
26
+ virtual ~JSRuntime() = default;
27
+
28
+ virtual void addConsoleMessage(jsi::Runtime& runtime, jsinspector_modern::ConsoleMessage message) = 0;
29
+ virtual bool supportsConsole() const = 0;
30
+ };
31
+
32
+ /**
33
+ * Interface for a class that creates instances of a JS VM
34
+ */
35
+ class JSRuntimeFactory {
36
+ public:
37
+ virtual std::unique_ptr<JSRuntime> createJSRuntime(
38
+ std::shared_ptr<MessageQueueThread> msgQueueThread) noexcept = 0;
39
+
40
+ virtual ~JSRuntimeFactory() = default;
41
+ };
42
+
43
+ /**
44
+ * Utility class for creating a JSRuntime from a uniquely owned jsi::Runtime.
45
+ */
46
+ class JSIRuntimeHolder : public JSRuntime {
47
+ public:
48
+ jsi::Runtime& getRuntime() noexcept override;
49
+ void addConsoleMessage(jsi::Runtime& runtime, jsinspector_modern::ConsoleMessage message) override;
50
+ bool supportsConsole() const override;
51
+
52
+ std::unique_ptr<jsinspector_modern::RuntimeAgentDelegate> createAgentDelegate(
53
+ jsinspector_modern::FrontendChannel frontendChannel,
54
+ jsinspector_modern::SessionState& sessionState,
55
+ std::unique_ptr<jsinspector_modern::RuntimeAgentDelegate::ExportedState>
56
+ previouslyExportedState,
57
+ const jsinspector_modern::ExecutionContextDescription&
58
+ executionContextDescription,
59
+ RuntimeExecutor runtimeExecutor) override;
60
+
61
+ explicit JSIRuntimeHolder(std::unique_ptr<jsi::Runtime> runtime);
62
+
63
+ private:
64
+ std::unique_ptr<jsi::Runtime> runtime_;
65
+ };
66
+
67
+ } // namespace facebook::react
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "ReactInstance.h"
9
9
 
10
+ #include <ReactCommon/RuntimeExecutor.h>
10
11
  #include <cxxreact/ErrorUtils.h>
11
12
  #include <cxxreact/JSBigString.h>
12
13
  #include <cxxreact/JSExecutor.h>
@@ -15,14 +16,13 @@
15
16
  #include <glog/logging.h>
16
17
  #include <jsi/JSIDynamic.h>
17
18
  #include <jsi/instrumentation.h>
19
+ #include <jsinspector-modern/HostTarget.h>
18
20
  #include <jsireact/JSIExecutor.h>
19
21
  #include <react/featureflags/ReactNativeFeatureFlags.h>
20
22
  #include <react/renderer/runtimescheduler/RuntimeSchedulerBinding.h>
21
- // [Windows
22
23
  #include <react/utils/jsi-utils.h>
23
- // Windows]
24
24
  #include <iostream>
25
- #include <tuple>
25
+ #include <memory>
26
26
  #include <utility>
27
27
 
28
28
  namespace facebook::react {
@@ -31,86 +31,110 @@ ReactInstance::ReactInstance(
31
31
  std::unique_ptr<JSRuntime> runtime,
32
32
  std::shared_ptr<MessageQueueThread> jsMessageQueueThread,
33
33
  std::shared_ptr<TimerManager> timerManager,
34
- JsErrorHandler::JsErrorHandlingFunc jsErrorHandlingFunc,
35
- jsinspector_modern::PageTarget* parentInspectorTarget)
34
+ JsErrorHandler::OnJsError onJsError,
35
+ jsinspector_modern::HostTarget* parentInspectorTarget)
36
36
  : runtime_(std::move(runtime)),
37
37
  jsMessageQueueThread_(jsMessageQueueThread),
38
38
  timerManager_(std::move(timerManager)),
39
- jsErrorHandler_(jsErrorHandlingFunc),
40
- hasFatalJsError_(std::make_shared<bool>(false)),
39
+ jsErrorHandler_(std::make_shared<JsErrorHandler>(std::move(onJsError))),
41
40
  parentInspectorTarget_(parentInspectorTarget) {
42
- auto runtimeExecutor = [weakRuntime = std::weak_ptr<JSRuntime>(runtime_),
43
- weakTimerManager =
44
- std::weak_ptr<TimerManager>(timerManager_),
45
- weakJsMessageQueueThread =
46
- std::weak_ptr<MessageQueueThread>(
47
- jsMessageQueueThread_),
48
- weakHasFatalJsError =
49
- std::weak_ptr<bool>(hasFatalJsError_)](
50
- std::function<void(jsi::Runtime & runtime)>&&
51
- callback) {
52
- if (std::shared_ptr<bool> sharedHasFatalJsError =
53
- weakHasFatalJsError.lock()) {
54
- if (*sharedHasFatalJsError) {
55
- LOG(INFO)
56
- << "Calling into JS using runtimeExecutor but hasFatalJsError_ is true";
57
- return;
58
- }
41
+ RuntimeExecutor runtimeExecutor = [weakRuntime = std::weak_ptr(runtime_),
42
+ weakTimerManager =
43
+ std::weak_ptr(timerManager_),
44
+ weakJsThread =
45
+ std::weak_ptr(jsMessageQueueThread_),
46
+ weakJsErrorHander = std::weak_ptr(
47
+ jsErrorHandler_)](auto callback) {
48
+ auto jsErrorHandler = weakJsErrorHander.lock();
49
+ if (weakRuntime.expired() || !jsErrorHandler) {
50
+ return;
59
51
  }
60
- if (weakRuntime.expired()) {
52
+
53
+ if (jsErrorHandler->hasHandledFatalError()) {
54
+ LOG(INFO)
55
+ << "RuntimeExecutor: Detected fatal js error. Dropping work on non-js thread."
56
+ << std::endl;
61
57
  return;
62
58
  }
63
59
 
64
- if (std::shared_ptr<MessageQueueThread> sharedJsMessageQueueThread =
65
- weakJsMessageQueueThread.lock()) {
66
- sharedJsMessageQueueThread->runOnQueue(
60
+ if (auto jsThread = weakJsThread.lock()) {
61
+ jsThread->runOnQueue(
67
62
  [weakRuntime, weakTimerManager, callback = std::move(callback)]() {
68
- if (auto strongRuntime = weakRuntime.lock()) {
69
- jsi::Runtime& jsiRuntime = strongRuntime->getRuntime();
70
- SystraceSection s("ReactInstance::_runtimeExecutor[Callback]");
71
- try {
72
- callback(jsiRuntime);
73
-
74
- // If we have first-class support for microtasks,
75
- // they would've been called as part of the previous callback.
76
- if (!ReactNativeFeatureFlags::enableMicrotasks()) {
77
- if (auto strongTimerManager = weakTimerManager.lock()) {
78
- strongTimerManager->callReactNativeMicrotasks(jsiRuntime);
79
- }
63
+ auto runtime = weakRuntime.lock();
64
+ if (!runtime) {
65
+ return;
66
+ }
67
+
68
+ jsi::Runtime& jsiRuntime = runtime->getRuntime();
69
+ SystraceSection s("ReactInstance::_runtimeExecutor[Callback]");
70
+ try {
71
+ callback(jsiRuntime);
72
+
73
+ // If we have first-class support for microtasks,
74
+ // they would've been called as part of the previous callback.
75
+ if (!ReactNativeFeatureFlags::enableMicrotasks()) {
76
+ if (auto timerManager = weakTimerManager.lock()) {
77
+ timerManager->callReactNativeMicrotasks(jsiRuntime);
80
78
  }
81
- } catch (jsi::JSError& originalError) {
82
- handleJSError(jsiRuntime, originalError, true);
83
79
  }
80
+ } catch (jsi::JSError& originalError) {
81
+ handleJSError(jsiRuntime, originalError, true);
84
82
  }
85
83
  });
86
84
  }
87
85
  };
88
86
 
89
87
  if (parentInspectorTarget_) {
90
- inspectorTarget_ = &parentInspectorTarget_->registerInstance(*this);
91
- runtimeInspectorTarget_ =
92
- &inspectorTarget_->registerRuntime(*runtime_, runtimeExecutor);
88
+ auto executor = parentInspectorTarget_->executorFromThis();
89
+
90
+ auto runtimeExecutorThatWaitsForInspectorSetup =
91
+ std::make_shared<BufferedRuntimeExecutor>(runtimeExecutor);
92
+
93
+ // This code can execute from any thread, so we need to make sure we set up
94
+ // the inspector logic in the right one. The callback executes immediately
95
+ // if we are already in the right thread.
96
+ executor([this, runtimeExecutor, runtimeExecutorThatWaitsForInspectorSetup](
97
+ jsinspector_modern::HostTarget& hostTarget) {
98
+ // Callbacks scheduled through the page target executor are generally
99
+ // not guaranteed to run (e.g.: if the page target is destroyed)
100
+ // but in this case it is because the page target cannot be destroyed
101
+ // before the instance finishes its setup:
102
+ // * On iOS it's because we do the setup synchronously.
103
+ // * On Android it's because we explicitly wait for the instance
104
+ // creation task to finish before starting the destruction.
105
+ inspectorTarget_ = &hostTarget.registerInstance(*this);
106
+ runtimeInspectorTarget_ =
107
+ &inspectorTarget_->registerRuntime(*runtime_, runtimeExecutor);
108
+ runtimeExecutorThatWaitsForInspectorSetup->flush();
109
+ });
110
+
111
+ // We decorate the runtime executor used everywhere else to wait for the
112
+ // inspector to finish its setup.
113
+ runtimeExecutor =
114
+ [runtimeExecutorThatWaitsForInspectorSetup](
115
+ std::function<void(jsi::Runtime & runtime)>&& callback) {
116
+ runtimeExecutorThatWaitsForInspectorSetup->execute(
117
+ std::move(callback));
118
+ };
93
119
  }
94
120
 
95
- runtimeScheduler_ =
96
- std::make_shared<RuntimeScheduler>(std::move(runtimeExecutor));
121
+ runtimeScheduler_ = std::make_shared<RuntimeScheduler>(runtimeExecutor);
97
122
 
98
- auto pipedRuntimeExecutor =
123
+ bufferedRuntimeExecutor_ = std::make_shared<BufferedRuntimeExecutor>(
99
124
  [runtimeScheduler = runtimeScheduler_.get()](
100
125
  std::function<void(jsi::Runtime & runtime)>&& callback) {
101
126
  runtimeScheduler->scheduleWork(std::move(callback));
102
- };
103
-
104
- bufferedRuntimeExecutor_ =
105
- std::make_shared<BufferedRuntimeExecutor>(pipedRuntimeExecutor);
127
+ });
106
128
  }
107
129
 
108
130
  void ReactInstance::unregisterFromInspector() {
109
131
  if (inspectorTarget_) {
110
132
  assert(runtimeInspectorTarget_);
111
133
  inspectorTarget_->unregisterRuntime(*runtimeInspectorTarget_);
134
+
112
135
  assert(parentInspectorTarget_);
113
136
  parentInspectorTarget_->unregisterInstance(*inspectorTarget_);
137
+
114
138
  inspectorTarget_ = nullptr;
115
139
  }
116
140
  }
@@ -137,6 +161,8 @@ RuntimeExecutor ReactInstance::getBufferedRuntimeExecutor() noexcept {
137
161
  };
138
162
  }
139
163
 
164
+ // TODO(T184010230): Should the RuntimeScheduler returned from this method be
165
+ // buffered?
140
166
  std::shared_ptr<RuntimeScheduler>
141
167
  ReactInstance::getRuntimeScheduler() noexcept {
142
168
  return runtimeScheduler_;
@@ -194,9 +220,7 @@ void ReactInstance::loadScript(
194
220
  strongBufferedRuntimeExecuter->flush();
195
221
  }
196
222
  } catch (jsi::JSError& error) {
197
- // Handle uncaught JS errors during loading JS bundle
198
- *hasFatalJsError_ = true;
199
- this->jsErrorHandler_.handleJsError(error, true);
223
+ jsErrorHandler_->handleFatalError(error);
200
224
  }
201
225
  });
202
226
  }
@@ -208,20 +232,24 @@ void ReactInstance::loadScript(
208
232
  void ReactInstance::callFunctionOnModule(
209
233
  const std::string& moduleName,
210
234
  const std::string& methodName,
211
- const folly::dynamic& args) {
212
- // TODO (C++ 20): This code previously implicitly captured `this` in a [=]
213
- // capture group. Was it meaning to pass modules_ by value?
214
- bufferedRuntimeExecutor_->execute([=, this](jsi::Runtime& runtime) {
235
+ folly::dynamic&& args) {
236
+ bufferedRuntimeExecutor_->execute([this,
237
+ moduleName = moduleName,
238
+ methodName = methodName,
239
+ args = std::move(args)](
240
+ jsi::Runtime& runtime) {
215
241
  SystraceSection s(
216
242
  "ReactInstance::callFunctionOnModule",
217
243
  "moduleName",
218
244
  moduleName,
219
245
  "methodName",
220
246
  methodName);
221
- if (modules_.find(moduleName) == modules_.end()) {
247
+ auto it = callableModules_.find(moduleName);
248
+ if (it == callableModules_.end()) {
222
249
  std::ostringstream knownModules;
223
250
  int i = 0;
224
- for (auto it = modules_.begin(); it != modules_.end(); it++, i++) {
251
+ for (it = callableModules_.begin(); it != callableModules_.end();
252
+ it++, i++) {
225
253
  const char* space = (i > 0 ? ", " : " ");
226
254
  knownModules << space << it->first;
227
255
  }
@@ -230,24 +258,25 @@ void ReactInstance::callFunctionOnModule(
230
258
  "Failed to call into JavaScript module method " + moduleName + "." +
231
259
  methodName +
232
260
  "(). Module has not been registered as callable. Registered callable JavaScript modules (n = " +
233
- std::to_string(modules_.size()) + "):" + knownModules.str() +
234
- ". Did you forget to call `RN$registerCallableModule`?");
261
+ std::to_string(callableModules_.size()) +
262
+ "):" + knownModules.str() +
263
+ ". Did you forget to call `registerCallableModule`?");
235
264
  }
236
265
 
237
- auto module = modules_[moduleName]->factory.call(runtime).asObject(runtime);
238
- auto method = module.getProperty(runtime, methodName.c_str());
239
- if (method.isUndefined()) {
240
- throw jsi::JSError(
241
- runtime,
242
- "Failed to call into JavaScript module method " + moduleName + "." +
243
- methodName + ". Module exists, but the method is undefined.");
266
+ if (std::holds_alternative<jsi::Function>(it->second)) {
267
+ auto module =
268
+ std::get<jsi::Function>(it->second).call(runtime).asObject(runtime);
269
+ it->second = std::move(module);
244
270
  }
245
271
 
272
+ auto& module = std::get<jsi::Object>(it->second);
273
+ auto method = module.getPropertyAsFunction(runtime, methodName.c_str());
274
+
246
275
  std::vector<jsi::Value> jsArgs;
247
276
  for (auto& arg : args) {
248
277
  jsArgs.push_back(jsi::valueFromDynamic(runtime, arg));
249
278
  }
250
- method.asObject(runtime).asFunction(runtime).callWithThis(
279
+ method.callWithThis(
251
280
  runtime, module, (const jsi::Value*)jsArgs.data(), jsArgs.size());
252
281
  });
253
282
  }
@@ -343,13 +372,14 @@ void ReactInstance::initializeRuntime(
343
372
  }
344
373
  auto name = args[0].asString(runtime).utf8(runtime);
345
374
  if (!args[1].isObject() ||
346
- !args[1].asObject(runtime).isFunction(runtime)) {
375
+ !args[1].getObject(runtime).isFunction(runtime)) {
347
376
  throw jsi::JSError(
348
377
  runtime,
349
378
  "The second argument to registerCallableModule must be a function that returns the JS module.");
350
379
  }
351
- modules_[name] = std::make_shared<CallableModule>(
352
- args[1].getObject(runtime).asFunction(runtime));
380
+ callableModules_.emplace(
381
+ std::move(name),
382
+ args[1].getObject(runtime).getFunction(runtime));
353
383
  return jsi::Value::undefined();
354
384
  }));
355
385
 
@@ -80,6 +80,10 @@ New-Item -ItemType Directory -Path $TargetRoot\Microsoft.ReactNative.Cxx\ReactCo
80
80
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\callinvoker\ReactCommon\CallInvoker.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
81
81
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\callinvoker\ReactCommon\SchedulerPriority.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
82
82
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\CallbackWrapper.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
83
+ Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\EventEmitter.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
84
+ Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\Function.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
85
+ Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\Base.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
86
+ Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\Convert.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
83
87
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\LongLivedObject.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
84
88
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\bridging\LongLivedObject.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\
85
89
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\react\nativemodule\core\ReactCommon\TurboModule.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\