@office-iss/react-native-win32 0.80.0 → 0.81.0-preview.3

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 (513) hide show
  1. package/.flowconfig +10 -4
  2. package/CHANGELOG.json +142 -13
  3. package/CHANGELOG.md +57 -8
  4. package/IntegrationTests/AccessibilityManagerTest.js +1 -1
  5. package/IntegrationTests/AppEventsTest.js +1 -1
  6. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
  7. package/IntegrationTests/ImageCachePolicyTest.js +2 -2
  8. package/IntegrationTests/ImageSnapshotTest.js +1 -1
  9. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
  10. package/IntegrationTests/IntegrationTestsApp.js +2 -1
  11. package/IntegrationTests/LayoutEventsTest.js +1 -1
  12. package/IntegrationTests/LoggingTestModule.js +16 -20
  13. package/IntegrationTests/PromiseTest.js +1 -1
  14. package/IntegrationTests/SimpleSnapshotTest.js +1 -1
  15. package/IntegrationTests/SyncMethodTest.js +1 -1
  16. package/IntegrationTests/TimersTest.js +2 -1
  17. package/IntegrationTests/WebSocketTest.js +2 -1
  18. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  19. package/Libraries/Alert/Alert.js +3 -3
  20. package/Libraries/Alert/Alert.win32.js +1 -1
  21. package/Libraries/Alert/NativeAlertManager.js +1 -0
  22. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  23. package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
  24. package/Libraries/Alert/RCTAlertManager.js +1 -3
  25. package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
  26. package/Libraries/Animated/Animated.js +0 -1
  27. package/Libraries/Animated/Animated.js.flow +0 -1
  28. package/Libraries/Animated/AnimatedEvent.js +4 -3
  29. package/Libraries/Animated/AnimatedExports.js +0 -1
  30. package/Libraries/Animated/AnimatedExports.js.flow +5 -1
  31. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  32. package/Libraries/Animated/AnimatedMock.js +2 -2
  33. package/Libraries/Animated/Easing.js +1 -1
  34. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  35. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  36. package/Libraries/Animated/SpringConfig.js +1 -1
  37. package/Libraries/Animated/animations/Animation.js +10 -2
  38. package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
  39. package/Libraries/Animated/components/AnimatedText.js +2 -5
  40. package/Libraries/Animated/components/AnimatedView.js +2 -1
  41. package/Libraries/Animated/createAnimatedComponent.js +39 -37
  42. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  43. package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
  44. package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
  45. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  46. package/Libraries/AppState/NativeAppState.js +1 -0
  47. package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
  48. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  49. package/Libraries/Blob/BlobManager.js +4 -0
  50. package/Libraries/Blob/NativeBlobModule.js +1 -0
  51. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  52. package/Libraries/Blob/URL.js +1 -1
  53. package/Libraries/Blob/URLSearchParams.js +5 -1
  54. package/Libraries/Blob/URLSearchParams.js.flow +2 -1
  55. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  56. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +1 -2
  57. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  58. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
  59. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
  60. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
  61. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +1 -1
  62. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
  63. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  64. package/Libraries/Components/Button.js +10 -7
  65. package/Libraries/Components/Button.win32.js +10 -7
  66. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  67. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  68. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
  69. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
  70. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
  71. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
  72. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
  73. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
  74. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  75. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
  76. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  77. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  78. package/Libraries/Components/Pressable/Pressable.js +17 -8
  79. package/Libraries/Components/Pressable/Pressable.win32.js +17 -14
  80. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  81. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  82. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
  83. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
  84. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
  85. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  86. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
  87. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  88. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  89. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +3 -2
  90. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
  91. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  92. package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
  93. package/Libraries/Components/ScrollView/ScrollView.js +25 -15
  94. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  95. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  96. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  97. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  98. package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
  99. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  100. package/Libraries/Components/Sound/SoundManager.js +1 -1
  101. package/Libraries/Components/StaticRenderer.js +1 -1
  102. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  103. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  104. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  105. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  106. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
  107. package/Libraries/Components/Switch/Switch.js +10 -3
  108. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
  109. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
  110. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
  111. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  112. package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
  113. package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
  114. package/Libraries/Components/TextInput/TextInput.flow.win32.js +12 -14
  115. package/Libraries/Components/TextInput/TextInput.js +42 -39
  116. package/Libraries/Components/TextInput/TextInput.win32.js +69 -38
  117. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  118. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  119. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  120. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  121. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
  122. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  123. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
  124. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +1 -1
  125. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
  126. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  127. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  128. package/Libraries/Components/Touchable/Position.js +1 -1
  129. package/Libraries/Components/Touchable/Touchable.js +17 -3
  130. package/Libraries/Components/Touchable/Touchable.win32.js +17 -3
  131. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  132. package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
  133. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
  134. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +5 -2
  135. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  136. package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
  137. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  138. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
  139. package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
  140. package/Libraries/Components/View/View.js +114 -29
  141. package/Libraries/Components/View/View.win32.js +17 -3
  142. package/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  143. package/Libraries/Components/View/ViewAccessibility.js +1 -8
  144. package/Libraries/Components/View/ViewAccessibility.win32.js +1 -8
  145. package/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
  146. package/Libraries/Components/View/ViewPropTypes.js +9 -1
  147. package/Libraries/Components/View/ViewPropTypes.win32.js +9 -1
  148. package/Libraries/Core/Devtools/getDevServer.js +1 -1
  149. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  150. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +49 -7
  151. package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
  152. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
  153. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  154. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  155. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  156. package/Libraries/Core/ExceptionsManager.js +27 -16
  157. package/Libraries/Core/InitializeCore.js +2 -23
  158. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  159. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  160. package/Libraries/Core/ReactNativeVersion.js +3 -2
  161. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  162. package/Libraries/Core/Timers/JSTimers.js +1 -1
  163. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  164. package/Libraries/Core/Timers/immediateShim.js +1 -1
  165. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  166. package/Libraries/Core/checkNativeVersion.js +1 -0
  167. package/Libraries/Core/setUpDeveloperTools.js +13 -11
  168. package/Libraries/Core/setUpReactDevTools.js +21 -4
  169. package/Libraries/Debugging/DebuggingOverlay.js +12 -14
  170. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
  171. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  172. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  173. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  174. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  175. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  176. package/Libraries/Image/AssetRegistry.js +4 -10
  177. package/Libraries/Image/Image.android.js +113 -107
  178. package/Libraries/Image/Image.ios.js +10 -2
  179. package/Libraries/Image/Image.win32.js +11 -3
  180. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  181. package/Libraries/Image/ImageInjection.js +1 -1
  182. package/Libraries/Image/ImageSource.d.ts +5 -0
  183. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  184. package/Libraries/Image/NativeImageEditor.js +1 -0
  185. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  186. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  187. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  188. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  189. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  190. package/Libraries/Image/RelativeImageStub.js +2 -1
  191. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
  192. package/Libraries/Image/resolveAssetSource.js +1 -1
  193. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  194. package/Libraries/Interaction/InteractionManager.js +64 -54
  195. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  196. package/Libraries/Interaction/TaskQueue.js +8 -9
  197. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  198. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  199. package/Libraries/Linking/Linking.js +1 -1
  200. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  201. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  202. package/Libraries/Lists/FlatList.d.ts +9 -5
  203. package/Libraries/Lists/FlatList.js +6 -7
  204. package/Libraries/Lists/SectionList.js +4 -4
  205. package/Libraries/Lists/SectionListModern.js +9 -3
  206. package/Libraries/Lists/VirtualizedList.js +3 -2
  207. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  208. package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
  209. package/Libraries/LogBox/LogBox.js +72 -99
  210. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  211. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  212. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +2 -1
  213. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  214. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +3 -2
  215. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  216. package/Libraries/Modal/Modal.d.ts +8 -2
  217. package/Libraries/Modal/Modal.js +24 -3
  218. package/Libraries/Modal/NativeModalManager.js +1 -0
  219. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
  220. package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
  221. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
  222. package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
  223. package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -17
  224. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
  225. package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
  226. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  227. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  228. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  229. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  230. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  231. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  232. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  233. package/Libraries/Network/FormData.js +1 -1
  234. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  235. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  236. package/Libraries/Network/RCTNetworking.android.js +2 -2
  237. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  238. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  239. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  240. package/Libraries/Network/XMLHttpRequest.js +3 -3
  241. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  242. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
  243. package/Libraries/Pressability/Pressability.js +1 -1
  244. package/Libraries/Pressability/Pressability.win32.js +1 -1
  245. package/Libraries/Promise.js +1 -1
  246. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  247. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
  248. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  249. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  250. package/Libraries/ReactNative/AppContainer.js +1 -1
  251. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  252. package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
  253. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  254. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  255. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  256. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  257. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  258. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  259. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
  260. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
  261. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
  262. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  263. package/Libraries/ReactNative/RendererProxy.js +1 -1
  264. package/Libraries/ReactNative/RootTag.js +2 -2
  265. package/Libraries/ReactNative/renderApplication.js +1 -1
  266. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  267. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
  268. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
  269. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  270. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  271. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  272. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
  273. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +261 -0
  274. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  275. package/Libraries/Settings/Settings.ios.js +1 -1
  276. package/Libraries/Settings/Settings.js +1 -1
  277. package/Libraries/Settings/SettingsFallback.js +1 -1
  278. package/Libraries/Share/NativeShareModule.js +1 -0
  279. package/Libraries/Share/Share.js +1 -1
  280. package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
  281. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  282. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  283. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
  284. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  285. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
  286. package/Libraries/StyleSheet/PointPropType.js +1 -1
  287. package/Libraries/StyleSheet/Rect.js +1 -1
  288. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  289. package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
  290. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  291. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  292. package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
  293. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  294. package/Libraries/StyleSheet/processColor.js +1 -1
  295. package/Libraries/StyleSheet/processColorArray.js +1 -1
  296. package/Libraries/StyleSheet/processFilter.js +1 -2
  297. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  298. package/Libraries/StyleSheet/processTransform.js +1 -1
  299. package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
  300. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  301. package/Libraries/Text/Text.d.ts +7 -0
  302. package/Libraries/Text/Text.js +255 -246
  303. package/Libraries/Text/Text.win32.js +294 -285
  304. package/Libraries/Text/TextAncestor.js +3 -9
  305. package/Libraries/Text/TextAncestorContext.js +23 -0
  306. package/Libraries/Text/TextNativeComponent.js +4 -0
  307. package/Libraries/Text/TextNativeComponent.win32.js +4 -0
  308. package/Libraries/Text/TextProps.js +2 -5
  309. package/Libraries/Text/TextProps.win32.js +2 -7
  310. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  311. package/Libraries/Types/CodegenTypes.js +1 -1
  312. package/Libraries/Types/CodegenTypesNamespace.js +2 -1
  313. package/Libraries/Types/CoreEventTypes.d.ts +4 -0
  314. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  315. package/Libraries/Utilities/Appearance.js +1 -1
  316. package/Libraries/Utilities/BackHandler.js.flow +1 -1
  317. package/Libraries/Utilities/DevLoadingView.js +1 -1
  318. package/Libraries/Utilities/DeviceInfo.js +1 -1
  319. package/Libraries/Utilities/Dimensions.js +1 -1
  320. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  321. package/Libraries/Utilities/HMRClient.js +13 -3
  322. package/Libraries/Utilities/HMRClientProdShim.js +1 -1
  323. package/Libraries/Utilities/NativeAppearance.js +1 -0
  324. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  325. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  326. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  327. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  328. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  329. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  330. package/Libraries/Utilities/PixelRatio.js +1 -1
  331. package/Libraries/Utilities/Platform.android.js +2 -5
  332. package/Libraries/Utilities/Platform.ios.js +2 -5
  333. package/Libraries/Utilities/Platform.js +1 -1
  334. package/Libraries/Utilities/Platform.js.flow +2 -2
  335. package/Libraries/Utilities/Platform.win32.js +2 -5
  336. package/Libraries/Utilities/PlatformTypes.js +2 -2
  337. package/Libraries/Utilities/RCTLog.js +1 -1
  338. package/Libraries/Utilities/SceneTracker.js +1 -1
  339. package/Libraries/Utilities/binaryToBase64.js +1 -1
  340. package/Libraries/Utilities/codegenNativeCommands.js +5 -3
  341. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  342. package/Libraries/Utilities/createPerformanceLogger.js +27 -20
  343. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  344. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  345. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  346. package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
  347. package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
  348. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  349. package/Libraries/Utilities/logError.js +1 -1
  350. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  351. package/Libraries/Utilities/stringifySafe.js +1 -1
  352. package/Libraries/Utilities/stringifyViewConfig.js +1 -1
  353. package/Libraries/Utilities/useColorScheme.js +1 -1
  354. package/Libraries/Utilities/useWindowDimensions.js +1 -1
  355. package/Libraries/Utilities/warnOnce.js +1 -1
  356. package/Libraries/Vibration/NativeVibration.js +1 -0
  357. package/Libraries/Vibration/Vibration.js +1 -2
  358. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  359. package/Libraries/WebSocket/WebSocket.js +1 -1
  360. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  361. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  362. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  363. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  364. package/index.js +22 -2
  365. package/index.win32.js +15 -2
  366. package/interface.js +1 -1
  367. package/jest/MockNativeMethods.js +9 -3
  368. package/jest/RefreshControlMock.js +32 -0
  369. package/jest/assetFileTransformer.js +1 -0
  370. package/jest/local-setup.js +4 -3
  371. package/jest/mock.js +39 -0
  372. package/jest/mockComponent.js +47 -17
  373. package/jest/mockNativeComponent.js +26 -15
  374. package/jest/mocks/AccessibilityInfo.js +62 -0
  375. package/jest/mocks/ActivityIndicator.js +23 -0
  376. package/jest/mocks/AppState.js +19 -0
  377. package/{flow/Stringish.js → jest/mocks/Clipboard.js} +6 -4
  378. package/jest/mocks/Image.js +23 -0
  379. package/jest/mocks/InitializeCore.js +9 -0
  380. package/jest/mocks/Linking.js +28 -0
  381. package/jest/mocks/Modal.js +33 -0
  382. package/jest/mocks/NativeComponentRegistry.js +30 -0
  383. package/jest/mocks/NativeModules.js +239 -0
  384. package/jest/mocks/RefreshControl.js +31 -0
  385. package/jest/mocks/RendererProxy.js +45 -0
  386. package/jest/mocks/ScrollView.js +58 -0
  387. package/jest/mocks/Text.js +27 -0
  388. package/jest/mocks/TextInput.js +32 -0
  389. package/jest/mocks/UIManager.js +60 -0
  390. package/jest/mocks/Vibration.js +16 -0
  391. package/jest/mocks/View.js +27 -0
  392. package/jest/mocks/ViewNativeComponent.js +23 -0
  393. package/jest/mocks/requireNativeComponent.js +22 -0
  394. package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
  395. package/jest/react-native-env.js +1 -0
  396. package/jest/renderer.js +1 -2
  397. package/jest/resolver.js +1 -0
  398. package/jest/setup.js +64 -445
  399. package/overrides.json +49 -42
  400. package/package.json +20 -20
  401. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  402. package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
  403. package/src/private/animated/createAnimatedPropsHook.js +14 -4
  404. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
  405. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  406. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  407. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  408. package/src/private/components/virtualview/VirtualView.js +145 -0
  409. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  410. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
  411. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
  412. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
  413. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  414. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
  415. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
  416. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
  417. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
  418. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
  419. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  420. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
  421. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
  422. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  423. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
  424. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  425. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  426. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  427. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.win32.js +8 -9
  428. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  429. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  430. package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
  431. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
  432. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
  433. package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
  434. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  435. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  436. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
  437. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
  438. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
  439. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
  440. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  441. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  442. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  443. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
  444. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  445. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
  446. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
  447. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  448. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
  449. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  450. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  451. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  452. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
  453. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  454. package/src/private/styles/composeStyles.js +5 -12
  455. package/src/private/types/HostInstance.js +1 -1
  456. package/src/private/webapis/dom/events/Event.js +3 -0
  457. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  458. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
  459. package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
  460. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
  461. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  462. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
  463. package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
  464. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
  465. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  466. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  467. package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
  468. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  469. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
  470. package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
  471. package/src/private/webapis/errors/DOMException.js +166 -0
  472. package/src/private/webapis/geometry/DOMRect.js +5 -0
  473. package/src/private/webapis/geometry/DOMRectList.js +4 -1
  474. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  475. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  476. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  477. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  478. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
  479. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  480. package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
  481. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  482. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
  483. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
  484. package/src/private/webapis/performance/EventTiming.js +1 -1
  485. package/src/private/webapis/performance/LongTasks.js +1 -1
  486. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  487. package/src/private/webapis/performance/Performance.js +20 -9
  488. package/src/private/webapis/performance/PerformanceEntry.js +5 -1
  489. package/src/private/webapis/performance/PerformanceObserver.js +32 -28
  490. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  491. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  492. package/src/private/webapis/performance/UserTiming.js +1 -1
  493. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
  494. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  495. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  496. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  497. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  498. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  499. package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  500. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
  501. package/src-win/Libraries/Text/Text.d.ts +7 -0
  502. package/types/modules/Devtools.d.ts +23 -9
  503. package/Libraries/BugReporting/BugReporting.js +0 -140
  504. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  505. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  506. package/Libraries/BugReporting/getReactData.js +0 -187
  507. package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
  508. package/flow/HermesInternalType.js +0 -114
  509. package/flow/console.js +0 -49
  510. package/flow/global.js +0 -88
  511. package/jest/mockModal.js +0 -32
  512. package/jest/mockScrollView.js +0 -35
  513. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
