react-native-windows 0.68.1 → 0.69.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 (392) hide show
  1. package/.flowconfig +1 -3
  2. package/Chakra/ChakraHelpers.cpp +0 -1
  3. package/Directory.Build.props +3 -0
  4. package/Directory.Build.targets +1 -1
  5. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1411 -0
  6. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +336 -0
  7. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +182 -0
  8. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
  9. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  10. package/Libraries/Alert/Alert.windows.js +2 -2
  11. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  12. package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
  13. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  14. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  15. package/Libraries/Animated/animations/TimingAnimation.js +6 -11
  16. package/Libraries/Animated/createAnimatedComponent.js +2 -2
  17. package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
  19. package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
  20. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  21. package/Libraries/AppState/AppState.js +1 -1
  22. package/Libraries/Blob/URL.js +7 -1
  23. package/Libraries/Components/Button.js +3 -0
  24. package/Libraries/Components/Button.windows.js +4 -0
  25. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
  26. package/Libraries/Components/Pressable/Pressable.js +3 -3
  27. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  28. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
  29. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
  30. package/Libraries/Components/ScrollView/ScrollView.js +1 -1
  31. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
  32. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
  33. package/Libraries/Components/Slider/Slider.js +0 -2
  34. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
  35. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  36. package/Libraries/Components/Switch/Switch.js +11 -1
  37. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
  38. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
  39. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
  40. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
  41. package/Libraries/Components/TextInput/TextInput.js +1 -8
  42. package/Libraries/Components/TextInput/TextInput.windows.js +4 -9
  43. package/Libraries/Components/TextInput/TextInputState.js +10 -2
  44. package/Libraries/Components/TextInput/TextInputState.windows.js +10 -3
  45. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
  47. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
  48. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +6 -5
  49. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
  50. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
  51. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  52. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
  53. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -0
  54. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  55. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  56. package/Libraries/Components/View/View.windows.js +33 -1
  57. package/Libraries/Components/View/ViewNativeComponent.js +68 -8
  58. package/Libraries/Components/View/ViewPropTypes.js +36 -4
  59. package/Libraries/Components/View/ViewPropTypes.windows.js +36 -4
  60. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  61. package/Libraries/Core/ExceptionsManager.js +1 -1
  62. package/Libraries/Core/RawEventEmitter.js +38 -0
  63. package/Libraries/Core/ReactNativeVersion.js +2 -2
  64. package/Libraries/Core/polyfillPromise.js +32 -0
  65. package/Libraries/Core/setUpReactDevTools.js +3 -2
  66. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  67. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  68. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
  69. package/Libraries/Events/CustomEvent.js +32 -0
  70. package/Libraries/Events/EventPolyfill.js +239 -0
  71. package/Libraries/Image/Image.android.js +0 -6
  72. package/Libraries/Image/Image.ios.js +0 -6
  73. package/Libraries/Image/Image.windows.js +2 -8
  74. package/Libraries/Image/ImageViewNativeComponent.js +18 -3
  75. package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
  76. package/Libraries/Inspector/Inspector.js +2 -4
  77. package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
  78. package/Libraries/Interaction/InteractionManager.js +1 -12
  79. package/Libraries/Interaction/TaskQueue.js +5 -4
  80. package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
  81. package/Libraries/Linking/Linking.js +1 -1
  82. package/Libraries/Lists/FlatList.js +27 -6
  83. package/Libraries/Lists/VirtualizedList.js +71 -55
  84. package/Libraries/Lists/VirtualizedListContext.js +7 -3
  85. package/Libraries/Lists/VirtualizedSectionList.js +2 -2
  86. package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
  87. package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
  88. package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
  89. package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
  90. package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +91 -42
  91. package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +13 -13
  92. package/Libraries/LogBox/Data/LogBoxData.js +2 -2
  93. package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
  94. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  95. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  96. package/Libraries/LogBox/LogBox.js +2 -21
  97. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
  98. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
  99. package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
  101. package/Libraries/NativeComponent/BaseViewConfig.windows.js +334 -0
  102. package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
  103. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
  104. package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
  105. package/Libraries/NativeComponent/ViewConfig.js +4 -4
  106. package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
  107. package/Libraries/Network/FormData.js +7 -1
  108. package/Libraries/Pressability/Pressability.js +115 -46
  109. package/Libraries/Pressability/Pressability.windows.js +190 -74
  110. package/Libraries/Pressability/PressabilityDebug.js +5 -9
  111. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  112. package/Libraries/ReactNative/AppContainer.js +1 -1
  113. package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
  114. package/Libraries/ReactNative/PaperUIManager.windows.js +5 -5
  115. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
  116. package/Libraries/ReactNative/UIManager.js +2 -3
  117. package/Libraries/ReactNative/renderApplication.js +4 -0
  118. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
  119. package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
  120. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
  121. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
  123. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
  124. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
  125. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
  126. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
  127. package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
  128. package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
  129. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  130. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  131. package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
  132. package/Libraries/StyleSheet/processTransform.windows.js +272 -0
  133. package/Libraries/Text/Text.js +13 -7
  134. package/Libraries/Text/Text.windows.js +16 -7
  135. package/Libraries/Text/TextNativeComponent.js +2 -0
  136. package/Libraries/Text/TextProps.js +10 -0
  137. package/Libraries/Types/CoreEventTypes.js +13 -1
  138. package/Libraries/Types/CoreEventTypes.windows.js +26 -1
  139. package/Libraries/Utilities/Appearance.js +0 -8
  140. package/Libraries/Utilities/HMRClient.js +1 -1
  141. package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
  142. package/Libraries/Utilities/codegenNativeComponent.js +17 -6
  143. package/Libraries/Utilities/stringifySafe.js +4 -1
  144. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
  145. package/Libraries/WebSocket/WebSocket.js +1 -1
  146. package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
  147. package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
  148. package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
  149. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +1 -4
  150. package/Microsoft.ReactNative/DynamicReader.cpp +3 -3
  151. package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
  152. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
  153. package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
  154. package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
  155. package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
  156. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
  157. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  158. package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
  159. package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
  160. package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
  161. package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
  162. package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
  163. package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
  164. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
  165. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
  166. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
  167. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
  168. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
  169. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
  170. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
  171. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
  172. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
  173. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
  174. package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
  175. package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
  176. package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
  179. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
  180. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
  184. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
  185. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
  186. package/Microsoft.ReactNative/IViewManager.idl +3 -3
  187. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
  188. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
  189. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
  190. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
  191. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  192. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
  193. package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
  194. package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
  195. package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
  196. package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
  197. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +15 -2
  198. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  199. package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
  200. package/Microsoft.ReactNative/ReactInstanceSettings.idl +12 -2
  201. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +1 -1
  202. package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
  203. package/Microsoft.ReactNative/RedBox.cpp +3 -2
  204. package/Microsoft.ReactNative/TurboModulesProvider.cpp +3 -2
  205. package/Microsoft.ReactNative/TurboModulesProvider.h +4 -1
  206. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +41 -0
  207. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
  208. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
  209. package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
  210. package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
  211. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
  212. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
  213. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  214. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
  215. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
  216. package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
  217. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  218. package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
  219. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
  220. package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
  221. package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
  222. package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
  223. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
  224. package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
  225. package/Microsoft.ReactNative/XamlView.h +8 -3
  226. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
  227. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
  228. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
  229. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
  230. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +19 -14
  231. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
  232. package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
  233. package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
  234. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
  235. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
  236. package/Microsoft.ReactNative.Cxx/NativeModules.h +3 -3
  237. package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
  238. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
  239. package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
  240. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
  241. package/Mso/activeObject/activeObject.h +2 -2
  242. package/Mso/compilerAdapters/cppMacros.h +3 -5
  243. package/Mso/errorCode/errorProvider.h +2 -2
  244. package/Mso/errorCode/maybe.h +4 -4
  245. package/Mso/functional/functor.h +6 -6
  246. package/Mso/functional/functorRef.h +2 -2
  247. package/Mso/future/details/executor.h +2 -2
  248. package/Mso/future/details/futureFuncInl.h +4 -4
  249. package/Mso/future/details/ifuture.h +3 -3
  250. package/Mso/future/details/maybeInvoker.h +6 -6
  251. package/Mso/future/details/promiseGroupInl.h +4 -4
  252. package/Mso/future/details/promiseInl.h +4 -4
  253. package/Mso/future/details/resultTraits.h +4 -4
  254. package/Mso/future/details/whenAllInl.h +1 -1
  255. package/Mso/future/future.h +13 -13
  256. package/Mso/guid/msoGuidDetails.h +1 -1
  257. package/Mso/memoryApi/memoryApi.h +13 -7
  258. package/Mso/motifCpp/gTestAdapter.h +1 -1
  259. package/Mso/motifCpp/testInfo.h +7 -9
  260. package/Mso/object/make.h +8 -8
  261. package/Mso/object/objectRefCount.h +3 -5
  262. package/Mso/object/objectWithWeakRef.h +10 -14
  263. package/Mso/object/queryCast.h +4 -4
  264. package/Mso/object/refCountedObject.h +4 -4
  265. package/Mso/object/unknownObject.h +7 -7
  266. package/Mso/platformAdapters/windowsFirst.h +1 -1
  267. package/Mso/smartPtr/cntPtr.h +8 -8
  268. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +96 -4
  269. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
  270. package/Mso/src/future/futureImpl.h +1 -1
  271. package/Mso/src/memoryApi/memoryApi.cpp +4 -4
  272. package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
  273. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
  274. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
  275. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  276. package/PropertySheets/JSEngine.props +1 -1
  277. package/PropertySheets/React.Cpp.props +13 -0
  278. package/PropertySheets/WinUI.props +3 -6
  279. package/ReactCommon/ReactCommon.vcxproj +2 -4
  280. package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
  281. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
  282. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
  283. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
  284. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
  285. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
  286. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
  287. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
  288. package/ReactCommon/Yoga.cpp +1 -1
  289. package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
  290. package/Scripts/OfficeReact.Win32.nuspec +1 -3
  291. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
  292. package/Scripts/copyRNLibraries.js +8 -8
  293. package/Scripts/just.js +1 -1
  294. package/Scripts/rnw-dependencies.ps1 +41 -10
  295. package/Scripts/run-desktop-integration-tests.js +6 -6
  296. package/Shared/AbiSafe.h +3 -3
  297. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  298. package/Shared/CppRuntimeOptions.h +50 -0
  299. package/Shared/CreateModules.h +4 -0
  300. package/Shared/DevSupportManager.cpp +34 -33
  301. package/Shared/DevSupportManager.h +1 -2
  302. package/Shared/HermesRuntimeHolder.cpp +23 -14
  303. package/Shared/HermesRuntimeHolder.h +8 -2
  304. package/Shared/IDevSupportManager.h +1 -2
  305. package/Shared/InspectorPackagerConnection.cpp +7 -5
  306. package/Shared/InspectorPackagerConnection.h +2 -2
  307. package/Shared/JSI/ChakraApi.cpp +0 -1
  308. package/Shared/JSI/ChakraRuntime.cpp +1 -2
  309. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +1 -1
  310. package/Shared/JSI/RuntimeHolder.h +2 -0
  311. package/Shared/Modules/HttpModule.cpp +198 -0
  312. package/Shared/Modules/HttpModule.h +53 -0
  313. package/Shared/Modules/WebSocketModule.cpp +5 -1
  314. package/Shared/Modules/WebSocketModule.h +8 -5
  315. package/Shared/Networking/IHttpResource.h +53 -0
  316. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
  317. package/Shared/Networking/OriginPolicy.h +15 -0
  318. package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
  319. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  320. package/Shared/Networking/WinRTHttpResource.cpp +347 -0
  321. package/Shared/Networking/WinRTHttpResource.h +67 -0
  322. package/Shared/Networking/WinRTTypes.h +30 -0
  323. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
  324. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  325. package/Shared/OInstance.cpp +37 -11
  326. package/Shared/RuntimeOptions.cpp +93 -15
  327. package/Shared/RuntimeOptions.h +22 -9
  328. package/Shared/Shared.vcxitems +126 -5
  329. package/Shared/Shared.vcxitems.filters +55 -15
  330. package/Shared/Threading/BatchingQueueThread.cpp +1 -1
  331. package/Shared/Utils/WinRTConversions.cpp +22 -0
  332. package/Shared/Utils/WinRTConversions.h +15 -0
  333. package/Shared/tracing/fbsystrace.h +2 -2
  334. package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
  335. package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
  336. package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
  337. package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
  338. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  339. package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
  340. package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
  341. package/codegen/react/components/rnwcore/Props.cpp +0 -13
  342. package/codegen/react/components/rnwcore/Props.h +0 -16
  343. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  344. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
  345. package/include/Shared/cdebug.h +9 -9
  346. package/index.js +30 -25
  347. package/index.windows.js +30 -25
  348. package/jest/preprocessor.js +24 -107
  349. package/jest/preprocessor_DO_NOT_USE.js +122 -0
  350. package/metro.config.js +3 -70
  351. package/package.json +29 -28
  352. package/react-native.config.js +40 -6
  353. package/rntypes/index.d.ts +19 -7
  354. package/stubs/glog/logging.h +1 -1
  355. package/template/cpp-app/src/App.h +0 -4
  356. package/template/cs-app/src/App.xaml.cs +0 -5
  357. package/template/cs-app/src/MainPage.xaml.cs +1 -10
  358. package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
  359. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
  360. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
  361. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
  362. package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
  363. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
  364. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
  365. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
  366. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
  367. package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
  368. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
  369. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
  370. package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
  371. package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
  372. package/template/metro.devMode.config.js +2 -51
  373. package/typings-index.js +5 -1
  374. package/typings-index.js.map +1 -1
  375. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
  376. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
  377. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  378. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
  379. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
  380. package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
  381. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
  382. package/Libraries/ReactNative/UIManagerInjection.js +0 -15
  383. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
  384. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
  385. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
  386. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
  387. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
  388. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
  389. package/PropertySheets/CppEnablePackageReferences.props +0 -13
  390. package/Shared/IHttpResource.h +0 -34
  391. package/Shared/cdebug.cpp +0 -6
  392. package/include/Shared/ViewManager.h +0 -34
