react-native-tvos 0.83.2-0 → 0.84.0-0
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/Libraries/Animated/AnimatedEvent.js +2 -2
- package/Libraries/Animated/animations/Animation.js +1 -3
- package/Libraries/Animated/createAnimatedComponent.js +8 -5
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +40 -4
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
- package/Libraries/Animated/nodes/AnimatedObject.js +16 -11
- package/Libraries/Animated/nodes/AnimatedProps.js +43 -12
- package/Libraries/Animated/nodes/AnimatedStyle.js +12 -12
- package/Libraries/Animated/nodes/AnimatedValue.js +6 -3
- package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +3 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +33 -31
- package/Libraries/AppDelegate/RCTRootViewFactory.h +10 -4
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +21 -5
- package/Libraries/BatchedBridge/MessageQueue.js +24 -22
- package/Libraries/Blob/RCTBlobPlugins.mm +14 -14
- package/Libraries/Blob/URL.js +34 -3
- package/Libraries/Blob/URLSearchParams.js +1 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +9 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +6 -1
- package/Libraries/Components/Button.js +2 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +4 -4
- package/Libraries/Components/Keyboard/Keyboard.js +2 -2
- package/Libraries/Components/Pressable/Pressable.js +8 -8
- package/Libraries/Components/TextInput/TextInput.flow.js +13 -13
- package/Libraries/Components/TextInput/TextInput.js +33 -34
- package/Libraries/Components/Touchable/PooledClass.js +2 -2
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -6
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
- package/Libraries/Components/View/ViewPropTypes.js +16 -6
- package/Libraries/Core/Devtools/loadBundleFromServer.js +6 -3
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +3 -3
- package/Libraries/Core/RawEventEmitter.js +1 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpErrorHandling.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +2 -2
- package/Libraries/Image/Image.android.js +2 -2
- package/Libraries/Image/Image.ios.js +2 -2
- package/Libraries/Image/ImageProps.js +1 -1
- package/Libraries/Image/ImageTypes.flow.js +2 -2
- package/Libraries/Image/RCTImagePlugins.h +1 -0
- package/Libraries/Image/RCTImagePlugins.mm +30 -17
- package/Libraries/Interaction/InteractionManager.js +3 -3
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +10 -13
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/LogBox/Data/LogBoxData.js +31 -4
- package/Libraries/LogBox/Data/LogBoxLog.js +2 -2
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -5
- package/Libraries/LogBox/LogBox.js +7 -7
- package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +14 -14
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +7 -0
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +12 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +4 -4
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
- package/Libraries/Network/RCTInspectorNetworkReporter.mm +26 -3
- package/Libraries/Network/RCTNetworkPlugins.mm +22 -16
- package/Libraries/Network/RCTNetworking.android.js +3 -3
- package/Libraries/Network/RCTNetworking.ios.js +2 -2
- package/Libraries/Network/RCTNetworking.js.flow +2 -2
- package/Libraries/Pressability/Pressability.js +9 -9
- package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +10 -13
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -1
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
- package/Libraries/ReactNative/FabricUIManager.js +1 -1
- package/Libraries/ReactNative/PaperUIManager.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +2 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +1 -1
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +11 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +11 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11 -4
- package/Libraries/Renderer/shims/ReactFabric.js +3 -1
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +2 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/Libraries/Settings/RCTSettingsManager.mm +1 -1
- package/Libraries/Settings/RCTSettingsPlugins.mm +10 -13
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +4 -2
- package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +99 -4
- package/Libraries/StyleSheet/StyleSheetTypes.js +6 -8
- package/Libraries/StyleSheet/processFilter.js +1 -1
- package/Libraries/Text/Text.js +46 -6
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +3 -2
- package/Libraries/Text/TextNativeComponent.js +1 -1
- package/Libraries/Text/TextProps.js +7 -7
- package/Libraries/TypeSafety/RCTTypedModuleConstants.h +36 -1
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CoreEventTypes.js +31 -0
- package/Libraries/Types/ReactDevToolsTypes.js +2 -2
- package/Libraries/Utilities/Appearance.js +2 -2
- package/Libraries/Utilities/DevLoadingView.js +8 -1
- package/Libraries/Utilities/DevSettings.js +3 -3
- package/Libraries/Utilities/HMRClient.js +4 -3
- package/Libraries/Utilities/RCTLog.js +3 -3
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +1 -1
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +3 -3
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +7 -7
- package/Libraries/Utilities/useRefEffect.js +1 -1
- package/Libraries/Vibration/RCTVibrationPlugins.mm +10 -13
- package/Libraries/WebSocket/WebSocketInterceptor.js +3 -3
- package/Libraries/promiseRejectionTrackingOptions.js +8 -8
- package/Libraries/vendor/core/ErrorUtils.js +10 -10
- package/Libraries/vendor/emitter/EventEmitter.js +6 -6
- package/README.md +56 -18
- package/React/Base/RCTAssert.m +2 -2
- package/React/Base/RCTBridge.h +0 -4
- package/React/Base/RCTBridge.mm +1 -12
- package/React/Base/RCTBundleManager.h +59 -7
- package/React/Base/RCTBundleManager.m +112 -1
- package/React/Base/RCTBundleURLProvider.h +24 -0
- package/React/Base/RCTBundleURLProvider.mm +49 -4
- package/React/Base/RCTConvert.mm +2 -0
- package/React/Base/RCTModuleData.mm +2 -2
- package/React/Base/RCTUtils.h +4 -0
- package/React/Base/RCTUtils.mm +60 -3
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/CoreModulesPlugins.mm +97 -35
- package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +1 -1
- package/React/CoreModules/RCTAccessibilityManager.mm +18 -1
- package/React/CoreModules/RCTAppState.mm +1 -1
- package/React/CoreModules/RCTDevLoadingView.mm +116 -36
- package/React/CoreModules/RCTDevSettings.h +36 -1
- package/React/CoreModules/RCTDevSettings.mm +44 -8
- package/React/CoreModules/RCTExceptionsManager.mm +5 -2
- package/React/CoreModules/RCTPlatform.mm +3 -2
- package/React/CoreModules/RCTStatusBarManager.mm +1 -1
- package/React/CxxBridge/RCTCxxBridge.mm +1 -2
- package/React/CxxModule/RCTCxxMethod.mm +1 -1
- package/React/CxxModule/RCTCxxUtils.mm +2 -12
- package/React/DevSupport/RCTDevLoadingViewProtocol.h +4 -1
- package/React/DevSupport/RCTPackagerConnection.h +4 -2
- package/React/DevSupport/RCTPackagerConnection.mm +30 -33
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +9 -2
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +62 -17
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +529 -494
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +1 -0
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +14 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +11 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +6 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +2 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +39 -2
- package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +5 -7
- package/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm +5 -7
- package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -1
- package/React/Fabric/Surface/RCTFabricSurface.mm +1 -1
- package/React/Inspector/RCTCxxInspectorWebSocketAdapter.mm +6 -2
- package/React/Modules/RCTEventEmitter.m +1 -0
- package/React/Views/RCTModalHostView.h +2 -0
- package/React/Views/RCTTVView.m +2 -0
- package/ReactAndroid/api/ReactAndroid.api +14 -73
- package/ReactAndroid/build.gradle.kts +2 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +97 -29
- package/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +10 -13
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +1 -119
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.kt +0 -10
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageHelper.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +4 -29
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +43 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.kt +53 -4
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +0 -18
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +6 -96
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +17 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt +1 -33
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Promise.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/PromiseImpl.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +1 -12
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.kt +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ChangeBundleLocationDialog.kt +11 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +99 -9
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.kt +58 -13
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +10 -60
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +144 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkHelper.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingState.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingStateListener.kt +15 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/{interfaces → inspector}/TracingStateProvider.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevLoadingViewManager.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/RedBoxHandler.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorInspectorTargetBinding.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +31 -6
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +7 -6
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorUpdateListener.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +63 -45
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +106 -76
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +22 -16
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +23 -17
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +117 -84
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +22 -16
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +5 -43
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +36 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.kt +3 -27
- package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.kt +7 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +15 -8
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +0 -9
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +46 -12
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +11 -17
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +92 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +62 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSKeyDispatcher.kt +65 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +19 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +5 -36
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +9 -91
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +47 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +4 -23
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +1 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -11
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -47
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutlineDrawable.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +3 -36
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyDownEvent.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyEvent.kt +156 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyUpEvent.kt +24 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +29 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +36 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +21 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +7 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt +31 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +127 -32
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +3 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimental.kt +3 -12
- package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.cpp +29 -2
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +98 -3
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +62 -26
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +145 -103
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +31 -22
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +0 -4
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +1 -3
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +5 -23
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +2 -7
- package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +0 -24
- package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -1
- package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +1 -29
- package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +1 -2
- package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +0 -4
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +0 -4
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -4
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +145 -17
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +193 -19
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +2 -1
- package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +62 -63
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +5 -7
- package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +1 -0
- package/ReactAndroid/src/main/res/devsupport/drawable/ic_perf_issue.xml +10 -0
- package/ReactAndroid/src/main/res/devsupport/layout/dev_loading_view.xml +41 -15
- package/ReactAndroid/src/main/res/devsupport/layout/fps_view.xml +1 -1
- package/ReactAndroid/src/main/res/devsupport/values/strings.xml +1 -0
- package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +16 -0
- package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +2 -0
- package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +38 -5
- package/ReactCommon/cmake-utils/react-native-flags.cmake +3 -0
- package/ReactCommon/cxxreact/JSBigString.h +14 -5
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +4 -5
- package/ReactCommon/cxxreact/ReactMarker.cpp +0 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +4 -4
- package/ReactCommon/devtoolsruntimesettings/DevToolsRuntimeSettings.cpp +1 -1
- package/ReactCommon/hermes/React-hermes.podspec +1 -0
- package/ReactCommon/hermes/executor/CMakeLists.txt +0 -4
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -0
- package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +0 -4
- package/ReactCommon/jsi/jsi/jsi.cpp +6 -1
- package/ReactCommon/jsi/jsi/jsi.h +73 -0
- package/ReactCommon/jsi/jsi/test/testlib.cpp +2 -2
- package/ReactCommon/jsiexecutor/CMakeLists.txt +3 -1
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -0
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +3 -8
- package/ReactCommon/jsinspector-modern/ConsoleTask.cpp +27 -0
- package/ReactCommon/jsinspector-modern/ConsoleTask.h +38 -0
- package/ReactCommon/jsinspector-modern/ConsoleTaskContext.cpp +46 -0
- package/ReactCommon/jsinspector-modern/ConsoleTaskContext.h +102 -0
- package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.cpp +55 -0
- package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.h +48 -0
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +9 -10
- package/ReactCommon/jsinspector-modern/HostAgent.h +2 -2
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -6
- package/ReactCommon/jsinspector-modern/HostTarget.h +73 -16
- package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +40 -8
- package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.h +42 -5
- package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +54 -21
- package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +2 -11
- package/ReactCommon/jsinspector-modern/InstanceTarget.h +2 -2
- package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +9 -1
- package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +4 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +3 -2
- package/ReactCommon/jsinspector-modern/RuntimeAgent.h +1 -1
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +12 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -13
- package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +106 -1
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +30 -18
- package/ReactCommon/jsinspector-modern/TracingAgent.h +5 -4
- package/ReactCommon/jsinspector-modern/tests/ConsoleCreateTaskTest.cpp +131 -0
- package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +20 -0
- package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +25 -55
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +1 -0
- package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +116 -0
- package/ReactCommon/jsinspector-modern/tests/TracingTest.h +95 -0
- package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +60 -0
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +43 -0
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +144 -0
- package/ReactCommon/jsinspector-modern/tracing/{TraceRecordingStateSerializer.h → HostTracingProfileSerializer.h} +16 -8
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +67 -16
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +21 -2
- package/ReactCommon/jsinspector-modern/tracing/TargetTracingAgent.h +5 -0
- package/ReactCommon/jsinspector-modern/tracing/TimeWindowedBuffer.h +158 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEvent.h +2 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +104 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +59 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +2 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +18 -7
- package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +139 -0
- package/ReactCommon/jsinspector-modern/tracing/tests/TimeWindowedBufferTest.cpp +352 -0
- package/ReactCommon/jsitooling/React-jsitooling.podspec +4 -0
- package/ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.cpp +54 -0
- package/{ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h → ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.h} +4 -6
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +43 -31
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +55 -40
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +234 -180
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +24 -18
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +43 -31
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +91 -64
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +12 -9
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +7 -2
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +30 -10
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +17 -6
- package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +0 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -4
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +0 -4
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +43 -60
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +11 -36
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +53 -38
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +22 -16
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
- package/ReactCommon/react/networking/NetworkReporter.cpp +26 -22
- package/ReactCommon/react/networking/React-networking.podspec +0 -1
- package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +4 -2
- package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +10 -2
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
- package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +104 -78
- package/ReactCommon/react/renderer/animated/AnimatedModule.h +10 -2
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +174 -75
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +19 -1
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +68 -46
- package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +1 -0
- package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.cpp +1 -1
- package/ReactCommon/react/renderer/animated/nodes/ColorAnimatedNode.cpp +0 -1
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +103 -4
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +9 -0
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +5 -1
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +9 -0
- package/ReactCommon/react/renderer/animated/nodes/RoundAnimatedNode.cpp +1 -1
- package/ReactCommon/react/renderer/animated/nodes/ValueAnimatedNode.cpp +1 -1
- package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +67 -0
- package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +59 -0
- package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +2 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +715 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +388 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +191 -2
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +100 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +298 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +90 -94
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +23 -5
- package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp +75 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +32 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +2 -2
- package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +3 -0
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
- package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
- package/ReactCommon/react/renderer/components/image/conversions.h +5 -0
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +2 -1
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +5 -1
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -1
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +14 -0
- package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +10 -0
- package/ReactCommon/react/renderer/core/DynamicEventPayload.h +6 -1
- package/ReactCommon/react/renderer/core/DynamicPointerEvent.cpp +30 -0
- package/ReactCommon/react/renderer/core/DynamicPointerEvent.h +29 -0
- package/ReactCommon/react/renderer/core/EventDispatcher.cpp +1 -1
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +11 -14
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +3 -3
- package/ReactCommon/react/renderer/core/Props.cpp +23 -8
- package/ReactCommon/react/renderer/core/Props.h +6 -4
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -10
- package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +32 -0
- package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +7 -0
- package/ReactCommon/react/renderer/debug/CMakeLists.txt +7 -0
- package/ReactCommon/react/renderer/debug/flags.h +3 -2
- package/ReactCommon/react/renderer/graphics/BlendMode.h +2 -0
- package/ReactCommon/react/renderer/graphics/Filter.h +2 -0
- package/ReactCommon/react/renderer/imagemanager/ImageManager.h +3 -0
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +23 -12
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +8 -3
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +16 -4
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/imagemanager/primitives.h +15 -6
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +0 -11
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +0 -20
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +3 -3
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +2 -3
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +6 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
- package/ReactCommon/react/runtime/CMakeLists.txt +0 -4
- package/ReactCommon/react/runtime/PlatformTimerRegistry.h +2 -0
- package/ReactCommon/react/runtime/ReactInstance.cpp +21 -14
- package/ReactCommon/react/runtime/ReactInstance.h +5 -1
- package/ReactCommon/react/runtime/TimerManager.cpp +11 -53
- package/ReactCommon/react/runtime/TimerManager.h +7 -12
- package/ReactCommon/react/runtime/hermes/CMakeLists.txt +0 -4
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +3 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +10 -6
- package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +6 -6
- package/ReactCommon/yoga/yoga/algorithm/SizingMode.h +4 -4
- package/ReactCommon/yoga/yoga/style/Style.h +8 -8
- package/ReactCommon/yoga/yoga/style/StyleLength.h +7 -0
- package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -0
- package/flow/HermesInternalType.js +6 -6
- package/flow/bom.js.flow +35 -28
- package/flow/cssom.js.flow +3 -3
- package/flow/dom.js.flow +34 -33
- package/index.js +3 -0
- package/index.js.flow +8 -0
- package/jest/mock.js +2 -2
- package/jest/mockComponent.js +1 -1
- package/jest/setup.js +1 -1
- package/package.json +11 -11
- package/react-native.config.js +0 -17
- package/scripts/cocoapods/new_architecture.rb +7 -1
- package/scripts/cocoapods/spm.rb +28 -10
- package/scripts/cocoapods/utils.rb +4 -4
- package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +5 -5
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
- package/scripts/ios-configure-glog.sh +24 -1
- package/scripts/react_native_pods.rb +13 -0
- package/sdks/.hermesv1version +1 -1
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +53 -36
- package/sdks/hermes-engine/hermes-utils.rb +8 -15
- package/sdks/hermes-engine/version.properties +1 -1
- package/src/private/animated/NativeAnimatedHelper.js +130 -125
- package/src/private/animated/NativeAnimatedValidation.js +7 -4
- package/src/private/animated/createAnimatedPropsHook.js +13 -5
- package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
- package/src/private/components/virtualview/VirtualView.js +16 -9
- package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
- package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
- package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
- package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
- package/src/private/webapis/dom/events/CustomEvent.js +3 -3
- 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/specs/NativeDOM.js +29 -29
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +2 -0
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -1
- package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
- package/src/private/webapis/html/events/MessageEvent.js +3 -3
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
- package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
- package/src/private/webapis/performance/Performance.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
- package/src/private/webapis/structuredClone/structuredClone.js +3 -3
- package/src/types/globals.d.ts +30 -1
- package/third-party-podspecs/RCT-Folly.podspec +1 -0
- package/third-party-podspecs/glog.podspec +1 -0
- package/React/CxxModule/RCTCxxModule.h +0 -29
- package/React/CxxModule/RCTCxxModule.mm +0 -87
- package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.kt +0 -146
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +0 -45
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +0 -61
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NotThreadSafeBridgeIdleDebugListener.kt +0 -36
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +0 -21
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +0 -78
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +0 -105
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/TracingState.kt +0 -19
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +0 -157
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +0 -32
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/debug/NotThreadSafeViewHierarchyUpdateDebugListener.kt +0 -30
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +0 -87
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationListener.kt +0 -23
- package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +0 -37
- package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +0 -20
- package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.cpp +0 -175
- package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +0 -75
- package/ReactCommon/jsinspector-modern/tracing/TraceRecordingStateSerializer.cpp +0 -68
- package/ReactCommon/jsinspector-modern/tracing/TracingState.h +0 -24
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
- package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
- package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
- package/tvosCommands.js +0 -51
- /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "HostTracingProfileSerializer.h"
|
|
9
|
+
#include "RuntimeSamplingProfileTraceEventSerializer.h"
|
|
10
|
+
#include "TraceEventGenerator.h"
|
|
11
|
+
#include "TraceEventSerializer.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react::jsinspector_modern::tracing {
|
|
14
|
+
|
|
15
|
+
namespace {
|
|
16
|
+
|
|
17
|
+
folly::dynamic generateNewChunk(uint16_t chunkSize) {
|
|
18
|
+
folly::dynamic chunk = folly::dynamic::array();
|
|
19
|
+
chunk.reserve(chunkSize);
|
|
20
|
+
|
|
21
|
+
return chunk;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Hardcoded layer tree ID for all recorded frames.
|
|
26
|
+
* https://chromedevtools.github.io/devtools-protocol/tot/LayerTree/
|
|
27
|
+
*/
|
|
28
|
+
constexpr int FALLBACK_LAYER_TREE_ID = 1;
|
|
29
|
+
|
|
30
|
+
} // namespace
|
|
31
|
+
|
|
32
|
+
/* static */ void HostTracingProfileSerializer::emitAsDataCollectedChunks(
|
|
33
|
+
HostTracingProfile&& hostTracingProfile,
|
|
34
|
+
const std::function<void(folly::dynamic&&)>& chunkCallback,
|
|
35
|
+
uint16_t traceEventsChunkSize,
|
|
36
|
+
uint16_t profileTraceEventsChunkSize) {
|
|
37
|
+
emitFrameTimings(
|
|
38
|
+
std::move(hostTracingProfile.frameTimings),
|
|
39
|
+
hostTracingProfile.processId,
|
|
40
|
+
hostTracingProfile.startTime,
|
|
41
|
+
chunkCallback,
|
|
42
|
+
traceEventsChunkSize);
|
|
43
|
+
|
|
44
|
+
auto instancesProfiles =
|
|
45
|
+
std::move(hostTracingProfile.instanceTracingProfiles);
|
|
46
|
+
IdGenerator profileIdGenerator;
|
|
47
|
+
|
|
48
|
+
for (auto& instanceProfile : instancesProfiles) {
|
|
49
|
+
emitPerformanceTraceEvents(
|
|
50
|
+
std::move(instanceProfile.performanceTraceEvents),
|
|
51
|
+
chunkCallback,
|
|
52
|
+
traceEventsChunkSize);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
RuntimeSamplingProfileTraceEventSerializer::serializeAndDispatch(
|
|
56
|
+
std::move(hostTracingProfile.runtimeSamplingProfiles),
|
|
57
|
+
profileIdGenerator,
|
|
58
|
+
hostTracingProfile.startTime,
|
|
59
|
+
chunkCallback,
|
|
60
|
+
profileTraceEventsChunkSize);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* static */ void HostTracingProfileSerializer::emitPerformanceTraceEvents(
|
|
64
|
+
std::vector<TraceEvent>&& events,
|
|
65
|
+
const std::function<void(folly::dynamic&&)>& chunkCallback,
|
|
66
|
+
uint16_t chunkSize) {
|
|
67
|
+
folly::dynamic chunk = generateNewChunk(chunkSize);
|
|
68
|
+
|
|
69
|
+
for (auto& event : events) {
|
|
70
|
+
if (chunk.size() == chunkSize) {
|
|
71
|
+
chunkCallback(std::move(chunk));
|
|
72
|
+
chunk = generateNewChunk(chunkSize);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
chunk.push_back(TraceEventSerializer::serialize(std::move(event)));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (!chunk.empty()) {
|
|
79
|
+
chunkCallback(std::move(chunk));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* static */ void HostTracingProfileSerializer::emitFrameTimings(
|
|
84
|
+
std::vector<FrameTimingSequence>&& frameTimings,
|
|
85
|
+
ProcessId processId,
|
|
86
|
+
HighResTimeStamp recordingStartTimestamp,
|
|
87
|
+
const std::function<void(folly::dynamic&& chunk)>& chunkCallback,
|
|
88
|
+
uint16_t chunkSize) {
|
|
89
|
+
if (frameTimings.empty()) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
folly::dynamic chunk = generateNewChunk(chunkSize);
|
|
94
|
+
auto setLayerTreeIdEvent = TraceEventGenerator::createSetLayerTreeIdEvent(
|
|
95
|
+
"", // Hardcoded frame name for the default (and only) layer.
|
|
96
|
+
FALLBACK_LAYER_TREE_ID,
|
|
97
|
+
processId,
|
|
98
|
+
frameTimings.front().threadId,
|
|
99
|
+
recordingStartTimestamp);
|
|
100
|
+
chunk.push_back(
|
|
101
|
+
TraceEventSerializer::serialize(std::move(setLayerTreeIdEvent)));
|
|
102
|
+
|
|
103
|
+
for (auto&& frameTimingSequence : frameTimings) {
|
|
104
|
+
if (chunk.size() >= chunkSize) {
|
|
105
|
+
chunkCallback(std::move(chunk));
|
|
106
|
+
chunk = generateNewChunk(chunkSize);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
auto [beginDrawingEvent, commitEvent, endDrawingEvent] =
|
|
110
|
+
TraceEventGenerator::createFrameTimingsEvents(
|
|
111
|
+
frameTimingSequence.id,
|
|
112
|
+
FALLBACK_LAYER_TREE_ID,
|
|
113
|
+
frameTimingSequence.beginDrawingTimestamp,
|
|
114
|
+
frameTimingSequence.commitTimestamp,
|
|
115
|
+
frameTimingSequence.endDrawingTimestamp,
|
|
116
|
+
processId,
|
|
117
|
+
frameTimingSequence.threadId);
|
|
118
|
+
|
|
119
|
+
chunk.push_back(
|
|
120
|
+
TraceEventSerializer::serialize(std::move(beginDrawingEvent)));
|
|
121
|
+
chunk.push_back(TraceEventSerializer::serialize(std::move(commitEvent)));
|
|
122
|
+
chunk.push_back(
|
|
123
|
+
TraceEventSerializer::serialize(std::move(endDrawingEvent)));
|
|
124
|
+
|
|
125
|
+
if (frameTimingSequence.screenshot.has_value()) {
|
|
126
|
+
auto screenshotEvent = TraceEventGenerator::createScreenshotEvent(
|
|
127
|
+
frameTimingSequence.id,
|
|
128
|
+
FALLBACK_LAYER_TREE_ID,
|
|
129
|
+
std::move(frameTimingSequence.screenshot.value()),
|
|
130
|
+
frameTimingSequence.endDrawingTimestamp,
|
|
131
|
+
processId,
|
|
132
|
+
frameTimingSequence.threadId);
|
|
133
|
+
|
|
134
|
+
chunk.push_back(
|
|
135
|
+
TraceEventSerializer::serialize(std::move(screenshotEvent)));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (!chunk.empty()) {
|
|
140
|
+
chunkCallback(std::move(chunk));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
} // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
|
+
#include "FrameTimingSequence.h"
|
|
11
|
+
#include "HostTracingProfile.h"
|
|
10
12
|
#include "TraceEvent.h"
|
|
11
|
-
#include "TraceRecordingState.h"
|
|
12
13
|
|
|
13
14
|
#include <folly/dynamic.h>
|
|
14
15
|
#include <vector>
|
|
@@ -16,27 +17,34 @@
|
|
|
16
17
|
namespace facebook::react::jsinspector_modern::tracing {
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
|
-
* A serializer for
|
|
20
|
-
*
|
|
20
|
+
* A serializer for HostTracingProfile that can be used for transforming the
|
|
21
|
+
* profile into sequence of serialized Trace Events.
|
|
21
22
|
*/
|
|
22
|
-
class
|
|
23
|
+
class HostTracingProfileSerializer {
|
|
23
24
|
public:
|
|
24
25
|
/**
|
|
25
|
-
* Transforms the
|
|
26
|
-
* is split in chunks of sizes \p
|
|
26
|
+
* Transforms the profile into a sequence of serialized Trace Events, which
|
|
27
|
+
* is split in chunks of sizes \p traceEventsChunkSize or
|
|
27
28
|
* \p profileTraceEventsChunkSize, depending on type, and sent with \p
|
|
28
29
|
* chunkCallback.
|
|
29
30
|
*/
|
|
30
31
|
static void emitAsDataCollectedChunks(
|
|
31
|
-
|
|
32
|
+
HostTracingProfile &&hostTracingProfile,
|
|
32
33
|
const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
|
|
33
|
-
uint16_t
|
|
34
|
+
uint16_t traceEventsChunkSize,
|
|
34
35
|
uint16_t profileTraceEventsChunkSize);
|
|
35
36
|
|
|
36
37
|
static void emitPerformanceTraceEvents(
|
|
37
38
|
std::vector<TraceEvent> &&events,
|
|
38
39
|
const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
|
|
39
40
|
uint16_t chunkSize);
|
|
41
|
+
|
|
42
|
+
static void emitFrameTimings(
|
|
43
|
+
std::vector<FrameTimingSequence> &&frameTimings,
|
|
44
|
+
ProcessId processId,
|
|
45
|
+
HighResTimeStamp recordingStartTimestamp,
|
|
46
|
+
const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
|
|
47
|
+
uint16_t chunkSize);
|
|
40
48
|
};
|
|
41
49
|
|
|
42
50
|
} // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
#include "PerformanceTracer.h"
|
|
9
9
|
#include "Timing.h"
|
|
10
|
+
#include "TraceEventGenerator.h"
|
|
10
11
|
#include "TraceEventSerializer.h"
|
|
12
|
+
#include "TracingCategory.h"
|
|
11
13
|
|
|
12
14
|
#include <jsinspector-modern/network/CdpNetwork.h>
|
|
13
15
|
#include <jsinspector-modern/network/HttpUtils.h>
|
|
@@ -138,7 +140,7 @@ std::optional<std::vector<TraceEvent>> PerformanceTracer::stopTracing() {
|
|
|
138
140
|
events.emplace_back(
|
|
139
141
|
TraceEvent{
|
|
140
142
|
.name = "TracingStartedInPage",
|
|
141
|
-
.cat =
|
|
143
|
+
.cat = {Category::HiddenTimeline},
|
|
142
144
|
.ph = 'I',
|
|
143
145
|
.ts = currentTraceStartTime,
|
|
144
146
|
.pid = processId_,
|
|
@@ -149,7 +151,7 @@ std::optional<std::vector<TraceEvent>> PerformanceTracer::stopTracing() {
|
|
|
149
151
|
events.emplace_back(
|
|
150
152
|
TraceEvent{
|
|
151
153
|
.name = "ReactNative-TracingStopped",
|
|
152
|
-
.cat =
|
|
154
|
+
.cat = {Category::HiddenTimeline},
|
|
153
155
|
.ph = 'I',
|
|
154
156
|
.ts = currentTraceEndTime,
|
|
155
157
|
.pid = processId_,
|
|
@@ -187,7 +189,8 @@ void PerformanceTracer::reportMeasure(
|
|
|
187
189
|
const std::string& name,
|
|
188
190
|
HighResTimeStamp start,
|
|
189
191
|
HighResDuration duration,
|
|
190
|
-
folly::dynamic&& detail
|
|
192
|
+
folly::dynamic&& detail,
|
|
193
|
+
std::optional<folly::dynamic> stackTrace) {
|
|
191
194
|
if (!tracingAtomic_) {
|
|
192
195
|
return;
|
|
193
196
|
}
|
|
@@ -204,6 +207,7 @@ void PerformanceTracer::reportMeasure(
|
|
|
204
207
|
.duration = duration,
|
|
205
208
|
.detail = std::move(detail),
|
|
206
209
|
.threadId = getCurrentThreadId(),
|
|
210
|
+
.stackTrace = std::move(stackTrace),
|
|
207
211
|
});
|
|
208
212
|
}
|
|
209
213
|
|
|
@@ -214,7 +218,8 @@ void PerformanceTracer::reportTimeStamp(
|
|
|
214
218
|
std::optional<std::string> trackName,
|
|
215
219
|
std::optional<std::string> trackGroup,
|
|
216
220
|
std::optional<ConsoleTimeStampColor> color,
|
|
217
|
-
std::optional<folly::dynamic> detail
|
|
221
|
+
std::optional<folly::dynamic> detail,
|
|
222
|
+
std::optional<folly::dynamic> stackTrace) {
|
|
218
223
|
if (!tracingAtomic_) {
|
|
219
224
|
return;
|
|
220
225
|
}
|
|
@@ -233,6 +238,7 @@ void PerformanceTracer::reportTimeStamp(
|
|
|
233
238
|
.trackGroup = std::move(trackGroup),
|
|
234
239
|
.color = std::move(color),
|
|
235
240
|
.detail = std::move(detail),
|
|
241
|
+
.stackTrace = std::move(stackTrace),
|
|
236
242
|
.threadId = getCurrentThreadId(),
|
|
237
243
|
});
|
|
238
244
|
}
|
|
@@ -306,6 +312,27 @@ void PerformanceTracer::reportResourceSendRequest(
|
|
|
306
312
|
});
|
|
307
313
|
}
|
|
308
314
|
|
|
315
|
+
void PerformanceTracer::reportResourceReceivedData(
|
|
316
|
+
const std::string& devtoolsRequestId,
|
|
317
|
+
HighResTimeStamp start,
|
|
318
|
+
int encodedDataLength) {
|
|
319
|
+
if (!tracingAtomic_) {
|
|
320
|
+
return;
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
std::lock_guard<std::mutex> lock(mutex_);
|
|
324
|
+
if (!tracingAtomic_) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
enqueueEvent(
|
|
329
|
+
PerformanceTracerResourceReceivedData{
|
|
330
|
+
.requestId = devtoolsRequestId,
|
|
331
|
+
.start = start,
|
|
332
|
+
.encodedDataLength = encodedDataLength,
|
|
333
|
+
.threadId = getCurrentThreadId()});
|
|
334
|
+
}
|
|
335
|
+
|
|
309
336
|
void PerformanceTracer::reportResourceReceiveResponse(
|
|
310
337
|
const std::string& devtoolsRequestId,
|
|
311
338
|
HighResTimeStamp start,
|
|
@@ -370,7 +397,7 @@ void PerformanceTracer::reportResourceFinish(
|
|
|
370
397
|
return TraceEvent{
|
|
371
398
|
.id = profileId,
|
|
372
399
|
.name = "Profile",
|
|
373
|
-
.cat =
|
|
400
|
+
.cat = {Category::JavaScriptSampling},
|
|
374
401
|
.ph = 'P',
|
|
375
402
|
.ts = profileTimestamp,
|
|
376
403
|
.pid = processId,
|
|
@@ -393,7 +420,7 @@ PerformanceTracer::constructRuntimeProfileChunkTraceEvent(
|
|
|
393
420
|
return TraceEvent{
|
|
394
421
|
.id = profileId,
|
|
395
422
|
.name = "ProfileChunk",
|
|
396
|
-
.cat =
|
|
423
|
+
.cat = {Category::JavaScriptSampling},
|
|
397
424
|
.ph = 'P',
|
|
398
425
|
.ts = chunkTimestamp,
|
|
399
426
|
.pid = processId,
|
|
@@ -525,7 +552,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
525
552
|
events.emplace_back(
|
|
526
553
|
TraceEvent{
|
|
527
554
|
.name = "RunTask",
|
|
528
|
-
.cat =
|
|
555
|
+
.cat = {Category::HiddenTimeline},
|
|
529
556
|
.ph = 'X',
|
|
530
557
|
.ts = event.start,
|
|
531
558
|
.pid = processId_,
|
|
@@ -537,7 +564,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
537
564
|
events.emplace_back(
|
|
538
565
|
TraceEvent{
|
|
539
566
|
.name = "RunMicrotasks",
|
|
540
|
-
.cat =
|
|
567
|
+
.cat = {Category::RuntimeExecution},
|
|
541
568
|
.ph = 'X',
|
|
542
569
|
.ts = event.start,
|
|
543
570
|
.pid = processId_,
|
|
@@ -557,7 +584,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
557
584
|
events.emplace_back(
|
|
558
585
|
TraceEvent{
|
|
559
586
|
.name = std::move(event.name),
|
|
560
|
-
.cat =
|
|
587
|
+
.cat = {Category::UserTiming},
|
|
561
588
|
.ph = 'I',
|
|
562
589
|
.ts = event.start,
|
|
563
590
|
.pid = processId_,
|
|
@@ -571,6 +598,10 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
571
598
|
beginEventArgs =
|
|
572
599
|
folly::dynamic::object("detail", folly::toJson(event.detail));
|
|
573
600
|
}
|
|
601
|
+
if (event.stackTrace) {
|
|
602
|
+
beginEventArgs["data"] = folly::dynamic::object(
|
|
603
|
+
"rnStackTrace", std::move(*event.stackTrace));
|
|
604
|
+
}
|
|
574
605
|
|
|
575
606
|
auto eventId = ++performanceMeasureCount_;
|
|
576
607
|
|
|
@@ -578,7 +609,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
578
609
|
TraceEvent{
|
|
579
610
|
.id = eventId,
|
|
580
611
|
.name = event.name,
|
|
581
|
-
.cat =
|
|
612
|
+
.cat = {Category::UserTiming},
|
|
582
613
|
.ph = 'b',
|
|
583
614
|
.ts = event.start,
|
|
584
615
|
.pid = processId_,
|
|
@@ -589,7 +620,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
589
620
|
TraceEvent{
|
|
590
621
|
.id = eventId,
|
|
591
622
|
.name = std::move(event.name),
|
|
592
|
-
.cat =
|
|
623
|
+
.cat = {Category::UserTiming},
|
|
593
624
|
.ph = 'e',
|
|
594
625
|
.ts = event.start + event.duration,
|
|
595
626
|
.pid = processId_,
|
|
@@ -629,7 +660,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
629
660
|
events.emplace_back(
|
|
630
661
|
TraceEvent{
|
|
631
662
|
.name = "TimeStamp",
|
|
632
|
-
.cat =
|
|
663
|
+
.cat = {Category::Timeline},
|
|
633
664
|
.ph = 'I',
|
|
634
665
|
.ts = event.createdAt,
|
|
635
666
|
.pid = processId_,
|
|
@@ -660,11 +691,14 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
660
691
|
}
|
|
661
692
|
data["devtools"] = folly::toJson(devtoolsDetail);
|
|
662
693
|
}
|
|
694
|
+
if (event.stackTrace) {
|
|
695
|
+
data["rnStackTrace"] = std::move(*event.stackTrace);
|
|
696
|
+
}
|
|
663
697
|
|
|
664
698
|
events.emplace_back(
|
|
665
699
|
TraceEvent{
|
|
666
700
|
.name = "TimeStamp",
|
|
667
|
-
.cat =
|
|
701
|
+
.cat = {Category::Timeline},
|
|
668
702
|
.ph = 'I',
|
|
669
703
|
.ts = event.createdAt,
|
|
670
704
|
.pid = processId_,
|
|
@@ -684,7 +718,24 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
684
718
|
events.emplace_back(
|
|
685
719
|
TraceEvent{
|
|
686
720
|
.name = "ResourceSendRequest",
|
|
687
|
-
.cat =
|
|
721
|
+
.cat = {Category::Timeline},
|
|
722
|
+
.ph = 'I',
|
|
723
|
+
.ts = event.start,
|
|
724
|
+
.pid = processId_,
|
|
725
|
+
.s = 't',
|
|
726
|
+
.tid = event.threadId,
|
|
727
|
+
.args = folly::dynamic::object("data", std::move(data)),
|
|
728
|
+
});
|
|
729
|
+
},
|
|
730
|
+
[&](PerformanceTracerResourceReceivedData&& event) {
|
|
731
|
+
folly::dynamic data = folly::dynamic::object(
|
|
732
|
+
"encodedDataLength", event.encodedDataLength)(
|
|
733
|
+
"requestId", std::move(event.requestId));
|
|
734
|
+
|
|
735
|
+
events.emplace_back(
|
|
736
|
+
TraceEvent{
|
|
737
|
+
.name = "ResourceReceivedData",
|
|
738
|
+
.cat = {Category::Timeline},
|
|
688
739
|
.ph = 'I',
|
|
689
740
|
.ts = event.start,
|
|
690
741
|
.pid = processId_,
|
|
@@ -710,7 +761,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
710
761
|
events.emplace_back(
|
|
711
762
|
TraceEvent{
|
|
712
763
|
.name = "ResourceReceiveResponse",
|
|
713
|
-
.cat =
|
|
764
|
+
.cat = {Category::Timeline},
|
|
714
765
|
.ph = 'I',
|
|
715
766
|
.ts = event.start,
|
|
716
767
|
.pid = processId_,
|
|
@@ -728,7 +779,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
|
|
|
728
779
|
events.emplace_back(
|
|
729
780
|
TraceEvent{
|
|
730
781
|
.name = "ResourceFinish",
|
|
731
|
-
.cat =
|
|
782
|
+
.cat = {Category::Timeline},
|
|
732
783
|
.ph = 'I',
|
|
733
784
|
.ts = event.start,
|
|
734
785
|
.pid = processId_,
|
|
@@ -81,7 +81,8 @@ class PerformanceTracer {
|
|
|
81
81
|
const std::string &name,
|
|
82
82
|
HighResTimeStamp start,
|
|
83
83
|
HighResDuration duration,
|
|
84
|
-
folly::dynamic &&detail = nullptr
|
|
84
|
+
folly::dynamic &&detail = nullptr,
|
|
85
|
+
std::optional<folly::dynamic> stackTrace = nullptr);
|
|
85
86
|
|
|
86
87
|
/**
|
|
87
88
|
* Record a "TimeStamp" Trace Event - a labelled entry on Performance
|
|
@@ -97,7 +98,8 @@ class PerformanceTracer {
|
|
|
97
98
|
std::optional<std::string> trackName = std::nullopt,
|
|
98
99
|
std::optional<std::string> trackGroup = std::nullopt,
|
|
99
100
|
std::optional<ConsoleTimeStampColor> color = std::nullopt,
|
|
100
|
-
std::optional<folly::dynamic> detail = std::nullopt
|
|
101
|
+
std::optional<folly::dynamic> detail = std::nullopt,
|
|
102
|
+
std::optional<folly::dynamic> stackTrace = std::nullopt);
|
|
101
103
|
|
|
102
104
|
/**
|
|
103
105
|
* Record an Event Loop tick, which will be represented as an Event Loop task
|
|
@@ -134,6 +136,12 @@ class PerformanceTracer {
|
|
|
134
136
|
const std::string &requestMethod,
|
|
135
137
|
const Headers &headers);
|
|
136
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Record a "ResourceReceivedData" event.
|
|
141
|
+
* If not currently tracing, this is a no-op.
|
|
142
|
+
*/
|
|
143
|
+
void reportResourceReceivedData(const std::string &devtoolsRequestId, HighResTimeStamp start, int encodedDataLength);
|
|
144
|
+
|
|
137
145
|
/**
|
|
138
146
|
* Record a "ResourceReceiveResponse" event. Paired with other "Resource*"
|
|
139
147
|
* events, renders a network request timeline in the Performance panel Network
|
|
@@ -243,6 +251,7 @@ class PerformanceTracer {
|
|
|
243
251
|
HighResDuration duration;
|
|
244
252
|
folly::dynamic detail;
|
|
245
253
|
ThreadId threadId;
|
|
254
|
+
std::optional<folly::dynamic> stackTrace;
|
|
246
255
|
HighResTimeStamp createdAt = HighResTimeStamp::now();
|
|
247
256
|
};
|
|
248
257
|
|
|
@@ -254,6 +263,7 @@ class PerformanceTracer {
|
|
|
254
263
|
std::optional<std::string> trackGroup;
|
|
255
264
|
std::optional<ConsoleTimeStampColor> color;
|
|
256
265
|
std::optional<folly::dynamic> detail;
|
|
266
|
+
std::optional<folly::dynamic> stackTrace;
|
|
257
267
|
ThreadId threadId;
|
|
258
268
|
HighResTimeStamp createdAt = HighResTimeStamp::now();
|
|
259
269
|
};
|
|
@@ -277,6 +287,14 @@ class PerformanceTracer {
|
|
|
277
287
|
HighResTimeStamp createdAt = HighResTimeStamp::now();
|
|
278
288
|
};
|
|
279
289
|
|
|
290
|
+
struct PerformanceTracerResourceReceivedData {
|
|
291
|
+
std::string requestId;
|
|
292
|
+
HighResTimeStamp start;
|
|
293
|
+
int encodedDataLength;
|
|
294
|
+
ThreadId threadId;
|
|
295
|
+
HighResTimeStamp createdAt = HighResTimeStamp::now();
|
|
296
|
+
};
|
|
297
|
+
|
|
280
298
|
struct PerformanceTracerResourceReceiveResponse {
|
|
281
299
|
std::string requestId;
|
|
282
300
|
HighResTimeStamp start;
|
|
@@ -298,6 +316,7 @@ class PerformanceTracer {
|
|
|
298
316
|
PerformanceTracerEventMeasure,
|
|
299
317
|
PerformanceTracerResourceSendRequest,
|
|
300
318
|
PerformanceTracerResourceReceiveResponse,
|
|
319
|
+
PerformanceTracerResourceReceivedData,
|
|
301
320
|
PerformanceTracerResourceFinish>;
|
|
302
321
|
|
|
303
322
|
#pragma mark - Private fields and methods
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <algorithm>
|
|
11
|
+
#include <functional>
|
|
12
|
+
#include <optional>
|
|
13
|
+
#include <vector>
|
|
14
|
+
|
|
15
|
+
#include <react/timing/primitives.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react::jsinspector_modern::tracing {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The currentBufferStartTime_ is initialized once first element is pushed.
|
|
21
|
+
*/
|
|
22
|
+
constexpr HighResTimeStamp kCurrentBufferStartTimeUninitialized = HighResTimeStamp::min();
|
|
23
|
+
|
|
24
|
+
template <typename T>
|
|
25
|
+
class TimeWindowedBuffer {
|
|
26
|
+
public:
|
|
27
|
+
using TimestampAccessor = std::function<HighResTimeStamp(const T &)>;
|
|
28
|
+
|
|
29
|
+
TimeWindowedBuffer() : timestampAccessor_(std::nullopt), windowSize_(std::nullopt) {}
|
|
30
|
+
|
|
31
|
+
TimeWindowedBuffer(TimestampAccessor timestampAccessor, HighResDuration windowSize)
|
|
32
|
+
: timestampAccessor_(std::move(timestampAccessor)), windowSize_(windowSize)
|
|
33
|
+
{
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
void push(const T &element)
|
|
37
|
+
{
|
|
38
|
+
if (timestampAccessor_) {
|
|
39
|
+
auto timestamp = (*timestampAccessor_)(element);
|
|
40
|
+
enqueueElement(element, timestamp);
|
|
41
|
+
} else {
|
|
42
|
+
enqueueElement(element, HighResTimeStamp::now());
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void push(T &&element)
|
|
47
|
+
{
|
|
48
|
+
if (timestampAccessor_) {
|
|
49
|
+
auto timestamp = (*timestampAccessor_)(element);
|
|
50
|
+
enqueueElement(std::move(element), timestamp);
|
|
51
|
+
} else {
|
|
52
|
+
enqueueElement(std::move(element), HighResTimeStamp::now());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void clear()
|
|
57
|
+
{
|
|
58
|
+
primaryBuffer_.clear();
|
|
59
|
+
alternativeBuffer_.clear();
|
|
60
|
+
currentBufferIndex_ = BufferIndex::Primary;
|
|
61
|
+
currentBufferStartTime_ = kCurrentBufferStartTimeUninitialized;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Forces immediate removal of elements that are outside the time window.
|
|
66
|
+
* The right boundary of the window is the reference timestamp passed as an argument.
|
|
67
|
+
*/
|
|
68
|
+
std::vector<T> pruneExpiredAndExtract(HighResTimeStamp windowRightBoundary = HighResTimeStamp::now())
|
|
69
|
+
{
|
|
70
|
+
std::vector<T> result;
|
|
71
|
+
|
|
72
|
+
for (auto &wrappedElement : getPreviousBuffer()) {
|
|
73
|
+
if (isInsideTimeWindow(wrappedElement, windowRightBoundary)) {
|
|
74
|
+
result.push_back(std::move(wrappedElement.element));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
for (auto &wrappedElement : getCurrentBuffer()) {
|
|
79
|
+
if (isInsideTimeWindow(wrappedElement, windowRightBoundary)) {
|
|
80
|
+
result.push_back(std::move(wrappedElement.element));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
clear();
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private:
|
|
89
|
+
enum class BufferIndex { Primary, Alternative };
|
|
90
|
+
|
|
91
|
+
struct TimestampedElement {
|
|
92
|
+
T element;
|
|
93
|
+
HighResTimeStamp timestamp;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
std::vector<TimestampedElement> &getCurrentBuffer()
|
|
97
|
+
{
|
|
98
|
+
return currentBufferIndex_ == BufferIndex::Primary ? primaryBuffer_ : alternativeBuffer_;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
std::vector<TimestampedElement> &getPreviousBuffer()
|
|
102
|
+
{
|
|
103
|
+
return currentBufferIndex_ == BufferIndex::Primary ? alternativeBuffer_ : primaryBuffer_;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
void enqueueElement(const T &element, HighResTimeStamp timestamp)
|
|
107
|
+
{
|
|
108
|
+
if (windowSize_) {
|
|
109
|
+
if (currentBufferStartTime_ == kCurrentBufferStartTimeUninitialized) {
|
|
110
|
+
currentBufferStartTime_ = timestamp;
|
|
111
|
+
} else if (timestamp > currentBufferStartTime_ + *windowSize_) {
|
|
112
|
+
// We moved past the current buffer. We need to switch the other buffer as current.
|
|
113
|
+
currentBufferIndex_ =
|
|
114
|
+
currentBufferIndex_ == BufferIndex::Primary ? BufferIndex::Alternative : BufferIndex::Primary;
|
|
115
|
+
getCurrentBuffer().clear();
|
|
116
|
+
currentBufferStartTime_ = timestamp;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
getCurrentBuffer().push_back({element, timestamp});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
void enqueueElement(T &&element, HighResTimeStamp timestamp)
|
|
124
|
+
{
|
|
125
|
+
if (windowSize_) {
|
|
126
|
+
if (currentBufferStartTime_ == kCurrentBufferStartTimeUninitialized) {
|
|
127
|
+
currentBufferStartTime_ = timestamp;
|
|
128
|
+
} else if (timestamp > currentBufferStartTime_ + *windowSize_) {
|
|
129
|
+
// We moved past the current buffer. We need to switch the other buffer as current.
|
|
130
|
+
currentBufferIndex_ =
|
|
131
|
+
currentBufferIndex_ == BufferIndex::Primary ? BufferIndex::Alternative : BufferIndex::Primary;
|
|
132
|
+
getCurrentBuffer().clear();
|
|
133
|
+
currentBufferStartTime_ = timestamp;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
getCurrentBuffer().push_back({std::move(element), timestamp});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
bool isInsideTimeWindow(const TimestampedElement &element, HighResTimeStamp windowRightBoundary) const
|
|
141
|
+
{
|
|
142
|
+
if (!windowSize_) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return element.timestamp >= windowRightBoundary - *windowSize_ && element.timestamp <= windowRightBoundary;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
std::optional<TimestampAccessor> timestampAccessor_;
|
|
150
|
+
std::optional<HighResDuration> windowSize_;
|
|
151
|
+
|
|
152
|
+
std::vector<TimestampedElement> primaryBuffer_;
|
|
153
|
+
std::vector<TimestampedElement> alternativeBuffer_;
|
|
154
|
+
BufferIndex currentBufferIndex_ = BufferIndex::Primary;
|
|
155
|
+
HighResTimeStamp currentBufferStartTime_{kCurrentBufferStartTimeUninitialized};
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
} // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
|
+
#include <jsinspector-modern/tracing/TracingCategory.h>
|
|
10
11
|
#include <react/timing/primitives.h>
|
|
11
12
|
|
|
12
13
|
#include <folly/dynamic.h>
|
|
@@ -40,7 +41,7 @@ struct TraceEvent {
|
|
|
40
41
|
* A comma separated list of categories for the event, configuring how
|
|
41
42
|
* events are shown in the Trace Viewer UI.
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
|
+
Categories cat;
|
|
44
45
|
|
|
45
46
|
/**
|
|
46
47
|
* The event type. This is a single character which changes depending on the
|