@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,1267 @@
|
|
|
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 {CliConfigJson, SetupArgs} from './spm/spm-types'; */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* setup-apple-spm.js – Entry point for setting up Swift Package Manager support
|
|
17
|
+
* in a React Native app using prebuilt XCFrameworks.
|
|
18
|
+
*
|
|
19
|
+
* Usage (from your app directory):
|
|
20
|
+
* node node_modules/react-native/scripts/setup-apple-spm.js [action] [options]
|
|
21
|
+
* (or `npx react-native spm [action]`)
|
|
22
|
+
*
|
|
23
|
+
* Actions:
|
|
24
|
+
* add Inject SPM packages (package refs, build
|
|
25
|
+
* settings, the Sync build phase) into your
|
|
26
|
+
* existing .xcodeproj, in place. Idempotent.
|
|
27
|
+
* Default on first run. `--deintegrate` first
|
|
28
|
+
* runs `pod deintegrate` + strips React Native
|
|
29
|
+
* from the Podfile (CocoaPods → SPM migration).
|
|
30
|
+
* update Re-run the pipeline and refresh the existing
|
|
31
|
+
* injection. Default once a project is injected.
|
|
32
|
+
* deinit The exact inverse of `add`: surgically remove
|
|
33
|
+
* only what `add` injected (recorded in
|
|
34
|
+
* .spm-injected.json) and drop the marker.
|
|
35
|
+
* scaffold Generate Package.swift for community deps that
|
|
36
|
+
* lack SPM support.
|
|
37
|
+
* sync / codegen / download Advanced/internal: `sync` is invoked by the
|
|
38
|
+
* generated Xcode build phase; `codegen` and
|
|
39
|
+
* `download` run a single pipeline step.
|
|
40
|
+
*
|
|
41
|
+
* Zero-arg `npx react-native spm` auto-detects: a freshly-scaffolded CocoaPods
|
|
42
|
+
* project (clean tree, stock Podfile) → `add --deintegrate`; an injected
|
|
43
|
+
* project → `update`; otherwise → `add` (fails loud on a CocoaPods project,
|
|
44
|
+
* directing you to `--deintegrate`).
|
|
45
|
+
*
|
|
46
|
+
* Options:
|
|
47
|
+
* --version <ver> React Native version (default: the resolved
|
|
48
|
+
* node_modules/react-native version).
|
|
49
|
+
* --yes Skip the dirty-pbxproj confirmation prompt.
|
|
50
|
+
* [add] --xcodeproj <path> Which .xcodeproj to inject into (when several).
|
|
51
|
+
* [add] --product-name <name> Which app target to inject into (when several).
|
|
52
|
+
* [add] --deintegrate Run `pod deintegrate` + strip RN from the
|
|
53
|
+
* Podfile before injecting.
|
|
54
|
+
* [advanced] --artifacts <path> Local two-flavor artifact root;
|
|
55
|
+
* must contain debug/ and release/ cache slots.
|
|
56
|
+
* [advanced] --download <auto|skip|force> Artifact policy (default: auto).
|
|
57
|
+
* [advanced] --skip-codegen Skip the react-native codegen step.
|
|
58
|
+
* [advanced] --config-command <json> Override the autolinking config command.
|
|
59
|
+
*
|
|
60
|
+
* Steps performed (add/update):
|
|
61
|
+
* 1. react-native codegen → build/generated/ios/ + install SPM codegen template
|
|
62
|
+
* 2. generate-spm-autolinking-config.js → build/generated/autolinking/autolinking.json
|
|
63
|
+
* 3. generate-spm-autolinking.js → build/generated/autolinking/Package.swift
|
|
64
|
+
* 4. download-spm-artifacts.js → cache dir (per --download policy)
|
|
65
|
+
* 5. generate-spm-package.js → build/xcframeworks/Package.swift + symlinks
|
|
66
|
+
* 6. inject SPM packages into the existing .xcodeproj (in place)
|
|
67
|
+
*
|
|
68
|
+
* The injection is committed with your project; its XCLocalSwiftPackageReference
|
|
69
|
+
* entries point at stable sub-package paths under build/ (xcframeworks,
|
|
70
|
+
* generated/autolinking, generated/ios), so adding/removing community deps
|
|
71
|
+
* changes those sub-packages (gitignored) and never re-injects. No app-level
|
|
72
|
+
* Package.swift is generated or required.
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
const {
|
|
76
|
+
main: downloadArtifacts,
|
|
77
|
+
resolveCacheSlotVersion,
|
|
78
|
+
validateArtifactsCache,
|
|
79
|
+
} = require('./spm/download-spm-artifacts');
|
|
80
|
+
const {finalizeArtifactPublication} = require('./spm/flavored-frameworks');
|
|
81
|
+
const {
|
|
82
|
+
MissingManifestError,
|
|
83
|
+
main: generateAutolinking,
|
|
84
|
+
} = require('./spm/generate-spm-autolinking');
|
|
85
|
+
const {
|
|
86
|
+
generateAutolinkingConfig,
|
|
87
|
+
parseConfigCommandJson,
|
|
88
|
+
readEnvConfigCommand,
|
|
89
|
+
resolveEnvConfigCommand,
|
|
90
|
+
} = require('./spm/generate-spm-autolinking-config');
|
|
91
|
+
const {main: generatePackage} = require('./spm/generate-spm-package');
|
|
92
|
+
const {findSourcePath} = require('./spm/generate-spm-package');
|
|
93
|
+
const {
|
|
94
|
+
SPM_INJECTED_MARKER,
|
|
95
|
+
cleanupDanglingJavaScriptCoreRef,
|
|
96
|
+
cleanupLeftoverPodsGroup,
|
|
97
|
+
findInjectedXcodeproj,
|
|
98
|
+
injectSpmIntoExistingXcodeproj,
|
|
99
|
+
readPinnedConfigCommand,
|
|
100
|
+
removeSpmInjection,
|
|
101
|
+
} = require('./spm/generate-spm-xcodeproj');
|
|
102
|
+
const {scaffoldAll} = require('./spm/scaffold-package-swift');
|
|
103
|
+
const {
|
|
104
|
+
RemoteVersionError,
|
|
105
|
+
buildPerAppHeaderTree,
|
|
106
|
+
defaultCacheDir,
|
|
107
|
+
deriveAppName,
|
|
108
|
+
displayPath,
|
|
109
|
+
findProjectRoot,
|
|
110
|
+
installSpmCodegenTemplate,
|
|
111
|
+
makeLogger,
|
|
112
|
+
readPackageJson,
|
|
113
|
+
remotePackageConfig,
|
|
114
|
+
runCodegenAndInstallTemplate,
|
|
115
|
+
} = require('./spm/spm-utils');
|
|
116
|
+
const {execFileSync} = require('child_process');
|
|
117
|
+
const fs = require('fs');
|
|
118
|
+
const path = require('path');
|
|
119
|
+
const readline = require('readline');
|
|
120
|
+
const yargs = require('yargs');
|
|
121
|
+
|
|
122
|
+
const {log, warn: logError} = makeLogger('setup-apple-spm');
|
|
123
|
+
|
|
124
|
+
const VALID_ACTIONS = new Set([
|
|
125
|
+
'add',
|
|
126
|
+
'update',
|
|
127
|
+
'deinit',
|
|
128
|
+
'sync',
|
|
129
|
+
'codegen',
|
|
130
|
+
'download',
|
|
131
|
+
'scaffold',
|
|
132
|
+
]);
|
|
133
|
+
|
|
134
|
+
/*::
|
|
135
|
+
type AutolinkingConfigResult = {
|
|
136
|
+
config: CliConfigJson,
|
|
137
|
+
outputPath: string,
|
|
138
|
+
rawJson: string,
|
|
139
|
+
};
|
|
140
|
+
*/
|
|
141
|
+
|
|
142
|
+
function parseArgs(argv /*: Array<string> */) /*: SetupArgs */ {
|
|
143
|
+
const parsed = yargs(argv)
|
|
144
|
+
.version(false)
|
|
145
|
+
.command('$0 [action]', 'Set up Apple SPM support')
|
|
146
|
+
.positional('action', {
|
|
147
|
+
type: 'string',
|
|
148
|
+
choices: Array.from(VALID_ACTIONS),
|
|
149
|
+
describe:
|
|
150
|
+
'Action to run: add, update, deinit, or scaffold. ' +
|
|
151
|
+
'Defaults to add (or update if SPM is already set up).',
|
|
152
|
+
})
|
|
153
|
+
.option('version', {
|
|
154
|
+
type: 'string',
|
|
155
|
+
describe:
|
|
156
|
+
'React Native version (e.g. 0.80.0). Defaults to the version in node_modules/react-native/package.json',
|
|
157
|
+
})
|
|
158
|
+
.option('yes', {
|
|
159
|
+
type: 'boolean',
|
|
160
|
+
default: false,
|
|
161
|
+
describe: 'Skip the dirty-pbxproj confirmation prompt',
|
|
162
|
+
})
|
|
163
|
+
.option('xcodeproj', {
|
|
164
|
+
type: 'string',
|
|
165
|
+
describe:
|
|
166
|
+
'[add] Path to the .xcodeproj to inject SPM packages into (disambiguates when several exist).',
|
|
167
|
+
})
|
|
168
|
+
.option('product-name', {
|
|
169
|
+
type: 'string',
|
|
170
|
+
describe:
|
|
171
|
+
'[add] App target to inject into (disambiguates when several exist).',
|
|
172
|
+
})
|
|
173
|
+
.option('deintegrate', {
|
|
174
|
+
type: 'boolean',
|
|
175
|
+
default: false,
|
|
176
|
+
describe:
|
|
177
|
+
'[add] Run `pod deintegrate` + strip React Native from the Podfile before injecting (CocoaPods → SPM migration).',
|
|
178
|
+
})
|
|
179
|
+
.option('artifacts', {
|
|
180
|
+
type: 'string',
|
|
181
|
+
describe:
|
|
182
|
+
'[advanced] Local artifact root containing complete debug/ and release/ cache slots.',
|
|
183
|
+
})
|
|
184
|
+
.option('download', {
|
|
185
|
+
type: 'string',
|
|
186
|
+
choices: ['auto', 'skip', 'force'],
|
|
187
|
+
default: 'auto',
|
|
188
|
+
describe:
|
|
189
|
+
'[advanced] Artifact download policy: auto (fetch if missing), skip (never fetch), force (clear cache + refetch).',
|
|
190
|
+
})
|
|
191
|
+
.option('skip-codegen', {
|
|
192
|
+
type: 'boolean',
|
|
193
|
+
default: false,
|
|
194
|
+
describe: '[advanced] Skip the react-native codegen step',
|
|
195
|
+
})
|
|
196
|
+
.option('config-command', {
|
|
197
|
+
type: 'string',
|
|
198
|
+
describe:
|
|
199
|
+
'[advanced] JSON array of the argv used to generate autolinking.json, overriding the default @react-native-community/cli config command. Also settable via RCT_SPM_AUTOLINKING_CONFIG_COMMAND. Either way `add`/`update` remembers the value in .spm-injected.json, so later runs and Xcode builds reuse it. Example: \'["npx","expo-modules-autolinking","react-native-config","--json","--platform","ios"]\'',
|
|
200
|
+
})
|
|
201
|
+
.usage(
|
|
202
|
+
'Usage: $0 [action] [options]\n\nSets up Swift Package Manager support in a React Native app.',
|
|
203
|
+
)
|
|
204
|
+
.strictOptions()
|
|
205
|
+
.help()
|
|
206
|
+
.parseSync();
|
|
207
|
+
|
|
208
|
+
const positional = parsed._.map(String);
|
|
209
|
+
const requestedAction = parsed.action ?? positional[0] ?? null;
|
|
210
|
+
if (positional.length > 1) {
|
|
211
|
+
throw new Error(
|
|
212
|
+
`Expected at most one action, got: ${positional.join(', ')}`,
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
if (requestedAction != null && !VALID_ACTIONS.has(requestedAction)) {
|
|
216
|
+
throw new Error(
|
|
217
|
+
`Unknown action "${requestedAction}". Expected one of: ${Array.from(
|
|
218
|
+
VALID_ACTIONS,
|
|
219
|
+
).join(', ')}`,
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return {
|
|
224
|
+
action: requestedAction,
|
|
225
|
+
version: parsed.version ?? null,
|
|
226
|
+
artifacts: parsed.artifacts ?? null,
|
|
227
|
+
skipCodegen: parsed['skip-codegen'],
|
|
228
|
+
configCommand:
|
|
229
|
+
parsed['config-command'] != null
|
|
230
|
+
? parseConfigCommandJson(parsed['config-command'], '--config-command')
|
|
231
|
+
: null,
|
|
232
|
+
downloadPolicy: parsed.download,
|
|
233
|
+
productName: parsed['product-name'] ?? null,
|
|
234
|
+
xcodeprojPath: parsed.xcodeproj ?? null,
|
|
235
|
+
deintegrate: parsed.deintegrate,
|
|
236
|
+
yes: parsed.yes,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const SPM_GITIGNORE_ENTRIES = [
|
|
241
|
+
'Package.resolved',
|
|
242
|
+
'build/generated/',
|
|
243
|
+
'build/xcframeworks/',
|
|
244
|
+
'.build/',
|
|
245
|
+
];
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Ensure the project's .gitignore contains entries for SPM-generated
|
|
249
|
+
* directories. Called during init so that generated artifacts are not
|
|
250
|
+
* accidentally committed.
|
|
251
|
+
*/
|
|
252
|
+
function ensureGitignoreSpmEntries(appRoot /*: string */) {
|
|
253
|
+
const gitignorePath = path.join(appRoot, '.gitignore');
|
|
254
|
+
let content = '';
|
|
255
|
+
if (fs.existsSync(gitignorePath)) {
|
|
256
|
+
content = fs.readFileSync(gitignorePath, 'utf8');
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const existingEntries = new Set(content.split('\n').map(l => l.trim()));
|
|
260
|
+
const missing = SPM_GITIGNORE_ENTRIES.filter(e => !existingEntries.has(e));
|
|
261
|
+
|
|
262
|
+
if (missing.length === 0) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const block = [
|
|
267
|
+
'',
|
|
268
|
+
'# SPM – auto-generated at build time (do not commit)',
|
|
269
|
+
...missing,
|
|
270
|
+
].join('\n');
|
|
271
|
+
|
|
272
|
+
// Append, ensuring we start on a fresh line
|
|
273
|
+
const separator = content.length > 0 && !content.endsWith('\n') ? '\n' : '';
|
|
274
|
+
fs.writeFileSync(gitignorePath, content + separator + block + '\n', 'utf8');
|
|
275
|
+
log(`Updated .gitignore with SPM entries: ${missing.join(', ')}`);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Single TTY-gated Y/N prompt helper used by every interactive confirmation
|
|
280
|
+
* in this file. Non-TTY (CI / piped stdin) auto-confirms — every callsite
|
|
281
|
+
* either opted into the action explicitly or is downstream of an opt-in.
|
|
282
|
+
*/
|
|
283
|
+
function promptYesNo(
|
|
284
|
+
question /*: string */,
|
|
285
|
+
defaultYes /*: boolean */,
|
|
286
|
+
) /*: Promise<boolean> */ {
|
|
287
|
+
// $FlowFixMe[prop-missing] process.stdin.isTTY not in Flow stubs
|
|
288
|
+
if (process.stdin.isTTY !== true) {
|
|
289
|
+
return Promise.resolve(true);
|
|
290
|
+
}
|
|
291
|
+
const suffix = defaultYes ? '[Y/n]' : '[y/N]';
|
|
292
|
+
return new Promise(resolve => {
|
|
293
|
+
const rl = readline.createInterface({
|
|
294
|
+
input: process.stdin,
|
|
295
|
+
output: process.stdout,
|
|
296
|
+
});
|
|
297
|
+
rl.question(`${question} ${suffix} `, answer => {
|
|
298
|
+
rl.close();
|
|
299
|
+
const a = answer.trim().toLowerCase();
|
|
300
|
+
const yes = a === 'y' || a === 'yes';
|
|
301
|
+
resolve(defaultYes ? a === '' || yes : yes);
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function resolveAction(
|
|
307
|
+
requestedAction /*: SetupArgs['action'] */,
|
|
308
|
+
appRoot /*: string */,
|
|
309
|
+
) /*: 'add' | 'update' | 'deinit' | 'sync' | 'codegen' | 'download' | 'scaffold' */ {
|
|
310
|
+
if (requestedAction != null) {
|
|
311
|
+
return requestedAction;
|
|
312
|
+
}
|
|
313
|
+
// Zero-arg default. Once SPM has been injected, default to `update` (regen +
|
|
314
|
+
// refresh). Otherwise it's a first run → `add`. Whether `add` should imply
|
|
315
|
+
// `--deintegrate` (fresh CocoaPods project) is decided by the safe-gate in
|
|
316
|
+
// main(), which only applies on this implicit path.
|
|
317
|
+
return findInjectedXcodeproj(appRoot) != null ? 'update' : 'add';
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Detects the JS-root-vs-ios-dir mismatch that produces silently-broken
|
|
322
|
+
* builds for standard RN apps. The community CLI writes
|
|
323
|
+
* `autolinking.json` under `<project.ios.sourceDir>/build/generated/autolinking/`
|
|
324
|
+
* (i.e. `<projectRoot>/ios/...`), while every SPM script anchors its
|
|
325
|
+
* inputs/outputs on `process.cwd()`. Running from the JS root therefore
|
|
326
|
+
* (a) writes outputs at `<projectRoot>/build/...` — away from the iOS
|
|
327
|
+
* project, and (b) makes the autolinker miss `autolinking.json` and
|
|
328
|
+
* silently skip every npm native dep. The build "succeeds" but anything
|
|
329
|
+
* touching a native module crashes at runtime.
|
|
330
|
+
*
|
|
331
|
+
* Returns the absolute path to the redirected app root (`<projectRoot>/ios`)
|
|
332
|
+
* when the redirect heuristic applies, else null. Pure: no side effects.
|
|
333
|
+
* The caller decides whether to auto-redirect (non-destructive actions) or
|
|
334
|
+
* refuse (destructive actions like `clean`).
|
|
335
|
+
*/
|
|
336
|
+
function detectStandardRnLayoutRedirect(
|
|
337
|
+
appRoot /*: string */,
|
|
338
|
+
projectRoot /*: string */,
|
|
339
|
+
) /*: string | null */ {
|
|
340
|
+
// Only relevant when cwd === projectRoot (i.e. user is at the JS root
|
|
341
|
+
// of their RN app). If they've already cd'd into a subdir, projectRoot
|
|
342
|
+
// walks up to find package.json and the two paths differ — leave alone.
|
|
343
|
+
if (path.resolve(appRoot) !== path.resolve(projectRoot)) {
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
// Standard RN layout has an `ios/` subdir holding the native project.
|
|
347
|
+
// Without it (e.g. rn-tester's flat layout), no mismatch to flag.
|
|
348
|
+
const iosSubdir = path.join(projectRoot, 'ios');
|
|
349
|
+
try {
|
|
350
|
+
if (!fs.statSync(iosSubdir).isDirectory()) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
} catch {
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
return iosSubdir;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function resolveReactNativeRoot(
|
|
360
|
+
autolinkingConfigResult /*: ?AutolinkingConfigResult */,
|
|
361
|
+
projectRoot /*: string */,
|
|
362
|
+
) /*: string */ {
|
|
363
|
+
// Prefer the React Native path resolved by the CLI config we already run for
|
|
364
|
+
// autolinking. Fall back to this script's package root for direct repo usage.
|
|
365
|
+
let reactNativeRoot = path.resolve(__dirname, '..');
|
|
366
|
+
const cliConfig = autolinkingConfigResult?.config;
|
|
367
|
+
const cliReactNativePath = cliConfig?.reactNativePath;
|
|
368
|
+
const cliConfigRoot = cliConfig?.root;
|
|
369
|
+
if (typeof cliReactNativePath === 'string' && cliReactNativePath.length > 0) {
|
|
370
|
+
reactNativeRoot = path.resolve(
|
|
371
|
+
typeof cliConfigRoot === 'string' && cliConfigRoot.length > 0
|
|
372
|
+
? cliConfigRoot
|
|
373
|
+
: projectRoot,
|
|
374
|
+
cliReactNativePath,
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
return reactNativeRoot;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function determineVersion(
|
|
381
|
+
args /*: SetupArgs */,
|
|
382
|
+
reactNativeRoot /*: string */,
|
|
383
|
+
) /*: string */ {
|
|
384
|
+
let version = args.version;
|
|
385
|
+
if (version == null) {
|
|
386
|
+
// $FlowFixMe[incompatible-type] JSON.parse returns any
|
|
387
|
+
const pkgJson /*: {version: string} */ = JSON.parse(
|
|
388
|
+
fs.readFileSync(path.join(reactNativeRoot, 'package.json'), 'utf8'),
|
|
389
|
+
);
|
|
390
|
+
version = pkgJson.version;
|
|
391
|
+
}
|
|
392
|
+
return version;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
function runCodegenStep(
|
|
396
|
+
projectRoot /*: string */,
|
|
397
|
+
appRoot /*: string */,
|
|
398
|
+
reactNativeRoot /*: string */,
|
|
399
|
+
skipCodegen /*: boolean */,
|
|
400
|
+
) /*: void */ {
|
|
401
|
+
if (skipCodegen) {
|
|
402
|
+
// Output dir may already exist from a previous run; still refresh the
|
|
403
|
+
// SPM template so cache-slot changes propagate.
|
|
404
|
+
log('Skipping codegen (--skip-codegen)');
|
|
405
|
+
installSpmCodegenTemplate(appRoot, reactNativeRoot, {log});
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
log('Running react-native codegen...');
|
|
409
|
+
try {
|
|
410
|
+
runCodegenAndInstallTemplate(projectRoot, appRoot, reactNativeRoot, {log});
|
|
411
|
+
} catch {
|
|
412
|
+
logError('Codegen failed. Continuing anyway...');
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Walks autolinking.json and writes a Package.swift into each community RN
|
|
418
|
+
* package that ships a podspec but no SPM manifest. Reuses the dep's
|
|
419
|
+
* podspec (via `pod ipc spec` when available) so the scaffolded file
|
|
420
|
+
* captures the dep's actual sources, header search paths, frameworks, and
|
|
421
|
+
* dependencies. Files carrying the scaffolder's own marker are regenerated
|
|
422
|
+
* when the cache slot changes (manifest-hash bump); files without the
|
|
423
|
+
* marker are left alone (upstream-shipped or user-managed).
|
|
424
|
+
*
|
|
425
|
+
* Runs as part of `init` / `update` / `scaffold` actions. Each invocation
|
|
426
|
+
* is a no-op for deps already in a clean state.
|
|
427
|
+
*/
|
|
428
|
+
// Scaffolding is an EXPLICIT, manual step (`npx react-native spm scaffold`) and
|
|
429
|
+
// is NEVER run automatically by init/update/sync. A missing Package.swift is a
|
|
430
|
+
// real gap that must surface as a hard build error (see reportMissingManifests)
|
|
431
|
+
// so the user fixes it deliberately: scaffold, then persist with patch-package
|
|
432
|
+
// (node_modules is not committed), and ideally get it fixed upstream. There is
|
|
433
|
+
// intentionally no prompt and no auto-restore — auto-scaffolding would hide the
|
|
434
|
+
// error, and a wiped scaffold SHOULD re-surface it.
|
|
435
|
+
async function runScaffold(
|
|
436
|
+
args /*: SetupArgs */,
|
|
437
|
+
appRoot /*: string */,
|
|
438
|
+
projectRoot /*: string */,
|
|
439
|
+
reactNativeRoot /*: string */,
|
|
440
|
+
) /*: Promise<void> */ {
|
|
441
|
+
// Resolve the cache slot identifier so the scaffolded files carry it as
|
|
442
|
+
// a comment — that's how SPM's manifest hash bumps on slot transitions.
|
|
443
|
+
let cacheSlotLabel /*: ?string */ = null;
|
|
444
|
+
try {
|
|
445
|
+
const rawVersion = args.version ?? determineVersion(args, reactNativeRoot);
|
|
446
|
+
const slotVersion = await resolveCacheSlotVersion(rawVersion);
|
|
447
|
+
cacheSlotLabel = `${slotVersion}/dual-flavor`;
|
|
448
|
+
} catch {
|
|
449
|
+
// Without a slot label the scaffolder still works; the file just
|
|
450
|
+
// doesn't get the slot-bump comment.
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
let results;
|
|
454
|
+
try {
|
|
455
|
+
results = scaffoldAll({
|
|
456
|
+
appRoot,
|
|
457
|
+
projectRoot,
|
|
458
|
+
reactNativeRoot,
|
|
459
|
+
cacheSlotLabel,
|
|
460
|
+
// Always force a re-render so re-running after editing a podspec picks
|
|
461
|
+
// up the new content.
|
|
462
|
+
force: true,
|
|
463
|
+
});
|
|
464
|
+
} catch (e) {
|
|
465
|
+
logError(`scaffold failed: ${e.message}.`);
|
|
466
|
+
process.exitCode = 1;
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const written = results.filter(r => r.status === 'written');
|
|
471
|
+
const errored = results.filter(r => r.status === 'error');
|
|
472
|
+
const warned = results.filter(
|
|
473
|
+
r => r.status === 'written' && r.warnings && r.warnings.length > 0,
|
|
474
|
+
);
|
|
475
|
+
|
|
476
|
+
if (written.length > 0) {
|
|
477
|
+
log(`Scaffolded Package.swift for ${written.length} dep(s):`);
|
|
478
|
+
for (const r of written) {
|
|
479
|
+
log(` • ${r.depName}`);
|
|
480
|
+
}
|
|
481
|
+
log('');
|
|
482
|
+
log(
|
|
483
|
+
'node_modules is NOT committed and is wiped by `npm install`. To keep\n' +
|
|
484
|
+
'these manifests, create and commit a patch with a tool like patch-package:\n' +
|
|
485
|
+
' • `npx patch-package <dep>` for each scaffolded dep, then commit the patch.\n' +
|
|
486
|
+
'Also consider asking the maintainer to ship a Package.swift upstream.\n' +
|
|
487
|
+
'Without a committed patch the build will hard-error again after a fresh install.',
|
|
488
|
+
);
|
|
489
|
+
log('');
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
for (const r of warned) {
|
|
493
|
+
if (r.status !== 'written') continue;
|
|
494
|
+
for (const w of r.warnings) {
|
|
495
|
+
log(` ! ${r.depName}: ${w}`);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
for (const r of errored) {
|
|
500
|
+
if (r.status !== 'error') continue;
|
|
501
|
+
logError(` ! ${r.depName}: ${r.reason}`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
async function ensureArtifactFlavor(
|
|
506
|
+
args /*: SetupArgs */,
|
|
507
|
+
rawVersion /*: string */,
|
|
508
|
+
slotVersion /*: string */,
|
|
509
|
+
flavor /*: 'debug' | 'release' */,
|
|
510
|
+
) /*: Promise<string> */ {
|
|
511
|
+
if (args.artifacts != null && args.artifacts.endsWith('.xcframework')) {
|
|
512
|
+
throw new Error(
|
|
513
|
+
'--artifacts must be a directory containing debug/ and release/ slots; ' +
|
|
514
|
+
'a single XCFramework cannot satisfy automatic switching',
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
const resolvedArtifactsDir =
|
|
518
|
+
args.artifacts != null
|
|
519
|
+
? path.resolve(args.artifacts, flavor)
|
|
520
|
+
: defaultCacheDir(slotVersion, flavor);
|
|
521
|
+
|
|
522
|
+
if (args.downloadPolicy === 'force' && resolvedArtifactsDir != null) {
|
|
523
|
+
log('Clearing cached artifacts (--download force)...');
|
|
524
|
+
fs.rmSync(resolvedArtifactsDir, {recursive: true, force: true});
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
if (args.downloadPolicy === 'skip') {
|
|
528
|
+
const error = validateArtifactsCache(resolvedArtifactsDir);
|
|
529
|
+
if (error != null) {
|
|
530
|
+
throw new Error(
|
|
531
|
+
`--download skip requires a complete ${flavor} slot: ${error}`,
|
|
532
|
+
);
|
|
533
|
+
}
|
|
534
|
+
log(`Using ${flavor} artifacts (--download skip)`);
|
|
535
|
+
return resolvedArtifactsDir;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
// Validate the cache before trusting it. A bare existsSync(artifacts.json)
|
|
539
|
+
// check would accept a partial write from a prior failed download (e.g.
|
|
540
|
+
// hermes-engine 404 on a not-yet-published nightly) and silently propagate
|
|
541
|
+
// the gap into the xcodeproj, surfacing only as "Missing package product"
|
|
542
|
+
// in Xcode. validateArtifactsCache reads the JSON and confirms every
|
|
543
|
+
// REQUIRED_ARTIFACT has a present xcframework on disk.
|
|
544
|
+
const cacheError = validateArtifactsCache(resolvedArtifactsDir);
|
|
545
|
+
if (cacheError == null) {
|
|
546
|
+
log(
|
|
547
|
+
`${flavor} artifacts already present in ${displayPath(resolvedArtifactsDir)}`,
|
|
548
|
+
);
|
|
549
|
+
return resolvedArtifactsDir;
|
|
550
|
+
}
|
|
551
|
+
log(`Cache incomplete (${cacheError}); re-downloading...`);
|
|
552
|
+
log(`Downloading ${flavor} xcframework artifacts (slot: ${slotVersion})...`);
|
|
553
|
+
await downloadArtifacts([
|
|
554
|
+
'--version',
|
|
555
|
+
rawVersion,
|
|
556
|
+
'--flavor',
|
|
557
|
+
flavor,
|
|
558
|
+
'--output',
|
|
559
|
+
resolvedArtifactsDir,
|
|
560
|
+
]);
|
|
561
|
+
const downloadedError = validateArtifactsCache(resolvedArtifactsDir);
|
|
562
|
+
if (downloadedError != null) {
|
|
563
|
+
throw new Error(
|
|
564
|
+
`downloaded ${flavor} slot is incomplete: ${downloadedError}`,
|
|
565
|
+
);
|
|
566
|
+
}
|
|
567
|
+
return resolvedArtifactsDir;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
async function ensureBothArtifactFlavors(
|
|
571
|
+
args /*: SetupArgs */,
|
|
572
|
+
version /*: string */,
|
|
573
|
+
) /*: Promise<{debug: string, release: string}> */ {
|
|
574
|
+
// Resolve aliases/nightly labels exactly once so both flavors are guaranteed
|
|
575
|
+
// to come from the same selected artifact version.
|
|
576
|
+
const rawVersion = args.version ?? version;
|
|
577
|
+
const slotVersion = await resolveCacheSlotVersion(rawVersion);
|
|
578
|
+
const debug = await ensureArtifactFlavor(
|
|
579
|
+
args,
|
|
580
|
+
rawVersion,
|
|
581
|
+
slotVersion,
|
|
582
|
+
'debug',
|
|
583
|
+
);
|
|
584
|
+
const release = await ensureArtifactFlavor(
|
|
585
|
+
args,
|
|
586
|
+
rawVersion,
|
|
587
|
+
slotVersion,
|
|
588
|
+
'release',
|
|
589
|
+
);
|
|
590
|
+
return {debug, release};
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function generateXcframeworksPackage(
|
|
594
|
+
args /*: SetupArgs */,
|
|
595
|
+
appRoot /*: string */,
|
|
596
|
+
reactNativeRoot /*: string */,
|
|
597
|
+
version /*: string */,
|
|
598
|
+
artifactDirs /*: {debug: string, release: string} */,
|
|
599
|
+
) {
|
|
600
|
+
log('Generating xcframeworks sub-package...');
|
|
601
|
+
const packageArgs = [
|
|
602
|
+
'--app-root',
|
|
603
|
+
appRoot,
|
|
604
|
+
'--react-native-root',
|
|
605
|
+
reactNativeRoot,
|
|
606
|
+
'--version',
|
|
607
|
+
version,
|
|
608
|
+
];
|
|
609
|
+
packageArgs.push('--debug-artifacts-dir', artifactDirs.debug);
|
|
610
|
+
packageArgs.push('--release-artifacts-dir', artifactDirs.release);
|
|
611
|
+
generatePackage(packageArgs);
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
// True when the chosen pbxproj is still CocoaPods-integrated (its build configs
|
|
615
|
+
// layer a `Pods-*.xcconfig`) — the real blocker for SPM injection.
|
|
616
|
+
function pbxprojUsesCocoaPods(xcodeprojPath /*: string */) /*: boolean */ {
|
|
617
|
+
try {
|
|
618
|
+
const t = fs.readFileSync(
|
|
619
|
+
path.join(xcodeprojPath, 'project.pbxproj'),
|
|
620
|
+
'utf8',
|
|
621
|
+
);
|
|
622
|
+
return /\bPods[-/][^\n]*\.xcconfig\b/.test(t);
|
|
623
|
+
} catch {
|
|
624
|
+
return false;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// True when the Podfile still declares React Native integration — a latent
|
|
629
|
+
// landmine even after `pod deintegrate` (a future `pod install` re-breaks the
|
|
630
|
+
// SPM graph). Warned about (not refused) once the pbxproj itself is clean.
|
|
631
|
+
function podfileHasRnIntegration(appRoot /*: string */) /*: boolean */ {
|
|
632
|
+
const podfilePath = path.join(appRoot, 'Podfile');
|
|
633
|
+
if (!fs.existsSync(podfilePath)) {
|
|
634
|
+
return false;
|
|
635
|
+
}
|
|
636
|
+
return /use_react_native!|use_native_modules!|prepare_react_native_project!/.test(
|
|
637
|
+
fs.readFileSync(podfilePath, 'utf8'),
|
|
638
|
+
);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
// True when the Podfile declares any explicit `pod '...'` (third-party pods).
|
|
642
|
+
function podfileHasThirdPartyPods(appRoot /*: string */) /*: boolean */ {
|
|
643
|
+
const podfilePath = path.join(appRoot, 'Podfile');
|
|
644
|
+
if (!fs.existsSync(podfilePath)) {
|
|
645
|
+
return false;
|
|
646
|
+
}
|
|
647
|
+
return /^\s*pod\s+['"]/m.test(fs.readFileSync(podfilePath, 'utf8'));
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// The zero-arg "fresh project" safe-gate: auto-`add --deintegrate` ONLY when it
|
|
651
|
+
// is provably safe — a first-run CocoaPods RN project with a stock Podfile (no
|
|
652
|
+
// third-party pods) whose pbxproj AND Podfile are git-tracked and clean, so the
|
|
653
|
+
// conversion is fully revertible. We check only the two files `deintegrate`
|
|
654
|
+
// mutates (not the whole tree) — a fresh app typically has a dirty
|
|
655
|
+
// node_modules/lockfile/patches after `npm install` + `spm scaffold`, none of
|
|
656
|
+
// which affect the revertibility of the CocoaPods → SwiftPM conversion.
|
|
657
|
+
// Otherwise false → strict `add` (which fails loud on a CocoaPods project).
|
|
658
|
+
function shouldAutoDeintegrate(
|
|
659
|
+
appRoot /*: string */,
|
|
660
|
+
xcodeprojPath /*: string | null */,
|
|
661
|
+
) /*: boolean */ {
|
|
662
|
+
if (xcodeprojPath == null || !pbxprojUsesCocoaPods(xcodeprojPath)) {
|
|
663
|
+
return false;
|
|
664
|
+
}
|
|
665
|
+
if (podfileHasThirdPartyPods(appRoot)) {
|
|
666
|
+
return false;
|
|
667
|
+
}
|
|
668
|
+
const pbxprojPath = path.join(xcodeprojPath, 'project.pbxproj');
|
|
669
|
+
if (gitTrackedAndClean(appRoot, pbxprojPath) !== true) {
|
|
670
|
+
return false;
|
|
671
|
+
}
|
|
672
|
+
const podfilePath = path.join(appRoot, 'Podfile');
|
|
673
|
+
if (
|
|
674
|
+
fs.existsSync(podfilePath) &&
|
|
675
|
+
gitTrackedAndClean(appRoot, podfilePath) !== true
|
|
676
|
+
) {
|
|
677
|
+
return false;
|
|
678
|
+
}
|
|
679
|
+
return true;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
// Run `pod deintegrate` then strip React Native from the Podfile (leaving any
|
|
683
|
+
// non-RN pods). Requires CocoaPods on PATH (fail-loud otherwise). Flag-gated ⇒
|
|
684
|
+
// no prompt ⇒ CI-safe. Does NOT touch the .xcworkspace.
|
|
685
|
+
function runDeintegrate(appRoot /*: string */) /*: void */ {
|
|
686
|
+
try {
|
|
687
|
+
execFileSync('pod', ['--version'], {stdio: 'ignore'});
|
|
688
|
+
} catch {
|
|
689
|
+
logError(
|
|
690
|
+
'`--deintegrate` needs CocoaPods (`pod`) on PATH. Remove the React ' +
|
|
691
|
+
'Native integration from your project manually, then run `spm add`.',
|
|
692
|
+
);
|
|
693
|
+
process.exitCode = 1;
|
|
694
|
+
throw new Error('pod not found');
|
|
695
|
+
}
|
|
696
|
+
log('Running `pod deintegrate`...');
|
|
697
|
+
execFileSync('pod', ['deintegrate'], {cwd: appRoot, stdio: 'inherit'});
|
|
698
|
+
|
|
699
|
+
const podfilePath = path.join(appRoot, 'Podfile');
|
|
700
|
+
if (fs.existsSync(podfilePath)) {
|
|
701
|
+
const orig = fs.readFileSync(podfilePath, 'utf8');
|
|
702
|
+
const stripped = orig
|
|
703
|
+
.split('\n')
|
|
704
|
+
.filter(
|
|
705
|
+
l =>
|
|
706
|
+
!/use_react_native!|use_native_modules!|prepare_react_native_project!/.test(
|
|
707
|
+
l,
|
|
708
|
+
),
|
|
709
|
+
)
|
|
710
|
+
.join('\n');
|
|
711
|
+
if (stripped !== orig) {
|
|
712
|
+
fs.writeFileSync(podfilePath, stripped, 'utf8');
|
|
713
|
+
log('Stripped React Native integration from Podfile.');
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// Pick the .xcodeproj to inject into: --xcodeproj override > a prior in-place
|
|
719
|
+
// target (re-run) > the single .xcodeproj in appRoot. Returns an error string
|
|
720
|
+
// (ambiguous / none) so the caller fails loud.
|
|
721
|
+
function resolveInjectionTarget(
|
|
722
|
+
args /*: SetupArgs */,
|
|
723
|
+
appRoot /*: string */,
|
|
724
|
+
) /*: {path: string, error?: void} | {error: string, path?: void} */ {
|
|
725
|
+
if (args.xcodeprojPath != null) {
|
|
726
|
+
const p = path.resolve(appRoot, args.xcodeprojPath);
|
|
727
|
+
return fs.existsSync(p)
|
|
728
|
+
? {path: p}
|
|
729
|
+
: {error: `--xcodeproj not found: ${p}`};
|
|
730
|
+
}
|
|
731
|
+
const injected = findInjectedXcodeproj(appRoot);
|
|
732
|
+
if (injected != null) {
|
|
733
|
+
return {path: injected};
|
|
734
|
+
}
|
|
735
|
+
const names /*: Array<string> */ = [];
|
|
736
|
+
let entries /*: Array<{name: string, isDirectory(): boolean}> */ = [];
|
|
737
|
+
try {
|
|
738
|
+
// $FlowFixMe[incompatible-type] Dirent typing
|
|
739
|
+
entries = fs.readdirSync(appRoot, {withFileTypes: true});
|
|
740
|
+
} catch {}
|
|
741
|
+
for (const entry of entries) {
|
|
742
|
+
if (!entry.isDirectory()) continue;
|
|
743
|
+
// $FlowFixMe[incompatible-type] Dirent.name is string|Buffer in Flow stubs
|
|
744
|
+
const name /*: string */ = entry.name;
|
|
745
|
+
if (name.endsWith('.xcodeproj')) {
|
|
746
|
+
names.push(name);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
if (names.length === 0) {
|
|
750
|
+
return {
|
|
751
|
+
error:
|
|
752
|
+
'no .xcodeproj found. Create an app first (e.g. `npx ' +
|
|
753
|
+
'@react-native-community/cli init`) or make one in Xcode, then `spm add`.',
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
if (names.length > 1) {
|
|
757
|
+
return {
|
|
758
|
+
error: `multiple .xcodeproj found (${names.join(', ')}); pass --xcodeproj to pick one.`,
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
return {path: path.join(appRoot, names[0])};
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* Inject SPM packages into the user's existing .xcodeproj, in place — the only
|
|
766
|
+
* xcodeproj strategy (`add` and `update` both run this; there is no
|
|
767
|
+
* from-scratch generation). Fails loud rather than silently retargeting. With
|
|
768
|
+
* `--deintegrate`, removes CocoaPods first.
|
|
769
|
+
*/
|
|
770
|
+
async function setupXcodeproj(
|
|
771
|
+
args /*: SetupArgs */,
|
|
772
|
+
appRoot /*: string */,
|
|
773
|
+
reactNativeRoot /*: string */,
|
|
774
|
+
action /*: string */,
|
|
775
|
+
) /*: Promise<void> */ {
|
|
776
|
+
const target = resolveInjectionTarget(args, appRoot);
|
|
777
|
+
if (target.error != null) {
|
|
778
|
+
logError(`Cannot set up SPM: ${target.error}`);
|
|
779
|
+
process.exitCode = 1;
|
|
780
|
+
throw new Error(target.error);
|
|
781
|
+
}
|
|
782
|
+
const xcodeprojPath = target.path;
|
|
783
|
+
const pbxprojPath = path.join(xcodeprojPath, 'project.pbxproj');
|
|
784
|
+
|
|
785
|
+
// Snapshot the pbxproj's git state BEFORE deintegrate — `pod deintegrate`
|
|
786
|
+
// rewrites it (removing the Pods xcconfig layering), so checking afterward
|
|
787
|
+
// would always look dirty and trigger a spurious confirmation prompt.
|
|
788
|
+
const cleanBeforeEdits = gitTrackedAndClean(appRoot, pbxprojPath);
|
|
789
|
+
|
|
790
|
+
if (args.deintegrate) {
|
|
791
|
+
runDeintegrate(appRoot);
|
|
792
|
+
// `pod deintegrate` strips the build integration but can leave an empty
|
|
793
|
+
// `Pods` group in the navigator — remove it so the converted project is
|
|
794
|
+
// visually clean.
|
|
795
|
+
if (cleanupLeftoverPodsGroup(xcodeprojPath)) {
|
|
796
|
+
log('Removed the leftover empty `Pods` group from the project.');
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
// Preflight: a still-CocoaPods-integrated pbxproj is the real build-breaker.
|
|
801
|
+
if (pbxprojUsesCocoaPods(xcodeprojPath)) {
|
|
802
|
+
logError(
|
|
803
|
+
`${path.basename(xcodeprojPath)} is CocoaPods-integrated. Re-run ` +
|
|
804
|
+
'`spm add --deintegrate` to convert it (runs `pod deintegrate` + ' +
|
|
805
|
+
'strips React Native from the Podfile), or run `pod deintegrate` ' +
|
|
806
|
+
'yourself first. Side-by-side non-RN pods are fine.',
|
|
807
|
+
);
|
|
808
|
+
process.exitCode = 1;
|
|
809
|
+
throw new Error('CocoaPods-integrated project');
|
|
810
|
+
}
|
|
811
|
+
if (podfileHasRnIntegration(appRoot)) {
|
|
812
|
+
log(
|
|
813
|
+
'\x1b[33mNote: your Podfile still declares React Native integration. ' +
|
|
814
|
+
'Remove it and avoid `pod install`, or it will re-break the SPM ' +
|
|
815
|
+
'package graph.\x1b[0m',
|
|
816
|
+
);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
// No backup is made — git is the safety net. Refuse on a dirty/untracked
|
|
820
|
+
// pbxproj (as it was BEFORE any deintegrate edits) unless --yes, so a bad
|
|
821
|
+
// inject is always `git checkout`-able.
|
|
822
|
+
const clean = cleanBeforeEdits;
|
|
823
|
+
if (clean === false && !args.yes) {
|
|
824
|
+
const proceed = await promptYesNo(
|
|
825
|
+
`${path.basename(xcodeprojPath)} has uncommitted changes and no ` +
|
|
826
|
+
`backup is made (git is the only undo). Inject SPM packages anyway?`,
|
|
827
|
+
false,
|
|
828
|
+
);
|
|
829
|
+
if (!proceed) {
|
|
830
|
+
log('Aborted. Commit or stash the project, then re-run `spm add`.');
|
|
831
|
+
process.exitCode = 1;
|
|
832
|
+
throw new Error('In-place injection declined (dirty working tree)');
|
|
833
|
+
}
|
|
834
|
+
} else if (clean === null) {
|
|
835
|
+
log(
|
|
836
|
+
`\x1b[33mNote: ${path.basename(xcodeprojPath)} is not in a git ` +
|
|
837
|
+
`repo — no backup is made before in-place injection.\x1b[0m`,
|
|
838
|
+
);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
const result = injectSpmIntoExistingXcodeproj({
|
|
842
|
+
appRoot,
|
|
843
|
+
reactNativeRoot,
|
|
844
|
+
xcodeprojPath,
|
|
845
|
+
appName: args.productName,
|
|
846
|
+
// Only an EXPLICIT `--version` pins the artifacts-cache slot in the
|
|
847
|
+
// marker; omitting it (null) leaves any previously-recorded pin alone
|
|
848
|
+
// (injectSpmIntoExistingXcodeproj preserves it — see
|
|
849
|
+
// generate-spm-xcodeproj.js).
|
|
850
|
+
artifactsVersionOverride: args.version ?? null,
|
|
851
|
+
configCommand: resolveConfigCommandToPin(args),
|
|
852
|
+
});
|
|
853
|
+
if (result.status !== 'injected') {
|
|
854
|
+
logError(`SPM injection failed: ${result.reason}`);
|
|
855
|
+
process.exitCode = 1;
|
|
856
|
+
throw new Error(result.reason);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
// The community template has carried a dangling `JavaScriptCore.framework`
|
|
860
|
+
// reference since RN 0.60 (navigator-only, unlinked, meaningless under
|
|
861
|
+
// Hermes) — one-time migration hygiene at conversion time, like the empty
|
|
862
|
+
// Pods group above. `add` only; `update` stays a minimal re-sync.
|
|
863
|
+
if (action === 'add' && cleanupDanglingJavaScriptCoreRef(xcodeprojPath)) {
|
|
864
|
+
log(
|
|
865
|
+
"Removed the template's dangling JavaScriptCore.framework reference " +
|
|
866
|
+
'(unused; React Native uses Hermes).',
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
// True when `git status --porcelain` reports the path dirty/untracked. Returns
|
|
872
|
+
// null when git is unavailable or the path is outside a repo (no safety net).
|
|
873
|
+
function gitTrackedAndClean(
|
|
874
|
+
appRoot /*: string */,
|
|
875
|
+
targetPath /*: string */,
|
|
876
|
+
) /*: boolean | null */ {
|
|
877
|
+
try {
|
|
878
|
+
const out = execFileSync(
|
|
879
|
+
'git',
|
|
880
|
+
['status', '--porcelain', '--', targetPath],
|
|
881
|
+
{cwd: appRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore']},
|
|
882
|
+
);
|
|
883
|
+
return out.trim() === '';
|
|
884
|
+
} catch {
|
|
885
|
+
return null; // not a git repo / git missing
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
function logNextSteps(
|
|
890
|
+
projectRoot /*: string */,
|
|
891
|
+
appRoot /*: string */,
|
|
892
|
+
productName /*: string | null */,
|
|
893
|
+
) {
|
|
894
|
+
const appPkgJson = readPackageJson(projectRoot);
|
|
895
|
+
const rawName =
|
|
896
|
+
(appPkgJson != null ? appPkgJson.name : null) ?? path.basename(projectRoot);
|
|
897
|
+
const sourcePath = findSourcePath(appRoot, rawName);
|
|
898
|
+
const appDisplayName = productName ?? deriveAppName(rawName, sourcePath);
|
|
899
|
+
|
|
900
|
+
log('');
|
|
901
|
+
log('SPM setup complete!');
|
|
902
|
+
log('');
|
|
903
|
+
log('Next steps:');
|
|
904
|
+
log(` • Open ${appDisplayName}.xcodeproj in Xcode (or \`npm run ios\`)`);
|
|
905
|
+
log(' • Set your Development Team in Signing & Capabilities');
|
|
906
|
+
log(' • Build and run on Simulator or device');
|
|
907
|
+
log('');
|
|
908
|
+
log('To remove SPM later: `npx react-native spm deinit`');
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
// The autolinking config command for this run: an explicit `--config-command`
|
|
912
|
+
// first, then the value a previous `add`/`update` pinned into the injection
|
|
913
|
+
// marker. undefined means "no explicit command", which is what makes
|
|
914
|
+
// generateAutolinkingConfig fall back to RCT_SPM_AUTOLINKING_CONFIG_COMMAND and
|
|
915
|
+
// then to the built-in default — so the pin has to be WITHHELD while the env
|
|
916
|
+
// var is set, or a stale pin would outrank a developer's env override.
|
|
917
|
+
function resolveExplicitConfigCommand(
|
|
918
|
+
args /*: SetupArgs */,
|
|
919
|
+
appRoot /*: string */,
|
|
920
|
+
) /*: Array<string> | void */ {
|
|
921
|
+
if (args.configCommand != null) {
|
|
922
|
+
return args.configCommand;
|
|
923
|
+
}
|
|
924
|
+
if (readEnvConfigCommand() != null) {
|
|
925
|
+
return undefined;
|
|
926
|
+
}
|
|
927
|
+
const pinned = readPinnedConfigCommand(appRoot);
|
|
928
|
+
if (pinned == null) {
|
|
929
|
+
return undefined;
|
|
930
|
+
}
|
|
931
|
+
log(
|
|
932
|
+
`Autolinking config command (pinned in ${SPM_INJECTED_MARKER}): ` +
|
|
933
|
+
pinned.join(' '),
|
|
934
|
+
);
|
|
935
|
+
return pinned;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
// The command to record in the injection marker. The env var is resolved here
|
|
939
|
+
// too, because the Xcode build phase inherits neither the flag nor the shell
|
|
940
|
+
// that set it — an env-only override that went unpinned would leave the build
|
|
941
|
+
// re-deriving autolinking.json with the default command. null pins nothing and
|
|
942
|
+
// preserves any earlier pin. An invalid env value throws, as the flag does,
|
|
943
|
+
// though `add` has already failed closed on it by this point.
|
|
944
|
+
function resolveConfigCommandToPin(
|
|
945
|
+
args /*: SetupArgs */,
|
|
946
|
+
) /*: ?Array<string> */ {
|
|
947
|
+
return args.configCommand ?? resolveEnvConfigCommand();
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
// Generate autolinking.json, failing closed on a config-command error.
|
|
951
|
+
//
|
|
952
|
+
// generateAutolinkingConfig throws ONLY when the config command itself fails —
|
|
953
|
+
// a non-zero exit, unparseable output, or a config missing
|
|
954
|
+
// project.ios.sourceDir. Swallowing that (the old behavior) let the run proceed
|
|
955
|
+
// and emit an empty Autolinked package, which only surfaced much later as an
|
|
956
|
+
// inscrutable `unable to resolve module dependency` at build time. Instead we
|
|
957
|
+
// set process.exitCode = 2 (a hard Xcode build-phase error, matching the
|
|
958
|
+
// RemoteVersionError path) and return null so the caller stops.
|
|
959
|
+
//
|
|
960
|
+
// A genuinely native-module-free app does NOT reach the error path: its command
|
|
961
|
+
// exits 0 with valid, empty-dependency JSON, so generateAutolinkingConfig
|
|
962
|
+
// returns normally and the empty-package path downstream stays valid.
|
|
963
|
+
function generateAutolinkingConfigOrFailClosed(
|
|
964
|
+
opts /*: {
|
|
965
|
+
projectRoot: string,
|
|
966
|
+
configCommand?: Array<string>,
|
|
967
|
+
generate?: typeof generateAutolinkingConfig,
|
|
968
|
+
} */,
|
|
969
|
+
) /*: ?AutolinkingConfigResult */ {
|
|
970
|
+
const generate = opts.generate ?? generateAutolinkingConfig;
|
|
971
|
+
try {
|
|
972
|
+
return generate({
|
|
973
|
+
projectRoot: opts.projectRoot,
|
|
974
|
+
configCommand: opts.configCommand,
|
|
975
|
+
});
|
|
976
|
+
} catch (e) {
|
|
977
|
+
logError(
|
|
978
|
+
`Failed to generate autolinking.json: ${e.message}\n` +
|
|
979
|
+
'The autolinking config command failed. If this app replaces ' +
|
|
980
|
+
'@react-native-community/cli autolinking (e.g. an Expo app), set ' +
|
|
981
|
+
'RCT_SPM_AUTOLINKING_CONFIG_COMMAND (or pass --config-command) to a ' +
|
|
982
|
+
'JSON argv array whose command prints the React Native CLI config, ' +
|
|
983
|
+
'e.g. \'["npx","expo-modules-autolinking","react-native-config",' +
|
|
984
|
+
'"--json","--platform","ios"]\'. An earlier `add`/`update` may also ' +
|
|
985
|
+
`have pinned a command in ${SPM_INJECTED_MARKER}; re-run with ` +
|
|
986
|
+
'--config-command to replace a stale one.',
|
|
987
|
+
);
|
|
988
|
+
process.exitCode = 2;
|
|
989
|
+
return null;
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
async function main(argv /*:: ?: Array<string> */) /*: Promise<void> */ {
|
|
994
|
+
let appRoot = process.cwd();
|
|
995
|
+
const projectRoot = findProjectRoot(appRoot);
|
|
996
|
+
const args = parseArgs(argv ?? process.argv.slice(2));
|
|
997
|
+
|
|
998
|
+
// Standard-RN-layout redirect: if invoked from the JS root and there's an
|
|
999
|
+
// `ios/` subdir, route the run there. Runs BEFORE resolveAction so the
|
|
1000
|
+
// first-run heuristic checks the correct directory.
|
|
1001
|
+
const redirectTo = detectStandardRnLayoutRedirect(appRoot, projectRoot);
|
|
1002
|
+
if (redirectTo != null) {
|
|
1003
|
+
const redirectAction = args.action ?? 'add';
|
|
1004
|
+
log(
|
|
1005
|
+
`\x1b[33mDetected standard RN layout — running ${redirectAction} in ${displayPath(redirectTo)} ` +
|
|
1006
|
+
`instead of ${displayPath(appRoot)}.\x1b[0m`,
|
|
1007
|
+
);
|
|
1008
|
+
appRoot = redirectTo;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
const action = resolveAction(args.action, appRoot);
|
|
1012
|
+
|
|
1013
|
+
// Zero-arg safe-gate: when `add` was resolved implicitly (no action typed)
|
|
1014
|
+
// on a freshly-scaffolded CocoaPods project, imply `--deintegrate` so the
|
|
1015
|
+
// common "new app → SPM" path is one command. Never on an explicit `spm add`
|
|
1016
|
+
// (that stays strict and fails loud on CocoaPods).
|
|
1017
|
+
if (
|
|
1018
|
+
action === 'add' &&
|
|
1019
|
+
args.action == null &&
|
|
1020
|
+
!args.deintegrate &&
|
|
1021
|
+
shouldAutoDeintegrate(
|
|
1022
|
+
appRoot,
|
|
1023
|
+
resolveInjectionTarget(args, appRoot).path ?? null,
|
|
1024
|
+
)
|
|
1025
|
+
) {
|
|
1026
|
+
log(
|
|
1027
|
+
'Detected a freshly-scaffolded CocoaPods project — converting to SwiftPM ' +
|
|
1028
|
+
'(running `pod deintegrate`). Revert with `git` or `spm deinit`.',
|
|
1029
|
+
);
|
|
1030
|
+
args.deintegrate = true;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
log(`Running SPM ${action} in: ${displayPath(appRoot)}`);
|
|
1034
|
+
if (projectRoot !== appRoot) {
|
|
1035
|
+
log(`Project root (package.json): ${displayPath(projectRoot)}`);
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
if (action === 'deinit') {
|
|
1039
|
+
const xcodeprojPath =
|
|
1040
|
+
args.xcodeprojPath != null
|
|
1041
|
+
? path.resolve(appRoot, args.xcodeprojPath)
|
|
1042
|
+
: findInjectedXcodeproj(appRoot);
|
|
1043
|
+
if (xcodeprojPath == null) {
|
|
1044
|
+
log('No SPM injection found — nothing to remove.');
|
|
1045
|
+
return;
|
|
1046
|
+
}
|
|
1047
|
+
const result = removeSpmInjection({appRoot, xcodeprojPath});
|
|
1048
|
+
log(
|
|
1049
|
+
result.status === 'removed'
|
|
1050
|
+
? `Removed SPM packages from ${path.basename(xcodeprojPath)}.`
|
|
1051
|
+
: 'No SPM injection found — nothing to remove.',
|
|
1052
|
+
);
|
|
1053
|
+
return;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
// Fail fast on a CocoaPods-integrated target BEFORE the (expensive) pipeline,
|
|
1057
|
+
// so the user isn't made to wait through codegen + artifact download only to
|
|
1058
|
+
// be told to re-run with --deintegrate. Skipped when --deintegrate is set
|
|
1059
|
+
// (explicitly or via the safe-gate) — deintegration happens in setupXcodeproj.
|
|
1060
|
+
if ((action === 'add' || action === 'update') && !args.deintegrate) {
|
|
1061
|
+
const target = resolveInjectionTarget(args, appRoot);
|
|
1062
|
+
if (target.path != null && pbxprojUsesCocoaPods(target.path)) {
|
|
1063
|
+
logError(
|
|
1064
|
+
`${path.basename(target.path)} is CocoaPods-integrated. Re-run ` +
|
|
1065
|
+
'`spm add --deintegrate` to convert it (runs `pod deintegrate` + ' +
|
|
1066
|
+
'strips React Native from the Podfile), or run `pod deintegrate` ' +
|
|
1067
|
+
'yourself first. Side-by-side non-RN pods are fine.',
|
|
1068
|
+
);
|
|
1069
|
+
process.exitCode = 1;
|
|
1070
|
+
return;
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
const needsCliConfig =
|
|
1075
|
+
action === 'add' ||
|
|
1076
|
+
action === 'update' ||
|
|
1077
|
+
action === 'sync' ||
|
|
1078
|
+
action === 'scaffold';
|
|
1079
|
+
let autolinkingConfigResult /*: ?AutolinkingConfigResult */ = null;
|
|
1080
|
+
if (needsCliConfig) {
|
|
1081
|
+
log('Generating autolinking.json (CLI config)...');
|
|
1082
|
+
autolinkingConfigResult = generateAutolinkingConfigOrFailClosed({
|
|
1083
|
+
projectRoot,
|
|
1084
|
+
configCommand: resolveExplicitConfigCommand(args, appRoot),
|
|
1085
|
+
});
|
|
1086
|
+
if (autolinkingConfigResult == null) {
|
|
1087
|
+
// Fail closed: the config command errored and the helper already set
|
|
1088
|
+
// process.exitCode = 2. Stop rather than emit an empty Autolinked package.
|
|
1089
|
+
return;
|
|
1090
|
+
}
|
|
1091
|
+
log(`Wrote ${path.relative(appRoot, autolinkingConfigResult.outputPath)}`);
|
|
1092
|
+
}
|
|
1093
|
+
const reactNativeRoot = resolveReactNativeRoot(
|
|
1094
|
+
autolinkingConfigResult,
|
|
1095
|
+
projectRoot,
|
|
1096
|
+
);
|
|
1097
|
+
const version = determineVersion(args, reactNativeRoot);
|
|
1098
|
+
log(`React Native version: ${version}`);
|
|
1099
|
+
|
|
1100
|
+
// Resolve remote SPM mode ONCE up front. remotePackageConfig throws
|
|
1101
|
+
// RemoteVersionError when remote mode is active but no usable RN version can
|
|
1102
|
+
// be derived (e.g. the monorepo '1000.0.0' placeholder with no override).
|
|
1103
|
+
// The downstream scaffold/autolinker/package steps all call it internally;
|
|
1104
|
+
// surfacing it here gives a single, predictable failure point before any of
|
|
1105
|
+
// them run. Exit 2 (same as a missing manifest) so the Xcode build phase
|
|
1106
|
+
// turns it into a hard build error while staying lenient on transient sync
|
|
1107
|
+
// failures. No-op in local mode (returns null).
|
|
1108
|
+
try {
|
|
1109
|
+
remotePackageConfig(appRoot);
|
|
1110
|
+
} catch (e) {
|
|
1111
|
+
if (e instanceof RemoteVersionError) {
|
|
1112
|
+
logError(e.message);
|
|
1113
|
+
process.exitCode = 2;
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
throw e;
|
|
1117
|
+
}
|
|
1118
|
+
// The artifact cache directory is resolved later in ensureArtifacts so the
|
|
1119
|
+
// nightly hash can be folded in for dev / nightly labels. That branch logs
|
|
1120
|
+
// either "Downloading xcframework artifacts (slot: ...)" or
|
|
1121
|
+
// "Artifacts already present in ...".
|
|
1122
|
+
|
|
1123
|
+
if (action === 'codegen') {
|
|
1124
|
+
runCodegenStep(projectRoot, appRoot, reactNativeRoot, false);
|
|
1125
|
+
return;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
if (action === 'sync') {
|
|
1129
|
+
const {main: runSync} = require('./spm/sync-spm-autolinking');
|
|
1130
|
+
try {
|
|
1131
|
+
await runSync([
|
|
1132
|
+
'--app-root',
|
|
1133
|
+
appRoot,
|
|
1134
|
+
'--react-native-root',
|
|
1135
|
+
reactNativeRoot,
|
|
1136
|
+
]);
|
|
1137
|
+
} catch (e) {
|
|
1138
|
+
if (e instanceof MissingManifestError) {
|
|
1139
|
+
// The per-dep `error:` lines were already printed by the autolinker.
|
|
1140
|
+
// Exit 2 (distinct from generic failure) so the Xcode build phase can
|
|
1141
|
+
// turn this into a hard build error while staying lenient on transient
|
|
1142
|
+
// sync failures.
|
|
1143
|
+
process.exitCode = 2;
|
|
1144
|
+
} else {
|
|
1145
|
+
logError(`SPM sync failed: ${e.message}`);
|
|
1146
|
+
process.exitCode = 1;
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
return;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
if (action === 'download') {
|
|
1153
|
+
try {
|
|
1154
|
+
await ensureBothArtifactFlavors(args, version);
|
|
1155
|
+
} catch (e) {
|
|
1156
|
+
logError(`Artifact setup failed: ${e.message}`);
|
|
1157
|
+
process.exitCode = 1;
|
|
1158
|
+
}
|
|
1159
|
+
return;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
// Scaffold Package.swift for community RN packages that don't ship SPM
|
|
1163
|
+
// support — ONLY for the explicit `scaffold` action. init/update never
|
|
1164
|
+
// auto-scaffold: a missing manifest must surface as a hard error (the
|
|
1165
|
+
// autolinker below throws MissingManifestError → exit 2) so the gap is
|
|
1166
|
+
// visible and fixed deliberately (scaffold + patch-package, or upstream).
|
|
1167
|
+
// Auto-scaffolding would silently hide that real error.
|
|
1168
|
+
if (action === 'scaffold') {
|
|
1169
|
+
await runScaffold(args, appRoot, projectRoot, reactNativeRoot);
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
runCodegenStep(projectRoot, appRoot, reactNativeRoot, args.skipCodegen);
|
|
1173
|
+
log('Generating build/generated/autolinking/Package.swift...');
|
|
1174
|
+
try {
|
|
1175
|
+
generateAutolinking([
|
|
1176
|
+
'--app-root',
|
|
1177
|
+
appRoot,
|
|
1178
|
+
'--react-native-root',
|
|
1179
|
+
reactNativeRoot,
|
|
1180
|
+
]);
|
|
1181
|
+
} catch (e) {
|
|
1182
|
+
if (e instanceof MissingManifestError) {
|
|
1183
|
+
// Per-dep `error:` lines already printed by the autolinker. This happens
|
|
1184
|
+
// on init/update when the user declined the scaffold prompt — surface it
|
|
1185
|
+
// as a hard failure (exit 2) directing them to scaffold.
|
|
1186
|
+
process.exitCode = 2;
|
|
1187
|
+
} else {
|
|
1188
|
+
logError(`generate-spm-autolinking.js failed: ${e.message}`);
|
|
1189
|
+
process.exitCode = 1;
|
|
1190
|
+
}
|
|
1191
|
+
return;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
const remote = remotePackageConfig(appRoot);
|
|
1195
|
+
if (remote != null) {
|
|
1196
|
+
log(`Remote ReactNative package: ${remote.url} @ ${remote.version}`);
|
|
1197
|
+
}
|
|
1198
|
+
let artifactDirs;
|
|
1199
|
+
try {
|
|
1200
|
+
artifactDirs = await ensureBothArtifactFlavors(args, version);
|
|
1201
|
+
} catch (e) {
|
|
1202
|
+
logError(`Artifact setup failed: ${e.message}`);
|
|
1203
|
+
process.exitCode = 1;
|
|
1204
|
+
return;
|
|
1205
|
+
}
|
|
1206
|
+
try {
|
|
1207
|
+
generateXcframeworksPackage(
|
|
1208
|
+
args,
|
|
1209
|
+
appRoot,
|
|
1210
|
+
reactNativeRoot,
|
|
1211
|
+
version,
|
|
1212
|
+
artifactDirs,
|
|
1213
|
+
);
|
|
1214
|
+
} catch (e) {
|
|
1215
|
+
logError(`generate-spm-package.js failed: ${e.message}`);
|
|
1216
|
+
process.exitCode = 1;
|
|
1217
|
+
return;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
// (Re)install the static codegen Package.swift template once build/generated/ios exists.
|
|
1221
|
+
installSpmCodegenTemplate(appRoot, reactNativeRoot, {log});
|
|
1222
|
+
|
|
1223
|
+
// Build the per-app generated-headers farm (vended as the ReactAppHeaders
|
|
1224
|
+
// SPM target inside the codegen package). React core headers need no trees
|
|
1225
|
+
// — they are vended by invariant SwiftPM compile products. The
|
|
1226
|
+
// generated manifests are fully declarative (fixed-relative package paths),
|
|
1227
|
+
// so no path-locator JSON is written.
|
|
1228
|
+
buildPerAppHeaderTree(appRoot, {log});
|
|
1229
|
+
|
|
1230
|
+
// First-time setup only adds the gitignore entries on `add`.
|
|
1231
|
+
if (action === 'add') {
|
|
1232
|
+
ensureGitignoreSpmEntries(appRoot);
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
// Xcodeproj setup: in-place injection into the existing project (the only
|
|
1236
|
+
// strategy — no rename, no from-scratch; git is the safety net).
|
|
1237
|
+
try {
|
|
1238
|
+
await setupXcodeproj(args, appRoot, reactNativeRoot, action);
|
|
1239
|
+
} catch (e) {
|
|
1240
|
+
logError(`xcodeproj setup failed: ${e.message}`);
|
|
1241
|
+
if (process.exitCode == null) {
|
|
1242
|
+
process.exitCode = 1;
|
|
1243
|
+
}
|
|
1244
|
+
return;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
finalizeArtifactPublication(appRoot);
|
|
1248
|
+
|
|
1249
|
+
logNextSteps(projectRoot, appRoot, args.productName);
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
if (require.main === module) {
|
|
1253
|
+
void main();
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
module.exports = {
|
|
1257
|
+
main,
|
|
1258
|
+
detectStandardRnLayoutRedirect,
|
|
1259
|
+
findInjectedXcodeproj,
|
|
1260
|
+
generateAutolinkingConfigOrFailClosed,
|
|
1261
|
+
parseArgs,
|
|
1262
|
+
resolveAction,
|
|
1263
|
+
resolveConfigCommandToPin,
|
|
1264
|
+
resolveExplicitConfigCommand,
|
|
1265
|
+
shouldAutoDeintegrate,
|
|
1266
|
+
ensureBothArtifactFlavors,
|
|
1267
|
+
};
|