@@ -137,6 +137,7 @@ struct NapiJsiRuntime : facebook::jsi::Runtime {
137
137
  facebook::jsi::PropNameID createPropNameIDFromAscii(const char *str, size_t length) override;
138
138
  facebook::jsi::PropNameID createPropNameIDFromUtf8(const uint8_t *utf8, size_t length) override;
139
139
  facebook::jsi::PropNameID createPropNameIDFromString(const facebook::jsi::String &str) override;
140
+ facebook::jsi::PropNameID createPropNameIDFromSymbol(const facebook::jsi::Symbol &sym);
140
141
  std::string utf8(const facebook::jsi::PropNameID &id) override;
141
142
  bool compare(const facebook::jsi::PropNameID &lhs, const facebook::jsi::PropNameID &rhs) override;
142
143
 
@@ -190,7 +191,7 @@ struct NapiJsiRuntime : facebook::jsi::Runtime {
190
191
  facebook::jsi::Function createFunctionFromHostFunction(
191
192
  const facebook::jsi::PropNameID &name,
192
193
  unsigned int paramCount,
193
- facebook::jsi::HostFunctionType type) override;
194
+ facebook::jsi::HostFunctionType func) override;
194
195
  facebook::jsi::Value call(
195
196
  const facebook::jsi::Function &func,
196
197
  const facebook::jsi::Value &jsThis,
@@ -475,7 +476,7 @@ struct NapiJsiRuntime : facebook::jsi::Runtime {
475
476
  void SetProperty(napi_value object, napi_value propertyId, napi_value value, napi_property_attributes attrs) const;
476
477
  napi_value CreateArray(size_t length) const;
477
478
  void SetElement(napi_value array, uint32_t index, napi_value value) const;
478
- static napi_value JsiHostFunctionCallback(napi_env env, napi_callback_info info) noexcept;
479
+ static napi_value __cdecl JsiHostFunctionCallback(napi_env env, napi_callback_info info) noexcept;
479
480
  napi_value CreateExternalFunction(napi_value name, int32_t paramCount, napi_callback callback, void *callbackData);
480
481
  napi_value CreateExternalObject(void *data, napi_finalize finalizeCallback) const;
481
482
  template <typename T>
@@ -711,6 +712,14 @@ PropNameID NapiJsiRuntime::createPropNameIDFromString(const String &str) {
711
712
  return MakePointer<PropNameID>(uniqueStr);
712
713
  }
713
714
 
715
+ PropNameID NapiJsiRuntime::createPropNameIDFromSymbol(const Symbol &sym) {
716
+ // TODO: Support for symbols through the native API in JSC is very limited.
717
+ // While we could construct a PropNameID here, we would not be able to get a
718
+ // symbol property through the C++ API.
719
+ UNREFERENCED_PARAMETER(sym);
720
+ throw;
721
+ }
722
+
714
723
  string NapiJsiRuntime::utf8(const PropNameID &id) {
715
724
  EnvScope scope{m_env};
716
725
 
@@ -1245,7 +1254,7 @@ size_t NapiJsiRuntime::JsiValueViewArgs::Size() const noexcept {
1245
1254
  #pragma region PropNameIDView
1246
1255
 
1247
1256
  NapiJsiRuntime::PropNameIDView::PropNameIDView(NapiJsiRuntime *runtime, napi_value propertyId) noexcept
1248
- : m_propertyId{make<PropNameID>(new (std::addressof(m_pointerStore)) NapiPointerValueView{runtime, propertyId})} {}
1257
+ : m_propertyId{make<PropNameID>(new(std::addressof(m_pointerStore)) NapiPointerValueView{runtime, propertyId})} {}
1249
1258
 
1250
1259
  NapiJsiRuntime::PropNameIDView::operator PropNameID const &() const noexcept {
1251
1260
  return m_propertyId;
@@ -1702,7 +1711,7 @@ void NapiJsiRuntime::SetElement(napi_value array, uint32_t index, napi_value val
1702
1711
  }
1703
1712
 
1704
1713
  // The NAPI external function callback used for the JSI host function implementation.
1705
- /*static*/ napi_value NapiJsiRuntime::JsiHostFunctionCallback(napi_env env, napi_callback_info info) noexcept {
1714
+ /*static*/ napi_value __cdecl NapiJsiRuntime::JsiHostFunctionCallback(napi_env env, napi_callback_info info) noexcept {
1706
1715
  HostFunctionWrapper *hostFuncWrapper{};
1707
1716
  size_t argc{};
1708
1717
  CHECK_NAPI_ELSE_CRASH(
@@ -1750,15 +1759,11 @@ napi_value NapiJsiRuntime::CreateExternalObject(void *data, napi_finalize finali
1750
1759
  // Wraps up std::unique_ptr as an external object.
1751
1760
  template <typename T>
1752
1761
  napi_value NapiJsiRuntime::CreateExternalObject(unique_ptr<T> &&data) const {
1753
- napi_value object =
1754
- CreateExternalObject(data.get(), [](napi_env /*env*/, void *dataToDestroy, void * /*finalizerHint*/) {
1755
- // We wrap dataToDestroy in a unique_ptr to avoid calling delete explicitly.
1756
- if (std::is_array<T>::value) {
1757
- delete[] static_cast<T *>(dataToDestroy);
1758
- } else {
1759
- delete static_cast<T *>(dataToDestroy);
1760
- }
1761
- });
1762
+ napi_finalize finalize = [](napi_env /*env*/, void *dataToDestroy, void * /*finalizerHint*/) {
1763
+ // We wrap dataToDestroy in a unique_ptr to avoid calling delete explicitly.
1764
+ unique_ptr<T> dataDeleter{static_cast<T *>(dataToDestroy)};
1765
+ };
1766
+ napi_value object = CreateExternalObject(data.get(), finalize);
1762
1767
 
1763
1768
  // We only call data.release() after the CreateExternalObject succeeds.
1764
1769
  // Otherwise, when CreateExternalObject fails and an exception is thrown,
@@ -1807,7 +1812,7 @@ napi_value NapiJsiRuntime::GetHostObjectProxyHandler() {
1807
1812
  // Sets Proxy trap method as a pointer to NapiJsiRuntime instance method.
1808
1813
  template <napi_value (NapiJsiRuntime::*trapMethod)(span<napi_value>), size_t argCount>
1809
1814
  void NapiJsiRuntime::SetProxyTrap(napi_value handler, napi_value propertyName) {
1810
- auto proxyTrap = [](napi_env env, napi_callback_info info) noexcept {
1815
+ napi_callback proxyTrap = [](napi_env env, napi_callback_info info) noexcept {
1811
1816
  NapiJsiRuntime *runtime{};
1812
1817
  napi_value args[argCount]{};
1813
1818
  size_t actualArgCount{argCount};
@@ -2,6 +2,8 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  #pragma once
5
+ #ifndef MICROSOFT_REACTNATIVE_JSI_NODEAPIJSIRUNTIME
6
+ #define MICROSOFT_REACTNATIVE_JSI_NODEAPIJSIRUNTIME
5
7
 
6
8
  // JSI
7
9
  #include <js_native_ext_api.h>
@@ -19,3 +21,5 @@ namespace Microsoft::JSI {
19
21
  std::unique_ptr<facebook::jsi::Runtime> __cdecl MakeNodeApiJsiRuntime(napi_env env) noexcept;
20
22
 
21
23
  } // namespace Microsoft::JSI
24
+
25
+ #endif // MICROSOFT_REACTNATIVE_JSI_NODEAPIJSIRUNTIME
@@ -90,7 +90,7 @@ void ReadValue(IJSValueReader const &reader, /*out*/ T &value) noexcept;
90
90
 
91
91
  bool SkipArrayToEnd(IJSValueReader const &reader) noexcept;
92
92
  template <class... TArgs>
93
- void ReadArgs(IJSValueReader const &reader, /*out*/ TArgs &... args) noexcept;
93
+ void ReadArgs(IJSValueReader const &reader, /*out*/ TArgs &...args) noexcept;
94
94
 
95
95
  //===========================================================================
96
96
  // IJSValueReader extensions implementation
@@ -432,7 +432,7 @@ inline bool SkipArrayToEnd(IJSValueReader const &reader) noexcept {
432
432
  }
433
433
 
434
434
  template <class... TArgs>
435
- inline void ReadArgs(IJSValueReader const &reader, /*out*/ TArgs &... args) noexcept {
435
+ inline void ReadArgs(IJSValueReader const &reader, /*out*/ TArgs &...args) noexcept {
436
436
  // Read as many arguments as we can or return default values.
437
437
  bool success = reader.ValueType() == JSValueType::Array;
438
438
  ((success = success && reader.GetNextArrayItem(), args = success ? ReadValue<TArgs>(reader) : TArgs{}), ...);
@@ -64,10 +64,10 @@ template <class T>
64
64
  void WriteProperties(IJSValueWriter const &writer, T const &value) noexcept;
65
65
 
66
66
  template <class... TArgs>
67
- void WriteArgs(IJSValueWriter const &writer, TArgs const &... args) noexcept;
67
+ void WriteArgs(IJSValueWriter const &writer, TArgs const &...args) noexcept;
68
68
 
69
69
  template <class... TArgs>
70
- JSValueArgWriter MakeJSValueArgWriter(TArgs &&... args) noexcept;
70
+ JSValueArgWriter MakeJSValueArgWriter(TArgs &&...args) noexcept;
71
71
 
72
72
  IJSValueWriter MakeJSValueTreeWriter() noexcept;
73
73
 
@@ -264,7 +264,7 @@ inline void WriteProperties(IJSValueWriter const &writer, T const &value) noexce
264
264
  }
265
265
 
266
266
  template <class... TArgs>
267
- inline void WriteArgs(IJSValueWriter const &writer, TArgs const &... args) noexcept {
267
+ inline void WriteArgs(IJSValueWriter const &writer, TArgs const &...args) noexcept {
268
268
  writer.WriteArrayBegin();
269
269
  (WriteValue(writer, args), ...);
270
270
  writer.WriteArrayEnd();
@@ -276,7 +276,7 @@ inline JSValueArgWriter MakeJSValueArgWriter(T &&argWriter) noexcept {
276
276
  }
277
277
 
278
278
  template <class... TArgs>
279
- inline JSValueArgWriter MakeJSValueArgWriter(TArgs &&... args) noexcept {
279
+ inline JSValueArgWriter MakeJSValueArgWriter(TArgs &&...args) noexcept {
280
280
  return [&args...](IJSValueWriter const &writer) noexcept { WriteArgs(writer, args...); };
281
281
  }
282
282
 
@@ -286,7 +286,7 @@ inline JSValueArgWriter MakeJSValueWriter(T &&argWriter) noexcept {
286
286
  }
287
287
 
288
288
  template <class... TArgs>
289
- inline JSValueArgWriter MakeJSValueWriter(TArgs &&... args) noexcept {
289
+ inline JSValueArgWriter MakeJSValueWriter(TArgs &&...args) noexcept {
290
290
  return [&args...](IJSValueWriter const &[[maybe_unused]] writer) noexcept { (WriteValue(writer, args), ...); };
291
291
  }
292
292
 
@@ -12,6 +12,8 @@
12
12
  <CallInvoker_SourcePath Condition="'$(CallInvoker_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\CallInvoker.h')">$(MSBuildThisFileDirectory)</CallInvoker_SourcePath>
13
13
  <TurboModule_SourcePath Condition="'$(TurboModule_SourcePath)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\ReactCommon\react\nativemodule\core</TurboModule_SourcePath>
14
14
  <TurboModule_SourcePath Condition="'$(TurboModule_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\TurboModule.h')">$(MSBuildThisFileDirectory)</TurboModule_SourcePath>
15
+ <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\ReactCommon\react\bridging</Bridging_SourcePath>
16
+ <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\TurboModule.h')">$(MSBuildThisFileDirectory)</Bridging_SourcePath>
15
17
  </PropertyGroup>
16
18
  <ItemDefinitionGroup>
17
19
  <ClCompile>
@@ -20,6 +22,7 @@
20
22
  $(JSI_SourcePath);
21
23
  $(CallInvoker_SourcePath);
22
24
  $(TurboModule_SourcePath);
25
+ $(Bridging_SourcePath);
23
26
  %(AdditionalIncludeDirectories)
24
27
  </AdditionalIncludeDirectories>
25
28
  </ClCompile>
@@ -40,6 +43,7 @@
40
43
  <ClInclude Include="$(CallInvoker_SourcePath)\ReactCommon\CallInvoker.h" />
41
44
  <ClInclude Include="$(MSBuildThisFileDirectory)XamlUtils.h" />
42
45
  <ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\LongLivedObject.h" />
46
+ <ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
43
47
  <ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\TurboModule.h" />
44
48
  <ClInclude Include="$(TurboModule_SourcePath)\ReactCommon\TurboModuleUtils.h" />
45
49
  <ClInclude Include="$(MSBuildThisFileDirectory)CppWinRTIncludes.h" />
@@ -104,7 +108,7 @@
104
108
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
105
109
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
106
110
  </ClCompile>
107
- <ClCompile Include="$(TurboModule_SourcePath)\ReactCommon\LongLivedObject.cpp">
111
+ <ClCompile Include="$(TurboModule_SourcePath)\..\..\bridging\LongLivedObject.cpp">
108
112
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
109
113
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
110
114
  </ClCompile>
@@ -18,9 +18,6 @@
18
18
  <ClCompile Include="$(TurboModule_SourcePath)\ReactCommon\TurboModule.cpp">
19
19
  <Filter>TurboModule</Filter>
20
20
  </ClCompile>
21
- <ClCompile Include="$(TurboModule_SourcePath)\ReactCommon\LongLivedObject.cpp">
22
- <Filter>TurboModule</Filter>
23
- </ClCompile>
24
21
  <ClCompile Include="$(TurboModule_SourcePath)\ReactCommon\TurboModuleUtils.cpp">
25
22
  <Filter>TurboModule</Filter>
26
23
  </ClCompile>
@@ -30,6 +27,7 @@
30
27
  <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.cpp">
31
28
  <Filter>JSI</Filter>
32
29
  </ClCompile>
30
+ <ClCompile Include="$(TurboModule_SourcePath)\..\..\bridging\LongLivedObject.cpp" />
33
31
  </ItemGroup>
34
32
  <ItemGroup>
35
33
  <ClInclude Include="$(MSBuildThisFileDirectory)Crash.h" />
@@ -152,6 +150,7 @@
152
150
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.h">
153
151
  <Filter>JSI</Filter>
154
152
  </ClInclude>
153
+ <ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
155
154
  </ItemGroup>
156
155
  <ItemGroup>
157
156
  <Filter Include="JSI">
@@ -280,7 +280,7 @@ struct IsPromise<ReactPromise<T>> : std::true_type {};
280
280
  template <class TArgsTuple>
281
281
  constexpr size_t GetPromiseCount() noexcept {
282
282
  if constexpr (
283
- std::tuple_size_v<TArgsTuple> > 0 &&
283
+ std::tuple_size_v < TArgsTuple >> 0 &&
284
284
  IsPromise<TupleElementOrVoid<std::tuple_size_v<TArgsTuple> - 1, TArgsTuple>>::value) {
285
285
  return 1;
286
286
  } else {
@@ -1091,7 +1091,7 @@ template <class TModule, int I, class TMethodSpec>
1091
1091
  struct ReactMethodVerifier {
1092
1092
  static constexpr bool Verify() noexcept {
1093
1093
  ReactMethodVerifier verifier{};
1094
- ReactMemberInfoIterator<TModule>{}.GetMemberInfo<I>(verifier);
1094
+ ReactMemberInfoIterator<TModule>{}.template GetMemberInfo<I>(verifier);
1095
1095
  return verifier.m_result;
1096
1096
  }
1097
1097
 
@@ -1109,7 +1109,7 @@ template <class TModule, int I, class TMethodSpec>
1109
1109
  struct ReactSyncMethodVerifier {
1110
1110
  static constexpr bool Verify() noexcept {
1111
1111
  ReactSyncMethodVerifier verifier{};
1112
- ReactMemberInfoIterator<TModule>{}.GetMemberInfo<I>(verifier);
1112
+ ReactMemberInfoIterator<TModule>{}.template GetMemberInfo<I>(verifier);
1113
1113
  return verifier.m_result;
1114
1114
  }
1115
1115
 
@@ -53,7 +53,7 @@ struct ReactContext {
53
53
  // Call methodName JS function of module with moduleName.
54
54
  // args are either function arguments or a single lambda with 'IJSValueWriter const&' argument.
55
55
  template <class... TArgs>
56
- void CallJSFunction(std::wstring_view moduleName, std::wstring_view methodName, TArgs &&... args) const noexcept {
56
+ void CallJSFunction(std::wstring_view moduleName, std::wstring_view methodName, TArgs &&...args) const noexcept {
57
57
  m_handle.CallJSFunction(moduleName, methodName, MakeJSValueArgWriter(std::forward<TArgs>(args)...));
58
58
  }
59
59
 
@@ -61,7 +61,7 @@ struct ReactContext {
61
61
  // Call eventName JS event of module with eventEmitterName.
62
62
  // args are either function arguments or a single lambda with 'IJSValueWriter const&' argument.
63
63
  template <class... TArgs>
64
- void EmitJSEvent(std::wstring_view eventEmitterName, std::wstring_view eventName, TArgs &&... args) const noexcept {
64
+ void EmitJSEvent(std::wstring_view eventEmitterName, std::wstring_view eventName, TArgs &&...args) const noexcept {
65
65
  m_handle.EmitJSEvent(eventEmitterName, eventName, MakeJSValueWriter(std::forward<TArgs>(args)...));
66
66
  }
67
67
 
@@ -69,7 +69,7 @@ struct ReactContext {
69
69
  // Dispatch eventName event to the view.
70
70
  // args are either function arguments or a single lambda with 'IJSValueWriter const&' argument.
71
71
  template <class... TArgs>
72
- void DispatchEvent(xaml::FrameworkElement const &view, std::wstring_view eventName, TArgs &&... args) const noexcept {
72
+ void DispatchEvent(xaml::FrameworkElement const &view, std::wstring_view eventName, TArgs &&...args) const noexcept {
73
73
  XamlUIService::FromContext(m_handle).DispatchEvent(
74
74
  view, eventName, MakeJSValueWriter(std::forward<TArgs>(args)...));
75
75
  }
@@ -22,7 +22,7 @@ template <class T>
22
22
  struct ReactNonAbiValue : implements<ReactNonAbiValue<T>, IReactNonAbiValue> {
23
23
  // Create ReactNonAbiValue and construct the wrapped value.
24
24
  template <class... TArgs>
25
- ReactNonAbiValue(TArgs &&... args) noexcept : m_value{std::forward<TArgs>(args)...} {}
25
+ ReactNonAbiValue(TArgs &&...args) noexcept : m_value{std::forward<TArgs>(args)...} {}
26
26
 
27
27
  // Get a pointer to the wrapped value.
28
28
  int64_t GetPtr() const noexcept {
@@ -47,7 +47,7 @@ template <class T>
47
47
  struct ReactNonAbiValue : Windows::Foundation::IInspectable {
48
48
  // Create a new instance of implementation::ReactNonAbiValue with args and keep a ref-counted pointer to it.
49
49
  template <class... TArgs>
50
- ReactNonAbiValue(std::in_place_t, TArgs &&... args) noexcept
50
+ ReactNonAbiValue(std::in_place_t, TArgs &&...args) noexcept
51
51
  : IInspectable{make<implementation::ReactNonAbiValue<T>>(std::forward<TArgs>(args)...)} {}
52
52
 
53
53
  // Create an empty ReactNonAbiValue.
@@ -100,7 +100,7 @@ struct ReactNonAbiValue : Windows::Foundation::IInspectable {
100
100
  // Call the call operator() for the stored value.
101
101
  // Crash the app if ReactNonAbiValue is empty.
102
102
  template <class... TArgs>
103
- auto operator()(TArgs &&... args) const {
103
+ auto operator()(TArgs &&...args) const {
104
104
  return (*GetPtr())(std::forward<TArgs>(args)...);
105
105
  }
106
106
  };
@@ -8,16 +8,55 @@
8
8
 
9
9
  #include "CppWinRTIncludes.h"
10
10
 
11
+ extern "C" {
12
+ HMODULE
13
+ WINAPI
14
+ WINRT_IMPL_GetModuleHandleW(_In_opt_ LPCWSTR lpModuleName);
15
+ }
16
+
17
+ #ifndef WINRT_IMPL_LINK
18
+ #ifdef _M_HYBRID
19
+ #define WINRT_IMPL_LINK(function, count) \
20
+ __pragma(comment(linker, "/alternatename:#WINRT_IMPL_" #function "@" #count "=#" #function "@" #count))
21
+ #elif _M_ARM64EC
22
+ #define WINRT_IMPL_LINK(function, count) \
23
+ __pragma(comment(linker, "/alternatename:#WINRT_IMPL_" #function "=#" #function))
24
+ #elif _M_IX86
25
+ #define WINRT_IMPL_LINK(function, count) \
26
+ __pragma(comment(linker, "/alternatename:_WINRT_IMPL_" #function "@" #count "=_" #function "@" #count))
27
+ #else
28
+ #define WINRT_IMPL_LINK(function, count) __pragma(comment(linker, "/alternatename:WINRT_IMPL_" #function "=" #function))
29
+ #endif
30
+ #endif
31
+ WINRT_IMPL_LINK(GetModuleHandleW, 4);
32
+ #undef WINRT_IMPL_LINK
33
+
11
34
  namespace XAML_CPPWINRT_NAMESPACE {
12
35
 
13
36
  // Return Application::Current() when it is present or nullptr otherwise.
14
37
  // It does not throw exception as Application::Current() does.
15
38
  inline Application TryGetCurrentApplication() noexcept {
16
- auto applicationStatics = get_activation_factory<IApplicationStatics>(name_of<Application>());
17
- auto abiApplicationStatics = static_cast<impl::abi_t<IApplicationStatics> *>(get_abi(applicationStatics));
18
- void *value{};
19
- abiApplicationStatics->get_Current(&value);
20
- return Application{value, take_ownership_from_abi};
39
+ #ifndef USE_WINUI3
40
+ constexpr auto xamlDll = L"Windows.UI.Xaml.dll";
41
+ #else
42
+ constexpr auto xamlDll = L"Microsoft.UI.Xaml.dll";
43
+ #endif
44
+
45
+ if (auto xamlIsLoaded = WINRT_IMPL_GetModuleHandleW(xamlDll)) {
46
+ auto applicationStatics = get_activation_factory<IApplicationStatics>(name_of<Application>());
47
+ auto abiApplicationStatics = static_cast<impl::abi_t<IApplicationStatics> *>(get_abi(applicationStatics));
48
+ void *value{};
49
+ abiApplicationStatics->get_Current(&value);
50
+ return Application{value, take_ownership_from_abi};
51
+ } else {
52
+ // If we don't have XAML loaded, we are not a XAML app
53
+ return nullptr;
54
+ }
21
55
  }
22
56
 
57
+ // Using Windows::UI::ColorHelper causes the process to load Windows.UI.Xaml.dll which is not needed just to fill a
58
+ // Color struct
59
+ inline winrt::Windows::UI::Color FromArgb(uint8_t a, uint8_t r, uint8_t g, uint8_t b) {
60
+ return winrt::Windows::UI::Color{a, r, g, b};
61
+ }
23
62
  } // namespace XAML_CPPWINRT_NAMESPACE
@@ -31,7 +31,6 @@
31
31
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
32
32
  <PlatformTarget>x86</PlatformTarget>
33
33
  <DebugSymbols>true</DebugSymbols>
34
- <OutputPath>bin\x86\Debug\</OutputPath>
35
34
  <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
36
35
  <DebugType>full</DebugType>
37
36
  <UseVSHostingProcess>false</UseVSHostingProcess>
@@ -39,7 +38,6 @@
39
38
  </PropertyGroup>
40
39
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
41
40
  <PlatformTarget>x86</PlatformTarget>
42
- <OutputPath>bin\x86\Release\</OutputPath>
43
41
  <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
44
42
  <Optimize>true</Optimize>
45
43
  <DebugType>pdbonly</DebugType>
@@ -49,7 +47,6 @@
49
47
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
50
48
  <PlatformTarget>ARM64</PlatformTarget>
51
49
  <DebugSymbols>true</DebugSymbols>
52
- <OutputPath>bin\ARM64\Debug\</OutputPath>
53
50
  <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
54
51
  <DebugType>full</DebugType>
55
52
  <UseVSHostingProcess>false</UseVSHostingProcess>
@@ -57,7 +54,6 @@
57
54
  </PropertyGroup>
58
55
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
59
56
  <PlatformTarget>ARM64</PlatformTarget>
60
- <OutputPath>bin\ARM64\Release\</OutputPath>
61
57
  <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
62
58
  <Optimize>true</Optimize>
63
59
  <DebugType>pdbonly</DebugType>
@@ -67,7 +63,6 @@
67
63
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
68
64
  <PlatformTarget>x64</PlatformTarget>
69
65
  <DebugSymbols>true</DebugSymbols>
70
- <OutputPath>bin\x64\Debug\</OutputPath>
71
66
  <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
72
67
  <DebugType>full</DebugType>
73
68
  <UseVSHostingProcess>false</UseVSHostingProcess>
@@ -75,7 +70,6 @@
75
70
  </PropertyGroup>
76
71
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
77
72
  <PlatformTarget>x64</PlatformTarget>
78
- <OutputPath>bin\x64\Release\</OutputPath>
79
73
  <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
80
74
  <Optimize>true</Optimize>
81
75
  <DebugType>pdbonly</DebugType>
@@ -56,7 +56,7 @@ struct ActiveObjectMakePolicy {
56
56
  static const bool IsNoExcept{true};
57
57
 
58
58
  template <typename T, typename TMemoryGuard, typename... TArgs>
59
- static void Make(TMemoryGuard &memoryGuard, TArgs &&... args) noexcept;
59
+ static void Make(TMemoryGuard &memoryGuard, TArgs &&...args) noexcept;
60
60
  };
61
61
 
62
62
  //! Custom deleter to call Finalize() or FinalizeSync() from the associated queue.
@@ -159,7 +159,7 @@ struct ActiveObjectBase : IUnknown {
159
159
  //=============================================================================================
160
160
 
161
161
  template <typename T, typename TMemoryGuard, typename... TArgs>
162
- /*static*/ void ActiveObjectMakePolicy::Make(TMemoryGuard &memoryGuard, TArgs &&... args) noexcept {
162
+ /*static*/ void ActiveObjectMakePolicy::Make(TMemoryGuard &memoryGuard, TArgs &&...args) noexcept {
163
163
  memoryGuard.Obj = ::new (memoryGuard.ObjMemory) T{std::forward<TArgs>(args)...};
164
164
  memoryGuard.ObjMemory = nullptr; // Memory is now controlled by the object. Set to null to avoid memory destruction.
165
165
 
@@ -29,11 +29,9 @@
29
29
  Make the macro act like a statement.
30
30
  */
31
31
  #ifndef __GNUC__
32
- #define Statement(x) \
33
- __pragma(warning(push)) __pragma(warning(disable : 4127 25037)) do { \
34
- x; \
35
- } \
36
- while (0) \
32
+ #define Statement(x) \
33
+ __pragma(warning(push)) __pragma(warning(disable : 4127 25037)) do { x; } \
34
+ while (0) \
37
35
  __pragma(warning(pop))
38
36
  #else
39
37
  #define Statement(x) \
@@ -28,7 +28,7 @@ class ErrorProvider final : public IErrorProvider {
28
28
  ErrorCode MakeErrorCode(const T &errorInfo) const noexcept;
29
29
 
30
30
  template <class TValue, class... TArgs>
31
- Maybe<TValue> MakeMaybe(TArgs &&... errorArgs) const noexcept;
31
+ Maybe<TValue> MakeMaybe(TArgs &&...errorArgs) const noexcept;
32
32
 
33
33
  // TODO: deprecate this method in favor of TryGetErrorInfo
34
34
  bool IsOwnedErrorCode(const ErrorCode &errorCode) const noexcept;
@@ -87,7 +87,7 @@ ErrorCode ErrorProvider<T, GuidToken>::MakeErrorCode(const T &errorInfo) const n
87
87
 
88
88
  template <class T, class GuidToken>
89
89
  template <class TValue, class... TArgs>
90
- Maybe<TValue> ErrorProvider<T, GuidToken>::MakeMaybe(TArgs &&... errorArgs) const noexcept {
90
+ Maybe<TValue> ErrorProvider<T, GuidToken>::MakeMaybe(TArgs &&...errorArgs) const noexcept {
91
91
  return Mso::Maybe<TValue>(MakeErrorCode(T(std::forward<TArgs>(errorArgs)...)));
92
92
  }
93
93
 
@@ -46,14 +46,14 @@ class Maybe {
46
46
  _Allow_implicit_ctor_ Maybe(T &&value) noexcept;
47
47
 
48
48
  template <class... TArgs>
49
- explicit Maybe(InPlaceTag, TArgs &&... args) noexcept;
49
+ explicit Maybe(InPlaceTag, TArgs &&...args) noexcept;
50
50
 
51
51
  template <
52
52
  class TItem,
53
53
  class... TArgs,
54
54
  class TDummy =
55
55
  typename std::enable_if<std::is_constructible<T, std::initializer_list<TItem> &, TArgs &&...>::value>::type>
56
- explicit Maybe(InPlaceTag, std::initializer_list<TItem> il, TArgs &&... args) noexcept;
56
+ explicit Maybe(InPlaceTag, std::initializer_list<TItem> il, TArgs &&...args) noexcept;
57
57
 
58
58
  _Allow_implicit_ctor_ Maybe(const ErrorCode &error) noexcept;
59
59
  _Allow_implicit_ctor_ Maybe(ErrorCode &&error) noexcept;
@@ -163,13 +163,13 @@ Maybe<T>::Maybe(T &&value) noexcept {
163
163
 
164
164
  template <class T>
165
165
  template <class... TArgs>
166
- Maybe<T>::Maybe(InPlaceTag, TArgs &&... args) noexcept {
166
+ Maybe<T>::Maybe(InPlaceTag, TArgs &&...args) noexcept {
167
167
  ::new (reinterpret_cast<T *>(&reinterpret_cast<char &>(m_value))) T(std::forward<TArgs>(args)...);
168
168
  }
169
169
 
170
170
  template <class T>
171
171
  template <class TItem, class... TArgs, class TDummy>
172
- Maybe<T>::Maybe(InPlaceTag, std::initializer_list<TItem> il, TArgs &&... args) noexcept {
172
+ Maybe<T>::Maybe(InPlaceTag, std::initializer_list<TItem> il, TArgs &&...args) noexcept {
173
173
  ::new (reinterpret_cast<T *>(&reinterpret_cast<char &>(m_value))) T(il, std::forward<TArgs>(args)...);
174
174
  }
175
175
 
@@ -161,7 +161,7 @@ class FunctionObjectWrapper final
161
161
  template <typename T>
162
162
  FunctionObjectWrapper(T &&func) noexcept : m_func(std::forward<T>(func)) {}
163
163
 
164
- virtual TResult Invoke(TArgs &&... args) noexcept override {
164
+ virtual TResult Invoke(TArgs &&...args) noexcept override {
165
165
  return m_func(std::forward<TArgs>(args)...);
166
166
  }
167
167
 
@@ -180,7 +180,7 @@ class FunctionObjectWrapperThrow final
180
180
  template <typename T>
181
181
  FunctionObjectWrapperThrow(T &&func) noexcept : m_func(std::forward<T>(func)) {}
182
182
 
183
- virtual TResult Invoke(TArgs &&... args) override {
183
+ virtual TResult Invoke(TArgs &&...args) override {
184
184
  return m_func(std::forward<TArgs>(args)...);
185
185
  }
186
186
 
@@ -199,7 +199,7 @@ class FunctionPointerWrapper final : public ConstexprFunctorBase<Mso::IFunctor<T
199
199
  public:
200
200
  constexpr FunctionPointerWrapper(TFunc func) noexcept : m_func(func) {}
201
201
 
202
- TResult Invoke(TArgs &&... args) noexcept override {
202
+ TResult Invoke(TArgs &&...args) noexcept override {
203
203
  return (*m_func)(std::forward<TArgs>(args)...);
204
204
  }
205
205
 
@@ -216,7 +216,7 @@ class FunctionPointerWrapperThrow final : public ConstexprFunctorBase<Mso::IFunc
216
216
  public:
217
217
  constexpr FunctionPointerWrapperThrow(TFunc func) noexcept : m_func(func) {}
218
218
 
219
- TResult Invoke(TArgs &&... args) override {
219
+ TResult Invoke(TArgs &&...args) override {
220
220
  return (*m_func)(std::forward<TArgs>(args)...);
221
221
  }
222
222
 
@@ -234,7 +234,7 @@ class StatelessFunctorWrapper final : public ConstexprFunctorBase<Mso::IFunctor<
234
234
  public:
235
235
  constexpr StatelessFunctorWrapper(TFunc &func) noexcept : m_func(func) {}
236
236
 
237
- TResult Invoke(TArgs &&... args) noexcept override {
237
+ TResult Invoke(TArgs &&...args) noexcept override {
238
238
  return m_func(std::forward<TArgs>(args)...);
239
239
  }
240
240
 
@@ -248,7 +248,7 @@ class StatelessFunctorWrapperThrow final : public ConstexprFunctorBase<Mso::IFun
248
248
  public:
249
249
  constexpr StatelessFunctorWrapperThrow(TFunc &func) noexcept : m_func(func) {}
250
250
 
251
- TResult Invoke(TArgs &&... args) override {
251
+ TResult Invoke(TArgs &&...args) override {
252
252
  return m_func(std::forward<TArgs>(args)...);
253
253
  }
254
254
 
@@ -178,7 +178,7 @@ class FunctorRef<TResult(TArgs...)>
178
178
  FunctorRefWrapper &operator=(FunctorRefWrapper const &) = delete;
179
179
  ~FunctorRefWrapper() = delete;
180
180
 
181
- TResult Invoke(TArgs &&... args) const noexcept override {
181
+ TResult Invoke(TArgs &&...args) const noexcept override {
182
182
  // If you see OACR warning "Nothrow Func Throws" here then it means that the
183
183
  // provided lambda or function object's operator() are not marked as noexcept.
184
184
 
@@ -269,7 +269,7 @@ class FunctorRefThrow<TResult(TArgs...)> final {
269
269
  FunctorRefThrowWrapper &operator=(FunctorRefThrowWrapper const &) = delete;
270
270
  ~FunctorRefThrowWrapper() = delete;
271
271
 
272
- TResult Invoke(TArgs &&... args) const override {
272
+ TResult Invoke(TArgs &&...args) const override {
273
273
  OACR_POSSIBLE_THROW;
274
274
  // We use const_cast to enable support for mutable lambdas
275
275
  return (*const_cast<FunctorRefThrowWrapper *>(this)->m_func)(std::forward<TArgs>(args)...);
@@ -197,7 +197,7 @@ namespace Internal {
197
197
 
198
198
  struct ExecutorInvoker {
199
199
  template <class TCallback, class... TArgs>
200
- auto Invoke(TCallback &&callback, TArgs &&... args) noexcept -> decltype(callback(std::forward<TArgs>(args)...)) {
200
+ auto Invoke(TCallback &&callback, TArgs &&...args) noexcept -> decltype(callback(std::forward<TArgs>(args)...)) {
201
201
  UNREFERENCED_OACR(this);
202
202
  static_assert(noexcept(callback(std::forward<TArgs>(args)...)), "Callback must not throw.");
203
203
  return callback(std::forward<TArgs>(args)...);
@@ -209,7 +209,7 @@ struct ThrowingExecutor : TBaseExecutor {
209
209
  using TBaseExecutor::TBaseExecutor;
210
210
 
211
211
  template <class TCallback, class... TArgs>
212
- auto Invoke(TCallback &&callback, TArgs &&... args) noexcept {
212
+ auto Invoke(TCallback &&callback, TArgs &&...args) noexcept {
213
213
  using TResult = decltype(callback(std::forward<TArgs>(args)...));
214
214
  constexpr const bool isNoExcept = noexcept(callback(std::forward<TArgs>(args)...));
215
215
  return Mso::Futures::MaybeInvoker<TResult, isNoExcept>::Invoke(
@@ -32,14 +32,14 @@ inline Future<void> MakeCompletedFuture() noexcept {
32
32
  }
33
33
 
34
34
  template <class T, class... TArgs>
35
- inline Future<T> MakeCompletedFutureEmplaced(TArgs &&... args) noexcept {
35
+ inline Future<T> MakeCompletedFutureEmplaced(TArgs &&...args) noexcept {
36
36
  Promise<T> promise;
37
37
  promise.EmplaceValue(std::forward<TArgs>(args)...);
38
38
  return promise.AsFuture();
39
39
  }
40
40
 
41
41
  template <class T, class U, class... TArgs>
42
- inline Future<T> MakeCompletedFutureEmplaced(std::initializer_list<U> il, TArgs &&... args) noexcept {
42
+ inline Future<T> MakeCompletedFutureEmplaced(std::initializer_list<U> il, TArgs &&...args) noexcept {
43
43
  Promise<T> promise;
44
44
  promise.EmplaceValue(il, std::forward<TArgs>(args)...);
45
45
  return promise.AsFuture();
@@ -59,14 +59,14 @@ inline Future<void> MakeSucceededFuture() noexcept {
59
59
  }
60
60
 
61
61
  template <class T, class... TArgs>
62
- inline Future<T> MakeSucceededFutureEmplaced(TArgs &&... args) noexcept {
62
+ inline Future<T> MakeSucceededFutureEmplaced(TArgs &&...args) noexcept {
63
63
  Promise<T> promise;
64
64
  promise.EmplaceValue(std::forward<TArgs>(args)...);
65
65
  return promise.AsFuture();
66
66
  }
67
67
 
68
68
  template <class T, class U, class... TArgs>
69
- inline Future<T> MakeSucceededFutureEmplaced(std::initializer_list<U> il, TArgs &&... args) noexcept {
69
+ inline Future<T> MakeSucceededFutureEmplaced(std::initializer_list<U> il, TArgs &&...args) noexcept {
70
70
  Promise<T> promise;
71
71
  promise.EmplaceValue(il, std::forward<TArgs>(args)...);
72
72
  return promise.AsFuture();