react-native-windows 0.76.3 → 0.77.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 (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -0,0 +1,117 @@
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 <chrono>
11
+ #include <iosfwd>
12
+ #include <string>
13
+ #include <tuple>
14
+ #include <unordered_map>
15
+
16
+ #include <jsi/jsi.h>
17
+
18
+ namespace facebook {
19
+ namespace jsi {
20
+
21
+ /// Methods for starting and collecting instrumentation, an \c Instrumentation
22
+ /// instance is associated with a particular \c Runtime instance, which it
23
+ /// controls the instrumentation of.
24
+ /// None of these functions should return newly created jsi values, nor should
25
+ /// it modify the values of any jsi values in the heap (although GCs are fine).
26
+ class JSI_EXPORT Instrumentation {
27
+ public:
28
+ virtual ~Instrumentation() = default;
29
+
30
+ /// Returns GC statistics as a JSON-encoded string, with an object containing
31
+ /// "type" and "version" fields outermost. "type" is a string, unique to a
32
+ /// particular implementation of \c jsi::Instrumentation, and "version" is a
33
+ /// number to indicate any revision to that implementation and its output
34
+ /// format.
35
+ ///
36
+ /// \pre This call can only be made on the instrumentation instance of a
37
+ /// runtime initialised to collect GC statistics.
38
+ ///
39
+ /// \post All cumulative measurements mentioned in the output are accumulated
40
+ /// across the entire lifetime of the Runtime.
41
+ ///
42
+ /// \return the GC statistics collected so far, as a JSON-encoded string.
43
+ virtual std::string getRecordedGCStats() = 0;
44
+
45
+ /// Request statistics about the current state of the runtime's heap. This
46
+ /// function can be called at any time, and should produce information that is
47
+ /// correct at the instant it is called (i.e, not stale).
48
+ ///
49
+ /// \return a map from a string key to a number associated with that
50
+ /// statistic.
51
+ virtual std::unordered_map<std::string, int64_t> getHeapInfo(
52
+ bool includeExpensive) = 0;
53
+
54
+ /// Perform a full garbage collection.
55
+ /// \param cause The cause of this collection, as it should be reported in
56
+ /// logs.
57
+ virtual void collectGarbage(std::string cause) = 0;
58
+
59
+ /// A HeapStatsUpdate is a tuple of the fragment index, the number of objects
60
+ /// in that fragment, and the number of bytes used by those objects.
61
+ /// A "fragment" is a view of all objects allocated within a time slice.
62
+ using HeapStatsUpdate = std::tuple<uint64_t, uint64_t, uint64_t>;
63
+
64
+ /// Start capturing JS stack-traces for all JS heap allocated objects. These
65
+ /// can be accessed via \c ::createSnapshotToFile().
66
+ /// \param fragmentCallback If present, invoke this callback every so often
67
+ /// with the most recently seen object ID, and a list of fragments that have
68
+ /// been updated. This callback will be invoked on the same thread that the
69
+ /// runtime is using.
70
+ virtual void startTrackingHeapObjectStackTraces(
71
+ std::function<void(
72
+ uint64_t lastSeenObjectID,
73
+ std::chrono::microseconds timestamp,
74
+ std::vector<HeapStatsUpdate> stats)> fragmentCallback) = 0;
75
+
76
+ /// Stop capture JS stack-traces for JS heap allocated objects.
77
+ virtual void stopTrackingHeapObjectStackTraces() = 0;
78
+
79
+ /// Start a heap sampling profiler that will sample heap allocations, and the
80
+ /// stack trace they were allocated at. Reports a summary of which functions
81
+ /// allocated the most.
82
+ /// \param samplingInterval The number of bytes allocated to wait between
83
+ /// samples. This will be used as the expected value of a poisson
84
+ /// distribution.
85
+ virtual void startHeapSampling(size_t samplingInterval) = 0;
86
+
87
+ /// Turns off the heap sampling profiler previously enabled via
88
+ /// \c startHeapSampling. Writes the output of the sampling heap profiler to
89
+ /// \p os. The output is a JSON formatted string.
90
+ virtual void stopHeapSampling(std::ostream& os) = 0;
91
+
92
+ /// Captures the heap to a file
93
+ ///
94
+ /// \param path to save the heap capture
95
+ virtual void createSnapshotToFile(const std::string& path) = 0;
96
+
97
+ /// Captures the heap to an output stream
98
+ ///
99
+ /// \param os output stream to write to.
100
+ virtual void createSnapshotToStream(std::ostream& os) = 0;
101
+
102
+ /// If the runtime has been created to trace to a temp file, flush
103
+ /// any unwritten parts of the trace of bridge traffic to the file,
104
+ /// and return the name of the file. Otherwise, return the empty string.
105
+ /// Tracing is disabled after this call.
106
+ virtual std::string flushAndDisableBridgeTrafficTrace() = 0;
107
+
108
+ /// Write basic block profile trace to the given file name.
109
+ virtual void writeBasicBlockProfileTraceToFile(
110
+ const std::string& fileName) const = 0;
111
+
112
+ /// Dump external profiler symbols to the given file name.
113
+ virtual void dumpProfilerSymbolsToFile(const std::string& fileName) const = 0;
114
+ };
115
+
116
+ } // namespace jsi
117
+ } // namespace facebook
@@ -0,0 +1,366 @@
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
+ namespace facebook {
11
+ namespace jsi {
12
+ namespace detail {
13
+
14
+ inline Value toValue(Runtime&, std::nullptr_t) {
15
+ return Value::null();
16
+ }
17
+ inline Value toValue(Runtime&, bool b) {
18
+ return Value(b);
19
+ }
20
+ inline Value toValue(Runtime&, double d) {
21
+ return Value(d);
22
+ }
23
+ inline Value toValue(Runtime&, float f) {
24
+ return Value(static_cast<double>(f));
25
+ }
26
+ inline Value toValue(Runtime&, int i) {
27
+ return Value(i);
28
+ }
29
+ inline Value toValue(Runtime& runtime, const char* str) {
30
+ return String::createFromAscii(runtime, str);
31
+ }
32
+ inline Value toValue(Runtime& runtime, const std::string& str) {
33
+ return String::createFromUtf8(runtime, str);
34
+ }
35
+ template <typename T>
36
+ inline Value toValue(Runtime& runtime, const T& other) {
37
+ static_assert(
38
+ std::is_base_of<Pointer, T>::value,
39
+ "This type cannot be converted to Value");
40
+ return Value(runtime, other);
41
+ }
42
+ inline Value toValue(Runtime& runtime, const Value& value) {
43
+ return Value(runtime, value);
44
+ }
45
+ inline Value&& toValue(Runtime&, Value&& value) {
46
+ return std::move(value);
47
+ }
48
+
49
+ inline PropNameID toPropNameID(Runtime& runtime, const char* name) {
50
+ return PropNameID::forAscii(runtime, name);
51
+ }
52
+ inline PropNameID toPropNameID(Runtime& runtime, const std::string& name) {
53
+ return PropNameID::forUtf8(runtime, name);
54
+ }
55
+ inline PropNameID&& toPropNameID(Runtime&, PropNameID&& name) {
56
+ return std::move(name);
57
+ }
58
+
59
+ /// Helper to throw while still compiling with exceptions turned off.
60
+ template <typename E, typename... Args>
61
+ [[noreturn]] inline void throwOrDie(Args&&... args) {
62
+ std::rethrow_exception(
63
+ std::make_exception_ptr(E{std::forward<Args>(args)...}));
64
+ }
65
+
66
+ } // namespace detail
67
+
68
+ template <typename T>
69
+ inline T Runtime::make(Runtime::PointerValue* pv) {
70
+ return T(pv);
71
+ }
72
+
73
+ #if JSI_VERSION >= 3
74
+ inline Runtime::PointerValue* Runtime::getPointerValue(jsi::Pointer& pointer) {
75
+ return pointer.ptr_;
76
+ }
77
+ #endif
78
+
79
+ inline const Runtime::PointerValue* Runtime::getPointerValue(
80
+ const jsi::Pointer& pointer) {
81
+ return pointer.ptr_;
82
+ }
83
+
84
+ inline const Runtime::PointerValue* Runtime::getPointerValue(
85
+ const jsi::Value& value) {
86
+ return value.data_.pointer.ptr_;
87
+ }
88
+
89
+ inline Value Object::getProperty(Runtime& runtime, const char* name) const {
90
+ return getProperty(runtime, String::createFromAscii(runtime, name));
91
+ }
92
+
93
+ inline Value Object::getProperty(Runtime& runtime, const String& name) const {
94
+ return runtime.getProperty(*this, name);
95
+ }
96
+
97
+ inline Value Object::getProperty(Runtime& runtime, const PropNameID& name)
98
+ const {
99
+ return runtime.getProperty(*this, name);
100
+ }
101
+
102
+ inline bool Object::hasProperty(Runtime& runtime, const char* name) const {
103
+ return hasProperty(runtime, String::createFromAscii(runtime, name));
104
+ }
105
+
106
+ inline bool Object::hasProperty(Runtime& runtime, const String& name) const {
107
+ return runtime.hasProperty(*this, name);
108
+ }
109
+
110
+ inline bool Object::hasProperty(Runtime& runtime, const PropNameID& name)
111
+ const {
112
+ return runtime.hasProperty(*this, name);
113
+ }
114
+
115
+ template <typename T>
116
+ void Object::setProperty(Runtime& runtime, const char* name, T&& value)
117
+ JSI_CONST_10 {
118
+ setProperty(
119
+ runtime, String::createFromAscii(runtime, name), std::forward<T>(value));
120
+ }
121
+
122
+ template <typename T>
123
+ void Object::setProperty(Runtime& runtime, const String& name, T&& value)
124
+ JSI_CONST_10 {
125
+ setPropertyValue(
126
+ runtime, name, detail::toValue(runtime, std::forward<T>(value)));
127
+ }
128
+
129
+ template <typename T>
130
+ void Object::setProperty(Runtime& runtime, const PropNameID& name, T&& value)
131
+ JSI_CONST_10 {
132
+ setPropertyValue(
133
+ runtime, name, detail::toValue(runtime, std::forward<T>(value)));
134
+ }
135
+
136
+ inline Array Object::getArray(Runtime& runtime) const& {
137
+ assert(runtime.isArray(*this));
138
+ (void)runtime; // when assert is disabled we need to mark this as used
139
+ return Array(runtime.cloneObject(ptr_));
140
+ }
141
+
142
+ inline Array Object::getArray(Runtime& runtime) && {
143
+ assert(runtime.isArray(*this));
144
+ (void)runtime; // when assert is disabled we need to mark this as used
145
+ Runtime::PointerValue* value = ptr_;
146
+ ptr_ = nullptr;
147
+ return Array(value);
148
+ }
149
+
150
+ inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) const& {
151
+ assert(runtime.isArrayBuffer(*this));
152
+ (void)runtime; // when assert is disabled we need to mark this as used
153
+ return ArrayBuffer(runtime.cloneObject(ptr_));
154
+ }
155
+
156
+ inline ArrayBuffer Object::getArrayBuffer(Runtime& runtime) && {
157
+ assert(runtime.isArrayBuffer(*this));
158
+ (void)runtime; // when assert is disabled we need to mark this as used
159
+ Runtime::PointerValue* value = ptr_;
160
+ ptr_ = nullptr;
161
+ return ArrayBuffer(value);
162
+ }
163
+
164
+ inline Function Object::getFunction(Runtime& runtime) const& {
165
+ assert(runtime.isFunction(*this));
166
+ return Function(runtime.cloneObject(ptr_));
167
+ }
168
+
169
+ inline Function Object::getFunction(Runtime& runtime) && {
170
+ assert(runtime.isFunction(*this));
171
+ (void)runtime; // when assert is disabled we need to mark this as used
172
+ Runtime::PointerValue* value = ptr_;
173
+ ptr_ = nullptr;
174
+ return Function(value);
175
+ }
176
+
177
+ template <typename T>
178
+ inline bool Object::isHostObject(Runtime& runtime) const {
179
+ return runtime.isHostObject(*this) &&
180
+ std::dynamic_pointer_cast<T>(runtime.getHostObject(*this));
181
+ }
182
+
183
+ template <>
184
+ inline bool Object::isHostObject<HostObject>(Runtime& runtime) const {
185
+ return runtime.isHostObject(*this);
186
+ }
187
+
188
+ template <typename T>
189
+ inline std::shared_ptr<T> Object::getHostObject(Runtime& runtime) const {
190
+ assert(isHostObject<T>(runtime));
191
+ return std::static_pointer_cast<T>(runtime.getHostObject(*this));
192
+ }
193
+
194
+ template <typename T>
195
+ inline std::shared_ptr<T> Object::asHostObject(Runtime& runtime) const {
196
+ if (!isHostObject<T>(runtime)) {
197
+ detail::throwOrDie<JSINativeException>(
198
+ "Object is not a HostObject of desired type");
199
+ }
200
+ return std::static_pointer_cast<T>(runtime.getHostObject(*this));
201
+ }
202
+
203
+ template <>
204
+ inline std::shared_ptr<HostObject> Object::getHostObject<HostObject>(
205
+ Runtime& runtime) const {
206
+ assert(runtime.isHostObject(*this));
207
+ return runtime.getHostObject(*this);
208
+ }
209
+
210
+ #if JSI_VERSION >= 7
211
+ template <typename T>
212
+ inline bool Object::hasNativeState(Runtime& runtime) const {
213
+ return runtime.hasNativeState(*this) &&
214
+ std::dynamic_pointer_cast<T>(runtime.getNativeState(*this));
215
+ }
216
+
217
+ template <>
218
+ inline bool Object::hasNativeState<NativeState>(Runtime& runtime) const {
219
+ return runtime.hasNativeState(*this);
220
+ }
221
+
222
+ template <typename T>
223
+ inline std::shared_ptr<T> Object::getNativeState(Runtime& runtime) const {
224
+ assert(hasNativeState<T>(runtime));
225
+ return std::static_pointer_cast<T>(runtime.getNativeState(*this));
226
+ }
227
+
228
+ inline void Object::setNativeState(
229
+ Runtime& runtime,
230
+ std::shared_ptr<NativeState> state) const {
231
+ runtime.setNativeState(*this, state);
232
+ }
233
+ #endif
234
+
235
+ #if JSI_VERSION >= 11
236
+ inline void Object::setExternalMemoryPressure(Runtime& runtime, size_t amt)
237
+ const {
238
+ runtime.setExternalMemoryPressure(*this, amt);
239
+ }
240
+ #endif
241
+
242
+ inline Array Object::getPropertyNames(Runtime& runtime) const {
243
+ return runtime.getPropertyNames(*this);
244
+ }
245
+
246
+ inline Value WeakObject::lock(Runtime& runtime) JSI_CONST_10 {
247
+ return runtime.lockWeakObject(*this);
248
+ }
249
+
250
+ template <typename T>
251
+ void Array::setValueAtIndex(Runtime& runtime, size_t i, T&& value)
252
+ JSI_CONST_10 {
253
+ setValueAtIndexImpl(
254
+ runtime, i, detail::toValue(runtime, std::forward<T>(value)));
255
+ }
256
+
257
+ inline Value Array::getValueAtIndex(Runtime& runtime, size_t i) const {
258
+ return runtime.getValueAtIndex(*this, i);
259
+ }
260
+
261
+ inline Function Function::createFromHostFunction(
262
+ Runtime& runtime,
263
+ const jsi::PropNameID& name,
264
+ unsigned int paramCount,
265
+ jsi::HostFunctionType func) {
266
+ return runtime.createFunctionFromHostFunction(
267
+ name, paramCount, std::move(func));
268
+ }
269
+
270
+ inline Value Function::call(Runtime& runtime, const Value* args, size_t count)
271
+ const {
272
+ return runtime.call(*this, Value::undefined(), args, count);
273
+ }
274
+
275
+ inline Value Function::call(Runtime& runtime, std::initializer_list<Value> args)
276
+ const {
277
+ return call(runtime, args.begin(), args.size());
278
+ }
279
+
280
+ template <typename... Args>
281
+ inline Value Function::call(Runtime& runtime, Args&&... args) const {
282
+ // A more awesome version of this would be able to create raw values
283
+ // which can be used directly without wrapping and unwrapping, but
284
+ // this will do for now.
285
+ return call(runtime, {detail::toValue(runtime, std::forward<Args>(args))...});
286
+ }
287
+
288
+ inline Value Function::callWithThis(
289
+ Runtime& runtime,
290
+ const Object& jsThis,
291
+ const Value* args,
292
+ size_t count) const {
293
+ return runtime.call(*this, Value(runtime, jsThis), args, count);
294
+ }
295
+
296
+ inline Value Function::callWithThis(
297
+ Runtime& runtime,
298
+ const Object& jsThis,
299
+ std::initializer_list<Value> args) const {
300
+ return callWithThis(runtime, jsThis, args.begin(), args.size());
301
+ }
302
+
303
+ template <typename... Args>
304
+ inline Value Function::callWithThis(
305
+ Runtime& runtime,
306
+ const Object& jsThis,
307
+ Args&&... args) const {
308
+ // A more awesome version of this would be able to create raw values
309
+ // which can be used directly without wrapping and unwrapping, but
310
+ // this will do for now.
311
+ return callWithThis(
312
+ runtime, jsThis, {detail::toValue(runtime, std::forward<Args>(args))...});
313
+ }
314
+
315
+ template <typename... Args>
316
+ inline Array Array::createWithElements(Runtime& runtime, Args&&... args) {
317
+ return createWithElements(
318
+ runtime, {detail::toValue(runtime, std::forward<Args>(args))...});
319
+ }
320
+
321
+ template <typename... Args>
322
+ inline std::vector<PropNameID> PropNameID::names(
323
+ Runtime& runtime,
324
+ Args&&... args) {
325
+ return names({detail::toPropNameID(runtime, std::forward<Args>(args))...});
326
+ }
327
+
328
+ template <size_t N>
329
+ inline std::vector<PropNameID> PropNameID::names(
330
+ PropNameID (&&propertyNames)[N]) {
331
+ std::vector<PropNameID> result;
332
+ result.reserve(N);
333
+ for (auto& name : propertyNames) {
334
+ result.push_back(std::move(name));
335
+ }
336
+ return result;
337
+ }
338
+
339
+ inline Value Function::callAsConstructor(
340
+ Runtime& runtime,
341
+ const Value* args,
342
+ size_t count) const {
343
+ return runtime.callAsConstructor(*this, args, count);
344
+ }
345
+
346
+ inline Value Function::callAsConstructor(
347
+ Runtime& runtime,
348
+ std::initializer_list<Value> args) const {
349
+ return callAsConstructor(runtime, args.begin(), args.size());
350
+ }
351
+
352
+ template <typename... Args>
353
+ inline Value Function::callAsConstructor(Runtime& runtime, Args&&... args)
354
+ const {
355
+ return callAsConstructor(
356
+ runtime, {detail::toValue(runtime, std::forward<Args>(args))...});
357
+ }
358
+
359
+ #if JSI_VERSION >= 8
360
+ String BigInt::toString(Runtime& runtime, int radix) const {
361
+ return runtime.bigintToString(*this, radix);
362
+ }
363
+ #endif
364
+
365
+ } // namespace jsi
366
+ } // namespace facebook