react-native-windows 0.81.1 → 0.82.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 (724) hide show
  1. package/.flowconfig +11 -10
  2. package/Directory.Build.props +3 -3
  3. package/Folly/Folly.vcxproj +1 -3
  4. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -3
  5. package/Libraries/Alert/RCTAlertManager.android.js +4 -2
  6. package/Libraries/Animated/Animated.d.ts +2 -0
  7. package/Libraries/Animated/AnimatedEvent.js +1 -1
  8. package/Libraries/Animated/AnimatedExports.js.flow +1 -0
  9. package/Libraries/Animated/AnimatedImplementation.js +4 -2
  10. package/Libraries/Animated/AnimatedMock.js +1 -1
  11. package/Libraries/Animated/Easing.js +2 -0
  12. package/Libraries/Animated/NativeAnimatedAllowlist.js +1 -0
  13. package/Libraries/Animated/animations/Animation.js +19 -20
  14. package/Libraries/Animated/animations/TimingAnimation.js +2 -0
  15. package/Libraries/Animated/components/AnimatedScrollView.js +3 -2
  16. package/Libraries/Animated/components/AnimatedSectionList.js +1 -1
  17. package/Libraries/Animated/nodes/AnimatedColor.js +9 -9
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +4 -4
  19. package/Libraries/Animated/nodes/AnimatedNode.js +14 -7
  20. package/Libraries/Animated/nodes/AnimatedObject.js +7 -7
  21. package/Libraries/Animated/nodes/AnimatedProps.js +32 -32
  22. package/Libraries/Animated/nodes/AnimatedStyle.js +23 -21
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +6 -6
  24. package/Libraries/Animated/nodes/AnimatedValue.js +18 -18
  25. package/Libraries/AppState/AppState.js +8 -4
  26. package/Libraries/BatchedBridge/MessageQueue.js +4 -0
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  28. package/Libraries/Blob/BlobManager.js +1 -1
  29. package/Libraries/Blob/URLSearchParams.js +2 -0
  30. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -2
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +2 -2
  32. package/Libraries/Components/Button.js +1 -1
  33. package/Libraries/Components/Button.windows.js +1 -1
  34. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +2 -2
  35. package/Libraries/Components/Glyph/GlyphNativeComponent.js +1 -1
  36. package/Libraries/Components/Popup/PopupNativeComponent.js +1 -0
  37. package/Libraries/Components/Pressable/Pressable.d.ts +8 -0
  38. package/Libraries/Components/Pressable/Pressable.js +10 -1
  39. package/Libraries/Components/Pressable/Pressable.windows.js +30 -2
  40. package/Libraries/Components/Pressable/useAndroidRippleForView.js +2 -2
  41. package/Libraries/Components/ScrollView/ScrollView.js +13 -4
  42. package/Libraries/Components/ScrollView/ScrollView.windows.js +14 -5
  43. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  44. package/Libraries/Components/StatusBar/StatusBar.js +2 -2
  45. package/Libraries/Components/Switch/Switch.js +2 -2
  46. package/Libraries/Components/Switch/Switch.windows.js +2 -2
  47. package/Libraries/Components/TextInput/TextInput.flow.js +12 -5
  48. package/Libraries/Components/TextInput/TextInput.flow.windows.js +12 -5
  49. package/Libraries/Components/TextInput/TextInput.js +14 -5
  50. package/Libraries/Components/TextInput/TextInput.windows.js +23 -11
  51. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  52. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  53. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  54. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  55. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  56. package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
  57. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  58. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -1
  59. package/Libraries/Components/View/View.js +81 -167
  60. package/Libraries/Components/View/View.windows.js +202 -302
  61. package/Libraries/Core/Devtools/loadBundleFromServer.js +1 -1
  62. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +1 -1
  63. package/Libraries/Core/ExceptionsManager.js +4 -2
  64. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  65. package/Libraries/Core/ReactNativeVersion.js +37 -10
  66. package/Libraries/Core/Timers/JSTimers.js +3 -1
  67. package/Libraries/Core/Timers/immediateShim.js +1 -1
  68. package/Libraries/Core/Timers/queueMicrotask.js +1 -0
  69. package/Libraries/Core/setUpPerformance.js +2 -1
  70. package/Libraries/Debugging/DebuggingOverlayRegistry.js +5 -3
  71. package/Libraries/Image/AssetSourceResolver.windows.js +2 -2
  72. package/Libraries/Image/Image.android.js +327 -111
  73. package/Libraries/Image/Image.ios.js +6 -1
  74. package/Libraries/Image/Image.windows.js +28 -61
  75. package/Libraries/Image/ImageSourceUtils.js +8 -2
  76. package/Libraries/Image/resolveAssetSource.js +1 -1
  77. package/Libraries/Image/resolveAssetSource.windows.js +1 -1
  78. package/Libraries/Interaction/InteractionManager.js +118 -167
  79. package/Libraries/Interaction/PanResponder.js +1 -1
  80. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -0
  81. package/Libraries/Lists/FlatList.js +5 -6
  82. package/Libraries/LogBox/Data/LogBoxData.js +5 -2
  83. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  84. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -1
  85. package/Libraries/Modal/Modal.js +3 -3
  86. package/Libraries/Modal/Modal.windows.js +2 -2
  87. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  88. package/Libraries/NativeComponent/ViewConfig.js +2 -2
  89. package/Libraries/Network/RCTNetworking.android.js +1 -1
  90. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  91. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  92. package/Libraries/Network/XMLHttpRequest.js +20 -5
  93. package/Libraries/Network/convertRequestBody.js +1 -1
  94. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +10 -9
  95. package/Libraries/Pressability/HoverState.js +2 -0
  96. package/Libraries/Pressability/Pressability.js +1 -1
  97. package/Libraries/Pressability/Pressability.windows.js +5 -5
  98. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  99. package/Libraries/ReactNative/AppRegistryImpl.js +4 -2
  100. package/Libraries/ReactNative/PaperUIManager.windows.js +4 -4
  101. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -0
  102. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +3 -3
  103. package/Libraries/ReactNative/RendererImplementation.js +116 -116
  104. package/Libraries/ReactNative/UIManager.js +3 -3
  105. package/Libraries/ReactNative/renderApplication.js +1 -0
  106. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -1
  107. package/Libraries/Renderer/implementations/ReactFabric-dev.js +38 -35
  108. package/Libraries/Renderer/implementations/ReactFabric-prod.js +51 -22
  109. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +54 -24
  110. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +36 -33
  111. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5 -5
  112. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5 -5
  113. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  114. package/Libraries/Share/Share.js +4 -0
  115. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  116. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +2 -2
  117. package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +2 -0
  118. package/Libraries/StyleSheet/StyleSheet.d.ts +7 -22
  119. package/Libraries/StyleSheet/StyleSheetExports.js +2 -8
  120. package/Libraries/StyleSheet/StyleSheetExports.js.flow +11 -18
  121. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  122. package/Libraries/StyleSheet/processAspectRatio.js +2 -0
  123. package/Libraries/StyleSheet/processFilter.js +5 -5
  124. package/Libraries/StyleSheet/splitLayoutProps.js +2 -2
  125. package/Libraries/Text/Text.js +534 -234
  126. package/Libraries/Text/Text.windows.js +622 -265
  127. package/Libraries/Text/TextNativeComponent.js +2 -2
  128. package/Libraries/Utilities/Appearance.d.ts +3 -5
  129. package/Libraries/Utilities/Appearance.js +5 -17
  130. package/Libraries/Utilities/HMRClient.js +2 -1
  131. package/Libraries/Utilities/Platform.android.js +3 -3
  132. package/Libraries/Utilities/Platform.d.ts +1 -0
  133. package/Libraries/Utilities/Platform.ios.js +1 -1
  134. package/Libraries/Utilities/Platform.windows.js +3 -3
  135. package/Libraries/Utilities/PlatformTypes.js +1 -1
  136. package/Libraries/Utilities/ReactNativeTestTools.js +12 -0
  137. package/Libraries/Utilities/SceneTracker.js +1 -1
  138. package/Libraries/Utilities/codegenNativeCommands.js +1 -1
  139. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  140. package/Libraries/Utilities/createPerformanceLogger.js +32 -0
  141. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -0
  142. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  143. package/Libraries/Utilities/useMergeRefs.js +1 -1
  144. package/Libraries/WebSocket/WebSocketInterceptor.js +2 -0
  145. package/Libraries/promiseRejectionTrackingOptions.js +17 -31
  146. package/Libraries/vendor/emitter/EventEmitter.js +1 -1
  147. package/Microsoft.ReactNative/App.xaml +5 -0
  148. package/Microsoft.ReactNative/Base/CxxReactIncludes.h +0 -3
  149. package/Microsoft.ReactNative/CompositionContext.idl +0 -2
  150. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +2 -2
  151. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +0 -2
  152. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +26 -0
  153. package/Microsoft.ReactNative/Fabric/ComponentView.h +2 -0
  154. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +0 -1
  155. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +0 -69
  156. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +1 -15
  157. package/Microsoft.ReactNative/Fabric/Composition/CompositionAnnotationProvider.cpp +2 -5
  158. package/Microsoft.ReactNative/Fabric/Composition/CompositionAnnotationProvider.h +1 -4
  159. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -31
  160. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +0 -10
  161. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +0 -4
  162. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +65 -32
  163. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +9 -0
  164. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +8 -6
  165. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +0 -2
  166. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +0 -2
  167. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +0 -9
  168. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +2 -11
  169. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +0 -4
  170. package/Microsoft.ReactNative/Fabric/Composition/CompositionTextProvider.cpp +4 -7
  171. package/Microsoft.ReactNative/Fabric/Composition/CompositionTextProvider.h +1 -5
  172. package/Microsoft.ReactNative/Fabric/Composition/CompositionTextRangeProvider.cpp +68 -53
  173. package/Microsoft.ReactNative/Fabric/Composition/CompositionTextRangeProvider.h +1 -5
  174. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +20 -18
  175. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +10 -3
  176. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +30 -9
  177. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +4 -1
  178. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +3 -2
  179. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +0 -2
  180. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +0 -1
  181. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +550 -4
  182. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +52 -0
  183. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +16 -0
  184. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +6 -0
  185. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +0 -6
  186. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +0 -2
  187. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +53 -2
  188. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +8 -1
  189. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +0 -2
  190. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +0 -1
  191. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +5 -2
  192. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +4 -1
  193. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +6 -30
  194. package/Microsoft.ReactNative/Fabric/Composition/Theme.h +1 -3
  195. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  196. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +36 -14
  197. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +0 -1
  198. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +0 -1
  199. package/Microsoft.ReactNative/Fabric/ImageManager.cpp +0 -4
  200. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +1 -1
  201. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +8 -0
  202. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.h +3 -0
  203. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -11
  204. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.h +2 -1
  205. package/Microsoft.ReactNative/IReactContext.cpp +2 -25
  206. package/Microsoft.ReactNative/IReactContext.h +0 -7
  207. package/Microsoft.ReactNative/IReactContext.idl +4 -29
  208. package/Microsoft.ReactNative/IReactModuleBuilder.cpp +24 -140
  209. package/Microsoft.ReactNative/IReactModuleBuilder.h +0 -11
  210. package/Microsoft.ReactNative/IReactPackageBuilder.idl +1 -16
  211. package/Microsoft.ReactNative/IReactPackageProvider.idl +0 -1
  212. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +10 -0
  213. package/Microsoft.ReactNative/JsiApi.cpp +4 -3
  214. package/Microsoft.ReactNative/JsiApi.h +2 -3
  215. package/Microsoft.ReactNative/JsiApi.idl +3 -2
  216. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +6 -214
  217. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -252
  218. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +0 -37
  219. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -140
  220. package/Microsoft.ReactNative/Modules/AlertModule.h +0 -2
  221. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +5 -10
  222. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +0 -1
  223. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +1 -96
  224. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.h +0 -14
  225. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +0 -53
  226. package/Microsoft.ReactNative/Modules/AppStateModule.h +0 -5
  227. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +5 -14
  228. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.h +0 -2
  229. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +1 -9
  230. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +0 -4
  231. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +0 -2
  232. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +16 -90
  233. package/Microsoft.ReactNative/Modules/I18nManagerModule.cpp +3 -8
  234. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +11 -48
  235. package/Microsoft.ReactNative/Modules/LinkingManagerModule.cpp +0 -3
  236. package/Microsoft.ReactNative/Modules/LogBoxModule.cpp +30 -102
  237. package/Microsoft.ReactNative/Modules/LogBoxModule.h +0 -7
  238. package/Microsoft.ReactNative/Modules/Timing.cpp +7 -9
  239. package/Microsoft.ReactNative/Pch/pch.h +0 -28
  240. package/Microsoft.ReactNative/ReactCoreInjection.h +0 -1
  241. package/Microsoft.ReactNative/ReactHost/IReactInstance.h +0 -8
  242. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -15
  243. package/Microsoft.ReactNative/ReactHost/MsoReactContext.h +0 -2
  244. package/Microsoft.ReactNative/ReactHost/React.h +0 -44
  245. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +10 -47
  246. package/Microsoft.ReactNative/ReactHost/ReactHost.h +1 -1
  247. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +30 -586
  248. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +2 -37
  249. package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +0 -13
  250. package/Microsoft.ReactNative/ReactHost/React_Win.h +0 -1
  251. package/Microsoft.ReactNative/ReactInstanceSettings.cpp +0 -8
  252. package/Microsoft.ReactNative/ReactInstanceSettings.h +0 -13
  253. package/Microsoft.ReactNative/ReactInstanceSettings.idl +7 -23
  254. package/Microsoft.ReactNative/ReactNativeHost.cpp +10 -35
  255. package/Microsoft.ReactNative/ReactNativeHost.h +0 -1
  256. package/Microsoft.ReactNative/ReactNativeIsland.idl +0 -4
  257. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +9 -36
  258. package/Microsoft.ReactNative/ReactPackageBuilder.h +4 -38
  259. package/Microsoft.ReactNative/RedBox.cpp +9 -362
  260. package/Microsoft.ReactNative/Theme.idl +0 -2
  261. package/Microsoft.ReactNative/Timer.cpp +3 -2
  262. package/Microsoft.ReactNative/Utils/Helpers.cpp +0 -47
  263. package/Microsoft.ReactNative/Utils/Helpers.h +0 -5
  264. package/Microsoft.ReactNative/Utils/IcuUtils.cpp +84 -0
  265. package/Microsoft.ReactNative/Utils/IcuUtils.h +42 -0
  266. package/Microsoft.ReactNative/Utils/KeyboardUtils.cpp +0 -11
  267. package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +0 -4
  268. package/Microsoft.ReactNative/Utils/ThemeUtils.h +1 -5
  269. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +0 -2
  270. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +0 -245
  271. package/Microsoft.ReactNative/Utils/ValueUtils.h +0 -23
  272. package/Microsoft.ReactNative/ViewProps.idl +0 -2
  273. package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -278
  274. package/Microsoft.ReactNative/Views/DevMenu.h +0 -5
  275. package/Microsoft.ReactNative/XamlApplication.cpp +71 -0
  276. package/Microsoft.ReactNative/XamlApplication.h +47 -0
  277. package/Microsoft.ReactNative/XamlApplication.idl +19 -0
  278. package/Microsoft.ReactNative/XamlUIService.cpp +0 -54
  279. package/Microsoft.ReactNative/XamlUIService.h +0 -12
  280. package/Microsoft.ReactNative/XamlUIService.idl +0 -12
  281. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -19
  282. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
  283. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +191 -114
  284. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +5 -0
  285. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +37 -0
  286. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +68 -0
  287. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +77 -11
  288. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
  289. package/Microsoft.ReactNative.Cxx/NamespaceRedirect.h +0 -5
  290. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +93 -1
  291. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.cpp +4 -3
  292. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +2 -2
  293. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +2 -55
  294. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.h +4 -8
  295. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +5 -0
  296. package/Microsoft.ReactNative.Cxx/ReactCommon/react/timing/primitives.h +32 -4
  297. package/Microsoft.ReactNative.Cxx/ReactContext.h +0 -13
  298. package/Microsoft.ReactNative.Cxx/StructInfo.h +8 -1
  299. package/Microsoft.ReactNative.Cxx/UI.Composition.Effects.h +0 -4
  300. package/Microsoft.ReactNative.Cxx/UI.Composition.h +0 -4
  301. package/Microsoft.ReactNative.Cxx/UI.Input.h +0 -4
  302. package/Microsoft.ReactNative.Cxx/UI.Popups.h +0 -4
  303. package/Microsoft.ReactNative.Cxx/UI.Text.h +0 -4
  304. package/Microsoft.ReactNative.Cxx/XamlUtils.h +0 -33
  305. package/Microsoft.ReactNative.Managed/JSValueReader.cs +0 -4
  306. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -3
  307. package/Microsoft.ReactNative.Managed/ReactContext.cs +0 -5
  308. package/Microsoft.ReactNative.Managed/ReactContextGenerator.cs +0 -4
  309. package/Microsoft.ReactNative.Managed/ReactPackageBuilderExtensions.cs +0 -25
  310. package/Microsoft.ReactNative.Managed/ReactSettingsSnapshot.cs +0 -4
  311. package/Microsoft.ReactNative.Managed/ReflectionReactPackageProvider.cs +1 -2
  312. package/Microsoft.ReactNative.Managed.CodeGen/CodeAnalyzer.cs +0 -10
  313. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.ViewManager.cs +0 -36
  314. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.cs +0 -6
  315. package/Microsoft.ReactNative.Managed.CodeGen/Model/ReactAssembly.cs +0 -2
  316. package/Microsoft.ReactNative.Managed.CodeGen/Model/ReactTypes.cs +0 -2
  317. package/Microsoft.ReactNative.Managed.CodeGen/ReactNativeNames.cs +0 -2
  318. package/Mso/src/dispatchQueue/queueService.cpp +3 -1
  319. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -10
  320. package/PropertySheets/Bundle.Common.targets +1 -1
  321. package/PropertySheets/Bundle.props +3 -4
  322. package/PropertySheets/External/Microsoft.ReactNative.Common.props +0 -1
  323. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CSharpApp.targets +1 -1
  324. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CppApp.targets +1 -1
  325. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  326. package/PropertySheets/JSEngine.props +1 -1
  327. package/PropertySheets/NuGet.LockFile.props +0 -8
  328. package/PropertySheets/OutputMSBuildProperties.targets +0 -1
  329. package/PropertySheets/React.Cpp.props +3 -5
  330. package/PropertySheets/WinUI.props +3 -3
  331. package/README.md +1 -5
  332. package/ReactCommon/ReactCommon.vcxproj +12 -31
  333. package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
  334. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +3 -2
  335. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +5 -2
  336. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +20 -4
  337. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +113 -1
  338. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +14 -6
  339. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h +1 -0
  340. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/tracing/RuntimeSamplingProfileTraceEventSerializer.cpp +351 -0
  341. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +2 -2
  342. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +42 -36
  343. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +15 -3
  344. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +1 -1
  345. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h +174 -0
  346. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +1 -0
  347. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +26 -3
  348. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +1 -1
  349. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +1 -1
  350. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/imagemanager/primitives.h +189 -0
  351. package/ReactCommon/TEMP_UntilReactCommonUpdate/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +27 -8
  352. package/ReactCommon/cgmanifest.json +1 -1
  353. package/Scripts/Microsoft.ReactNative.nuspec +15 -33
  354. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +23 -23
  355. package/Scripts/OfficeReact.Win32.nuspec +0 -3
  356. package/Scripts/creaternwapp.cmd +1 -1
  357. package/Shared/DevServerHelper.h +17 -21
  358. package/Shared/DevSettings.h +1 -25
  359. package/Shared/DevSupportManager.cpp +0 -50
  360. package/Shared/DevSupportManager.h +0 -4
  361. package/Shared/Hermes/HermesRuntimeTargetDelegate.cpp +5 -1
  362. package/Shared/HermesRuntimeHolder.cpp +0 -31
  363. package/Shared/HermesRuntimeHolder.h +0 -14
  364. package/Shared/IDevSupportManager.h +0 -6
  365. package/Shared/InstanceManager.cpp +0 -97
  366. package/Shared/InstanceManager.h +0 -53
  367. package/Shared/JSI/ScriptStore.h +1 -1
  368. package/Shared/Logging.cpp +1 -12
  369. package/Shared/Modules/CxxModuleUtilities.cpp +0 -9
  370. package/Shared/Modules/CxxModuleUtilities.h +0 -8
  371. package/Shared/Networking/OriginPolicyHttpFilter.cpp +9 -1
  372. package/Shared/OInstance.cpp +144 -424
  373. package/Shared/OInstance.h +0 -81
  374. package/Shared/Shared.vcxitems +83 -203
  375. package/Shared/Shared.vcxitems.filters +8 -67
  376. package/Shared/Threading/MessageQueueThreadFactory.cpp +0 -6
  377. package/Shared/Threading/MessageQueueThreadFactory.h +0 -4
  378. package/Shared/TurboModuleManager.cpp +0 -4
  379. package/Shared/Utils.cpp +26 -0
  380. package/Shared/Utils.h +3 -0
  381. package/codegen/NativeDOMSpec.g.h +41 -35
  382. package/codegen/NativeIntersectionObserverSpec.g.h +9 -21
  383. package/codegen/NativePerformanceSpec.g.h +47 -35
  384. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +177 -129
  385. package/codegen/react/components/rnwcore/ActivityIndicatorView.g.h +14 -0
  386. package/codegen/react/components/rnwcore/AndroidDrawerLayout.g.h +14 -0
  387. package/codegen/react/components/rnwcore/AndroidHorizontalScrollContentView.g.h +14 -0
  388. package/codegen/react/components/rnwcore/AndroidProgressBar.g.h +14 -0
  389. package/codegen/react/components/rnwcore/AndroidSwipeRefreshLayout.g.h +14 -0
  390. package/codegen/react/components/rnwcore/AndroidSwitch.g.h +14 -0
  391. package/codegen/react/components/rnwcore/DebuggingOverlay.g.h +14 -0
  392. package/codegen/react/components/rnwcore/EventEmitters.cpp +25 -0
  393. package/codegen/react/components/rnwcore/EventEmitters.h +25 -0
  394. package/codegen/react/components/rnwcore/InputAccessory.g.h +14 -0
  395. package/codegen/react/components/rnwcore/ModalHostView.g.h +14 -0
  396. package/codegen/react/components/rnwcore/Props.cpp +41 -2
  397. package/codegen/react/components/rnwcore/Props.h +51 -2
  398. package/codegen/react/components/rnwcore/PullToRefreshView.g.h +14 -0
  399. package/codegen/react/components/rnwcore/SafeAreaView.g.h +14 -0
  400. package/codegen/react/components/rnwcore/Switch.g.h +14 -0
  401. package/codegen/react/components/rnwcore/UnimplementedNativeView.g.h +14 -0
  402. package/codegen/react/components/rnwcore/VirtualView.g.h +18 -0
  403. package/codegen/react/components/rnwcore/VirtualViewExperimental.g.h +240 -0
  404. package/codegen/rnwcoreJSI-generated.cpp +106 -51
  405. package/codegen/rnwcoreJSI.h +148 -67
  406. package/fmt/cgmanifest.json +1 -1
  407. package/fmt/fmt.vcxproj +0 -8
  408. package/index.js +8 -2
  409. package/index.windows.js +8 -2
  410. package/jest/local-setup.js +2 -2
  411. package/jest/mock.js +1 -1
  412. package/jest/mockComponent.js +9 -9
  413. package/jest/mockNativeComponent.js +3 -2
  414. package/jest/mocks/Modal.js +1 -1
  415. package/jest/mocks/ScrollView.js +1 -1
  416. package/jest/mocks/ViewNativeComponent.js +1 -1
  417. package/jest/setup.js +23 -12
  418. package/just-task.js +14 -0
  419. package/package.json +31 -32
  420. package/src/private/animated/NativeAnimatedHelper.js +16 -5
  421. package/src/private/animated/createAnimatedPropsHook.js +11 -60
  422. package/src/private/animated/createAnimatedPropsMemoHook.js +8 -54
  423. package/src/private/components/virtualview/VirtualView.js +43 -12
  424. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +93 -0
  425. package/src/private/components/virtualview/VirtualViewNativeComponent.js +6 -0
  426. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +2 -2
  427. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -2
  428. package/src/private/featureflags/ReactNativeFeatureFlags.js +80 -52
  429. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  430. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -6
  431. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  432. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +0 -1
  433. package/src/private/types/HostInstance.js +4 -1
  434. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +22 -2
  435. package/src/private/webapis/dom/nodes/ReactNativeElement.js +1 -1
  436. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +5 -3
  437. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +16 -13
  438. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +45 -22
  439. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  440. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +26 -192
  441. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +15 -12
  442. package/src/private/webapis/dom/oldstylecollections/NodeList.js +14 -11
  443. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  444. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +19 -74
  445. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +0 -4
  446. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  447. package/src/private/webapis/performance/EventTiming.js +6 -10
  448. package/src/private/webapis/performance/Performance.js +309 -164
  449. package/src/private/webapis/performance/PerformanceEntry.js +20 -16
  450. package/src/private/webapis/performance/PerformanceObserver.js +8 -29
  451. package/src/private/webapis/performance/UserTiming.js +71 -18
  452. package/src/private/webapis/performance/UserTimingExtensibility.js.flow +38 -0
  453. package/src/private/webapis/performance/internals/Utilities.js +9 -0
  454. package/src/private/webapis/performance/specs/NativePerformance.js +21 -23
  455. package/src/private/webapis/structuredClone/structuredClone.js +10 -10
  456. package/stubs/double-conversion/README.md +1 -1
  457. package/template/cpp-lib/proj/MyLib.sln +0 -5
  458. package/template/cpp-lib/src/pch.h +0 -5
  459. package/template/cs-lib/proj/MyLib.sln +0 -5
  460. package/template/metro.config.js +1 -0
  461. package/templates/cpp-app/metro.config.js +2 -1
  462. package/templates/cpp-app/windows/MyApp.sln +0 -5
  463. package/templates/cpp-lib/example/metro.config.js +3 -4
  464. package/templates/cpp-lib/windows/MyLib.sln +0 -5
  465. package/Chakra/Chakra.vcxitems +0 -32
  466. package/Chakra/Chakra.vcxitems.filters +0 -54
  467. package/Chakra/ChakraHelpers.cpp +0 -468
  468. package/Chakra/ChakraHelpers.h +0 -146
  469. package/Chakra/ChakraInstanceArgs.h +0 -52
  470. package/Chakra/ChakraPlatform.cpp +0 -42
  471. package/Chakra/ChakraPlatform.h +0 -51
  472. package/Chakra/ChakraTracing.cpp +0 -275
  473. package/Chakra/ChakraTracing.h +0 -11
  474. package/Chakra/ChakraUtils.cpp +0 -190
  475. package/Chakra/ChakraUtils.h +0 -72
  476. package/Chakra/ChakraValue.cpp +0 -257
  477. package/Chakra/ChakraValue.h +0 -308
  478. package/Chakra/Utf8DebugExtensions.cpp +0 -62
  479. package/Chakra/Utf8DebugExtensions.h +0 -29
  480. package/Libraries/Interaction/InteractionManagerStub.js +0 -184
  481. package/Libraries/Interaction/TaskQueue.js +0 -183
  482. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -31
  483. package/Microsoft.ReactNative/ABICxxModule.cpp +0 -51
  484. package/Microsoft.ReactNative/ABICxxModule.h +0 -38
  485. package/Microsoft.ReactNative/ABIViewManager.cpp +0 -263
  486. package/Microsoft.ReactNative/ABIViewManager.h +0 -100
  487. package/Microsoft.ReactNative/Base/CoreUIManagers.cpp +0 -55
  488. package/Microsoft.ReactNative/DevMenuControl.cpp +0 -14
  489. package/Microsoft.ReactNative/DevMenuControl.h +0 -20
  490. package/Microsoft.ReactNative/DevMenuControl.idl +0 -28
  491. package/Microsoft.ReactNative/DevMenuControl.xaml +0 -139
  492. package/Microsoft.ReactNative/GlyphViewManager.cpp +0 -167
  493. package/Microsoft.ReactNative/GlyphViewManager.h +0 -24
  494. package/Microsoft.ReactNative/INativeUIManager.h +0 -75
  495. package/Microsoft.ReactNative/IViewManager.idl +0 -120
  496. package/Microsoft.ReactNative/IViewManagerCore.idl +0 -45
  497. package/Microsoft.ReactNative/LayoutService.cpp +0 -51
  498. package/Microsoft.ReactNative/LayoutService.h +0 -32
  499. package/Microsoft.ReactNative/LayoutService.idl +0 -41
  500. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +0 -1187
  501. package/Microsoft.ReactNative/Modules/NativeUIManager.h +0 -128
  502. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +0 -891
  503. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +0 -185
  504. package/Microsoft.ReactNative/NativeModulesProvider.cpp +0 -49
  505. package/Microsoft.ReactNative/NativeModulesProvider.h +0 -25
  506. package/Microsoft.ReactNative/ReactApplication.cpp +0 -276
  507. package/Microsoft.ReactNative/ReactApplication.h +0 -156
  508. package/Microsoft.ReactNative/ReactApplication.idl +0 -48
  509. package/Microsoft.ReactNative/ReactHost/ViewManagerProvider.h +0 -19
  510. package/Microsoft.ReactNative/ReactPointerEventArgs.cpp +0 -55
  511. package/Microsoft.ReactNative/ReactPointerEventArgs.h +0 -32
  512. package/Microsoft.ReactNative/ReactPointerEventArgs.idl +0 -79
  513. package/Microsoft.ReactNative/ReactRootView.cpp +0 -592
  514. package/Microsoft.ReactNative/ReactRootView.h +0 -127
  515. package/Microsoft.ReactNative/ReactRootView.idl +0 -40
  516. package/Microsoft.ReactNative/TestHook.cpp +0 -99
  517. package/Microsoft.ReactNative/TestHook.h +0 -15
  518. package/Microsoft.ReactNative/Utils/AccessibilityUtils.cpp +0 -36
  519. package/Microsoft.ReactNative/Utils/AccessibilityUtils.h +0 -15
  520. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +0 -171
  521. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.h +0 -72
  522. package/Microsoft.ReactNative/Utils/PropertyHandlerUtils.h +0 -87
  523. package/Microsoft.ReactNative/Utils/PropertyUtils.h +0 -568
  524. package/Microsoft.ReactNative/Utils/ResourceBrushUtils.cpp +0 -182
  525. package/Microsoft.ReactNative/Utils/ResourceBrushUtils.h +0 -58
  526. package/Microsoft.ReactNative/Utils/ShadowNodeTypeUtils.h +0 -26
  527. package/Microsoft.ReactNative/Utils/XamlIslandUtils.cpp +0 -93
  528. package/Microsoft.ReactNative/Utils/XamlIslandUtils.h +0 -48
  529. package/Microsoft.ReactNative/ViewManagersProvider.cpp +0 -39
  530. package/Microsoft.ReactNative/ViewManagersProvider.h +0 -27
  531. package/Microsoft.ReactNative/Views/ActivityIndicatorViewManager.cpp +0 -62
  532. package/Microsoft.ReactNative/Views/ActivityIndicatorViewManager.h +0 -29
  533. package/Microsoft.ReactNative/Views/ConfigureBundlerDlg.cpp +0 -186
  534. package/Microsoft.ReactNative/Views/ConfigureBundlerDlg.h +0 -11
  535. package/Microsoft.ReactNative/Views/ControlViewManager.cpp +0 -143
  536. package/Microsoft.ReactNative/Views/ControlViewManager.h +0 -38
  537. package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.cpp +0 -53
  538. package/Microsoft.ReactNative/Views/DebuggingOverlayViewManager.h +0 -30
  539. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +0 -586
  540. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +0 -104
  541. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +0 -330
  542. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +0 -111
  543. package/Microsoft.ReactNative/Views/DynamicValueProvider.cpp +0 -59
  544. package/Microsoft.ReactNative/Views/DynamicValueProvider.h +0 -32
  545. package/Microsoft.ReactNative/Views/ExpressionAnimationStore.cpp +0 -61
  546. package/Microsoft.ReactNative/Views/ExpressionAnimationStore.h +0 -26
  547. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +0 -559
  548. package/Microsoft.ReactNative/Views/FlyoutViewManager.h +0 -34
  549. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +0 -126
  550. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.h +0 -23
  551. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +0 -957
  552. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.h +0 -41
  553. package/Microsoft.ReactNative/Views/IXamlRootView.h +0 -17
  554. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +0 -245
  555. package/Microsoft.ReactNative/Views/Image/ImageViewManager.h +0 -45
  556. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +0 -469
  557. package/Microsoft.ReactNative/Views/Image/ReactImage.h +0 -80
  558. package/Microsoft.ReactNative/Views/Image/ReactImageBrush.cpp +0 -247
  559. package/Microsoft.ReactNative/Views/Image/ReactImageBrush.h +0 -67
  560. package/Microsoft.ReactNative/Views/KeyboardEventHandler.cpp +0 -261
  561. package/Microsoft.ReactNative/Views/KeyboardEventHandler.h +0 -132
  562. package/Microsoft.ReactNative/Views/PaperShadowNode.cpp +0 -18
  563. package/Microsoft.ReactNative/Views/PaperShadowNode.h +0 -38
  564. package/Microsoft.ReactNative/Views/PopupViewManager.cpp +0 -349
  565. package/Microsoft.ReactNative/Views/PopupViewManager.h +0 -36
  566. package/Microsoft.ReactNative/Views/RawTextViewManager.cpp +0 -69
  567. package/Microsoft.ReactNative/Views/RawTextViewManager.h +0 -46
  568. package/Microsoft.ReactNative/Views/ReactViewInstance.cpp +0 -43
  569. package/Microsoft.ReactNative/Views/ReactViewInstance.h +0 -53
  570. package/Microsoft.ReactNative/Views/RefreshControlManager.cpp +0 -116
  571. package/Microsoft.ReactNative/Views/RefreshControlManager.h +0 -28
  572. package/Microsoft.ReactNative/Views/RootViewManager.cpp +0 -65
  573. package/Microsoft.ReactNative/Views/RootViewManager.h +0 -36
  574. package/Microsoft.ReactNative/Views/SIPEventHandler.cpp +0 -117
  575. package/Microsoft.ReactNative/Views/SIPEventHandler.h +0 -45
  576. package/Microsoft.ReactNative/Views/ScrollContentViewManager.cpp +0 -16
  577. package/Microsoft.ReactNative/Views/ScrollContentViewManager.h +0 -19
  578. package/Microsoft.ReactNative/Views/ScrollViewManager.cpp +0 -540
  579. package/Microsoft.ReactNative/Views/ScrollViewManager.h +0 -42
  580. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +0 -228
  581. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +0 -169
  582. package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +0 -68
  583. package/Microsoft.ReactNative/Views/ShadowNodeRegistry.h +0 -40
  584. package/Microsoft.ReactNative/Views/SliderViewManager.cpp +0 -97
  585. package/Microsoft.ReactNative/Views/SliderViewManager.h +0 -32
  586. package/Microsoft.ReactNative/Views/SwitchViewManager.cpp +0 -227
  587. package/Microsoft.ReactNative/Views/SwitchViewManager.h +0 -31
  588. package/Microsoft.ReactNative/Views/Text/TextHighlighterVisitor.cpp +0 -52
  589. package/Microsoft.ReactNative/Views/Text/TextHighlighterVisitor.h +0 -37
  590. package/Microsoft.ReactNative/Views/Text/TextHitTestUtils.cpp +0 -348
  591. package/Microsoft.ReactNative/Views/Text/TextHitTestUtils.h +0 -13
  592. package/Microsoft.ReactNative/Views/Text/TextHitTestVisitor.cpp +0 -76
  593. package/Microsoft.ReactNative/Views/Text/TextHitTestVisitor.h +0 -32
  594. package/Microsoft.ReactNative/Views/Text/TextParentVisitor.cpp +0 -12
  595. package/Microsoft.ReactNative/Views/Text/TextParentVisitor.h +0 -19
  596. package/Microsoft.ReactNative/Views/Text/TextPropertyChangedParentVisitor.cpp +0 -75
  597. package/Microsoft.ReactNative/Views/Text/TextPropertyChangedParentVisitor.h +0 -43
  598. package/Microsoft.ReactNative/Views/Text/TextTransformParentVisitor.cpp +0 -21
  599. package/Microsoft.ReactNative/Views/Text/TextTransformParentVisitor.h +0 -23
  600. package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.cpp +0 -70
  601. package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.h +0 -34
  602. package/Microsoft.ReactNative/Views/Text/TextVisitor.cpp +0 -56
  603. package/Microsoft.ReactNative/Views/Text/TextVisitor.h +0 -34
  604. package/Microsoft.ReactNative/Views/Text/TextVisitorScope.h +0 -35
  605. package/Microsoft.ReactNative/Views/Text/TextVisitors.h +0 -47
  606. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +0 -1003
  607. package/Microsoft.ReactNative/Views/TextInputViewManager.h +0 -33
  608. package/Microsoft.ReactNative/Views/TextViewManager.cpp +0 -414
  609. package/Microsoft.ReactNative/Views/TextViewManager.h +0 -47
  610. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +0 -608
  611. package/Microsoft.ReactNative/Views/TouchEventHandler.h +0 -116
  612. package/Microsoft.ReactNative/Views/UnimplementedViewManager.cpp +0 -79
  613. package/Microsoft.ReactNative/Views/UnimplementedViewManager.h +0 -27
  614. package/Microsoft.ReactNative/Views/ViewControl.cpp +0 -43
  615. package/Microsoft.ReactNative/Views/ViewControl.h +0 -32
  616. package/Microsoft.ReactNative/Views/ViewManager.h +0 -33
  617. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +0 -487
  618. package/Microsoft.ReactNative/Views/ViewManagerBase.h +0 -121
  619. package/Microsoft.ReactNative/Views/ViewPanel.cpp +0 -164
  620. package/Microsoft.ReactNative/Views/ViewPanel.h +0 -82
  621. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +0 -507
  622. package/Microsoft.ReactNative/Views/ViewViewManager.h +0 -52
  623. package/Microsoft.ReactNative/Views/VirtualTextViewManager.cpp +0 -143
  624. package/Microsoft.ReactNative/Views/VirtualTextViewManager.h +0 -57
  625. package/Microsoft.ReactNative/Views/XamlFeatures.cpp +0 -11
  626. package/Microsoft.ReactNative/Views/XamlFeatures.h +0 -11
  627. package/Microsoft.ReactNative/Views/cppwinrt/AccessibilityAction.idl +0 -12
  628. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +0 -231
  629. package/Microsoft.ReactNative/Views/cppwinrt/ViewPanel.idl +0 -48
  630. package/Microsoft.ReactNative/XamlHelper.cpp +0 -78
  631. package/Microsoft.ReactNative/XamlHelper.h +0 -54
  632. package/Microsoft.ReactNative/XamlHelper.idl +0 -30
  633. package/Microsoft.ReactNative/XamlLoadState.cpp +0 -217
  634. package/Microsoft.ReactNative/XamlLoadState.h +0 -44
  635. package/Microsoft.ReactNative/XamlView.cpp +0 -59
  636. package/Microsoft.ReactNative/XamlView.h +0 -58
  637. package/Microsoft.ReactNative/getLayoutProps.ps1 +0 -5
  638. package/Microsoft.ReactNative.Cxx/UI.Xaml.Automation.Peers.h +0 -10
  639. package/Microsoft.ReactNative.Cxx/UI.Xaml.Automation.h +0 -10
  640. package/Microsoft.ReactNative.Cxx/UI.Xaml.Controls.Primitives.h +0 -10
  641. package/Microsoft.ReactNative.Cxx/UI.Xaml.Controls.h +0 -13
  642. package/Microsoft.ReactNative.Cxx/UI.Xaml.Documents.h +0 -10
  643. package/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.DesktopWindowXamlSource.h +0 -11
  644. package/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.h +0 -10
  645. package/Microsoft.ReactNative.Cxx/UI.Xaml.Input.h +0 -10
  646. package/Microsoft.ReactNative.Cxx/UI.Xaml.Markup.h +0 -10
  647. package/Microsoft.ReactNative.Cxx/UI.Xaml.Media.Imaging.h +0 -10
  648. package/Microsoft.ReactNative.Cxx/UI.Xaml.Media.Media3D.h +0 -10
  649. package/Microsoft.ReactNative.Cxx/UI.Xaml.Media.h +0 -10
  650. package/Microsoft.ReactNative.Cxx/UI.Xaml.Navigation.h +0 -10
  651. package/Microsoft.ReactNative.Cxx/UI.Xaml.Shapes.h +0 -10
  652. package/Microsoft.ReactNative.Managed/AttributedViewManager.cs +0 -527
  653. package/Microsoft.ReactNative.Managed/ViewManagerAttributes.cs +0 -91
  654. package/Microsoft.ReactNative.Managed/ViewManagerEvent.cs +0 -13
  655. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +0 -344
  656. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +0 -42
  657. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -146
  658. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2435
  659. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  660. package/Shared/BatchingMessageQueueThread.h +0 -20
  661. package/Shared/ChakraRuntimeHolder.cpp +0 -62
  662. package/Shared/ChakraRuntimeHolder.h +0 -46
  663. package/Shared/CreateInstance.h +0 -25
  664. package/Shared/Executors/WebSocketJSExecutor.cpp +0 -294
  665. package/Shared/Executors/WebSocketJSExecutor.h +0 -123
  666. package/Shared/Executors/WebSocketJSExecutorFactory.cpp +0 -25
  667. package/Shared/Hermes/HermesSamplingProfiler.cpp +0 -114
  668. package/Shared/Hermes/HermesSamplingProfiler.h +0 -26
  669. package/Shared/JSI/ChakraApi.cpp +0 -436
  670. package/Shared/JSI/ChakraApi.h +0 -474
  671. package/Shared/JSI/ChakraJsiRuntime_edgemode.cpp +0 -100
  672. package/Shared/JSI/ChakraRuntime.cpp +0 -1132
  673. package/Shared/JSI/ChakraRuntime.h +0 -512
  674. package/Shared/JSI/ChakraRuntimeArgs.h +0 -45
  675. package/Shared/JSI/ChakraRuntimeFactory.h +0 -15
  676. package/Shared/JSI/JSExecutorFactoryDelegate.h +0 -12
  677. package/Shared/JSI/JSExecutorFactorySettings.cpp +0 -30
  678. package/Shared/JSI/JSExecutorFactorySettings.h +0 -21
  679. package/Shared/NativeModuleProvider.h +0 -40
  680. package/Shared/SystemChakraRuntime.h +0 -38
  681. package/Shared/Threading/BatchingQueueThread.cpp +0 -128
  682. package/Shared/Threading/BatchingQueueThread.h +0 -59
  683. package/Shared/WebSocketJSExecutorFactory.h +0 -27
  684. package/fmt/TEMP_UntilFmtUpdate/core.h +0 -2925
  685. package/template/cpp-app/proj/MyApp.sln +0 -166
  686. package/template/cpp-app/proj/MyApp.vcxproj +0 -176
  687. package/template/cpp-app/proj/MyApp.vcxproj.filters +0 -62
  688. package/template/cpp-app/src/App.cpp +0 -93
  689. package/template/cpp-app/src/App.h +0 -21
  690. package/template/cpp-app/src/App.idl +0 -3
  691. package/template/cpp-app/src/AutolinkedNativeModules.g.cpp +0 -13
  692. package/template/cpp-app/src/AutolinkedNativeModules.g.h +0 -10
  693. package/template/cpp-app/src/MainPage.cpp +0 -20
  694. package/template/cpp-app/src/MainPage.h +0 -19
  695. package/template/cpp-app/src/MainPage.idl +0 -10
  696. package/template/cpp-app/src/PropertySheet.props +0 -16
  697. package/template/cpp-app/src/ReactPackageProvider.cpp +0 -15
  698. package/template/cpp-app/src/ReactPackageProvider.h +0 -13
  699. package/template/cpp-app/src/pch.cpp +0 -1
  700. package/template/cpp-app/src/pch.h +0 -24
  701. package/template/cs-app/proj/MyApp.csproj +0 -162
  702. package/template/cs-app/proj/MyApp.sln +0 -191
  703. package/template/cs-app/src/App.xaml.cs +0 -62
  704. package/template/cs-app/src/AutolinkedNativeModules.g.cs +0 -13
  705. package/template/cs-app/src/MainPage.xaml.cs +0 -34
  706. package/template/cs-app/src/Properties/AssemblyInfo.cs +0 -29
  707. package/template/cs-app/src/Properties/Default.rd.xml +0 -32
  708. package/template/cs-app/src/ReactPackageProvider.cs +0 -17
  709. package/template/shared-app/assets/LockScreenLogo.scale-200.png +0 -0
  710. package/template/shared-app/assets/SplashScreen.scale-200.png +0 -0
  711. package/template/shared-app/assets/Square150x150Logo.scale-200.png +0 -0
  712. package/template/shared-app/assets/Square44x44Logo.scale-200.png +0 -0
  713. package/template/shared-app/assets/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
  714. package/template/shared-app/assets/StoreLogo.png +0 -0
  715. package/template/shared-app/assets/Wide310x150Logo.scale-200.png +0 -0
  716. package/template/shared-app/proj/ExperimentalFeatures.props +0 -32
  717. package/template/shared-app/proj/NuGet_Config +0 -19
  718. package/template/shared-app/src/App.xaml +0 -10
  719. package/template/shared-app/src/AutolinkedNativeModules.g.props +0 -6
  720. package/template/shared-app/src/AutolinkedNativeModules.g.targets +0 -6
  721. package/template/shared-app/src/MainPage.xaml +0 -21
  722. package/template/shared-app/src/Package.appxmanifest +0 -50
  723. package/templates/old/uwp-cpp-app/template.config.js +0 -15
  724. package/templates/old/uwp-cs-app/template.config.js +0 -15