@@ -41,13 +41,6 @@ const registeredMutationObservers: Map<
41
41
  $ReadOnly<{observer: MutationObserver, callback: MutationObserverCallback}>,
42
42
  > = new Map();
43
43
 
44
- // The mapping between ReactNativeElement and their corresponding shadow node
45
- // needs to be kept here because React removes the link when unmounting.
46
- const targetToShadowNodeMap: WeakMap<
47
- ReactNativeElement,
48
- ReturnType<typeof getNativeNodeReference>,
49
- > = new WeakMap();
50
-
51
44
  /**
52
45
  * Registers the given mutation observer and returns a unique ID for it,
53
46
  * which is required to start observing targets.
@@ -90,10 +83,10 @@ export function observe({
90
83
  mutationObserverId: MutationObserverId,
91
84
  target: ReactNativeElement,
92
85
  subtree: boolean,
93
- }): boolean {
86
+ }): void {
94
87
  if (NativeMutationObserver == null) {
95
88
  warnNoNativeMutationObserver();
96
- return false;
89
+ return;
97
90
  }
98
91
 
99
92
  const registeredObserver =
@@ -102,17 +95,15 @@ export function observe({
102
95
  console.error(
103
96
  `MutationObserverManager: could not start observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
104
97
  );
105
- return false;
98
+ return;
106
99
  }
107
100
 
108
101
  const targetShadowNode = getNativeNodeReference(target);
109
102
  if (targetShadowNode == null) {
110
103
  // The target is disconnected. We can't observe it anymore.
111
- return false;
104
+ return;
112
105
  }
113
106
 
114
- targetToShadowNodeMap.set(target, targetShadowNode);
115
-
116
107
  if (!isConnected) {
117
108
  NativeMutationObserver.connect(
118
109
  notifyMutationObservers,
@@ -131,14 +122,9 @@ export function observe({
131
122
  targetShadowNode,
132
123
  subtree,
133
124
  });
134
-
135
- return true;
136
125
  }
137
126
 
138
- export function unobserve(
139
- mutationObserverId: number,
140
- target: ReactNativeElement,
141
- ): void {
127
+ export function unobserveAll(mutationObserverId: number): void {
142
128
  if (NativeMutationObserver == null) {
143
129
  warnNoNativeMutationObserver();
144
130
  return;
@@ -148,20 +134,12 @@ export function unobserve(
148
134
  registeredMutationObservers.get(mutationObserverId);
149
135
  if (registeredObserver == null) {
150
136
  console.error(
151
- `MutationObserverManager: could not stop observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
152
- );
153
- return;
154
- }
155
-
156
- const targetShadowNode = targetToShadowNodeMap.get(target);
157
- if (targetShadowNode == null) {
158
- console.error(
159
- 'MutationObserverManager: could not find registration data for target',
137
+ `MutationObserverManager: could not disconnect MutationObserver with ID ${mutationObserverId} because it was not registered.`,
160
138
  );
161
139
  return;
162
140
  }
163
141
 
164
- NativeMutationObserver.unobserve(mutationObserverId, targetShadowNode);
142
+ NativeMutationObserver.unobserveAll(mutationObserverId);
165
143
  }
166
144
 
167
145
  /**
@@ -36,10 +36,7 @@ export type NativeMutationObserverObserveOptions = {
36
36
 
37
37
  export interface Spec extends TurboModule {
38
38
  +observe: (options: NativeMutationObserverObserveOptions) => void;
39
- +unobserve: (
40
- mutationObserverId: number,
41
- targetShadowNode: ShadowNode,
42
- ) => void;
39
+ +unobserveAll: (mutationObserverId: number) => void;
43
40
  +connect: (
44
41
  notifyMutationObservers: () => void,
45
42
  // We need this to retain the public instance before React removes the
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  // flowlint unsafe-getters-setters:off
13
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
14
15
  type MemoryInfoLike = {
15
16
  jsHeapSizeLimit: ?number,
16
17
  totalJSHeapSize: ?number,
@@ -52,3 +53,5 @@ export default class MemoryInfo {
52
53
  return this.#usedJSHeapSize;
53
54
  }
54
55
  }
56
+
57
+ setPlatformObject(MemoryInfo);
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
@@ -17,6 +17,8 @@ import type {
17
17
  } from './PerformanceEntry';
18
18
  import type {DetailType, PerformanceMarkOptions} from './UserTiming';
19
19
 
20
+ import DOMException from '../errors/DOMException';
21
+ import {setPlatformObject} from '../webidl/PlatformObjects';
20
22
  import {EventCounts} from './EventTiming';
21
23
  import {
22
24
  performanceEntryTypeToRaw,
@@ -191,15 +193,22 @@ export default class Performance {
191
193
  let computedDuration = duration;
192
194
 
193
195
  if (NativePerformance?.measureWithResult) {
194
- [computedStartTime, computedDuration] =
195
- NativePerformance.measureWithResult(
196
- measureName,
197
- startTime,
198
- endTime,
199
- duration,
200
- startMarkName,
201
- endMarkName,
196
+ try {
197
+ [computedStartTime, computedDuration] =
198
+ NativePerformance.measureWithResult(
199
+ measureName,
200
+ startTime,
201
+ endTime,
202
+ duration,
203
+ startMarkName,
204
+ endMarkName,
205
+ );
206
+ } catch (error) {
207
+ throw new DOMException(
208
+ "Failed to execute 'measure' on 'Performance': " + error.message,
209
+ 'SyntaxError',
202
210
  );
211
+ }
203
212
  } else {
204
213
  warnNoNativePerformance();
205
214
  }
@@ -283,3 +292,5 @@ export default class Performance {
283
292
  ).map(rawToPerformanceEntry);
284
293
  }
285
294
  }
295
+
296
+ setPlatformObject(Performance);
@@ -4,12 +4,14 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
12
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
13
15
  export type DOMHighResTimeStamp = number;
14
16
  export type PerformanceEntryType =
15
17
  | 'mark'
@@ -70,4 +72,6 @@ export class PerformanceEntry {
70
72
  }
71
73
  }
72
74
 
75
+ setPlatformObject(PerformanceEntry);
76
+
73
77
  export type PerformanceEntryList = $ReadOnlyArray<PerformanceEntry>;
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  import type {
@@ -23,6 +23,7 @@ import {
23
23
  } from './internals/RawPerformanceEntry';
24
24
  import {warnNoNativePerformance} from './internals/Utilities';
25
25
  import NativePerformance from './specs/NativePerformance';
26
+ import nullthrows from 'nullthrows';
26
27
 
27
28
  export {PerformanceEntry} from './PerformanceEntry';
28
29
 
@@ -130,14 +131,16 @@ export class PerformanceObserver {
130
131
  this.#nativeObserverHandle = this.#createNativeObserver();
131
132
  }
132
133
 
134
+ const observerHandle = nullthrows(this.#nativeObserverHandle);
135
+
133
136
  if (options.entryTypes) {
134
137
  this.#type = 'multiple';
135
- NativePerformance.observe?.(this.#nativeObserverHandle, {
138
+ NativePerformance.observe?.(observerHandle, {
136
139
  entryTypes: options.entryTypes.map(performanceEntryTypeToRaw),
137
140
  });
138
141
  } else if (options.type) {
139
142
  this.#type = 'single';
140
- NativePerformance.observe?.(this.#nativeObserverHandle, {
143
+ NativePerformance.observe?.(observerHandle, {
141
144
  type: performanceEntryTypeToRaw(options.type),
142
145
  buffered: options.buffered,
143
146
  durationThreshold: options.durationThreshold,
@@ -158,37 +161,38 @@ export class PerformanceObserver {
158
161
  NativePerformance.disconnect(this.#nativeObserverHandle);
159
162
  }
160
163
 
161
- #createNativeObserver(): OpaqueNativeObserverHandle {
164
+ #createNativeObserver(): OpaqueNativeObserverHandle | null {
162
165
  if (!NativePerformance || !NativePerformance.createObserver) {
163
166
  warnNoNativePerformance();
164
- return;
167
+ return null;
165
168
  }
166
169
 
167
170
  this.#calledAtLeastOnce = false;
168
171
 
169
- return NativePerformance.createObserver(() => {
170
- const rawEntries = NativePerformance.takeRecords?.(
171
- this.#nativeObserverHandle,
172
- true, // sort records
173
- );
174
- if (!rawEntries) {
175
- return;
176
- }
177
-
178
- const entries = rawEntries.map(rawToPerformanceEntry);
179
- const entryList = new PerformanceObserverEntryList(entries);
180
-
181
- let droppedEntriesCount = 0;
182
- if (!this.#calledAtLeastOnce) {
183
- droppedEntriesCount =
184
- NativePerformance.getDroppedEntriesCount?.(
185
- this.#nativeObserverHandle,
186
- ) ?? 0;
187
- this.#calledAtLeastOnce = true;
188
- }
189
-
190
- this.#callback(entryList, this, {droppedEntriesCount});
191
- });
172
+ const observerHandle: OpaqueNativeObserverHandle =
173
+ NativePerformance.createObserver(() => {
174
+ const rawEntries = NativePerformance.takeRecords?.(
175
+ observerHandle,
176
+ true, // sort records
177
+ );
178
+ if (!rawEntries) {
179
+ return;
180
+ }
181
+
182
+ const entries = rawEntries.map(rawToPerformanceEntry);
183
+ const entryList = new PerformanceObserverEntryList(entries);
184
+
185
+ let droppedEntriesCount = 0;
186
+ if (!this.#calledAtLeastOnce) {
187
+ droppedEntriesCount =
188
+ NativePerformance.getDroppedEntriesCount?.(observerHandle) ?? 0;
189
+ this.#calledAtLeastOnce = true;
190
+ }
191
+
192
+ this.#callback(entryList, this, {droppedEntriesCount});
193
+ });
194
+
195
+ return observerHandle;
192
196
  }
193
197
 
194
198
  #validateObserveOptions(options: PerformanceObserverInit): void {
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  // flowlint unsafe-getters-setters:off
13
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
14
15
  type ReactNativeStartupTimingLike = {
15
16
  startTime: ?number,
16
17
  endTime: ?number,
@@ -89,3 +90,5 @@ export default class ReactNativeStartupTiming {
89
90
  return this.#executeJavaScriptBundleEntryPointEnd;
90
91
  }
91
92
  }
93
+
94
+ setPlatformObject(ReactNativeStartupTiming);
@@ -0,0 +1,108 @@
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
+ // flowlint unsafe-getters-setters:off
12
+
13
+ import type {
14
+ DOMHighResTimeStamp,
15
+ PerformanceEntryJSON,
16
+ } from './PerformanceEntry';
17
+
18
+ import {PerformanceEntry} from './PerformanceEntry';
19
+
20
+ export type PerformanceResourceTimingJSON = {
21
+ ...PerformanceEntryJSON,
22
+ fetchStart: DOMHighResTimeStamp,
23
+ requestStart: DOMHighResTimeStamp,
24
+ connectStart: DOMHighResTimeStamp,
25
+ connectEnd: DOMHighResTimeStamp,
26
+ responseStart: DOMHighResTimeStamp,
27
+ responseEnd: DOMHighResTimeStamp,
28
+ responseStatus: ?number,
29
+ ...
30
+ };
31
+
32
+ export class PerformanceResourceTiming extends PerformanceEntry {
33
+ #fetchStart: DOMHighResTimeStamp;
34
+ #requestStart: DOMHighResTimeStamp;
35
+ #connectStart: DOMHighResTimeStamp;
36
+ #connectEnd: DOMHighResTimeStamp;
37
+ #responseStart: DOMHighResTimeStamp;
38
+ #responseEnd: DOMHighResTimeStamp;
39
+ #responseStatus: ?number;
40
+
41
+ constructor(init: {
42
+ name: string,
43
+ startTime: DOMHighResTimeStamp,
44
+ duration: DOMHighResTimeStamp,
45
+ fetchStart: DOMHighResTimeStamp,
46
+ requestStart: DOMHighResTimeStamp,
47
+ connectStart: DOMHighResTimeStamp,
48
+ connectEnd: DOMHighResTimeStamp,
49
+ responseStart: DOMHighResTimeStamp,
50
+ responseEnd: DOMHighResTimeStamp,
51
+ responseStatus?: number,
52
+ }) {
53
+ super({
54
+ name: init.name,
55
+ entryType: 'resource',
56
+ startTime: init.startTime,
57
+ duration: init.duration,
58
+ });
59
+ this.#fetchStart = init.fetchStart;
60
+ this.#requestStart = init.requestStart;
61
+ this.#connectStart = init.connectStart;
62
+ this.#connectEnd = init.connectEnd;
63
+ this.#responseStart = init.responseStart;
64
+ this.#responseEnd = init.responseEnd;
65
+ this.#responseStatus = init.responseStatus;
66
+ }
67
+
68
+ get fetchStart(): DOMHighResTimeStamp {
69
+ return this.#fetchStart;
70
+ }
71
+
72
+ get requestStart(): DOMHighResTimeStamp {
73
+ return this.#requestStart;
74
+ }
75
+
76
+ get connectStart(): DOMHighResTimeStamp {
77
+ return this.#connectStart;
78
+ }
79
+
80
+ get connectEnd(): DOMHighResTimeStamp {
81
+ return this.#connectEnd;
82
+ }
83
+
84
+ get responseStart(): DOMHighResTimeStamp {
85
+ return this.#responseStart;
86
+ }
87
+
88
+ get responseEnd(): DOMHighResTimeStamp {
89
+ return this.#responseEnd;
90
+ }
91
+
92
+ get responseStatus(): ?number {
93
+ return this.#responseStatus;
94
+ }
95
+
96
+ toJSON(): PerformanceResourceTimingJSON {
97
+ return {
98
+ ...super.toJSON(),
99
+ fetchStart: this.#fetchStart,
100
+ requestStart: this.#requestStart,
101
+ connectStart: this.#connectStart,
102
+ connectEnd: this.#connectEnd,
103
+ responseStart: this.#responseStart,
104
+ responseEnd: this.#responseEnd,
105
+ responseStatus: this.#responseStatus,
106
+ };
107
+ }
108
+ }
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  import type {PerformanceEntryType} from '../PerformanceEntry';
@@ -17,6 +17,7 @@ import type {
17
17
  import {PerformanceEventTiming} from '../EventTiming';
18
18
  import {PerformanceLongTaskTiming} from '../LongTasks';
19
19
  import {PerformanceEntry} from '../PerformanceEntry';
20
+ import {PerformanceResourceTiming} from '../ResourceTiming';
20
21
  import {PerformanceMark, PerformanceMeasure} from '../UserTiming';
21
22
 
22
23
  export const RawPerformanceEntryTypeValues = {
@@ -30,38 +31,52 @@ export const RawPerformanceEntryTypeValues = {
30
31
  export function rawToPerformanceEntry(
31
32
  entry: RawPerformanceEntry,
32
33
  ): PerformanceEntry {
33
- if (entry.entryType === RawPerformanceEntryTypeValues.EVENT) {
34
- return new PerformanceEventTiming({
35
- name: entry.name,
36
- startTime: entry.startTime,
37
- duration: entry.duration,
38
- processingStart: entry.processingStart,
39
- processingEnd: entry.processingEnd,
40
- interactionId: entry.interactionId,
41
- });
42
- } else if (entry.entryType === RawPerformanceEntryTypeValues.LONGTASK) {
43
- return new PerformanceLongTaskTiming({
44
- name: entry.name,
45
- entryType: rawToPerformanceEntryType(entry.entryType),
46
- startTime: entry.startTime,
47
- duration: entry.duration,
48
- });
49
- } else if (entry.entryType === RawPerformanceEntryTypeValues.MARK) {
50
- return new PerformanceMark(entry.name, {
51
- startTime: entry.startTime,
52
- });
53
- } else if (entry.entryType === RawPerformanceEntryTypeValues.MEASURE) {
54
- return new PerformanceMeasure(entry.name, {
55
- startTime: entry.startTime,
56
- duration: entry.duration,
57
- });
58
- } else {
59
- return new PerformanceEntry({
60
- name: entry.name,
61
- entryType: rawToPerformanceEntryType(entry.entryType),
62
- startTime: entry.startTime,
63
- duration: entry.duration,
64
- });
34
+ switch (entry.entryType) {
35
+ case RawPerformanceEntryTypeValues.EVENT:
36
+ return new PerformanceEventTiming({
37
+ name: entry.name,
38
+ startTime: entry.startTime,
39
+ duration: entry.duration,
40
+ processingStart: entry.processingStart,
41
+ processingEnd: entry.processingEnd,
42
+ interactionId: entry.interactionId,
43
+ });
44
+ case RawPerformanceEntryTypeValues.LONGTASK:
45
+ return new PerformanceLongTaskTiming({
46
+ name: entry.name,
47
+ entryType: rawToPerformanceEntryType(entry.entryType),
48
+ startTime: entry.startTime,
49
+ duration: entry.duration,
50
+ });
51
+ case RawPerformanceEntryTypeValues.MARK:
52
+ return new PerformanceMark(entry.name, {
53
+ startTime: entry.startTime,
54
+ });
55
+ case RawPerformanceEntryTypeValues.MEASURE:
56
+ return new PerformanceMeasure(entry.name, {
57
+ startTime: entry.startTime,
58
+ duration: entry.duration,
59
+ });
60
+ case RawPerformanceEntryTypeValues.RESOURCE:
61
+ return new PerformanceResourceTiming({
62
+ name: entry.name,
63
+ startTime: entry.startTime,
64
+ duration: entry.duration,
65
+ fetchStart: entry.fetchStart ?? 0,
66
+ requestStart: entry.requestStart ?? 0,
67
+ connectStart: entry.connectStart ?? 0,
68
+ connectEnd: entry.connectEnd ?? 0,
69
+ responseStart: entry.responseStart ?? 0,
70
+ responseEnd: entry.responseEnd ?? 0,
71
+ responseStatus: entry.responseStatus,
72
+ });
73
+ default:
74
+ return new PerformanceEntry({
75
+ name: entry.name,
76
+ entryType: rawToPerformanceEntryType(entry.entryType),
77
+ startTime: entry.startTime,
78
+ duration: entry.duration,
79
+ });
65
80
  }
66
81
  }
67
82
 
@@ -77,6 +92,8 @@ export function rawToPerformanceEntryType(
77
92
  return 'event';
78
93
  case RawPerformanceEntryTypeValues.LONGTASK:
79
94
  return 'longtask';
95
+ case RawPerformanceEntryTypeValues.RESOURCE:
96
+ return 'resource';
80
97
  default:
81
98
  throw new TypeError(
82
99
  `rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  import warnOnce from '../../../../../Libraries/Utilities/warnOnce';
@@ -39,7 +39,7 @@ export type RawPerformanceEntry = {
39
39
  responseStatus?: number,
40
40
  };
41
41
 
42
- export type OpaqueNativeObserverHandle = mixed;
42
+ export opaque type OpaqueNativeObserverHandle = mixed;
43
43
 
44
44
  export type NativeBatchedObserverCallback = () => void;
45
45
  export type NativePerformanceMarkResult = number;