@office-iss/react-native-win32 0.0.0-canary.284 → 0.0.0-canary.285

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 (351) hide show
  1. package/CHANGELOG.json +40 -1
  2. package/CHANGELOG.md +20 -8
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +38 -17
  4. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -2
  5. package/Libraries/Alert/Alert.flow.js +62 -0
  6. package/Libraries/Alert/Alert.js +4 -27
  7. package/Libraries/Alert/Alert.win32.js +5 -27
  8. package/Libraries/Alert/NativeAlertManager.js +2 -2
  9. package/Libraries/Alert/RCTAlertManager.flow.js +20 -0
  10. package/Libraries/Animated/NativeAnimatedModule.js +2 -2
  11. package/Libraries/Animated/NativeAnimatedTurboModule.js +2 -2
  12. package/Libraries/Animated/createAnimatedComponent.js +3 -3
  13. package/Libraries/Animated/useAnimatedProps.js +4 -294
  14. package/Libraries/AppState/NativeAppState.js +2 -2
  15. package/Libraries/Blob/FileReader.js +8 -174
  16. package/Libraries/Blob/FileReader_new.js +231 -0
  17. package/Libraries/Blob/FileReader_old.js +186 -0
  18. package/Libraries/Blob/NativeBlobModule.js +2 -2
  19. package/Libraries/Blob/NativeFileReaderModule.js +2 -2
  20. package/Libraries/Blob/URLSearchParams.js +1 -2
  21. package/Libraries/BugReporting/NativeBugReporting.js +2 -2
  22. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +2 -2
  23. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +2 -2
  24. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +2 -2
  25. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -2
  26. package/Libraries/Components/Clipboard/NativeClipboard.js +2 -2
  27. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -2
  28. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +2 -1
  29. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +14 -18
  30. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +2 -2
  31. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
  32. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  33. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -2
  34. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -2
  35. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  36. package/Libraries/Components/Sound/NativeSoundManager.js +2 -2
  37. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +2 -2
  38. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +2 -2
  39. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -2
  40. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -2
  41. package/Libraries/Components/TextInput/InputAccessoryView.js +4 -2
  42. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -2
  43. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  44. package/Libraries/Components/TextInput/TextInput.flow.js +98 -88
  45. package/Libraries/Components/TextInput/TextInput.js +103 -96
  46. package/Libraries/Components/TextInput/TextInput.win32.js +105 -98
  47. package/Libraries/Components/TextInput/TextInputState.js +3 -1
  48. package/Libraries/Components/TextInput/TextInputState.win32.js +3 -1
  49. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +2 -2
  50. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  51. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  52. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +1 -1
  53. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  54. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  55. package/Libraries/Components/Touchable/Position.js +1 -1
  56. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  57. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  58. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  59. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +1 -1
  60. package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
  61. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  62. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -2
  63. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +2 -2
  64. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  65. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -1
  66. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -1
  67. package/Libraries/Components/View/View.js +1 -1
  68. package/Libraries/Components/View/View.win32.js +1 -1
  69. package/Libraries/Core/Devtools/getDevServer.js +1 -3
  70. package/Libraries/Core/Devtools/loadBundleFromServer.js +4 -2
  71. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +4 -2
  72. package/Libraries/Core/Devtools/openFileInEditor.js +2 -4
  73. package/Libraries/Core/Devtools/openURLInBrowser.js +5 -4
  74. package/Libraries/Core/Devtools/parseErrorStack.js +4 -4
  75. package/Libraries/Core/Devtools/parseHermesStack.js +2 -2
  76. package/Libraries/Core/Devtools/symbolicateStackTrace.js +5 -4
  77. package/Libraries/Core/ExceptionsManager.js +6 -4
  78. package/Libraries/Core/InitializeCore.js +5 -2
  79. package/Libraries/Core/NativeExceptionsManager.js +2 -2
  80. package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
  81. package/Libraries/Core/ReactNativeVersion.js +1 -1
  82. package/Libraries/Core/ReactNativeVersionCheck.js +2 -4
  83. package/Libraries/Core/ReactNativeVersionCheck.win32.js +2 -4
  84. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +2 -2
  85. package/Libraries/Core/Timers/JSTimers.js +1 -1
  86. package/Libraries/Core/Timers/NativeTiming.js +2 -2
  87. package/Libraries/Core/Timers/immediateShim.js +2 -9
  88. package/Libraries/Core/setUpBatchedBridge.js +4 -3
  89. package/Libraries/Core/setUpDeveloperTools.js +2 -7
  90. package/Libraries/Core/setUpErrorHandling.js +1 -6
  91. package/Libraries/Core/setUpReactDevTools.js +22 -4
  92. package/Libraries/Core/setUpTimers.js +17 -17
  93. package/Libraries/Core/setUpXHR.js +1 -1
  94. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -2
  95. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  96. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  97. package/Libraries/Image/AssetRegistry.js +3 -1
  98. package/Libraries/Image/AssetSourceResolver.js +1 -1
  99. package/Libraries/Image/Image.android.js +3 -1
  100. package/Libraries/Image/Image.ios.js +1 -1
  101. package/Libraries/Image/Image.win32.js +1 -1
  102. package/Libraries/Image/ImageBackground.js +1 -1
  103. package/Libraries/Image/ImageViewNativeComponent.js +4 -5
  104. package/Libraries/Image/NativeImageEditor.js +2 -2
  105. package/Libraries/Image/NativeImageLoaderAndroid.js +2 -2
  106. package/Libraries/Image/NativeImageLoaderIOS.js +2 -2
  107. package/Libraries/Image/NativeImageLoaderWin32.js +2 -2
  108. package/Libraries/Image/NativeImageStoreAndroid.js +2 -2
  109. package/Libraries/Image/NativeImageStoreIOS.js +2 -2
  110. package/Libraries/Image/RelativeImageStub.js +3 -1
  111. package/Libraries/Image/nativeImageSource.js +1 -1
  112. package/Libraries/Image/resolveAssetSource.js +4 -2
  113. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  114. package/Libraries/Interaction/InteractionManager.js +8 -6
  115. package/Libraries/Interaction/InteractionManagerStub.js +1 -1
  116. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  117. package/Libraries/Interaction/NativeFrameRateLogger.js +2 -2
  118. package/Libraries/Interaction/PanResponder.js +2 -2
  119. package/Libraries/Interaction/TaskQueue.js +1 -1
  120. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  121. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  122. package/Libraries/Linking/Linking.d.ts +3 -3
  123. package/Libraries/Linking/Linking.js +10 -8
  124. package/Libraries/Linking/NativeIntentAndroid.js +2 -2
  125. package/Libraries/Linking/NativeLinkingManager.js +2 -2
  126. package/Libraries/Lists/FillRateHelper.js +1 -1
  127. package/Libraries/Lists/FlatList.js +1 -1
  128. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  129. package/Libraries/Lists/VirtualizeUtils.js +1 -3
  130. package/Libraries/Lists/VirtualizedList.js +1 -1
  131. package/Libraries/Lists/VirtualizedListContext.js +1 -3
  132. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  133. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -1
  134. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  135. package/Libraries/Modal/Modal.js +3 -3
  136. package/Libraries/Modal/NativeModalManager.js +2 -2
  137. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -2
  138. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  139. package/Libraries/NativeModules/specs/NativeDevSettings.js +2 -2
  140. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +2 -2
  141. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +2 -2
  142. package/Libraries/NativeModules/specs/NativeLogBox.js +2 -2
  143. package/Libraries/NativeModules/specs/NativeRedBox.js +2 -2
  144. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -2
  145. package/Libraries/Network/NativeNetworkingAndroid.js +2 -2
  146. package/Libraries/Network/NativeNetworkingIOS.js +2 -2
  147. package/Libraries/Network/RCTNetworking.android.js +1 -1
  148. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  149. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  150. package/Libraries/Network/XMLHttpRequest.js +11 -685
  151. package/Libraries/Network/XMLHttpRequest_new.js +790 -0
  152. package/Libraries/Network/XMLHttpRequest_old.js +697 -0
  153. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -2
  154. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +2 -2
  155. package/Libraries/ReactNative/AppContainer-dev.js +2 -2
  156. package/Libraries/ReactNative/AppContainer.js +1 -1
  157. package/Libraries/ReactNative/AppRegistry.js +1 -1
  158. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  159. package/Libraries/ReactNative/FabricUIManager.js +18 -8
  160. package/Libraries/ReactNative/I18nManager.js +1 -1
  161. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +2 -2
  162. package/Libraries/ReactNative/NativeI18nManager.js +2 -2
  163. package/Libraries/ReactNative/NativeUIManager.js +2 -2
  164. package/Libraries/ReactNative/PaperUIManager.js +2 -3
  165. package/Libraries/ReactNative/PaperUIManager.win32.js +2 -3
  166. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +85 -31
  167. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +1 -1
  168. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +1 -1
  169. package/Libraries/ReactNative/RendererImplementation.js +9 -0
  170. package/Libraries/ReactNative/UIManager.d.ts +1 -0
  171. package/Libraries/ReactNative/UIManager.js +3 -3
  172. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  173. package/Libraries/ReactNative/getNativeComponentAttributes.js +6 -5
  174. package/Libraries/ReactNative/requireNativeComponent.js +2 -1
  175. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +9 -4
  176. package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -1
  177. package/Libraries/Settings/NativeSettingsManager.js +2 -2
  178. package/Libraries/Settings/Settings.ios.js +1 -1
  179. package/Libraries/Settings/Settings.js +1 -1
  180. package/Libraries/Settings/Settings.win32.js +1 -1
  181. package/Libraries/Share/NativeShareModule.js +2 -2
  182. package/Libraries/Share/Share.js +1 -1
  183. package/Libraries/StyleSheet/StyleSheet.js +2 -1
  184. package/Libraries/StyleSheet/StyleSheet.win32.js +2 -1
  185. package/Libraries/StyleSheet/processBoxShadow.js +4 -0
  186. package/Libraries/StyleSheet/processColorArray.js +1 -1
  187. package/Libraries/Text/Text.js +1 -1
  188. package/Libraries/Text/Text.win32.js +1 -1
  189. package/Libraries/Text/TextAncestor.js +1 -1
  190. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +2 -2
  191. package/Libraries/Types/CoreEventTypes.js +2 -0
  192. package/Libraries/Types/CoreEventTypes.win32.js +2 -0
  193. package/Libraries/Utilities/Appearance.js +0 -8
  194. package/Libraries/Utilities/NativeAppearance.js +2 -2
  195. package/Libraries/Utilities/NativeDevLoadingView.js +2 -2
  196. package/Libraries/Utilities/NativeDeviceInfo.js +2 -2
  197. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +2 -2
  198. package/Libraries/Utilities/NativePlatformConstantsIOS.js +2 -2
  199. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  200. package/Libraries/Utilities/ReactNativeTestTools.js +3 -4
  201. package/Libraries/Utilities/dismissKeyboard.js +2 -1
  202. package/Libraries/Vibration/NativeVibration.js +2 -2
  203. package/Libraries/WebSocket/NativeWebSocketModule.js +2 -2
  204. package/Libraries/WebSocket/WebSocket.js +8 -285
  205. package/Libraries/WebSocket/WebSocketEvent.js +1 -1
  206. package/Libraries/WebSocket/WebSocketInterceptor.js +39 -11
  207. package/Libraries/WebSocket/WebSocket_new.js +325 -0
  208. package/Libraries/WebSocket/WebSocket_old.js +297 -0
  209. package/Libraries/WebSocket/__mocks__/event-target-shim.js +1 -1
  210. package/index.js +25 -26
  211. package/index.win32.js +25 -26
  212. package/jest/mockScrollView.js +1 -1
  213. package/jest/setup.js +91 -65
  214. package/overrides.json +30 -42
  215. package/package.json +16 -16
  216. package/src/private/animated/createAnimatedPropsHook.js +360 -0
  217. package/src/private/animated/{useAnimatedPropsMemo.js → createAnimatedPropsMemoHook.js} +84 -32
  218. package/src/private/components/HScrollViewNativeComponents.js +1 -1
  219. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
  220. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +1 -1
  221. package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +1 -1
  222. package/src/private/devmenu/DevMenu.js +1 -1
  223. package/src/private/featureflags/ReactNativeFeatureFlags.js +23 -30
  224. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -1
  225. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -7
  226. package/{Libraries/Inspector → src/private/inspector}/BorderBox.js +3 -3
  227. package/{Libraries/Inspector → src/private/inspector}/BoxInspector.js +9 -6
  228. package/{Libraries/Inspector → src/private/inspector}/ElementBox.js +8 -8
  229. package/{Libraries/Inspector → src/private/inspector}/ElementProperties.js +14 -12
  230. package/{Libraries/Inspector → src/private/inspector}/Inspector.js +18 -15
  231. package/{Libraries/Inspector → src/private/inspector}/InspectorOverlay.js +5 -5
  232. package/{Libraries/Inspector → src/private/inspector}/InspectorPanel.js +12 -10
  233. package/{Libraries/Inspector → src/private/inspector}/NetworkOverlay.js +35 -20
  234. package/{Libraries/Inspector → src/private/inspector}/PerformanceOverlay.js +5 -5
  235. package/{Libraries/Inspector → src/private/inspector}/ReactDevToolsOverlay.js +9 -8
  236. package/{Libraries/Inspector → src/private/inspector}/StyleInspector.js +6 -6
  237. package/{Libraries/Network → src/private/inspector}/XHRInterceptor.js +1 -1
  238. package/{Libraries/Inspector → src/private/inspector}/getInspectorDataForViewAtPoint.js +5 -3
  239. package/{Libraries/Inspector → src/private/inspector}/resolveBoxStyle.js +3 -2
  240. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -4
  241. package/src/private/setup/setUpDOM.js +7 -2
  242. package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevMenu.js +0 -1
  243. package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevSettings.js +0 -1
  244. package/src/private/webapis/dom/events/CustomEvent.js +40 -0
  245. package/src/private/webapis/dom/events/Event.js +236 -0
  246. package/src/private/webapis/dom/events/EventHandlerAttributes.js +130 -0
  247. package/src/private/webapis/dom/events/EventTarget.js +436 -0
  248. package/src/private/webapis/dom/events/internals/EventInternals.js +120 -0
  249. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +52 -0
  250. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +120 -0
  251. package/src/private/webapis/dom/nodes/ReactNativeElement.js +48 -25
  252. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +6 -5
  253. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +25 -25
  254. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +55 -77
  255. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +144 -0
  256. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +55 -0
  257. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +43 -0
  258. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +305 -194
  259. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  260. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  261. package/src/private/webapis/{dom/oldstylecollections → geometry}/DOMRectList.js +3 -3
  262. package/src/private/webapis/html/events/MessageEvent.js +63 -0
  263. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
  264. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +12 -9
  265. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +4 -6
  266. package/src/private/webapis/websockets/events/CloseEvent.js +54 -0
  267. package/src/private/webapis/xhr/events/ProgressEvent.js +54 -0
  268. package/types/index.d.ts +0 -5
  269. package/Libraries/Animated/AnimatedWeb.js +0 -44
  270. package/Libraries/Inspector/Inspector.win32.js +0 -212
  271. package/Libraries/Inspector/InspectorOverlay.win32.js +0 -68
  272. package/Libraries/JSInspector/InspectorAgent.js +0 -27
  273. package/Libraries/JSInspector/JSInspector.js +0 -33
  274. package/Libraries/JSInspector/NetworkAgent.js +0 -296
  275. package/Libraries/Utilities/DebugEnvironment.js +0 -16
  276. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +0 -19
  277. package/Libraries/YellowBox/YellowBoxDeprecated.js +0 -76
  278. package/src/private/specs/modules/NativeCPUTime.js +0 -24
  279. package/src/private/specs/modules/NativeFantom.js +0 -43
  280. /package/src/private/{specs → specs_DEPRECATED}/components/ActivityIndicatorViewNativeComponent.js +0 -0
  281. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidDrawerLayoutNativeComponent.js +0 -0
  282. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidHorizontalScrollContentViewNativeComponent.js +0 -0
  283. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidSwipeRefreshLayoutNativeComponent.js +0 -0
  284. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidSwitchNativeComponent.js +0 -0
  285. /package/src/private/{specs → specs_DEPRECATED}/components/DebuggingOverlayNativeComponent.js +0 -0
  286. /package/src/private/{specs → specs_DEPRECATED}/components/ProgressBarAndroidNativeComponent.js +0 -0
  287. /package/src/private/{specs → specs_DEPRECATED}/components/PullToRefreshViewNativeComponent.js +0 -0
  288. /package/src/private/{specs → specs_DEPRECATED}/components/RCTInputAccessoryViewNativeComponent.js +0 -0
  289. /package/src/private/{specs → specs_DEPRECATED}/components/RCTModalHostViewNativeComponent.js +0 -0
  290. /package/src/private/{specs → specs_DEPRECATED}/components/RCTSafeAreaViewNativeComponent.js +0 -0
  291. /package/src/private/{specs → specs_DEPRECATED}/components/SwitchNativeComponent.js +0 -0
  292. /package/src/private/{specs → specs_DEPRECATED}/components/UnimplementedNativeViewNativeComponent.js +0 -0
  293. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityInfo.js +0 -0
  294. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityInfoWin32.js +0 -0
  295. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityManager.js +0 -0
  296. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeActionSheetManager.js +0 -0
  297. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAlertManager.js +0 -0
  298. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAnimatedModule.js +0 -0
  299. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAnimatedTurboModule.js +0 -0
  300. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAppState.js +0 -0
  301. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAppearance.js +0 -0
  302. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeBlobModule.js +0 -0
  303. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeBugReporting.js +0 -0
  304. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeClipboard.js +0 -0
  305. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevLoadingView.js +0 -0
  306. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDeviceEventManager.js +0 -0
  307. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDeviceInfo.js +0 -0
  308. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDialogManagerAndroid.js +0 -0
  309. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeExceptionsManager.js +0 -0
  310. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeFileReaderModule.js +0 -0
  311. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeFrameRateLogger.js +0 -0
  312. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeHeadlessJsTaskSupport.js +0 -0
  313. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeI18nManager.js +0 -0
  314. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageEditor.js +0 -0
  315. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderAndroid.js +0 -0
  316. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderIOS.js +0 -0
  317. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderWin32.js +0 -0
  318. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageStoreAndroid.js +0 -0
  319. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageStoreIOS.js +0 -0
  320. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeIntentAndroid.js +0 -0
  321. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeJSCHeapCapture.js +0 -0
  322. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeKeyboardObserver.js +0 -0
  323. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeLinkingManager.js +0 -0
  324. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeLogBox.js +0 -0
  325. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeModalManager.js +0 -0
  326. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeNetworkingAndroid.js +0 -0
  327. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeNetworkingIOS.js +0 -0
  328. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePermissionsAndroid.js +0 -0
  329. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsAndroid.js +0 -0
  330. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsIOS.js +0 -0
  331. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsWin.js +0 -0
  332. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePushNotificationManagerIOS.js +0 -0
  333. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeReactDevToolsSettingsManager.js +0 -0
  334. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeRedBox.js +0 -0
  335. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSampleTurboModule.js +0 -0
  336. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSegmentFetcher.js +0 -0
  337. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSettingsManager.js +0 -0
  338. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeShareModule.js +0 -0
  339. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSoundManager.js +0 -0
  340. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSourceCode.js +0 -0
  341. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeStatusBarManagerAndroid.js +0 -0
  342. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeStatusBarManagerIOS.js +0 -0
  343. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeTiming.js +0 -0
  344. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeToastAndroid.js +0 -0
  345. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeUIManager.js +0 -0
  346. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeVibration.js +0 -0
  347. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeWebSocketModule.js +0 -0
  348. /package/src/private/webapis/dom/nodes/{utilities → internals}/Traversal.js +0 -0
  349. /package/src/private/webapis/{dom/geometry → geometry}/DOMRect.js +0 -0
  350. /package/src/private/webapis/{dom/geometry → geometry}/DOMRectReadOnly.js +0 -0
  351. /package/src/private/webapis/{dom/oldstylecollections → utils}/ArrayLikeUtils.js +0 -0
