@office-iss/react-native-win32 0.71.5 → 0.72.0-preview.2
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 +15 -3
- package/CHANGELOG.json +321 -45
- package/CHANGELOG.md +149 -26
- package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
- package/Libraries/Alert/Alert.d.ts +4 -4
- package/Libraries/Alert/Alert.win32.js +1 -0
- package/Libraries/Animated/Animated.d.ts +17 -6
- package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
- package/Libraries/Animated/bezier.js +1 -1
- package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
- package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
- package/Libraries/Animated/createAnimatedComponent.js +26 -239
- package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
- package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
- package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
- package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
- package/Libraries/Animated/useAnimatedProps.js +7 -10
- package/Libraries/BatchedBridge/MessageQueue.js +2 -1
- package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -0
- package/Libraries/Blob/Blob.js +4 -0
- package/Libraries/Blob/FileReader.js +30 -2
- package/Libraries/Blob/URL.js +3 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
- package/Libraries/Components/Button.js +3 -2
- package/Libraries/Components/Button.win32.js +451 -0
- package/Libraries/Components/Clipboard/Clipboard.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
- package/Libraries/Components/Pressable/Pressable.js +1 -1
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
- package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
- package/Libraries/Components/ScrollView/ScrollView.js +149 -91
- package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +3 -0
- package/Libraries/Components/Switch/Switch.js +3 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
- package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
- package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
- package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
- package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
- package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
- package/Libraries/Components/TextInput/TextInput.js +130 -103
- package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
- package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
- package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
- package/Libraries/Components/Touchable/Touchable.js +6 -3
- package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +179 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
- package/Libraries/Components/View/View.js +35 -16
- package/Libraries/Components/View/View.win32.js +38 -16
- package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
- package/Libraries/Components/View/ViewAccessibility.js +10 -1
- package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
- package/Libraries/Components/View/ViewNativeComponent.js +32 -8
- package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
- package/Libraries/Components/View/ViewPropTypes.js +1 -1
- package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
- package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
- package/Libraries/Components/View/ViewWin32.js +2 -35
- package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
- package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
- package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/InitializeCore.js +2 -1
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +4 -8
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +4 -8
- package/Libraries/Core/Timers/JSTimers.js +1 -1
- package/Libraries/Core/Timers/immediateShim.js +1 -0
- package/Libraries/Core/Timers/queueMicrotask.js +1 -1
- package/Libraries/Core/setUpAlert.js +1 -1
- package/Libraries/Core/setUpDOM.js +18 -0
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpGlobals.js +5 -2
- package/Libraries/Core/setUpNavigator.js +6 -5
- package/Libraries/Core/setUpPerformance.js +23 -13
- package/Libraries/Core/setUpReactDevTools.js +2 -0
- package/Libraries/Core/setUpSegmentFetcher.js +0 -41
- package/Libraries/Core/setUpTimers.js +2 -2
- package/Libraries/DOM/Geometry/DOMRect.js +82 -0
- package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
- package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
- package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
- package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
- package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
- package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
- package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
- package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +24 -0
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
- package/Libraries/Events/EventPolyfill.js +1 -1
- package/Libraries/Image/AssetRegistry.js +1 -1
- package/Libraries/Image/AssetSourceResolver.js +3 -3
- package/Libraries/Image/Image.android.js +4 -1
- package/Libraries/Image/Image.d.ts +63 -2
- package/Libraries/Image/Image.ios.js +3 -0
- package/Libraries/Image/Image.win32.js +3 -0
- package/Libraries/Image/ImageBackground.js +1 -0
- package/Libraries/Image/ImageProps.js +1 -1
- package/Libraries/Image/ImageViewNativeComponent.js +4 -4
- package/Libraries/Image/RelativeImageStub.js +1 -1
- package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Inspector/DevtoolsOverlay.js +26 -19
- package/Libraries/Inspector/ElementBox.js +4 -1
- package/Libraries/Inspector/Inspector.js +5 -6
- package/Libraries/Inspector/Inspector.win32.js +7 -6
- package/Libraries/Inspector/InspectorOverlay.js +3 -3
- package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
- package/Libraries/Inspector/NetworkOverlay.js +1 -1
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
- package/Libraries/Interaction/PanResponder.js +5 -6
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
- package/Libraries/Linking/Linking.js +1 -4
- package/Libraries/Lists/FillRateHelper.js +4 -238
- package/Libraries/Lists/FlatList.d.ts +15 -22
- package/Libraries/Lists/FlatList.js +9 -6
- package/Libraries/Lists/SectionList.d.ts +10 -6
- package/Libraries/Lists/SectionList.js +5 -3
- package/Libraries/Lists/SectionListModern.js +3 -3
- package/Libraries/Lists/ViewabilityHelper.js +8 -344
- package/Libraries/Lists/VirtualizeUtils.js +4 -244
- package/Libraries/Lists/VirtualizedList.js +10 -1867
- package/Libraries/Lists/VirtualizedListContext.js +6 -104
- package/Libraries/Lists/VirtualizedSectionList.js +9 -602
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBox.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
- package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
- package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
- package/Libraries/Modal/Modal.js +2 -2
- package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
- package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
- package/Libraries/NativeComponent/ViewConfig.js +1 -0
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
- package/Libraries/Network/RCTNetworking.android.js +2 -2
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.win32.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/Pressability/Pressability.js +10 -4
- package/Libraries/Pressability/Pressability.win32.js +9 -3
- package/Libraries/ReactNative/AppContainer.js +7 -1
- package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
- package/Libraries/ReactNative/AppRegistry.js +10 -13
- package/Libraries/ReactNative/FabricUIManager.js +24 -8
- package/Libraries/ReactNative/NativeUIManager.js +5 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
- package/Libraries/ReactNative/UIManager.js +168 -1
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
- package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
- package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
- package/Libraries/ReactNative/requireNativeComponent.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
- package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +6 -6
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Share/Share.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
- package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
- package/Libraries/StyleSheet/flattenStyle.js +2 -0
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processColor.js +1 -1
- package/Libraries/Text/Text.d.ts +12 -2
- package/Libraries/Text/Text.js +50 -41
- package/Libraries/Text/TextProps.js +3 -4
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
- package/Libraries/Types/CodegenTypes.js +1 -0
- package/Libraries/UTFSequence.js +3 -1
- package/Libraries/Utilities/Appearance.d.ts +10 -0
- package/Libraries/Utilities/Appearance.js +13 -0
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/Dimensions.win32.js +1 -1
- package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
- package/Libraries/Utilities/HMRClient.js +16 -10
- package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
- package/Libraries/Utilities/IPerformanceLogger.js +49 -0
- package/Libraries/Utilities/LoadingView.android.js +28 -11
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
- package/Libraries/Utilities/PixelRatio.js +2 -2
- package/Libraries/Utilities/Platform.win32.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +2 -0
- package/Libraries/Utilities/createPerformanceLogger.js +55 -43
- package/Libraries/Utilities/stringifySafe.js +2 -7
- package/Libraries/Utilities/useColorScheme.win32.js +26 -0
- package/Libraries/Utilities/useWindowDimensions.js +3 -3
- package/Libraries/WebPerformance/EventCounts.js +78 -0
- package/Libraries/WebPerformance/MemoryInfo.js +54 -0
- package/Libraries/WebPerformance/NativePerformance.js +38 -0
- package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
- package/Libraries/WebPerformance/Performance.js +312 -0
- package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
- package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
- package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
- package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
- package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
- package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
- package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
- package/Libraries/vendor/emitter/EventEmitter.js +9 -1
- package/flow/global.js +29 -4
- package/flow/jest.js +258 -164
- package/flow/use-sync-external-store.js +1 -0
- package/index.js +56 -42
- package/index.win32.js +56 -42
- package/interface.js +1 -1
- package/jest/local-setup.js +33 -0
- package/jest/mockComponent.js +4 -2
- package/jest/mockNativeComponent.js +1 -1
- package/jest/mockScrollView.js +2 -1
- package/jest/react-native-env.js +1 -3
- package/jest/setup.js +11 -8
- package/overrides.json +122 -85
- package/package.json +40 -30
- package/rn-get-polyfills.js +1 -1
- package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
- package/src/Libraries/Components/Touchable/TouchableWin32.tsx +3 -3
- package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
- package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
- package/types/index.d.ts +2 -6
- package/types/modules/Codegen.d.ts +4 -4
- package/types/modules/globals.d.ts +27 -25
- package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
- package/types/public/ReactNativeRenderer.d.ts +2 -7
- package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
- package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
- package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
- package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
- package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
- package/Libraries/Components/Slider/Slider.d.ts +0 -132
- package/Libraries/Components/Slider/Slider.js +0 -282
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
- package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
- package/Libraries/Interaction/Batchinator.js +0 -76
- package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
- package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
- package/Libraries/Interaction/PanResponder.flow.js +0 -257
- package/Libraries/Lists/CellRenderMask.js +0 -155
- package/Libraries/Lists/ChildListCollection.js +0 -72
- package/Libraries/Lists/StateSafePureComponent.js +0 -85
- package/Libraries/Lists/VirtualizedList.d.ts +0 -347
- package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
- package/Libraries/Lists/VirtualizedListProps.js +0 -279
- package/Libraries/Performance/PureComponentDebug.js +0 -74
- package/Libraries/Reliability/UserFlow.js +0 -158
- package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
- package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
- package/Libraries/Utilities/MatrixMath.js +0 -748
- package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
- package/Libraries/Utilities/clamp.js +0 -23
- package/Libraries/Utilities/deprecatedPropType.js +0 -36
- package/Libraries/Utilities/groupByEveryN.js +0 -51
- package/Libraries/Utilities/mergeIntoFast.js +0 -26
- package/Libraries/Utilities/setAndForwardRef.js +0 -71
- package/Libraries/Utilities/truncate.js +0 -51
- package/flow/JSITimerInternalType.js +0 -30
|
@@ -8,53 +8,28 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
import type {
|
|
12
|
+
Extras,
|
|
13
|
+
ExtraValue,
|
|
14
|
+
IPerformanceLogger,
|
|
15
|
+
Timespan,
|
|
16
|
+
} from './IPerformanceLogger';
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
totalTime?: number,
|
|
18
|
-
startExtras?: Extras,
|
|
19
|
-
endExtras?: Extras,
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// Extra values should be serializable primitives
|
|
23
|
-
export type ExtraValue = number | string | boolean;
|
|
24
|
-
|
|
25
|
-
export type Extras = {[key: string]: ExtraValue};
|
|
26
|
-
|
|
27
|
-
export interface IPerformanceLogger {
|
|
28
|
-
addTimespan(
|
|
29
|
-
key: string,
|
|
30
|
-
startTime: number,
|
|
31
|
-
endTime: number,
|
|
32
|
-
startExtras?: Extras,
|
|
33
|
-
endExtras?: Extras,
|
|
34
|
-
): void;
|
|
35
|
-
append(logger: IPerformanceLogger): void;
|
|
36
|
-
clear(): void;
|
|
37
|
-
clearCompleted(): void;
|
|
38
|
-
close(): void;
|
|
39
|
-
currentTimestamp(): number;
|
|
40
|
-
getExtras(): $ReadOnly<{[key: string]: ?ExtraValue, ...}>;
|
|
41
|
-
getPoints(): $ReadOnly<{[key: string]: ?number, ...}>;
|
|
42
|
-
getPointExtras(): $ReadOnly<{[key: string]: ?Extras, ...}>;
|
|
43
|
-
getTimespans(): $ReadOnly<{[key: string]: ?Timespan, ...}>;
|
|
44
|
-
hasTimespan(key: string): boolean;
|
|
45
|
-
isClosed(): boolean;
|
|
46
|
-
logEverything(): void;
|
|
47
|
-
markPoint(key: string, timestamp?: number, extras?: Extras): void;
|
|
48
|
-
removeExtra(key: string): ?ExtraValue;
|
|
49
|
-
setExtra(key: string, value: ExtraValue): void;
|
|
50
|
-
startTimespan(key: string, timestamp?: number, extras?: Extras): void;
|
|
51
|
-
stopTimespan(key: string, timestamp?: number, extras?: Extras): void;
|
|
52
|
-
}
|
|
18
|
+
import * as Systrace from '../Performance/Systrace';
|
|
19
|
+
import Performance from '../WebPerformance/Performance';
|
|
20
|
+
import infoLog from './infoLog';
|
|
53
21
|
|
|
54
22
|
const _cookies: {[key: string]: number, ...} = {};
|
|
55
23
|
|
|
56
24
|
const PRINT_TO_CONSOLE: false = false; // Type as false to prevent accidentally committing `true`;
|
|
57
25
|
|
|
26
|
+
// This is the prefix for optional logging points/timespans as marks/measures via Performance API,
|
|
27
|
+
// used to separate these internally from other marks/measures
|
|
28
|
+
const WEB_PERFORMANCE_PREFIX = 'global_perf_';
|
|
29
|
+
|
|
30
|
+
// TODO: Remove once T143070419 is done
|
|
31
|
+
const performance = new Performance();
|
|
32
|
+
|
|
58
33
|
export const getCurrentTimestamp: () => number =
|
|
59
34
|
global.nativeQPLTimestamp ?? global.performance.now.bind(global.performance);
|
|
60
35
|
|
|
@@ -64,6 +39,11 @@ class PerformanceLogger implements IPerformanceLogger {
|
|
|
64
39
|
_points: {[key: string]: ?number} = {};
|
|
65
40
|
_pointExtras: {[key: string]: ?Extras, ...} = {};
|
|
66
41
|
_closed: boolean = false;
|
|
42
|
+
_isLoggingForWebPerformance: boolean = false;
|
|
43
|
+
|
|
44
|
+
constructor(isLoggingForWebPerformance?: boolean) {
|
|
45
|
+
this._isLoggingForWebPerformance = isLoggingForWebPerformance === true;
|
|
46
|
+
}
|
|
67
47
|
|
|
68
48
|
addTimespan(
|
|
69
49
|
key: string,
|
|
@@ -95,6 +75,13 @@ class PerformanceLogger implements IPerformanceLogger {
|
|
|
95
75
|
startExtras,
|
|
96
76
|
endExtras,
|
|
97
77
|
};
|
|
78
|
+
|
|
79
|
+
if (this._isLoggingForWebPerformance) {
|
|
80
|
+
performance.measure(`${WEB_PERFORMANCE_PREFIX}_${key}`, {
|
|
81
|
+
start: startTime,
|
|
82
|
+
end: endTime,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
98
85
|
}
|
|
99
86
|
|
|
100
87
|
append(performanceLogger: IPerformanceLogger) {
|
|
@@ -209,6 +196,12 @@ class PerformanceLogger implements IPerformanceLogger {
|
|
|
209
196
|
if (extras) {
|
|
210
197
|
this._pointExtras[key] = extras;
|
|
211
198
|
}
|
|
199
|
+
|
|
200
|
+
if (this._isLoggingForWebPerformance) {
|
|
201
|
+
performance.mark(`${WEB_PERFORMANCE_PREFIX}_${key}`, {
|
|
202
|
+
startTime: timestamp,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
212
205
|
}
|
|
213
206
|
|
|
214
207
|
removeExtra(key: string): ?ExtraValue {
|
|
@@ -270,6 +263,12 @@ class PerformanceLogger implements IPerformanceLogger {
|
|
|
270
263
|
if (PRINT_TO_CONSOLE) {
|
|
271
264
|
infoLog('PerformanceLogger.js', 'start: ' + key);
|
|
272
265
|
}
|
|
266
|
+
|
|
267
|
+
if (this._isLoggingForWebPerformance) {
|
|
268
|
+
performance.mark(`${WEB_PERFORMANCE_PREFIX}_timespan_start_${key}`, {
|
|
269
|
+
startTime: timestamp,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
273
272
|
}
|
|
274
273
|
|
|
275
274
|
stopTimespan(
|
|
@@ -315,14 +314,27 @@ class PerformanceLogger implements IPerformanceLogger {
|
|
|
315
314
|
Systrace.endAsyncEvent(key, _cookies[key]);
|
|
316
315
|
delete _cookies[key];
|
|
317
316
|
}
|
|
317
|
+
|
|
318
|
+
if (this._isLoggingForWebPerformance) {
|
|
319
|
+
performance.measure(`${WEB_PERFORMANCE_PREFIX}_${key}`, {
|
|
320
|
+
start: `${WEB_PERFORMANCE_PREFIX}_timespan_start_${key}`,
|
|
321
|
+
end: timestamp,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
318
324
|
}
|
|
319
325
|
}
|
|
320
326
|
|
|
327
|
+
// Re-exporting for backwards compatibility with all the clients that
|
|
328
|
+
// may still import it from this module.
|
|
329
|
+
export type {Extras, ExtraValue, IPerformanceLogger, Timespan};
|
|
330
|
+
|
|
321
331
|
/**
|
|
322
332
|
* This function creates performance loggers that can be used to collect and log
|
|
323
333
|
* various performance data such as timespans, points and extras.
|
|
324
334
|
* The loggers need to have minimal overhead since they're used in production.
|
|
325
335
|
*/
|
|
326
|
-
export default function createPerformanceLogger(
|
|
327
|
-
|
|
336
|
+
export default function createPerformanceLogger(
|
|
337
|
+
isLoggingForWebPerformance?: boolean,
|
|
338
|
+
): IPerformanceLogger {
|
|
339
|
+
return new PerformanceLogger(isLoggingForWebPerformance);
|
|
328
340
|
}
|
|
@@ -26,9 +26,7 @@ export function createStringifySafeWithLimits(limits: {|
|
|
|
26
26
|
maxArrayLimit = Number.POSITIVE_INFINITY,
|
|
27
27
|
maxObjectKeysLimit = Number.POSITIVE_INFINITY,
|
|
28
28
|
} = limits;
|
|
29
|
-
const stack: Array<
|
|
30
|
-
string | {+[string]: mixed} | {'...(truncated keys)...': number},
|
|
31
|
-
> = [];
|
|
29
|
+
const stack: Array<mixed> = [];
|
|
32
30
|
/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by
|
|
33
31
|
* Flow's LTI update could not be added via codemod */
|
|
34
32
|
function replacer(key: string, value: mixed): mixed {
|
|
@@ -47,10 +45,7 @@ export function createStringifySafeWithLimits(limits: {|
|
|
|
47
45
|
return value;
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
let retval:
|
|
51
|
-
| string
|
|
52
|
-
| {+[string]: mixed}
|
|
53
|
-
| $TEMPORARY$object<{'...(truncated keys)...': number}> = value;
|
|
48
|
+
let retval: mixed = value;
|
|
54
49
|
if (Array.isArray(value)) {
|
|
55
50
|
if (stack.length >= maxDepth) {
|
|
56
51
|
retval = `[ ... array with ${value.length} values ... ]`;
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
* @format
|
|
8
|
+
* @flow strict-local
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
import type {ColorSchemeName} from './NativeAppearance';
|
|
14
|
+
|
|
15
|
+
import Appearance from './Appearance';
|
|
16
|
+
import {useSyncExternalStore} from 'react';
|
|
17
|
+
|
|
18
|
+
export default function useColorScheme(): ?ColorSchemeName {
|
|
19
|
+
return useSyncExternalStore(
|
|
20
|
+
callback => {
|
|
21
|
+
const appearanceSubscription = Appearance.addChangeListener(callback);
|
|
22
|
+
return () => appearanceSubscription.remove();
|
|
23
|
+
},
|
|
24
|
+
() => Appearance.getColorScheme(),
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -22,9 +22,9 @@ export default function useWindowDimensions():
|
|
|
22
22
|
useEffect(() => {
|
|
23
23
|
function handleChange({
|
|
24
24
|
window,
|
|
25
|
-
}:
|
|
26
|
-
|
|
|
27
|
-
|
|
25
|
+
}: {
|
|
26
|
+
window: DisplayMetrics | DisplayMetricsAndroid,
|
|
27
|
+
}) {
|
|
28
28
|
if (
|
|
29
29
|
dimensions.width !== window.width ||
|
|
30
30
|
dimensions.height !== window.height ||
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import NativePerformanceObserver from './NativePerformanceObserver';
|
|
12
|
+
import {warnNoNativePerformanceObserver} from './PerformanceObserver';
|
|
13
|
+
|
|
14
|
+
type EventCountsForEachCallbackType =
|
|
15
|
+
| (() => void)
|
|
16
|
+
| ((value: number) => void)
|
|
17
|
+
| ((value: number, key: string) => void)
|
|
18
|
+
| ((value: number, key: string, map: Map<string, number>) => void);
|
|
19
|
+
|
|
20
|
+
let cachedEventCounts: ?Map<string, number>;
|
|
21
|
+
|
|
22
|
+
function getCachedEventCounts(): Map<string, number> {
|
|
23
|
+
if (cachedEventCounts) {
|
|
24
|
+
return cachedEventCounts;
|
|
25
|
+
}
|
|
26
|
+
if (!NativePerformanceObserver) {
|
|
27
|
+
warnNoNativePerformanceObserver();
|
|
28
|
+
return new Map();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
cachedEventCounts = new Map<string, number>(
|
|
32
|
+
NativePerformanceObserver.getEventCounts(),
|
|
33
|
+
);
|
|
34
|
+
// $FlowFixMe[incompatible-call]
|
|
35
|
+
global.queueMicrotask(() => {
|
|
36
|
+
// To be consistent with the calls to the API from the same task,
|
|
37
|
+
// but also not to refetch the data from native too often,
|
|
38
|
+
// schedule to invalidate the cache later,
|
|
39
|
+
// after the current task is guaranteed to have finished.
|
|
40
|
+
cachedEventCounts = null;
|
|
41
|
+
});
|
|
42
|
+
return cachedEventCounts ?? new Map();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Implementation of the EventCounts Web Performance API
|
|
46
|
+
* corresponding to the standard in
|
|
47
|
+
* https://www.w3.org/TR/event-timing/#eventcounts
|
|
48
|
+
*/
|
|
49
|
+
export default class EventCounts {
|
|
50
|
+
// flowlint unsafe-getters-setters:off
|
|
51
|
+
get size(): number {
|
|
52
|
+
return getCachedEventCounts().size;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
entries(): Iterator<[string, number]> {
|
|
56
|
+
return getCachedEventCounts().entries();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
forEach(callback: EventCountsForEachCallbackType): void {
|
|
60
|
+
return getCachedEventCounts().forEach(callback);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get(key: string): ?number {
|
|
64
|
+
return getCachedEventCounts().get(key);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
has(key: string): boolean {
|
|
68
|
+
return getCachedEventCounts().has(key);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
keys(): Iterator<string> {
|
|
72
|
+
return getCachedEventCounts().keys();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
values(): Iterator<number> {
|
|
76
|
+
return getCachedEventCounts().values();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// flowlint unsafe-getters-setters:off
|
|
13
|
+
|
|
14
|
+
export type MemoryInfoLike = {
|
|
15
|
+
jsHeapSizeLimit: ?number,
|
|
16
|
+
totalJSHeapSize: ?number,
|
|
17
|
+
usedJSHeapSize: ?number,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Read-only object with JS memory information. This is returned by the performance.memory API.
|
|
21
|
+
export default class MemoryInfo {
|
|
22
|
+
_jsHeapSizeLimit: ?number;
|
|
23
|
+
_totalJSHeapSize: ?number;
|
|
24
|
+
_usedJSHeapSize: ?number;
|
|
25
|
+
|
|
26
|
+
constructor(memoryInfo: ?MemoryInfoLike) {
|
|
27
|
+
if (memoryInfo != null) {
|
|
28
|
+
this._jsHeapSizeLimit = memoryInfo.jsHeapSizeLimit;
|
|
29
|
+
this._totalJSHeapSize = memoryInfo.totalJSHeapSize;
|
|
30
|
+
this._usedJSHeapSize = memoryInfo.usedJSHeapSize;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The maximum size of the heap, in bytes, that is available to the context
|
|
36
|
+
*/
|
|
37
|
+
get jsHeapSizeLimit(): ?number {
|
|
38
|
+
return this._jsHeapSizeLimit;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The total allocated heap size, in bytes
|
|
43
|
+
*/
|
|
44
|
+
get totalJSHeapSize(): ?number {
|
|
45
|
+
return this._totalJSHeapSize;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The currently active segment of JS heap, in bytes.
|
|
50
|
+
*/
|
|
51
|
+
get usedJSHeapSize(): ?number {
|
|
52
|
+
return this._usedJSHeapSize;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {TurboModule} from '../TurboModule/RCTExport';
|
|
12
|
+
|
|
13
|
+
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
|
14
|
+
|
|
15
|
+
export type NativeMemoryInfo = {[key: string]: number};
|
|
16
|
+
|
|
17
|
+
export type ReactNativeStartupTiming = {|
|
|
18
|
+
startTime: number,
|
|
19
|
+
endTime: number,
|
|
20
|
+
executeJavaScriptBundleEntryPointStart: number,
|
|
21
|
+
executeJavaScriptBundleEntryPointEnd: number,
|
|
22
|
+
|};
|
|
23
|
+
|
|
24
|
+
export interface Spec extends TurboModule {
|
|
25
|
+
+mark: (name: string, startTime: number, duration: number) => void;
|
|
26
|
+
+measure: (
|
|
27
|
+
name: string,
|
|
28
|
+
startTime: number,
|
|
29
|
+
endTime: number,
|
|
30
|
+
duration?: number,
|
|
31
|
+
startMark?: string,
|
|
32
|
+
endMark?: string,
|
|
33
|
+
) => void;
|
|
34
|
+
+getSimpleMemoryInfo: () => NativeMemoryInfo;
|
|
35
|
+
+getReactNativeStartupTiming: () => ReactNativeStartupTiming;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default (TurboModuleRegistry.get<Spec>('NativePerformanceCxx'): ?Spec);
|
|
@@ -12,10 +12,6 @@ import type {TurboModule} from '../TurboModule/RCTExport';
|
|
|
12
12
|
|
|
13
13
|
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
|
14
14
|
|
|
15
|
-
export const RawPerformanceEntryTypeValues = {
|
|
16
|
-
UNDEFINED: 0,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
15
|
export type RawPerformanceEntryType = number;
|
|
20
16
|
|
|
21
17
|
export type RawPerformanceEntry = {|
|
|
@@ -29,11 +25,30 @@ export type RawPerformanceEntry = {|
|
|
|
29
25
|
interactionId?: number,
|
|
30
26
|
|};
|
|
31
27
|
|
|
28
|
+
export type GetPendingEntriesResult = {|
|
|
29
|
+
entries: $ReadOnlyArray<RawPerformanceEntry>,
|
|
30
|
+
droppedEntriesCount: number,
|
|
31
|
+
|};
|
|
32
|
+
|
|
32
33
|
export interface Spec extends TurboModule {
|
|
33
|
-
+startReporting: (entryType:
|
|
34
|
-
+stopReporting: (entryType:
|
|
35
|
-
+
|
|
34
|
+
+startReporting: (entryType: RawPerformanceEntryType) => void;
|
|
35
|
+
+stopReporting: (entryType: RawPerformanceEntryType) => void;
|
|
36
|
+
+popPendingEntries: () => GetPendingEntriesResult;
|
|
36
37
|
+setOnPerformanceEntryCallback: (callback?: () => void) => void;
|
|
38
|
+
+logRawEntry: (entry: RawPerformanceEntry) => void;
|
|
39
|
+
+getEventCounts: () => $ReadOnlyArray<[string, number]>;
|
|
40
|
+
+setDurationThreshold: (
|
|
41
|
+
entryType: RawPerformanceEntryType,
|
|
42
|
+
durationThreshold: number,
|
|
43
|
+
) => void;
|
|
44
|
+
+clearEntries: (
|
|
45
|
+
entryType: RawPerformanceEntryType,
|
|
46
|
+
entryName?: string,
|
|
47
|
+
) => void;
|
|
48
|
+
+getEntries: (
|
|
49
|
+
entryType?: RawPerformanceEntryType,
|
|
50
|
+
entryName?: string,
|
|
51
|
+
) => $ReadOnlyArray<RawPerformanceEntry>;
|
|
37
52
|
}
|
|
38
53
|
|
|
39
54
|
export default (TurboModuleRegistry.get<Spec>(
|