react-native-windows 0.80.1 → 0.81.0-preview.4
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.
- package/.flowconfig +10 -5
- package/Directory.Build.props +1 -1
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.js +3 -3
- package/Libraries/Alert/Alert.windows.js +5 -2
- package/Libraries/Alert/NativeAlertManager.js +1 -0
- package/Libraries/Alert/RCTAlertManager.android.js +19 -13
- package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
- package/Libraries/Alert/RCTAlertManager.js +1 -3
- package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
- package/Libraries/Animated/Animated.js +0 -1
- package/Libraries/Animated/Animated.js.flow +0 -1
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js +0 -1
- package/Libraries/Animated/AnimatedExports.js.flow +5 -1
- package/Libraries/Animated/AnimatedImplementation.js +44 -44
- package/Libraries/Animated/AnimatedMock.js +2 -2
- package/Libraries/Animated/Easing.js +1 -1
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/SpringConfig.js +1 -1
- package/Libraries/Animated/animations/Animation.js +10 -2
- package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
- package/Libraries/Animated/components/AnimatedText.js +2 -5
- package/Libraries/Animated/components/AnimatedView.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +39 -37
- package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
- package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
- package/Libraries/AppState/NativeAppState.js +1 -0
- package/Libraries/AppTheme/AppTheme.js +1 -1
- package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/BlobManager.js +4 -0
- package/Libraries/Blob/NativeBlobModule.js +1 -0
- package/Libraries/Blob/NativeFileReaderModule.js +1 -0
- package/Libraries/Blob/URL.js +1 -1
- package/Libraries/Blob/URLSearchParams.js +5 -1
- package/Libraries/Blob/URLSearchParams.js.flow +2 -1
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.windows.js +1 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
- package/Libraries/Components/Button.js +10 -7
- package/Libraries/Components/Button.windows.js +4 -4
- package/Libraries/Components/Clipboard/Clipboard.js +1 -1
- package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
- package/Libraries/Components/Flyout/FlyoutNativeComponent.js +1 -1
- package/Libraries/Components/Glyph/GlyphNativeComponent.js +1 -1
- package/Libraries/Components/Keyboard/Keyboard.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
- package/Libraries/Components/Popup/PopupNativeComponent.js +1 -1
- package/Libraries/Components/Pressable/Pressable.js +17 -8
- package/Libraries/Components/Pressable/Pressable.windows.js +17 -14
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
- package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
- package/Libraries/Components/ScrollView/ScrollView.js +25 -15
- package/Libraries/Components/ScrollView/ScrollView.windows.js +25 -14
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
- package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
- package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
- package/Libraries/Components/Sound/SoundManager.js +1 -1
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
- package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
- package/Libraries/Components/StatusBar/StatusBar.js +6 -1
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
- package/Libraries/Components/Switch/Switch.js +10 -3
- package/Libraries/Components/Switch/Switch.windows.js +10 -3
- package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
- package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
- package/Libraries/Components/TextInput/TextInput.flow.windows.js +12 -15
- package/Libraries/Components/TextInput/TextInput.js +42 -39
- package/Libraries/Components/TextInput/TextInput.windows.js +69 -38
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -17
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
- package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Position.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +17 -3
- package/Libraries/Components/Touchable/Touchable.windows.js +17 -3
- package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +14 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +5 -3
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +10 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +3 -3
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
- package/Libraries/Components/View/View.js +114 -29
- package/Libraries/Components/View/View.windows.js +261 -217
- package/Libraries/Components/View/ViewAccessibility.js +1 -8
- package/Libraries/Components/View/ViewAccessibility.windows.js +1 -8
- package/Libraries/Components/View/ViewPropTypes.d.ts +21 -1
- package/Libraries/Components/View/ViewPropTypes.js +9 -1
- package/Libraries/Components/View/ViewPropTypes.windows.js +9 -1
- package/Libraries/Core/Devtools/getDevServer.js +1 -1
- package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
- package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +49 -7
- package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
- package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
- package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +27 -16
- package/Libraries/Core/InitializeCore.js +2 -23
- package/Libraries/Core/NativeExceptionsManager.js +1 -0
- package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +3 -2
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
- package/Libraries/Core/Timers/JSTimers.js +1 -1
- package/Libraries/Core/Timers/NativeTiming.js +1 -0
- package/Libraries/Core/Timers/immediateShim.js +1 -1
- package/Libraries/Core/Timers/queueMicrotask.js +1 -1
- package/Libraries/Core/checkNativeVersion.js +1 -0
- package/Libraries/Core/setUpDeveloperTools.js +13 -11
- package/Libraries/Core/setUpReactDevTools.js +21 -4
- package/Libraries/Debugging/DebuggingOverlay.js +12 -14
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
- package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
- package/Libraries/Image/AssetRegistry.js +4 -10
- package/Libraries/Image/Image.android.js +113 -107
- package/Libraries/Image/Image.ios.js +10 -2
- package/Libraries/Image/Image.windows.js +30 -20
- package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
- package/Libraries/Image/ImageInjection.js +1 -1
- package/Libraries/Image/ImageSource.d.ts +5 -0
- package/Libraries/Image/ImageViewNativeComponent.js +3 -3
- package/Libraries/Image/NativeImageEditor.js +1 -0
- package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
- package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/RelativeImageStub.js +2 -1
- package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Image/resolveAssetSource.windows.js +1 -1
- package/Libraries/Interaction/FrameRateLogger.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +64 -54
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/TaskQueue.js +8 -9
- package/Libraries/Interaction/TouchHistoryMath.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Linking/NativeIntentAndroid.js +1 -0
- package/Libraries/Linking/NativeLinkingManager.js +1 -0
- package/Libraries/Lists/FlatList.d.ts +9 -5
- package/Libraries/Lists/FlatList.js +6 -7
- package/Libraries/Lists/SectionList.js +4 -4
- package/Libraries/Lists/SectionListModern.js +9 -3
- package/Libraries/Lists/VirtualizedList.js +3 -2
- package/Libraries/LogBox/Data/LogBoxData.js +7 -4
- package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
- package/Libraries/LogBox/LogBox.js +72 -99
- package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
- package/Libraries/Modal/Modal.d.ts +8 -2
- package/Libraries/Modal/Modal.js +24 -3
- package/Libraries/Modal/Modal.windows.js +24 -3
- package/Libraries/Modal/NativeModalManager.js +1 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
- package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +9 -18
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
- package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
- package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerWindows.js +1 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
- package/Libraries/Network/FormData.js +1 -1
- package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
- package/Libraries/Network/NativeNetworkingIOS.js +1 -0
- package/Libraries/Network/RCTNetworking.android.js +2 -2
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.windows.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +3 -3
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/Pressability/Pressability.windows.js +1 -1
- package/Libraries/Promise.js +1 -1
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
- package/Libraries/ReactNative/AppContainer-dev.js +4 -4
- package/Libraries/ReactNative/AppContainer-prod.js +0 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
- package/Libraries/ReactNative/NativeI18nManager.js +1 -0
- package/Libraries/ReactNative/NativeUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +1 -1
- package/Libraries/ReactNative/RendererProxy.js +1 -1
- package/Libraries/ReactNative/RootTag.js +2 -2
- package/Libraries/ReactNative/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
- package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +261 -0
- package/Libraries/Settings/NativeSettingsManager.js +1 -0
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/Settings/Settings.js +1 -1
- package/Libraries/Settings/SettingsFallback.js +1 -1
- package/Libraries/Share/NativeShareModule.js +1 -0
- package/Libraries/Share/Share.js +1 -1
- package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
- package/Libraries/StyleSheet/PointPropType.js +1 -1
- package/Libraries/StyleSheet/Rect.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +1 -0
- package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +1 -1
- package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
- package/Libraries/StyleSheet/processBoxShadow.js +0 -1
- package/Libraries/StyleSheet/processColor.js +1 -1
- package/Libraries/StyleSheet/processColorArray.js +1 -1
- package/Libraries/StyleSheet/processFilter.js +1 -2
- package/Libraries/StyleSheet/processFontVariant.js +1 -1
- package/Libraries/StyleSheet/processTransform.js +1 -1
- package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
- package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
- package/Libraries/Text/Text.d.ts +1 -2
- package/Libraries/Text/Text.js +255 -246
- package/Libraries/Text/Text.windows.js +282 -301
- package/Libraries/Text/TextAncestor.js +3 -9
- package/Libraries/Text/TextAncestorContext.js +23 -0
- package/Libraries/Text/TextNativeComponent.js +4 -0
- package/Libraries/Text/TextProps.js +2 -5
- package/Libraries/Text/TextProps.windows.js +2 -6
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CodegenTypesNamespace.js +2 -1
- package/Libraries/Types/CoreEventTypes.d.ts +4 -0
- package/Libraries/Types/ReactDevToolsTypes.js +0 -1
- package/Libraries/Utilities/Appearance.js +1 -1
- package/Libraries/Utilities/BackHandler.js.flow +1 -1
- package/Libraries/Utilities/DevLoadingView.js +1 -1
- package/Libraries/Utilities/DeviceInfo.js +1 -1
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/HMRClient.js +13 -3
- package/Libraries/Utilities/HMRClientProdShim.js +1 -1
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
- package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
- package/Libraries/Utilities/PixelRatio.js +1 -1
- package/Libraries/Utilities/Platform.android.js +2 -5
- package/Libraries/Utilities/Platform.ios.js +2 -5
- package/Libraries/Utilities/Platform.js +1 -1
- package/Libraries/Utilities/Platform.js.flow +2 -2
- package/Libraries/Utilities/Platform.windows.js +2 -5
- package/Libraries/Utilities/PlatformTypes.js +2 -2
- package/Libraries/Utilities/RCTLog.js +1 -1
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +5 -3
- package/Libraries/Utilities/codegenNativeComponent.js +4 -4
- package/Libraries/Utilities/createPerformanceLogger.js +27 -20
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
- package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
- package/Libraries/Utilities/differ/deepDiffer.js +1 -1
- package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
- package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
- package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/mapWithSeparator.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +1 -1
- package/Libraries/Utilities/stringifyViewConfig.js +1 -1
- package/Libraries/Utilities/useColorScheme.js +1 -1
- package/Libraries/Utilities/useWindowDimensions.js +1 -1
- package/Libraries/Utilities/warnOnce.js +1 -1
- package/Libraries/Vibration/NativeVibration.js +1 -0
- package/Libraries/Vibration/Vibration.js +1 -2
- package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +6 -6
- package/Microsoft.ReactNative/CompositionSwitcher.idl +163 -162
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +3 -3
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.cpp +2 -1
- package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +2 -2
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.cpp +2 -1
- package/Microsoft.ReactNative/Fabric/AbiViewShadowNode.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +104 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +18 -7
- package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.cpp +169 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggerUIIsland.h +42 -0
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +41 -33
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +68 -1
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +9 -0
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +108 -24
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -1
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +6 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +62 -39
- package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.cpp +75 -24
- package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.h +4 -25
- package/Microsoft.ReactNative/JsiApi.cpp +1 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -0
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +3 -0
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +0 -2
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -1
- package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +27 -11
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
- package/Microsoft.ReactNative/QuirkSettings.cpp +16 -0
- package/Microsoft.ReactNative/QuirkSettings.h +3 -0
- package/Microsoft.ReactNative/QuirkSettings.idl +5 -0
- package/Microsoft.ReactNative/ReactHost/DebuggerNotifications.h +54 -0
- package/Microsoft.ReactNative/ReactHost/React.h +11 -4
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +199 -29
- package/Microsoft.ReactNative/ReactHost/ReactHost.h +22 -4
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +68 -52
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactRootView.cpp +108 -0
- package/Microsoft.ReactNative/ReactRootView.h +6 -0
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +1 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +1 -1
- package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
- package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
- package/Microsoft.ReactNative/Views/ViewManager.h +0 -1
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +41 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +16 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +125 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +167 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +110 -38
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +5 -5
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +0 -2
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.h +0 -19
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +14 -8
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +44 -31
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +13 -14
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +19 -4
- package/Microsoft.ReactNative.Cxx/node-api/node_api.h +270 -0
- package/Microsoft.ReactNative.Cxx/node-api/node_api_types.h +52 -0
- package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +13 -4
- package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/React.Cpp.props +6 -4
- package/README.md +1 -1
- package/ReactCommon/ReactCommon.vcxproj +29 -21
- package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +6 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +111 -7
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +57 -4
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +17 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/network/HttpUtils.cpp +175 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +69 -56
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +35 -18
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +445 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +37 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +250 -80
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/ShadowNode.cpp +528 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
- package/ReactCommon/TEMP_UntilReactCommonUpdate/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +9 -12
- package/ReactCommon/cgmanifest.json +1 -1
- package/Scripts/Analyze-Crash.ps1 +87 -3
- package/Scripts/OfficeReact.Win32.nuspec +0 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -0
- package/Scripts/Tfs/Start-TestServers.ps1 +2 -1
- package/Scripts/creaternwapp.cmd +10 -6
- package/Scripts/rnw-dependencies.ps1 +33 -4
- package/Shared/CreateModules.h +0 -35
- package/Shared/DevServerHelper.h +13 -3
- package/Shared/DevSettings.h +6 -5
- package/Shared/DevSupportManager.cpp +79 -20
- package/Shared/DevSupportManager.h +7 -19
- package/Shared/Hermes/HermesRuntimeAgentDelegate.cpp +99 -0
- package/Shared/Hermes/HermesRuntimeAgentDelegate.h +81 -0
- package/Shared/Hermes/HermesRuntimeTargetDelegate.cpp +274 -0
- package/Shared/Hermes/HermesRuntimeTargetDelegate.h +77 -0
- package/Shared/HermesRuntimeHolder.cpp +29 -111
- package/Shared/HermesRuntimeHolder.h +214 -32
- package/Shared/IDevSupportManager.h +5 -2
- package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.cpp +108 -0
- package/Shared/Inspector/ReactInspectorPackagerConnectionDelegate.h +19 -0
- package/Shared/Inspector/ReactInspectorThread.h +18 -0
- package/Shared/JSI/RuntimeHolder.h +5 -2
- package/Shared/Modules/BlobModule.cpp +0 -90
- package/Shared/Modules/BlobModule.h +0 -40
- package/Shared/Modules/FileReaderModule.cpp +0 -104
- package/Shared/Modules/FileReaderModule.h +0 -38
- package/Shared/Modules/HttpModule.cpp +0 -172
- package/Shared/Modules/HttpModule.h +0 -47
- package/Shared/Modules/WebSocketModule.cpp +0 -287
- package/Shared/Modules/WebSocketModule.h +1 -94
- package/Shared/OInstance.cpp +45 -139
- package/Shared/OInstance.h +0 -1
- package/Shared/Shared.vcxitems +33 -32
- package/Shared/Shared.vcxitems.filters +38 -51
- package/Shared/TurboModuleManager.cpp +0 -1
- package/codegen/NativeDOMSpec.g.h +6 -0
- package/codegen/NativeDeviceInfoSpec.g.h +2 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
- package/codegen/NativeMutationObserverSpec.g.h +4 -4
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +159 -93
- package/codegen/react/components/rnwcore/EventEmitters.cpp +25 -0
- package/codegen/react/components/rnwcore/EventEmitters.h +25 -0
- package/codegen/react/components/rnwcore/ModalHostView.g.h +4 -0
- package/codegen/react/components/rnwcore/Props.cpp +535 -24
- package/codegen/react/components/rnwcore/Props.h +138 -0
- package/codegen/react/components/rnwcore/States.h +9 -78
- package/codegen/react/components/rnwcore/VirtualView.g.h +226 -0
- package/codegen/rnwcoreJSI-generated.cpp +101 -31
- package/codegen/rnwcoreJSI.h +169 -88
- package/include/Shared/II18nModule.h +0 -1
- package/index.js +22 -2
- package/index.windows.js +131 -221
- package/interface.js +1 -1
- package/jest/MockNativeMethods.js +9 -3
- package/jest/RefreshControlMock.js +32 -0
- package/jest/assetFileTransformer.js +1 -0
- package/jest/local-setup.js +4 -3
- package/jest/mock.js +39 -0
- package/jest/mockComponent.js +47 -17
- package/jest/mockNativeComponent.js +26 -15
- package/jest/mocks/AccessibilityInfo.js +62 -0
- package/jest/mocks/ActivityIndicator.js +23 -0
- package/jest/mocks/AppState.js +19 -0
- package/jest/mocks/Clipboard.js +16 -0
- package/jest/mocks/Image.js +23 -0
- package/jest/mocks/InitializeCore.js +9 -0
- package/jest/mocks/Linking.js +28 -0
- package/jest/mocks/Modal.js +33 -0
- package/jest/mocks/NativeComponentRegistry.js +30 -0
- package/jest/mocks/NativeModules.js +239 -0
- package/jest/mocks/RefreshControl.js +31 -0
- package/jest/mocks/RendererProxy.js +45 -0
- package/jest/mocks/ScrollView.js +58 -0
- package/jest/mocks/Text.js +27 -0
- package/jest/mocks/TextInput.js +32 -0
- package/jest/mocks/UIManager.js +60 -0
- package/jest/mocks/Vibration.js +16 -0
- package/jest/mocks/View.js +27 -0
- package/jest/mocks/ViewNativeComponent.js +23 -0
- package/jest/mocks/requireNativeComponent.js +22 -0
- package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
- package/jest/react-native-env.js +1 -0
- package/jest/renderer.js +1 -2
- package/jest/resolver.js +1 -0
- package/jest/setup.js +64 -449
- package/package.json +24 -24
- package/src/private/animated/NativeAnimatedHelper.js +8 -1
- package/src/private/animated/createAnimatedPropsHook.js +14 -4
- package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
- package/src/private/components/virtualview/VirtualView.js +145 -0
- package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
- package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
- package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
- package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
- package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.windows.js +8 -9
- package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
- package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
- package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
- package/src/private/setup/setUpPerformanceObserver.js +7 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
- package/src/private/styles/composeStyles.js +5 -12
- package/src/private/types/HostInstance.js +1 -1
- package/src/private/webapis/dom/events/Event.js +3 -0
- package/src/private/webapis/dom/events/EventTarget.js +3 -0
- package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
- package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
- package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
- package/src/private/webapis/errors/DOMException.js +166 -0
- package/src/private/webapis/geometry/DOMRect.js +5 -0
- package/src/private/webapis/geometry/DOMRectList.js +4 -1
- package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
- package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
- package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
- package/src/private/webapis/performance/EventTiming.js +1 -1
- package/src/private/webapis/performance/LongTasks.js +1 -1
- package/src/private/webapis/performance/MemoryInfo.js +4 -1
- package/src/private/webapis/performance/Performance.js +20 -9
- package/src/private/webapis/performance/PerformanceEntry.js +5 -1
- package/src/private/webapis/performance/PerformanceObserver.js +32 -28
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
- package/src/private/webapis/performance/ResourceTiming.js +108 -0
- package/src/private/webapis/performance/UserTiming.js +1 -1
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
- package/src/private/webapis/structuredClone/structuredClone.js +233 -0
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src/private/webapis/webidl/PlatformObjects.js +59 -0
- package/template/metro.config.js +2 -4
- package/templates/cpp-app/metro.config.js +2 -4
- package/templates/cpp-lib/example/metro.config.js +2 -3
- package/templates/cpp-lib/template.config.js +24 -0
- package/templates/cpp-lib/windows/MyLib/MyLib.h +20 -1
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
- package/types/modules/Devtools.d.ts +23 -9
- package/Libraries/BugReporting/BugReporting.js +0 -140
- package/Libraries/BugReporting/NativeBugReporting.js +0 -13
- package/Libraries/BugReporting/dumpReactTree.js +0 -151
- package/Libraries/BugReporting/getReactData.js +0 -187
- package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jserrorhandler/JsErrorHandler.cpp +0 -429
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.cpp +0 -45
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsitooling/react/runtime/JSRuntimeFactory.h +0 -91
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/CullingContext.cpp +0 -49
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +0 -191
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +0 -670
- package/Shared/InspectorPackagerConnection.cpp +0 -232
- package/Shared/InspectorPackagerConnection.h +0 -61
- package/Shared/Modules/ExceptionsManagerModule.cpp +0 -209
- package/Shared/Modules/ExceptionsManagerModule.h +0 -32
- package/Shared/Modules/I18nModule.cpp +0 -36
- package/Shared/Modules/I18nModule.h +0 -28
- package/Shared/Modules/NetworkingModule.cpp +0 -432
- package/Shared/Modules/NetworkingModule.h +0 -34
- package/Shared/Modules/PlatformConstantsModule.cpp +0 -60
- package/Shared/Modules/PlatformConstantsModule.h +0 -23
- package/Shared/Modules/SourceCodeModule.cpp +0 -35
- package/Shared/Modules/SourceCodeModule.h +0 -27
- package/Shared/Modules/StatusBarManagerModule.cpp +0 -25
- package/Shared/Modules/StatusBarManagerModule.h +0 -19
- package/codegen/NativeBugReportingSpec.g.h +0 -41
- package/jest/mockModal.js +0 -32
- package/jest/mockScrollView.js +0 -35
- package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
- /package/Shared/{HermesSamplingProfiler.cpp → Hermes/HermesSamplingProfiler.cpp} +0 -0
- /package/Shared/{HermesSamplingProfiler.h → Hermes/HermesSamplingProfiler.h} +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// This file must match the code in React Native folder:
|
|
12
|
+
// ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.cpp
|
|
13
|
+
// Unlike the code in React Native sources, this class delegates calls to Hermes C-based API.
|
|
14
|
+
|
|
15
|
+
#include "HermesRuntimeAgentDelegate.h"
|
|
16
|
+
|
|
17
|
+
#include <jsinspector-modern/ReactCdp.h>
|
|
18
|
+
|
|
19
|
+
using namespace facebook::react::jsinspector_modern;
|
|
20
|
+
|
|
21
|
+
namespace Microsoft::ReactNative {
|
|
22
|
+
|
|
23
|
+
namespace {
|
|
24
|
+
|
|
25
|
+
struct HermesStateWrapper : public RuntimeAgentDelegate::ExportedState {
|
|
26
|
+
explicit HermesStateWrapper(HermesUniqueCdpState &&hermesCdpState) : hermesCdpState_(std::move(hermesCdpState)) {}
|
|
27
|
+
|
|
28
|
+
static HermesUniqueCdpState unwrapDestructively(ExportedState *wrapper) {
|
|
29
|
+
if (!wrapper) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
if (auto *typedWrapper = dynamic_cast<HermesStateWrapper *>(wrapper)) {
|
|
33
|
+
return std::move(typedWrapper->hermesCdpState_);
|
|
34
|
+
}
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private:
|
|
39
|
+
HermesUniqueCdpState hermesCdpState_;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
} // namespace
|
|
43
|
+
|
|
44
|
+
HermesRuntimeAgentDelegate::HermesRuntimeAgentDelegate(
|
|
45
|
+
FrontendChannel frontendChannel,
|
|
46
|
+
SessionState &sessionState,
|
|
47
|
+
std::unique_ptr<RuntimeAgentDelegate::ExportedState> previouslyExportedState,
|
|
48
|
+
const ExecutionContextDescription &executionContextDescription,
|
|
49
|
+
hermes_runtime runtime,
|
|
50
|
+
HermesRuntimeTargetDelegate &runtimeTargetDelegate,
|
|
51
|
+
facebook::react::RuntimeExecutor runtimeExecutor)
|
|
52
|
+
: hermesCdpAgent_(HermesInspectorApi::createCdpAgent(
|
|
53
|
+
runtimeTargetDelegate.getCdpDebugApi(),
|
|
54
|
+
executionContextDescription.id,
|
|
55
|
+
// Adapt std::function<void(std::function<void(jsi::Runtime& runtime)>&& callback)>
|
|
56
|
+
// to hermes_enqueue_runtime_task_functor
|
|
57
|
+
AsFunctor<hermes_enqueue_runtime_task_functor>(
|
|
58
|
+
[runtimeExecutor = std::move(runtimeExecutor), runtime](hermes_run_runtime_task_functor runtimeTask) {
|
|
59
|
+
// Adapt std::function<void(jsi::Runtime& runtime)> to hermes_runtime_task_functor
|
|
60
|
+
runtimeExecutor(
|
|
61
|
+
[runtime, fn = std::make_shared<FunctorWrapper<hermes_run_runtime_task_functor>>(runtimeTask)](
|
|
62
|
+
facebook::jsi::Runtime &rt) { (*fn)(runtime); });
|
|
63
|
+
}),
|
|
64
|
+
// Adapt void(const char *json_utf8, size_t json_size) to std::function<void(std::string_view)>
|
|
65
|
+
AsFunctor<hermes_enqueue_frontend_message_functor>(
|
|
66
|
+
[frontendChannel = std::move(frontendChannel)](const char *json_utf8, size_t json_size) {
|
|
67
|
+
frontendChannel(std::string_view(json_utf8, json_size));
|
|
68
|
+
}),
|
|
69
|
+
HermesStateWrapper::unwrapDestructively(previouslyExportedState.get()).release())) {
|
|
70
|
+
// Enable domains conditionally based on session state
|
|
71
|
+
// This matches the iOS/Android implementation pattern:
|
|
72
|
+
// Domains are enabled in response to Chrome DevTools sending Runtime.enable/Debugger.enable
|
|
73
|
+
if (sessionState.isRuntimeDomainEnabled) {
|
|
74
|
+
HermesInspectorApi::enableRuntimeDomain(hermesCdpAgent_.get());
|
|
75
|
+
}
|
|
76
|
+
if (sessionState.isDebuggerDomainEnabled) {
|
|
77
|
+
HermesInspectorApi::enableDebuggerDomain(hermesCdpAgent_.get());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
HermesRuntimeAgentDelegate::~HermesRuntimeAgentDelegate() = default;
|
|
82
|
+
|
|
83
|
+
bool HermesRuntimeAgentDelegate::handleRequest(const cdp::PreparsedRequest &req) {
|
|
84
|
+
if (req.method.starts_with("Log.")) {
|
|
85
|
+
// Since we know Hermes doesn't do anything useful with Log messages,
|
|
86
|
+
// but our containing HostAgent will, bail out early.
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
std::string json = req.toJson();
|
|
91
|
+
HermesInspectorApi::handleCommand(hermesCdpAgent_.get(), json.c_str(), json.size());
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
std::unique_ptr<RuntimeAgentDelegate::ExportedState> HermesRuntimeAgentDelegate::getExportedState() {
|
|
96
|
+
return std::make_unique<HermesStateWrapper>(HermesInspectorApi::getCdpState(hermesCdpAgent_.get()));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
} // namespace Microsoft::ReactNative
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// This file must match the code in React Native folder:
|
|
12
|
+
// ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.h
|
|
13
|
+
// Unlike the code in React Native sources, this class delegates calls to Hermes C-based API.
|
|
14
|
+
// We use different namespace for this class comparing with the RN code.
|
|
15
|
+
|
|
16
|
+
#pragma once
|
|
17
|
+
|
|
18
|
+
#include "HermesRuntimeTargetDelegate.h"
|
|
19
|
+
|
|
20
|
+
#include <ReactCommon/RuntimeExecutor.h>
|
|
21
|
+
#include <jsinspector-modern/ReactCdp.h>
|
|
22
|
+
#include "HermesRuntimeHolder.h"
|
|
23
|
+
|
|
24
|
+
namespace Microsoft::ReactNative {
|
|
25
|
+
|
|
26
|
+
// A RuntimeAgentDelegate that handles requests from the Chrome DevTools
|
|
27
|
+
// Protocol for an instance of Hermes, using the modern CDPAgent API.
|
|
28
|
+
class HermesRuntimeAgentDelegate : public facebook::react::jsinspector_modern::RuntimeAgentDelegate {
|
|
29
|
+
public:
|
|
30
|
+
/**
|
|
31
|
+
* \param frontendChannel A channel used to send responses and events to the
|
|
32
|
+
* frontend.
|
|
33
|
+
* \param sessionState The state of the current CDP session. This will only
|
|
34
|
+
* be accessed on the main thread (during the constructor, in handleRequest,
|
|
35
|
+
* etc).
|
|
36
|
+
* \param previouslyExportedState The exported state from a previous instance
|
|
37
|
+
* of RuntimeAgentDelegate (NOT necessarily HermesRuntimeAgentDelegate).
|
|
38
|
+
* This may be nullptr, and if not nullptr it may be of any concrete type that
|
|
39
|
+
* implements RuntimeAgentDelegate::ExportedState.
|
|
40
|
+
* \param executionContextDescription A description of the execution context
|
|
41
|
+
* represented by this runtime. This is used for disambiguating the
|
|
42
|
+
* source/destination of CDP messages when there are multiple runtimes
|
|
43
|
+
* (concurrently or over the life of a Host).
|
|
44
|
+
* \param hermes_runtime The Hermes runtime that this agent is attached to. The caller
|
|
45
|
+
* is responsible for keeping this object alive for the duration of the
|
|
46
|
+
* \c HermesRuntimeAgentDelegate lifetime.
|
|
47
|
+
* \param runtimeTargetDelegate The \c HermesRuntimeTargetDelegate object
|
|
48
|
+
* object for the passed runtime.
|
|
49
|
+
* \param runtimeExecutor A callback for scheduling work on the JS thread.
|
|
50
|
+
* \c runtimeExecutor may drop scheduled work if the runtime is destroyed
|
|
51
|
+
* first.
|
|
52
|
+
*/
|
|
53
|
+
HermesRuntimeAgentDelegate(
|
|
54
|
+
facebook::react::jsinspector_modern::FrontendChannel frontendChannel,
|
|
55
|
+
facebook::react::jsinspector_modern::SessionState &sessionState,
|
|
56
|
+
std::unique_ptr<facebook::react::jsinspector_modern::RuntimeAgentDelegate::ExportedState> previouslyExportedState,
|
|
57
|
+
const facebook::react::jsinspector_modern::ExecutionContextDescription &executionContextDescription,
|
|
58
|
+
hermes_runtime runtime,
|
|
59
|
+
HermesRuntimeTargetDelegate &runtimeTargetDelegate,
|
|
60
|
+
facebook::react::RuntimeExecutor runtimeExecutor);
|
|
61
|
+
|
|
62
|
+
~HermesRuntimeAgentDelegate() override;
|
|
63
|
+
|
|
64
|
+
public: // RuntimeAgentDelegate implementation
|
|
65
|
+
/**
|
|
66
|
+
* Handle a CDP request. The response will be sent over the provided
|
|
67
|
+
* \c FrontendChannel synchronously or asynchronously.
|
|
68
|
+
* \param req The parsed request.
|
|
69
|
+
* \returns true if this agent has responded, or will respond asynchronously,
|
|
70
|
+
* to the request (with either a success or error message). False if the
|
|
71
|
+
* agent expects another agent to respond to the request instead.
|
|
72
|
+
*/
|
|
73
|
+
bool handleRequest(const facebook::react::jsinspector_modern::cdp::PreparsedRequest &req) override;
|
|
74
|
+
|
|
75
|
+
std::unique_ptr<RuntimeAgentDelegate::ExportedState> getExportedState() override;
|
|
76
|
+
|
|
77
|
+
private:
|
|
78
|
+
HermesUniqueCdpAgent hermesCdpAgent_;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
} // namespace Microsoft::ReactNative
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// This file must match the code in React Native folder:
|
|
12
|
+
// ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.cpp
|
|
13
|
+
// Unlike the code in React Native sources, this class delegates calls to Hermes C-based API.
|
|
14
|
+
// We use different namespace for this class comparing with the RN code.
|
|
15
|
+
|
|
16
|
+
#include "HermesRuntimeTargetDelegate.h"
|
|
17
|
+
#include <jsinspector-modern/RuntimeTarget.h>
|
|
18
|
+
#include <utility>
|
|
19
|
+
#include "HermesRuntimeAgentDelegate.h"
|
|
20
|
+
|
|
21
|
+
using namespace facebook::react::jsinspector_modern;
|
|
22
|
+
|
|
23
|
+
namespace Microsoft::ReactNative {
|
|
24
|
+
|
|
25
|
+
namespace {
|
|
26
|
+
|
|
27
|
+
const uint16_t HERMES_SAMPLING_FREQUENCY_HZ = 10000;
|
|
28
|
+
|
|
29
|
+
class HermesStackTraceWrapper : public StackTrace {
|
|
30
|
+
public:
|
|
31
|
+
explicit HermesStackTraceWrapper(HermesUniqueStackTrace &&hermesStackTrace)
|
|
32
|
+
: hermesStackTrace_{std::move(hermesStackTrace)} {}
|
|
33
|
+
|
|
34
|
+
HermesUniqueStackTrace &operator*() {
|
|
35
|
+
return hermesStackTrace_;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
HermesUniqueStackTrace *operator->() {
|
|
39
|
+
return &hermesStackTrace_;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private:
|
|
43
|
+
HermesUniqueStackTrace hermesStackTrace_;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} // namespace
|
|
47
|
+
|
|
48
|
+
HermesRuntimeTargetDelegate::HermesRuntimeTargetDelegate(std::shared_ptr<HermesRuntimeHolder> &&hermesRuntimeHolder)
|
|
49
|
+
: hermesRuntimeHolder_(std::move(hermesRuntimeHolder)),
|
|
50
|
+
hermesCdpDebugApi_(HermesInspectorApi::createCdpDebugApi(hermesRuntimeHolder_->getHermesRuntime())) {}
|
|
51
|
+
|
|
52
|
+
HermesRuntimeTargetDelegate::~HermesRuntimeTargetDelegate() = default;
|
|
53
|
+
|
|
54
|
+
hermes_cdp_debug_api HermesRuntimeTargetDelegate::getCdpDebugApi() {
|
|
55
|
+
return hermesCdpDebugApi_.get();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
std::unique_ptr<RuntimeAgentDelegate> HermesRuntimeTargetDelegate::createAgentDelegate(
|
|
59
|
+
FrontendChannel frontendChannel,
|
|
60
|
+
SessionState &sessionState,
|
|
61
|
+
std::unique_ptr<RuntimeAgentDelegate::ExportedState> previouslyExportedState,
|
|
62
|
+
const ExecutionContextDescription &executionContextDescription,
|
|
63
|
+
facebook::react::RuntimeExecutor runtimeExecutor) {
|
|
64
|
+
return std::unique_ptr<RuntimeAgentDelegate>(new HermesRuntimeAgentDelegate(
|
|
65
|
+
frontendChannel,
|
|
66
|
+
sessionState,
|
|
67
|
+
std::move(previouslyExportedState),
|
|
68
|
+
executionContextDescription,
|
|
69
|
+
hermesRuntimeHolder_->getHermesRuntime(),
|
|
70
|
+
*this,
|
|
71
|
+
std::move(runtimeExecutor)));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
void HermesRuntimeTargetDelegate::addConsoleMessage(facebook::jsi::Runtime &runtime, ConsoleMessage message) {
|
|
75
|
+
// Convert ConsoleAPIType to hermes_console_api_type
|
|
76
|
+
hermes_console_api_type type{};
|
|
77
|
+
switch (message.type) {
|
|
78
|
+
case ConsoleAPIType::kLog:
|
|
79
|
+
type = hermes_console_api_type_log;
|
|
80
|
+
break;
|
|
81
|
+
case ConsoleAPIType::kDebug:
|
|
82
|
+
type = hermes_console_api_type_debug;
|
|
83
|
+
break;
|
|
84
|
+
case ConsoleAPIType::kInfo:
|
|
85
|
+
type = hermes_console_api_type_info;
|
|
86
|
+
break;
|
|
87
|
+
case ConsoleAPIType::kError:
|
|
88
|
+
type = hermes_console_api_type_error;
|
|
89
|
+
break;
|
|
90
|
+
case ConsoleAPIType::kWarning:
|
|
91
|
+
type = hermes_console_api_type_warning;
|
|
92
|
+
break;
|
|
93
|
+
case ConsoleAPIType::kDir:
|
|
94
|
+
type = hermes_console_api_type_dir;
|
|
95
|
+
break;
|
|
96
|
+
case ConsoleAPIType::kDirXML:
|
|
97
|
+
type = hermes_console_api_type_dir_xml;
|
|
98
|
+
break;
|
|
99
|
+
case ConsoleAPIType::kTable:
|
|
100
|
+
type = hermes_console_api_type_table;
|
|
101
|
+
break;
|
|
102
|
+
case ConsoleAPIType::kTrace:
|
|
103
|
+
type = hermes_console_api_type_trace;
|
|
104
|
+
break;
|
|
105
|
+
case ConsoleAPIType::kStartGroup:
|
|
106
|
+
type = hermes_console_api_type_start_group;
|
|
107
|
+
break;
|
|
108
|
+
case ConsoleAPIType::kStartGroupCollapsed:
|
|
109
|
+
type = hermes_console_api_type_start_group_collapsed;
|
|
110
|
+
break;
|
|
111
|
+
case ConsoleAPIType::kEndGroup:
|
|
112
|
+
type = hermes_console_api_type_end_group;
|
|
113
|
+
break;
|
|
114
|
+
case ConsoleAPIType::kClear:
|
|
115
|
+
type = hermes_console_api_type_clear;
|
|
116
|
+
break;
|
|
117
|
+
case ConsoleAPIType::kAssert:
|
|
118
|
+
type = hermes_console_api_type_assert;
|
|
119
|
+
break;
|
|
120
|
+
case ConsoleAPIType::kTimeEnd:
|
|
121
|
+
type = hermes_console_api_type_time_end;
|
|
122
|
+
break;
|
|
123
|
+
case ConsoleAPIType::kCount:
|
|
124
|
+
type = hermes_console_api_type_count;
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
throw std::logic_error{"Unknown console message type"};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Create a jsi::Array from the vector of jsi::Values
|
|
131
|
+
facebook::jsi::Array argsArray(runtime, message.args.size());
|
|
132
|
+
for (size_t i = 0; i < message.args.size(); ++i) {
|
|
133
|
+
argsArray.setValueAtIndex(runtime, i, std::move(message.args[i]));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Store array as a temporary global property
|
|
137
|
+
// Using a property name that's unlikely to collide with user code
|
|
138
|
+
const char *propName = "__rnw_cdp_console_args";
|
|
139
|
+
runtime.global().setProperty(runtime, propName, argsArray);
|
|
140
|
+
|
|
141
|
+
// Convert stack trace to HermesUniqueStackTrace if available
|
|
142
|
+
HermesUniqueStackTrace hermesStackTrace{};
|
|
143
|
+
if (auto hermesStackTraceWrapper = dynamic_cast<HermesStackTraceWrapper *>(message.stackTrace.get())) {
|
|
144
|
+
hermesStackTrace = std::move(**hermesStackTraceWrapper);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Call C API with property name instead of serialized args
|
|
148
|
+
// The property will be cleaned up by the Hermes side
|
|
149
|
+
HermesInspectorApi::addConsoleMessage(
|
|
150
|
+
hermesCdpDebugApi_.get(), message.timestamp, type, propName, hermesStackTrace.get());
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
bool HermesRuntimeTargetDelegate::supportsConsole() const {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
std::unique_ptr<StackTrace> HermesRuntimeTargetDelegate::captureStackTrace(
|
|
158
|
+
facebook::jsi::Runtime & /*runtime*/,
|
|
159
|
+
size_t /*framesToSkip*/) {
|
|
160
|
+
return std::make_unique<HermesStackTraceWrapper>(
|
|
161
|
+
HermesInspectorApi::captureStackTrace(hermesRuntimeHolder_->getHermesRuntime()));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
void HermesRuntimeTargetDelegate::enableSamplingProfiler() {
|
|
165
|
+
HermesInspectorApi::enableSamplingProfiler(hermesRuntimeHolder_->getHermesRuntime());
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
void HermesRuntimeTargetDelegate::disableSamplingProfiler() {
|
|
169
|
+
HermesInspectorApi::disableSamplingProfiler(hermesRuntimeHolder_->getHermesRuntime());
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
namespace {
|
|
173
|
+
|
|
174
|
+
// Helper class to hold state while reading the sampling profile
|
|
175
|
+
struct SamplingProfileReaderState {
|
|
176
|
+
std::vector<tracing::RuntimeSamplingProfile::Sample> samples;
|
|
177
|
+
std::vector<tracing::RuntimeSamplingProfile::SampleCallStackFrame> frames;
|
|
178
|
+
uint64_t timestamp;
|
|
179
|
+
uint64_t threadId;
|
|
180
|
+
bool hasCurrentSample;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
static void NAPI_CDECL onInfo(void *cb_data, size_t sample_count) {
|
|
184
|
+
SamplingProfileReaderState *readerState = reinterpret_cast<SamplingProfileReaderState *>(cb_data);
|
|
185
|
+
readerState->samples.reserve(sample_count);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Callback invoked for each sample
|
|
189
|
+
static void NAPI_CDECL onSample(void *cb_data, uint64_t timestamp, uint64_t threadId, size_t frame_count) {
|
|
190
|
+
SamplingProfileReaderState *readerState = reinterpret_cast<SamplingProfileReaderState *>(cb_data);
|
|
191
|
+
if (readerState->hasCurrentSample) {
|
|
192
|
+
// Save the previous sample
|
|
193
|
+
readerState->samples.emplace_back(readerState->timestamp, readerState->threadId, std::move(readerState->frames));
|
|
194
|
+
}
|
|
195
|
+
std::vector<tracing::RuntimeSamplingProfile::SampleCallStackFrame> frames;
|
|
196
|
+
frames.reserve(frame_count);
|
|
197
|
+
readerState->frames = std::move(frames);
|
|
198
|
+
readerState->timestamp = timestamp;
|
|
199
|
+
readerState->threadId = threadId;
|
|
200
|
+
readerState->hasCurrentSample = true;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Callback invoked for each frame within a sample
|
|
204
|
+
static void NAPI_CDECL onFrame(
|
|
205
|
+
void *cb_data,
|
|
206
|
+
hermes_call_stack_frame_kind kind,
|
|
207
|
+
uint32_t scriptId,
|
|
208
|
+
const char *functionName,
|
|
209
|
+
size_t functionNameSize,
|
|
210
|
+
const char *scriptUrl,
|
|
211
|
+
size_t scriptUrlSize,
|
|
212
|
+
uint32_t lineNumber,
|
|
213
|
+
uint32_t columnNumber) {
|
|
214
|
+
SamplingProfileReaderState *readerState = reinterpret_cast<SamplingProfileReaderState *>(cb_data);
|
|
215
|
+
|
|
216
|
+
using Kind = tracing::RuntimeSamplingProfile::SampleCallStackFrame::Kind;
|
|
217
|
+
|
|
218
|
+
Kind frameKind;
|
|
219
|
+
switch (kind) {
|
|
220
|
+
case hermes_call_stack_frame_kind_js_function:
|
|
221
|
+
frameKind = Kind::JSFunction;
|
|
222
|
+
break;
|
|
223
|
+
case hermes_call_stack_frame_kind_native_function:
|
|
224
|
+
frameKind = Kind::NativeFunction;
|
|
225
|
+
break;
|
|
226
|
+
case hermes_call_stack_frame_kind_host_function:
|
|
227
|
+
frameKind = Kind::HostFunction;
|
|
228
|
+
break;
|
|
229
|
+
case hermes_call_stack_frame_kind_gc:
|
|
230
|
+
frameKind = Kind::GarbageCollector;
|
|
231
|
+
break;
|
|
232
|
+
default:
|
|
233
|
+
return; // Unknown frame kind, skip
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
std::string_view funcName(functionName, functionNameSize);
|
|
237
|
+
std::optional<std::string_view> url =
|
|
238
|
+
scriptUrl ? std::optional{std::string_view(scriptUrl, scriptUrlSize)} : std::nullopt;
|
|
239
|
+
std::optional<uint32_t> line = lineNumber > 0 ? std::optional{lineNumber} : std::nullopt;
|
|
240
|
+
std::optional<uint32_t> column = columnNumber > 0 ? std::optional{columnNumber} : std::nullopt;
|
|
241
|
+
|
|
242
|
+
readerState->frames.emplace_back(frameKind, scriptId, funcName, url, line, column);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
class HermesRawRuntimeProfile : public tracing::RawRuntimeProfile {
|
|
246
|
+
public:
|
|
247
|
+
explicit HermesRawRuntimeProfile(HermesUniqueSamplingProfile hermesProfile)
|
|
248
|
+
: hermesProfile_{std::move(hermesProfile)} {}
|
|
249
|
+
|
|
250
|
+
private:
|
|
251
|
+
HermesUniqueSamplingProfile hermesProfile_;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
} // namespace
|
|
255
|
+
|
|
256
|
+
tracing::RuntimeSamplingProfile HermesRuntimeTargetDelegate::collectSamplingProfile() {
|
|
257
|
+
// Create a readerState state to gather samples and frames
|
|
258
|
+
SamplingProfileReaderState readerState{};
|
|
259
|
+
|
|
260
|
+
// Collect the profile from Hermes
|
|
261
|
+
HermesUniqueSamplingProfile profile = HermesInspectorApi::collectSamplingProfile(
|
|
262
|
+
hermesRuntimeHolder_->getHermesRuntime(), &readerState, onInfo, onSample, onFrame);
|
|
263
|
+
|
|
264
|
+
if (readerState.hasCurrentSample) {
|
|
265
|
+
// Save the last sample
|
|
266
|
+
readerState.samples.emplace_back(readerState.timestamp, readerState.threadId, std::move(readerState.frames));
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Return the complete profile with samples. Wrap the raw profile since it owns the strings.
|
|
270
|
+
return tracing::RuntimeSamplingProfile(
|
|
271
|
+
"Hermes", std::move(readerState.samples), std::make_unique<HermesRawRuntimeProfile>(std::move(profile)));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
} // namespace Microsoft::ReactNative
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// This file must match the code in React Native folder:
|
|
12
|
+
// ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.h
|
|
13
|
+
// Unlike the code in React Native sources, this class delegates calls to Hermes C-based API.
|
|
14
|
+
// We use different namespace for this class comparing with the RN code.
|
|
15
|
+
|
|
16
|
+
#pragma once
|
|
17
|
+
|
|
18
|
+
#include <ReactCommon/RuntimeExecutor.h>
|
|
19
|
+
|
|
20
|
+
#include <cxxreact/MessageQueueThread.h>
|
|
21
|
+
#include <jsinspector-modern/ReactCdp.h>
|
|
22
|
+
|
|
23
|
+
#include <memory>
|
|
24
|
+
#include "HermesRuntimeHolder.h"
|
|
25
|
+
|
|
26
|
+
namespace Microsoft::ReactNative {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A RuntimeTargetDelegate that enables debugging a Hermes runtime over CDP.
|
|
30
|
+
*/
|
|
31
|
+
class HermesRuntimeTargetDelegate : public facebook::react::jsinspector_modern::RuntimeTargetDelegate {
|
|
32
|
+
public:
|
|
33
|
+
explicit HermesRuntimeTargetDelegate(std::shared_ptr<HermesRuntimeHolder> &&hermesRuntimeHolder);
|
|
34
|
+
|
|
35
|
+
~HermesRuntimeTargetDelegate() override;
|
|
36
|
+
|
|
37
|
+
// Our C-API specific helper method to be used internally instead of RN getCDPDebugAPI() private function.
|
|
38
|
+
hermes_cdp_debug_api getCdpDebugApi();
|
|
39
|
+
|
|
40
|
+
public: // RuntimeTargetDelegate implementation
|
|
41
|
+
std::unique_ptr<facebook::react::jsinspector_modern::RuntimeAgentDelegate> createAgentDelegate(
|
|
42
|
+
facebook::react::jsinspector_modern::FrontendChannel frontendChannel,
|
|
43
|
+
facebook::react::jsinspector_modern::SessionState &sessionState,
|
|
44
|
+
std::unique_ptr<facebook::react::jsinspector_modern::RuntimeAgentDelegate::ExportedState> previouslyExportedState,
|
|
45
|
+
const facebook::react::jsinspector_modern::ExecutionContextDescription &executionContextDescription,
|
|
46
|
+
facebook::react::RuntimeExecutor runtimeExecutor) override;
|
|
47
|
+
|
|
48
|
+
void addConsoleMessage(facebook::jsi::Runtime &runtime, facebook::react::jsinspector_modern::ConsoleMessage message)
|
|
49
|
+
override;
|
|
50
|
+
|
|
51
|
+
bool supportsConsole() const override;
|
|
52
|
+
|
|
53
|
+
std::unique_ptr<facebook::react::jsinspector_modern::StackTrace> captureStackTrace(
|
|
54
|
+
facebook::jsi::Runtime &runtime,
|
|
55
|
+
size_t framesToSkip) override;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Start sampling profiler.
|
|
59
|
+
*/
|
|
60
|
+
void enableSamplingProfiler() override;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Stop sampling profiler.
|
|
64
|
+
*/
|
|
65
|
+
void disableSamplingProfiler() override;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Return recorded sampling profile for the previous sampling session.
|
|
69
|
+
*/
|
|
70
|
+
facebook::react::jsinspector_modern::tracing::RuntimeSamplingProfile collectSamplingProfile() override;
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
std::shared_ptr<HermesRuntimeHolder> hermesRuntimeHolder_;
|
|
74
|
+
const HermesUniqueCdpDebugApi hermesCdpDebugApi_;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
} // namespace Microsoft::ReactNative
|