@@ -0,0 +1,790 @@
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
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {
14
+ EventCallback,
15
+ EventListener,
16
+ } from '../../src/private/webapis/dom/events/EventTarget';
17
+ import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
18
+
19
+ import Event from '../../src/private/webapis/dom/events/Event';
20
+ import {
21
+ getEventHandlerAttribute,
22
+ setEventHandlerAttribute,
23
+ } from '../../src/private/webapis/dom/events/EventHandlerAttributes';
24
+ import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
25
+ import {dispatchTrustedEvent} from '../../src/private/webapis/dom/events/internals/EventTargetInternals';
26
+ import ProgressEvent from '../../src/private/webapis/xhr/events/ProgressEvent';
27
+ import {type EventSubscription} from '../vendor/emitter/EventEmitter';
28
+
29
+ const BlobManager = require('../Blob/BlobManager').default;
30
+ const GlobalPerformanceLogger = require('../Utilities/GlobalPerformanceLogger');
31
+ const RCTNetworking = require('./RCTNetworking').default;
32
+ const base64 = require('base64-js');
33
+ const invariant = require('invariant');
34
+
35
+ const DEBUG_NETWORK_SEND_DELAY: false = false; // Set to a number of milliseconds when debugging
36
+ const LABEL_FOR_MISSING_URL_FOR_PROFILING = 'Unknown URL';
37
+
38
+ export type NativeResponseType = 'base64' | 'blob' | 'text';
39
+ export type ResponseType =
40
+ | ''
41
+ | 'arraybuffer'
42
+ | 'blob'
43
+ | 'document'
44
+ | 'json'
45
+ | 'text';
46
+ export type Response = ?Object | string;
47
+
48
+ type XHRInterceptor = interface {
49
+ requestSent(id: number, url: string, method: string, headers: Object): void,
50
+ responseReceived(
51
+ id: number,
52
+ url: string,
53
+ status: number,
54
+ headers: Object,
55
+ ): void,
56
+ dataReceived(id: number, data: string): void,
57
+ loadingFinished(id: number, encodedDataLength: number): void,
58
+ loadingFailed(id: number, error: string): void,
59
+ };
60
+
61
+ // The native blob module is optional so inject it here if available.
62
+ if (BlobManager.isAvailable) {
63
+ BlobManager.addNetworkingHandler();
64
+ }
65
+
66
+ const UNSENT = 0;
67
+ const OPENED = 1;
68
+ const HEADERS_RECEIVED = 2;
69
+ const LOADING = 3;
70
+ const DONE = 4;
71
+
72
+ const SUPPORTED_RESPONSE_TYPES = {
73
+ arraybuffer: typeof global.ArrayBuffer === 'function',
74
+ blob: typeof global.Blob === 'function',
75
+ document: false,
76
+ json: true,
77
+ text: true,
78
+ '': true,
79
+ };
80
+
81
+ class XMLHttpRequestEventTarget extends EventTarget {
82
+ get onload(): EventCallback | null {
83
+ return getEventHandlerAttribute(this, 'load');
84
+ }
85
+ set onload(listener: ?EventCallback) {
86
+ setEventHandlerAttribute(this, 'load', listener);
87
+ }
88
+ get onloadstart(): EventCallback | null {
89
+ return getEventHandlerAttribute(this, 'loadstart');
90
+ }
91
+ set onloadstart(listener: ?EventCallback) {
92
+ setEventHandlerAttribute(this, 'loadstart', listener);
93
+ }
94
+ get onprogress(): EventCallback | null {
95
+ return getEventHandlerAttribute(this, 'progress');
96
+ }
97
+ set onprogress(listener: ?EventCallback) {
98
+ setEventHandlerAttribute(this, 'progress', listener);
99
+ }
100
+ get ontimeout(): EventCallback | null {
101
+ return getEventHandlerAttribute(this, 'timeout');
102
+ }
103
+ set ontimeout(listener: ?EventCallback) {
104
+ setEventHandlerAttribute(this, 'timeout', listener);
105
+ }
106
+ get onerror(): EventCallback | null {
107
+ return getEventHandlerAttribute(this, 'error');
108
+ }
109
+ set onerror(listener: ?EventCallback) {
110
+ setEventHandlerAttribute(this, 'error', listener);
111
+ }
112
+ get onabort(): EventCallback | null {
113
+ return getEventHandlerAttribute(this, 'abort');
114
+ }
115
+ set onabort(listener: ?EventCallback) {
116
+ setEventHandlerAttribute(this, 'abort', listener);
117
+ }
118
+ get onloadend(): EventCallback | null {
119
+ return getEventHandlerAttribute(this, 'loadend');
120
+ }
121
+ set onloadend(listener: ?EventCallback) {
122
+ setEventHandlerAttribute(this, 'loadend', listener);
123
+ }
124
+ }
125
+
126
+ /**
127
+ * Shared base for platform-specific XMLHttpRequest implementations.
128
+ */
129
+ class XMLHttpRequest extends EventTarget {
130
+ static UNSENT: number = UNSENT;
131
+ static OPENED: number = OPENED;
132
+ static HEADERS_RECEIVED: number = HEADERS_RECEIVED;
133
+ static LOADING: number = LOADING;
134
+ static DONE: number = DONE;
135
+
136
+ static _interceptor: ?XHRInterceptor = null;
137
+ static _profiling: boolean = false;
138
+
139
+ UNSENT: number = UNSENT;
140
+ OPENED: number = OPENED;
141
+ HEADERS_RECEIVED: number = HEADERS_RECEIVED;
142
+ LOADING: number = LOADING;
143
+ DONE: number = DONE;
144
+
145
+ readyState: number = UNSENT;
146
+ responseHeaders: ?Object;
147
+ status: number = 0;
148
+ timeout: number = 0;
149
+ responseURL: ?string;
150
+ withCredentials: boolean = true;
151
+
152
+ upload: XMLHttpRequestEventTarget = new XMLHttpRequestEventTarget();
153
+
154
+ _requestId: ?number;
155
+ _subscriptions: Array<EventSubscription>;
156
+
157
+ _aborted: boolean = false;
158
+ _cachedResponse: Response;
159
+ _hasError: boolean = false;
160
+ _headers: Object;
161
+ _lowerCaseResponseHeaders: Object;
162
+ _method: ?string = null;
163
+ _perfKey: ?string = null;
164
+ _responseType: ResponseType;
165
+ _response: string = '';
166
+ _sent: boolean;
167
+ _url: ?string = null;
168
+ _timedOut: boolean = false;
169
+ _trackingName: ?string = null;
170
+ _incrementalEvents: boolean = false;
171
+ _startTime: ?number = null;
172
+ _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger;
173
+
174
+ static __setInterceptor_DO_NOT_USE(interceptor: ?XHRInterceptor) {
175
+ XMLHttpRequest._interceptor = interceptor;
176
+ }
177
+
178
+ static enableProfiling(enableProfiling: boolean): void {
179
+ XMLHttpRequest._profiling = enableProfiling;
180
+ }
181
+
182
+ constructor() {
183
+ super();
184
+ this._reset();
185
+ }
186
+
187
+ _reset(): void {
188
+ this.readyState = this.UNSENT;
189
+ this.responseHeaders = undefined;
190
+ this.status = 0;
191
+ delete this.responseURL;
192
+
193
+ this._requestId = null;
194
+
195
+ this._cachedResponse = undefined;
196
+ this._hasError = false;
197
+ this._headers = {};
198
+ this._response = '';
199
+ this._responseType = '';
200
+ this._sent = false;
201
+ this._lowerCaseResponseHeaders = {};
202
+
203
+ this._clearSubscriptions();
204
+ this._timedOut = false;
205
+ }
206
+
207
+ get responseType(): ResponseType {
208
+ return this._responseType;
209
+ }
210
+
211
+ set responseType(responseType: ResponseType): void {
212
+ if (this._sent) {
213
+ throw new Error(
214
+ "Failed to set the 'responseType' property on 'XMLHttpRequest': The " +
215
+ 'response type cannot be set after the request has been sent.',
216
+ );
217
+ }
218
+ if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) {
219
+ console.warn(
220
+ `The provided value '${responseType}' is not a valid 'responseType'.`,
221
+ );
222
+ return;
223
+ }
224
+
225
+ // redboxes early, e.g. for 'arraybuffer' on ios 7
226
+ invariant(
227
+ SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document',
228
+ `The provided value '${responseType}' is unsupported in this environment.`,
229
+ );
230
+
231
+ if (responseType === 'blob') {
232
+ invariant(
233
+ BlobManager.isAvailable,
234
+ 'Native module BlobModule is required for blob support',
235
+ );
236
+ }
237
+ this._responseType = responseType;
238
+ }
239
+
240
+ get responseText(): string {
241
+ if (this._responseType !== '' && this._responseType !== 'text') {
242
+ throw new Error(
243
+ "The 'responseText' property is only available if 'responseType' " +
244
+ `is set to '' or 'text', but it is '${this._responseType}'.`,
245
+ );
246
+ }
247
+ if (this.readyState < LOADING) {
248
+ return '';
249
+ }
250
+ return this._response;
251
+ }
252
+
253
+ get response(): Response {
254
+ const {responseType} = this;
255
+ if (responseType === '' || responseType === 'text') {
256
+ return this.readyState < LOADING || this._hasError ? '' : this._response;
257
+ }
258
+
259
+ if (this.readyState !== DONE) {
260
+ return null;
261
+ }
262
+
263
+ if (this._cachedResponse !== undefined) {
264
+ return this._cachedResponse;
265
+ }
266
+
267
+ switch (responseType) {
268
+ case 'document':
269
+ this._cachedResponse = null;
270
+ break;
271
+
272
+ case 'arraybuffer':
273
+ this._cachedResponse = base64.toByteArray(this._response).buffer;
274
+ break;
275
+
276
+ case 'blob':
277
+ if (typeof this._response === 'object' && this._response) {
278
+ this._cachedResponse = BlobManager.createFromOptions(this._response);
279
+ } else if (this._response === '') {
280
+ this._cachedResponse = BlobManager.createFromParts([]);
281
+ } else {
282
+ throw new Error(
283
+ 'Invalid response for blob - expecting object, was ' +
284
+ `${typeof this._response}: ${this._response.trim()}`,
285
+ );
286
+ }
287
+ break;
288
+
289
+ case 'json':
290
+ try {
291
+ this._cachedResponse = JSON.parse(this._response);
292
+ } catch (_) {
293
+ this._cachedResponse = null;
294
+ }
295
+ break;
296
+
297
+ default:
298
+ this._cachedResponse = null;
299
+ }
300
+
301
+ return this._cachedResponse;
302
+ }
303
+
304
+ // exposed for testing
305
+ __didCreateRequest(requestId: number): void {
306
+ this._requestId = requestId;
307
+
308
+ XMLHttpRequest._interceptor &&
309
+ XMLHttpRequest._interceptor.requestSent(
310
+ requestId,
311
+ this._url || '',
312
+ this._method || 'GET',
313
+ this._headers,
314
+ );
315
+ }
316
+
317
+ // exposed for testing
318
+ __didUploadProgress(
319
+ requestId: number,
320
+ progress: number,
321
+ total: number,
322
+ ): void {
323
+ if (requestId === this._requestId) {
324
+ dispatchTrustedEvent(
325
+ this.upload,
326
+ new ProgressEvent('progress', {
327
+ lengthComputable: true,
328
+ loaded: progress,
329
+ total,
330
+ }),
331
+ );
332
+ }
333
+ }
334
+
335
+ __didReceiveResponse(
336
+ requestId: number,
337
+ status: number,
338
+ responseHeaders: ?Object,
339
+ responseURL: ?string,
340
+ ): void {
341
+ if (requestId === this._requestId) {
342
+ this._perfKey != null &&
343
+ this._performanceLogger.stopTimespan(this._perfKey);
344
+ this.status = status;
345
+ this.setResponseHeaders(responseHeaders);
346
+ this.setReadyState(this.HEADERS_RECEIVED);
347
+ if (responseURL || responseURL === '') {
348
+ this.responseURL = responseURL;
349
+ } else {
350
+ delete this.responseURL;
351
+ }
352
+
353
+ XMLHttpRequest._interceptor &&
354
+ XMLHttpRequest._interceptor.responseReceived(
355
+ requestId,
356
+ responseURL || this._url || '',
357
+ status,
358
+ responseHeaders || {},
359
+ );
360
+ }
361
+ }
362
+
363
+ __didReceiveData(requestId: number, response: string): void {
364
+ if (requestId !== this._requestId) {
365
+ return;
366
+ }
367
+ this._response = response;
368
+ this._cachedResponse = undefined; // force lazy recomputation
369
+ this.setReadyState(this.LOADING);
370
+
371
+ XMLHttpRequest._interceptor &&
372
+ XMLHttpRequest._interceptor.dataReceived(requestId, response);
373
+ }
374
+
375
+ __didReceiveIncrementalData(
376
+ requestId: number,
377
+ responseText: string,
378
+ progress: number,
379
+ total: number,
380
+ ) {
381
+ if (requestId !== this._requestId) {
382
+ return;
383
+ }
384
+ if (!this._response) {
385
+ this._response = responseText;
386
+ } else {
387
+ this._response += responseText;
388
+ }
389
+
390
+ if (XMLHttpRequest._profiling) {
391
+ performance.mark(
392
+ 'Track:XMLHttpRequest:Incremental Data: ' + this._getMeasureURL(),
393
+ );
394
+ }
395
+ XMLHttpRequest._interceptor &&
396
+ XMLHttpRequest._interceptor.dataReceived(requestId, responseText);
397
+
398
+ this.setReadyState(this.LOADING);
399
+ this.__didReceiveDataProgress(requestId, progress, total);
400
+ }
401
+
402
+ __didReceiveDataProgress(
403
+ requestId: number,
404
+ loaded: number,
405
+ total: number,
406
+ ): void {
407
+ if (requestId !== this._requestId) {
408
+ return;
409
+ }
410
+ dispatchTrustedEvent(
411
+ this,
412
+ new ProgressEvent('progress', {
413
+ lengthComputable: total >= 0,
414
+ loaded,
415
+ total,
416
+ }),
417
+ );
418
+ }
419
+
420
+ // exposed for testing
421
+ __didCompleteResponse(
422
+ requestId: number,
423
+ error: string,
424
+ timeOutError: boolean,
425
+ ): void {
426
+ if (requestId === this._requestId) {
427
+ if (error) {
428
+ if (this._responseType === '' || this._responseType === 'text') {
429
+ this._response = error;
430
+ }
431
+ this._hasError = true;
432
+ if (timeOutError) {
433
+ this._timedOut = true;
434
+ }
435
+ }
436
+ this._clearSubscriptions();
437
+ this._requestId = null;
438
+ this.setReadyState(this.DONE);
439
+ if (XMLHttpRequest._profiling && this._startTime != null) {
440
+ const start = this._startTime;
441
+ performance.measure('Track:XMLHttpRequest:' + this._getMeasureURL(), {
442
+ start,
443
+ end: performance.now(),
444
+ });
445
+ }
446
+ if (error) {
447
+ XMLHttpRequest._interceptor &&
448
+ XMLHttpRequest._interceptor.loadingFailed(requestId, error);
449
+ } else {
450
+ XMLHttpRequest._interceptor &&
451
+ XMLHttpRequest._interceptor.loadingFinished(
452
+ requestId,
453
+ this._response.length,
454
+ );
455
+ }
456
+ }
457
+ }
458
+
459
+ _clearSubscriptions(): void {
460
+ (this._subscriptions || []).forEach(sub => {
461
+ if (sub) {
462
+ sub.remove();
463
+ }
464
+ });
465
+ this._subscriptions = [];
466
+ }
467
+
468
+ getAllResponseHeaders(): ?string {
469
+ if (!this.responseHeaders) {
470
+ // according to the spec, return null if no response has been received
471
+ return null;
472
+ }
473
+
474
+ // Assign to non-nullable local variable.
475
+ const responseHeaders = this.responseHeaders;
476
+
477
+ const unsortedHeaders: Map<
478
+ string,
479
+ {lowerHeaderName: string, upperHeaderName: string, headerValue: string},
480
+ > = new Map();
481
+ for (const rawHeaderName of Object.keys(responseHeaders)) {
482
+ const headerValue = responseHeaders[rawHeaderName];
483
+ const lowerHeaderName = rawHeaderName.toLowerCase();
484
+ const header = unsortedHeaders.get(lowerHeaderName);
485
+ if (header) {
486
+ header.headerValue += ', ' + headerValue;
487
+ unsortedHeaders.set(lowerHeaderName, header);
488
+ } else {
489
+ unsortedHeaders.set(lowerHeaderName, {
490
+ lowerHeaderName,
491
+ upperHeaderName: rawHeaderName.toUpperCase(),
492
+ headerValue,
493
+ });
494
+ }
495
+ }
496
+
497
+ // Sort in ascending order, with a being less than b if a's name is legacy-uppercased-byte less than b's name.
498
+ const sortedHeaders = [...unsortedHeaders.values()].sort((a, b) => {
499
+ if (a.upperHeaderName < b.upperHeaderName) {
500
+ return -1;
501
+ }
502
+ if (a.upperHeaderName > b.upperHeaderName) {
503
+ return 1;
504
+ }
505
+ return 0;
506
+ });
507
+
508
+ // Combine into single text response.
509
+ return (
510
+ sortedHeaders
511
+ .map(header => {
512
+ return header.lowerHeaderName + ': ' + header.headerValue;
513
+ })
514
+ .join('\r\n') + '\r\n'
515
+ );
516
+ }
517
+
518
+ getResponseHeader(header: string): ?string {
519
+ const value = this._lowerCaseResponseHeaders[header.toLowerCase()];
520
+ return value !== undefined ? value : null;
521
+ }
522
+
523
+ setRequestHeader(header: string, value: any): void {
524
+ if (this.readyState !== this.OPENED) {
525
+ throw new Error('Request has not been opened');
526
+ }
527
+ this._headers[header.toLowerCase()] = String(value);
528
+ }
529
+
530
+ /**
531
+ * Custom extension for tracking origins of request.
532
+ */
533
+ setTrackingName(trackingName: ?string): XMLHttpRequest {
534
+ this._trackingName = trackingName;
535
+ return this;
536
+ }
537
+
538
+ /**
539
+ * Custom extension for setting a custom performance logger
540
+ */
541
+ setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest {
542
+ this._performanceLogger = performanceLogger;
543
+ return this;
544
+ }
545
+
546
+ open(method: string, url: string, async: ?boolean): void {
547
+ /* Other optional arguments are not supported yet */
548
+ if (this.readyState !== this.UNSENT) {
549
+ throw new Error('Cannot open, already sending');
550
+ }
551
+ if (async !== undefined && !async) {
552
+ // async is default
553
+ throw new Error('Synchronous http requests are not supported');
554
+ }
555
+ if (!url) {
556
+ throw new Error('Cannot load an empty url');
557
+ }
558
+ this._method = method.toUpperCase();
559
+ this._url = url;
560
+ this._aborted = false;
561
+ this.setReadyState(this.OPENED);
562
+ }
563
+
564
+ send(data: any): void {
565
+ if (this.readyState !== this.OPENED) {
566
+ throw new Error('Request has not been opened');
567
+ }
568
+ if (this._sent) {
569
+ throw new Error('Request has already been sent');
570
+ }
571
+ this._sent = true;
572
+ const incrementalEvents =
573
+ this._incrementalEvents || !!this.onreadystatechange || !!this.onprogress;
574
+
575
+ this._subscriptions.push(
576
+ RCTNetworking.addListener('didSendNetworkData', args =>
577
+ this.__didUploadProgress(...args),
578
+ ),
579
+ );
580
+ this._subscriptions.push(
581
+ RCTNetworking.addListener('didReceiveNetworkResponse', args =>
582
+ this.__didReceiveResponse(...args),
583
+ ),
584
+ );
585
+ this._subscriptions.push(
586
+ RCTNetworking.addListener('didReceiveNetworkData', args =>
587
+ this.__didReceiveData(...args),
588
+ ),
589
+ );
590
+ this._subscriptions.push(
591
+ RCTNetworking.addListener('didReceiveNetworkIncrementalData', args =>
592
+ this.__didReceiveIncrementalData(...args),
593
+ ),
594
+ );
595
+ this._subscriptions.push(
596
+ RCTNetworking.addListener('didReceiveNetworkDataProgress', args =>
597
+ this.__didReceiveDataProgress(...args),
598
+ ),
599
+ );
600
+ this._subscriptions.push(
601
+ RCTNetworking.addListener('didCompleteNetworkResponse', args =>
602
+ this.__didCompleteResponse(...args),
603
+ ),
604
+ );
605
+
606
+ let nativeResponseType: NativeResponseType = 'text';
607
+ if (this._responseType === 'arraybuffer') {
608
+ nativeResponseType = 'base64';
609
+ }
610
+ if (this._responseType === 'blob') {
611
+ nativeResponseType = 'blob';
612
+ }
613
+
614
+ const doSend = () => {
615
+ const friendlyName = this._trackingName ?? this._url;
616
+ this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName);
617
+ this._performanceLogger.startTimespan(this._perfKey);
618
+ this._startTime = performance.now();
619
+ invariant(
620
+ this._method,
621
+ 'XMLHttpRequest method needs to be defined (%s).',
622
+ friendlyName,
623
+ );
624
+ invariant(
625
+ this._url,
626
+ 'XMLHttpRequest URL needs to be defined (%s).',
627
+ friendlyName,
628
+ );
629
+ RCTNetworking.sendRequest(
630
+ this._method,
631
+ this._trackingName,
632
+ this._url,
633
+ this._headers,
634
+ data,
635
+ /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found
636
+ * when making Flow check .android.js files. */
637
+ nativeResponseType,
638
+ incrementalEvents,
639
+ this.timeout,
640
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
641
+ this.__didCreateRequest.bind(this),
642
+ this.withCredentials,
643
+ );
644
+ };
645
+ if (DEBUG_NETWORK_SEND_DELAY) {
646
+ setTimeout(doSend, DEBUG_NETWORK_SEND_DELAY);
647
+ } else {
648
+ doSend();
649
+ }
650
+ }
651
+
652
+ abort(): void {
653
+ this._aborted = true;
654
+ if (this._requestId) {
655
+ RCTNetworking.abortRequest(this._requestId);
656
+ }
657
+ // only call onreadystatechange if there is something to abort,
658
+ // below logic is per spec
659
+ if (
660
+ !(
661
+ this.readyState === this.UNSENT ||
662
+ (this.readyState === this.OPENED && !this._sent) ||
663
+ this.readyState === this.DONE
664
+ )
665
+ ) {
666
+ this._reset();
667
+ this.setReadyState(this.DONE);
668
+ }
669
+ // Reset again after, in case modified in handler
670
+ this._reset();
671
+ }
672
+
673
+ setResponseHeaders(responseHeaders: ?Object): void {
674
+ this.responseHeaders = responseHeaders || null;
675
+ const headers = responseHeaders || {};
676
+ this._lowerCaseResponseHeaders = Object.keys(headers).reduce<{
677
+ [string]: any,
678
+ }>((lcaseHeaders, headerName) => {
679
+ // $FlowFixMe[invalid-computed-prop]
680
+ lcaseHeaders[headerName.toLowerCase()] = headers[headerName];
681
+ return lcaseHeaders;
682
+ }, {});
683
+ }
684
+
685
+ setReadyState(newState: number): void {
686
+ this.readyState = newState;
687
+ dispatchTrustedEvent(this, new Event('readystatechange'));
688
+ if (newState === this.DONE) {
689
+ if (this._aborted) {
690
+ dispatchTrustedEvent(this, new Event('abort'));
691
+ } else if (this._hasError) {
692
+ if (this._timedOut) {
693
+ dispatchTrustedEvent(this, new Event('timeout'));
694
+ } else {
695
+ dispatchTrustedEvent(this, new Event('error'));
696
+ }
697
+ } else {
698
+ dispatchTrustedEvent(this, new Event('load'));
699
+ }
700
+ dispatchTrustedEvent(this, new Event('loadend'));
701
+ }
702
+ }
703
+
704
+ addEventListener(type: string, listener: EventListener | null): void {
705
+ // If we dont' have a 'readystatechange' event handler, we don't
706
+ // have to send repeated LOADING events with incremental updates
707
+ // to responseText, which will avoid a bunch of native -> JS
708
+ // bridge traffic.
709
+ if (type === 'readystatechange' || type === 'progress') {
710
+ this._incrementalEvents = true;
711
+ }
712
+ super.addEventListener(type, listener);
713
+ }
714
+
715
+ _getMeasureURL(): string {
716
+ return (
717
+ this._trackingName ?? this._url ?? LABEL_FOR_MISSING_URL_FOR_PROFILING
718
+ );
719
+ }
720
+
721
+ /*
722
+ * `on<event>` event handling (without JS prototype magic).
723
+ */
724
+
725
+ get onabort(): EventCallback | null {
726
+ return getEventHandlerAttribute(this, 'abort');
727
+ }
728
+
729
+ set onabort(listener: ?EventCallback) {
730
+ setEventHandlerAttribute(this, 'abort', listener);
731
+ }
732
+
733
+ get onerror(): EventCallback | null {
734
+ return getEventHandlerAttribute(this, 'error');
735
+ }
736
+
737
+ set onerror(listener: ?EventCallback) {
738
+ setEventHandlerAttribute(this, 'error', listener);
739
+ }
740
+
741
+ get onload(): EventCallback | null {
742
+ return getEventHandlerAttribute(this, 'load');
743
+ }
744
+
745
+ set onload(listener: ?EventCallback) {
746
+ setEventHandlerAttribute(this, 'load', listener);
747
+ }
748
+
749
+ get onloadstart(): EventCallback | null {
750
+ return getEventHandlerAttribute(this, 'loadstart');
751
+ }
752
+
753
+ set onloadstart(listener: ?EventCallback) {
754
+ setEventHandlerAttribute(this, 'loadstart', listener);
755
+ }
756
+
757
+ get onprogress(): EventCallback | null {
758
+ return getEventHandlerAttribute(this, 'progress');
759
+ }
760
+
761
+ set onprogress(listener: ?EventCallback) {
762
+ setEventHandlerAttribute(this, 'progress', listener);
763
+ }
764
+
765
+ get ontimeout(): EventCallback | null {
766
+ return getEventHandlerAttribute(this, 'timeout');
767
+ }
768
+
769
+ set ontimeout(listener: ?EventCallback) {
770
+ setEventHandlerAttribute(this, 'timeout', listener);
771
+ }
772
+
773
+ get onloadend(): EventCallback | null {
774
+ return getEventHandlerAttribute(this, 'loadend');
775
+ }
776
+
777
+ set onloadend(listener: ?EventCallback) {
778
+ setEventHandlerAttribute(this, 'loadend', listener);
779
+ }
780
+
781
+ get onreadystatechange(): EventCallback | null {
782
+ return getEventHandlerAttribute(this, 'readystatechange');
783
+ }
784
+
785
+ set onreadystatechange(listener: ?EventCallback) {
786
+ setEventHandlerAttribute(this, 'readystatechange', listener);
787
+ }
788
+ }
789
+
790
+ module.exports = XMLHttpRequest;