@office-iss/react-native-win32 0.71.5 → 0.72.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.
Files changed (324) hide show
  1. package/.flowconfig +15 -3
  2. package/CHANGELOG.json +302 -47
  3. package/CHANGELOG.md +141 -27
  4. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  6. package/Libraries/Alert/Alert.d.ts +4 -4
  7. package/Libraries/Alert/Alert.win32.js +1 -0
  8. package/Libraries/Animated/Animated.d.ts +17 -6
  9. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  10. package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
  11. package/Libraries/Animated/bezier.js +1 -1
  12. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  13. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  14. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  15. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  16. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  17. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  18. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  19. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  20. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  21. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedProps.js +7 -10
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.win32.js +451 -0
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  40. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  41. package/Libraries/Components/Pressable/Pressable.js +1 -1
  42. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  43. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  44. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
  45. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  46. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  47. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  48. package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
  49. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  50. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  51. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  52. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  53. package/Libraries/Components/Switch/Switch.js +3 -1
  54. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  55. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  57. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
  58. package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
  59. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
  60. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +130 -103
  63. package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
  64. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  65. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  66. package/Libraries/Components/Touchable/Touchable.js +6 -3
  67. package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
  68. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  71. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  73. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
  74. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  75. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  76. package/Libraries/Components/View/View.js +71 -45
  77. package/Libraries/Components/View/View.win32.js +38 -16
  78. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  79. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  80. package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  81. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  82. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  83. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  84. package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  86. package/Libraries/Components/View/ViewWin32.js +3 -3
  87. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  88. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  89. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  90. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  91. package/Libraries/Core/ExceptionsManager.js +2 -2
  92. package/Libraries/Core/InitializeCore.js +2 -1
  93. package/Libraries/Core/ReactNativeVersion.js +3 -3
  94. package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
  95. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -9
  96. package/Libraries/Core/Timers/JSTimers.js +1 -1
  97. package/Libraries/Core/Timers/immediateShim.js +1 -0
  98. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  99. package/Libraries/Core/setUpAlert.js +1 -1
  100. package/Libraries/Core/setUpDOM.js +18 -0
  101. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  102. package/Libraries/Core/setUpGlobals.js +5 -2
  103. package/Libraries/Core/setUpNavigator.js +6 -5
  104. package/Libraries/Core/setUpPerformance.js +23 -13
  105. package/Libraries/Core/setUpReactDevTools.js +2 -0
  106. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  107. package/Libraries/Core/setUpTimers.js +2 -2
  108. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  109. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  110. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  111. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  112. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  113. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  114. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  115. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  116. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  117. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  118. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  119. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  120. package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
  121. package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
  122. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  123. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  124. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  125. package/Libraries/Events/EventPolyfill.js +1 -1
  126. package/Libraries/Image/AssetRegistry.js +1 -1
  127. package/Libraries/Image/AssetSourceResolver.js +3 -3
  128. package/Libraries/Image/Image.android.js +4 -1
  129. package/Libraries/Image/Image.d.ts +63 -2
  130. package/Libraries/Image/Image.ios.js +3 -0
  131. package/Libraries/Image/Image.win32.js +3 -0
  132. package/Libraries/Image/ImageBackground.js +1 -0
  133. package/Libraries/Image/ImageProps.js +1 -1
  134. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  135. package/Libraries/Image/RelativeImageStub.js +1 -1
  136. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  137. package/Libraries/Image/resolveAssetSource.js +1 -1
  138. package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
  139. package/Libraries/Inspector/ElementBox.js +4 -1
  140. package/Libraries/Inspector/Inspector.js +5 -6
  141. package/Libraries/Inspector/Inspector.win32.js +7 -6
  142. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  143. package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
  144. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  145. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  146. package/Libraries/Interaction/PanResponder.js +5 -6
  147. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  148. package/Libraries/Linking/Linking.js +1 -4
  149. package/Libraries/Lists/FillRateHelper.js +4 -238
  150. package/Libraries/Lists/FlatList.d.ts +15 -22
  151. package/Libraries/Lists/FlatList.js +9 -6
  152. package/Libraries/Lists/SectionList.d.ts +10 -6
  153. package/Libraries/Lists/SectionList.js +5 -3
  154. package/Libraries/Lists/SectionListModern.js +3 -3
  155. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  156. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  157. package/Libraries/Lists/VirtualizedList.js +10 -1867
  158. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  159. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  160. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  161. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  162. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  163. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  164. package/Libraries/LogBox/LogBox.js +1 -1
  165. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  166. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
  167. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
  168. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
  169. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  170. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  171. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
  172. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  173. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  174. package/Libraries/Modal/Modal.js +2 -2
  175. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  176. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  177. package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
  178. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  179. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  180. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  181. package/Libraries/Network/RCTNetworking.android.js +2 -2
  182. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  183. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  184. package/Libraries/Network/XMLHttpRequest.js +1 -1
  185. package/Libraries/Pressability/Pressability.js +11 -5
  186. package/Libraries/Pressability/Pressability.win32.js +9 -3
  187. package/Libraries/ReactNative/AppContainer.js +7 -1
  188. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  189. package/Libraries/ReactNative/AppRegistry.js +10 -13
  190. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  191. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  192. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  193. package/Libraries/ReactNative/UIManager.js +142 -1
  194. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  195. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  196. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  197. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  198. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  199. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  200. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  201. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  202. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  203. package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
  204. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  205. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  206. package/Libraries/Share/Share.js +1 -1
  207. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  208. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  209. package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
  210. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  211. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  212. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  213. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  214. package/Libraries/StyleSheet/processColor.js +1 -1
  215. package/Libraries/Text/Text.d.ts +12 -2
  216. package/Libraries/Text/Text.js +50 -41
  217. package/Libraries/Text/TextProps.js +3 -4
  218. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  219. package/Libraries/Types/CodegenTypes.js +1 -0
  220. package/Libraries/UTFSequence.js +3 -1
  221. package/Libraries/Utilities/Appearance.d.ts +10 -0
  222. package/Libraries/Utilities/Appearance.js +13 -0
  223. package/Libraries/Utilities/Dimensions.js +1 -1
  224. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  225. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  226. package/Libraries/Utilities/HMRClient.js +16 -10
  227. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  228. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  229. package/Libraries/Utilities/LoadingView.android.js +28 -11
  230. package/Libraries/Utilities/NativeAppearance.js +1 -0
  231. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  232. package/Libraries/Utilities/PixelRatio.js +2 -2
  233. package/Libraries/Utilities/Platform.win32.js +1 -1
  234. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  235. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  236. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  237. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  238. package/Libraries/Utilities/stringifySafe.js +2 -7
  239. package/Libraries/Utilities/useColorScheme.js +1 -1
  240. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  241. package/Libraries/WebPerformance/EventCounts.js +78 -0
  242. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  243. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  244. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  245. package/Libraries/WebPerformance/Performance.js +312 -0
  246. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  247. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  248. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  249. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  250. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  251. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  252. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  253. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  254. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  255. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  256. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  257. package/flow/global.js +29 -4
  258. package/flow/jest.js +258 -164
  259. package/index.js +56 -42
  260. package/index.win32.js +56 -42
  261. package/interface.js +1 -1
  262. package/jest/local-setup.js +33 -0
  263. package/jest/mockComponent.js +4 -2
  264. package/jest/mockNativeComponent.js +1 -1
  265. package/jest/mockScrollView.js +2 -1
  266. package/jest/react-native-env.js +1 -3
  267. package/jest/setup.js +11 -8
  268. package/overrides.json +115 -85
  269. package/package.json +38 -28
  270. package/rn-get-polyfills.js +1 -1
  271. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
  272. package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  273. package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  274. package/types/index.d.ts +2 -6
  275. package/types/modules/Codegen.d.ts +4 -4
  276. package/types/modules/globals.d.ts +27 -25
  277. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
  278. package/types/public/ReactNativeRenderer.d.ts +2 -7
  279. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  280. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  281. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  282. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  283. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  284. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  285. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  286. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  287. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  288. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
  289. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  290. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  291. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  292. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  293. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  294. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
  295. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  296. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  297. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  298. package/Libraries/Components/Slider/Slider.js +0 -282
  299. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  300. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
  301. package/Libraries/Interaction/Batchinator.js +0 -76
  302. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  303. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  304. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  305. package/Libraries/Lists/CellRenderMask.js +0 -155
  306. package/Libraries/Lists/ChildListCollection.js +0 -72
  307. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  308. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  309. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  310. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  311. package/Libraries/Performance/PureComponentDebug.js +0 -74
  312. package/Libraries/Reliability/UserFlow.js +0 -158
  313. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  314. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  315. package/Libraries/Utilities/MatrixMath.js +0 -748
  316. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  317. package/Libraries/Utilities/clamp.js +0 -23
  318. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  319. package/Libraries/Utilities/groupByEveryN.js +0 -51
  320. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  321. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  322. package/Libraries/Utilities/truncate.js +0 -51
  323. package/flow/JSITimerInternalType.js +0 -30
  324. package/flow/use-sync-external-store.js +0 -19