@@ -1,1132 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
-
4
- #include "ChakraRuntime.h"
5
- #include "ChakraRuntimeFactory.h"
6
-
7
- #include "Unicode.h"
8
- #include "Utilities.h"
9
-
10
- #include <cxxreact/MessageQueueThread.h>
11
-
12
- #include <strsafe.h>
13
- #include <cstring>
14
- #include <limits>
15
- #include <mutex>
16
- #include <sstream>
17
- #include <unordered_set>
18
-
19
- #ifndef USE_EDGEMODE_JSRT
20
- #define USE_EDGEMODE_JSRT
21
- #endif
22
- #include <jsrt.h>
23
-
24
- namespace Microsoft::JSI {
25
-
26
- namespace {
27
-
28
- struct HostFunctionWrapper final {
29
- HostFunctionWrapper(facebook::jsi::HostFunctionType &&hostFunction, ChakraRuntime &runtime)
30
- : m_hostFunction(std::move(hostFunction)), m_runtime(runtime) {}
31
-
32
- facebook::jsi::HostFunctionType &GetHostFunction() {
33
- return m_hostFunction;
34
- }
35
-
36
- ChakraRuntime &GetRuntime() {
37
- return m_runtime;
38
- }
39
-
40
- private:
41
- facebook::jsi::HostFunctionType m_hostFunction;
42
- ChakraRuntime &m_runtime;
43
- };
44
-
45
- } // namespace
46
-
47
- // ES6 Promise callback
48
- void CALLBACK ChakraRuntime::PromiseContinuationCallback(JsValueRef funcRef, void *callbackState) noexcept {
49
- ChakraRuntime *runtime = static_cast<ChakraRuntime *>(callbackState);
50
- runtime->PromiseContinuation(funcRef);
51
- }
52
-
53
- ChakraRuntime::ChakraRuntime(ChakraRuntimeArgs &&args) noexcept : m_args{std::move(args)} {}
54
-
55
- void ChakraRuntime::Init() noexcept {
56
- JsRuntimeAttributes runtimeAttributes = JsRuntimeAttributeNone;
57
-
58
- if (!m_args.enableJITCompilation) {
59
- runtimeAttributes = static_cast<JsRuntimeAttributes>(
60
- runtimeAttributes | JsRuntimeAttributeDisableNativeCodeGeneration |
61
- JsRuntimeAttributeDisableExecutablePageAllocation);
62
- }
63
-
64
- m_runtime = CreateRuntime(runtimeAttributes, nullptr);
65
-
66
- m_context = JsRefHolder{CreateContext(m_runtime)};
67
-
68
- // Note :: We currently assume that the runtime will be created and
69
- // exclusively used in a single thread.
70
- // Preserve the current context if it is already associated with the thread.
71
- m_prevContext = JsRefHolder{GetCurrentContext()};
72
- SetCurrentContext(m_context);
73
-
74
- startDebuggingIfNeeded();
75
-
76
- setupNativePromiseContinuation();
77
-
78
- std::call_once(s_runtimeVersionInitFlag, initRuntimeVersion);
79
-
80
- m_propertyId.Object = JsRefHolder{GetPropertyIdFromName(L"Object")};
81
- m_propertyId.Proxy = JsRefHolder{GetPropertyIdFromName(L"Proxy")};
82
- m_propertyId.Symbol = JsRefHolder{GetPropertyIdFromName(L"Symbol")};
83
- m_propertyId.byteLength = JsRefHolder{GetPropertyIdFromName(L"byteLength")};
84
- m_propertyId.configurable = JsRefHolder{GetPropertyIdFromName(L"configurable")};
85
- m_propertyId.enumerable = JsRefHolder{GetPropertyIdFromName(L"enumerable")};
86
- m_propertyId.get = JsRefHolder{GetPropertyIdFromName(L"get")};
87
- m_propertyId.getOwnPropertyDescriptor = JsRefHolder{GetPropertyIdFromName(L"getOwnPropertyDescriptor")};
88
- m_propertyId.has = JsRefHolder{GetPropertyIdFromName(L"has")};
89
- m_propertyId.hostFunctionSymbol = JsRefHolder{GetPropertyIdFromSymbol(L"hostFunctionSymbol")};
90
- m_propertyId.hostObjectSymbol = JsRefHolder{GetPropertyIdFromSymbol(L"hostObjectSymbol")};
91
- m_propertyId.length = JsRefHolder{GetPropertyIdFromName(L"length")};
92
- m_propertyId.message = JsRefHolder{GetPropertyIdFromName(L"message")};
93
- m_propertyId.ownKeys = JsRefHolder{GetPropertyIdFromName(L"ownKeys")};
94
- m_propertyId.propertyIsEnumerable = JsRefHolder{GetPropertyIdFromName(L"propertyIsEnumerable")};
95
- m_propertyId.prototype = JsRefHolder{GetPropertyIdFromName(L"prototype")};
96
- m_propertyId.set = JsRefHolder{GetPropertyIdFromName(L"set")};
97
- m_propertyId.toString = JsRefHolder{GetPropertyIdFromName(L"toString")};
98
- m_propertyId.value = JsRefHolder{GetPropertyIdFromName(L"value")};
99
- m_propertyId.writable = JsRefHolder{GetPropertyIdFromName(L"writable")};
100
-
101
- m_undefinedValue = JsRefHolder{GetUndefinedValue()};
102
-
103
- JsValueRef global = GetGlobalObject();
104
- JsValueRef weakMapPropertyId = GetPropertyIdFromName(L"WeakMap");
105
- JsValueRef weakMapConstructor = GetProperty(global, weakMapPropertyId);
106
- JsValueRef weakMapPrototype = GetProperty(weakMapConstructor, m_propertyId.prototype);
107
- m_weakMapGet = JsRefHolder{GetProperty(weakMapPrototype, m_propertyId.get)};
108
- m_weakMapHas = JsRefHolder{GetProperty(weakMapPrototype, m_propertyId.has)};
109
- m_weakMapSet = JsRefHolder{GetProperty(weakMapPrototype, m_propertyId.set)};
110
- m_nativeStateMap = JsRefHolder{ConstructObject(weakMapConstructor, Span<JsValueRef>{m_undefinedValue})};
111
- }
112
-
113
- /*virtual*/ ChakraRuntime::~ChakraRuntime() noexcept {
114
- m_nativeStateMap = {};
115
- m_weakMapSet = {};
116
- m_weakMapHas = {};
117
- m_weakMapGet = {};
118
- m_undefinedValue = {};
119
- m_propertyId = {};
120
- m_proxyConstructor = {};
121
- m_hostObjectProxyHandler = {};
122
-
123
- m_context = {};
124
- SetCurrentContext(m_prevContext);
125
- m_prevContext = {};
126
-
127
- DisposeRuntime(m_runtime);
128
- }
129
-
130
- void ChakraRuntime::PromiseContinuation(JsValueRef funcRef) noexcept {
131
- if (runtimeArgs().jsQueue) {
132
- JsAddRef(funcRef, nullptr);
133
- runtimeArgs().jsQueue->runOnQueue([this, funcRef]() {
134
- JsValueRef undefinedValue = nullptr;
135
- JsGetUndefinedValue(&undefinedValue);
136
- ChakraVerifyJsErrorElseThrow(JsCallFunction(funcRef, &undefinedValue, 1, nullptr));
137
- JsRelease(funcRef, nullptr);
138
- });
139
- }
140
- }
141
-
142
- JsValueRef ChakraRuntime::CreatePropertyDescriptor(JsValueRef value, PropertyAttributes attrs) {
143
- JsValueRef descriptor = CreateObject();
144
- SetProperty(descriptor, m_propertyId.value, value);
145
- if (!(attrs & PropertyAttributes::ReadOnly)) {
146
- SetProperty(descriptor, m_propertyId.writable, BoolToBoolean(true));
147
- }
148
- if (!(attrs & PropertyAttributes::DontEnum)) {
149
- SetProperty(descriptor, m_propertyId.enumerable, BoolToBoolean(true));
150
- }
151
- if (!(attrs & PropertyAttributes::DontDelete)) {
152
- // The JavaScript 'configurable=true' allows property to be deleted.
153
- SetProperty(descriptor, m_propertyId.configurable, BoolToBoolean(true));
154
- }
155
- return descriptor;
156
- }
157
-
158
- #pragma region Functions_inherited_from_Runtime
159
-
160
- facebook::jsi::Value ChakraRuntime::evaluateJavaScript(
161
- const std::shared_ptr<const facebook::jsi::Buffer> &buffer,
162
- const std::string &sourceURL) {
163
- // Simple evaluate if scriptStore not available as it's risky to utilize the
164
- // byte codes without checking the script version.
165
- if (!runtimeArgs().scriptStore) {
166
- if (!buffer)
167
- throw facebook::jsi::JSINativeException("Script buffer is empty!");
168
- return evaluateJavaScriptSimple(*buffer, sourceURL);
169
- }
170
-
171
- uint64_t scriptVersion = 0;
172
- std::shared_ptr<const facebook::jsi::Buffer> scriptBuffer;
173
-
174
- if (buffer) {
175
- scriptBuffer = buffer;
176
- scriptVersion = runtimeArgs().scriptStore->getScriptVersion(sourceURL);
177
- } else {
178
- auto versionedScript = runtimeArgs().scriptStore->getVersionedScript(sourceURL);
179
- scriptBuffer = std::move(versionedScript.buffer);
180
- scriptVersion = versionedScript.version;
181
- }
182
-
183
- if (!scriptBuffer) {
184
- throw facebook::jsi::JSINativeException("Script buffer is empty!");
185
- }
186
-
187
- // Simple evaluate if script version can't be computed.
188
- if (scriptVersion == 0) {
189
- return evaluateJavaScriptSimple(*scriptBuffer, sourceURL);
190
- }
191
-
192
- auto sharedScriptBuffer = std::shared_ptr<const facebook::jsi::Buffer>(std::move(scriptBuffer));
193
-
194
- facebook::jsi::ScriptSignature scriptSignature = {sourceURL, scriptVersion};
195
- facebook::jsi::JSRuntimeSignature runtimeSignature = {description().c_str(), getRuntimeVersion()};
196
-
197
- auto preparedScript =
198
- runtimeArgs().preparedScriptStore->tryGetPreparedScript(scriptSignature, runtimeSignature, nullptr);
199
-
200
- std::shared_ptr<const facebook::jsi::Buffer> sharedPreparedScript;
201
- if (preparedScript) {
202
- sharedPreparedScript = std::shared_ptr<const facebook::jsi::Buffer>(std::move(preparedScript));
203
- } else {
204
- auto genPreparedScript = generatePreparedScript(sourceURL, *sharedScriptBuffer);
205
- if (!genPreparedScript)
206
- std::terminate(); // Cache generation can't fail unless something really
207
- // wrong. but we should get rid of this abort before
208
- // shipping.
209
-
210
- sharedPreparedScript = std::shared_ptr<const facebook::jsi::Buffer>(std::move(genPreparedScript));
211
- runtimeArgs().preparedScriptStore->persistPreparedScript(
212
- sharedPreparedScript, scriptSignature, runtimeSignature, nullptr);
213
- }
214
-
215
- // We are pinning the buffers which are backing the external array buffers to
216
- // the duration of this. This is not good if the external array buffers have a
217
- // reduced lifetime compared to the runtime itself. But, it's ok for the script
218
- // and prepared script buffer as their lifetime is expected to be same as the
219
- // JSI runtime.
220
- m_pinnedPreparedScripts.push_back(sharedPreparedScript);
221
- m_pinnedScripts.push_back(sharedScriptBuffer);
222
-
223
- JsValueRef result;
224
- if (evaluateSerializedScript(*sharedScriptBuffer, *sharedPreparedScript, sourceURL, &result)) {
225
- return ToJsiValue(result);
226
- }
227
-
228
- // If we reach here, fall back to simple evaluation.
229
- return evaluateJavaScriptSimple(*sharedScriptBuffer, sourceURL);
230
- }
231
-
232
- struct ChakraPreparedJavaScript final : facebook::jsi::PreparedJavaScript {
233
- ChakraPreparedJavaScript(
234
- std::string sourceUrl,
235
- const std::shared_ptr<const facebook::jsi::Buffer> &sourceBuffer,
236
- std::unique_ptr<const facebook::jsi::Buffer> byteCode)
237
- : m_sourceUrl{std::move(sourceUrl)}, m_sourceBuffer{sourceBuffer}, m_byteCode{std::move(byteCode)} {}
238
-
239
- const std::string &SourceUrl() const {
240
- return m_sourceUrl;
241
- }
242
-
243
- const facebook::jsi::Buffer &SourceBuffer() const {
244
- return *m_sourceBuffer;
245
- }
246
-
247
- const facebook::jsi::Buffer &ByteCode() const {
248
- return *m_byteCode;
249
- }
250
-
251
- private:
252
- std::string m_sourceUrl;
253
- std::shared_ptr<const facebook::jsi::Buffer> m_sourceBuffer;
254
- std::unique_ptr<const facebook::jsi::Buffer> m_byteCode;
255
- };
256
-
257
- std::shared_ptr<const facebook::jsi::PreparedJavaScript> ChakraRuntime::prepareJavaScript(
258
- const std::shared_ptr<const facebook::jsi::Buffer> &sourceBuffer,
259
- std::string sourceURL) {
260
- return std::make_shared<ChakraPreparedJavaScript>(
261
- sourceURL, sourceBuffer, generatePreparedScript(sourceURL, *sourceBuffer));
262
- }
263
-
264
- facebook::jsi::Value ChakraRuntime::evaluatePreparedJavaScript(
265
- const std::shared_ptr<const facebook::jsi::PreparedJavaScript> &preparedJS) {
266
- const ChakraPreparedJavaScript &chakraPreparedJS = *static_cast<const ChakraPreparedJavaScript *>(preparedJS.get());
267
- JsValueRef result;
268
- if (evaluateSerializedScript(
269
- chakraPreparedJS.SourceBuffer(), chakraPreparedJS.ByteCode(), chakraPreparedJS.SourceUrl(), &result)) {
270
- return ToJsiValue(result);
271
- } else {
272
- return facebook::jsi::Value::undefined();
273
- }
274
- }
275
-
276
- bool ChakraRuntime::drainMicrotasks(int /*maxMicrotasksHint*/) {
277
- // Not implemented
278
- return true;
279
- }
280
-
281
- void ChakraRuntime::queueMicrotask(const facebook::jsi::Function &) {
282
- throw facebook::jsi::JSINativeException("Not implemented");
283
- }
284
-
285
- facebook::jsi::Object ChakraRuntime::global() {
286
- return MakePointer<facebook::jsi::Object>(GetGlobalObject());
287
- }
288
-
289
- std::string ChakraRuntime::description() {
290
- return "ChakraRuntime";
291
- }
292
-
293
- bool ChakraRuntime::isInspectable() {
294
- return false;
295
- }
296
-
297
- facebook::jsi::Runtime::PointerValue *ChakraRuntime::cloneSymbol(
298
- const facebook::jsi::Runtime::PointerValue *pointerValue) {
299
- return CloneChakraPointerValue(pointerValue);
300
- }
301
-
302
- facebook::jsi::Runtime::PointerValue *ChakraRuntime::cloneBigInt(
303
- const facebook::jsi::Runtime::PointerValue *pointerValue) {
304
- return CloneChakraPointerValue(pointerValue);
305
- }
306
-
307
- facebook::jsi::Runtime::PointerValue *ChakraRuntime::cloneString(
308
- const facebook::jsi::Runtime::PointerValue *pointerValue) {
309
- return CloneChakraPointerValue(pointerValue);
310
- }
311
-
312
- facebook::jsi::Runtime::PointerValue *ChakraRuntime::cloneObject(
313
- const facebook::jsi::Runtime::PointerValue *pointerValue) {
314
- return CloneChakraPointerValue(pointerValue);
315
- }
316
-
317
- facebook::jsi::Runtime::PointerValue *ChakraRuntime::clonePropNameID(
318
- const facebook::jsi::Runtime::PointerValue *pointerValue) {
319
- return CloneChakraPointerValue(pointerValue);
320
- }
321
-
322
- facebook::jsi::PropNameID ChakraRuntime::createPropNameIDFromAscii(const char *str, size_t length) {
323
- const JsPropertyIdRef propertyId = GetPropertyIdFromName(std::string_view{str, length});
324
- return MakePointer<facebook::jsi::PropNameID>(propertyId);
325
- }
326
-
327
- facebook::jsi::PropNameID ChakraRuntime::createPropNameIDFromUtf8(const uint8_t *utf8, size_t length) {
328
- const JsPropertyIdRef propertyId =
329
- GetPropertyIdFromName(std::string_view{reinterpret_cast<const char *>(utf8), length});
330
- return MakePointer<facebook::jsi::PropNameID>(propertyId);
331
- }
332
-
333
- facebook::jsi::PropNameID ChakraRuntime::createPropNameIDFromString(const facebook::jsi::String &str) {
334
- const JsPropertyIdRef propertyId = GetPropertyIdFromName(StringToPointer(GetJsRef(str)).data());
335
- return MakePointer<facebook::jsi::PropNameID>(propertyId);
336
- }
337
-
338
- facebook::jsi::PropNameID ChakraRuntime::createPropNameIDFromSymbol(const facebook::jsi::Symbol &sym) {
339
- const JsPropertyIdRef propSym = GetPropertyIdFromSymbol(GetJsRef(sym));
340
- return MakePointer<facebook::jsi::PropNameID>(propSym);
341
- }
342
-
343
- facebook::jsi::BigInt ChakraRuntime::createBigIntFromInt64(int64_t val) {
344
- throw facebook::jsi::JSINativeException("Not implemented");
345
- }
346
-
347
- facebook::jsi::BigInt ChakraRuntime::createBigIntFromUint64(uint64_t val) {
348
- throw facebook::jsi::JSINativeException("Not implemented");
349
- }
350
-
351
- bool ChakraRuntime::bigintIsInt64(const facebook::jsi::BigInt &) {
352
- throw facebook::jsi::JSINativeException("Not implemented");
353
- }
354
-
355
- bool ChakraRuntime::bigintIsUint64(const facebook::jsi::BigInt &) {
356
- throw facebook::jsi::JSINativeException("Not implemented");
357
- }
358
-
359
- uint64_t ChakraRuntime::truncate(const facebook::jsi::BigInt &) {
360
- throw facebook::jsi::JSINativeException("Not implemented");
361
- }
362
-
363
- facebook::jsi::String ChakraRuntime::bigintToString(const facebook::jsi::BigInt &, int) {
364
- throw facebook::jsi::JSINativeException("Not implemented");
365
- }
366
-
367
- bool ChakraRuntime::hasNativeState(const facebook::jsi::Object &obj) {
368
- return BooleanToBool(CallFunction(m_weakMapHas, {m_nativeStateMap, GetJsRef(obj)}));
369
- }
370
-
371
- std::shared_ptr<facebook::jsi::NativeState> ChakraRuntime::getNativeState(const facebook::jsi::Object &obj) {
372
- JsValueRef stateWrapper = CallFunction(m_weakMapGet, {m_nativeStateMap, GetJsRef(obj)});
373
- if (GetValueType(stateWrapper) == JsValueType::JsObject) {
374
- return *static_cast<std::shared_ptr<facebook::jsi::NativeState> *>(GetExternalData(stateWrapper));
375
- } else {
376
- return nullptr;
377
- }
378
- }
379
-
380
- void ChakraRuntime::setNativeState(
381
- const facebook::jsi::Object &obj,
382
- std::shared_ptr<facebook::jsi::NativeState> state) {
383
- JsValueRef stateWrapper =
384
- CreateExternalObject(std::make_unique<std::shared_ptr<facebook::jsi::NativeState>>(std::move(state)));
385
- CallFunction(m_weakMapSet, {m_nativeStateMap, GetJsRef(obj), stateWrapper});
386
- }
387
-
388
- facebook::jsi::ArrayBuffer ChakraRuntime::createArrayBuffer(std::shared_ptr<facebook::jsi::MutableBuffer> buffer) {
389
- throw facebook::jsi::JSINativeException("Not implemented");
390
- }
391
-
392
- std::string ChakraRuntime::utf8(const facebook::jsi::PropNameID &id) {
393
- return Common::Unicode::Utf16ToUtf8(GetPropertyNameFromId(GetJsRef(id)));
394
- }
395
-
396
- bool ChakraRuntime::compare(const facebook::jsi::PropNameID &lhs, const facebook::jsi::PropNameID &rhs) {
397
- return GetJsRef(lhs) == GetJsRef(rhs);
398
- }
399
-
400
- std::string ChakraRuntime::symbolToString(const facebook::jsi::Symbol &s) {
401
- const JsValueRef symbol = GetJsRef(s);
402
- const JsValueRef symbolCtor = GetProperty(GetGlobalObject(), m_propertyId.Symbol);
403
- const JsValueRef symbolPrototype = GetProperty(symbolCtor, m_propertyId.prototype);
404
- const JsValueRef symbolToString = GetProperty(symbolPrototype, m_propertyId.toString);
405
- const JsValueRef jsString = CallFunction(symbolToString, {symbol});
406
- return StringToStdString(jsString);
407
- }
408
-
409
- facebook::jsi::String ChakraRuntime::createStringFromAscii(const char *str, size_t length) {
410
- return MakePointer<facebook::jsi::String>(PointerToString({str, length}));
411
- }
412
-
413
- facebook::jsi::String ChakraRuntime::createStringFromUtf8(const uint8_t *str, size_t length) {
414
- return MakePointer<facebook::jsi::String>(PointerToString({reinterpret_cast<char const *>(str), length}));
415
- }
416
-
417
- std::string ChakraRuntime::utf8(const facebook::jsi::String &str) {
418
- return StringToStdString(GetJsRef(str));
419
- }
420
-
421
- facebook::jsi::Object ChakraRuntime::createObject() {
422
- return MakePointer<facebook::jsi::Object>(CreateObject());
423
- }
424
-
425
- facebook::jsi::Object ChakraRuntime::createObject(std::shared_ptr<facebook::jsi::HostObject> hostObject) {
426
- // The hostObjectHolder keeps the hostObject as external data.
427
- // Then the hostObjectHolder is wrapped up by a Proxy object to provide access to hostObject's
428
- // get, set, and getPropertyNames methods.
429
- // There is a special symbol property ID 'hostObjectSymbol' to access the hostObjectWrapper from the Proxy.
430
- JsValueRef hostObjectHolder =
431
- CreateExternalObject(std::make_unique<std::shared_ptr<facebook::jsi::HostObject>>(std::move(hostObject)));
432
- if (!m_proxyConstructor) {
433
- m_proxyConstructor = JsRefHolder{GetProperty(GetGlobalObject(), m_propertyId.Proxy)};
434
- }
435
- JsValueRef proxy =
436
- ConstructObject(m_proxyConstructor, {m_undefinedValue, hostObjectHolder, GetHostObjectProxyHandler()});
437
- return MakePointer<facebook::jsi::Object>(proxy);
438
- }
439
-
440
- std::shared_ptr<facebook::jsi::HostObject> ChakraRuntime::getHostObject(const facebook::jsi::Object &obj) {
441
- JsValueRef hostObjectHolder = GetProperty(GetJsRef(obj), m_propertyId.hostObjectSymbol);
442
- if (GetValueType(hostObjectHolder) == JsValueType::JsObject) {
443
- return *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(hostObjectHolder));
444
- } else {
445
- throw facebook::jsi::JSINativeException("getHostObject() can only be called with HostObjects.");
446
- }
447
- }
448
-
449
- facebook::jsi::HostFunctionType &ChakraRuntime::getHostFunction(const facebook::jsi::Function &func) {
450
- JsValueRef hostFunctionHolder = GetProperty(GetJsRef(func), m_propertyId.hostFunctionSymbol);
451
- if (GetValueType(hostFunctionHolder) == JsValueType::JsObject) {
452
- return static_cast<HostFunctionWrapper *>(GetExternalData(hostFunctionHolder))->GetHostFunction();
453
- } else {
454
- throw facebook::jsi::JSINativeException("getHostFunction() can only be called with HostFunction.");
455
- }
456
- }
457
-
458
- facebook::jsi::Value ChakraRuntime::getProperty(
459
- const facebook::jsi::Object &obj,
460
- const facebook::jsi::PropNameID &name) {
461
- return ToJsiValue(GetProperty(GetJsRef(obj), GetJsRef(name)));
462
- }
463
-
464
- facebook::jsi::Value ChakraRuntime::getProperty(const facebook::jsi::Object &obj, const facebook::jsi::String &name) {
465
- return ToJsiValue(GetProperty(GetJsRef(obj), GetPropertyIdFromString(GetJsRef(name))));
466
- }
467
-
468
- bool ChakraRuntime::hasProperty(const facebook::jsi::Object &obj, const facebook::jsi::PropNameID &name) {
469
- return HasProperty(GetJsRef(obj), GetJsRef(name));
470
- }
471
-
472
- bool ChakraRuntime::hasProperty(const facebook::jsi::Object &obj, const facebook::jsi::String &name) {
473
- return HasProperty(GetJsRef(obj), GetPropertyIdFromString(GetJsRef(name)));
474
- }
475
-
476
- void ChakraRuntime::setPropertyValue(
477
- const facebook::jsi::Object &object,
478
- const facebook::jsi::PropNameID &name,
479
- const facebook::jsi::Value &value) {
480
- SetProperty(GetJsRef(object), GetJsRef(name), ToJsValueRef(value));
481
- }
482
-
483
- void ChakraRuntime::setPropertyValue(
484
- const facebook::jsi::Object &object,
485
- const facebook::jsi::String &name,
486
- const facebook::jsi::Value &value) {
487
- SetProperty(GetJsRef(object), GetPropertyIdFromString(GetJsRef(name)), ToJsValueRef(value));
488
- }
489
-
490
- bool ChakraRuntime::isArray(const facebook::jsi::Object &obj) const {
491
- return GetValueType(GetJsRef(obj)) == JsArray;
492
- }
493
-
494
- bool ChakraRuntime::isArrayBuffer(const facebook::jsi::Object &obj) const {
495
- return GetValueType(GetJsRef(obj)) == JsArrayBuffer;
496
- }
497
-
498
- bool ChakraRuntime::isFunction(const facebook::jsi::Object &obj) const {
499
- return GetValueType(GetJsRef(obj)) == JsFunction;
500
- }
501
-
502
- bool ChakraRuntime::isHostObject(const facebook::jsi::Object &obj) const {
503
- JsValueRef hostObjectHolder = GetProperty(GetJsRef(obj), m_propertyId.hostObjectSymbol);
504
- if (GetValueType(hostObjectHolder) == JsValueType::JsObject) {
505
- return GetExternalData(hostObjectHolder) != nullptr;
506
- } else {
507
- return false;
508
- }
509
- }
510
-
511
- bool ChakraRuntime::isHostFunction(const facebook::jsi::Function &func) const {
512
- JsValueRef hostFunctionHolder = GetProperty(GetJsRef(func), m_propertyId.hostFunctionSymbol);
513
- if (GetValueType(hostFunctionHolder) == JsValueType::JsObject) {
514
- return GetExternalData(hostFunctionHolder) != nullptr;
515
- } else {
516
- return false;
517
- }
518
- }
519
-
520
- facebook::jsi::Array ChakraRuntime::getPropertyNames(const facebook::jsi::Object &object) {
521
- // Handle to the null JS value.
522
- JsValueRef jsNull = GetNullValue();
523
-
524
- // Handle to the Object constructor.
525
- JsValueRef objectConstructor = GetProperty(GetGlobalObject(), m_propertyId.Object);
526
-
527
- // Handle to the Object.prototype Object.
528
- JsValueRef objectPrototype = GetProperty(objectConstructor, m_propertyId.prototype);
529
-
530
- // Handle to the Object.prototype.propertyIsEnumerable() Function.
531
- JsValueRef objectPrototypePropertyIsEnumerable = GetProperty(objectPrototype, m_propertyId.propertyIsEnumerable);
532
-
533
- // We now traverse the object's property chain and collect all enumerable property names.
534
- std::vector<JsValueRef> enumerablePropNames{};
535
- JsValueRef currentObjectOnPrototypeChain = GetJsRef(object);
536
-
537
- // We have a small optimization here where we stop traversing the prototype
538
- // chain as soon as we hit Object.prototype. However, we still need to check
539
- // for null here, as one can create an Object with no prototype through
540
- // Object.create(null).
541
- while (!StrictEquals(currentObjectOnPrototypeChain, objectPrototype) &&
542
- !StrictEquals(currentObjectOnPrototypeChain, jsNull)) {
543
- JsValueRef propNames = GetOwnPropertyNames(currentObjectOnPrototypeChain);
544
- int propNamesSize = NumberToInt(GetProperty(propNames, m_propertyId.length));
545
-
546
- enumerablePropNames.reserve(enumerablePropNames.size() + propNamesSize);
547
- for (int i = 0; i < propNamesSize; ++i) {
548
- JsValueRef propName = GetIndexedProperty(propNames, i);
549
- bool propIsEnumerable =
550
- BooleanToBool(CallFunction(objectPrototypePropertyIsEnumerable, {currentObjectOnPrototypeChain, propName}));
551
- if (propIsEnumerable) {
552
- enumerablePropNames.push_back(propName);
553
- }
554
- }
555
-
556
- currentObjectOnPrototypeChain = GetPrototype(currentObjectOnPrototypeChain);
557
- }
558
-
559
- size_t enumerablePropNamesSize = enumerablePropNames.size();
560
- JsValueRef result = CreateArray(enumerablePropNamesSize);
561
-
562
- for (size_t i = 0; i < enumerablePropNamesSize; ++i) {
563
- SetIndexedProperty(result, static_cast<int32_t>(i), enumerablePropNames[i]);
564
- }
565
-
566
- return MakePointer<facebook::jsi::Object>(result).getArray(*this);
567
- }
568
-
569
- // Only ChakraCore supports weak reference semantics, so ChakraRuntime
570
- // WeakObjects are in fact strong references.
571
-
572
- facebook::jsi::WeakObject ChakraRuntime::createWeakObject(const facebook::jsi::Object &object) {
573
- return make<facebook::jsi::WeakObject>(CloneChakraPointerValue(getPointerValue(object)));
574
- }
575
-
576
- facebook::jsi::Value ChakraRuntime::lockWeakObject(const facebook::jsi::WeakObject &weakObject) {
577
- // We need to make a copy of the ChakraObjectRef held within weakObj's
578
- // member PointerValue for the returned jsi::Value here.
579
- return ToJsiValue(GetJsRef(weakObject));
580
- }
581
-
582
- facebook::jsi::Array ChakraRuntime::createArray(size_t length) {
583
- assert(length <= (std::numeric_limits<unsigned int>::max)());
584
-
585
- return MakePointer<facebook::jsi::Object>(CreateArray(length)).asArray(*this);
586
- }
587
-
588
- size_t ChakraRuntime::size(const facebook::jsi::Array &arr) {
589
- assert(isArray(arr));
590
-
591
- const int result = NumberToInt(GetProperty(GetJsRef(arr), m_propertyId.length));
592
- ChakraVerifyElseThrow(result >= 0, "Invalid JS array length detected.");
593
- return static_cast<size_t>(result);
594
- }
595
-
596
- size_t ChakraRuntime::size(const facebook::jsi::ArrayBuffer &arrBuf) {
597
- assert(isArrayBuffer(arrBuf));
598
-
599
- const int result = NumberToInt(GetProperty(GetJsRef(arrBuf), m_propertyId.byteLength));
600
- ChakraVerifyElseThrow(result >= 0, "Invalid JS array buffer byteLength detected.");
601
- return static_cast<size_t>(result);
602
- }
603
-
604
- uint8_t *ChakraRuntime::data(const facebook::jsi::ArrayBuffer &arrBuf) {
605
- assert(isArrayBuffer(arrBuf));
606
- return reinterpret_cast<uint8_t *>(GetArrayBufferStorage(GetJsRef(arrBuf)).begin());
607
- }
608
-
609
- facebook::jsi::Value ChakraRuntime::getValueAtIndex(const facebook::jsi::Array &arr, size_t index) {
610
- assert(isArray(arr));
611
- assert(index <= static_cast<size_t>((std::numeric_limits<int>::max)()));
612
-
613
- return ToJsiValue(GetIndexedProperty(GetJsRef(arr), static_cast<int>(index)));
614
- }
615
-
616
- void ChakraRuntime::setValueAtIndexImpl(
617
- const facebook::jsi::Array &arr,
618
- size_t index,
619
- const facebook::jsi::Value &value) {
620
- assert(isArray(arr));
621
- assert(index <= static_cast<size_t>((std::numeric_limits<int>::max)()));
622
-
623
- SetIndexedProperty(GetJsRef(arr), static_cast<int>(index), ToJsValueRef(value));
624
- }
625
-
626
- facebook::jsi::Function ChakraRuntime::createFunctionFromHostFunction(
627
- const facebook::jsi::PropNameID &name,
628
- unsigned int paramCount,
629
- facebook::jsi::HostFunctionType func) {
630
- auto hostFunctionWrapper = std::make_unique<HostFunctionWrapper>(std::move(func), *this);
631
- JsValueRef function = CreateExternalFunction(
632
- GetJsRef(name), static_cast<int32_t>(paramCount), HostFunctionCall, hostFunctionWrapper.get());
633
-
634
- const auto hostFunctionHolder = CreateExternalObject(std::move(hostFunctionWrapper));
635
- DefineProperty(
636
- function,
637
- m_propertyId.hostFunctionSymbol,
638
- CreatePropertyDescriptor(hostFunctionHolder, PropertyAttributes::DontEnumAndFrozen));
639
-
640
- return MakePointer<facebook::jsi::Object>(function).getFunction(*this);
641
- }
642
-
643
- facebook::jsi::Value ChakraRuntime::call(
644
- const facebook::jsi::Function &func,
645
- const facebook::jsi::Value &jsThis,
646
- const facebook::jsi::Value *args,
647
- size_t count) {
648
- return ToJsiValue(CallFunction(GetJsRef(func), JsValueArgs(*this, jsThis, Span(args, count))));
649
- }
650
-
651
- facebook::jsi::Value
652
- ChakraRuntime::callAsConstructor(const facebook::jsi::Function &func, const facebook::jsi::Value *args, size_t count) {
653
- return ToJsiValue(
654
- ConstructObject(GetJsRef(func), JsValueArgs(*this, facebook::jsi::Value::undefined(), Span(args, count))));
655
- }
656
-
657
- facebook::jsi::Runtime::ScopeState *ChakraRuntime::pushScope() {
658
- return nullptr;
659
- }
660
-
661
- void ChakraRuntime::popScope([[maybe_unused]] Runtime::ScopeState *state) {
662
- assert(state == nullptr);
663
- ChakraVerifyJsErrorElseThrow(JsCollectGarbage(m_runtime));
664
- }
665
-
666
- bool ChakraRuntime::strictEquals(const facebook::jsi::Symbol &a, const facebook::jsi::Symbol &b) const {
667
- return StrictEquals(GetJsRef(a), GetJsRef(b));
668
- }
669
-
670
- bool ChakraRuntime::strictEquals(const facebook::jsi::BigInt &a, const facebook::jsi::BigInt &b) const {
671
- return StrictEquals(GetJsRef(a), GetJsRef(b));
672
- }
673
-
674
- bool ChakraRuntime::strictEquals(const facebook::jsi::String &a, const facebook::jsi::String &b) const {
675
- return StrictEquals(GetJsRef(a), GetJsRef(b));
676
- }
677
-
678
- bool ChakraRuntime::strictEquals(const facebook::jsi::Object &a, const facebook::jsi::Object &b) const {
679
- return StrictEquals(GetJsRef(a), GetJsRef(b));
680
- }
681
-
682
- bool ChakraRuntime::instanceOf(const facebook::jsi::Object &obj, const facebook::jsi::Function &func) {
683
- return InstanceOf(GetJsRef(obj), GetJsRef(func));
684
- }
685
-
686
- void ChakraRuntime::setExternalMemoryPressure(const facebook::jsi::Object & /*obj*/, size_t /*amount*/) {
687
- // TODO: implement
688
- }
689
-
690
- #pragma endregion Functions_inherited_from_Runtime
691
-
692
- // Sets variable in the constructor and then restores its value in the destructor.
693
- template <typename T>
694
- struct AutoRestore {
695
- AutoRestore(T *var, T value) : m_var{var}, m_value{std::exchange(*var, value)} {}
696
-
697
- ~AutoRestore() {
698
- *m_var = m_value;
699
- }
700
-
701
- private:
702
- T *m_var;
703
- T m_value;
704
- };
705
-
706
- [[noreturn]] void ChakraRuntime::ThrowJsExceptionOverride(JsErrorCode errorCode, JsValueRef jsError) {
707
- if (!m_pendingJSError && (errorCode == JsErrorScriptException || GetValueType(jsError) == JsError)) {
708
- AutoRestore<bool> setValue{const_cast<bool *>(&m_pendingJSError), true};
709
- RewriteErrorMessage(jsError);
710
- throw facebook::jsi::JSError(*this, ToJsiValue(jsError));
711
- } else {
712
- std::ostringstream errorString;
713
- errorString << "A call to Chakra API returned error code 0x" << std::hex << errorCode << '.';
714
- throw facebook::jsi::JSINativeException(errorString.str().c_str());
715
- }
716
- }
717
-
718
- [[noreturn]] void ChakraRuntime::ThrowNativeExceptionOverride(char const *errorMessage) {
719
- throw facebook::jsi::JSINativeException(errorMessage);
720
- }
721
-
722
- void ChakraRuntime::RewriteErrorMessage(JsValueRef jsError) {
723
- // The code below must work correctly even if the 'message' getter throws.
724
- // In case when it throws, we ignore that exception.
725
- JsValueRef message{JS_INVALID_REFERENCE};
726
- JsErrorCode errorCode = JsGetProperty(jsError, m_propertyId.message, &message);
727
- if (errorCode != JsNoError) {
728
- // If the 'message' property getter throws, then we clear the exception and ignore it.
729
- JsValueRef ignoreJSError{JS_INVALID_REFERENCE};
730
- JsGetAndClearException(&ignoreJSError);
731
- } else if (GetValueType(message) == JsValueType::JsString) {
732
- // JSI unit tests expect V8 or JSC like message for stack overflow.
733
- std::wstring_view errorMessage = StringToPointer(message);
734
- if (errorMessage == L"Out of stack space") {
735
- SetProperty(jsError, m_propertyId.message, PointerToString(L"RangeError : Maximum call stack size exceeded"));
736
- } else if (errorMessage == L"Syntax error") {
737
- JsValueRef result;
738
- JsPropertyIdRef property;
739
-
740
- JsGetPropertyIdFromName(L"line", &property);
741
- if (JsGetProperty(jsError, property, &result) != JsNoError) {
742
- // If the 'line' property getter throws, clear the exception and ignore it.
743
- JsValueRef ignoreJSError{JS_INVALID_REFERENCE};
744
- JsGetAndClearException(&ignoreJSError);
745
- return;
746
- }
747
-
748
- // Line numbers start from zero
749
- const int32_t line = NumberToInt(result) + 1;
750
- wchar_t buf[1024] = {};
751
-
752
- JsGetPropertyIdFromName(L"column", &property);
753
- if (JsGetProperty(jsError, property, &result) != JsNoError) {
754
- // If the 'column' property getter throws, clear the exception and ignore it.
755
- JsValueRef ignoreJSError{JS_INVALID_REFERENCE};
756
- JsGetAndClearException(&ignoreJSError);
757
- StringCchPrintf(buf, std::size(buf), L"Syntax error at line %i", line);
758
- } else {
759
- const int32_t column = NumberToInt(result);
760
- StringCchPrintf(buf, std::size(buf), L"Syntax error at line %i column %i", line, column);
761
- }
762
-
763
- SetProperty(jsError, m_propertyId.message, PointerToString(buf));
764
- }
765
- }
766
- }
767
-
768
- facebook::jsi::Value ChakraRuntime::ToJsiValue(JsValueRef ref) {
769
- switch (GetValueType(ref)) {
770
- case JsUndefined:
771
- return facebook::jsi::Value::undefined();
772
- case JsNull:
773
- return facebook::jsi::Value::null();
774
- case JsNumber:
775
- return facebook::jsi::Value(NumberToDouble(ref));
776
- case JsString:
777
- return facebook::jsi::Value(*this, MakePointer<facebook::jsi::String>(ref));
778
- case JsBoolean:
779
- return facebook::jsi::Value(BooleanToBool(ref));
780
- case JsSymbol:
781
- return facebook::jsi::Value(*this, MakePointer<facebook::jsi::Symbol>(ref));
782
- case JsObject:
783
- case JsFunction:
784
- case JsError:
785
- case JsArray:
786
- case JsArrayBuffer:
787
- case JsTypedArray:
788
- case JsDataView:
789
- return facebook::jsi::Value(*this, MakePointer<facebook::jsi::Object>(ref));
790
- default:
791
- throw facebook::jsi::JSINativeException("Unexpected value type");
792
- }
793
- }
794
-
795
- JsValueRef ChakraRuntime::ToJsValueRef(const facebook::jsi::Value &value) {
796
- if (value.isUndefined()) {
797
- return m_undefinedValue;
798
- } else if (value.isNull()) {
799
- return GetNullValue();
800
- } else if (value.isBool()) {
801
- return BoolToBoolean(value.getBool());
802
- } else if (value.isNumber()) {
803
- return DoubleToNumber(value.getNumber());
804
- } else if (value.isSymbol()) {
805
- return GetJsRef(value.getSymbol(*this));
806
- } else if (value.isString()) {
807
- return GetJsRef(value.getString(*this));
808
- } else if (value.isObject()) {
809
- return GetJsRef(value.getObject(*this));
810
- } else if (value.isBigInt()) {
811
- return GetJsRef(value.getBigInt(*this));
812
- } else {
813
- throw facebook::jsi::JSINativeException("Unexpected jsi::Value type");
814
- }
815
- }
816
-
817
- JsValueRef ChakraRuntime::CreateExternalFunction(
818
- JsPropertyIdRef name,
819
- int32_t paramCount,
820
- JsNativeFunction nativeFunction,
821
- void *callbackState) {
822
- JsValueRef nameString = GetPropertyStringFromId(name);
823
- JsValueRef function = CreateNamedFunction(nameString, nativeFunction, callbackState);
824
- DefineProperty(
825
- function,
826
- m_propertyId.length,
827
- CreatePropertyDescriptor(IntToNumber(paramCount), PropertyAttributes::DontEnumAndFrozen));
828
- return function;
829
- }
830
-
831
- JsValueRef CALLBACK ChakraRuntime::HostFunctionCall(
832
- JsValueRef /*callee*/,
833
- bool isConstructCall,
834
- JsValueRef *args,
835
- unsigned short argCount,
836
- void *callbackState) {
837
- HostFunctionWrapper *hostFuncWrapper = static_cast<HostFunctionWrapper *>(callbackState);
838
- ChakraRuntime &chakraRuntime = hostFuncWrapper->GetRuntime();
839
- return chakraRuntime.HandleCallbackExceptions([&]() {
840
- ChakraVerifyElseThrow(argCount > 0, "There must be at least 'this' argument.");
841
- const JsiValueView jsiThisArg{*args};
842
- const JsiValueViewArgs jsiArgs{args + 1, argCount - 1u};
843
-
844
- const facebook::jsi::HostFunctionType &hostFunc = hostFuncWrapper->GetHostFunction();
845
- return RunInMethodContext("HostFunction", [&]() {
846
- return chakraRuntime.ToJsValueRef(hostFunc(chakraRuntime, jsiThisArg, jsiArgs.Data(), jsiArgs.Size()));
847
- });
848
- });
849
- }
850
-
851
- /*static*/ JsValueRef CALLBACK ChakraRuntime::HostObjectGetTrap(
852
- JsValueRef /*callee*/,
853
- bool isConstructCall,
854
- JsValueRef *args,
855
- unsigned short argCount,
856
- void *callbackState) noexcept {
857
- ChakraRuntime *chakraRuntime = static_cast<ChakraRuntime *>(callbackState);
858
- return chakraRuntime->HandleCallbackExceptions([&]() {
859
- // args[0] - the Proxy handler object (this) (unused).
860
- // args[1] - the Proxy target object.
861
- // args[2] - the name of the property to set.
862
- // args[3] - the Proxy object (unused).
863
- ChakraVerifyElseThrow(argCount == 4, "HostObjectGetTrap() requires 4 arguments.");
864
- const JsValueRef target = args[1];
865
- const JsValueRef propertyName = args[2];
866
- if (GetValueType(propertyName) == JsValueType::JsString) {
867
- auto const &hostObject = *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(target));
868
- const PropNameIDView propertyId{GetPropertyIdFromName(StringToPointer(propertyName).data())};
869
- return RunInMethodContext("HostObject::get", [&]() {
870
- return chakraRuntime->ToJsValueRef(hostObject->get(*chakraRuntime, propertyId));
871
- });
872
- } else if (GetValueType(propertyName) == JsValueType::JsSymbol) {
873
- const auto chakraPropertyId = GetPropertyIdFromSymbol(propertyName);
874
- if (chakraPropertyId == chakraRuntime->m_propertyId.hostObjectSymbol) {
875
- // The special property to retrieve the target object.
876
- return target;
877
- } else {
878
- auto const &hostObject = *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(target));
879
- const PropNameIDView propertyId{chakraPropertyId};
880
- return RunInMethodContext("HostObject::get", [&]() {
881
- return chakraRuntime->ToJsValueRef(hostObject->get(*chakraRuntime, propertyId));
882
- });
883
- }
884
- }
885
-
886
- return static_cast<JsValueRef>(chakraRuntime->m_undefinedValue);
887
- });
888
- } // namespace Microsoft::JSI
889
-
890
- /*static*/ JsValueRef CALLBACK ChakraRuntime::HostObjectSetTrap(
891
- JsValueRef /*callee*/,
892
- bool isConstructCall,
893
- JsValueRef *args,
894
- unsigned short argCount,
895
- void *callbackState) noexcept {
896
- ChakraRuntime *chakraRuntime = static_cast<ChakraRuntime *>(callbackState);
897
- return chakraRuntime->HandleCallbackExceptions([&]() {
898
- // args[0] - the Proxy handler object (this) (unused).
899
- // args[1] - the Proxy target object.
900
- // args[2] - the name of the property to set.
901
- // args[3] - the new value of the property to set.
902
- // args[4] - the Proxy object (unused).
903
- ChakraVerifyElseThrow(argCount == 5, "HostObjectSetTrap() requires 5 arguments.");
904
-
905
- const JsValueRef target = args[1];
906
- const JsValueRef propertyName = args[2];
907
- if (GetValueType(propertyName) == JsValueType::JsString) {
908
- auto const &hostObject = *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(target));
909
- const PropNameIDView propertyId{GetPropertyIdFromName(StringToPointer(propertyName).data())};
910
- const JsiValueView value{args[3]};
911
- RunInMethodContext("HostObject::set", [&]() { hostObject->set(*chakraRuntime, propertyId, value); });
912
- }
913
-
914
- return static_cast<JsValueRef>(chakraRuntime->m_undefinedValue);
915
- });
916
- }
917
-
918
- /*static*/ JsValueRef CALLBACK ChakraRuntime::HostObjectOwnKeysTrap(
919
- JsValueRef /*callee*/,
920
- bool isConstructCall,
921
- JsValueRef *args,
922
- unsigned short argCount,
923
- void *callbackState) noexcept {
924
- ChakraRuntime *chakraRuntime = static_cast<ChakraRuntime *>(callbackState);
925
- return chakraRuntime->HandleCallbackExceptions([&]() {
926
- ChakraVerifyElseThrow(!isConstructCall, "Constructor call for HostObjectOwnKeysTrap() is not supported.");
927
-
928
- // args[0] - the Proxy handler object (this) (unused).
929
- // args[1] - the Proxy target object.
930
- ChakraVerifyElseThrow(argCount == 2, "HostObjectOwnKeysTrap() requires 2 arguments.");
931
- const JsValueRef target = args[1];
932
- auto const &hostObject = *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(target));
933
-
934
- const std::vector<facebook::jsi::PropNameID> ownKeys = RunInMethodContext(
935
- "HostObject::getPropertyNames", [&]() { return hostObject->getPropertyNames(*chakraRuntime); });
936
-
937
- std::unordered_set<JsPropertyIdRef> dedupedOwnKeys{};
938
- dedupedOwnKeys.reserve(ownKeys.size());
939
- for (facebook::jsi::PropNameID const &key : ownKeys) {
940
- dedupedOwnKeys.insert(GetJsRef(key));
941
- }
942
-
943
- const JsValueRef result = CreateArray(dedupedOwnKeys.size());
944
- int32_t index = 0;
945
- for (JsPropertyIdRef key : dedupedOwnKeys) {
946
- SetIndexedProperty(result, index, GetPropertyStringFromId(key));
947
- ++index;
948
- }
949
-
950
- return result;
951
- });
952
- }
953
-
954
- /*static*/ JsValueRef CALLBACK ChakraRuntime::HostObjectGetOwnPropertyDescriptorTrap(
955
- JsValueRef callee,
956
- bool isConstructCall,
957
- JsValueRef *args,
958
- unsigned short argCount,
959
- void *callbackState) noexcept {
960
- ChakraRuntime *chakraRuntime = static_cast<ChakraRuntime *>(callbackState);
961
- return chakraRuntime->HandleCallbackExceptions([&]() {
962
- ChakraVerifyElseThrow(
963
- !isConstructCall, "Constructor call for HostObjectGetOwnPropertyDescriptorTrap() is not supported.");
964
-
965
- // args[0] - the Proxy handler object (this) (unused).
966
- // args[1] - the Proxy target object.
967
- // args[2] - the property
968
- ChakraVerifyElseThrow(argCount == 3, "HostObjectGetOwnPropertyDescriptorTrap() requires 3 arguments.");
969
- const JsValueRef target = args[1];
970
- auto const &hostObject = *static_cast<std::shared_ptr<facebook::jsi::HostObject> *>(GetExternalData(target));
971
-
972
- const JsValueRef propertyName = args[2];
973
- if (GetValueType(propertyName) == JsValueType::JsString) {
974
- const PropNameIDView propertyId{GetPropertyIdFromName(StringToPointer(propertyName).data())};
975
- return RunInMethodContext("HostObject::getOwnPropertyDescriptor", [&]() {
976
- auto value = chakraRuntime->ToJsValueRef(hostObject->get(*chakraRuntime, propertyId));
977
- auto descriptor = chakraRuntime->CreatePropertyDescriptor(value, PropertyAttributes::None);
978
- return descriptor;
979
- });
980
- }
981
- return static_cast<JsValueRef>(chakraRuntime->m_undefinedValue);
982
- });
983
- }
984
-
985
- JsValueRef ChakraRuntime::GetHostObjectProxyHandler() {
986
- if (!m_hostObjectProxyHandler) {
987
- const JsValueRef handler = CreateObject();
988
- SetProperty(handler, m_propertyId.get, CreateExternalFunction(m_propertyId.get, 2, HostObjectGetTrap, this));
989
- SetProperty(handler, m_propertyId.set, CreateExternalFunction(m_propertyId.set, 3, HostObjectSetTrap, this));
990
- SetProperty(
991
- handler, m_propertyId.ownKeys, CreateExternalFunction(m_propertyId.ownKeys, 1, HostObjectOwnKeysTrap, this));
992
- SetProperty(
993
- handler,
994
- m_propertyId.getOwnPropertyDescriptor,
995
- CreateExternalFunction(m_propertyId.getOwnPropertyDescriptor, 3, HostObjectGetOwnPropertyDescriptorTrap, this));
996
- m_hostObjectProxyHandler = JsRefHolder{handler};
997
- }
998
-
999
- return m_hostObjectProxyHandler;
1000
- }
1001
-
1002
- /*virtual*/ void ChakraRuntime::setupNativePromiseContinuation() noexcept {}
1003
-
1004
- //===========================================================================
1005
- // ChakraRuntime::JsValueArgs implementation
1006
- //===========================================================================
1007
-
1008
- ChakraRuntime::JsValueArgs::JsValueArgs(
1009
- ChakraRuntime &rt,
1010
- facebook::jsi::Value const &firstArg,
1011
- Span<facebook::jsi::Value const> args)
1012
- : m_count{args.size() + 1},
1013
- m_heapArgs{m_count > MaxStackArgCount ? std::make_unique<JsValueRef[]>(m_count) : nullptr} {
1014
- JsValueRef *const jsArgs = m_heapArgs ? m_heapArgs.get() : m_stackArgs.data();
1015
- jsArgs[0] = rt.ToJsValueRef(firstArg);
1016
- for (size_t i = 1; i < m_count; ++i) {
1017
- jsArgs[i] = rt.ToJsValueRef(args.begin()[i - 1]);
1018
- }
1019
- if (m_heapArgs) {
1020
- // Chakra GC cannot see values on heap. They must be ref-counted.
1021
- for (size_t i = 0; i < m_count; ++i) {
1022
- AddRef(m_heapArgs[i]);
1023
- }
1024
- }
1025
- }
1026
-
1027
- ChakraRuntime::JsValueArgs::~JsValueArgs() {
1028
- if (m_heapArgs) {
1029
- for (size_t i = 0; i < m_count; ++i) {
1030
- Release(m_heapArgs[i]);
1031
- }
1032
- }
1033
- }
1034
-
1035
- ChakraRuntime::JsValueArgs::operator ChakraApi::Span<JsValueRef>() {
1036
- if (m_count > MaxStackArgCount) {
1037
- return Span<JsValueRef>(m_heapArgs.get(), m_count);
1038
- } else {
1039
- return Span<JsValueRef>(m_stackArgs.data(), m_count);
1040
- }
1041
- }
1042
-
1043
- //===========================================================================
1044
- // ChakraRuntime::JsiValueView implementation
1045
- //===========================================================================
1046
-
1047
- ChakraRuntime::JsiValueView::JsiValueView(JsValueRef jsValue)
1048
- : m_value{InitValue(jsValue, std::addressof(m_pointerStore))} {}
1049
-
1050
- ChakraRuntime::JsiValueView::~JsiValueView() noexcept {}
1051
-
1052
- ChakraRuntime::JsiValueView::operator facebook::jsi::Value const &() const noexcept {
1053
- return m_value;
1054
- }
1055
-
1056
- /*static*/ facebook::jsi::Value ChakraRuntime::JsiValueView::InitValue(JsValueRef jsValue, StoreType *store) {
1057
- switch (GetValueType(jsValue)) {
1058
- case JsUndefined:
1059
- return facebook::jsi::Value::undefined();
1060
- case JsNull:
1061
- return facebook::jsi::Value::null();
1062
- case JsNumber:
1063
- return facebook::jsi::Value(NumberToDouble(jsValue));
1064
- case JsString:
1065
- return make<facebook::jsi::String>(new (store) ChakraPointerValueView(jsValue));
1066
- case JsBoolean:
1067
- return facebook::jsi::Value(BooleanToBool(jsValue));
1068
- case JsSymbol:
1069
- return make<facebook::jsi::Symbol>(new (store) ChakraPointerValueView(jsValue));
1070
- case JsObject:
1071
- case JsFunction:
1072
- case JsError:
1073
- case JsArray:
1074
- case JsArrayBuffer:
1075
- case JsTypedArray:
1076
- case JsDataView:
1077
- return make<facebook::jsi::Object>(new (store) ChakraPointerValueView(jsValue));
1078
- default:
1079
- throw facebook::jsi::JSINativeException("Unexpected JsValueType");
1080
- }
1081
- }
1082
-
1083
- //===========================================================================
1084
- // ChakraRuntime::JsiValueViewArray implementation
1085
- //===========================================================================
1086
-
1087
- ChakraRuntime::JsiValueViewArgs::JsiValueViewArgs(JsValueRef *args, size_t argCount) noexcept
1088
- : m_size{argCount},
1089
- m_heapPointerStore{m_size > MaxStackArgCount ? std::make_unique<JsiValueView::StoreType[]>(m_size) : nullptr},
1090
- m_heapArgs{m_size > MaxStackArgCount ? std::make_unique<facebook::jsi::Value[]>(m_size) : nullptr} {
1091
- JsiValueView::StoreType *const pointerStore =
1092
- m_heapPointerStore ? m_heapPointerStore.get() : m_stackPointerStore.data();
1093
- facebook::jsi::Value *const jsiArgs = m_heapArgs ? m_heapArgs.get() : m_stackArgs.data();
1094
- for (size_t i = 0; i < m_size; ++i) {
1095
- jsiArgs[i] = JsiValueView::InitValue(args[i], std::addressof(pointerStore[i]));
1096
- }
1097
- }
1098
-
1099
- facebook::jsi::Value const *ChakraRuntime::JsiValueViewArgs::Data() const noexcept {
1100
- return m_heapArgs ? m_heapArgs.get() : m_stackArgs.data();
1101
- }
1102
-
1103
- size_t ChakraRuntime::JsiValueViewArgs::Size() const noexcept {
1104
- return m_size;
1105
- }
1106
-
1107
- //===========================================================================
1108
- // ChakraRuntime::PropNameIDView implementation
1109
- //===========================================================================
1110
-
1111
- ChakraRuntime::PropNameIDView::PropNameIDView(JsPropertyIdRef propertyId) noexcept
1112
- : m_propertyId{
1113
- make<facebook::jsi::PropNameID>(new(std::addressof(m_pointerStore)) ChakraPointerValueView(propertyId))} {}
1114
-
1115
- ChakraRuntime::PropNameIDView::~PropNameIDView() noexcept {}
1116
-
1117
- ChakraRuntime::PropNameIDView::operator facebook::jsi::PropNameID const &() const noexcept {
1118
- return m_propertyId;
1119
- }
1120
-
1121
- //===========================================================================
1122
- // ChakraRuntime miscellaneous
1123
- //===========================================================================
1124
-
1125
- std::once_flag ChakraRuntime::s_runtimeVersionInitFlag;
1126
- uint64_t ChakraRuntime::s_runtimeVersion = 0;
1127
-
1128
- std::unique_ptr<facebook::jsi::Runtime> makeChakraRuntime(ChakraRuntimeArgs &&args) noexcept {
1129
- return MakeSystemChakraRuntime(std::move(args));
1130
- }
1131
-
1132
- } // namespace Microsoft::JSI