@office-iss/react-native-win32 0.0.0-canary.297 → 0.0.0-canary.299
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 +8 -4
- package/CHANGELOG.json +55 -1
- package/CHANGELOG.md +25 -5
- package/IntegrationTests/AccessibilityManagerTest.js +1 -1
- package/IntegrationTests/AppEventsTest.js +1 -1
- package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
- package/IntegrationTests/ImageCachePolicyTest.js +2 -2
- package/IntegrationTests/ImageSnapshotTest.js +1 -1
- package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
- package/IntegrationTests/IntegrationTestsApp.js +2 -1
- package/IntegrationTests/LayoutEventsTest.js +1 -1
- package/IntegrationTests/LoggingTestModule.js +16 -20
- package/IntegrationTests/PromiseTest.js +1 -1
- package/IntegrationTests/SimpleSnapshotTest.js +1 -1
- package/IntegrationTests/SyncMethodTest.js +1 -1
- package/IntegrationTests/TimersTest.js +2 -1
- package/IntegrationTests/WebSocketTest.js +2 -1
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.js +3 -3
- package/Libraries/Alert/Alert.win32.js +1 -1
- 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/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js +2 -2
- package/Libraries/Animated/AnimatedExports.js.flow +5 -0
- 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 +6 -1
- package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
- package/Libraries/Animated/components/AnimatedScrollView.js +6 -5
- package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
- package/Libraries/Animated/components/AnimatedText.js +2 -5
- package/Libraries/Animated/components/AnimatedView.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +2 -4
- package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
- package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
- package/Libraries/AppState/NativeAppState.js +1 -0
- 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/NativeAccessibilityInfoWin32.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.win32.js +1 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
- package/Libraries/Components/Button.js +8 -5
- package/Libraries/Components/Button.win32.js +8 -5
- 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 +1 -1
- 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/Keyboard/Keyboard.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
- package/Libraries/Components/Pressable/Pressable.js +8 -2
- package/Libraries/Components/Pressable/Pressable.win32.js +8 -8
- 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/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/SafeAreaView/SafeAreaView.win32.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 +24 -1
- package/Libraries/Components/ScrollView/ScrollView.js +7 -3
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- 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 +2 -1
- package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -19
- 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 +12 -10
- package/Libraries/Components/TextInput/TextInput.flow.win32.js +11 -9
- package/Libraries/Components/TextInput/TextInput.js +16 -14
- package/Libraries/Components/TextInput/TextInput.win32.js +42 -13
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
- 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/ToastAndroid.win32.js +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.win32.js +17 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +3 -2
- package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +3 -2
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
- package/Libraries/Components/View/View.js +18 -19
- package/Libraries/Components/View/View.win32.js +17 -3
- package/Libraries/Components/View/ViewAccessibility.js +1 -8
- package/Libraries/Components/View/ViewAccessibility.win32.js +1 -8
- package/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
- package/Libraries/Components/View/ViewPropTypes.js +9 -1
- package/Libraries/Components/View/ViewPropTypes.win32.js +9 -1
- package/Libraries/Core/Devtools/getDevServer.js +1 -1
- 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 +29 -16
- package/Libraries/Core/InitializeCore.js +1 -1
- package/Libraries/Core/NativeExceptionsManager.js +1 -0
- package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- 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 +6 -6
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -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/Image.android.js +3 -3
- 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/NativeImageLoaderWin32.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/RelativeImageStub.js +2 -2
- package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Interaction/FrameRateLogger.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +68 -54
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/TaskQueue.js +22 -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.js +5 -6
- package/Libraries/Lists/SectionList.js +4 -4
- 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/Modal/Modal.d.ts +8 -2
- package/Libraries/Modal/Modal.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.win32.js +8 -17
- 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/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.win32.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +5 -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.win32.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.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/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -2
- 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 +3 -12
- package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +3 -12
- 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/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +3 -1
- package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
- package/Libraries/StyleSheet/processColor.js +1 -1
- package/Libraries/StyleSheet/processColorArray.js +1 -1
- package/Libraries/StyleSheet/processFilter.js +1 -1
- 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.js +5 -7
- package/Libraries/Text/Text.win32.js +1 -1
- package/Libraries/Text/TextAncestor.js +3 -10
- package/Libraries/Text/TextAncestorContext.js +23 -0
- package/Libraries/Text/TextNativeComponent.js +4 -0
- package/Libraries/Text/TextNativeComponent.win32.js +4 -0
- package/Libraries/Text/TextProps.js +2 -2
- package/Libraries/Text/TextProps.win32.js +2 -2
- 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/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/Dimensions.win32.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/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.win32.js +2 -5
- package/Libraries/Utilities/PlatformTypes.js +1 -1
- 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 +59 -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/index.js +22 -1
- package/index.win32.js +15 -2
- 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 +24 -14
- package/jest/mocks/AccessibilityInfo.js +62 -0
- package/jest/mocks/ActivityIndicator.js +23 -0
- package/jest/mocks/AppState.js +19 -0
- package/{flow/Stringish.js → jest/mocks/Clipboard.js} +6 -4
- 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 -1
- package/jest/resolver.js +1 -0
- package/jest/setup.js +64 -445
- package/overrides.json +38 -38
- package/package.json +14 -14
- package/src/private/animated/NativeAnimatedHelper.js +2 -0
- package/src/private/animated/NativeAnimatedHelper.win32.js +2 -0
- package/src/private/animated/createAnimatedPropsHook.js +4 -1
- package/src/private/animated/createAnimatedPropsMemoHook.js +2 -2
- 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/featureflags/ReactNativeFeatureFlags.js +75 -30
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -5
- package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
- 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/nodes/ReactNativeDocument.js +1 -1
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +1 -1
- 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 +1 -1
- 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/oldstylecollections/HTMLCollection.js +1 -1
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +1 -1
- package/src/private/webapis/errors/DOMException.js +1 -1
- package/src/private/webapis/geometry/DOMRectList.js +1 -1
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +4 -1
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +2 -17
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +19 -73
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -7
- package/src/private/webapis/performance/EventTiming.js +1 -1
- package/src/private/webapis/performance/LongTasks.js +1 -1
- package/src/private/webapis/performance/Performance.js +165 -62
- package/src/private/webapis/performance/PerformanceEntry.js +21 -17
- package/src/private/webapis/performance/PerformanceObserver.js +32 -28
- package/src/private/webapis/performance/ResourceTiming.js +108 -0
- package/src/private/webapis/performance/UserTiming.js +61 -9
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +48 -33
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +13 -1
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
- 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/flow/HermesInternalType.js +0 -114
- package/flow/console.js +0 -49
- package/flow/global.js +0 -88
- package/jest/mockModal.js +0 -32
- package/jest/mockScrollView.js +0 -35
- package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
|
@@ -16,7 +16,6 @@ import type MutationRecord from './MutationRecord';
|
|
|
16
16
|
import ReactNativeElement from '../dom/nodes/ReactNativeElement';
|
|
17
17
|
import {setPlatformObject} from '../webidl/PlatformObjects';
|
|
18
18
|
import * as MutationObserverManager from './internals/MutationObserverManager';
|
|
19
|
-
import nullthrows from 'nullthrows';
|
|
20
19
|
|
|
21
20
|
export type MutationObserverCallback = (
|
|
22
21
|
mutationRecords: $ReadOnlyArray<MutationRecord>,
|
|
@@ -118,15 +117,11 @@ export default class MutationObserver {
|
|
|
118
117
|
|
|
119
118
|
const mutationObserverId = this._getOrCreateMutationObserverId();
|
|
120
119
|
|
|
121
|
-
|
|
120
|
+
MutationObserverManager.observe({
|
|
122
121
|
mutationObserverId,
|
|
123
122
|
target,
|
|
124
123
|
subtree: Boolean(options?.subtree),
|
|
125
124
|
});
|
|
126
|
-
|
|
127
|
-
if (didStartObserving && !MutationObserverManager.unobserveAll) {
|
|
128
|
-
this._observationTargets.add(target);
|
|
129
|
-
}
|
|
130
125
|
}
|
|
131
126
|
|
|
132
127
|
/**
|
|
@@ -139,17 +134,7 @@ export default class MutationObserver {
|
|
|
139
134
|
return;
|
|
140
135
|
}
|
|
141
136
|
|
|
142
|
-
|
|
143
|
-
MutationObserverManager.unobserveAll(mutationObserverId);
|
|
144
|
-
} else if (MutationObserverManager.unobserve) {
|
|
145
|
-
for (const target of this._observationTargets.keys()) {
|
|
146
|
-
nullthrows(MutationObserverManager.unobserve)(
|
|
147
|
-
mutationObserverId,
|
|
148
|
-
target,
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
this._observationTargets.clear();
|
|
152
|
-
}
|
|
137
|
+
MutationObserverManager.unobserveAll(mutationObserverId);
|
|
153
138
|
|
|
154
139
|
MutationObserverManager.unregisterObserver(mutationObserverId);
|
|
155
140
|
this._mutationObserverId = null;
|
|
@@ -41,14 +41,6 @@ const registeredMutationObservers: Map<
|
|
|
41
41
|
$ReadOnly<{observer: MutationObserver, callback: MutationObserverCallback}>,
|
|
42
42
|
> = new Map();
|
|
43
43
|
|
|
44
|
-
// The mapping between ReactNativeElement and their corresponding shadow node
|
|
45
|
-
// needs to be kept here because React removes the link when unmounting.
|
|
46
|
-
// TODO: remove this code when NativeMutationObserver.unobserveAll is available in all apps
|
|
47
|
-
const targetToShadowNodeMap: WeakMap<
|
|
48
|
-
ReactNativeElement,
|
|
49
|
-
ReturnType<typeof getNativeNodeReference>,
|
|
50
|
-
> = new WeakMap();
|
|
51
|
-
|
|
52
44
|
/**
|
|
53
45
|
* Registers the given mutation observer and returns a unique ID for it,
|
|
54
46
|
* which is required to start observing targets.
|
|
@@ -91,10 +83,10 @@ export function observe({
|
|
|
91
83
|
mutationObserverId: MutationObserverId,
|
|
92
84
|
target: ReactNativeElement,
|
|
93
85
|
subtree: boolean,
|
|
94
|
-
}):
|
|
86
|
+
}): void {
|
|
95
87
|
if (NativeMutationObserver == null) {
|
|
96
88
|
warnNoNativeMutationObserver();
|
|
97
|
-
return
|
|
89
|
+
return;
|
|
98
90
|
}
|
|
99
91
|
|
|
100
92
|
const registeredObserver =
|
|
@@ -103,19 +95,13 @@ export function observe({
|
|
|
103
95
|
console.error(
|
|
104
96
|
`MutationObserverManager: could not start observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
|
|
105
97
|
);
|
|
106
|
-
return
|
|
98
|
+
return;
|
|
107
99
|
}
|
|
108
100
|
|
|
109
101
|
const targetShadowNode = getNativeNodeReference(target);
|
|
110
102
|
if (targetShadowNode == null) {
|
|
111
103
|
// The target is disconnected. We can't observe it anymore.
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// We need to keep this temporarily until the changes in the native module have propagated.
|
|
116
|
-
// After that, we don't need to keep this mapping that can cause memory leaks.
|
|
117
|
-
if (!nativeUnobserveAll) {
|
|
118
|
-
targetToShadowNodeMap.set(target, targetShadowNode);
|
|
104
|
+
return;
|
|
119
105
|
}
|
|
120
106
|
|
|
121
107
|
if (!isConnected) {
|
|
@@ -136,65 +122,25 @@ export function observe({
|
|
|
136
122
|
targetShadowNode,
|
|
137
123
|
subtree,
|
|
138
124
|
});
|
|
139
|
-
|
|
140
|
-
return true;
|
|
141
125
|
}
|
|
142
126
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
target: ReactNativeElement,
|
|
149
|
-
) => void = nativeUnobserve
|
|
150
|
-
? function unobserve(
|
|
151
|
-
mutationObserverId: number,
|
|
152
|
-
target: ReactNativeElement,
|
|
153
|
-
): void {
|
|
154
|
-
if (NativeMutationObserver == null) {
|
|
155
|
-
warnNoNativeMutationObserver();
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const registeredObserver =
|
|
160
|
-
registeredMutationObservers.get(mutationObserverId);
|
|
161
|
-
if (registeredObserver == null) {
|
|
162
|
-
console.error(
|
|
163
|
-
`MutationObserverManager: could not stop observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
|
|
164
|
-
);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const targetShadowNode = targetToShadowNodeMap.get(target);
|
|
169
|
-
if (targetShadowNode == null) {
|
|
170
|
-
console.error(
|
|
171
|
-
'MutationObserverManager: could not find registration data for target',
|
|
172
|
-
);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
nativeUnobserve(mutationObserverId, targetShadowNode);
|
|
177
|
-
}
|
|
178
|
-
: null;
|
|
179
|
-
|
|
180
|
-
const nativeUnobserveAll = NativeMutationObserver?.unobserveAll;
|
|
127
|
+
export function unobserveAll(mutationObserverId: number): void {
|
|
128
|
+
if (NativeMutationObserver == null) {
|
|
129
|
+
warnNoNativeMutationObserver();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
181
132
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
`MutationObserverManager: could not stop observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
|
|
191
|
-
);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
133
|
+
const registeredObserver =
|
|
134
|
+
registeredMutationObservers.get(mutationObserverId);
|
|
135
|
+
if (registeredObserver == null) {
|
|
136
|
+
console.error(
|
|
137
|
+
`MutationObserverManager: could not disconnect MutationObserver with ID ${mutationObserverId} because it was not registered.`,
|
|
138
|
+
);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
194
141
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
: null;
|
|
142
|
+
NativeMutationObserver.unobserveAll(mutationObserverId);
|
|
143
|
+
}
|
|
198
144
|
|
|
199
145
|
/**
|
|
200
146
|
* This function is called from native when there are `MutationObserver`
|
|
@@ -36,13 +36,7 @@ export type NativeMutationObserverObserveOptions = {
|
|
|
36
36
|
|
|
37
37
|
export interface Spec extends TurboModule {
|
|
38
38
|
+observe: (options: NativeMutationObserverObserveOptions) => void;
|
|
39
|
-
|
|
40
|
-
+unobserve?: (
|
|
41
|
-
mutationObserverId: number,
|
|
42
|
-
targetShadowNode: ShadowNode,
|
|
43
|
-
) => void;
|
|
44
|
-
// TODO: remove optionality in the next version
|
|
45
|
-
+unobserveAll?: (mutationObserverId: number) => void;
|
|
39
|
+
+unobserveAll: (mutationObserverId: number) => void;
|
|
46
40
|
+connect: (
|
|
47
41
|
notifyMutationObservers: () => void,
|
|
48
42
|
// We need this to retain the public instance before React removes the
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @format
|
|
8
7
|
* @flow strict
|
|
8
|
+
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
// flowlint unsafe-getters-setters:off
|
|
@@ -18,6 +18,7 @@ import type {
|
|
|
18
18
|
import type {DetailType, PerformanceMarkOptions} from './UserTiming';
|
|
19
19
|
|
|
20
20
|
import DOMException from '../errors/DOMException';
|
|
21
|
+
import structuredClone from '../structuredClone/structuredClone';
|
|
21
22
|
import {setPlatformObject} from '../webidl/PlatformObjects';
|
|
22
23
|
import {EventCounts} from './EventTiming';
|
|
23
24
|
import {
|
|
@@ -38,12 +39,17 @@ declare var global: {
|
|
|
38
39
|
const getCurrentTimeStamp: () => DOMHighResTimeStamp =
|
|
39
40
|
NativePerformance?.now ?? global.nativePerformanceNow ?? (() => Date.now());
|
|
40
41
|
|
|
41
|
-
export type PerformanceMeasureOptions =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
42
|
+
export type PerformanceMeasureOptions =
|
|
43
|
+
| {
|
|
44
|
+
detail?: DetailType,
|
|
45
|
+
start?: DOMHighResTimeStamp | string,
|
|
46
|
+
duration?: DOMHighResTimeStamp,
|
|
47
|
+
}
|
|
48
|
+
| {
|
|
49
|
+
detail?: DetailType,
|
|
50
|
+
start?: DOMHighResTimeStamp | string,
|
|
51
|
+
end?: DOMHighResTimeStamp | string,
|
|
52
|
+
};
|
|
47
53
|
|
|
48
54
|
const ENTRY_TYPES_AVAILABLE_FROM_TIMELINE: $ReadOnlyArray<PerformanceEntryType> =
|
|
49
55
|
['mark', 'measure'];
|
|
@@ -111,11 +117,39 @@ export default class Performance {
|
|
|
111
117
|
markName: string,
|
|
112
118
|
markOptions?: PerformanceMarkOptions,
|
|
113
119
|
): PerformanceMark {
|
|
120
|
+
if (markName == null) {
|
|
121
|
+
throw new TypeError(
|
|
122
|
+
`Failed to execute 'mark' on 'Performance': 1 argument required, but only 0 present.`,
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
let resolvedDetail;
|
|
127
|
+
if (markOptions?.detail != null) {
|
|
128
|
+
resolvedDetail = structuredClone(markOptions.detail);
|
|
129
|
+
}
|
|
130
|
+
|
|
114
131
|
let computedStartTime;
|
|
115
132
|
if (NativePerformance?.markWithResult) {
|
|
133
|
+
let resolvedStartTime;
|
|
134
|
+
|
|
135
|
+
const startTime = markOptions?.startTime;
|
|
136
|
+
if (startTime !== undefined) {
|
|
137
|
+
resolvedStartTime = Number(startTime);
|
|
138
|
+
if (resolvedStartTime < 0) {
|
|
139
|
+
throw new TypeError(
|
|
140
|
+
`Failed to execute 'mark' on 'Performance': '${markName}' cannot have a negative start time.`,
|
|
141
|
+
);
|
|
142
|
+
} else if (!Number.isFinite(resolvedStartTime)) {
|
|
143
|
+
throw new TypeError(
|
|
144
|
+
`Failed to execute 'mark' on 'Performance': Failed to read the 'startTime' property from 'PerformanceMarkOptions': The provided double value is non-finite.`,
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// $FlowExpectedError[not-a-function]
|
|
116
150
|
computedStartTime = NativePerformance.markWithResult(
|
|
117
151
|
markName,
|
|
118
|
-
|
|
152
|
+
resolvedStartTime,
|
|
119
153
|
);
|
|
120
154
|
} else {
|
|
121
155
|
warnNoNativePerformance();
|
|
@@ -124,7 +158,7 @@ export default class Performance {
|
|
|
124
158
|
|
|
125
159
|
return new PerformanceMark(markName, {
|
|
126
160
|
startTime: computedStartTime,
|
|
127
|
-
detail:
|
|
161
|
+
detail: resolvedDetail,
|
|
128
162
|
});
|
|
129
163
|
}
|
|
130
164
|
|
|
@@ -142,66 +176,135 @@ export default class Performance {
|
|
|
142
176
|
startMarkOrOptions?: string | PerformanceMeasureOptions,
|
|
143
177
|
endMark?: string,
|
|
144
178
|
): PerformanceMeasure {
|
|
145
|
-
let
|
|
146
|
-
let
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
179
|
+
let resolvedStartTime: number | void;
|
|
180
|
+
let resolvedStartMark: string | void;
|
|
181
|
+
let resolvedEndTime: number | void;
|
|
182
|
+
let resolvedEndMark: string | void;
|
|
183
|
+
let resolvedDuration: number | void;
|
|
184
|
+
let resolvedDetail: mixed;
|
|
185
|
+
|
|
186
|
+
if (startMarkOrOptions != null) {
|
|
187
|
+
switch (typeof startMarkOrOptions) {
|
|
188
|
+
case 'object': {
|
|
189
|
+
if (endMark != null) {
|
|
190
|
+
throw new TypeError(
|
|
191
|
+
`Failed to execute 'measure' on 'Performance': If a non-empty PerformanceMeasureOptions object was passed, |end_mark| must not be passed.`,
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const start = startMarkOrOptions.start;
|
|
196
|
+
switch (typeof start) {
|
|
197
|
+
case 'number': {
|
|
198
|
+
resolvedStartTime = start;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case 'string': {
|
|
202
|
+
resolvedStartMark = start;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case 'undefined': {
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
default: {
|
|
209
|
+
resolvedStartMark = String(start);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const end = startMarkOrOptions.end;
|
|
214
|
+
switch (typeof end) {
|
|
215
|
+
case 'number': {
|
|
216
|
+
resolvedEndTime = end;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
case 'string': {
|
|
220
|
+
resolvedEndMark = end;
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case 'undefined': {
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
default: {
|
|
227
|
+
resolvedEndMark = String(end);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const duration = startMarkOrOptions.duration;
|
|
232
|
+
switch (typeof duration) {
|
|
233
|
+
case 'number': {
|
|
234
|
+
resolvedDuration = duration;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case 'undefined':
|
|
238
|
+
break;
|
|
239
|
+
default: {
|
|
240
|
+
resolvedDuration = Number(duration);
|
|
241
|
+
if (!Number.isFinite(resolvedDuration)) {
|
|
242
|
+
throw new TypeError(
|
|
243
|
+
`Failed to execute 'measure' on 'Performance': Failed to read the 'duration' property from 'PerformanceMeasureOptions': The provided double value is non-finite.`,
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (
|
|
250
|
+
resolvedDuration != null &&
|
|
251
|
+
(resolvedEndMark != null || resolvedEndTime != null)
|
|
252
|
+
) {
|
|
253
|
+
throw new TypeError(
|
|
254
|
+
`Failed to execute 'measure' on 'Performance': If a non-empty PerformanceMeasureOptions object was passed, it must not have all of its 'start', 'duration', and 'end' properties defined`,
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const detail = startMarkOrOptions.detail;
|
|
259
|
+
if (detail != null) {
|
|
260
|
+
resolvedDetail = structuredClone(detail);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case 'string': {
|
|
266
|
+
resolvedStartMark = startMarkOrOptions;
|
|
267
|
+
|
|
268
|
+
if (endMark !== undefined) {
|
|
269
|
+
resolvedEndMark = String(endMark);
|
|
270
|
+
}
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
default: {
|
|
274
|
+
resolvedStartMark = String(startMarkOrOptions);
|
|
275
|
+
}
|
|
166
276
|
}
|
|
167
|
-
if (
|
|
168
|
-
options.start !== undefined &&
|
|
169
|
-
options.end !== undefined &&
|
|
170
|
-
options.duration !== undefined
|
|
171
|
-
) {
|
|
172
|
-
throw new TypeError(
|
|
173
|
-
"Performance.measure: Can't have both start/end and duration explicitly in options",
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (typeof options.start === 'number') {
|
|
178
|
-
startTime = options.start;
|
|
179
|
-
} else {
|
|
180
|
-
startMarkName = options.start;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if (typeof options.end === 'number') {
|
|
184
|
-
endTime = options.end;
|
|
185
|
-
} else {
|
|
186
|
-
endMarkName = options.end;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
duration = options.duration ?? duration;
|
|
190
277
|
}
|
|
191
278
|
|
|
192
|
-
let computedStartTime =
|
|
193
|
-
let computedDuration =
|
|
279
|
+
let computedStartTime = 0;
|
|
280
|
+
let computedDuration = 0;
|
|
194
281
|
|
|
195
|
-
if (NativePerformance?.
|
|
282
|
+
if (NativePerformance?.measure) {
|
|
283
|
+
try {
|
|
284
|
+
[computedStartTime, computedDuration] = NativePerformance.measure(
|
|
285
|
+
measureName,
|
|
286
|
+
resolvedStartTime,
|
|
287
|
+
resolvedEndTime,
|
|
288
|
+
resolvedDuration,
|
|
289
|
+
resolvedStartMark,
|
|
290
|
+
resolvedEndMark,
|
|
291
|
+
);
|
|
292
|
+
} catch (error) {
|
|
293
|
+
throw new DOMException(
|
|
294
|
+
"Failed to execute 'measure' on 'Performance': " + error.message,
|
|
295
|
+
'SyntaxError',
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
} else if (NativePerformance?.measureWithResult) {
|
|
196
299
|
try {
|
|
197
300
|
[computedStartTime, computedDuration] =
|
|
198
301
|
NativePerformance.measureWithResult(
|
|
199
302
|
measureName,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
303
|
+
resolvedStartTime ?? 0,
|
|
304
|
+
resolvedEndTime ?? 0,
|
|
305
|
+
resolvedDuration,
|
|
306
|
+
resolvedStartMark,
|
|
307
|
+
resolvedEndMark,
|
|
205
308
|
);
|
|
206
309
|
} catch (error) {
|
|
207
310
|
throw new DOMException(
|
|
@@ -216,7 +319,7 @@ export default class Performance {
|
|
|
216
319
|
const measure = new PerformanceMeasure(measureName, {
|
|
217
320
|
startTime: computedStartTime,
|
|
218
321
|
duration: computedDuration ?? 0,
|
|
219
|
-
detail:
|
|
322
|
+
detail: resolvedDetail,
|
|
220
323
|
});
|
|
221
324
|
|
|
222
325
|
return measure;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @format
|
|
8
7
|
* @flow strict
|
|
8
|
+
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
// flowlint unsafe-getters-setters:off
|
|
@@ -29,10 +29,14 @@ export type PerformanceEntryJSON = {
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
export class PerformanceEntry {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
// We don't use private fields because they're significantly slower to
|
|
33
|
+
// initialize on construction and to access.
|
|
34
|
+
// We also need these to be protected so they can be initialized in subclasses
|
|
35
|
+
// where we avoid calling `super()` for performance reasons.
|
|
36
|
+
__name: string;
|
|
37
|
+
__entryType: PerformanceEntryType;
|
|
38
|
+
__startTime: DOMHighResTimeStamp;
|
|
39
|
+
__duration: DOMHighResTimeStamp;
|
|
36
40
|
|
|
37
41
|
constructor(init: {
|
|
38
42
|
name: string,
|
|
@@ -40,34 +44,34 @@ export class PerformanceEntry {
|
|
|
40
44
|
startTime: DOMHighResTimeStamp,
|
|
41
45
|
duration: DOMHighResTimeStamp,
|
|
42
46
|
}) {
|
|
43
|
-
this
|
|
44
|
-
this
|
|
45
|
-
this
|
|
46
|
-
this
|
|
47
|
+
this.__name = init.name;
|
|
48
|
+
this.__entryType = init.entryType;
|
|
49
|
+
this.__startTime = init.startTime;
|
|
50
|
+
this.__duration = init.duration;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
get name(): string {
|
|
50
|
-
return this
|
|
54
|
+
return this.__name;
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
get entryType(): PerformanceEntryType {
|
|
54
|
-
return this
|
|
58
|
+
return this.__entryType;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
get startTime(): DOMHighResTimeStamp {
|
|
58
|
-
return this
|
|
62
|
+
return this.__startTime;
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
get duration(): DOMHighResTimeStamp {
|
|
62
|
-
return this
|
|
66
|
+
return this.__duration;
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
toJSON(): PerformanceEntryJSON {
|
|
66
70
|
return {
|
|
67
|
-
name: this
|
|
68
|
-
entryType: this
|
|
69
|
-
startTime: this
|
|
70
|
-
duration: this
|
|
71
|
+
name: this.__name,
|
|
72
|
+
entryType: this.__entryType,
|
|
73
|
+
startTime: this.__startTime,
|
|
74
|
+
duration: this.__duration,
|
|
71
75
|
};
|
|
72
76
|
}
|
|
73
77
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @format
|
|
8
7
|
* @flow strict
|
|
8
|
+
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type {
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
} from './internals/RawPerformanceEntry';
|
|
24
24
|
import {warnNoNativePerformance} from './internals/Utilities';
|
|
25
25
|
import NativePerformance from './specs/NativePerformance';
|
|
26
|
+
import nullthrows from 'nullthrows';
|
|
26
27
|
|
|
27
28
|
export {PerformanceEntry} from './PerformanceEntry';
|
|
28
29
|
|
|
@@ -130,14 +131,16 @@ export class PerformanceObserver {
|
|
|
130
131
|
this.#nativeObserverHandle = this.#createNativeObserver();
|
|
131
132
|
}
|
|
132
133
|
|
|
134
|
+
const observerHandle = nullthrows(this.#nativeObserverHandle);
|
|
135
|
+
|
|
133
136
|
if (options.entryTypes) {
|
|
134
137
|
this.#type = 'multiple';
|
|
135
|
-
NativePerformance.observe?.(
|
|
138
|
+
NativePerformance.observe?.(observerHandle, {
|
|
136
139
|
entryTypes: options.entryTypes.map(performanceEntryTypeToRaw),
|
|
137
140
|
});
|
|
138
141
|
} else if (options.type) {
|
|
139
142
|
this.#type = 'single';
|
|
140
|
-
NativePerformance.observe?.(
|
|
143
|
+
NativePerformance.observe?.(observerHandle, {
|
|
141
144
|
type: performanceEntryTypeToRaw(options.type),
|
|
142
145
|
buffered: options.buffered,
|
|
143
146
|
durationThreshold: options.durationThreshold,
|
|
@@ -158,37 +161,38 @@ export class PerformanceObserver {
|
|
|
158
161
|
NativePerformance.disconnect(this.#nativeObserverHandle);
|
|
159
162
|
}
|
|
160
163
|
|
|
161
|
-
#createNativeObserver(): OpaqueNativeObserverHandle {
|
|
164
|
+
#createNativeObserver(): OpaqueNativeObserverHandle | null {
|
|
162
165
|
if (!NativePerformance || !NativePerformance.createObserver) {
|
|
163
166
|
warnNoNativePerformance();
|
|
164
|
-
return;
|
|
167
|
+
return null;
|
|
165
168
|
}
|
|
166
169
|
|
|
167
170
|
this.#calledAtLeastOnce = false;
|
|
168
171
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
172
|
+
const observerHandle: OpaqueNativeObserverHandle =
|
|
173
|
+
NativePerformance.createObserver(() => {
|
|
174
|
+
const rawEntries = NativePerformance.takeRecords?.(
|
|
175
|
+
observerHandle,
|
|
176
|
+
true, // sort records
|
|
177
|
+
);
|
|
178
|
+
if (!rawEntries) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const entries = rawEntries.map(rawToPerformanceEntry);
|
|
183
|
+
const entryList = new PerformanceObserverEntryList(entries);
|
|
184
|
+
|
|
185
|
+
let droppedEntriesCount = 0;
|
|
186
|
+
if (!this.#calledAtLeastOnce) {
|
|
187
|
+
droppedEntriesCount =
|
|
188
|
+
NativePerformance.getDroppedEntriesCount?.(observerHandle) ?? 0;
|
|
189
|
+
this.#calledAtLeastOnce = true;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
this.#callback(entryList, this, {droppedEntriesCount});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
return observerHandle;
|
|
192
196
|
}
|
|
193
197
|
|
|
194
198
|
#validateObserveOptions(options: PerformanceObserverInit): void {
|