@@ -8,53 +8,28 @@
8
8
  * @format
9
9
  */
10
10
 
11
- const Systrace = require('../Performance/Systrace');
12
- const infoLog = require('./infoLog');
11
+ import type {
12
+ Extras,
13
+ ExtraValue,
14
+ IPerformanceLogger,
15
+ Timespan,
16
+ } from './IPerformanceLogger';
13
17
 
14
- export type Timespan = {
15
- startTime: number,
16
- endTime?: number,
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(): IPerformanceLogger {
327
- return new PerformanceLogger();
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 ... ]`;
@@ -13,7 +13,7 @@
13
13
  import type {ColorSchemeName} from './NativeAppearance';
14
14
 
15
15
  import Appearance from './Appearance';
16
- import {useSyncExternalStore} from 'use-sync-external-store/shim';
16
+ import {useSyncExternalStore} from 'react';
17
17
 
18
18
  export default function useColorScheme(): ?ColorSchemeName {
19
19
  return useSyncExternalStore(
@@ -22,9 +22,9 @@ export default function useWindowDimensions():
22
22
  useEffect(() => {
23
23
  function handleChange({
24
24
  window,
25
- }:
26
- | $FlowFixMe
27
- | $TEMPORARY$object<{window: DisplayMetrics | DisplayMetricsAndroid}>) {
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: string) => void;
34
- +stopReporting: (entryType: string) => void;
35
- +getPendingEntries: () => $ReadOnlyArray<RawPerformanceEntry>;
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>(