@office-iss/react-native-win32 0.74.4 → 0.75.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +9 -4
- package/CHANGELOG.json +554 -51
- package/CHANGELOG.md +165 -30
- package/Libraries/Animated/AnimatedImplementation.js +2 -0
- package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +4 -0
- package/Libraries/Animated/createAnimatedComponent.js +10 -4
- package/Libraries/Animated/useAnimatedProps.js +56 -28
- package/Libraries/BatchedBridge/MessageQueue.js +1 -0
- package/Libraries/Components/Button.js +10 -5
- package/Libraries/Components/Button.win32.js +1 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
- package/Libraries/Components/Pressable/Pressable.js +13 -6
- package/Libraries/Components/Pressable/Pressable.win32.js +13 -6
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
- package/Libraries/Components/ScrollView/ScrollView.js +109 -29
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
- package/Libraries/Components/StatusBar/StatusBar.js +1 -21
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
- package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
- package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
- package/Libraries/Components/TextInput/TextInput.js +14 -70
- package/Libraries/Components/TextInput/TextInput.win32.js +15 -72
- package/Libraries/Components/Touchable/Touchable.js +2 -2
- package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
- package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.js +0 -11
- package/Libraries/Components/View/View.win32.js +0 -11
- package/Libraries/Components/View/ViewAccessibility.js +4 -4
- package/Libraries/Components/View/ViewAccessibility.win32.js +6 -6
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
- package/Libraries/Components/View/ViewPropTypes.js +7 -0
- package/Libraries/Components/View/ViewPropTypes.win32.js +7 -0
- package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +153 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
- package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
- package/Libraries/Core/ErrorHandlers.js +116 -0
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/setUpDeveloperTools.js +3 -1
- package/Libraries/Core/setUpPerformance.js +6 -4
- package/Libraries/Core/setUpReactDevTools.js +70 -10
- package/Libraries/Core/setUpTimers.js +50 -31
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
- package/Libraries/Image/Image.android.js +23 -13
- package/Libraries/Image/Image.d.ts +14 -15
- package/Libraries/Image/Image.ios.js +21 -11
- package/Libraries/Image/Image.win32.js +5 -3
- package/Libraries/Image/ImageProps.js +16 -5
- package/Libraries/Image/ImageTypes.flow.js +7 -2
- package/Libraries/Image/ImageUtils.js +1 -0
- package/Libraries/Image/ImageViewNativeComponent.js +2 -1
- package/Libraries/Inspector/ElementBox.js +6 -3
- package/Libraries/Inspector/ElementProperties.js +1 -1
- package/Libraries/Interaction/TouchHistoryMath.js +4 -4
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +39 -29
- package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
- package/Libraries/LogBox/LogBox.js +29 -12
- package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
- package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
- package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +8 -52
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +8 -5
- package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
- package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +5 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
- package/Libraries/Network/XMLHttpRequest.js +5 -1
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
- package/Libraries/Pressability/Pressability.js +3 -51
- package/Libraries/Pressability/Pressability.win32.js +3 -51
- package/Libraries/ReactNative/AppContainer-dev.js +3 -2
- package/Libraries/ReactNative/AppContainer-prod.js +2 -1
- package/Libraries/ReactNative/AppContainer.js +2 -0
- package/Libraries/ReactNative/AppRegistry.d.ts +7 -0
- package/Libraries/ReactNative/AppRegistry.js +10 -4
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
- package/Libraries/ReactNative/FabricUIManager.js +0 -51
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
- package/Libraries/ReactNative/RendererImplementation.js +20 -2
- package/Libraries/ReactNative/UIManager.d.ts +0 -21
- package/Libraries/ReactNative/UIManagerProperties.js +0 -3
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
- package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
- package/Libraries/ReactNative/renderApplication.js +3 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
- package/Libraries/Renderer/shims/ReactFabric.js +2 -2
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Share/Share.d.ts +16 -10
- package/Libraries/Share/Share.js +14 -15
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -10
- package/Libraries/StyleSheet/StyleSheet.win32.js +3 -10
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
- package/Libraries/StyleSheet/flattenStyle.js +1 -0
- package/Libraries/StyleSheet/processFilter.js +132 -0
- package/Libraries/StyleSheet/processTransform.js +18 -3
- package/Libraries/Text/Text.js +151 -128
- package/Libraries/Text/Text.win32.js +163 -138
- package/Libraries/Text/TextNativeComponent.js +5 -4
- package/Libraries/Text/TextNativeComponent.win32.js +5 -4
- package/Libraries/Text/TextProps.js +6 -6
- package/Libraries/Text/TextProps.win32.js +6 -6
- package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
- package/Libraries/Types/CodegenTypes.js +3 -0
- package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
- package/Libraries/Utilities/Dimensions.js +1 -0
- package/Libraries/Utilities/Dimensions.win32.js +1 -0
- package/Libraries/Utilities/HMRClient.js +36 -8
- package/Libraries/Utilities/HMRClientProdShim.js +1 -0
- package/Libraries/Utilities/Platform.android.js +4 -4
- package/Libraries/Utilities/RCTLog.js +1 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
- package/Libraries/__tests__/ButtonWin32-test.js +7 -6
- package/Libraries/promiseRejectionTrackingOptions.js +1 -0
- package/jest/mockComponent.js +7 -0
- package/jest/renderer.js +25 -14
- package/jest/setup.js +19 -13
- package/jest.config.js +2 -1
- package/overrides.json +30 -29
- package/package.json +27 -25
- package/rn-get-polyfills.js +1 -0
- package/src/private/core/composeStyles.js +27 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
- package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
- package/src/private/specs/modules/NativeBlobModule.js +4 -2
- package/src/private/specs/modules/NativeDevSettings.js +1 -0
- package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
- package/src/private/specs/modules/NativeUIManager.js +0 -7
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
- package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
- package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
- package/src/private/webapis/performance/EventCounts.js +1 -1
- package/src/private/webapis/performance/MemoryInfo.js +9 -9
- package/src/private/webapis/performance/Performance.js +10 -56
- package/src/private/webapis/performance/PerformanceObserver.js +30 -22
- package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
- package/src/private/webapis/performance/UserTiming.js +63 -0
- package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
- package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
- package/types/modules/globals.d.ts +4 -0
- package/Libraries/Components/ScrollView/ScrollView.win32.js +0 -1915
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
- package/Libraries/Utilities/LoadingView.ios.js +0 -50
- package/Libraries/Utilities/LoadingView.js +0 -16
- package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
- package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
- package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
- package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
- package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
- package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
- package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
- package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
- package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
- package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
- package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
- package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
|
@@ -12,13 +12,15 @@
|
|
|
12
12
|
|
|
13
13
|
import type {HighResTimeStamp, PerformanceEntryType} from './PerformanceEntry';
|
|
14
14
|
import type {PerformanceEntryList} from './PerformanceObserver';
|
|
15
|
+
import type {
|
|
16
|
+
PerformanceMarkOptions,
|
|
17
|
+
PerformanceMeasureOptions,
|
|
18
|
+
} from './UserTiming';
|
|
15
19
|
|
|
16
20
|
import warnOnce from '../../../../Libraries/Utilities/warnOnce';
|
|
17
21
|
import EventCounts from './EventCounts';
|
|
18
22
|
import MemoryInfo from './MemoryInfo';
|
|
19
|
-
import
|
|
20
|
-
import NativePerformanceObserver from './NativePerformanceObserver';
|
|
21
|
-
import {ALWAYS_LOGGED_ENTRY_TYPES, PerformanceEntry} from './PerformanceEntry';
|
|
23
|
+
import {ALWAYS_LOGGED_ENTRY_TYPES} from './PerformanceEntry';
|
|
22
24
|
import {warnNoNativePerformanceObserver} from './PerformanceObserver';
|
|
23
25
|
import {
|
|
24
26
|
performanceEntryTypeToRaw,
|
|
@@ -26,22 +28,17 @@ import {
|
|
|
26
28
|
} from './RawPerformanceEntry';
|
|
27
29
|
import {RawPerformanceEntryTypeValues} from './RawPerformanceEntry';
|
|
28
30
|
import ReactNativeStartupTiming from './ReactNativeStartupTiming';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export type PerformanceMarkOptions = {
|
|
33
|
-
detail?: DetailType,
|
|
34
|
-
startTime?: HighResTimeStamp,
|
|
35
|
-
};
|
|
31
|
+
import NativePerformance from './specs/NativePerformance';
|
|
32
|
+
import NativePerformanceObserver from './specs/NativePerformanceObserver';
|
|
33
|
+
import {PerformanceMark, PerformanceMeasure} from './UserTiming';
|
|
36
34
|
|
|
37
35
|
declare var global: {
|
|
38
36
|
// This value is defined directly via JSI, if available.
|
|
39
37
|
+nativePerformanceNow?: ?() => number,
|
|
40
38
|
};
|
|
41
39
|
|
|
42
|
-
const getCurrentTimeStamp: () => HighResTimeStamp =
|
|
43
|
-
|
|
44
|
-
: () => Date.now();
|
|
40
|
+
const getCurrentTimeStamp: () => HighResTimeStamp =
|
|
41
|
+
NativePerformance?.now ?? global.nativePerformanceNow ?? (() => Date.now());
|
|
45
42
|
|
|
46
43
|
// We want some of the performance entry types to be always logged,
|
|
47
44
|
// even if they are not currently observed - this is either to be able to
|
|
@@ -54,49 +51,6 @@ if (NativePerformanceObserver?.setIsBuffered) {
|
|
|
54
51
|
);
|
|
55
52
|
}
|
|
56
53
|
|
|
57
|
-
export class PerformanceMark extends PerformanceEntry {
|
|
58
|
-
detail: DetailType;
|
|
59
|
-
|
|
60
|
-
constructor(markName: string, markOptions?: PerformanceMarkOptions) {
|
|
61
|
-
super({
|
|
62
|
-
name: markName,
|
|
63
|
-
entryType: 'mark',
|
|
64
|
-
startTime: markOptions?.startTime ?? getCurrentTimeStamp(),
|
|
65
|
-
duration: 0,
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
if (markOptions) {
|
|
69
|
-
this.detail = markOptions.detail;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export type TimeStampOrName = HighResTimeStamp | string;
|
|
75
|
-
|
|
76
|
-
export type PerformanceMeasureOptions = {
|
|
77
|
-
detail?: DetailType,
|
|
78
|
-
start?: TimeStampOrName,
|
|
79
|
-
end?: TimeStampOrName,
|
|
80
|
-
duration?: HighResTimeStamp,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export class PerformanceMeasure extends PerformanceEntry {
|
|
84
|
-
detail: DetailType;
|
|
85
|
-
|
|
86
|
-
constructor(measureName: string, measureOptions?: PerformanceMeasureOptions) {
|
|
87
|
-
super({
|
|
88
|
-
name: measureName,
|
|
89
|
-
entryType: 'measure',
|
|
90
|
-
startTime: 0,
|
|
91
|
-
duration: measureOptions?.duration ?? 0,
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
if (measureOptions) {
|
|
95
|
-
this.detail = measureOptions.detail;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
54
|
function warnNoNativePerformance() {
|
|
101
55
|
warnOnce(
|
|
102
56
|
'missing-native-performance',
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
import type {HighResTimeStamp, PerformanceEntryType} from './PerformanceEntry';
|
|
12
12
|
|
|
13
13
|
import warnOnce from '../../../../Libraries/Utilities/warnOnce';
|
|
14
|
-
import NativePerformanceObserver from './NativePerformanceObserver';
|
|
15
14
|
import {PerformanceEntry} from './PerformanceEntry';
|
|
16
15
|
import PerformanceEventTiming from './PerformanceEventTiming';
|
|
17
16
|
import {
|
|
@@ -19,22 +18,25 @@ import {
|
|
|
19
18
|
rawToPerformanceEntry,
|
|
20
19
|
rawToPerformanceEntryType,
|
|
21
20
|
} from './RawPerformanceEntry';
|
|
21
|
+
import NativePerformanceObserver from './specs/NativePerformanceObserver';
|
|
22
22
|
|
|
23
23
|
export type PerformanceEntryList = $ReadOnlyArray<PerformanceEntry>;
|
|
24
24
|
|
|
25
|
+
export {PerformanceEntry} from './PerformanceEntry';
|
|
26
|
+
|
|
25
27
|
export class PerformanceObserverEntryList {
|
|
26
|
-
|
|
28
|
+
#entries: PerformanceEntryList;
|
|
27
29
|
|
|
28
30
|
constructor(entries: PerformanceEntryList) {
|
|
29
|
-
this
|
|
31
|
+
this.#entries = entries;
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
getEntries(): PerformanceEntryList {
|
|
33
|
-
return this
|
|
35
|
+
return this.#entries;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
getEntriesByType(type: PerformanceEntryType): PerformanceEntryList {
|
|
37
|
-
return this.
|
|
39
|
+
return this.#entries.filter(entry => entry.entryType === type);
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
getEntriesByName(
|
|
@@ -42,9 +44,9 @@ export class PerformanceObserverEntryList {
|
|
|
42
44
|
type?: PerformanceEntryType,
|
|
43
45
|
): PerformanceEntryList {
|
|
44
46
|
if (type === undefined) {
|
|
45
|
-
return this.
|
|
47
|
+
return this.#entries.filter(entry => entry.name === name);
|
|
46
48
|
} else {
|
|
47
|
-
return this.
|
|
49
|
+
return this.#entries.filter(
|
|
48
50
|
entry => entry.name === name && entry.entryType === type,
|
|
49
51
|
);
|
|
50
52
|
}
|
|
@@ -98,11 +100,17 @@ const onPerformanceEntry = () => {
|
|
|
98
100
|
const durationThreshold = observerConfig.entryTypes.get(entry.entryType);
|
|
99
101
|
return entry.duration >= (durationThreshold ?? 0);
|
|
100
102
|
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
if (entriesForObserver.length !== 0) {
|
|
104
|
+
try {
|
|
105
|
+
observerConfig.callback(
|
|
106
|
+
new PerformanceObserverEntryList(entriesForObserver),
|
|
107
|
+
observer,
|
|
108
|
+
droppedEntriesCount,
|
|
109
|
+
);
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error(error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
106
114
|
}
|
|
107
115
|
};
|
|
108
116
|
|
|
@@ -167,11 +175,11 @@ function getSupportedPerformanceEntryTypes(): $ReadOnlyArray<PerformanceEntryTyp
|
|
|
167
175
|
* observer.observe({ type: "event" });
|
|
168
176
|
*/
|
|
169
177
|
export default class PerformanceObserver {
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
#callback: PerformanceObserverCallback;
|
|
179
|
+
#type: 'single' | 'multiple' | void;
|
|
172
180
|
|
|
173
181
|
constructor(callback: PerformanceObserverCallback) {
|
|
174
|
-
this
|
|
182
|
+
this.#callback = callback;
|
|
175
183
|
}
|
|
176
184
|
|
|
177
185
|
observe(options: PerformanceObserverInit): void {
|
|
@@ -180,17 +188,17 @@ export default class PerformanceObserver {
|
|
|
180
188
|
return;
|
|
181
189
|
}
|
|
182
190
|
|
|
183
|
-
this
|
|
191
|
+
this.#validateObserveOptions(options);
|
|
184
192
|
|
|
185
193
|
let requestedEntryTypes;
|
|
186
194
|
|
|
187
195
|
if (options.entryTypes) {
|
|
188
|
-
this
|
|
196
|
+
this.#type = 'multiple';
|
|
189
197
|
requestedEntryTypes = new Map(
|
|
190
198
|
options.entryTypes.map(t => [t, undefined]),
|
|
191
199
|
);
|
|
192
200
|
} else {
|
|
193
|
-
this
|
|
201
|
+
this.#type = 'single';
|
|
194
202
|
requestedEntryTypes = new Map([
|
|
195
203
|
[options.type, options.durationThreshold],
|
|
196
204
|
]);
|
|
@@ -209,7 +217,7 @@ export default class PerformanceObserver {
|
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
registeredObservers.set(this, {
|
|
212
|
-
callback: this
|
|
220
|
+
callback: this.#callback,
|
|
213
221
|
entryTypes: nextEntryTypes,
|
|
214
222
|
});
|
|
215
223
|
|
|
@@ -276,7 +284,7 @@ export default class PerformanceObserver {
|
|
|
276
284
|
applyDurationThresholds();
|
|
277
285
|
}
|
|
278
286
|
|
|
279
|
-
|
|
287
|
+
#validateObserveOptions(options: PerformanceObserverInit): void {
|
|
280
288
|
const {type, entryTypes, durationThreshold} = options;
|
|
281
289
|
|
|
282
290
|
if (!type && !entryTypes) {
|
|
@@ -291,13 +299,13 @@ export default class PerformanceObserver {
|
|
|
291
299
|
);
|
|
292
300
|
}
|
|
293
301
|
|
|
294
|
-
if (this
|
|
302
|
+
if (this.#type === 'multiple' && type) {
|
|
295
303
|
throw new Error(
|
|
296
304
|
"Failed to execute 'observe' on 'PerformanceObserver': This observer has performed observe({entryTypes:...}, therefore it cannot perform observe({type:...})",
|
|
297
305
|
);
|
|
298
306
|
}
|
|
299
307
|
|
|
300
|
-
if (this
|
|
308
|
+
if (this.#type === 'single' && entryTypes) {
|
|
301
309
|
throw new Error(
|
|
302
310
|
"Failed to execute 'observe' on 'PerformanceObserver': This PerformanceObserver has performed observe({type:...}, therefore it cannot perform observe({entryTypes:...})",
|
|
303
311
|
);
|
|
@@ -8,17 +8,16 @@
|
|
|
8
8
|
* @flow strict
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {PerformanceEntryType} from './PerformanceEntry';
|
|
11
12
|
import type {
|
|
12
13
|
RawPerformanceEntry,
|
|
13
14
|
RawPerformanceEntryType,
|
|
14
|
-
} from './NativePerformanceObserver';
|
|
15
|
-
import type {PerformanceEntryType} from './PerformanceEntry';
|
|
15
|
+
} from './specs/NativePerformanceObserver';
|
|
16
16
|
|
|
17
17
|
import {PerformanceEntry} from './PerformanceEntry';
|
|
18
18
|
import PerformanceEventTiming from './PerformanceEventTiming';
|
|
19
19
|
|
|
20
20
|
export const RawPerformanceEntryTypeValues = {
|
|
21
|
-
UNDEFINED: 0,
|
|
22
21
|
MARK: 1,
|
|
23
22
|
MEASURE: 2,
|
|
24
23
|
EVENT: 3,
|
|
@@ -56,10 +55,6 @@ export function rawToPerformanceEntryType(
|
|
|
56
55
|
return 'measure';
|
|
57
56
|
case RawPerformanceEntryTypeValues.EVENT:
|
|
58
57
|
return 'event';
|
|
59
|
-
case RawPerformanceEntryTypeValues.UNDEFINED:
|
|
60
|
-
throw new TypeError(
|
|
61
|
-
"rawToPerformanceEntryType: UNDEFINED can't be cast to PerformanceEntryType",
|
|
62
|
-
);
|
|
63
58
|
default:
|
|
64
59
|
throw new TypeError(
|
|
65
60
|
`rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,
|
|
@@ -27,22 +27,22 @@ export default class ReactNativeStartupTiming {
|
|
|
27
27
|
// We do NOT match web spect here for two reasons:
|
|
28
28
|
// 1. The `ReactNativeStartupTiming` is non-standard API
|
|
29
29
|
// 2. The timing information is relative to the time origin, which means `0` has valid meaning
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
#startTime: ?number;
|
|
31
|
+
#endTime: ?number;
|
|
32
|
+
#initializeRuntimeStart: ?number;
|
|
33
|
+
#initializeRuntimeEnd: ?number;
|
|
34
|
+
#executeJavaScriptBundleEntryPointStart: ?number;
|
|
35
|
+
#executeJavaScriptBundleEntryPointEnd: ?number;
|
|
36
36
|
|
|
37
37
|
constructor(startUpTiming: ?ReactNativeStartupTimingLike) {
|
|
38
38
|
if (startUpTiming != null) {
|
|
39
|
-
this
|
|
40
|
-
this
|
|
41
|
-
this
|
|
42
|
-
this
|
|
43
|
-
this
|
|
39
|
+
this.#startTime = startUpTiming.startTime;
|
|
40
|
+
this.#endTime = startUpTiming.endTime;
|
|
41
|
+
this.#initializeRuntimeStart = startUpTiming.initializeRuntimeStart;
|
|
42
|
+
this.#initializeRuntimeEnd = startUpTiming.initializeRuntimeEnd;
|
|
43
|
+
this.#executeJavaScriptBundleEntryPointStart =
|
|
44
44
|
startUpTiming.executeJavaScriptBundleEntryPointStart;
|
|
45
|
-
this
|
|
45
|
+
this.#executeJavaScriptBundleEntryPointEnd =
|
|
46
46
|
startUpTiming.executeJavaScriptBundleEntryPointEnd;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -51,41 +51,41 @@ export default class ReactNativeStartupTiming {
|
|
|
51
51
|
* Start time of the RN app startup process. This is provided by the platform by implementing the `ReactMarker.setAppStartTime` API in the native platform code.
|
|
52
52
|
*/
|
|
53
53
|
get startTime(): ?number {
|
|
54
|
-
return this
|
|
54
|
+
return this.#startTime;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* End time of the RN app startup process. This is equal to `executeJavaScriptBundleEntryPointEnd`.
|
|
59
59
|
*/
|
|
60
60
|
get endTime(): ?number {
|
|
61
|
-
return this
|
|
61
|
+
return this.#endTime;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* Start time when RN runtime get initialized. This is when RN infra first kicks in app startup process.
|
|
66
66
|
*/
|
|
67
67
|
get initializeRuntimeStart(): ?number {
|
|
68
|
-
return this
|
|
68
|
+
return this.#initializeRuntimeStart;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* End time when RN runtime get initialized. This is the last marker before ends of the app startup process.
|
|
73
73
|
*/
|
|
74
74
|
get initializeRuntimeEnd(): ?number {
|
|
75
|
-
return this
|
|
75
|
+
return this.#initializeRuntimeEnd;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* Start time of JS bundle being executed. This indicates the RN JS bundle is loaded and start to be evaluated.
|
|
80
80
|
*/
|
|
81
81
|
get executeJavaScriptBundleEntryPointStart(): ?number {
|
|
82
|
-
return this
|
|
82
|
+
return this.#executeJavaScriptBundleEntryPointStart;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
86
|
* End time of JS bundle being executed. This indicates all the synchronous entry point jobs are finished.
|
|
87
87
|
*/
|
|
88
88
|
get executeJavaScriptBundleEntryPointEnd(): ?number {
|
|
89
|
-
return this
|
|
89
|
+
return this.#executeJavaScriptBundleEntryPointEnd;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {HighResTimeStamp} from './PerformanceEntry';
|
|
12
|
+
|
|
13
|
+
import {PerformanceEntry} from './PerformanceEntry';
|
|
14
|
+
|
|
15
|
+
type DetailType = mixed;
|
|
16
|
+
|
|
17
|
+
export type PerformanceMarkOptions = {
|
|
18
|
+
detail?: DetailType,
|
|
19
|
+
startTime?: HighResTimeStamp,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type TimeStampOrName = HighResTimeStamp | string;
|
|
23
|
+
|
|
24
|
+
export type PerformanceMeasureOptions = {
|
|
25
|
+
detail?: DetailType,
|
|
26
|
+
start?: TimeStampOrName,
|
|
27
|
+
end?: TimeStampOrName,
|
|
28
|
+
duration?: HighResTimeStamp,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export class PerformanceMark extends PerformanceEntry {
|
|
32
|
+
detail: DetailType;
|
|
33
|
+
|
|
34
|
+
constructor(markName: string, markOptions?: PerformanceMarkOptions) {
|
|
35
|
+
super({
|
|
36
|
+
name: markName,
|
|
37
|
+
entryType: 'mark',
|
|
38
|
+
startTime: markOptions?.startTime ?? performance.now(),
|
|
39
|
+
duration: 0,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (markOptions) {
|
|
43
|
+
this.detail = markOptions.detail;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export class PerformanceMeasure extends PerformanceEntry {
|
|
49
|
+
detail: DetailType;
|
|
50
|
+
|
|
51
|
+
constructor(measureName: string, measureOptions?: PerformanceMeasureOptions) {
|
|
52
|
+
super({
|
|
53
|
+
name: measureName,
|
|
54
|
+
entryType: 'measure',
|
|
55
|
+
startTime: 0,
|
|
56
|
+
duration: measureOptions?.duration ?? 0,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (measureOptions) {
|
|
60
|
+
this.detail = measureOptions.detail;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -8,15 +8,16 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {TurboModule} from '
|
|
11
|
+
import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
|
|
12
12
|
|
|
13
|
-
import * as TurboModuleRegistry from '
|
|
13
|
+
import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
|
|
14
14
|
|
|
15
15
|
export type NativeMemoryInfo = {[key: string]: ?number};
|
|
16
16
|
|
|
17
17
|
export type ReactNativeStartupTiming = {[key: string]: ?number};
|
|
18
18
|
|
|
19
19
|
export interface Spec extends TurboModule {
|
|
20
|
+
+now?: () => number;
|
|
20
21
|
+mark: (name: string, startTime: number) => void;
|
|
21
22
|
+measure: (
|
|
22
23
|
name: string,
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {TurboModule} from '
|
|
11
|
+
import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
|
|
12
12
|
|
|
13
|
-
import * as TurboModuleRegistry from '
|
|
13
|
+
import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
|
|
14
14
|
|
|
15
15
|
export type RawPerformanceEntryType = number;
|
|
16
16
|
|
|
@@ -14,8 +14,8 @@ import type {
|
|
|
14
14
|
Spec as NativePerformance,
|
|
15
15
|
} from '../NativePerformance';
|
|
16
16
|
|
|
17
|
+
import {RawPerformanceEntryTypeValues} from '../../RawPerformanceEntry';
|
|
17
18
|
import NativePerformanceObserver from '../NativePerformanceObserver';
|
|
18
|
-
import {RawPerformanceEntryTypeValues} from '../RawPerformanceEntry';
|
|
19
19
|
|
|
20
20
|
const marks: Map<string, number> = new Map();
|
|
21
21
|
|
package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js
RENAMED
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
Spec as NativePerformanceObserver,
|
|
16
16
|
} from '../NativePerformanceObserver';
|
|
17
17
|
|
|
18
|
-
import {RawPerformanceEntryTypeValues} from '
|
|
18
|
+
import {RawPerformanceEntryTypeValues} from '../../RawPerformanceEntry';
|
|
19
19
|
|
|
20
20
|
const reportingType: Set<RawPerformanceEntryType> = new Set();
|
|
21
21
|
const isAlwaysLogged: Set<RawPerformanceEntryType> = new Set();
|
|
@@ -95,11 +95,10 @@ const NativePerformanceObserverMock: NativePerformanceObserver = {
|
|
|
95
95
|
durationThresholds.set(entryType, durationThreshold);
|
|
96
96
|
},
|
|
97
97
|
|
|
98
|
-
clearEntries: (entryType
|
|
98
|
+
clearEntries: (entryType?: RawPerformanceEntryType, entryName?: string) => {
|
|
99
99
|
entries = entries.filter(
|
|
100
100
|
e =>
|
|
101
|
-
(entryType
|
|
102
|
-
e.entryType !== entryType) ||
|
|
101
|
+
(entryType != null && e.entryType !== entryType) ||
|
|
103
102
|
(entryName != null && e.name !== entryName),
|
|
104
103
|
);
|
|
105
104
|
},
|
|
@@ -21,48 +21,6 @@ import {
|
|
|
21
21
|
import {Touchable} from 'react-native/Libraries/Components/Touchable/Touchable';
|
|
22
22
|
import {AccessibilityProps} from './ViewAccessibility';
|
|
23
23
|
|
|
24
|
-
export type TVParallaxProperties = {
|
|
25
|
-
/**
|
|
26
|
-
* If true, parallax effects are enabled. Defaults to true.
|
|
27
|
-
*/
|
|
28
|
-
enabled?: boolean | undefined;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Defaults to 2.0.
|
|
32
|
-
*/
|
|
33
|
-
shiftDistanceX?: number | undefined;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Defaults to 2.0.
|
|
37
|
-
*/
|
|
38
|
-
shiftDistanceY?: number | undefined;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Defaults to 0.05.
|
|
42
|
-
*/
|
|
43
|
-
tiltAngle?: number | undefined;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Defaults to 1.0
|
|
47
|
-
*/
|
|
48
|
-
magnification?: number | undefined;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Defaults to 1.0
|
|
52
|
-
*/
|
|
53
|
-
pressMagnification?: number | undefined;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Defaults to 0.3
|
|
57
|
-
*/
|
|
58
|
-
pressDuration?: number | undefined;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Defaults to 0.3
|
|
62
|
-
*/
|
|
63
|
-
pressDelay?: number | undefined;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
24
|
export interface TVViewPropsIOS {
|
|
67
25
|
/**
|
|
68
26
|
* *(Apple TV only)* When set to true, this view will be focusable
|
|
@@ -79,13 +37,6 @@ export interface TVViewPropsIOS {
|
|
|
79
37
|
*/
|
|
80
38
|
hasTVPreferredFocus?: boolean | undefined;
|
|
81
39
|
|
|
82
|
-
/**
|
|
83
|
-
* *(Apple TV only)* Object with properties to control Apple TV parallax effects.
|
|
84
|
-
*
|
|
85
|
-
* @platform ios
|
|
86
|
-
*/
|
|
87
|
-
tvParallaxProperties?: TVParallaxProperties | undefined;
|
|
88
|
-
|
|
89
40
|
/**
|
|
90
41
|
* *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.
|
|
91
42
|
*
|
|
@@ -137,6 +88,13 @@ export interface ViewPropsAndroid {
|
|
|
137
88
|
*/
|
|
138
89
|
collapsable?: boolean | undefined;
|
|
139
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Setting to false prevents direct children of the view from being removed
|
|
93
|
+
* from the native view hierarchy, similar to the effect of setting
|
|
94
|
+
* `collapsable={false}` on each child.
|
|
95
|
+
*/
|
|
96
|
+
collapsableChildren?: boolean | undefined;
|
|
97
|
+
|
|
140
98
|
/**
|
|
141
99
|
* Whether this view should render itself (and all of its children) into a single hardware texture on the GPU.
|
|
142
100
|
*
|
|
@@ -132,6 +132,10 @@ declare interface Headers {
|
|
|
132
132
|
get(name: string): string | null;
|
|
133
133
|
has(name: string): boolean;
|
|
134
134
|
set(name: string, value: string): void;
|
|
135
|
+
entries(): IterableIterator<[string, string]>;
|
|
136
|
+
keys(): IterableIterator<string>;
|
|
137
|
+
values(): IterableIterator<string>;
|
|
138
|
+
[Symbol.iterator](): IterableIterator<[string, string]>;
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
declare var Headers: {
|