react-native-windows 0.80.0 → 0.81.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.
- 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/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/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/ReactNativeIsland.cpp +68 -1
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +9 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +5 -37
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +3 -3
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +6 -6
- 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/graphics/PlatformColorUtils.cpp +0 -17
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.h +0 -3
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +41 -37
- 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 +166 -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 +3 -3
- 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/templates/cpp-lib/example/metro.config.js +1 -1
- 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
|
@@ -33,6 +33,10 @@
|
|
|
33
33
|
#include <Fabric/Composition/UriImageManager.h>
|
|
34
34
|
#endif
|
|
35
35
|
|
|
36
|
+
namespace facebook::react::jsinspector_modern {
|
|
37
|
+
class HostTarget;
|
|
38
|
+
} // namespace facebook::react::jsinspector_modern
|
|
39
|
+
|
|
36
40
|
namespace Mso::React {
|
|
37
41
|
|
|
38
42
|
// Forward declarations
|
|
@@ -216,9 +220,9 @@ struct ReactOptions {
|
|
|
216
220
|
//! Base path of the SDX. The absolute path of the SDX can be constructed from this and the Identity.
|
|
217
221
|
std::string BundleRootPath;
|
|
218
222
|
|
|
219
|
-
//!
|
|
220
|
-
//! This List includes both Platform and User
|
|
221
|
-
//! Bundles are loaded into
|
|
223
|
+
//! JavaScript Bundles
|
|
224
|
+
//! This List includes both Platform and User JavaScript Bundles
|
|
225
|
+
//! Bundles are loaded into JavaScript engine in the same order
|
|
222
226
|
//! as they are specified in this list.
|
|
223
227
|
std::vector<Mso::CntPtr<IJSBundle>> JSBundles;
|
|
224
228
|
|
|
@@ -237,7 +241,7 @@ struct ReactOptions {
|
|
|
237
241
|
//! during development to report JavaScript errors to users
|
|
238
242
|
std::shared_ptr<Mso::React::IRedBoxHandler> RedBoxHandler;
|
|
239
243
|
|
|
240
|
-
//! Flag to suggest sdx owner's preference on enabling Bytecode caching in
|
|
244
|
+
//! Flag to suggest sdx owner's preference on enabling Bytecode caching in JavaScript Engine for corresponding SDX.
|
|
241
245
|
bool EnableBytecode{true};
|
|
242
246
|
|
|
243
247
|
//! Flag controlling whether the JavaScript engine uses JIT compilation.
|
|
@@ -347,6 +351,9 @@ struct ReactOptions {
|
|
|
347
351
|
//! The callback is called when IReactInstance is destroyed and must not be used anymore.
|
|
348
352
|
//! It is called from the native queue.
|
|
349
353
|
OnReactInstanceDestroyedCallback OnInstanceDestroyed;
|
|
354
|
+
|
|
355
|
+
//! The HostTarget instance for modern inspector integration.
|
|
356
|
+
facebook::react::jsinspector_modern::HostTarget *InspectorHostTarget;
|
|
350
357
|
};
|
|
351
358
|
|
|
352
359
|
//! IReactHost manages a ReactNative instance.
|
|
@@ -8,9 +8,16 @@
|
|
|
8
8
|
|
|
9
9
|
#include <CppRuntimeOptions.h>
|
|
10
10
|
|
|
11
|
+
#include <jsinspector-modern/HostCommand.h>
|
|
12
|
+
#include <jsinspector-modern/InspectorFlags.h>
|
|
11
13
|
#include <react/featureflags/ReactNativeFeatureFlags.h>
|
|
12
14
|
#include <react/featureflags/ReactNativeFeatureFlagsDefaults.h>
|
|
13
15
|
|
|
16
|
+
#include "Inspector/ReactInspectorThread.h"
|
|
17
|
+
#include "ReactHost/DebuggerNotifications.h"
|
|
18
|
+
|
|
19
|
+
using namespace facebook::react;
|
|
20
|
+
|
|
14
21
|
namespace Mso::React {
|
|
15
22
|
|
|
16
23
|
//=============================================================================================
|
|
@@ -282,6 +289,10 @@ bool ReactOptions::EnableDefaultCrashHandler() const noexcept {
|
|
|
282
289
|
return winrt::unbox_value_or<bool>(properties.Get(EnableDefaultCrashHandlerProperty()), false);
|
|
283
290
|
}
|
|
284
291
|
|
|
292
|
+
//=============================================================================================
|
|
293
|
+
// ReactNativeWindowsFeatureFlags implementation
|
|
294
|
+
//=============================================================================================
|
|
295
|
+
|
|
285
296
|
class ReactNativeWindowsFeatureFlags : public facebook::react::ReactNativeFeatureFlagsDefaults {
|
|
286
297
|
public:
|
|
287
298
|
bool enableBridgelessArchitecture() override {
|
|
@@ -295,9 +306,59 @@ class ReactNativeWindowsFeatureFlags : public facebook::react::ReactNativeFeatur
|
|
|
295
306
|
bool enableCppPropsIteratorSetter() override {
|
|
296
307
|
return true;
|
|
297
308
|
}
|
|
309
|
+
|
|
310
|
+
bool fuseboxEnabledRelease() override {
|
|
311
|
+
return true; // Enable Fusebox (modern CDP backend) by default for React Native Windows
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
bool fuseboxNetworkInspectionEnabled() override {
|
|
315
|
+
return true; // Enable network inspection support in Fusebox
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
//=============================================================================================
|
|
320
|
+
// ReactInspectorHostTargetDelegate implementation
|
|
321
|
+
//=============================================================================================
|
|
322
|
+
|
|
323
|
+
class ReactInspectorHostTargetDelegate : public jsinspector_modern::HostTargetDelegate,
|
|
324
|
+
public std::enable_shared_from_this<ReactInspectorHostTargetDelegate> {
|
|
325
|
+
public:
|
|
326
|
+
ReactInspectorHostTargetDelegate(Mso::WeakPtr<ReactHost> &&reactHost) noexcept : m_reactHost(std::move(reactHost)) {}
|
|
327
|
+
|
|
328
|
+
jsinspector_modern::HostTargetMetadata getMetadata() override {
|
|
329
|
+
// TODO: (vmoroz) provide more info
|
|
330
|
+
return {
|
|
331
|
+
.integrationName = "React Native Windows (Host)",
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
void onReload(jsinspector_modern::HostTargetDelegate::PageReloadRequest const &request) override {
|
|
336
|
+
if (Mso::CntPtr<ReactHost> reactHost = m_reactHost.GetStrongPtr()) {
|
|
337
|
+
reactHost->ReloadInstance();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
void onSetPausedInDebuggerMessage(
|
|
342
|
+
jsinspector_modern::HostTargetDelegate::OverlaySetPausedInDebuggerMessageRequest const &request) override {
|
|
343
|
+
if (Mso::CntPtr<ReactHost> reactHost = m_reactHost.GetStrongPtr()) {
|
|
344
|
+
auto notifications = reactHost->Options().Notifications;
|
|
345
|
+
if (request.message.has_value()) {
|
|
346
|
+
::Microsoft::ReactNative::DebuggerNotifications::OnShowDebuggerPausedOverlay(
|
|
347
|
+
notifications, request.message.value(), [weakReactHost = m_reactHost]() {
|
|
348
|
+
if (Mso::CntPtr<ReactHost> strongReactHost = weakReactHost.GetStrongPtr()) {
|
|
349
|
+
strongReactHost->OnDebuggerResume();
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
} else {
|
|
353
|
+
::Microsoft::ReactNative::DebuggerNotifications::OnHideDebuggerPausedOverlay(notifications);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
private:
|
|
359
|
+
Mso::WeakPtr<ReactHost> m_reactHost;
|
|
298
360
|
};
|
|
299
361
|
|
|
300
|
-
std::once_flag g_FlagInitFeatureFlags;
|
|
301
362
|
//=============================================================================================
|
|
302
363
|
// ReactHost implementation
|
|
303
364
|
//=============================================================================================
|
|
@@ -305,9 +366,16 @@ std::once_flag g_FlagInitFeatureFlags;
|
|
|
305
366
|
ReactHost::ReactHost(Mso::DispatchQueue const &queue) noexcept
|
|
306
367
|
: Super{EnsureSerialQueue(queue)},
|
|
307
368
|
m_options{Queue(), m_mutex},
|
|
308
|
-
m_notifyWhenClosed{ReactHostRegistry::Register(*this), Queue(), m_mutex}
|
|
309
|
-
|
|
310
|
-
|
|
369
|
+
m_notifyWhenClosed{ReactHostRegistry::Register(*this), Queue(), m_mutex},
|
|
370
|
+
m_inspectorHostTargetDelegate{std::make_shared<ReactInspectorHostTargetDelegate>(this)},
|
|
371
|
+
m_inspectorHostTarget{
|
|
372
|
+
jsinspector_modern::HostTarget::create(*m_inspectorHostTargetDelegate, [](std::function<void()> &&callback) {
|
|
373
|
+
::Microsoft::ReactNative::ReactInspectorThread::Instance().Post(
|
|
374
|
+
[callback = std::move(callback)]() { callback(); });
|
|
375
|
+
})} {
|
|
376
|
+
static std::once_flag initFeatureFlagsOnce;
|
|
377
|
+
std::call_once(initFeatureFlagsOnce, []() noexcept {
|
|
378
|
+
ReactNativeFeatureFlags::override(std::make_unique<ReactNativeWindowsFeatureFlags>());
|
|
311
379
|
});
|
|
312
380
|
}
|
|
313
381
|
|
|
@@ -319,15 +387,16 @@ void ReactHost::Finalize() noexcept {
|
|
|
319
387
|
// Since each AsyncAction has a strong ref count to ReactHost, the AsyncActionQueue must be empty.
|
|
320
388
|
// Thus, we only need to call UnloadInQueue to unload ReactInstance if the ReactHost is not closed yet.
|
|
321
389
|
if (Mso::Promise<void> notifyWhenClosed = m_notifyWhenClosed.Exchange(nullptr)) {
|
|
322
|
-
UnloadInQueue(0)
|
|
323
|
-
|
|
390
|
+
UnloadInQueue(UnloadReason::CloseHost, 0)
|
|
391
|
+
.Then<Mso::Executors::Inline>(
|
|
392
|
+
[notifyWhenClosed = std::move(notifyWhenClosed)]() noexcept { notifyWhenClosed.TrySetValue(); });
|
|
324
393
|
}
|
|
325
394
|
}
|
|
326
395
|
|
|
327
396
|
void ReactHost::Close() noexcept {
|
|
328
397
|
InvokeInQueue([this]() noexcept {
|
|
329
398
|
// Put the ReactHost to the closed state, unload ReactInstance, and notify the closing Promise.
|
|
330
|
-
auto whenClosed = m_actionQueue.Load()->PostAction(MakeUnloadInstanceAction());
|
|
399
|
+
auto whenClosed = m_actionQueue.Load()->PostAction(MakeUnloadInstanceAction(UnloadReason::CloseHost));
|
|
331
400
|
|
|
332
401
|
// After we set the m_notifyWhenClosed to null, the ReactHost is considered to be closed.
|
|
333
402
|
Mso::SetPromiseValue(m_notifyWhenClosed.Exchange(nullptr), std::move(whenClosed));
|
|
@@ -379,12 +448,14 @@ Mso::Future<void> ReactHost::ReloadInstance() noexcept {
|
|
|
379
448
|
|
|
380
449
|
Mso::Future<void> ReactHost::ReloadInstanceWithOptions(ReactOptions &&options) noexcept {
|
|
381
450
|
return PostInQueue([this, options = std::move(options)]() mutable noexcept {
|
|
382
|
-
return m_actionQueue.Load()->PostActions(
|
|
451
|
+
return m_actionQueue.Load()->PostActions(
|
|
452
|
+
{MakeUnloadInstanceAction(UnloadReason::Unload), MakeLoadInstanceAction(std::move(options))});
|
|
383
453
|
});
|
|
384
454
|
}
|
|
385
455
|
|
|
386
456
|
Mso::Future<void> ReactHost::UnloadInstance() noexcept {
|
|
387
|
-
return PostInQueue(
|
|
457
|
+
return PostInQueue(
|
|
458
|
+
[this]() noexcept { return m_actionQueue.Load()->PostAction(MakeUnloadInstanceAction(UnloadReason::Unload)); });
|
|
388
459
|
}
|
|
389
460
|
|
|
390
461
|
AsyncAction ReactHost::MakeLoadInstanceAction(ReactOptions &&options) noexcept {
|
|
@@ -393,11 +464,13 @@ AsyncAction ReactHost::MakeLoadInstanceAction(ReactOptions &&options) noexcept {
|
|
|
393
464
|
};
|
|
394
465
|
}
|
|
395
466
|
|
|
396
|
-
AsyncAction ReactHost::MakeUnloadInstanceAction() noexcept {
|
|
467
|
+
AsyncAction ReactHost::MakeUnloadInstanceAction(UnloadReason reason) noexcept {
|
|
397
468
|
Mso::Internal::VerifyIsInQueueElseCrash(Queue());
|
|
398
469
|
size_t unloadActionId = ++m_nextUnloadActionId;
|
|
399
470
|
m_pendingUnloadActionId = unloadActionId;
|
|
400
|
-
return [spThis = Mso::CntPtr{this}, unloadActionId]() noexcept {
|
|
471
|
+
return [spThis = Mso::CntPtr{this}, reason, unloadActionId]() noexcept {
|
|
472
|
+
return spThis->UnloadInQueue(reason, unloadActionId);
|
|
473
|
+
};
|
|
401
474
|
}
|
|
402
475
|
|
|
403
476
|
Mso::CntPtr<IReactViewHost> ReactHost::MakeViewHost(ReactViewOptions &&options) noexcept {
|
|
@@ -428,6 +501,18 @@ Mso::Future<void> ReactHost::LoadInQueue(ReactOptions &&options) noexcept {
|
|
|
428
501
|
return Mso::MakeCanceledFuture();
|
|
429
502
|
}
|
|
430
503
|
|
|
504
|
+
// Start or stop inspector page if needed.
|
|
505
|
+
// Make sure to update the both copies of options.
|
|
506
|
+
if (IsInspectable()) {
|
|
507
|
+
AddInspectorPage();
|
|
508
|
+
options.InspectorHostTarget = m_inspectorHostTarget.get();
|
|
509
|
+
m_options.Load().InspectorHostTarget = m_inspectorHostTarget.get();
|
|
510
|
+
} else {
|
|
511
|
+
RemoveInspectorPage();
|
|
512
|
+
options.InspectorHostTarget = nullptr;
|
|
513
|
+
m_options.Load().InspectorHostTarget = nullptr;
|
|
514
|
+
}
|
|
515
|
+
|
|
431
516
|
Mso::Promise<void> whenCreated;
|
|
432
517
|
Mso::Promise<void> whenLoaded;
|
|
433
518
|
|
|
@@ -463,7 +548,7 @@ Mso::Future<void> ReactHost::LoadInQueue(ReactOptions &&options) noexcept {
|
|
|
463
548
|
});
|
|
464
549
|
}
|
|
465
550
|
|
|
466
|
-
Mso::Future<void> ReactHost::UnloadInQueue(size_t unloadActionId) noexcept {
|
|
551
|
+
Mso::Future<void> ReactHost::UnloadInQueue(UnloadReason reason, size_t unloadActionId) noexcept {
|
|
467
552
|
Mso::Internal::VerifyIsInQueueElseCrash(Queue());
|
|
468
553
|
|
|
469
554
|
// If the pending unload action Id does not match, then we have newer unload action,
|
|
@@ -485,21 +570,25 @@ Mso::Future<void> ReactHost::UnloadInQueue(size_t unloadActionId) noexcept {
|
|
|
485
570
|
|
|
486
571
|
// We unload ReactInstance after all view instances are unloaded.
|
|
487
572
|
// It is safe to capture 'this' because the Unload action keeps a strong reference to ReactHost.
|
|
488
|
-
return Mso::WhenAllCompleted(unloadCompletionList)
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
573
|
+
return Mso::WhenAllCompleted(unloadCompletionList)
|
|
574
|
+
.Then(m_executor, [this, reason](Mso::Maybe<void> && /*value*/) noexcept {
|
|
575
|
+
Mso::Future<void> onUnloaded;
|
|
576
|
+
if (auto reactInstance = m_reactInstance.Exchange(nullptr)) {
|
|
577
|
+
onUnloaded = reactInstance->Destroy();
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
m_isInstanceUnloading.Store(false);
|
|
581
|
+
m_lastError.Store({});
|
|
582
|
+
|
|
583
|
+
if (!onUnloaded) {
|
|
584
|
+
onUnloaded = Mso::MakeSucceededFuture();
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
if (reason == UnloadReason::CloseHost) {
|
|
588
|
+
RemoveInspectorPage();
|
|
589
|
+
}
|
|
590
|
+
return onUnloaded;
|
|
591
|
+
});
|
|
503
592
|
}
|
|
504
593
|
|
|
505
594
|
void ReactHost::ForEachViewHost(const Mso::FunctorRef<void(ReactViewHost &)> &action) noexcept {
|
|
@@ -528,6 +617,54 @@ void ReactHost::DetachViewHost(ReactViewHost &viewHost) noexcept {
|
|
|
528
617
|
viewHosts.erase(it);
|
|
529
618
|
}
|
|
530
619
|
|
|
620
|
+
bool ReactHost::IsInspectable() noexcept {
|
|
621
|
+
ReactOptions &options = m_options.Load();
|
|
622
|
+
return options.JsiEngine() == JSIEngine::Hermes && options.UseDirectDebugger();
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
void ReactHost::AddInspectorPage() noexcept {
|
|
626
|
+
std::optional<int32_t> &inspectorPageId = m_inspectorPageId.Load();
|
|
627
|
+
if (inspectorPageId.has_value())
|
|
628
|
+
return;
|
|
629
|
+
|
|
630
|
+
jsinspector_modern::InspectorTargetCapabilities capabilities;
|
|
631
|
+
capabilities.nativePageReloads = true;
|
|
632
|
+
capabilities.prefersFuseboxFrontend = true;
|
|
633
|
+
// TODO: (vmoroz) improve the page name
|
|
634
|
+
inspectorPageId = jsinspector_modern::getInspectorInstance().addPage(
|
|
635
|
+
"React Native Windows (Experimental)",
|
|
636
|
+
"Hermes",
|
|
637
|
+
[weakInspectorHostTarget =
|
|
638
|
+
std::weak_ptr(m_inspectorHostTarget)](std::unique_ptr<jsinspector_modern::IRemoteConnection> remote)
|
|
639
|
+
-> std::unique_ptr<jsinspector_modern::ILocalConnection> {
|
|
640
|
+
if (std::shared_ptr<jsinspector_modern::HostTarget> inspectorHostTarget = weakInspectorHostTarget.lock()) {
|
|
641
|
+
return inspectorHostTarget->connect(std::move(remote));
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// This can happen if we're about to shut down. Reject the connection.
|
|
645
|
+
return nullptr;
|
|
646
|
+
},
|
|
647
|
+
capabilities);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
void ReactHost::RemoveInspectorPage() noexcept {
|
|
651
|
+
std::optional<int32_t> &inspectorPageId = m_inspectorPageId.Load();
|
|
652
|
+
if (!inspectorPageId.has_value())
|
|
653
|
+
return;
|
|
654
|
+
|
|
655
|
+
jsinspector_modern::getInspectorInstance().removePage(*inspectorPageId);
|
|
656
|
+
inspectorPageId.reset();
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
void ReactHost::OnDebuggerResume() noexcept {
|
|
660
|
+
::Microsoft::ReactNative::ReactInspectorThread::Instance().Post(
|
|
661
|
+
[weakInspectorHostTarget = std::weak_ptr(m_inspectorHostTarget)]() {
|
|
662
|
+
if (std::shared_ptr<jsinspector_modern::HostTarget> inspectorHostTarget = weakInspectorHostTarget.lock()) {
|
|
663
|
+
inspectorHostTarget->sendCommand(jsinspector_modern::HostCommand::DebuggerResume);
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
|
|
531
668
|
//=============================================================================================
|
|
532
669
|
// ReactViewHost implementation
|
|
533
670
|
//=============================================================================================
|
|
@@ -579,8 +716,8 @@ Mso::Future<void> ReactViewHost::AttachViewInstance(IReactViewInstance &viewInst
|
|
|
579
716
|
m_reactHost->AttachViewHost(*this);
|
|
580
717
|
|
|
581
718
|
return InitViewInstanceInQueue();
|
|
582
|
-
|
|
583
|
-
|
|
719
|
+
// Schedule the viewInstance load in the action queue since there can be other load actions in the queue that need
|
|
720
|
+
// to be consolidated.
|
|
584
721
|
// return m_actionQueue.Load()->PostAction(MakeInitViewInstanceAction());
|
|
585
722
|
});
|
|
586
723
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
|
+
#include <jsinspector-modern/HostTarget.h>
|
|
6
7
|
#include <mutex>
|
|
7
8
|
#include <unordered_map>
|
|
8
9
|
#include "AsyncActionQueue.h"
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
|
|
16
17
|
namespace Mso::React {
|
|
17
18
|
|
|
19
|
+
class ReactInspectorHostTargetDelegate;
|
|
18
20
|
class ReactViewHost;
|
|
19
21
|
|
|
20
22
|
//! ReactHost manages lifetime of ReactNative instance.
|
|
@@ -52,9 +54,6 @@ class ReactHost final : public Mso::ActiveObject<IReactHost> {
|
|
|
52
54
|
|
|
53
55
|
Mso::CntPtr<AsyncActionQueue> ActionQueue() const noexcept;
|
|
54
56
|
|
|
55
|
-
Mso::Future<void> LoadInQueue(ReactOptions &&options) noexcept;
|
|
56
|
-
Mso::Future<void> UnloadInQueue(size_t unloadActionId) noexcept;
|
|
57
|
-
|
|
58
57
|
void Close() noexcept;
|
|
59
58
|
bool IsClosed() const noexcept;
|
|
60
59
|
|
|
@@ -64,6 +63,12 @@ class ReactHost final : public Mso::ActiveObject<IReactHost> {
|
|
|
64
63
|
template <class TCallback>
|
|
65
64
|
Mso::Future<void> PostInQueue(TCallback &&callback) noexcept;
|
|
66
65
|
|
|
66
|
+
private:
|
|
67
|
+
enum class UnloadReason {
|
|
68
|
+
Unload,
|
|
69
|
+
CloseHost,
|
|
70
|
+
};
|
|
71
|
+
|
|
67
72
|
private:
|
|
68
73
|
friend MakePolicy;
|
|
69
74
|
ReactHost(Mso::DispatchQueue const &queue) noexcept;
|
|
@@ -75,9 +80,18 @@ class ReactHost final : public Mso::ActiveObject<IReactHost> {
|
|
|
75
80
|
void ForEachViewHost(const Mso::FunctorRef<void(ReactViewHost &)> &action) noexcept;
|
|
76
81
|
|
|
77
82
|
AsyncAction MakeLoadInstanceAction(ReactOptions &&options) noexcept;
|
|
78
|
-
AsyncAction MakeUnloadInstanceAction() noexcept;
|
|
83
|
+
AsyncAction MakeUnloadInstanceAction(UnloadReason reason) noexcept;
|
|
84
|
+
|
|
85
|
+
Mso::Future<void> LoadInQueue(ReactOptions &&options) noexcept;
|
|
86
|
+
Mso::Future<void> UnloadInQueue(UnloadReason reason, size_t unloadActionId) noexcept;
|
|
87
|
+
|
|
88
|
+
void OnDebuggerResume() noexcept;
|
|
89
|
+
bool IsInspectable() noexcept;
|
|
90
|
+
void AddInspectorPage() noexcept;
|
|
91
|
+
void RemoveInspectorPage() noexcept;
|
|
79
92
|
|
|
80
93
|
private:
|
|
94
|
+
friend class ReactInspectorHostTargetDelegate;
|
|
81
95
|
mutable std::mutex m_mutex;
|
|
82
96
|
const Mso::InvokeElsePostExecutor m_executor{Queue()};
|
|
83
97
|
const Mso::ActiveReadableField<Mso::CntPtr<AsyncActionQueue>> m_actionQueue{
|
|
@@ -92,6 +106,10 @@ class ReactHost final : public Mso::ActiveObject<IReactHost> {
|
|
|
92
106
|
size_t m_pendingUnloadActionId{0};
|
|
93
107
|
size_t m_nextUnloadActionId{0};
|
|
94
108
|
const Mso::ActiveField<bool> m_isInstanceUnloading{false, Queue()};
|
|
109
|
+
|
|
110
|
+
const std::shared_ptr<facebook::react::jsinspector_modern::HostTargetDelegate> m_inspectorHostTargetDelegate;
|
|
111
|
+
const std::shared_ptr<facebook::react::jsinspector_modern::HostTarget> m_inspectorHostTarget;
|
|
112
|
+
const Mso::ActiveField<std::optional<int32_t>> m_inspectorPageId{Queue()};
|
|
95
113
|
};
|
|
96
114
|
|
|
97
115
|
//! Implements a cross-platform host for a React view
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
#include <react/runtime/PlatformTimerRegistry.h>
|
|
67
67
|
#include <react/runtime/TimerManager.h>
|
|
68
68
|
#include <react/threading/MessageQueueThreadImpl.h>
|
|
69
|
+
#include "Inspector/ReactInspectorThread.h"
|
|
69
70
|
#endif
|
|
70
71
|
|
|
71
72
|
#if !defined(CORE_ABI) && !defined(USE_FABRIC)
|
|
@@ -391,7 +392,7 @@ void ReactInstanceWin::LoadModules(
|
|
|
391
392
|
L"NativeAnimatedModule",
|
|
392
393
|
winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::NativeAnimatedModule>());
|
|
393
394
|
|
|
394
|
-
#
|
|
395
|
+
#else
|
|
395
396
|
if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) {
|
|
396
397
|
registerTurboModule(
|
|
397
398
|
L"ImageLoader",
|
|
@@ -410,43 +411,41 @@ void ReactInstanceWin::LoadModules(
|
|
|
410
411
|
false);
|
|
411
412
|
}
|
|
412
413
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ExceptionsManager>());
|
|
414
|
+
::Microsoft::ReactNative::ExceptionsManager::SetRedBoxHander(
|
|
415
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), m_redboxHandler);
|
|
416
|
+
registerTurboModule(
|
|
417
|
+
L"ExceptionsManager",
|
|
418
|
+
winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ExceptionsManager>());
|
|
419
419
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
420
|
+
registerTurboModule(
|
|
421
|
+
L"StatusBarManager",
|
|
422
|
+
winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::StatusBarManager>());
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
424
|
+
registerTurboModule(
|
|
425
|
+
L"PlatformConstants",
|
|
426
|
+
winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::PlatformConstants>());
|
|
427
|
+
uint32_t hermesBytecodeVersion = 0;
|
|
428
428
|
#if defined(USE_HERMES) && defined(ENABLE_DEVSERVER_HBCBUNDLES)
|
|
429
|
-
|
|
429
|
+
hermesBytecodeVersion = ::hermes::hbc::BYTECODE_VERSION;
|
|
430
430
|
#endif
|
|
431
431
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
432
|
+
std::string bundleUrl = (devSettings->useWebDebugger || devSettings->liveReloadCallback)
|
|
433
|
+
? facebook::react::DevServerHelper::get_BundleUrl(
|
|
434
|
+
devSettings->sourceBundleHost,
|
|
435
|
+
devSettings->sourceBundlePort,
|
|
436
|
+
devSettings->debugBundlePath,
|
|
437
|
+
devSettings->platformName,
|
|
438
|
+
devSettings->bundleAppId,
|
|
439
|
+
devSettings->devBundle,
|
|
440
|
+
devSettings->useFastRefresh,
|
|
441
|
+
devSettings->inlineSourceMap,
|
|
442
|
+
hermesBytecodeVersion)
|
|
443
|
+
: devSettings->bundleRootPath;
|
|
444
|
+
::Microsoft::ReactNative::SourceCode::SetScriptUrl(
|
|
445
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), bundleUrl);
|
|
446
446
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
}
|
|
447
|
+
registerTurboModule(
|
|
448
|
+
L"SourceCode", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::SourceCode>());
|
|
450
449
|
|
|
451
450
|
registerTurboModule(
|
|
452
451
|
L"DevSettings", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::DevSettings>());
|
|
@@ -462,13 +461,10 @@ void ReactInstanceWin::LoadModules(
|
|
|
462
461
|
registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>());
|
|
463
462
|
#else
|
|
464
463
|
|
|
465
|
-
#if defined(USE_FABRIC)
|
|
466
464
|
if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) {
|
|
467
465
|
registerTurboModule(
|
|
468
466
|
L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>());
|
|
469
|
-
} else
|
|
470
|
-
#endif
|
|
471
|
-
{
|
|
467
|
+
} else {
|
|
472
468
|
registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::facebook::react::Timing>());
|
|
473
469
|
}
|
|
474
470
|
#endif
|
|
@@ -476,14 +472,12 @@ void ReactInstanceWin::LoadModules(
|
|
|
476
472
|
registerTurboModule(
|
|
477
473
|
::Microsoft::React::GetWebSocketTurboModuleName(), ::Microsoft::React::GetWebSocketModuleProvider());
|
|
478
474
|
|
|
479
|
-
|
|
480
|
-
registerTurboModule(::Microsoft::React::GetHttpTurboModuleName(), ::Microsoft::React::GetHttpModuleProvider());
|
|
475
|
+
registerTurboModule(::Microsoft::React::GetHttpTurboModuleName(), ::Microsoft::React::GetHttpModuleProvider());
|
|
481
476
|
|
|
482
|
-
|
|
477
|
+
registerTurboModule(::Microsoft::React::GetBlobTurboModuleName(), ::Microsoft::React::GetBlobModuleProvider());
|
|
483
478
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
}
|
|
479
|
+
registerTurboModule(
|
|
480
|
+
::Microsoft::React::GetFileReaderTurboModuleName(), ::Microsoft::React::GetFileReaderModuleProvider());
|
|
487
481
|
}
|
|
488
482
|
|
|
489
483
|
//! Initialize() is called from the native queue.
|
|
@@ -553,6 +547,8 @@ std::shared_ptr<facebook::react::DevSettings> ReactInstanceWin::CreateDevSetting
|
|
|
553
547
|
|
|
554
548
|
devSettings->useRuntimeScheduler = useRuntimeScheduler;
|
|
555
549
|
|
|
550
|
+
devSettings->inspectorHostTarget = m_options.InspectorHostTarget;
|
|
551
|
+
|
|
556
552
|
return devSettings;
|
|
557
553
|
}
|
|
558
554
|
|
|
@@ -634,7 +630,6 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
|
|
|
634
630
|
strongThis->Queue().Post([this, weakThis]() noexcept {
|
|
635
631
|
if (auto strongThis = weakThis.GetStrongPtr()) {
|
|
636
632
|
auto devSettings = strongThis->CreateDevSettings();
|
|
637
|
-
devSettings->useTurboModulesOnly = true;
|
|
638
633
|
|
|
639
634
|
try {
|
|
640
635
|
if (devSettings->useFastRefresh || devSettings->liveReloadCallback) {
|
|
@@ -664,16 +659,21 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
|
|
|
664
659
|
};
|
|
665
660
|
|
|
666
661
|
if (devSettings->useDirectDebugger) {
|
|
667
|
-
::Microsoft::ReactNative::GetSharedDevManager()->
|
|
668
|
-
devSettings->sourceBundleHost, devSettings->sourceBundlePort);
|
|
662
|
+
::Microsoft::ReactNative::GetSharedDevManager()->EnsureInspectorPackagerConnection(
|
|
663
|
+
devSettings->sourceBundleHost, devSettings->sourceBundlePort, devSettings->bundleAppId);
|
|
669
664
|
}
|
|
670
665
|
|
|
671
666
|
m_jsiRuntimeHolder = std::make_shared<Microsoft::ReactNative::HermesRuntimeHolder>(
|
|
672
667
|
devSettings, jsMessageThread, CreatePreparedScriptStore());
|
|
673
668
|
auto jsRuntime = std::make_unique<Microsoft::ReactNative::HermesJSRuntime>(m_jsiRuntimeHolder);
|
|
674
669
|
jsRuntime->getRuntime();
|
|
675
|
-
|
|
676
|
-
|
|
670
|
+
|
|
671
|
+
m_bridgelessReactInstance = std::make_shared<facebook::react::ReactInstance>(
|
|
672
|
+
std::move(jsRuntime),
|
|
673
|
+
jsMessageThread,
|
|
674
|
+
timerManager,
|
|
675
|
+
jsErrorHandlingFunc,
|
|
676
|
+
m_options.InspectorHostTarget);
|
|
677
677
|
|
|
678
678
|
auto bufferedRuntimeExecutor = m_bridgelessReactInstance->getBufferedRuntimeExecutor();
|
|
679
679
|
timerManager->setRuntimeExecutor(bufferedRuntimeExecutor);
|
|
@@ -695,6 +695,7 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
|
|
|
695
695
|
winrt::make<implementation::ReactContext>(Mso::Copy(m_reactContext)));
|
|
696
696
|
|
|
697
697
|
facebook::react::ReactInstance::JSRuntimeFlags options;
|
|
698
|
+
|
|
698
699
|
m_bridgelessReactInstance->initializeRuntime(
|
|
699
700
|
options,
|
|
700
701
|
[=, onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext](
|
|
@@ -748,7 +749,6 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
|
|
|
748
749
|
|
|
749
750
|
LoadJSBundlesBridgeless(devSettings);
|
|
750
751
|
SetupHMRClient();
|
|
751
|
-
|
|
752
752
|
} catch (std::exception &e) {
|
|
753
753
|
OnErrorWithMessage(e.what());
|
|
754
754
|
OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance.");
|
|
@@ -810,9 +810,7 @@ void ReactInstanceWin::InitializeWithBridge() noexcept {
|
|
|
810
810
|
return propValue.value_or(defaultValue);
|
|
811
811
|
};
|
|
812
812
|
|
|
813
|
-
devSettings->omitNetworkingCxxModules = getBoolProperty(nullptr, L"OmitNetworkingCxxModules", false);
|
|
814
813
|
devSettings->useWebSocketTurboModule = getBoolProperty(nullptr, L"UseWebSocketTurboModule", false);
|
|
815
|
-
devSettings->useTurboModulesOnly = getBoolProperty(L"DevSettings", L"UseTurboModulesOnly", false);
|
|
816
814
|
|
|
817
815
|
std::vector<facebook::react::NativeModuleDescription> cxxModules;
|
|
818
816
|
auto nmp = std::make_shared<winrt::Microsoft::ReactNative::NativeModulesProvider>();
|
|
@@ -1092,6 +1090,17 @@ Mso::Future<void> ReactInstanceWin::Destroy() noexcept {
|
|
|
1092
1090
|
if (m_bridgelessReactInstance) {
|
|
1093
1091
|
if (auto jsMessageThread = m_jsMessageThread.Exchange(nullptr)) {
|
|
1094
1092
|
jsMessageThread->runOnQueueSync([&]() noexcept {
|
|
1093
|
+
// Unregister from inspector BEFORE shutting down JS thread
|
|
1094
|
+
if (m_bridgelessReactInstance && m_options.InspectorHostTarget) {
|
|
1095
|
+
Mso::React::MessageDispatchQueue messageDispatchQueue{
|
|
1096
|
+
::Microsoft::ReactNative::ReactInspectorThread::Instance(), nullptr};
|
|
1097
|
+
messageDispatchQueue.runOnQueueSync(
|
|
1098
|
+
[weakBridgelessReactInstance = std::weak_ptr(m_bridgelessReactInstance)]() {
|
|
1099
|
+
if (auto bridgelessReactInstance = weakBridgelessReactInstance.lock()) {
|
|
1100
|
+
bridgelessReactInstance->unregisterFromInspector();
|
|
1101
|
+
}
|
|
1102
|
+
});
|
|
1103
|
+
}
|
|
1095
1104
|
{
|
|
1096
1105
|
// Release the JSI runtime
|
|
1097
1106
|
std::scoped_lock lock{m_mutex};
|
|
@@ -1514,8 +1523,15 @@ void ReactInstanceWin::DetachRootView(facebook::react::IReactRootView *rootView,
|
|
|
1514
1523
|
CallJsFunction("AppRegistry", "unmountApplicationComponentAtRootTag", std::move(params));
|
|
1515
1524
|
}
|
|
1516
1525
|
|
|
1517
|
-
//
|
|
1518
|
-
|
|
1526
|
+
// QUIRK: Legacy sync behavior can be re-enabled via EnableSyncDetachRootView option
|
|
1527
|
+
// The sync call was removed to prevent deadlocks with Hermes GC operations
|
|
1528
|
+
bool useSyncCall = winrt::Microsoft::ReactNative::implementation::QuirkSettings::GetUseRunOnQueueSync(
|
|
1529
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()));
|
|
1530
|
+
if (useSyncCall) {
|
|
1531
|
+
// Legacy behavior: wait for JS thread to finish executing (can cause deadlocks)
|
|
1532
|
+
m_jsMessageThread.Load()->runOnQueueSync([]() {});
|
|
1533
|
+
}
|
|
1534
|
+
// Default behavior: no synchronization call to prevent deadlocks
|
|
1519
1535
|
}
|
|
1520
1536
|
|
|
1521
1537
|
Mso::CntPtr<IReactInstanceInternal> MakeReactInstance(
|
|
@@ -205,7 +205,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
|
|
|
205
205
|
|
|
206
206
|
#ifdef USE_FABRIC
|
|
207
207
|
// Bridgeless
|
|
208
|
-
std::
|
|
208
|
+
std::shared_ptr<facebook::react::ReactInstance> m_bridgelessReactInstance;
|
|
209
209
|
#endif
|
|
210
210
|
|
|
211
211
|
std::atomic<ReactInstanceState> m_state{ReactInstanceState::Loading};
|