@depup/react-native 0.86.2-depup.0 → 0.87.0-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +19 -24
- package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +1 -1
- package/Libraries/Alert/Alert.js +38 -1
- package/Libraries/Animated/AnimatedExports.js +22 -0
- package/Libraries/Animated/AnimatedExports.js.flow +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +120 -3
- package/Libraries/Animated/Easing.js +4 -3
- package/Libraries/Animated/NativeAnimatedAllowlist.js +37 -0
- package/Libraries/Animated/animations/Animation.js +14 -5
- package/Libraries/Animated/animations/DecayAnimation.js +1 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +9 -0
- package/Libraries/Animated/components/AnimatedScrollView.js +1 -1
- package/Libraries/Animated/createAnimatedComponent.js +3 -3
- package/Libraries/Animated/nodes/AnimatedColor.js +8 -8
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +106 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +27 -3
- package/Libraries/Animated/nodes/AnimatedValue.js +8 -0
- package/Libraries/Animated/nodes/AnimatedValueXY.js +2 -2
- package/Libraries/AppDelegate/RCTAppDelegate.h +5 -9
- package/Libraries/AppDelegate/RCTAppDelegate.mm +0 -20
- package/Libraries/AppDelegate/RCTAppSetupUtils.h +0 -18
- package/Libraries/AppDelegate/RCTAppSetupUtils.mm +0 -78
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +18 -21
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +5 -41
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +0 -82
- package/Libraries/AppDelegate/RCTRootViewFactory.h +4 -1
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +3 -101
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +2 -1
- package/Libraries/AppState/AppState.d.ts +4 -1
- package/Libraries/AppState/AppState.js +32 -17
- package/Libraries/BatchedBridge/MessageQueue.js +42 -51
- package/Libraries/BatchedBridge/NativeModules.js +7 -0
- package/Libraries/Blob/Blob.js +7 -1
- package/Libraries/Blob/FileReader.js +6 -0
- package/Libraries/Blob/React-RCTBlob.podspec +1 -1
- package/Libraries/Blob/URLSearchParams.js.flow +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +20 -9
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -43
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +59 -49
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -2
- package/Libraries/Components/Button.js +98 -183
- package/Libraries/Components/Clipboard/Clipboard.js +5 -0
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +8 -69
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +10 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +2 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +26 -31
- package/Libraries/Components/Keyboard/Keyboard.js +23 -60
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +15 -7
- package/Libraries/Components/Pressable/Pressable.js +39 -17
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +5 -6
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +4 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +17 -0
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/RefreshControl.js +40 -50
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +8 -8
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
- package/Libraries/Components/ScrollView/ScrollView.d.ts +55 -43
- package/Libraries/Components/ScrollView/ScrollView.js +205 -118
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +4 -4
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.d.ts +7 -54
- package/Libraries/Components/StatusBar/StatusBar.js +84 -160
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -2
- package/Libraries/Components/Switch/Switch.js +76 -75
- package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -2
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/InputAccessoryView.js +13 -61
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -2
- package/Libraries/Components/TextInput/TextInput.d.ts +9 -2
- package/Libraries/Components/TextInput/TextInput.flow.js +20 -3
- package/Libraries/Components/TextInput/TextInput.js +116 -111
- package/Libraries/Components/TextInput/TextInputNativeCommands.js +3 -3
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +25 -19
- package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
- package/Libraries/Components/Touchable/Touchable.js +94 -95
- package/Libraries/Components/Touchable/TouchableHighlight.js +45 -112
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +13 -25
- package/Libraries/Components/Touchable/TouchableOpacity.js +14 -84
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +4 -3
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -2
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -0
- package/Libraries/Components/View/View.js +83 -86
- package/Libraries/Components/View/ViewAccessibility.d.ts +12 -2
- package/Libraries/Components/View/ViewAccessibility.js +17 -6
- package/Libraries/Components/View/ViewNativeComponent.js +4 -6
- package/Libraries/Components/View/ViewPropTypes.js +65 -13
- package/Libraries/Core/InitializeCore.js +9 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/Timers/JSTimers.js +53 -52
- package/Libraries/Core/setUpGlobals.js +9 -4
- package/Libraries/Core/setUpNavigator.js +7 -2
- package/Libraries/Core/setUpReactDevTools.js +0 -118
- package/Libraries/Core/setUpXHR.js +6 -2
- package/Libraries/Debugging/DebuggingOverlay.js +2 -2
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +29 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +7 -7
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +1 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +3 -0
- package/Libraries/FBLazyVector/FBLazyVector.podspec +1 -1
- package/Libraries/Image/AssetSourceResolver.js +18 -27
- package/Libraries/Image/Image.android.js +13 -2
- package/Libraries/Image/Image.ios.js +3 -1
- package/Libraries/Image/ImageBackground.js +30 -18
- package/Libraries/Image/ImageProps.js +116 -117
- package/Libraries/Image/ImageSource.d.ts +1 -1
- package/Libraries/Image/ImageSource.js +9 -9
- package/Libraries/Image/ImageSourceUtils.js +10 -7
- package/Libraries/Image/ImageTypes.flow.js +2 -0
- package/Libraries/Image/ImageViewNativeComponent.js +1 -1
- package/Libraries/Image/RCTImageLoader.mm +61 -64
- package/Libraries/Image/RCTImageStoreManager.h +0 -2
- package/Libraries/Image/React-RCTImage.podspec +1 -1
- package/Libraries/Image/RelativeImageStub.js +1 -1
- package/Libraries/Image/resolveAssetSource.js +1 -1
- package/Libraries/Interaction/PanResponder.js +102 -97
- package/Libraries/LayoutAnimation/LayoutAnimation.js +22 -6
- package/Libraries/Linking/Linking.js +24 -23
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
- package/Libraries/Lists/FlatList.d.ts +6 -17
- package/Libraries/Lists/FlatList.js +7 -8
- package/Libraries/Lists/SectionList.js +7 -0
- package/Libraries/Lists/VirtualizedList.js +3 -0
- package/Libraries/Lists/VirtualizedSectionList.js +4 -0
- package/Libraries/LogBox/LogBox.js +3 -3
- package/Libraries/LogBox/UI/AnsiHighlight.js +2 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +4 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +8 -2
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +9 -2
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +17 -4
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +4 -2
- package/Libraries/LogBox/UI/LogBoxMessage.js +18 -5
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +4 -1
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +1 -0
- package/Libraries/LogBox/UI/LogBoxStyle.js +0 -4
- package/Libraries/Modal/Modal.d.ts +5 -4
- package/Libraries/Modal/Modal.js +71 -37
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -2
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +17 -0
- package/Libraries/NativeComponent/ViewConfig.js +3 -3
- package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
- package/Libraries/Network/RCTHTTPRequestHandler.h +1 -1
- package/Libraries/Network/React-RCTNetwork.podspec +1 -1
- package/Libraries/Performance/Systrace.js +36 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +4 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +29 -17
- package/Libraries/Pressability/Pressability.js +1 -1
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +4 -0
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
- package/Libraries/ReactNative/AppContainer-dev.js +3 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -0
- package/Libraries/ReactNative/AppRegistry.js +15 -11
- package/Libraries/ReactNative/AppRegistryImpl.js +57 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/FabricUIManager.js +29 -26
- package/Libraries/ReactNative/I18nManager.js +20 -0
- package/Libraries/ReactNative/UIManager.js +53 -0
- package/Libraries/ReactNative/renderApplication.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -126
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +5 -41
- package/Libraries/Renderer/README.md +2 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +36 -36
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +4 -4
- package/Libraries/Required/RCTRequired.podspec +1 -1
- package/Libraries/Settings/React-RCTSettings.podspec +1 -1
- package/Libraries/Settings/Settings.ios.js +22 -0
- package/Libraries/Share/Share.js +25 -28
- package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +6 -0
- package/Libraries/StyleSheet/StyleSheet.js +42 -2
- package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js +7 -5
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +24 -3
- package/Libraries/StyleSheet/StyleSheetTypes.js +34 -6
- package/Libraries/StyleSheet/flattenStyle.js +28 -13
- package/Libraries/StyleSheet/private/_TransformStyle.js +16 -14
- package/Libraries/Text/React-RCTText.podspec +1 -1
- package/Libraries/Text/Text.js +12 -9
- package/Libraries/Text/TextEffectNativeComponent.js +31 -0
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +0 -1
- package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +0 -1
- package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +0 -1
- package/Libraries/Text/TextProps.js +59 -93
- package/Libraries/Text/requireNativeTextEffect.js +28 -0
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
- package/Libraries/Types/CoreEventTypes.d.ts +8 -0
- package/Libraries/Types/CoreEventTypes.js +32 -29
- package/Libraries/Types/UIManagerJSInterface.js +2 -2
- package/Libraries/Utilities/Appearance.d.ts +32 -17
- package/Libraries/Utilities/Appearance.js +35 -18
- package/Libraries/Utilities/BackHandler.android.js +13 -28
- package/Libraries/Utilities/BackHandler.js.flow +18 -2
- package/Libraries/Utilities/DevSettings.js +8 -1
- package/Libraries/Utilities/Dimensions.js +18 -12
- package/Libraries/Utilities/PixelRatio.js +5 -2
- package/Libraries/Utilities/Platform.js.flow +4 -0
- package/Libraries/Utilities/PlatformTypes.js +77 -0
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/differ/deepDiffer.js +5 -2
- package/Libraries/Utilities/useColorScheme.js +11 -1
- package/Libraries/Utilities/useWindowDimensions.js +6 -0
- package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
- package/Libraries/Vibration/Vibration.js +14 -11
- package/Libraries/vendor/emitter/EventEmitter.js +3 -3
- package/README.md +6 -8
- package/React/Base/RCTBridge+Private.h +0 -22
- package/React/Base/RCTBridge.h +10 -8
- package/React/Base/RCTBridge.mm +5 -447
- package/React/Base/RCTBridgeDelegate.h +1 -56
- package/React/Base/RCTBridgeModule.h +0 -9
- package/React/Base/RCTBridgeProxy.h +8 -0
- package/React/Base/RCTBridgeProxy.mm +3 -20
- package/React/Base/RCTBundleManager.h +0 -3
- package/React/Base/RCTBundleManager.m +0 -31
- package/React/Base/RCTBundleURLProvider.mm +4 -4
- package/React/Base/RCTCallableJSModules.m +0 -18
- package/React/Base/RCTConstants.h +1 -0
- package/React/Base/RCTConstants.m +1 -0
- package/React/Base/RCTConvert.mm +3 -0
- package/React/Base/RCTDisplayLink.h +3 -1
- package/React/Base/RCTJavaScriptExecutor.h +0 -69
- package/React/Base/RCTModuleData.mm +2 -483
- package/React/Base/RCTModuleRegistry.m +0 -25
- package/React/Base/RCTRootView.m +3 -374
- package/React/Base/RCTUtils.h +0 -3
- package/React/Base/RCTUtils.mm +17 -27
- package/React/Base/RCTVersion.m +2 -2
- package/React/Base/RCTViewRegistry.m +1 -29
- package/React/Base/Surface/RCTSurface.mm +1 -582
- package/React/Base/Surface/RCTSurfaceRootShadowView.m +0 -89
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +0 -1
- package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +0 -2
- package/React/CoreModules/RCTAlertController.mm +1 -0
- package/React/CoreModules/RCTAlertManager.mm +0 -5
- package/React/CoreModules/RCTLogBox.mm +0 -11
- package/React/CoreModules/RCTLogBoxView.h +0 -3
- package/React/CoreModules/RCTLogBoxView.mm +0 -31
- package/React/CoreModules/RCTPerfMonitor.mm +0 -2
- package/React/CoreModules/RCTStatusBarManager.mm +0 -11
- package/React/CoreModules/React-CoreModules.podspec +1 -1
- package/React/CxxModule/RCTCxxUtils.h +0 -8
- package/React/CxxModule/RCTCxxUtils.mm +0 -17
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +179 -7
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +100 -2
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +373 -119
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.cpp +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.h +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.cpp +71 -71
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +96 -96
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.cpp +357 -363
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +211 -212
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/RCTComponentViewHelpers.h +107 -107
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.cpp +1 -1
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.h +11 -11
- package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/States.h +2 -2
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.h +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.h +4 -0
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +14 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +13 -4
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm +12 -26
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +39 -4
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +1 -1
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +5 -5
- package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +0 -18
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +9 -5
- package/React/Fabric/RCTSurfacePresenter.mm +86 -5
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +2 -0
- package/React/I18n/RCTLocalizedString.mm +38 -2
- package/React/Modules/RCTEventEmitter.m +30 -10
- package/React/Modules/RCTI18nUtil.m +3 -1
- package/React/Modules/RCTUIManager.mm +0 -1501
- package/React/React-RCTFBReactNativeSpec.podspec +2 -2
- package/React/React-RCTFabric.podspec +1 -1
- package/React/Runtime/React-RCTRuntime.podspec +1 -1
- package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +27 -0
- package/React/Views/RCTModalHostViewController.h +0 -15
- package/React/Views/RCTModalHostViewManager.h +0 -24
- package/React/Views/RCTShadowView.h +0 -2
- package/React/Views/RCTShadowView.m +0 -723
- package/React/Views/ScrollView/RCTScrollView.h +0 -81
- package/React/Views/ScrollView/RCTScrollableProtocol.h +0 -4
- package/React-Core-prebuilt.podspec +45 -17
- package/React-Core.podspec +10 -3
- package/React.podspec +1 -1
- package/ReactAndroid/api/ReactAndroid.api +128 -142
- package/ReactAndroid/build.gradle.kts +27 -22
- package/ReactAndroid/external-artifacts/build.gradle.kts +49 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +14 -14
- package/ReactAndroid/publish.gradle +5 -5
- package/ReactAndroid/src/debug/AndroidManifest.xml +6 -0
- package/ReactAndroid/src/debugOptimized/AndroidManifest.xml +22 -0
- package/ReactAndroid/src/main/java/com/facebook/react/BaseReactPackage.kt +3 -7
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +4 -6
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.kt +212 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.kt +287 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +15 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/MapBuffer.kt +50 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.kt +63 -22
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/WritableMapBuffer.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +4 -12
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactActivityDelegate.kt +14 -10
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.kt +50 -47
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LocalNetworkPermissionUtil.kt +49 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/MultipartStreamReader.kt +101 -26
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +40 -38
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -10
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +160 -187
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt +12 -8
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +30 -66
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +51 -111
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +12 -24
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +57 -123
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +7 -5
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -5
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +11 -23
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlags.kt +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +53 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +2 -77
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +9 -4
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +4 -19
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +2 -6
- package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactInterceptingViewGroup.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +47 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +1 -49
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/HasChildPressedStateDelay.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.kt +796 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +2 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.kt +27 -27
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.kt +184 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.kt +486 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/SkewMatrixHelper.kt +200 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIBlock.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.kt +645 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.kt +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.kt +142 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.kt +0 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt +527 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +7 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.kt +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.kt +1640 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +6 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.kt +1317 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollViewManager.kt +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.kt +1309 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainer.kt +19 -33
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateClassic.kt +8 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/generate-nested-scroll-view.js +13 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/MutableSpannableLayout.kt +107 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextView.kt +122 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +92 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt +41 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt +48 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextDecorationStyle.kt +200 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectRegistry.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectSpanFactory.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +361 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/AnimatedEffectSpan.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/{DrawCommandSpan.kt → CanvasEffectSpan.kt} +3 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +23 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.kt +30 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.kt +25 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/StatefulSpan.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextEffectSpan.kt +19 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TouchableSpan.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +83 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextSelectionWatcher.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +3 -17
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/VirtualViewRenderState.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +7 -8
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfig.kt +15 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIBase.kt +6 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.kt +41 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.kt +43 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.kt +39 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.kt +12 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.kt +762 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.kt +27 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.kt +24 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.kt +29 -0
- package/ReactAndroid/src/main/jni/CMakeLists.txt +1 -2
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +94 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionDelegateImpl.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/AndroidAnimationChoreographer.h +10 -10
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +12 -15
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -3
- package/ReactAndroid/src/main/jni/react/fabric/test/FabricMountingManagerTest.cpp +159 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +69 -153
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +15 -33
- package/ReactAndroid/src/main/jni/react/jni/JReactMarker.cpp +10 -24
- package/ReactAndroid/src/main/jni/react/jni/JReactMarker.h +0 -2
- package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JWritableMapBuffer.cpp +13 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +4 -1
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +8 -0
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +4 -0
- package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +5 -0
- package/ReactAndroid/src/main/res/views/uimanager/values-zu/strings.xml +3 -0
- package/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +1 -1
- package/ReactApple/RCTAnimatedModuleProvider/React-RCTAnimatedModuleProvider.podspec +63 -0
- package/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec +1 -1
- package/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec +1 -1
- package/ReactCommon/React-Fabric.podspec +3 -1
- package/ReactCommon/React-FabricComponents.podspec +1 -1
- package/ReactCommon/React-FabricImage.podspec +1 -1
- package/ReactCommon/React-Mapbuffer.podspec +1 -1
- package/ReactCommon/ReactCommon.podspec +3 -13
- package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
- package/ReactCommon/cmake-utils/react-native-flags.cmake +1 -3
- package/ReactCommon/cxxreact/CMakeLists.txt +1 -0
- package/ReactCommon/cxxreact/ErrorUtils.h +2 -32
- package/ReactCommon/cxxreact/Instance.cpp +1 -26
- package/ReactCommon/cxxreact/Instance.h +0 -2
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -2
- package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +0 -12
- package/ReactCommon/cxxreact/RAMBundleRegistry.h +0 -5
- package/ReactCommon/cxxreact/React-cxxreact.podspec +3 -2
- package/ReactCommon/cxxreact/ReactMarker.cpp +4 -30
- package/ReactCommon/cxxreact/ReactMarker.h +38 -21
- package/ReactCommon/cxxreact/ReactNativeVersion.h +4 -4
- package/ReactCommon/cxxreact/TraceSection.h +1 -1
- package/ReactCommon/cxxreact/tests/methodcall.cpp +4 -0
- package/ReactCommon/hermes/React-hermes.podspec +1 -1
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +6 -79
- package/ReactCommon/hermes/executor/React-jsitracing.podspec +1 -1
- package/ReactCommon/jserrorhandler/ErrorUtils.cpp +42 -0
- package/{React/CxxLogUtils/RCTDefaultCxxLogFunction.h → ReactCommon/jserrorhandler/ErrorUtils.h} +2 -2
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -1
- package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +3 -4
- package/ReactCommon/jsi/React-jsi.podspec +1 -1
- package/ReactCommon/jsi/jsi/hermes-interfaces.h +53 -0
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -2
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +3 -14
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +4 -13
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +54 -0
- package/ReactCommon/jsinspector-modern/HostTarget.h +0 -7
- package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +10 -7
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +4 -1
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +7 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +20 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -0
- package/ReactCommon/jsinspector-modern/SessionState.h +31 -0
- package/ReactCommon/jsinspector-modern/cdp/React-jsinspectorcdp.podspec +1 -1
- package/ReactCommon/jsinspector-modern/network/React-jsinspectornetwork.podspec +1 -1
- package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +14 -1
- package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +11 -0
- package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -1
- package/ReactCommon/logger/React-logger.podspec +1 -1
- package/ReactCommon/oscompat/React-oscompat.podspec +1 -1
- package/ReactCommon/react/bridging/ArrayBuffer.h +180 -0
- package/ReactCommon/react/bridging/Bridging.h +1 -0
- package/ReactCommon/react/bridging/Convert.h +12 -0
- package/ReactCommon/react/bridging/React-bridging.podspec +44 -0
- package/ReactCommon/react/bridging/tests/BridgingTest.cpp +185 -11
- package/ReactCommon/react/bridging/tests/ClassTest.cpp +22 -0
- package/ReactCommon/react/cxxstableapi/CMakeLists.txt +18 -0
- package/ReactCommon/react/cxxstableapi/FrameworksGuard.h +35 -0
- package/ReactCommon/react/cxxstableapi/PrivateGuard.h +34 -0
- package/ReactCommon/react/cxxstableapi/React-cxxstableapi.podspec +34 -0
- package/ReactCommon/react/cxxstableapi/UmbrellaGuard.h +53 -0
- package/ReactCommon/react/debug/React-debug.podspec +1 -1
- package/ReactCommon/react/debug/redbox/JscSafeUrl.h +1 -1
- package/ReactCommon/react/featureflags/React-featureflags.podspec +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +21 -45
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +26 -56
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +134 -242
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +14 -26
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +20 -44
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +43 -97
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +10 -6
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -7
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -8
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +7 -13
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +1 -0
- package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +49 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.cpp +4 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +4 -0
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +2 -2
- package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +2 -2
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +4 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +5 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +61 -4
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.h +0 -9
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +37 -139
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleWithJSIBindings.h +0 -3
- package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +6 -0
- package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -1
- package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
- package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +2 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +25 -55
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -23
- package/ReactCommon/react/nativemodule/featureflags/React-featureflagsnativemodule.podspec +1 -1
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +2 -1
- package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +2 -1
- package/ReactCommon/react/nativemodule/microtasks/React-microtasksnativemodule.podspec +1 -1
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +4 -0
- package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +2 -1
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.h +1 -1
- package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +1 -1
- package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +2 -1
- package/ReactCommon/react/networking/React-networking.podspec +1 -1
- package/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec +1 -1
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -1
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +95 -63
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +20 -1
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +7 -10
- package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +20 -1
- package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.h +1 -0
- package/ReactCommon/react/renderer/animated/internal/primitives.h +1 -1
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +67 -6
- package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +12 -0
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +25 -13
- package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +7 -0
- package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +48 -0
- package/ReactCommon/react/renderer/animated/tests/DecayAnimationDriverTest.cpp +245 -0
- package/ReactCommon/react/renderer/animated/tests/ManagedPropsMountingOverrideTests.cpp +204 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +17 -0
- package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +0 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +6 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +25 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +29 -1
- package/ReactCommon/react/renderer/attributedstring/primitives.h +4 -2
- package/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +73 -0
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +6 -0
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +79 -126
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.cpp +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.cpp +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +5 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +4 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +5 -0
- package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.cpp +235 -352
- package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp +30 -46
- package/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp +17 -27
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +8 -10
- package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +19 -0
- package/ReactCommon/react/renderer/components/text/TextEffectComponentDescriptor.h +17 -0
- package/ReactCommon/react/renderer/components/text/TextEffectProps.cpp +59 -0
- package/ReactCommon/react/renderer/components/text/TextEffectProps.h +30 -0
- package/{Libraries/Text/VirtualText/RCTVirtualTextView.mm → ReactCommon/react/renderer/components/text/TextEffectShadowNode.cpp} +4 -6
- package/ReactCommon/react/renderer/components/text/TextEffectShadowNode.h +26 -0
- package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/HostPlatformParagraphProps.cpp +18 -28
- package/ReactCommon/react/renderer/components/text/tests/BaseTextShadowNodeTest.cpp +15 -0
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +42 -50
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +168 -754
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +0 -9
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +248 -312
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -6
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +2 -12
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +73 -27
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +7 -9
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -11
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +82 -162
- package/ReactCommon/react/renderer/components/view/primitives.h +5 -0
- package/ReactCommon/react/renderer/components/view/propsConversions.h +74 -42
- package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +5 -5
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +353 -6
- package/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec +1 -1
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +41 -16
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +19 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
- package/ReactCommon/react/renderer/core/LayoutMetrics.h +3 -0
- package/ReactCommon/react/renderer/core/Props.cpp +8 -39
- package/ReactCommon/react/renderer/core/Props.h +63 -13
- package/ReactCommon/react/renderer/core/RawProps.cpp +20 -3
- package/ReactCommon/react/renderer/core/RawProps.h +44 -0
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +11 -27
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.h +3 -3
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +4 -6
- package/ReactCommon/react/renderer/core/RawPropsParser.h +3 -3
- package/ReactCommon/react/renderer/core/StateData.h +4 -4
- package/ReactCommon/react/renderer/core/propsConversions.h +3 -7
- package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +8 -0
- package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +7 -7
- package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +19 -19
- package/ReactCommon/react/renderer/core/tests/PropsConceptsTest.cpp +135 -0
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +43 -53
- package/ReactCommon/react/renderer/css/React-renderercss.podspec +1 -1
- package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +1 -1
- package/ReactCommon/react/renderer/element/tests/ElementTest.cpp +3 -3
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +17 -0
- package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +123 -33
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +26 -14
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +96 -53
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +4 -0
- package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +96 -1
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +29 -318
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +105 -33
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +2 -0
- package/ReactCommon/react/renderer/mounting/internal/CullingContext.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +11 -3
- package/ReactCommon/react/renderer/mounting/tests/OrderIndexTest.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +15 -250
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeReactBranchingTest.cpp +141 -0
- package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +1 -1
- package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +2 -1
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +22 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +13 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +13 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +9 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +43 -5
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +17 -1
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +113 -8
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +14 -6
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +3 -2
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +1 -85
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +0 -6
- package/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp +671 -0
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +22 -5
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +4 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +11 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +65 -26
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +193 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h +14 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -1
- package/ReactCommon/react/renderer/textlayoutmanager/tests/TextLayoutManagerTest.cpp +86 -5
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +31 -41
- package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -2
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +1 -1
- package/ReactCommon/react/renderer/uimanager/tests/FindShadowNodeByTagTest.cpp +1 -52
- package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +4 -4
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +88 -39
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +12 -2
- package/ReactCommon/react/runtime/PlatformTimerRegistry.h +10 -0
- package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -1
- package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -1
- package/ReactCommon/react/runtime/ReactInstance.cpp +79 -64
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +0 -89
- package/ReactCommon/react/runtime/iostests/MainQueueCoordinatorTests.mm +99 -0
- package/ReactCommon/react/runtime/iostests/RCTInstanceTests.mm +244 -0
- package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +1 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/ObjCTimerRegistry.h +1 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +47 -30
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.mm +3 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTPerformanceLoggerUtils.mm +3 -2
- package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +27 -3
- package/ReactCommon/react/runtime/tests/cxx/RuntimeExecutorShutdownTest.cpp +155 -0
- package/ReactCommon/react/timing/React-timing.podspec +1 -1
- package/ReactCommon/react/utils/React-utils.podspec +1 -1
- package/ReactCommon/react/utils/Telemetry.h +0 -13
- package/ReactCommon/react/utils/tests/Base64Tests.cpp +36 -0
- package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +0 -1
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
- package/ReactCommon/runtimeexecutor/platform/ios/ReactCommon/RuntimeExecutorSyncUIThreadUtils.mm +21 -38
- package/ReactCommon/yoga/Yoga.podspec +2 -2
- package/ReactCommon/yoga/yoga/YGEnums.cpp +2 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +1 -0
- package/ReactCommon/yoga/yoga/YGNode.cpp +27 -0
- package/ReactCommon/yoga/yoga/YGNode.h +69 -0
- package/ReactCommon/yoga/yoga/YGNodeLayout.h +0 -2
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +283 -10
- package/ReactCommon/yoga/yoga/config/Config.h +1 -1
- package/ReactCommon/yoga/yoga/enums/Errata.h +1 -0
- package/ReactCommon/yoga/yoga/node/LayoutResults.h +8 -0
- package/ReactCommon/yoga/yoga/node/Node.cpp +32 -0
- package/ReactCommon/yoga/yoga/node/Node.h +33 -0
- package/changes.json +5 -13
- package/cli.js +3 -182
- package/flow/bom.js.flow +42 -42
- package/flow/cssom.js.flow +21 -21
- package/flow/dom.js.flow +128 -128
- package/flow/global.js +6 -0
- package/gradle/libs.versions.toml +7 -5
- package/index.js +53 -86
- package/index.js.flow +53 -23
- package/package.json +44 -63
- package/react-native.config.js +82 -1
- package/scripts/cocoapods/fabric.rb +1 -1
- package/scripts/cocoapods/jsengine.rb +1 -1
- package/scripts/cocoapods/new_architecture.rb +1 -1
- package/scripts/cocoapods/rncore.rb +36 -78
- package/scripts/cocoapods/rncore_facades.rb +232 -0
- package/scripts/cocoapods/rndependencies.rb +64 -3
- package/scripts/cocoapods/rndeps_facades.rb +193 -0
- package/scripts/cocoapods/spm.rb +79 -12
- package/scripts/cocoapods/utils.rb +7 -9
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +0 -1
- package/scripts/codegen/templates/Package.swift.spm-template +97 -0
- package/scripts/codegen/templates/ReactAppDependencyProvider.podspec.template +1 -1
- package/scripts/codegen/templates/ReactCodegen.podspec.template +2 -2
- package/scripts/hermes/hermes-utils.js +27 -58
- package/scripts/ios-configure-glog.sh +1 -1
- package/scripts/react-native-xcode.sh +20 -0
- package/scripts/react_native_pods.rb +71 -21
- package/scripts/react_native_pods_utils/script_phases.sh +4 -3
- package/scripts/replace-rncore-version.js +57 -86
- package/scripts/setup-apple-spm.js +1267 -0
- package/scripts/spm/__doc__/rfc-spm-xcframework.md +707 -0
- package/scripts/spm/__doc__/spm-autolinking-plugins.md +244 -0
- package/scripts/spm/__doc__/spm-header-paths-contract.md +97 -0
- package/scripts/spm/__doc__/spm-plugins-assessment.md +128 -0
- package/scripts/spm/__doc__/spm-scripts.md +486 -0
- package/scripts/spm/autolinking-plugins.js +331 -0
- package/scripts/spm/download-spm-artifacts.js +1409 -0
- package/scripts/spm/expand-spm-dependencies.js +216 -0
- package/scripts/spm/flavored-frameworks.js +1008 -0
- package/scripts/spm/generate-spm-autolinking-config.js +221 -0
- package/scripts/spm/generate-spm-autolinking.js +1888 -0
- package/scripts/spm/generate-spm-package.js +302 -0
- package/scripts/spm/generate-spm-xcodeproj.js +2266 -0
- package/scripts/spm/read-podspec.js +695 -0
- package/scripts/spm/scaffold-package-swift.js +1206 -0
- package/scripts/spm/spm-pbxproj.js +654 -0
- package/scripts/spm/spm-types.js +520 -0
- package/scripts/spm/spm-utils.js +645 -0
- package/scripts/spm/sync-spm-autolinking.js +160 -0
- package/sdks/.hermesv1version +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +9 -39
- package/sdks/hermes-engine/hermes-utils.rb +19 -73
- package/sdks/hermes-engine/utils/replace_hermes_version.js +18 -4
- package/sdks/hermes-engine/version.properties +1 -2
- package/settings.gradle.kts +0 -43
- package/src/asset-registry.js +29 -0
- package/src/private/animated/NativeAnimatedHelper.js +45 -21
- package/src/private/assets/AssetRegistry.js +52 -0
- package/src/private/{specs_DEPRECATED/components → components/activityindicator/specs}/ActivityIndicatorViewNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/debuggingoverlay/specs}/DebuggingOverlayNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/drawerlayoutandroid/specs}/AndroidDrawerLayoutNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/inputaccessoryview/specs}/RCTInputAccessoryViewNativeComponent.js +4 -4
- package/src/private/{specs_DEPRECATED/components → components/modal/specs}/RCTModalHostViewNativeComponent.js +4 -9
- package/src/private/{specs_DEPRECATED/components → components/progressbarandroid/specs}/ProgressBarAndroidNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/AndroidSwipeRefreshLayoutNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/PullToRefreshViewNativeComponent.js +7 -7
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
- package/src/private/{specs_DEPRECATED/components → components/safeareaview/specs}/RCTSafeAreaViewNativeComponent.js +3 -3
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +1 -1
- package/src/private/{specs_DEPRECATED/components → components/scrollview/specs}/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/AndroidSwitchNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/SwitchNativeComponent.js +10 -7
- package/src/private/{specs_DEPRECATED/components → components/unimplementedview/specs}/UnimplementedNativeViewNativeComponent.js +4 -4
- package/src/private/components/virtualcollection/Virtual.js +5 -5
- package/src/private/components/virtualcollection/VirtualCollectionView.js +2 -6
- package/src/private/components/virtualcollection/column/VirtualColumn.js +1 -1
- package/src/private/components/virtualcollection/row/VirtualRow.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +3 -1
- package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +4 -4
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +4 -2
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +46 -70
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +88 -94
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
- package/src/private/renderer/events/ReactNativeResponder.js +49 -4
- package/src/private/renderer/events/ResponderTouchHistoryStore.js +11 -2
- package/src/private/renderer/events/dispatchNativeEvent.js +71 -36
- package/src/private/setup/setUpDOM.js +19 -9
- package/src/private/setup/setUpIntersectionObserver.js +7 -0
- package/src/private/setup/setUpMutationObserver.js +3 -1
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +9 -9
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +28 -28
- package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +45 -25
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +44 -24
- package/src/private/specs_DEPRECATED/modules/NativeAppState.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +8 -6
- package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +11 -11
- package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +13 -13
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +9 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +8 -5
- package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +6 -4
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +35 -31
- package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSourceCode.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js +5 -17
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js +10 -15
- package/src/private/specs_DEPRECATED/modules/NativeTiming.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +35 -22
- package/src/private/specs_DEPRECATED/modules/NativeVibration.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +7 -7
- package/src/private/types/HostInstance.js +38 -80
- package/src/private/viewtransition/specs/NativeViewTransition.js +6 -4
- package/src/private/webapis/dom/abort-api/AbortController.js +92 -0
- package/src/private/webapis/dom/abort-api/AbortSignal.js +243 -0
- package/src/private/webapis/dom/events/CustomEvent.js +1 -1
- package/src/private/webapis/dom/events/Event.js +12 -12
- package/src/private/webapis/dom/events/EventTarget.js +146 -37
- package/src/private/webapis/dom/events/internals/EventInternals.js +36 -0
- package/src/private/webapis/dom/events/internals/EventTargetInternals.js +38 -3
- package/src/private/webapis/dom/nodes/ReactNativeDocument.js +11 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +105 -4
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +11 -0
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +9 -0
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +34 -7
- package/src/private/webapis/dom/nodes/ReadOnlyText.js +33 -0
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +46 -42
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +12 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +4 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +10 -0
- package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -3
- package/src/private/webapis/errors/DOMException.js +50 -50
- package/src/private/webapis/geometry/DOMRectList.js +12 -0
- package/src/private/webapis/geometry/DOMRectList.js.flow +3 -1
- package/src/private/webapis/html/events/MessageEvent.js +3 -3
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +13 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +3 -7
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +5 -5
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +7 -7
- package/src/private/webapis/mutationobserver/MutationRecord.js +12 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +5 -7
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/EventTiming.js +3 -3
- package/src/private/webapis/performance/PerformanceEntry.js +3 -3
- package/src/private/webapis/performance/PerformanceObserver.js +4 -4
- package/src/private/webapis/performance/ResourceTiming.js +13 -13
- package/src/private/webapis/performance/UserTiming.js +3 -3
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +26 -20
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src/private/webapis/websockets/events/CloseEvent.js +3 -3
- package/src/private/webapis/xhr/events/ProgressEvent.js +3 -3
- package/src/react-private-interface.js +145 -0
- package/src/react-private-interface.js.flow +48 -0
- package/src/setup-env.js +22 -0
- package/src/types/globals.d.ts +35 -3
- package/src/unstable-internals-do-not-use.d.ts +214 -0
- package/src/unstable-internals-do-not-use.js +76 -0
- package/third-party-podspecs/RCT-Folly.podspec +1 -1
- package/third-party-podspecs/ReactNativeDependencies.podspec +3 -3
- package/third-party-podspecs/glog.podspec +1 -1
- package/types/index.d.ts +0 -1
- package/types/public/DeprecatedPropertiesAlias.d.ts +0 -4
- package/types/public/ReactNativeTypes.d.ts +6 -4
- package/types_generated/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +26 -31
- package/types_generated/Libraries/Alert/Alert.d.ts +44 -7
- package/types_generated/Libraries/Animated/AnimatedEvent.d.ts +2 -2
- package/types_generated/Libraries/Animated/AnimatedExports.d.ts +2 -2
- package/types_generated/Libraries/Animated/AnimatedImplementation.d.ts +107 -3
- package/types_generated/Libraries/Animated/Easing.d.ts +5 -4
- package/types_generated/Libraries/Animated/animations/Animation.d.ts +7 -7
- package/types_generated/Libraries/Animated/animations/DecayAnimation.d.ts +5 -5
- package/types_generated/Libraries/Animated/animations/SpringAnimation.d.ts +49 -49
- package/types_generated/Libraries/Animated/animations/TimingAnimation.d.ts +13 -13
- package/types_generated/Libraries/Animated/components/AnimatedFlatList.d.ts +3 -3
- package/types_generated/Libraries/Animated/components/AnimatedScrollView.d.ts +2 -2
- package/types_generated/Libraries/Animated/components/AnimatedSectionList.d.ts +3 -3
- package/types_generated/Libraries/Animated/createAnimatedComponent.d.ts +4 -4
- package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +2 -2
- package/types_generated/Libraries/Animated/nodes/AnimatedInterpolation.d.ts +9 -9
- package/types_generated/Libraries/Animated/nodes/AnimatedNode.d.ts +3 -3
- package/types_generated/Libraries/AppState/AppState.d.ts +41 -22
- package/types_generated/Libraries/BatchedBridge/NativeModules.d.ts +8 -1
- package/types_generated/Libraries/Blob/BlobTypes.d.ts +4 -4
- package/types_generated/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +37 -46
- package/types_generated/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +92 -43
- package/types_generated/Libraries/Components/Button.d.ts +118 -197
- package/types_generated/Libraries/Components/Clipboard/Clipboard.d.ts +6 -1
- package/types_generated/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.d.ts +44 -63
- package/types_generated/Libraries/Components/Keyboard/Keyboard.d.ts +30 -61
- package/types_generated/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +30 -21
- package/types_generated/Libraries/Components/Pressable/Pressable.d.ts +41 -17
- package/types_generated/Libraries/Components/Pressable/useAndroidRippleForView.d.ts +6 -6
- package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +5 -5
- package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.d.ts +18 -1
- package/types_generated/Libraries/Components/RefreshControl/RefreshControl.d.ts +35 -52
- package/types_generated/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -11
- package/types_generated/Libraries/Components/ScrollView/ScrollView.d.ts +212 -88
- package/types_generated/Libraries/Components/ScrollView/ScrollViewStickyHeader.d.ts +4 -4
- package/types_generated/Libraries/Components/StatusBar/StatusBar.d.ts +29 -62
- package/types_generated/Libraries/Components/Switch/Switch.d.ts +75 -70
- package/types_generated/Libraries/Components/TextInput/InputAccessoryView.d.ts +16 -65
- package/types_generated/Libraries/Components/TextInput/TextInput.d.ts +118 -3
- package/types_generated/Libraries/Components/TextInput/TextInput.flow.d.ts +24 -9
- package/types_generated/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +18 -18
- package/types_generated/Libraries/Components/Touchable/TouchableHighlight.d.ts +24 -13
- package/types_generated/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +27 -64
- package/types_generated/Libraries/Components/Touchable/TouchableOpacity.d.ts +18 -6
- package/types_generated/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +28 -28
- package/types_generated/Libraries/Components/View/View.d.ts +13 -9
- package/types_generated/Libraries/Components/View/ViewAccessibility.d.ts +31 -20
- package/types_generated/Libraries/Components/View/ViewNativeComponent.d.ts +1 -2
- package/types_generated/Libraries/Components/View/ViewPropTypes.d.ts +75 -24
- package/types_generated/Libraries/Core/ExtendedError.d.ts +10 -10
- package/types_generated/Libraries/EventEmitter/NativeEventEmitter.d.ts +34 -1
- package/types_generated/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +4 -1
- package/types_generated/Libraries/Image/AssetSourceResolver.d.ts +2 -13
- package/types_generated/Libraries/Image/ImageBackground.d.ts +33 -22
- package/types_generated/Libraries/Image/ImageProps.d.ts +201 -251
- package/types_generated/Libraries/Image/ImageTypes.flow.d.ts +6 -5
- package/types_generated/Libraries/Interaction/PanResponder.d.ts +103 -97
- package/types_generated/Libraries/LayoutAnimation/LayoutAnimation.d.ts +18 -7
- package/types_generated/Libraries/Linking/Linking.d.ts +28 -20
- package/types_generated/Libraries/Lists/FlatList.d.ts +17 -18
- package/types_generated/Libraries/Lists/SectionList.d.ts +10 -5
- package/types_generated/Libraries/Lists/VirtualizedList.d.ts +3 -1
- package/types_generated/Libraries/Lists/VirtualizedSectionList.d.ts +3 -1
- package/types_generated/Libraries/LogBox/Data/LogBoxData.d.ts +2 -2
- package/types_generated/Libraries/LogBox/Data/LogBoxLog.d.ts +2 -2
- package/types_generated/Libraries/LogBox/Data/parseLogBoxLog.d.ts +2 -2
- package/types_generated/Libraries/LogBox/LogBox.d.ts +4 -1
- package/types_generated/Libraries/Modal/Modal.d.ts +70 -35
- package/types_generated/Libraries/Network/FormData.d.ts +5 -5
- package/types_generated/Libraries/Performance/Systrace.d.ts +11 -1
- package/types_generated/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +31 -21
- package/types_generated/Libraries/Pressability/Pressability.d.ts +5 -5
- package/types_generated/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +15 -11
- package/types_generated/Libraries/ReactNative/AppRegistry.flow.d.ts +5 -5
- package/types_generated/Libraries/ReactNative/AppRegistryImpl.d.ts +56 -9
- package/types_generated/Libraries/ReactNative/I18nManager.d.ts +20 -1
- package/types_generated/Libraries/ReactNative/IPerformanceLogger.flow.d.ts +5 -5
- package/types_generated/Libraries/ReactPrivate/ReactNativePrivateInterface.d.ts +6 -22
- package/types_generated/Libraries/Renderer/shims/ReactNativeTypes.d.ts +34 -34
- package/types_generated/Libraries/Share/Share.d.ts +36 -39
- package/types_generated/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +7 -1
- package/types_generated/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +3 -3
- package/types_generated/Libraries/StyleSheet/StyleSheetTypes.d.ts +202 -181
- package/types_generated/Libraries/StyleSheet/private/_TransformStyle.d.ts +3 -3
- package/types_generated/Libraries/Text/Text.d.ts +10 -6
- package/types_generated/Libraries/Text/TextProps.d.ts +57 -102
- package/types_generated/Libraries/TurboModule/RCTExport.d.ts +2 -2
- package/types_generated/Libraries/Types/CoreEventTypes.d.ts +14 -8
- package/types_generated/Libraries/Utilities/Appearance.d.ts +25 -13
- package/types_generated/Libraries/Utilities/BackHandler.d.ts +17 -1
- package/types_generated/Libraries/Utilities/DevSettings.d.ts +9 -2
- package/types_generated/Libraries/Utilities/Dimensions.d.ts +19 -13
- package/types_generated/Libraries/Utilities/PixelRatio.d.ts +6 -3
- package/types_generated/Libraries/Utilities/Platform.d.ts +5 -1
- package/types_generated/Libraries/Utilities/PlatformTypes.d.ts +65 -6
- package/types_generated/Libraries/Utilities/codegenNativeComponent.d.ts +5 -5
- package/types_generated/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.d.ts +2 -2
- package/types_generated/Libraries/Utilities/differ/deepDiffer.d.ts +2 -2
- package/types_generated/Libraries/Utilities/useColorScheme.d.ts +12 -2
- package/types_generated/Libraries/Utilities/useWindowDimensions.d.ts +7 -1
- package/types_generated/Libraries/Vibration/Vibration.d.ts +14 -6
- package/types_generated/index.d.ts +31 -25
- package/types_generated/src/private/assets/AssetRegistry.d.ts +42 -0
- package/types_generated/src/private/components/virtualcollection/VirtualCollectionView.d.ts +5 -5
- package/types_generated/src/private/components/virtualcollection/column/VirtualColumn.d.ts +3 -3
- package/types_generated/src/private/components/virtualcollection/row/VirtualRow.d.ts +3 -3
- package/types_generated/src/private/components/virtualview/VirtualView.d.ts +7 -7
- package/types_generated/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.d.ts +5 -5
- package/types_generated/src/private/components/virtualview/VirtualViewNativeComponent.d.ts +5 -5
- package/types_generated/src/private/renderer/events/dispatchNativeEvent.d.ts +26 -0
- package/types_generated/src/private/specs_DEPRECATED/modules/NativeAppearance.d.ts +6 -5
- package/types_generated/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.d.ts +7 -7
- package/types_generated/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.d.ts +5 -5
- package/types_generated/src/private/specs_DEPRECATED/modules/NativeUIManager.d.ts +8 -8
- package/types_generated/src/private/types/HostComponent.d.ts +3 -3
- package/types_generated/src/private/types/HostInstance.d.ts +39 -74
- package/types_generated/src/private/webapis/dom/events/CustomEvent.d.ts +2 -2
- package/types_generated/src/private/webapis/dom/events/Event.d.ts +4 -4
- package/types_generated/src/private/webapis/dom/events/EventTarget.d.ts +8 -8
- package/types_generated/src/private/webapis/dom/nodes/ReactNativeDocument.d.ts +3 -1
- package/types_generated/src/private/webapis/dom/nodes/ReactNativeElement.d.ts +57 -4
- package/types_generated/src/private/webapis/dom/nodes/ReadOnlyCharacterData.d.ts +3 -1
- package/types_generated/src/private/webapis/dom/nodes/ReadOnlyElement.d.ts +3 -1
- package/types_generated/src/private/webapis/dom/nodes/ReadOnlyNode.d.ts +4 -2
- package/types_generated/src/private/webapis/dom/nodes/ReadOnlyText.d.ts +3 -1
- package/types_generated/src/private/webapis/dom/nodes/specs/NativeDOM.d.ts +3 -3
- package/types_generated/src/private/webapis/dom/oldstylecollections/HTMLCollection.d.ts +3 -1
- package/types_generated/src/private/webapis/dom/oldstylecollections/NodeList.d.ts +3 -1
- package/types_generated/src/react-private-interface.d.ts +33 -0
- package/Libraries/AppDelegate/RCTArchConfiguratorProtocol.h +0 -38
- package/Libraries/Image/AssetRegistry.js +0 -14
- package/Libraries/Image/RCTImageShadowView.h +0 -17
- package/Libraries/Image/RCTImageShadowView.mm +0 -28
- package/Libraries/Image/RCTImageView.h +0 -32
- package/Libraries/Image/RCTImageView.mm +0 -508
- package/Libraries/Image/RCTImageViewManager.h +0 -17
- package/Libraries/Image/RCTImageViewManager.mm +0 -115
- package/Libraries/Interaction/InteractionManager.d.ts +0 -87
- package/Libraries/Interaction/InteractionManager.js +0 -189
- package/Libraries/Text/BaseText/RCTBaseTextShadowView.h +0 -35
- package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +0 -162
- package/Libraries/Text/BaseText/RCTBaseTextViewManager.h +0 -21
- package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +0 -64
- package/Libraries/Text/RCTTextAttributes.h +0 -107
- package/Libraries/Text/RCTTextAttributes.mm +0 -358
- package/Libraries/Text/RawText/RCTRawTextShadowView.h +0 -23
- package/Libraries/Text/RawText/RCTRawTextShadowView.mm +0 -38
- package/Libraries/Text/RawText/RCTRawTextViewManager.h +0 -21
- package/Libraries/Text/RawText/RCTRawTextViewManager.mm +0 -32
- package/Libraries/Text/Text/RCTTextShadowView.h +0 -33
- package/Libraries/Text/Text/RCTTextShadowView.mm +0 -469
- package/Libraries/Text/Text/RCTTextView.h +0 -34
- package/Libraries/Text/Text/RCTTextView.mm +0 -298
- package/Libraries/Text/Text/RCTTextViewManager.h +0 -19
- package/Libraries/Text/Text/RCTTextViewManager.mm +0 -97
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.h +0 -21
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +0 -67
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.h +0 -21
- package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +0 -28
- package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.h +0 -30
- package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +0 -367
- package/Libraries/Text/TextInput/RCTBaseTextInputView.h +0 -68
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -849
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.h +0 -17
- package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +0 -181
- package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +0 -24
- package/Libraries/Text/TextInput/RCTInputAccessoryView.h +0 -22
- package/Libraries/Text/TextInput/RCTInputAccessoryView.mm +0 -82
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.mm +0 -78
- package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.h +0 -17
- package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +0 -33
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.h +0 -21
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.mm +0 -43
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.h +0 -21
- package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +0 -35
- package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.h +0 -17
- package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.mm +0 -42
- package/Libraries/Text/VirtualText/RCTVirtualTextView.h +0 -28
- package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.h +0 -17
- package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +0 -30
- package/Libraries/Utilities/SceneTracker.js +0 -42
- package/Libraries/Wrapper/Example/RCTWrapperExampleView.h +0 -21
- package/Libraries/Wrapper/Example/RCTWrapperExampleView.m +0 -57
- package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.h +0 -21
- package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.m +0 -27
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.h +0 -25
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.m +0 -50
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.h +0 -23
- package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.m +0 -35
- package/Libraries/Wrapper/RCTWrapper.h +0 -73
- package/Libraries/Wrapper/RCTWrapperShadowView.h +0 -27
- package/Libraries/Wrapper/RCTWrapperShadowView.m +0 -138
- package/Libraries/Wrapper/RCTWrapperView.h +0 -42
- package/Libraries/Wrapper/RCTWrapperView.m +0 -99
- package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.h +0 -30
- package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.m +0 -137
- package/Libraries/Wrapper/RCTWrapperViewManager.h +0 -25
- package/Libraries/Wrapper/RCTWrapperViewManager.m +0 -31
- package/React/Base/RCTRootContentView.h +0 -43
- package/React/Base/RCTRootContentView.m +0 -111
- package/React/Base/RCTRootViewInternal.h +0 -28
- package/React/CxxBridge/RCTCxxBridge.mm +0 -1572
- package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.h +0 -25
- package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +0 -34
- package/React/CxxBridge/RCTObjcExecutor.h +0 -34
- package/React/CxxBridge/RCTObjcExecutor.mm +0 -150
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -34
- package/React/CxxModule/DispatchMessageQueueThread.h +0 -50
- package/React/CxxModule/RCTCxxMethod.h +0 -17
- package/React/CxxModule/RCTCxxMethod.mm +0 -147
- package/React/CxxModule/RCTNativeModule.h +0 -34
- package/React/CxxModule/RCTNativeModule.mm +0 -241
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +0 -205
- package/React/Tests/Text/RCTTextAttributesTest.mm +0 -49
- package/React/Views/RCTActivityIndicatorView.h +0 -16
- package/React/Views/RCTActivityIndicatorView.m +0 -26
- package/React/Views/RCTActivityIndicatorViewManager.h +0 -23
- package/React/Views/RCTActivityIndicatorViewManager.m +0 -65
- package/React/Views/RCTDebuggingOverlayManager.h +0 -17
- package/React/Views/RCTDebuggingOverlayManager.m +0 -68
- package/React/Views/RCTModalHostView.h +0 -64
- package/React/Views/RCTModalHostView.m +0 -264
- package/React/Views/RCTModalHostViewController.m +0 -74
- package/React/Views/RCTModalHostViewManager.m +0 -131
- package/React/Views/RCTModalManager.h +0 -22
- package/React/Views/RCTModalManager.m +0 -46
- package/React/Views/RCTRootShadowView.h +0 -35
- package/React/Views/RCTRootShadowView.m +0 -53
- package/React/Views/RCTShadowView+Internal.h +0 -18
- package/React/Views/RCTShadowView+Internal.m +0 -23
- package/React/Views/RCTSwitch.h +0 -22
- package/React/Views/RCTSwitch.m +0 -24
- package/React/Views/RCTSwitchManager.h +0 -17
- package/React/Views/RCTSwitchManager.m +0 -70
- package/React/Views/RefreshControl/RCTRefreshControl.h +0 -24
- package/React/Views/RefreshControl/RCTRefreshControl.m +0 -230
- package/React/Views/RefreshControl/RCTRefreshControlManager.h +0 -17
- package/React/Views/RefreshControl/RCTRefreshControlManager.m +0 -47
- package/React/Views/SafeAreaView/RCTSafeAreaShadowView.h +0 -21
- package/React/Views/SafeAreaView/RCTSafeAreaShadowView.m +0 -57
- package/React/Views/SafeAreaView/RCTSafeAreaView.h +0 -27
- package/React/Views/SafeAreaView/RCTSafeAreaView.m +0 -79
- package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.h +0 -25
- package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.m +0 -25
- package/React/Views/SafeAreaView/RCTSafeAreaViewManager.h +0 -21
- package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +0 -32
- package/React/Views/ScrollView/RCTScrollContentShadowView.h +0 -19
- package/React/Views/ScrollView/RCTScrollContentShadowView.m +0 -35
- package/React/Views/ScrollView/RCTScrollContentView.h +0 -19
- package/React/Views/ScrollView/RCTScrollContentView.m +0 -36
- package/React/Views/ScrollView/RCTScrollContentViewManager.h +0 -17
- package/React/Views/ScrollView/RCTScrollContentViewManager.m +0 -31
- package/React/Views/ScrollView/RCTScrollView.m +0 -1168
- package/React/Views/ScrollView/RCTScrollViewManager.h +0 -25
- package/React/Views/ScrollView/RCTScrollViewManager.m +0 -202
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +0 -251
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +0 -315
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.kt +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +0 -89
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +0 -736
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +0 -221
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -399
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactZIndexedViewGroup.kt +0 -35
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +0 -346
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +0 -666
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -147
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupDrawingOrderHelper.kt +0 -113
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +0 -614
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +0 -1838
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +0 -1646
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +0 -1638
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.java +0 -41
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.java +0 -37
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +0 -39
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +0 -49
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.java +0 -45
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +0 -928
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java +0 -35
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.java +0 -35
- package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.cpp +0 -23
- package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.h +0 -37
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +0 -135
- package/ReactCommon/cxxreact/JSIndexedRAMBundle.h +0 -72
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +0 -143
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +0 -55
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +0 -78
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +0 -39
- package/ReactCommon/hermes/inspector-modern/chrome/tests/ConnectionDemuxTests.cpp +0 -148
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +0 -168
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +0 -416
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +0 -31
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +0 -134
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +0 -290
- package/ReactCommon/react/renderer/core/RawPropsKey.cpp +0 -62
- package/ReactCommon/react/renderer/core/RawPropsKey.h +0 -39
- package/ReactCommon/react/renderer/mounting/internal/DiffMap.h +0 -170
- package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +0 -95
- package/ReactCommon/react/renderer/mounting/internal/TinyMap.h +0 -147
- package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +0 -154
- package/interface.js +0 -21
- package/jest-preset.js +0 -26
- package/rn-get-polyfills.js +0 -13
- package/sdks/.hermesversion +0 -1
- package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +0 -13
- package/types/tsconfig.json +0 -15
- package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.d.ts +0 -14
- package/types_generated/Libraries/Components/ScrollView/ScrollViewNativeComponent.d.ts +0 -21
- package/types_generated/Libraries/Components/ScrollView/ScrollViewNativeComponentType.d.ts +0 -134
- package/types_generated/Libraries/Components/Switch/AndroidSwitchNativeComponent.d.ts +0 -14
- package/types_generated/Libraries/Components/Switch/SwitchNativeComponent.d.ts +0 -14
- package/types_generated/Libraries/Components/Touchable/Touchable.d.ts +0 -262
- package/types_generated/Libraries/Interaction/InteractionManager.d.ts +0 -117
- package/types_generated/Libraries/NativeModules/specs/NativeDialogManagerAndroid.d.ts +0 -17
- package/types_generated/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.d.ts +0 -53
- package/types_generated/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.d.ts +0 -36
- package/types_generated/src/private/specs_DEPRECATED/components/SwitchNativeComponent.d.ts +0 -51
- package/types_generated/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.d.ts +0 -37
- package/types_generated/tsconfig.test.json +0 -16
- /package/ReactCommon/{cxxreact → react/utils}/MoveWrapper.h +0 -0
|
@@ -0,0 +1,1409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
/*:: import type {DownloadArgs, ResolvedArtifact, ProcessResult, ArtifactResultEntry} from './spm-types'; */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* download-spm-artifacts.js
|
|
17
|
+
*
|
|
18
|
+
* Downloads the three React Native iOS xcframeworks from Maven, extracts
|
|
19
|
+
* them to a local cache directory, and writes artifacts.json for use by
|
|
20
|
+
* generate-spm-package.js.
|
|
21
|
+
*
|
|
22
|
+
* Supports stable releases, nightlies, and snapshot builds, matching
|
|
23
|
+
* the same resolution logic used by the existing CocoaPods scripts.
|
|
24
|
+
*
|
|
25
|
+
* Artifacts handled:
|
|
26
|
+
* React – react-native-core tarball from Maven
|
|
27
|
+
* ReactNativeDependencies – react-native-dependencies tarball from Maven
|
|
28
|
+
* hermes-engine – hermes-ios tarball from Maven
|
|
29
|
+
*
|
|
30
|
+
* Usage:
|
|
31
|
+
* node scripts/download-spm-artifacts.js [options]
|
|
32
|
+
*
|
|
33
|
+
* Options:
|
|
34
|
+
* --version <ver> RN version. Defaults to version in package.json.
|
|
35
|
+
* Use "nightly" to resolve the latest nightly.
|
|
36
|
+
* --flavor <f> debug (default) or release.
|
|
37
|
+
* --output <dir> Where to write xcframeworks.
|
|
38
|
+
* Default: ~/Library/Caches/ReactNative/spm-artifacts/{version}/{flavor}/
|
|
39
|
+
* (downloaded tarballs are shared with CocoaPods in
|
|
40
|
+
* ~/Library/Caches/ReactNative/; RCT_SKIP_CACHES=1 bypasses.)
|
|
41
|
+
*
|
|
42
|
+
* Per-artifact version overrides (mirrors existing env vars):
|
|
43
|
+
* HERMES_VERSION=<ver|nightly|latest-v1>
|
|
44
|
+
* RN_DEP_VERSION=<ver|nightly>
|
|
45
|
+
* ENTERPRISE_REPOSITORY=<url> Custom Maven mirror (must match Maven structure)
|
|
46
|
+
*
|
|
47
|
+
* Output:
|
|
48
|
+
* <output>/React.xcframework/
|
|
49
|
+
* <output>/ReactNativeDependencies.xcframework/
|
|
50
|
+
* <output>/hermes-engine.xcframework/
|
|
51
|
+
* <output>/artifacts.json ← maps target names to xcframework paths
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
const {
|
|
55
|
+
defaultCacheDir,
|
|
56
|
+
displayPath,
|
|
57
|
+
makeLogger,
|
|
58
|
+
sharedCacheDir,
|
|
59
|
+
} = require('./spm-utils');
|
|
60
|
+
const {execFileSync} = require('child_process');
|
|
61
|
+
const fs = require('fs');
|
|
62
|
+
const path = require('path');
|
|
63
|
+
const stream = require('stream');
|
|
64
|
+
const yargs = require('yargs');
|
|
65
|
+
|
|
66
|
+
const {log, warn, die} = makeLogger('download-spm-artifacts');
|
|
67
|
+
|
|
68
|
+
function parseArgs(argv /*: Array<string> */) /*: DownloadArgs */ {
|
|
69
|
+
const parsed = yargs(argv)
|
|
70
|
+
.version(false)
|
|
71
|
+
.option('version', {
|
|
72
|
+
alias: 'v',
|
|
73
|
+
type: 'string',
|
|
74
|
+
describe:
|
|
75
|
+
'RN version. Defaults to version in package.json. Use "nightly" to resolve the latest nightly.',
|
|
76
|
+
})
|
|
77
|
+
.option('flavor', {
|
|
78
|
+
type: 'string',
|
|
79
|
+
default: 'debug',
|
|
80
|
+
describe: 'debug or release',
|
|
81
|
+
})
|
|
82
|
+
.option('output', {
|
|
83
|
+
alias: 'o',
|
|
84
|
+
type: 'string',
|
|
85
|
+
describe:
|
|
86
|
+
'Where to write xcframeworks. Default: ~/Library/Caches/ReactNative/spm-artifacts/{version}/{flavor}/',
|
|
87
|
+
})
|
|
88
|
+
.option('core-tarball', {
|
|
89
|
+
type: 'string',
|
|
90
|
+
describe:
|
|
91
|
+
'Local React core tarball to use instead of downloading (e.g. the prebuild output). Env fallback: RN_CORE_TARBALL_PATH.',
|
|
92
|
+
})
|
|
93
|
+
.option('headers-tarball', {
|
|
94
|
+
type: 'string',
|
|
95
|
+
describe:
|
|
96
|
+
'Local ReactNativeHeaders tarball to use instead of downloading. Env fallback: RN_HEADERS_TARBALL_PATH.',
|
|
97
|
+
})
|
|
98
|
+
.option('deps-tarball', {
|
|
99
|
+
type: 'string',
|
|
100
|
+
describe:
|
|
101
|
+
'Local ReactNativeDependencies tarball to use instead of downloading (e.g. the deps prebuild output). Carries the headers sidecar beside the binary, so this subsumes --deps-headers-tarball for a local build. Env fallback: RN_DEPS_TARBALL_PATH.',
|
|
102
|
+
})
|
|
103
|
+
.option('deps-headers-tarball', {
|
|
104
|
+
type: 'string',
|
|
105
|
+
describe:
|
|
106
|
+
'Local ReactNativeDependenciesHeaders tarball. Normally unneeded — the sidecar ships inside the ReactNativeDependencies tarball. Env fallback: RN_DEPS_HEADERS_TARBALL_PATH.',
|
|
107
|
+
})
|
|
108
|
+
.usage(
|
|
109
|
+
'Usage: $0 [options]\n\nDownloads React Native iOS xcframeworks from Maven.',
|
|
110
|
+
)
|
|
111
|
+
.help()
|
|
112
|
+
.parseSync();
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
version: parsed.version ?? null,
|
|
116
|
+
flavor: parsed.flavor.toLowerCase(),
|
|
117
|
+
output: parsed.output ?? null,
|
|
118
|
+
coreTarball:
|
|
119
|
+
parsed['core-tarball'] ?? process.env.RN_CORE_TARBALL_PATH ?? null,
|
|
120
|
+
headersTarball:
|
|
121
|
+
parsed['headers-tarball'] ?? process.env.RN_HEADERS_TARBALL_PATH ?? null,
|
|
122
|
+
depsTarball:
|
|
123
|
+
parsed['deps-tarball'] ?? process.env.RN_DEPS_TARBALL_PATH ?? null,
|
|
124
|
+
depsHeadersTarball:
|
|
125
|
+
parsed['deps-headers-tarball'] ??
|
|
126
|
+
process.env.RN_DEPS_HEADERS_TARBALL_PATH ??
|
|
127
|
+
null,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const MAVEN_RELEASE =
|
|
132
|
+
process.env.ENTERPRISE_REPOSITORY ?? 'https://repo1.maven.org/maven2';
|
|
133
|
+
const MAVEN_SNAPSHOT =
|
|
134
|
+
'https://central.sonatype.com/repository/maven-snapshots';
|
|
135
|
+
|
|
136
|
+
function rnCoreReleaseUrl(
|
|
137
|
+
version /*: string */,
|
|
138
|
+
flavor /*: string */,
|
|
139
|
+
) /*: string */ {
|
|
140
|
+
return (
|
|
141
|
+
`${MAVEN_RELEASE}/com/facebook/react/react-native-artifacts/${version}/` +
|
|
142
|
+
`react-native-artifacts-${version}-reactnative-core-${flavor}.tar.gz`
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
function rnDepsReleaseUrl(
|
|
146
|
+
version /*: string */,
|
|
147
|
+
flavor /*: string */,
|
|
148
|
+
) /*: string */ {
|
|
149
|
+
return (
|
|
150
|
+
`${MAVEN_RELEASE}/com/facebook/react/react-native-artifacts/${version}/` +
|
|
151
|
+
`react-native-artifacts-${version}-reactnative-dependencies-${flavor}.tar.gz`
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
function hermesReleaseUrl(
|
|
155
|
+
version /*: string */,
|
|
156
|
+
flavor /*: string */,
|
|
157
|
+
) /*: string */ {
|
|
158
|
+
return (
|
|
159
|
+
`${MAVEN_RELEASE}/com/facebook/hermes/hermes-ios/${version}/` +
|
|
160
|
+
`hermes-ios-${version}-hermes-ios-${flavor}.tar.gz`
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Resolves a Maven snapshot URL by fetching maven-metadata.xml and extracting
|
|
166
|
+
* the latest timestamp+buildNumber. Mirrors computeNightlyTarballURL() in utils.js.
|
|
167
|
+
*
|
|
168
|
+
* @param {string} version Base version without -SNAPSHOT suffix (e.g. "0.85.0")
|
|
169
|
+
* @param {string} subGroup com/facebook/<subGroup>
|
|
170
|
+
* @param {string} coordinate Maven artifact coordinate (e.g. "react-native-artifacts")
|
|
171
|
+
* @param {string} artifactName Classifier part of the filename (e.g. "reactnative-core-debug.tar.gz")
|
|
172
|
+
*/
|
|
173
|
+
async function resolveSnapshotUrl(
|
|
174
|
+
version /*: string */,
|
|
175
|
+
subGroup /*: string */,
|
|
176
|
+
coordinate /*: string */,
|
|
177
|
+
artifactName /*: string */,
|
|
178
|
+
) /*: Promise<string> */ {
|
|
179
|
+
const metadataUrl =
|
|
180
|
+
`${MAVEN_SNAPSHOT}/com/facebook/${subGroup}/${coordinate}/` +
|
|
181
|
+
`${version}-SNAPSHOT/maven-metadata.xml`;
|
|
182
|
+
|
|
183
|
+
log(` Fetching snapshot metadata: ${metadataUrl}`);
|
|
184
|
+
const res = await fetch(metadataUrl);
|
|
185
|
+
if (!res.ok) {
|
|
186
|
+
throw new Error(
|
|
187
|
+
`Failed to fetch snapshot metadata (${res.status}): ${metadataUrl}`,
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
const xml = await res.text();
|
|
191
|
+
|
|
192
|
+
const ts = (xml.match(/<timestamp>(.*?)<\/timestamp>/) ?? [])[1];
|
|
193
|
+
const bn = (xml.match(/<buildNumber>(.*?)<\/buildNumber>/) ?? [])[1];
|
|
194
|
+
if (!ts || !bn) {
|
|
195
|
+
throw new Error(
|
|
196
|
+
`Could not parse timestamp/buildNumber from ${metadataUrl}`,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const fullVersion = `${version}-${ts}-${bn}`;
|
|
201
|
+
return (
|
|
202
|
+
`${MAVEN_SNAPSHOT}/com/facebook/${subGroup}/${coordinate}/` +
|
|
203
|
+
`${version}-SNAPSHOT/${coordinate}-${fullVersion}-${artifactName}`
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async function rnCoreSnapshotUrl(
|
|
208
|
+
version /*: string */,
|
|
209
|
+
flavor /*: string */,
|
|
210
|
+
) /*: Promise<string> */ {
|
|
211
|
+
return resolveSnapshotUrl(
|
|
212
|
+
version,
|
|
213
|
+
'react',
|
|
214
|
+
'react-native-artifacts',
|
|
215
|
+
`reactnative-core-${flavor}.tar.gz`,
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
async function rnDepsSnapshotUrl(
|
|
219
|
+
version /*: string */,
|
|
220
|
+
flavor /*: string */,
|
|
221
|
+
) /*: Promise<string> */ {
|
|
222
|
+
return resolveSnapshotUrl(
|
|
223
|
+
version,
|
|
224
|
+
'react',
|
|
225
|
+
'react-native-artifacts',
|
|
226
|
+
`reactnative-dependencies-${flavor}.tar.gz`,
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
async function hermesSnapshotUrl(
|
|
230
|
+
version /*: string */,
|
|
231
|
+
flavor /*: string */,
|
|
232
|
+
) /*: Promise<string> */ {
|
|
233
|
+
return resolveSnapshotUrl(
|
|
234
|
+
version,
|
|
235
|
+
'hermes',
|
|
236
|
+
'hermes-ios',
|
|
237
|
+
`hermes-ios-${flavor}.tar.gz`,
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
async function resolveNightlyVersion(
|
|
242
|
+
npmPackage /*: string */,
|
|
243
|
+
) /*: Promise<string> */ {
|
|
244
|
+
log(` Resolving nightly version from npm: ${npmPackage}`);
|
|
245
|
+
|
|
246
|
+
const res = await fetch(`https://registry.npmjs.org/${npmPackage}/nightly`);
|
|
247
|
+
if (!res.ok) {
|
|
248
|
+
throw new Error(`npm lookup failed for ${npmPackage}: ${res.status}`);
|
|
249
|
+
}
|
|
250
|
+
const ver = (await res.json())?.version;
|
|
251
|
+
assertSafeVersion(ver, `${npmPackage}/nightly`);
|
|
252
|
+
log(` Resolved nightly: ${ver}`);
|
|
253
|
+
return ver;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// A version string flows into Maven URLs and local tarball filenames (which are
|
|
257
|
+
// then passed to tar/cp via execFileSync). Constrain it to a safe charset so a
|
|
258
|
+
// malformed/hostile registry response can't produce a surprising path or a
|
|
259
|
+
// confusing 404 — and so static analysis sees an explicit sanitizer.
|
|
260
|
+
function assertSafeVersion(
|
|
261
|
+
ver /*: unknown */,
|
|
262
|
+
source /*: string */,
|
|
263
|
+
) /*: void */ {
|
|
264
|
+
if (typeof ver !== 'string' || !/^[A-Za-z0-9._-]+$/.test(ver)) {
|
|
265
|
+
throw new Error(
|
|
266
|
+
`npm response for ${source} has no usable "version" field (got: ${String(ver)})`,
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Returns the cache-slot key for a given raw version label.
|
|
273
|
+
*
|
|
274
|
+
* Stable versions ('0.80.0', '0.81.0', …) become their own slot.
|
|
275
|
+
* Dev / nightly labels ('1000.0.0', 'nightly') resolve to the current
|
|
276
|
+
* nightly version (e.g. '0.85.0-nightly-20260515-abc') so each published
|
|
277
|
+
* nightly is its own slot — a new nightly invalidates automatically
|
|
278
|
+
* instead of sticking on a stale `1000.0.0` cache forever.
|
|
279
|
+
*
|
|
280
|
+
* If the npm registry lookup fails (offline, transient error), falls back
|
|
281
|
+
* to the raw label so a previously-cached slot under that label can still
|
|
282
|
+
* be used. A subsequent download attempt would surface the real error.
|
|
283
|
+
*/
|
|
284
|
+
async function resolveCacheSlotVersion(
|
|
285
|
+
rawVersion /*: string */,
|
|
286
|
+
) /*: Promise<string> */ {
|
|
287
|
+
if (rawVersion !== '1000.0.0' && rawVersion !== 'nightly') {
|
|
288
|
+
return rawVersion;
|
|
289
|
+
}
|
|
290
|
+
try {
|
|
291
|
+
return await resolveNightlyVersion('react-native');
|
|
292
|
+
} catch {
|
|
293
|
+
return rawVersion;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
async function resolveLatestV1Version() /*: Promise<string> */ {
|
|
298
|
+
log(' Resolving latest-v1 Hermes from npm...');
|
|
299
|
+
// $FlowFixMe[incompatible-call] global fetch not in Flow stubs
|
|
300
|
+
const res = await fetch(
|
|
301
|
+
'https://registry.npmjs.org/hermes-compiler/latest-v1',
|
|
302
|
+
);
|
|
303
|
+
if (!res.ok) {
|
|
304
|
+
throw new Error(`npm lookup failed: ${res.status}`);
|
|
305
|
+
}
|
|
306
|
+
const ver = (await res.json())?.version;
|
|
307
|
+
assertSafeVersion(ver, 'hermes-compiler/latest-v1');
|
|
308
|
+
log(` Resolved latest-v1: ${ver}`);
|
|
309
|
+
return ver;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
async function exists(url /*: string */) /*: Promise<boolean> */ {
|
|
313
|
+
try {
|
|
314
|
+
// $FlowFixMe[incompatible-call] global fetch not in Flow stubs
|
|
315
|
+
const res = await fetch(url, {method: 'HEAD'});
|
|
316
|
+
return res.status === 200;
|
|
317
|
+
} catch {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Returns {url, version} for the React Native core xcframework tarball.
|
|
324
|
+
* Resolution order:
|
|
325
|
+
* 1. Stable release on Maven Central
|
|
326
|
+
* 2. Snapshot build on Sonatype
|
|
327
|
+
*/
|
|
328
|
+
async function resolveRNCoreArtifact(
|
|
329
|
+
version /*: string */,
|
|
330
|
+
flavor /*: string */,
|
|
331
|
+
localTarball /*: ?string */,
|
|
332
|
+
) /*: Promise<ResolvedArtifact> */ {
|
|
333
|
+
// Local-tarball override (--core-tarball / RN_CORE_TARBALL_PATH): use a
|
|
334
|
+
// locally built core tarball (e.g. the prebuild's output) instead of
|
|
335
|
+
// downloading. processArtifact() treats an existing local path as "already
|
|
336
|
+
// downloaded" and always re-extracts it. NOTE: distinct from CocoaPods'
|
|
337
|
+
// RCT_TESTONLY_RNCORE_TARBALL_PATH — that one belongs to pod install.
|
|
338
|
+
if (localTarball != null && localTarball !== '') {
|
|
339
|
+
if (!fs.existsSync(localTarball)) {
|
|
340
|
+
throw new Error(
|
|
341
|
+
`core tarball override is set to ${localTarball} but the file does not exist`,
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
log(` Using LOCAL core tarball: ${localTarball}`);
|
|
345
|
+
return {url: localTarball, version: `${version}-local`};
|
|
346
|
+
}
|
|
347
|
+
const releaseUrl = rnCoreReleaseUrl(version, flavor);
|
|
348
|
+
if (await exists(releaseUrl)) {
|
|
349
|
+
log(` Using stable release: ${releaseUrl}`);
|
|
350
|
+
return {url: releaseUrl, version};
|
|
351
|
+
}
|
|
352
|
+
log(` Release not found, trying snapshot...`);
|
|
353
|
+
const snapshotUrl = await rnCoreSnapshotUrl(version, flavor);
|
|
354
|
+
return {url: snapshotUrl, version};
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Returns {url, version} for ReactNativeDependencies.
|
|
359
|
+
* Respects RN_DEP_VERSION env var.
|
|
360
|
+
*/
|
|
361
|
+
async function resolveRNDepsArtifact(
|
|
362
|
+
rnVersion /*: string */,
|
|
363
|
+
flavor /*: string */,
|
|
364
|
+
localTarball /*: ?string */,
|
|
365
|
+
) /*: Promise<ResolvedArtifact> */ {
|
|
366
|
+
// Local-tarball override (--deps-tarball / RN_DEPS_TARBALL_PATH): use a
|
|
367
|
+
// locally built deps tarball (the deps prebuild output) instead of
|
|
368
|
+
// downloading. It carries ReactNativeDependenciesHeaders.xcframework beside
|
|
369
|
+
// the binary, so the existing companion-staging path (COMPANION_XCFRAMEWORKS
|
|
370
|
+
// 'rndeps' -> ReactNativeDependenciesHeaders) supplies the sidecar too — no
|
|
371
|
+
// separate --deps-headers-tarball needed for a local build.
|
|
372
|
+
if (localTarball != null && localTarball !== '') {
|
|
373
|
+
if (!fs.existsSync(localTarball)) {
|
|
374
|
+
throw new Error(
|
|
375
|
+
`deps tarball override is set to ${localTarball} but the file does not exist`,
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
log(` Using LOCAL deps tarball: ${localTarball}`);
|
|
379
|
+
return {url: localTarball, version: `${rnVersion}-local`};
|
|
380
|
+
}
|
|
381
|
+
let version = process.env.RN_DEP_VERSION ?? rnVersion;
|
|
382
|
+
if (version === 'nightly') {
|
|
383
|
+
version = await resolveNightlyVersion('react-native');
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
const releaseUrl = rnDepsReleaseUrl(version, flavor);
|
|
387
|
+
if (await exists(releaseUrl)) {
|
|
388
|
+
log(` Using stable release: ${releaseUrl}`);
|
|
389
|
+
return {url: releaseUrl, version};
|
|
390
|
+
}
|
|
391
|
+
log(` Release not found, trying snapshot...`);
|
|
392
|
+
const snapshotUrl = await rnDepsSnapshotUrl(version, flavor);
|
|
393
|
+
return {url: snapshotUrl, version};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Returns {url, version} for Hermes. Hermes uses its own version space
|
|
398
|
+
* decoupled from React Native's nightly cadence — RN's `hermes-compiler`
|
|
399
|
+
* npm package publishes a `latest-v1` dist-tag that always resolves to a
|
|
400
|
+
* binary that's been built and uploaded to Maven. Our default mirrors RN's
|
|
401
|
+
* CocoaPods prebuild path (see scripts/ios-prebuild/hermes.js):
|
|
402
|
+
*
|
|
403
|
+
* HERMES_VERSION unset → 'latest-v1' dist-tag
|
|
404
|
+
* HERMES_VERSION=latest-v1 → same (explicit)
|
|
405
|
+
* HERMES_VERSION=nightly → hermes-compiler@nightly dist-tag
|
|
406
|
+
* HERMES_VERSION=<literal> → use that version verbatim
|
|
407
|
+
*
|
|
408
|
+
* Note: rnVersion / rawVersion are intentionally not consulted. There is no
|
|
409
|
+
* guarantee a hermes-ios artifact exists for any given RN nightly hash —
|
|
410
|
+
* tying them together produces 404s like #(repro case from spikes/MyApp).
|
|
411
|
+
*/
|
|
412
|
+
async function resolveHermesArtifact(
|
|
413
|
+
rnVersion /*: string */,
|
|
414
|
+
flavor /*: string */,
|
|
415
|
+
rawVersion /*: string | null */,
|
|
416
|
+
) /*: Promise<ResolvedArtifact> */ {
|
|
417
|
+
let version = process.env.HERMES_VERSION ?? 'latest-v1';
|
|
418
|
+
|
|
419
|
+
if (version === 'nightly') {
|
|
420
|
+
version = await resolveNightlyVersion('hermes-compiler');
|
|
421
|
+
} else if (version === 'latest-v1') {
|
|
422
|
+
version = await resolveLatestV1Version();
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
const releaseUrl = hermesReleaseUrl(version, flavor);
|
|
426
|
+
if (await exists(releaseUrl)) {
|
|
427
|
+
log(` Using stable release: ${releaseUrl}`);
|
|
428
|
+
return {url: releaseUrl, version};
|
|
429
|
+
}
|
|
430
|
+
log(` Release not found, trying snapshot...`);
|
|
431
|
+
const snapshotUrl = await hermesSnapshotUrl(version, flavor);
|
|
432
|
+
return {url: snapshotUrl, version};
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
function formatBytes(bytes /*: number */) /*: string */ {
|
|
436
|
+
if (bytes < 1024 * 1024) {
|
|
437
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
438
|
+
}
|
|
439
|
+
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
function formatSpeed(bytesPerSec /*: number */) /*: string */ {
|
|
443
|
+
if (bytesPerSec < 1024 * 1024) {
|
|
444
|
+
return `${(bytesPerSec / 1024).toFixed(0)} KB/s`;
|
|
445
|
+
}
|
|
446
|
+
return `${(bytesPerSec / 1024 / 1024).toFixed(1)} MB/s`;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Creates a multi-line progress display that keeps N lines pinned at the
|
|
451
|
+
* bottom of the terminal. Each line is prefixed and truncated to the current
|
|
452
|
+
* terminal width — without truncation, a long line (e.g. a FAILED message
|
|
453
|
+
* carrying a URL) wraps to a second row and `\x1b[2K` only clears the first,
|
|
454
|
+
* leaving stray fragments after the next update.
|
|
455
|
+
*/
|
|
456
|
+
function createProgressDisplay(
|
|
457
|
+
lineCount /*: number */,
|
|
458
|
+
prefix /*: string */ = '',
|
|
459
|
+
) /*: {update: (index: number, text: string) => void} */ {
|
|
460
|
+
let initialized = false;
|
|
461
|
+
|
|
462
|
+
function truncateToWidth(s /*: string */) /*: string */ {
|
|
463
|
+
// $FlowFixMe[prop-missing] columns lives on tty$WriteStream not stream$Writable
|
|
464
|
+
const cols = process.stdout.columns ?? 120;
|
|
465
|
+
const budget = Math.max(10, cols - 1);
|
|
466
|
+
let out = '';
|
|
467
|
+
let visLen = 0;
|
|
468
|
+
let i = 0;
|
|
469
|
+
while (i < s.length) {
|
|
470
|
+
if (s[i] === '\x1b' && s[i + 1] === '[') {
|
|
471
|
+
// CSI escape: forward through the final letter without counting.
|
|
472
|
+
let j = i + 2;
|
|
473
|
+
while (j < s.length && !/[a-zA-Z]/.test(s[j])) j++;
|
|
474
|
+
out += s.slice(i, j + 1);
|
|
475
|
+
i = j + 1;
|
|
476
|
+
} else {
|
|
477
|
+
if (visLen >= budget - 1) return out + '…\x1b[0m';
|
|
478
|
+
out += s[i];
|
|
479
|
+
visLen++;
|
|
480
|
+
i++;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
return out;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
function update(index /*: number */, text /*: string */) {
|
|
487
|
+
if (!initialized) {
|
|
488
|
+
for (let i = 0; i < lineCount; i++) {
|
|
489
|
+
process.stdout.write('\n');
|
|
490
|
+
}
|
|
491
|
+
initialized = true;
|
|
492
|
+
}
|
|
493
|
+
const moveUp = lineCount - index;
|
|
494
|
+
const line = truncateToWidth(prefix + text);
|
|
495
|
+
process.stdout.write(`\x1b[${moveUp}A\x1b[2K\r${line}\x1b[${moveUp}B\r`);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
return {update};
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/*::
|
|
502
|
+
type ProgressCallback = (label: string, downloaded: number, total: number, speed: number, done: boolean, elapsed: number) => void;
|
|
503
|
+
*/
|
|
504
|
+
|
|
505
|
+
async function download(
|
|
506
|
+
url /*: string */,
|
|
507
|
+
destPath /*: string */,
|
|
508
|
+
onProgress /*:: ?: ProgressCallback */,
|
|
509
|
+
) /*: Promise<void> */ {
|
|
510
|
+
if (fs.existsSync(destPath)) {
|
|
511
|
+
log(` Already cached: ${path.basename(destPath)}`);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
const tmpPath = destPath + '.download';
|
|
516
|
+
try {
|
|
517
|
+
// $FlowFixMe[incompatible-call] global fetch not in Flow stubs
|
|
518
|
+
const res = await fetch(url);
|
|
519
|
+
if (!res.ok) {
|
|
520
|
+
throw new Error(`HTTP ${res.status} ${res.statusText}: ${url}`);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
const totalBytes = parseInt(res.headers.get('content-length') ?? '0', 10);
|
|
524
|
+
let downloadedBytes = 0;
|
|
525
|
+
let lastPrintTime = Date.now();
|
|
526
|
+
let lastPrintBytes = 0;
|
|
527
|
+
const startTime = Date.now();
|
|
528
|
+
|
|
529
|
+
const fileStream = fs.createWriteStream(tmpPath);
|
|
530
|
+
|
|
531
|
+
const reportProgress = (final /*: boolean */ = false) => {
|
|
532
|
+
const now = Date.now();
|
|
533
|
+
const elapsed = (now - startTime) / 1000;
|
|
534
|
+
const intervalMs = now - lastPrintTime;
|
|
535
|
+
const intervalBytes = downloadedBytes - lastPrintBytes;
|
|
536
|
+
const speed = intervalMs > 0 ? (intervalBytes / intervalMs) * 1000 : 0;
|
|
537
|
+
|
|
538
|
+
if (onProgress) {
|
|
539
|
+
onProgress(
|
|
540
|
+
path.basename(destPath),
|
|
541
|
+
downloadedBytes,
|
|
542
|
+
totalBytes,
|
|
543
|
+
speed,
|
|
544
|
+
final,
|
|
545
|
+
elapsed,
|
|
546
|
+
);
|
|
547
|
+
} else {
|
|
548
|
+
// Fallback: single-line progress (used when not in parallel mode)
|
|
549
|
+
let line = ` ${formatBytes(downloadedBytes)}`;
|
|
550
|
+
if (totalBytes > 0) {
|
|
551
|
+
const pct = ((downloadedBytes / totalBytes) * 100).toFixed(1);
|
|
552
|
+
line += ` / ${formatBytes(totalBytes)} (${pct}%)`;
|
|
553
|
+
}
|
|
554
|
+
line += ` @ ${formatSpeed(speed)}`;
|
|
555
|
+
|
|
556
|
+
if (final) {
|
|
557
|
+
const totalMb = formatBytes(downloadedBytes);
|
|
558
|
+
const totalSec = elapsed.toFixed(1);
|
|
559
|
+
const avgSpeed =
|
|
560
|
+
elapsed > 0 ? formatSpeed(downloadedBytes / elapsed) : '';
|
|
561
|
+
process.stdout.write(
|
|
562
|
+
`\r Done: ${totalMb} in ${totalSec}s (avg ${avgSpeed}) \n`,
|
|
563
|
+
);
|
|
564
|
+
} else {
|
|
565
|
+
process.stdout.write(`\r${line} `);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
if (!final) {
|
|
570
|
+
lastPrintTime = now;
|
|
571
|
+
lastPrintBytes = downloadedBytes;
|
|
572
|
+
}
|
|
573
|
+
};
|
|
574
|
+
|
|
575
|
+
if (res.body) {
|
|
576
|
+
// fetch() returns a Web ReadableStream, not a Node.js Readable.
|
|
577
|
+
// Convert it so we can pipe to a file stream and track progress.
|
|
578
|
+
// $FlowFixMe[prop-missing] stream.Readable.fromWeb not in Flow stubs
|
|
579
|
+
const nodeReadable = stream.Readable.fromWeb(res.body);
|
|
580
|
+
|
|
581
|
+
await new Promise((resolve, reject) => {
|
|
582
|
+
let progressInterval;
|
|
583
|
+
try {
|
|
584
|
+
progressInterval = setInterval(() => reportProgress(), 500);
|
|
585
|
+
|
|
586
|
+
nodeReadable
|
|
587
|
+
.on('data', chunk => {
|
|
588
|
+
downloadedBytes += chunk.length;
|
|
589
|
+
})
|
|
590
|
+
.on('error', err => {
|
|
591
|
+
clearInterval(progressInterval);
|
|
592
|
+
reject(err);
|
|
593
|
+
})
|
|
594
|
+
.pipe(fileStream)
|
|
595
|
+
.on('finish', () => {
|
|
596
|
+
clearInterval(progressInterval);
|
|
597
|
+
reportProgress(true);
|
|
598
|
+
resolve();
|
|
599
|
+
})
|
|
600
|
+
.on('error', err => {
|
|
601
|
+
clearInterval(progressInterval);
|
|
602
|
+
reject(err);
|
|
603
|
+
});
|
|
604
|
+
} catch (err) {
|
|
605
|
+
if (progressInterval != null) clearInterval(progressInterval);
|
|
606
|
+
reject(err);
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
} else {
|
|
610
|
+
const buf = await res.arrayBuffer();
|
|
611
|
+
downloadedBytes = buf.byteLength;
|
|
612
|
+
fs.writeFileSync(tmpPath, Buffer.from(buf));
|
|
613
|
+
reportProgress(true);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
fs.renameSync(tmpPath, destPath);
|
|
617
|
+
} catch (err) {
|
|
618
|
+
// Clean up partial .download temp file on failure
|
|
619
|
+
try {
|
|
620
|
+
fs.unlinkSync(tmpPath);
|
|
621
|
+
} catch {
|
|
622
|
+
// temp file may not exist yet
|
|
623
|
+
}
|
|
624
|
+
throw err;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Extracts a .tar.gz and returns the path to the first .xcframework found.
|
|
630
|
+
*/
|
|
631
|
+
function extractXCFramework(
|
|
632
|
+
tarPath /*: string */,
|
|
633
|
+
extractDir /*: string */,
|
|
634
|
+
) /*: string */ {
|
|
635
|
+
fs.mkdirSync(extractDir, {recursive: true});
|
|
636
|
+
log(` Extracting ${path.basename(tarPath)}...`);
|
|
637
|
+
execFileSync('tar', ['-xzf', tarPath, '-C', extractDir], {stdio: 'pipe'});
|
|
638
|
+
|
|
639
|
+
const found = findFirst(extractDir, name => name.endsWith('.xcframework'), 8);
|
|
640
|
+
if (found == null) {
|
|
641
|
+
throw new Error(`No .xcframework found after extracting ${tarPath}`);
|
|
642
|
+
}
|
|
643
|
+
log(` Found: ${path.relative(extractDir, found)}`);
|
|
644
|
+
return found;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
function findFirst(
|
|
648
|
+
dir /*: string */,
|
|
649
|
+
predicate /*: (name: string) => boolean */,
|
|
650
|
+
depth /*: number */,
|
|
651
|
+
) /*: string | null */ {
|
|
652
|
+
if (depth <= 0 || !fs.existsSync(dir)) {
|
|
653
|
+
return null;
|
|
654
|
+
}
|
|
655
|
+
for (const entry of fs.readdirSync(dir, {withFileTypes: true})) {
|
|
656
|
+
// $FlowFixMe[incompatible-type] Dirent.name is string|Buffer in Flow but always string here
|
|
657
|
+
const full /*: string */ = path.join(dir, entry.name);
|
|
658
|
+
// $FlowFixMe[incompatible-type] Dirent.name is string|Buffer in Flow but always string here
|
|
659
|
+
if (predicate(entry.name)) {
|
|
660
|
+
return full;
|
|
661
|
+
}
|
|
662
|
+
if (entry.isDirectory()) {
|
|
663
|
+
const hit = findFirst(full, predicate, depth - 1);
|
|
664
|
+
if (hit != null) {
|
|
665
|
+
return hit;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
return null;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* The hermes-ios tarball ships its public C++ API headers in
|
|
674
|
+
* `destroot/include/hermes` alongside the framework — which extractXCFramework
|
|
675
|
+
* discards (it keeps only the .xcframework). Stage the `hermes/` namespace into
|
|
676
|
+
* `<outputDir>/hermes-headers/hermes` so headers-compose can fold it into
|
|
677
|
+
* ReactNativeHeaders (making `<hermes/hermes.h>` resolve for any RN-linking
|
|
678
|
+
* target). Only `hermes/` is staged — `jsi/` is already vended elsewhere.
|
|
679
|
+
* Best-effort: a tarball without these headers just leaves hermes unavailable.
|
|
680
|
+
*/
|
|
681
|
+
function stageHermesHeaders(
|
|
682
|
+
extractDir /*: string */,
|
|
683
|
+
outputDir /*: string */,
|
|
684
|
+
) /*: void */ {
|
|
685
|
+
let includeDir = path.join(extractDir, 'destroot', 'include');
|
|
686
|
+
if (!fs.existsSync(path.join(includeDir, 'hermes', 'hermes.h'))) {
|
|
687
|
+
// Fall back to locating the include dir wherever it landed in the tarball.
|
|
688
|
+
const hit = findFirst(extractDir, name => name === 'include', 8);
|
|
689
|
+
if (hit != null) {
|
|
690
|
+
includeDir = hit;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
const src = path.join(includeDir, 'hermes');
|
|
694
|
+
if (!fs.existsSync(path.join(src, 'hermes.h'))) {
|
|
695
|
+
log(' Hermes public headers not found in tarball — skipping header stage');
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
698
|
+
const destRoot = path.join(outputDir, 'hermes-headers');
|
|
699
|
+
const dest = path.join(destRoot, 'hermes');
|
|
700
|
+
fs.rmSync(dest, {recursive: true, force: true});
|
|
701
|
+
fs.mkdirSync(destRoot, {recursive: true});
|
|
702
|
+
execFileSync('/bin/cp', ['-R', src, dest], {stdio: 'pipe'});
|
|
703
|
+
log(' Staged Hermes public headers → hermes-headers/hermes');
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
const DEPS_HEADERS_NAME = 'ReactNativeDependenciesHeaders';
|
|
707
|
+
|
|
708
|
+
// Headers-only companion xcframeworks that ship INSIDE another artifact's
|
|
709
|
+
// tarball: the ReactCore tarball carries ReactNativeHeaders.xcframework
|
|
710
|
+
// beside React.xcframework, and the ReactNativeDependencies tarball carries
|
|
711
|
+
// the ReactNativeDependenciesHeaders sidecar beside the binary (the binary is
|
|
712
|
+
// framework-type, so only the LIBRARY-type sidecar can serve the deps
|
|
713
|
+
// namespaces — folly/glog/boost/... — to SwiftPM; ReactNativeHeaders is
|
|
714
|
+
// pure-RN). extractXCFramework keeps only the first xcframework, so
|
|
715
|
+
// companions are staged separately into their own
|
|
716
|
+
// `<outputDir>/<name>.xcframework`.
|
|
717
|
+
const COMPANION_XCFRAMEWORKS /*: {[label: string]: string} */ = {
|
|
718
|
+
'react-core': 'ReactNativeHeaders',
|
|
719
|
+
rndeps: DEPS_HEADERS_NAME,
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* Stages a companion xcframework out of an extract dir. Returns true when
|
|
724
|
+
* staged; false when the tarball predates the companion.
|
|
725
|
+
*/
|
|
726
|
+
function stageCompanionXcframework(
|
|
727
|
+
extractDir /*: string */,
|
|
728
|
+
outputDir /*: string */,
|
|
729
|
+
name /*: string */,
|
|
730
|
+
) /*: boolean */ {
|
|
731
|
+
const src = findFirst(extractDir, n => n === `${name}.xcframework`, 8);
|
|
732
|
+
if (src == null) {
|
|
733
|
+
return false;
|
|
734
|
+
}
|
|
735
|
+
const dest = path.join(outputDir, `${name}.xcframework`);
|
|
736
|
+
fs.rmSync(dest, {recursive: true, force: true});
|
|
737
|
+
fs.renameSync(src, dest);
|
|
738
|
+
log(` Staged companion ${name}.xcframework`);
|
|
739
|
+
return true;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* Self-heal: stage a companion xcframework into an already-extracted slot
|
|
744
|
+
* (the fast path skips extraction, so the companion was never staged).
|
|
745
|
+
* Prefers a CACHED tarball (no network); downloads only as a last resort.
|
|
746
|
+
*/
|
|
747
|
+
async function ensureCompanionStaged(
|
|
748
|
+
url /*: string */,
|
|
749
|
+
downloadDir /*: string */,
|
|
750
|
+
sharedTarballName /*: ?string */,
|
|
751
|
+
outputDir /*: string */,
|
|
752
|
+
name /*: string */,
|
|
753
|
+
) /*: Promise<void> */ {
|
|
754
|
+
const candidates = [
|
|
755
|
+
!/^https?:\/\//.test(url) ? url : null, // local-tarball override
|
|
756
|
+
path.join(downloadDir, url.split('/').pop() ?? ''),
|
|
757
|
+
sharedTarballName != null
|
|
758
|
+
? path.join(sharedCacheDir(), sharedTarballName)
|
|
759
|
+
: null,
|
|
760
|
+
].filter(Boolean);
|
|
761
|
+
let tarPath /*: ?string */ = candidates.find(
|
|
762
|
+
p => p != null && fs.existsSync(p),
|
|
763
|
+
);
|
|
764
|
+
if (tarPath == null) {
|
|
765
|
+
if (!/^https?:\/\//.test(url)) {
|
|
766
|
+
return; // local override missing — nothing to recover from
|
|
767
|
+
}
|
|
768
|
+
const localPath = path.join(
|
|
769
|
+
downloadDir,
|
|
770
|
+
url.split('/').pop() ?? 'artifact.tar.gz',
|
|
771
|
+
);
|
|
772
|
+
fs.mkdirSync(downloadDir, {recursive: true});
|
|
773
|
+
await download(url, localPath);
|
|
774
|
+
tarPath = localPath;
|
|
775
|
+
}
|
|
776
|
+
const tmp = path.join(outputDir, `.companion-tmp-${name}`);
|
|
777
|
+
fs.rmSync(tmp, {recursive: true, force: true});
|
|
778
|
+
fs.mkdirSync(tmp, {recursive: true});
|
|
779
|
+
try {
|
|
780
|
+
execFileSync('tar', ['-xzf', tarPath, '-C', tmp], {stdio: 'pipe'});
|
|
781
|
+
stageCompanionXcframework(tmp, outputDir, name);
|
|
782
|
+
} finally {
|
|
783
|
+
fs.rmSync(tmp, {recursive: true, force: true});
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* Self-heal: stage Hermes headers into an already-extracted slot (the fast
|
|
789
|
+
* path skips extraction, so the headers were never staged). Prefers a CACHED
|
|
790
|
+
* hermes tarball (no network); downloads only as a last resort so the slot
|
|
791
|
+
* can't get stuck "incomplete" forever. No-op only when the headers can't be
|
|
792
|
+
* obtained at all (e.g. a missing local-tarball override).
|
|
793
|
+
*/
|
|
794
|
+
async function ensureHermesHeadersStaged(
|
|
795
|
+
url /*: string */,
|
|
796
|
+
downloadDir /*: string */,
|
|
797
|
+
sharedTarballName /*: ?string */,
|
|
798
|
+
outputDir /*: string */,
|
|
799
|
+
) /*: Promise<void> */ {
|
|
800
|
+
const candidates = [
|
|
801
|
+
!/^https?:\/\//.test(url) ? url : null, // local-tarball override
|
|
802
|
+
path.join(downloadDir, url.split('/').pop() ?? ''),
|
|
803
|
+
sharedTarballName != null
|
|
804
|
+
? path.join(sharedCacheDir(), sharedTarballName)
|
|
805
|
+
: null,
|
|
806
|
+
].filter(Boolean);
|
|
807
|
+
let tarPath /*: ?string */ = candidates.find(
|
|
808
|
+
p => p != null && fs.existsSync(p),
|
|
809
|
+
);
|
|
810
|
+
if (tarPath == null) {
|
|
811
|
+
if (!/^https?:\/\//.test(url)) {
|
|
812
|
+
return; // local override missing — nothing to recover from
|
|
813
|
+
}
|
|
814
|
+
const localPath = path.join(
|
|
815
|
+
downloadDir,
|
|
816
|
+
url.split('/').pop() ?? 'hermes.tar.gz',
|
|
817
|
+
);
|
|
818
|
+
fs.mkdirSync(downloadDir, {recursive: true});
|
|
819
|
+
await download(url, localPath);
|
|
820
|
+
tarPath = localPath;
|
|
821
|
+
}
|
|
822
|
+
const tmp = path.join(outputDir, '.hermes-hdr-tmp');
|
|
823
|
+
fs.rmSync(tmp, {recursive: true, force: true});
|
|
824
|
+
fs.mkdirSync(tmp, {recursive: true});
|
|
825
|
+
try {
|
|
826
|
+
execFileSync('tar', ['-xzf', tarPath, '-C', tmp], {stdio: 'pipe'});
|
|
827
|
+
stageHermesHeaders(tmp, outputDir);
|
|
828
|
+
} finally {
|
|
829
|
+
fs.rmSync(tmp, {recursive: true, force: true});
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* Downloads a tarball, extracts the xcframework, and places it directly in
|
|
835
|
+
* the output directory as <xcframeworkName>.xcframework/.
|
|
836
|
+
*
|
|
837
|
+
* SPM binaryTarget(path:) accepts a bare .xcframework directory — no zip or
|
|
838
|
+
* checksum needed for local path-based targets.
|
|
839
|
+
*
|
|
840
|
+
* @param {string} label Internal label (used for log messages)
|
|
841
|
+
* @param {string} xcframeworkName The SPM target name (e.g. "React", "hermes-engine")
|
|
842
|
+
* @param resolvedArtifact {url, version} from resolve*Artifact()
|
|
843
|
+
* @param {string} downloadDir Where to cache downloaded tarballs
|
|
844
|
+
* @param {string} outputDir Where to place the final <name>.xcframework directory
|
|
845
|
+
* @param sharedTarballName Filename in the flat shared cache to reuse/populate
|
|
846
|
+
* (matches CocoaPods' convention), or null to not share.
|
|
847
|
+
*/
|
|
848
|
+
async function processArtifact(
|
|
849
|
+
label /*: string */,
|
|
850
|
+
xcframeworkName /*: string */,
|
|
851
|
+
resolvedArtifact /*: ResolvedArtifact */,
|
|
852
|
+
downloadDir /*: string */,
|
|
853
|
+
outputDir /*: string */,
|
|
854
|
+
onProgress /*:: ?: ProgressCallback */,
|
|
855
|
+
sharedTarballName /*:: ?: ?string */,
|
|
856
|
+
) /*: Promise<ProcessResult> */ {
|
|
857
|
+
const {url, version} = resolvedArtifact;
|
|
858
|
+
|
|
859
|
+
const destXcfwPath = path.join(outputDir, `${xcframeworkName}.xcframework`);
|
|
860
|
+
// Local-tarball override: `url` is an existing local file. Always
|
|
861
|
+
// re-extract (a changed local tarball must win over a previous extraction)
|
|
862
|
+
// and never touch the shared cache.
|
|
863
|
+
const isLocalTarball = !/^https?:\/\//.test(url) && fs.existsSync(url);
|
|
864
|
+
if (isLocalTarball && fs.existsSync(destXcfwPath)) {
|
|
865
|
+
fs.rmSync(destXcfwPath, {recursive: true, force: true});
|
|
866
|
+
}
|
|
867
|
+
if (fs.existsSync(destXcfwPath)) {
|
|
868
|
+
if (onProgress) {
|
|
869
|
+
onProgress(xcframeworkName, 0, 0, 0, true, 0);
|
|
870
|
+
} else {
|
|
871
|
+
log(` Already extracted: ${xcframeworkName}.xcframework`);
|
|
872
|
+
}
|
|
873
|
+
// The xcframework is cached, but a slot from older tooling won't have the
|
|
874
|
+
// Hermes headers staged. Backfill them from a cached tarball (no network).
|
|
875
|
+
if (
|
|
876
|
+
label === 'hermes' &&
|
|
877
|
+
!fs.existsSync(path.join(outputDir, 'hermes-headers', 'hermes'))
|
|
878
|
+
) {
|
|
879
|
+
try {
|
|
880
|
+
await ensureHermesHeadersStaged(
|
|
881
|
+
url,
|
|
882
|
+
downloadDir,
|
|
883
|
+
sharedTarballName,
|
|
884
|
+
outputDir,
|
|
885
|
+
);
|
|
886
|
+
} catch (e) {
|
|
887
|
+
log(` Hermes header backfill failed (${e.message}) — continuing`);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
// Same for the headers-only companions (ReactNativeHeaders from the core
|
|
891
|
+
// tarball, the ReactNativeDependenciesHeaders sidecar from the deps
|
|
892
|
+
// tarball): backfill into slots extracted by older tooling from the
|
|
893
|
+
// cached tarball.
|
|
894
|
+
const companion = COMPANION_XCFRAMEWORKS[label];
|
|
895
|
+
if (
|
|
896
|
+
companion != null &&
|
|
897
|
+
!fs.existsSync(path.join(outputDir, `${companion}.xcframework`))
|
|
898
|
+
) {
|
|
899
|
+
try {
|
|
900
|
+
await ensureCompanionStaged(
|
|
901
|
+
url,
|
|
902
|
+
downloadDir,
|
|
903
|
+
sharedTarballName,
|
|
904
|
+
outputDir,
|
|
905
|
+
companion,
|
|
906
|
+
);
|
|
907
|
+
} catch (e) {
|
|
908
|
+
log(` ${companion} backfill failed (${e.message}) — continuing`);
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
return {label, version, xcframeworkPath: destXcfwPath, url};
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
// Tarball acquisition: prefer the flat shared cache (~/Library/Caches/
|
|
915
|
+
// ReactNative/<name>) that CocoaPods also populates, so SPM and `pod install`
|
|
916
|
+
// reuse the same download. RCT_SKIP_CACHES=1 bypasses it (mirrors CocoaPods).
|
|
917
|
+
const skipCaches = process.env.RCT_SKIP_CACHES === '1';
|
|
918
|
+
const sharedPath =
|
|
919
|
+
!skipCaches && sharedTarballName != null
|
|
920
|
+
? path.join(sharedCacheDir(), sharedTarballName)
|
|
921
|
+
: null;
|
|
922
|
+
|
|
923
|
+
const downloadAndCache = async () /*: Promise<string> */ => {
|
|
924
|
+
const tarName = url.split('/').pop() ?? '';
|
|
925
|
+
const localPath = path.join(downloadDir, tarName);
|
|
926
|
+
await download(
|
|
927
|
+
url,
|
|
928
|
+
localPath,
|
|
929
|
+
onProgress
|
|
930
|
+
? (name, downloaded, total, speed, done, elapsed) =>
|
|
931
|
+
onProgress(xcframeworkName, downloaded, total, speed, done, elapsed)
|
|
932
|
+
: undefined,
|
|
933
|
+
);
|
|
934
|
+
// Best-effort: save into the flat shared cache for future SPM/CocoaPods runs.
|
|
935
|
+
if (sharedPath != null) {
|
|
936
|
+
try {
|
|
937
|
+
fs.mkdirSync(sharedCacheDir(), {recursive: true});
|
|
938
|
+
fs.copyFileSync(localPath, sharedPath);
|
|
939
|
+
} catch {
|
|
940
|
+
// ignore shared-cache write failures
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
return localPath;
|
|
944
|
+
};
|
|
945
|
+
|
|
946
|
+
let tarPath /*: string */ = '';
|
|
947
|
+
let fromShared = false;
|
|
948
|
+
if (isLocalTarball) {
|
|
949
|
+
tarPath = url;
|
|
950
|
+
if (onProgress) {
|
|
951
|
+
onProgress(xcframeworkName, 0, 0, 0, true, 0);
|
|
952
|
+
} else {
|
|
953
|
+
log(` Using local tarball: ${url}`);
|
|
954
|
+
}
|
|
955
|
+
} else if (sharedPath != null && fs.existsSync(sharedPath)) {
|
|
956
|
+
// Shared cache hit — skip the download entirely.
|
|
957
|
+
tarPath = sharedPath;
|
|
958
|
+
fromShared = true;
|
|
959
|
+
if (onProgress) {
|
|
960
|
+
onProgress(xcframeworkName, 0, 0, 0, true, 0);
|
|
961
|
+
} else {
|
|
962
|
+
log(` Shared cache hit: ${path.basename(sharedPath)}`);
|
|
963
|
+
}
|
|
964
|
+
} else {
|
|
965
|
+
tarPath = await downloadAndCache();
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
// Extract to a temp dir, rename to the expected name, then move into outputDir
|
|
969
|
+
if (onProgress) {
|
|
970
|
+
onProgress(xcframeworkName, 0, 0, 0, false, 0);
|
|
971
|
+
}
|
|
972
|
+
const tmpExtractDir = path.join(outputDir, '.extract-tmp', label);
|
|
973
|
+
let xcfwPath /*: string */ = '';
|
|
974
|
+
try {
|
|
975
|
+
xcfwPath = extractXCFramework(tarPath, tmpExtractDir);
|
|
976
|
+
} catch (e) {
|
|
977
|
+
// A poisoned shared tarball must not permanently break SPM: drop it and
|
|
978
|
+
// re-download to the local dir once.
|
|
979
|
+
if (fromShared) {
|
|
980
|
+
try {
|
|
981
|
+
fs.rmSync(tarPath, {force: true});
|
|
982
|
+
} catch {}
|
|
983
|
+
tarPath = await downloadAndCache();
|
|
984
|
+
xcfwPath = extractXCFramework(tarPath, tmpExtractDir);
|
|
985
|
+
} else {
|
|
986
|
+
throw e;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
const actualBasename = path.basename(xcfwPath);
|
|
991
|
+
const expectedBasename = `${xcframeworkName}.xcframework`;
|
|
992
|
+
if (actualBasename !== expectedBasename) {
|
|
993
|
+
const renamed = path.join(tmpExtractDir, expectedBasename);
|
|
994
|
+
fs.renameSync(xcfwPath, renamed);
|
|
995
|
+
fs.renameSync(renamed, destXcfwPath);
|
|
996
|
+
} else {
|
|
997
|
+
fs.renameSync(xcfwPath, destXcfwPath);
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
// Hermes ships its public headers in the same tarball; stage them next to
|
|
1001
|
+
// the xcframeworks so headers-compose can fold `hermes/` into
|
|
1002
|
+
// ReactNativeHeaders. (Other artifacts have no such headers — no-op.)
|
|
1003
|
+
if (label === 'hermes') {
|
|
1004
|
+
try {
|
|
1005
|
+
stageHermesHeaders(tmpExtractDir, outputDir);
|
|
1006
|
+
} catch (e) {
|
|
1007
|
+
log(` Hermes header staging failed (${e.message}) — continuing`);
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
// Headers-only companions ship inside the same tarball (ReactNativeHeaders
|
|
1012
|
+
// in the core tarball, the ReactNativeDependenciesHeaders sidecar in the
|
|
1013
|
+
// deps tarball) — stage them as their own artifacts.
|
|
1014
|
+
const companionName = COMPANION_XCFRAMEWORKS[label];
|
|
1015
|
+
if (companionName != null) {
|
|
1016
|
+
if (!stageCompanionXcframework(tmpExtractDir, outputDir, companionName)) {
|
|
1017
|
+
log(
|
|
1018
|
+
` ${companionName}.xcframework not present in the ${label} tarball (pre-companion artifact)`,
|
|
1019
|
+
);
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
fs.rmSync(tmpExtractDir, {recursive: true, force: true});
|
|
1024
|
+
|
|
1025
|
+
return {label, version, xcframeworkPath: destXcfwPath, url};
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
async function main(argv /*:: ?: Array<string> */) /*: Promise<void> */ {
|
|
1029
|
+
const args = parseArgs(argv ?? process.argv.slice(2));
|
|
1030
|
+
const rnRoot = path.resolve(__dirname, '../..');
|
|
1031
|
+
const flavor = args.flavor;
|
|
1032
|
+
|
|
1033
|
+
// Resolve base RN version
|
|
1034
|
+
// rawVersion preserves the original --version arg (e.g. 'nightly') before resolution.
|
|
1035
|
+
// It is passed to Hermes resolution so it can independently resolve its nightly.
|
|
1036
|
+
let rawVersion = args.version;
|
|
1037
|
+
let rnVersion = args.version;
|
|
1038
|
+
if (rnVersion == null) {
|
|
1039
|
+
// $FlowFixMe[incompatible-type] JSON.parse returns any
|
|
1040
|
+
const rnPkg /*: {version: string} */ = JSON.parse(
|
|
1041
|
+
fs.readFileSync(path.join(rnRoot, 'package.json'), 'utf8'),
|
|
1042
|
+
);
|
|
1043
|
+
rnVersion = rnPkg.version;
|
|
1044
|
+
}
|
|
1045
|
+
if (rnVersion === '1000.0.0') {
|
|
1046
|
+
log('Detected dev version (1000.0.0), resolving as nightly...');
|
|
1047
|
+
rawVersion = 'nightly';
|
|
1048
|
+
}
|
|
1049
|
+
if (rnVersion === 'nightly' || rnVersion === '1000.0.0') {
|
|
1050
|
+
rnVersion = await resolveNightlyVersion('react-native');
|
|
1051
|
+
}
|
|
1052
|
+
if (rnVersion == null) {
|
|
1053
|
+
die('Could not determine RN version');
|
|
1054
|
+
}
|
|
1055
|
+
// Re-bind to const so Flow keeps the non-null narrowing across the closures
|
|
1056
|
+
// below (let-bound vars are widened across function boundaries).
|
|
1057
|
+
const resolvedRnVersion /*: string */ = rnVersion;
|
|
1058
|
+
|
|
1059
|
+
// Cache key: stable versions slot under their own number. Dev / nightly
|
|
1060
|
+
// labels use the resolved nightly hash (e.g. "0.85.0-nightly-20260515-abc")
|
|
1061
|
+
// so each published nightly is its own slot — picks up new specs and fixes
|
|
1062
|
+
// automatically instead of sticking on a stale "1000.0.0" cache forever.
|
|
1063
|
+
const cacheVersionKey =
|
|
1064
|
+
rawVersion === 'nightly' || rawVersion === '1000.0.0' || rawVersion == null
|
|
1065
|
+
? resolvedRnVersion
|
|
1066
|
+
: rawVersion;
|
|
1067
|
+
const outputDir =
|
|
1068
|
+
args.output != null
|
|
1069
|
+
? path.resolve(args.output)
|
|
1070
|
+
: defaultCacheDir(cacheVersionKey, flavor);
|
|
1071
|
+
// Tarballs are cached in a .downloads/ subdirectory to keep them separate
|
|
1072
|
+
// from the extracted .xcframework directories.
|
|
1073
|
+
const downloadDir = path.join(outputDir, '.downloads');
|
|
1074
|
+
|
|
1075
|
+
fs.mkdirSync(outputDir, {recursive: true});
|
|
1076
|
+
fs.mkdirSync(downloadDir, {recursive: true});
|
|
1077
|
+
|
|
1078
|
+
log(`RN version : ${resolvedRnVersion}`);
|
|
1079
|
+
log(`Flavor : ${flavor}`);
|
|
1080
|
+
log(`Output : ${displayPath(outputDir)}`);
|
|
1081
|
+
log('');
|
|
1082
|
+
|
|
1083
|
+
// Download all three artifacts in parallel for faster setup
|
|
1084
|
+
log('Downloading artifacts in parallel...');
|
|
1085
|
+
|
|
1086
|
+
// `sharedName` builds the flat shared-cache filename in the canonical
|
|
1087
|
+
// ~/Library/Caches/ReactNative/ dir, matching the names other RN tooling uses
|
|
1088
|
+
// (CocoaPods' rncore.rb / rndependencies.rb for core+deps, and the hermes
|
|
1089
|
+
// prebuilt tarball name) so SPM and `pod install` reuse the same downloads.
|
|
1090
|
+
// `v` is each artifact's resolved version (RN version for core/deps, the
|
|
1091
|
+
// hermes-ios version for hermes).
|
|
1092
|
+
const artifactSpecs = [
|
|
1093
|
+
{
|
|
1094
|
+
label: 'react-core',
|
|
1095
|
+
name: 'React',
|
|
1096
|
+
resolve: () =>
|
|
1097
|
+
resolveRNCoreArtifact(resolvedRnVersion, flavor, args.coreTarball),
|
|
1098
|
+
// Local overrides skip the shared cache (test artifacts must not
|
|
1099
|
+
// poison the canonical downloads).
|
|
1100
|
+
sharedName:
|
|
1101
|
+
args.coreTarball != null
|
|
1102
|
+
? null
|
|
1103
|
+
: (v /*: string */) => `reactnative-core-${v}-${flavor}.tar.gz`,
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
label: 'rndeps',
|
|
1107
|
+
name: 'ReactNativeDependencies',
|
|
1108
|
+
resolve: () =>
|
|
1109
|
+
resolveRNDepsArtifact(resolvedRnVersion, flavor, args.depsTarball),
|
|
1110
|
+
// Local override skips the shared cache (as with core) so a local deps
|
|
1111
|
+
// build can't poison the canonical downloads.
|
|
1112
|
+
sharedName:
|
|
1113
|
+
args.depsTarball != null
|
|
1114
|
+
? null
|
|
1115
|
+
: (v /*: string */) =>
|
|
1116
|
+
`reactnative-dependencies-${v}-${flavor}.tar.gz`,
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
label: 'hermes',
|
|
1120
|
+
name: 'hermes-engine',
|
|
1121
|
+
resolve: () =>
|
|
1122
|
+
resolveHermesArtifact(resolvedRnVersion, flavor, rawVersion),
|
|
1123
|
+
sharedName: (v /*: string */) => `hermes-ios-${v}-${flavor}.tar.gz`,
|
|
1124
|
+
},
|
|
1125
|
+
];
|
|
1126
|
+
|
|
1127
|
+
// ReactNativeHeaders is normally staged straight out of the ReactCore
|
|
1128
|
+
// tarball (it ships beside React.xcframework). The override exists for
|
|
1129
|
+
// testing a standalone headers tarball (e.g. the prebuild output at
|
|
1130
|
+
// .build/output/xcframeworks/<flavor>/ReactNativeHeaders.xcframework.tar.gz,
|
|
1131
|
+
// published on Maven under classifier reactnative-headers-<flavor>).
|
|
1132
|
+
const headersTarball = args.headersTarball;
|
|
1133
|
+
if (headersTarball != null && headersTarball !== '') {
|
|
1134
|
+
if (!fs.existsSync(headersTarball)) {
|
|
1135
|
+
die(
|
|
1136
|
+
`headers tarball override is set to ${headersTarball} but the file does not exist`,
|
|
1137
|
+
);
|
|
1138
|
+
}
|
|
1139
|
+
artifactSpecs.push({
|
|
1140
|
+
label: 'rnheaders',
|
|
1141
|
+
name: 'ReactNativeHeaders',
|
|
1142
|
+
resolve: () =>
|
|
1143
|
+
Promise.resolve({
|
|
1144
|
+
url: headersTarball,
|
|
1145
|
+
version: `${resolvedRnVersion}-local`,
|
|
1146
|
+
}),
|
|
1147
|
+
sharedName: null,
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
// ReactNativeDependenciesHeaders: normally staged straight out of the deps
|
|
1152
|
+
// tarball (the sidecar ships inside it). The override exists for testing a
|
|
1153
|
+
// standalone sidecar tarball (classifier
|
|
1154
|
+
// reactnative-dependencies-headers-<flavor>).
|
|
1155
|
+
const depsHeadersTarball = args.depsHeadersTarball;
|
|
1156
|
+
if (depsHeadersTarball != null && depsHeadersTarball !== '') {
|
|
1157
|
+
if (!fs.existsSync(depsHeadersTarball)) {
|
|
1158
|
+
die(
|
|
1159
|
+
`deps-headers tarball override is set to ${depsHeadersTarball} but the file does not exist`,
|
|
1160
|
+
);
|
|
1161
|
+
}
|
|
1162
|
+
artifactSpecs.push({
|
|
1163
|
+
label: 'rndeps-headers',
|
|
1164
|
+
name: DEPS_HEADERS_NAME,
|
|
1165
|
+
resolve: () =>
|
|
1166
|
+
Promise.resolve({
|
|
1167
|
+
url: depsHeadersTarball,
|
|
1168
|
+
version: `${resolvedRnVersion}-local`,
|
|
1169
|
+
}),
|
|
1170
|
+
sharedName: null,
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
const progress = createProgressDisplay(
|
|
1175
|
+
artifactSpecs.length,
|
|
1176
|
+
'\x1b[32m[download-spm-artifacts]\x1b[0m ',
|
|
1177
|
+
);
|
|
1178
|
+
|
|
1179
|
+
const makeCallback = (index /*: number */) /*: ProgressCallback */ =>
|
|
1180
|
+
(name, downloaded, total, speed, done, elapsed) => {
|
|
1181
|
+
if (done && downloaded === 0 && total === 0) {
|
|
1182
|
+
progress.update(index, ` ${name}: already cached`);
|
|
1183
|
+
} else if (done) {
|
|
1184
|
+
const avg = elapsed > 0 ? formatSpeed(downloaded / elapsed) : '';
|
|
1185
|
+
progress.update(
|
|
1186
|
+
index,
|
|
1187
|
+
` ${name}: done ${formatBytes(downloaded)} in ${elapsed.toFixed(1)}s (${avg})`,
|
|
1188
|
+
);
|
|
1189
|
+
} else if (total > 0) {
|
|
1190
|
+
const pct = ((downloaded / total) * 100).toFixed(1);
|
|
1191
|
+
progress.update(
|
|
1192
|
+
index,
|
|
1193
|
+
` ${name}: ${formatBytes(downloaded)} / ${formatBytes(total)} (${pct}%) @ ${formatSpeed(speed)}`,
|
|
1194
|
+
);
|
|
1195
|
+
} else {
|
|
1196
|
+
progress.update(index, ` ${name}: extracting...`);
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
|
|
1200
|
+
const results /*: Array<ArtifactResultEntry> */ = await Promise.all(
|
|
1201
|
+
artifactSpecs.map(async (spec, index) => {
|
|
1202
|
+
try {
|
|
1203
|
+
const artifact = await spec.resolve();
|
|
1204
|
+
progress.update(index, ` ${spec.name}: resolving...`);
|
|
1205
|
+
const sharedTarballName =
|
|
1206
|
+
spec.sharedName != null ? spec.sharedName(artifact.version) : null;
|
|
1207
|
+
const r = await processArtifact(
|
|
1208
|
+
spec.label,
|
|
1209
|
+
spec.name,
|
|
1210
|
+
artifact,
|
|
1211
|
+
downloadDir,
|
|
1212
|
+
outputDir,
|
|
1213
|
+
makeCallback(index),
|
|
1214
|
+
sharedTarballName,
|
|
1215
|
+
);
|
|
1216
|
+
const ok /*: ArtifactResultEntry */ = {
|
|
1217
|
+
name: spec.name,
|
|
1218
|
+
error: undefined,
|
|
1219
|
+
...r,
|
|
1220
|
+
};
|
|
1221
|
+
return ok;
|
|
1222
|
+
} catch (e) {
|
|
1223
|
+
progress.update(index, ` ${spec.name}: FAILED - ${e.message}`);
|
|
1224
|
+
const failed /*: ArtifactResultEntry */ = {
|
|
1225
|
+
name: spec.name,
|
|
1226
|
+
error: e.message,
|
|
1227
|
+
};
|
|
1228
|
+
return failed;
|
|
1229
|
+
}
|
|
1230
|
+
}),
|
|
1231
|
+
);
|
|
1232
|
+
log('');
|
|
1233
|
+
|
|
1234
|
+
const succeeded = results.filter(r => r.error == null);
|
|
1235
|
+
const failed = results.filter(r => r.error != null);
|
|
1236
|
+
|
|
1237
|
+
log('='.repeat(60));
|
|
1238
|
+
if (succeeded.length > 0) {
|
|
1239
|
+
log('Extracted xcframeworks:');
|
|
1240
|
+
log('');
|
|
1241
|
+
for (const r of succeeded) {
|
|
1242
|
+
if (r.error == null) {
|
|
1243
|
+
log(` ${r.name}`);
|
|
1244
|
+
log(` path: ${displayPath(r.xcframeworkPath)}`);
|
|
1245
|
+
log('');
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
// Abort on ANY failure — every artifact (React, ReactNativeDependencies,
|
|
1250
|
+
// hermes-engine + the headers companions) is required; proceeding with a
|
|
1251
|
+
// partial set would only surface as a confusing build error in Xcode. We
|
|
1252
|
+
// also intentionally do NOT
|
|
1253
|
+
// write artifacts.json when there are failures: the orchestrator uses its
|
|
1254
|
+
// presence as the "already present" signal, so a partial write would mask
|
|
1255
|
+
// the problem and prevent retries.
|
|
1256
|
+
if (failed.length > 0) {
|
|
1257
|
+
log('Failed:');
|
|
1258
|
+
for (const r of failed) {
|
|
1259
|
+
warn(` ${r.name}: ${r.error ?? 'unknown error'}`);
|
|
1260
|
+
}
|
|
1261
|
+
die(
|
|
1262
|
+
`Failed to download ${failed.length} of ${results.length} artifact(s): ` +
|
|
1263
|
+
failed.map(r => r.name).join(', '),
|
|
1264
|
+
);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
// Write artifacts.json only on full success.
|
|
1268
|
+
const artifactsJson /*: {[string]: {xcframeworkPath: string, url: string}} */ =
|
|
1269
|
+
{};
|
|
1270
|
+
for (const r of succeeded) {
|
|
1271
|
+
if (r.error == null) {
|
|
1272
|
+
artifactsJson[r.name] = {xcframeworkPath: r.xcframeworkPath, url: r.url};
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
// The headers-only companions are staged by their parent's extraction (or
|
|
1276
|
+
// by the --headers-tarball / --deps-headers-tarball overrides above, which
|
|
1277
|
+
// already produced entries). A slot without them cannot resolve any
|
|
1278
|
+
// non-React namespace (ReactNativeHeaders) or the <folly/...>-style deps
|
|
1279
|
+
// includes (the sidecar; ReactNativeHeaders is pure-RN) — fail closed
|
|
1280
|
+
// rather than hand Xcode a package graph that breaks with header-not-found
|
|
1281
|
+
// errors much later.
|
|
1282
|
+
const companions = [
|
|
1283
|
+
{
|
|
1284
|
+
name: 'ReactNativeHeaders',
|
|
1285
|
+
parent: 'React',
|
|
1286
|
+
advice:
|
|
1287
|
+
'The React core tarball predates the headers-spec layout — use a ' +
|
|
1288
|
+
'matching react-native version, or pass --headers-tarball / ' +
|
|
1289
|
+
'RN_HEADERS_TARBALL_PATH.',
|
|
1290
|
+
},
|
|
1291
|
+
{
|
|
1292
|
+
name: DEPS_HEADERS_NAME,
|
|
1293
|
+
parent: 'ReactNativeDependencies',
|
|
1294
|
+
advice:
|
|
1295
|
+
'The ReactNativeDependencies tarball predates the headers sidecar — ' +
|
|
1296
|
+
'use a matching react-native version, or pass ' +
|
|
1297
|
+
'--deps-headers-tarball / RN_DEPS_HEADERS_TARBALL_PATH.',
|
|
1298
|
+
},
|
|
1299
|
+
];
|
|
1300
|
+
for (const {name, parent, advice} of companions) {
|
|
1301
|
+
if (artifactsJson[name] != null) {
|
|
1302
|
+
continue;
|
|
1303
|
+
}
|
|
1304
|
+
const companionPath = path.join(outputDir, `${name}.xcframework`);
|
|
1305
|
+
if (!fs.existsSync(companionPath)) {
|
|
1306
|
+
die(`${name}.xcframework is missing from the artifact slot. ${advice}`);
|
|
1307
|
+
}
|
|
1308
|
+
const parentEntry = artifactsJson[parent];
|
|
1309
|
+
artifactsJson[name] = {
|
|
1310
|
+
xcframeworkPath: companionPath,
|
|
1311
|
+
url: parentEntry != null ? parentEntry.url : '',
|
|
1312
|
+
};
|
|
1313
|
+
}
|
|
1314
|
+
const artifactsJsonPath = path.join(outputDir, 'artifacts.json');
|
|
1315
|
+
fs.writeFileSync(
|
|
1316
|
+
artifactsJsonPath,
|
|
1317
|
+
JSON.stringify(artifactsJson, null, 2) + '\n',
|
|
1318
|
+
'utf8',
|
|
1319
|
+
);
|
|
1320
|
+
log(`Artifact index: ${displayPath(artifactsJsonPath)}`);
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
// Canonical set of xcframework artifacts an SPM slot must provide. The
|
|
1324
|
+
// xcodeproj references them as package products; missing any one surfaces as
|
|
1325
|
+
// "Missing package product" only at Xcode build time. Used by
|
|
1326
|
+
// `setup-apple-spm.js` to validate the cache before skipping a re-download.
|
|
1327
|
+
// ReactNativeHeaders (pure-RN) and ReactNativeDependenciesHeaders (the deps
|
|
1328
|
+
// sidecar) are the two headers-only targets — both required: without the
|
|
1329
|
+
// sidecar no <folly/...>-style include resolves.
|
|
1330
|
+
const REQUIRED_ARTIFACTS = [
|
|
1331
|
+
'React',
|
|
1332
|
+
'ReactNativeHeaders',
|
|
1333
|
+
'ReactNativeDependencies',
|
|
1334
|
+
'ReactNativeDependenciesHeaders',
|
|
1335
|
+
'hermes-engine',
|
|
1336
|
+
];
|
|
1337
|
+
|
|
1338
|
+
/**
|
|
1339
|
+
* Returns null if `artifacts.json` is present, complete (covers every entry
|
|
1340
|
+
* in REQUIRED_ARTIFACTS), and each entry's xcframework dir exists on disk.
|
|
1341
|
+
* Otherwise returns a string describing what's wrong — caller treats that as
|
|
1342
|
+
* "needs re-download". Catches stale partial-write states from older runs
|
|
1343
|
+
* that didn't fail loudly on download errors.
|
|
1344
|
+
*/
|
|
1345
|
+
function validateArtifactsCache(
|
|
1346
|
+
artifactsDir /*: string */,
|
|
1347
|
+
) /*: string | null */ {
|
|
1348
|
+
const artifactsJsonPath = path.join(artifactsDir, 'artifacts.json');
|
|
1349
|
+
if (!fs.existsSync(artifactsJsonPath)) {
|
|
1350
|
+
return `artifacts.json missing in ${artifactsDir}`;
|
|
1351
|
+
}
|
|
1352
|
+
let json /*: {[string]: {xcframeworkPath: string, url: string}} */ = {};
|
|
1353
|
+
try {
|
|
1354
|
+
// $FlowFixMe[unclear-type] JSON.parse returns any
|
|
1355
|
+
const parsed /*: any */ = JSON.parse(
|
|
1356
|
+
fs.readFileSync(artifactsJsonPath, 'utf8'),
|
|
1357
|
+
);
|
|
1358
|
+
json = parsed;
|
|
1359
|
+
} catch (e) {
|
|
1360
|
+
return `artifacts.json is unreadable: ${e.message}`;
|
|
1361
|
+
}
|
|
1362
|
+
for (const name of REQUIRED_ARTIFACTS) {
|
|
1363
|
+
const entry = json[name];
|
|
1364
|
+
if (entry == null) {
|
|
1365
|
+
return `artifacts.json missing entry for "${name}"`;
|
|
1366
|
+
}
|
|
1367
|
+
if (!fs.existsSync(entry.xcframeworkPath)) {
|
|
1368
|
+
return `xcframework for "${name}" not found at ${entry.xcframeworkPath}`;
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
// The Hermes public headers must be staged for headers-compose to fold
|
|
1372
|
+
// `<hermes/...>` into ReactNativeHeaders. A slot from older tooling won't
|
|
1373
|
+
// have them — report incomplete so ensureArtifacts re-runs the download
|
|
1374
|
+
// (which, with the xcframeworks already present, only backfills the headers
|
|
1375
|
+
// from the cached tarball — no network re-download).
|
|
1376
|
+
if (!fs.existsSync(path.join(artifactsDir, 'hermes-headers', 'hermes'))) {
|
|
1377
|
+
return 'Hermes public headers not staged (hermes-headers/hermes)';
|
|
1378
|
+
}
|
|
1379
|
+
return null;
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
if (require.main === module) {
|
|
1383
|
+
main().catch(err => {
|
|
1384
|
+
console.error(`\x1b[31m${err.message}\x1b[0m`);
|
|
1385
|
+
process.exitCode = 1;
|
|
1386
|
+
});
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
module.exports = {
|
|
1390
|
+
main,
|
|
1391
|
+
resolveCacheSlotVersion,
|
|
1392
|
+
resolveHermesArtifact,
|
|
1393
|
+
REQUIRED_ARTIFACTS,
|
|
1394
|
+
validateArtifactsCache,
|
|
1395
|
+
// Exposed for unit tests (pure / fetch-stubbable helpers).
|
|
1396
|
+
rnCoreReleaseUrl,
|
|
1397
|
+
rnDepsReleaseUrl,
|
|
1398
|
+
hermesReleaseUrl,
|
|
1399
|
+
resolveSnapshotUrl,
|
|
1400
|
+
resolveNightlyVersion,
|
|
1401
|
+
resolveLatestV1Version,
|
|
1402
|
+
resolveRNCoreArtifact,
|
|
1403
|
+
resolveRNDepsArtifact,
|
|
1404
|
+
exists,
|
|
1405
|
+
formatBytes,
|
|
1406
|
+
formatSpeed,
|
|
1407
|
+
findFirst,
|
|
1408
|
+
extractXCFramework,
|
|
1409
|
+
};
|