@depup/react-native 0.86.2-depup.0 → 0.87.1-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/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedExports.js +22 -0
- package/Libraries/Animated/AnimatedExports.js.flow +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +126 -5
- 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/AnimatedNode.js +1 -1
- package/Libraries/Animated/nodes/AnimatedProps.js +27 -3
- package/Libraries/Animated/nodes/AnimatedValue.js +10 -2
- 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 +7 -9
- 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 +8 -4
- 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/RCTFontUtils.mm +1 -1
- 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 +6 -14
- 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 +47 -66
- 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 +83 -16
- 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 +75 -88
- package/scripts/setup-apple-spm.js +1283 -0
- package/scripts/spm/autolinking-plugins.js +411 -0
- package/scripts/spm/download-spm-artifacts.js +1467 -0
- package/scripts/spm/expand-spm-dependencies.js +435 -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 +2005 -0
- package/scripts/spm/generate-spm-package.js +314 -0
- package/scripts/spm/generate-spm-xcodeproj.js +2790 -0
- package/scripts/spm/read-podspec.js +695 -0
- package/scripts/spm/scaffold-package-swift.js +1247 -0
- package/scripts/spm/spm-pbxproj.js +784 -0
- package/scripts/spm/spm-types.js +546 -0
- package/scripts/spm/spm-utils.js +760 -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 +108 -4
- 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 +6 -3
- package/types_generated/Libraries/Animated/nodes/AnimatedValue.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,1247 @@
|
|
|
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
|
+
/*::
|
|
14
|
+
import type {
|
|
15
|
+
AutolinkedDep,
|
|
16
|
+
AutolinkingIosPlatform,
|
|
17
|
+
PodspecModel,
|
|
18
|
+
ScaffoldResult,
|
|
19
|
+
SpmScaffoldSpec,
|
|
20
|
+
} from './spm-types';
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* scaffold-package-swift.js — generates a `Package.swift` into
|
|
25
|
+
* `node_modules/<dep>/` for community RN libraries that don't ship SPM
|
|
26
|
+
* support. The autolinker's existing `isSelfManagedPackage` check
|
|
27
|
+
* (generate-spm-autolinking.js, AUTOGEN_MARKER) treats these scaffolded
|
|
28
|
+
* files as self-managed and references them directly from the aggregator —
|
|
29
|
+
* no autolinker changes required.
|
|
30
|
+
*
|
|
31
|
+
* Three layers:
|
|
32
|
+
* - translatePodspecToSpmTarget(model, dep): pure translation
|
|
33
|
+
* - emitScaffoldedPackageSwift(spec, ctx): pure Swift emission
|
|
34
|
+
* - scaffoldPackageSwiftForDep(dep, ctx): I/O + skip-rule + write
|
|
35
|
+
* - scaffoldAll(opts): orchestrator over autolinking.json
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
const {
|
|
39
|
+
SpmNameCollisionError,
|
|
40
|
+
defaultReadConfig,
|
|
41
|
+
defaultResolveDep,
|
|
42
|
+
expandSpmDependencies,
|
|
43
|
+
} = require('./expand-spm-dependencies');
|
|
44
|
+
const {expandSpmSourceGlobs} = require('./generate-spm-autolinking');
|
|
45
|
+
const {readPodspec} = require('./read-podspec');
|
|
46
|
+
const {
|
|
47
|
+
REACT_CODEGEN_PACKAGE_NAME,
|
|
48
|
+
REACT_CODEGEN_PRODUCTS,
|
|
49
|
+
REACT_NATIVE_PACKAGE_NAME,
|
|
50
|
+
REACT_NATIVE_PRODUCTS,
|
|
51
|
+
SCAFFOLDER_MARKER,
|
|
52
|
+
makeLogger,
|
|
53
|
+
remotePackageConfig,
|
|
54
|
+
toSwiftName,
|
|
55
|
+
} = require('./spm-utils');
|
|
56
|
+
const fs = require('fs');
|
|
57
|
+
const path = require('path');
|
|
58
|
+
|
|
59
|
+
const {log} = makeLogger('scaffold-package-swift');
|
|
60
|
+
|
|
61
|
+
// SCAFFOLDER_MARKER lives in spm-utils.js (shared, no import cycle). It must NOT
|
|
62
|
+
// contain the autolinker's AUTOGEN_MARKER ('// AUTO-GENERATED by
|
|
63
|
+
// scripts/generate-spm-autolinking.js') — that marker is what the autolinker
|
|
64
|
+
// uses to tell self-managed deps from its own synth output. Our marker is
|
|
65
|
+
// recognized by the scaffolder itself (skip-rule), but invisible to the
|
|
66
|
+
// autolinker (treated as self-managed).
|
|
67
|
+
|
|
68
|
+
// Bump when the emitter's output format changes in a way that requires
|
|
69
|
+
// re-scaffolding existing files (rather than just being a content drift the
|
|
70
|
+
// cache-slot label already handles). v2: swift-tools-version moved to
|
|
71
|
+
// line 1 — pre-v2 scaffolds emit it on a later line, which recent Xcode
|
|
72
|
+
// rejects with "Swift tools version 3.1.0 ... no longer supported". v4: the
|
|
73
|
+
// single `let rnHeaders = appRoot + "/.../ReactHeadersAll"` split into the two
|
|
74
|
+
// `rnCoreHeaders` / `appHeaders` lets (merged tree replaced by two trees), so
|
|
75
|
+
// pre-v4 scaffolds reference a tree that is no longer materialized. v5:
|
|
76
|
+
// header resolution moved to product dependencies (ReactNativeHeaders +
|
|
77
|
+
// ReactAppHeaders binary/headers targets) — the rnCoreHeaders/appHeaders
|
|
78
|
+
// trees no longer exist, so pre-v5 scaffolds carry dead lets and would break
|
|
79
|
+
// if anything still referenced them. v7: the runtime appRoot walker and the
|
|
80
|
+
// siblingPath helper are gone — package paths are plain relative strings
|
|
81
|
+
// computed at scaffold time (the walker anchored on
|
|
82
|
+
// build/xcframeworks/Package.swift, which remote mode no longer writes).
|
|
83
|
+
//
|
|
84
|
+
// Skip-rule contract: when an existing file's version is < this constant,
|
|
85
|
+
// the scaffolder regenerates regardless of --force (the bump implies the
|
|
86
|
+
// existing file is broken under current tooling). A file with the marker
|
|
87
|
+
// but no version line is treated as v1.
|
|
88
|
+
// v8: relative app paths (codegen / xcframeworks) are now computed from the
|
|
89
|
+
// autolinker's libs/<SwiftName> symlink location instead of the real dep.root,
|
|
90
|
+
// fixing a doubled-path resolution failure on fresh SwiftPM resolves.
|
|
91
|
+
// v9: header search paths derived from each subspec's header_mappings_dir
|
|
92
|
+
// (dirname) so namespaced includes (`<reanimated/...>`) resolve. v10:
|
|
93
|
+
// publicHeadersPath derived from the header_mappings_dir namespace root so a
|
|
94
|
+
// package exposes `<namespace/...>` to dependents; pod-style sibling deps
|
|
95
|
+
// (reanimated's `s.dependency "RNWorklets"`) wired to their npm package. v11:
|
|
96
|
+
// sibling .package path uses the libs/<SwiftName> symlink name, not the npm
|
|
97
|
+
// name (fixes "package ... doesn't exist" on resolve). v12: preprocessor
|
|
98
|
+
// defines from pod_target_xcconfig emitted as `.define(...)`. v13: ObjC(++)
|
|
99
|
+
// targets get an ambient-import prefix header (Foundation/UIKit) `-include`d,
|
|
100
|
+
// replacing CocoaPods' generated prefix.pch. v18: React-core deps also get
|
|
101
|
+
// the ReactNativeDependenciesHeaders product (ReactNativeHeaders went
|
|
102
|
+
// pure-RN; folly/glog/boost/... now come from the deps sidecar);
|
|
103
|
+
// publicHeadersPath falls back to "." for root-level-source podspecs
|
|
104
|
+
// (`s.source_files = "*.{h,m,mm}"`) instead of SPM's nonexistent `include/`.
|
|
105
|
+
// v19: scaffolded C++ targets carry DEBUG/NDEBUG config defines so their Fabric
|
|
106
|
+
// ABI matches the prebuilt React.framework (Release strips DebugStringConvertible
|
|
107
|
+
// under NDEBUG). Bumped so existing scaffolds regenerate with the defines.
|
|
108
|
+
const SCAFFOLDER_VERSION = 19;
|
|
109
|
+
const SCAFFOLDER_VERSION_LINE_RE = /^\/\/ AUTO-SCAFFOLDED-VERSION: (\d+)$/m;
|
|
110
|
+
|
|
111
|
+
const AUTOGEN_MARKER =
|
|
112
|
+
'// AUTO-GENERATED by scripts/generate-spm-autolinking.js';
|
|
113
|
+
|
|
114
|
+
// CocoaPods auto-generates a `<Target>-prefix.pch` that imports Foundation +
|
|
115
|
+
// UIKit into every ObjC translation unit, so pod sources can use NSThread /
|
|
116
|
+
// dispatch / UIKit symbols without an explicit import. SPM has no prefix-header
|
|
117
|
+
// mechanism, so we emit this file at the dep root and `-include` it on the
|
|
118
|
+
// target (cSettings + cxxSettings) to reproduce that ambient import. The
|
|
119
|
+
// `__OBJC__` guard makes it inert for plain C/C++ sources, and UIKit is
|
|
120
|
+
// `__has_include`-guarded for platforms that lack it.
|
|
121
|
+
// The config-gated C++ defines the prebuilt React.framework is built with (see
|
|
122
|
+
// packages/react-native/Package.swift). Fabric C++ in autolinked deps must
|
|
123
|
+
// compile with the SAME NDEBUG state or its DebugStringConvertible / ShadowNode
|
|
124
|
+
// ABI diverges from the Release React.framework and the link fails.
|
|
125
|
+
const REACT_CXX_CONFIG_DEFINES = [
|
|
126
|
+
'.define("DEBUG", .when(configuration: .debug))',
|
|
127
|
+
'.define("NDEBUG", .when(configuration: .release))',
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
const SCAFFOLD_PREFIX_HEADER = 'react-native-spm-prefix.h';
|
|
131
|
+
const SCAFFOLD_PREFIX_HEADER_CONTENTS = `// AUTO-SCAFFOLDED by react-native spm scaffold — mirrors CocoaPods' default
|
|
132
|
+
// prefix header so ObjC sources that rely on an implicit Foundation/UIKit
|
|
133
|
+
// import compile under SPM (which has no prefix-header mechanism). Safe to
|
|
134
|
+
// delete + regenerate via \`npx react-native spm scaffold\`.
|
|
135
|
+
#ifdef __OBJC__
|
|
136
|
+
#import <Foundation/Foundation.h>
|
|
137
|
+
#if __has_include(<UIKit/UIKit.h>)
|
|
138
|
+
#import <UIKit/UIKit.h>
|
|
139
|
+
#endif
|
|
140
|
+
#endif
|
|
141
|
+
`;
|
|
142
|
+
|
|
143
|
+
// Names of deps the scaffolder always refuses to touch — `react-native`
|
|
144
|
+
// itself is handled by the xcframework subpackage, never as an autolinked
|
|
145
|
+
// target.
|
|
146
|
+
const NEVER_SCAFFOLD /*: ReadonlySet<string> */ = new Set(['react-native']);
|
|
147
|
+
|
|
148
|
+
// React-core / React-Fabric / etc. dependency names collapse to a single
|
|
149
|
+
// invariant React header-product set. The app target links the prebuilt
|
|
150
|
+
// runtime frameworks outside SwiftPM. This
|
|
151
|
+
// list matches what `install_modules_dependencies(s)` materializes plus
|
|
152
|
+
// common podspec hand-rolled additions.
|
|
153
|
+
const REACT_CORE_DEP_PREFIXES = [
|
|
154
|
+
'React-',
|
|
155
|
+
'React_',
|
|
156
|
+
'ReactCommon',
|
|
157
|
+
'RCT-Folly',
|
|
158
|
+
'RCT',
|
|
159
|
+
'glog',
|
|
160
|
+
'boost',
|
|
161
|
+
'fmt',
|
|
162
|
+
'DoubleConversion',
|
|
163
|
+
'Yoga',
|
|
164
|
+
'hermes-engine',
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
function isReactCoreDep(name /*: string */) /*: boolean */ {
|
|
168
|
+
return REACT_CORE_DEP_PREFIXES.some(p => name.startsWith(p));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// True when the dep ships a `codegenConfig` in package.json — RN's standard
|
|
172
|
+
// marker that the library participates in the New Architecture / codegen. Such
|
|
173
|
+
// a lib's Fabric sources include the app-generated component headers
|
|
174
|
+
// (`<react/renderer/components/<name>/ShadowNodes.h>` etc.), which are vended by
|
|
175
|
+
// the per-app React-GeneratedCode package — so it implicitly depends on React
|
|
176
|
+
// core even when its podspec only wires that via `install_modules_dependencies`
|
|
177
|
+
// (which we strip). Safe/quiet: a missing or unparseable package.json → false.
|
|
178
|
+
function depHasCodegenConfig(depRoot /*: string */) /*: boolean */ {
|
|
179
|
+
try {
|
|
180
|
+
const pkg = JSON.parse(
|
|
181
|
+
fs.readFileSync(path.join(depRoot, 'package.json'), 'utf8'),
|
|
182
|
+
);
|
|
183
|
+
return pkg != null && pkg.codegenConfig != null;
|
|
184
|
+
} catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Every subdirectory (relative to depRoot) under depRoot/base, recursively —
|
|
190
|
+
// used to expand a CocoaPods `path/**` recursive header search path into the
|
|
191
|
+
// concrete dirs SPM needs (SPM has no recursive search-path syntax). Skips
|
|
192
|
+
// VCS / build / dependency noise.
|
|
193
|
+
function collectSubdirs(
|
|
194
|
+
depRoot /*: string */,
|
|
195
|
+
base /*: string */,
|
|
196
|
+
) /*: Array<string> */ {
|
|
197
|
+
const SKIP /*: Set<string> */ = new Set([
|
|
198
|
+
'node_modules',
|
|
199
|
+
'Pods',
|
|
200
|
+
'build',
|
|
201
|
+
'.git',
|
|
202
|
+
]);
|
|
203
|
+
const out /*: Array<string> */ = [];
|
|
204
|
+
const walk = (absDir /*: string */, relDir /*: string */) => {
|
|
205
|
+
let entries /*: Array<{name: string, isDirectory(): boolean}> */ = [];
|
|
206
|
+
try {
|
|
207
|
+
// $FlowFixMe[incompatible-type] Dirent typing
|
|
208
|
+
entries = fs.readdirSync(absDir, {withFileTypes: true});
|
|
209
|
+
} catch {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
for (const e of entries) {
|
|
213
|
+
// $FlowFixMe[incompatible-type] Dirent.name is string|Buffer in stubs
|
|
214
|
+
const name /*: string */ = e.name;
|
|
215
|
+
if (!e.isDirectory() || name.startsWith('.') || SKIP.has(name)) continue;
|
|
216
|
+
const rel = relDir === '.' ? name : `${relDir}/${name}`;
|
|
217
|
+
out.push(rel);
|
|
218
|
+
walk(path.join(absDir, name), rel);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
walk(path.join(depRoot, base), base === '.' ? '.' : base);
|
|
222
|
+
return out;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// ---------------------------------------------------------------------------
|
|
226
|
+
// Translation
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Pure: turns a flattened PodspecModel into an SpmScaffoldSpec the emitter
|
|
231
|
+
* can consume. Substitutes Xcode build-setting tokens (`$(PODS_TARGET_SRCROOT)`)
|
|
232
|
+
* against the dep root, buckets dependencies, drops unknown tokens with a
|
|
233
|
+
* warning.
|
|
234
|
+
*/
|
|
235
|
+
function translatePodspecToSpmTarget(
|
|
236
|
+
model /*: PodspecModel */,
|
|
237
|
+
dep /*: AutolinkedDep */,
|
|
238
|
+
// Maps a podspec name (e.g. "RNWorklets") to the npm package name of an
|
|
239
|
+
// autolinked sibling (e.g. "react-native-worklets"). Lets us wire a
|
|
240
|
+
// `s.dependency "RNWorklets"` — a pod-style name the `react-native-*`
|
|
241
|
+
// heuristic can't recognize — to the right sibling package. Empty by default.
|
|
242
|
+
podToNpm /*: Map<string, string> */ = new Map(),
|
|
243
|
+
// npm name → resolved Swift name for every autolinked dep, so a sibling
|
|
244
|
+
// reference honors that sibling's `spm.name` instead of re-deriving it.
|
|
245
|
+
swiftNameByNpm /*: Map<string, string> */ = new Map(),
|
|
246
|
+
) /*: SpmScaffoldSpec */ {
|
|
247
|
+
const warnings = [...model.warnings];
|
|
248
|
+
|
|
249
|
+
// Swift target name: whatever the autolinker resolved for this dep — its
|
|
250
|
+
// `spm.name` override when set, else toSwiftName(npm-name). The autolinker
|
|
251
|
+
// registers the dep under that name in its aggregator (and in any sibling
|
|
252
|
+
// spm.dependencies refs), so the scaffolded Package.swift's product/library
|
|
253
|
+
// name must match it exactly — otherwise SPM resolution fails with a name
|
|
254
|
+
// mismatch on `.product(name: "X", package: "X")`.
|
|
255
|
+
//
|
|
256
|
+
// The podspec's `header_dir` is captured separately: when it changes the
|
|
257
|
+
// include surface (e.g. `<reanimated/...>` instead of `<ReactNativeReanimated/...>`),
|
|
258
|
+
// header resolution already works via the -I flags from headerSearchPaths
|
|
259
|
+
// (path-style includes like safe-area-context's
|
|
260
|
+
// `<react/renderer/components/safeareacontext/...>` resolve through
|
|
261
|
+
// `-I common/cpp/`). Module-style includes that NEED the target name to
|
|
262
|
+
// match (e.g. reanimated's `<reanimated/X.h>` via SwiftPM's auto-generated
|
|
263
|
+
// module map) are what `spm.name` is for.
|
|
264
|
+
const swiftName = dep.swiftName ?? toSwiftName(dep.name);
|
|
265
|
+
|
|
266
|
+
// Header search paths — substitute Xcode build-setting tokens against the
|
|
267
|
+
// dep root. Anything we can't substitute is dropped + warned (avoids
|
|
268
|
+
// emitting `$(SOMETHING)` literally into the Swift file).
|
|
269
|
+
const headerSearchPaths /*: Array<string> */ = [];
|
|
270
|
+
const addSearchPath = (p /*: string */) => {
|
|
271
|
+
if (p.length > 0 && !headerSearchPaths.includes(p)) {
|
|
272
|
+
headerSearchPaths.push(p);
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
for (const raw of model.headerSearchPaths) {
|
|
276
|
+
let substituted = raw
|
|
277
|
+
.replace(/\$\(PODS_TARGET_SRCROOT\)/g, '.')
|
|
278
|
+
.replace(/\$\{PODS_TARGET_SRCROOT\}/g, '.');
|
|
279
|
+
if (/\$[({]/.test(substituted)) {
|
|
280
|
+
warnings.push(
|
|
281
|
+
`Dropped HEADER_SEARCH_PATHS entry "${raw}" — contains unresolved Xcode token. ` +
|
|
282
|
+
`Add it manually if needed.`,
|
|
283
|
+
);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
// CocoaPods `path/**` (or `/*`) = recursive search. SPM has no recursive
|
|
287
|
+
// search-path syntax, so add the base dir + every subdirectory under it.
|
|
288
|
+
const recursive = /\/\*\*?$/.test(substituted);
|
|
289
|
+
substituted = substituted
|
|
290
|
+
.replace(/\/\*\*?$/, '') // strip the glob marker
|
|
291
|
+
.replace(/\/{2,}/g, '/'); // collapse `cpp//` → `cpp/`
|
|
292
|
+
// Strip leading "./" (emitter prefixes with the target path) + trailing "/".
|
|
293
|
+
const base = substituted
|
|
294
|
+
.replace(/^\.\//, '')
|
|
295
|
+
.replace(/^\//, '')
|
|
296
|
+
.replace(/\/$/, '');
|
|
297
|
+
addSearchPath(base === '' ? '.' : base);
|
|
298
|
+
if (recursive) {
|
|
299
|
+
for (const sub of collectSubdirs(dep.root, base === '' ? '.' : base)) {
|
|
300
|
+
addSearchPath(sub);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// header_mappings_dir → search path. CocoaPods exposes a subspec's headers
|
|
306
|
+
// under `<basename(mappings_dir)>/...` by copying them into Pods/Headers
|
|
307
|
+
// preserving structure relative to the mappings dir. SPM has no such copy
|
|
308
|
+
// step, so namespaced includes like `<reanimated/apple/sensor/X.h>` (header
|
|
309
|
+
// physically at `apple/reanimated/apple/sensor/X.h`, mappings dir
|
|
310
|
+
// `apple/reanimated`) only resolve if the mappings dir's PARENT (`apple`) is
|
|
311
|
+
// on the search path. Add dirname() of every subspec's mappings dir.
|
|
312
|
+
for (const mappingsDir of model.headerMappingsDirs) {
|
|
313
|
+
const parent = path.posix.dirname(mappingsDir.replace(/^\.\//, ''));
|
|
314
|
+
// dirname of a single-segment dir is "." (root) — already implicitly
|
|
315
|
+
// searched; skip it and anything that doesn't exist on disk.
|
|
316
|
+
if (
|
|
317
|
+
parent.length > 0 &&
|
|
318
|
+
parent !== '.' &&
|
|
319
|
+
!headerSearchPaths.includes(parent) &&
|
|
320
|
+
fs.existsSync(path.join(dep.root, parent))
|
|
321
|
+
) {
|
|
322
|
+
headerSearchPaths.push(parent);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Bucket dependencies. React-Core / React-jsi / RCT-Folly / glog etc. ALL
|
|
327
|
+
// collapse to the invariant React header products
|
|
328
|
+
// reference because they're bundled in the prebuilt React.xcframework.
|
|
329
|
+
// Sibling RN libs (autolinked or self-managed deps) flow through the
|
|
330
|
+
// existing spm-deps mechanism. Unknown names are dropped with a warning.
|
|
331
|
+
let coreReactNative = false;
|
|
332
|
+
const siblingNames /*: Array<string> */ = [];
|
|
333
|
+
const selfPodspecName = model.name;
|
|
334
|
+
for (const depName of model.dependencies) {
|
|
335
|
+
// Cross-subspec refs like "react-native-safe-area-context/common" are a
|
|
336
|
+
// CocoaPods construct for one subspec depending on another from the
|
|
337
|
+
// SAME podspec. After flattenSubspecs has merged everything into one
|
|
338
|
+
// target the subspec ref is meaningless — drop silently.
|
|
339
|
+
if (depName.includes('/') && depName.startsWith(`${selfPodspecName}/`)) {
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
const podSibling = podToNpm.get(depName.split('/')[0]);
|
|
343
|
+
if (isReactCoreDep(depName)) {
|
|
344
|
+
coreReactNative = true;
|
|
345
|
+
} else if (depName.startsWith('react-native-')) {
|
|
346
|
+
// Generic cross-subspec ref guard for any "package/subspec" form.
|
|
347
|
+
const baseName = depName.split('/')[0];
|
|
348
|
+
if (!siblingNames.includes(baseName)) {
|
|
349
|
+
siblingNames.push(baseName);
|
|
350
|
+
}
|
|
351
|
+
} else if (podSibling != null && podSibling !== dep.name) {
|
|
352
|
+
// A pod-style dependency name (e.g. reanimated's `s.dependency
|
|
353
|
+
// "RNWorklets"`) that resolves to an autolinked sibling's npm package
|
|
354
|
+
// (react-native-worklets). Wire it as a sibling .package/.product so
|
|
355
|
+
// the dep's cross-package includes (`<worklets/...>`) resolve.
|
|
356
|
+
if (!siblingNames.includes(podSibling)) {
|
|
357
|
+
siblingNames.push(podSibling);
|
|
358
|
+
}
|
|
359
|
+
} else {
|
|
360
|
+
// Could be a non-RN dep ("MMKV", "AFNetworking"). The scaffolder
|
|
361
|
+
// doesn't know how to wire those — surface a warning so user can
|
|
362
|
+
// edit the generated Package.swift.
|
|
363
|
+
warnings.push(
|
|
364
|
+
`Unknown dependency "${depName}" — not wired into the scaffolded Package.swift. Edit manually if needed.`,
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// New-Architecture libraries declare their React-core dependency via the
|
|
370
|
+
// `install_modules_dependencies(s)` podspec helper (which auto-adds
|
|
371
|
+
// React-Core / React-RCTFabric / React-Codegen), NOT an explicit
|
|
372
|
+
// `s.dependency "React-Core"`. We strip that helper when evaluating the
|
|
373
|
+
// podspec, so the React-core dependency never surfaces in model.dependencies
|
|
374
|
+
// and `coreReactNative` would stay false. The authoritative, RN-standard
|
|
375
|
+
// marker for "this lib participates in the New Architecture / codegen" is a
|
|
376
|
+
// `codegenConfig` block in package.json — when present, the app's codegen has
|
|
377
|
+
// generated `react/renderer/components/<name>/{ShadowNodes,Props,…}.h` that
|
|
378
|
+
// the lib's Fabric sources include via angle brackets. Those generated
|
|
379
|
+
// headers live in the per-app React-GeneratedCode package, so the lib must
|
|
380
|
+
// depend on it (and, transitively, on React core). Treat codegenConfig as
|
|
381
|
+
// an implicit React-core dependency.
|
|
382
|
+
// `codegenConfig` only marks Fabric/New-Arch libraries. A plain ObjC module
|
|
383
|
+
// (e.g. rn-tester's TestLibrary*) that wires React core solely through
|
|
384
|
+
// `install_modules_dependencies(s)` has no codegenConfig — but the helper's
|
|
385
|
+
// presence is itself an authoritative "depends on React core" signal, so
|
|
386
|
+
// treat it the same way.
|
|
387
|
+
if (
|
|
388
|
+
!coreReactNative &&
|
|
389
|
+
(depHasCodegenConfig(dep.root) ||
|
|
390
|
+
model.usesInstallModulesDependencies === true)
|
|
391
|
+
) {
|
|
392
|
+
coreReactNative = true;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// SPM's `sources:` field does NOT accept CocoaPods-style globs — it wants
|
|
396
|
+
// a list of explicit file paths (relative to the target's `path:`).
|
|
397
|
+
// Expand the podspec globs against the actual filesystem so the emitted
|
|
398
|
+
// Package.swift parses cleanly.
|
|
399
|
+
let expandedSources /*: Array<string> */ = [];
|
|
400
|
+
try {
|
|
401
|
+
expandedSources = expandSpmSourceGlobs(dep.root, model.sourceFiles);
|
|
402
|
+
} catch (e) {
|
|
403
|
+
warnings.push(
|
|
404
|
+
`Source glob expansion failed (${e.message}); emitting raw globs — SPM will likely reject them.`,
|
|
405
|
+
);
|
|
406
|
+
expandedSources = model.sourceFiles;
|
|
407
|
+
}
|
|
408
|
+
// Strip files matching exclude_files (podspec's negation list).
|
|
409
|
+
if (model.excludeFiles.length > 0) {
|
|
410
|
+
try {
|
|
411
|
+
// $FlowFixMe[untyped-import] micromatch has no types
|
|
412
|
+
const micromatch = require('micromatch');
|
|
413
|
+
const isExcluded = micromatch.matcher(model.excludeFiles);
|
|
414
|
+
expandedSources = expandedSources.filter(f => !isExcluded(f));
|
|
415
|
+
} catch (e) {
|
|
416
|
+
warnings.push(
|
|
417
|
+
`exclude_files filtering failed (${e.message}); keeping all sources.`,
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
// Never self-ingest scaffold artifacts: a re-scaffold runs with the
|
|
422
|
+
// previous run's output on disk, and root-level podspec globs sweep it
|
|
423
|
+
// into sources — `*.{h,...,swift}` matches Package.swift itself, whose
|
|
424
|
+
// `.swift` extension then trips the mixed-language gate into DELETING the
|
|
425
|
+
// manifest it just wrote (alternating scaffold/self-destruct runs); the
|
|
426
|
+
// prefix header and the include/ shim mirror would similarly feed back.
|
|
427
|
+
expandedSources = expandedSources.filter(
|
|
428
|
+
f =>
|
|
429
|
+
f !== SCAFFOLD_PREFIX_HEADER &&
|
|
430
|
+
f !== 'Package.swift' &&
|
|
431
|
+
!f.startsWith('include/'),
|
|
432
|
+
);
|
|
433
|
+
|
|
434
|
+
// Header-map emulation: CocoaPods builds a header map (USE_HEADERMAP=YES by
|
|
435
|
+
// default) so a source can `#import "Foo.h"` by bare name regardless of which
|
|
436
|
+
// subdirectory Foo.h lives in. SPM has no header map, so add every directory
|
|
437
|
+
// that contains a header to the search path. Covers libs (e.g. svg) that
|
|
438
|
+
// spread flat-named headers across many subdirs.
|
|
439
|
+
const headerFiles = expandedSources.filter(f => /\.(h|hh|hpp)$/i.test(f));
|
|
440
|
+
try {
|
|
441
|
+
for (const f of expandSpmSourceGlobs(dep.root, model.publicHeaderFiles)) {
|
|
442
|
+
if (/\.(h|hh|hpp)$/i.test(f)) headerFiles.push(f);
|
|
443
|
+
}
|
|
444
|
+
} catch {
|
|
445
|
+
// public_header_files globbing is best-effort — source_files usually
|
|
446
|
+
// already covers the headers.
|
|
447
|
+
}
|
|
448
|
+
for (const f of headerFiles) {
|
|
449
|
+
const d = path.posix.dirname(f);
|
|
450
|
+
addSearchPath(d === '' ? '.' : d);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// ObjC(++) sources may rely on CocoaPods' implicit prefix-header import of
|
|
454
|
+
// Foundation/UIKit. When present, emit + `-include` a prefix header (below).
|
|
455
|
+
// The prefix is `-include`d by bare name, so the dep root (".") must be on
|
|
456
|
+
// the header search path for clang to find it.
|
|
457
|
+
const needsObjCPrefix = expandedSources.some(f => /\.mm?$/.test(f));
|
|
458
|
+
if (needsObjCPrefix && !headerSearchPaths.includes('.')) {
|
|
459
|
+
headerSearchPaths.push('.');
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// SPM REQUIRES publicHeadersPath to be a real directory inside the target
|
|
463
|
+
// when the target compiles C-family sources (default is "include" which
|
|
464
|
+
// typically doesn't exist in a podspec-shaped dep). Pick the first
|
|
465
|
+
// existing prefix dir from public_header_files / source_files. The
|
|
466
|
+
// chosen dir doesn't need to be the include surface — path-style
|
|
467
|
+
// includes (`<react/renderer/.../X.h>`) resolve via headerSearchPaths
|
|
468
|
+
// instead. publicHeadersPath just has to point at a real dir containing
|
|
469
|
+
// some .h files so SPM accepts the target definition.
|
|
470
|
+
let publicHeadersPath /*: ?string */ = null;
|
|
471
|
+
// Prefer the namespace root (parent of a header_mappings_dir). SPM propagates
|
|
472
|
+
// a target's publicHeadersPath to DEPENDENT packages as a search path, so
|
|
473
|
+
// setting it to e.g. `Common/cpp` (parent of `Common/cpp/worklets`) is what
|
|
474
|
+
// lets a sibling package resolve `<worklets/...>`. Prefer a cross-platform
|
|
475
|
+
// (Common) dir — that holds the C++ API siblings consume — over a
|
|
476
|
+
// platform-specific (apple/) one.
|
|
477
|
+
const mappingsParents = model.headerMappingsDirs
|
|
478
|
+
.map(d => path.posix.dirname(d.replace(/^\.\//, '')))
|
|
479
|
+
.filter(
|
|
480
|
+
p => p.length > 0 && p !== '.' && fs.existsSync(path.join(dep.root, p)),
|
|
481
|
+
);
|
|
482
|
+
if (mappingsParents.length > 0) {
|
|
483
|
+
publicHeadersPath =
|
|
484
|
+
mappingsParents.find(p => /(?:^|\/)common(?:\/|$)/i.test(p)) ??
|
|
485
|
+
mappingsParents[0];
|
|
486
|
+
}
|
|
487
|
+
if (publicHeadersPath == null) {
|
|
488
|
+
for (const glob of [...model.publicHeaderFiles, ...model.sourceFiles]) {
|
|
489
|
+
const prefix = glob.split('/')[0];
|
|
490
|
+
if (
|
|
491
|
+
prefix.length > 0 &&
|
|
492
|
+
!prefix.includes('*') &&
|
|
493
|
+
fs.existsSync(path.join(dep.root, prefix))
|
|
494
|
+
) {
|
|
495
|
+
publicHeadersPath = prefix;
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
let namespacedShimHeaders /*: Array<string> */ = [];
|
|
501
|
+
if (publicHeadersPath == null) {
|
|
502
|
+
// Root-level podspecs (`s.source_files = "*.{h,m,mm}"`) keep their
|
|
503
|
+
// headers in the package root. CocoaPods exposes them to dependents as
|
|
504
|
+
// `#import <PodName/Header.h>` via header maps; SPM has no equivalent, so
|
|
505
|
+
// the scaffold writer mirrors them into a generated include/<SwiftName>/
|
|
506
|
+
// shim dir and publicHeadersPath points there (also fixing SPM's
|
|
507
|
+
// rejection over the nonexistent default `include/`).
|
|
508
|
+
const rootHeaders = expandedSources.filter(
|
|
509
|
+
f => f.endsWith('.h') && !f.includes('/'),
|
|
510
|
+
);
|
|
511
|
+
if (rootHeaders.length > 0) {
|
|
512
|
+
namespacedShimHeaders = rootHeaders;
|
|
513
|
+
publicHeadersPath = 'include';
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
if (publicHeadersPath == null) {
|
|
517
|
+
warnings.push(
|
|
518
|
+
`Could not infer publicHeadersPath from source globs. SPM may reject the target — add a publicHeadersPath manually to the scaffolded Package.swift.`,
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
const siblingSwiftNames /*: {[npmName: string]: string} */ = {};
|
|
523
|
+
for (const npmName of siblingNames) {
|
|
524
|
+
const resolved = swiftNameByNpm.get(npmName);
|
|
525
|
+
if (resolved != null) {
|
|
526
|
+
siblingSwiftNames[npmName] = resolved;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
return {
|
|
531
|
+
swiftName,
|
|
532
|
+
sources: expandedSources,
|
|
533
|
+
headerSearchPaths,
|
|
534
|
+
preprocessorDefines: model.preprocessorDefines,
|
|
535
|
+
needsObjCPrefix,
|
|
536
|
+
coreReactNative,
|
|
537
|
+
siblingNames,
|
|
538
|
+
siblingSwiftNames,
|
|
539
|
+
extraFrameworks: model.frameworks,
|
|
540
|
+
weakFrameworks: model.weakFrameworks,
|
|
541
|
+
compilerFlags: model.compilerFlags,
|
|
542
|
+
publicHeadersPath,
|
|
543
|
+
namespacedShimHeaders,
|
|
544
|
+
resources: model.resources,
|
|
545
|
+
warnings,
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// ---------------------------------------------------------------------------
|
|
550
|
+
// Swift emission
|
|
551
|
+
// ---------------------------------------------------------------------------
|
|
552
|
+
|
|
553
|
+
/*::
|
|
554
|
+
type EmitContext = {
|
|
555
|
+
// Identifier embedded as a comment so SPM's manifest hash bumps when the
|
|
556
|
+
// active xcframework slot changes (otherwise cached evaluations would
|
|
557
|
+
// keep pointing at the prior slot's headers).
|
|
558
|
+
cacheSlotLabel: ?string,
|
|
559
|
+
// Remote SPM package mode (url/version/identity) — see remotePackageConfig.
|
|
560
|
+
remote?: ?{url: string, version: string, identity: string},
|
|
561
|
+
// Relative path (posix, from the dep's package dir) to the app's codegen
|
|
562
|
+
// package (<appRoot>/build/generated/ios). Computed at scaffold time —
|
|
563
|
+
// safe because the file is re-scaffolded per app/cache slot, and any
|
|
564
|
+
// node_modules relayout implies a reinstall that drops the file anyway.
|
|
565
|
+
codegenPackageDir?: ?string,
|
|
566
|
+
// Relative path to the app's local xcframeworks package
|
|
567
|
+
// (<appRoot>/build/xcframeworks). Only referenced when remote == null.
|
|
568
|
+
localXcfwPackageDir?: ?string,
|
|
569
|
+
};
|
|
570
|
+
*/
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Renders the SpmScaffoldSpec to a complete Package.swift string suitable
|
|
574
|
+
* for writing into `node_modules/<dep>/`. Fully declarative: all package
|
|
575
|
+
* references are plain relative paths computed at scaffold time (no runtime
|
|
576
|
+
* discovery — the scaffolder knows both the dep dir and the app root, and
|
|
577
|
+
* re-scaffolds whenever either could have moved).
|
|
578
|
+
*/
|
|
579
|
+
function emitScaffoldedPackageSwift(
|
|
580
|
+
spec /*: SpmScaffoldSpec */,
|
|
581
|
+
ctx /*:: ?: EmitContext */ = {cacheSlotLabel: null, remote: null},
|
|
582
|
+
) /*: string */ {
|
|
583
|
+
const slotComment =
|
|
584
|
+
ctx.cacheSlotLabel != null ? `\n// Cache slot: ${ctx.cacheSlotLabel}` : '';
|
|
585
|
+
|
|
586
|
+
// React headers need NO search paths — they come from the React /
|
|
587
|
+
// ReactNativeHeaders binaryTargets and the ReactAppHeaders product (see
|
|
588
|
+
// the dependencies block below). Per-dep HEADER_SEARCH_PATHS from the
|
|
589
|
+
// podspec are emitted as `.headerSearchPath("<rel>")` so they resolve
|
|
590
|
+
// relative to `path:` ("." below). Custom podspec compiler flags keep
|
|
591
|
+
// using unsafeFlags (rare; surfaced verbatim).
|
|
592
|
+
const customFlagsCxx = spec.compilerFlags.map(f => `"${f}"`);
|
|
593
|
+
|
|
594
|
+
const headerSearchPathDirectives = spec.headerSearchPaths
|
|
595
|
+
.map(p => `.headerSearchPath("${p}")`)
|
|
596
|
+
.join(', ');
|
|
597
|
+
|
|
598
|
+
// Preprocessor defines → `.define("NAME", to: "VALUE", .when(...))`. The
|
|
599
|
+
// value is escaped as a Swift string literal because it may itself contain
|
|
600
|
+
// quotes (e.g. a string-literal macro `-DFOO="[A:false]"`).
|
|
601
|
+
const swiftStr = (s /*: string */) =>
|
|
602
|
+
`"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
603
|
+
const defineDirectives = (spec.preprocessorDefines ?? [])
|
|
604
|
+
.map(d => {
|
|
605
|
+
const toPart = d.value != null ? `, to: ${swiftStr(d.value)}` : '';
|
|
606
|
+
const condPart =
|
|
607
|
+
d.config === 'debug'
|
|
608
|
+
? ', .when(configuration: .debug)'
|
|
609
|
+
: d.config === 'release'
|
|
610
|
+
? ', .when(configuration: .release)'
|
|
611
|
+
: '';
|
|
612
|
+
return `.define(${swiftStr(d.name)}${toPart}${condPart})`;
|
|
613
|
+
})
|
|
614
|
+
.join(', ');
|
|
615
|
+
|
|
616
|
+
const settingsEntries = (extra /*: Array<string> */) => {
|
|
617
|
+
const parts = [
|
|
618
|
+
defineDirectives,
|
|
619
|
+
headerSearchPathDirectives,
|
|
620
|
+
...extra,
|
|
621
|
+
].filter(e => e.length > 0);
|
|
622
|
+
return `[${parts.join(', ')}]`;
|
|
623
|
+
};
|
|
624
|
+
// Force-include the ambient-import prefix header on ObjC(++) sources (the
|
|
625
|
+
// `__OBJC__` guard makes it a no-op for plain C/C++). `-include` resolves the
|
|
626
|
+
// bare name via the dep-root header search path (".", ensured in translate).
|
|
627
|
+
const prefixFlag = spec.needsObjCPrefix
|
|
628
|
+
? `.unsafeFlags(["-include", "${SCAFFOLD_PREFIX_HEADER}"])`
|
|
629
|
+
: '';
|
|
630
|
+
const cSettings = settingsEntries([prefixFlag].filter(e => e.length > 0));
|
|
631
|
+
const cxxSettings = settingsEntries(
|
|
632
|
+
[
|
|
633
|
+
prefixFlag,
|
|
634
|
+
...(customFlagsCxx.length > 0
|
|
635
|
+
? [`.unsafeFlags([${customFlagsCxx.join(', ')}])`]
|
|
636
|
+
: []),
|
|
637
|
+
// Match the prebuilt React.framework's config-gated C++ ABI. NDEBUG in
|
|
638
|
+
// Release strips DebugStringConvertible's vtable (and shifts the
|
|
639
|
+
// ShadowNode layout that inherits it), so a Fabric C++ target compiled
|
|
640
|
+
// WITHOUT NDEBUG fails to link against a Release React.framework. Mirrors
|
|
641
|
+
// packages/react-native/Package.swift's own C++ targets.
|
|
642
|
+
...REACT_CXX_CONFIG_DEFINES,
|
|
643
|
+
].filter(e => e.length > 0),
|
|
644
|
+
);
|
|
645
|
+
|
|
646
|
+
// Linker frameworks: defaults + podspec-declared extras + weak frameworks.
|
|
647
|
+
// Dedup on render so the user doesn't see duplicate UIKit lines.
|
|
648
|
+
const defaults = ['UIKit', 'Foundation', 'CoreGraphics'];
|
|
649
|
+
const linkedFrameworks = Array.from(
|
|
650
|
+
new Set([...defaults, ...spec.extraFrameworks]),
|
|
651
|
+
);
|
|
652
|
+
const linkerEntries = [
|
|
653
|
+
...linkedFrameworks.map(f => `.linkedFramework("${f}")`),
|
|
654
|
+
...spec.weakFrameworks.map(
|
|
655
|
+
f => `.linkedFramework("${f}", .when(platforms: [.iOS]))`,
|
|
656
|
+
),
|
|
657
|
+
];
|
|
658
|
+
|
|
659
|
+
// Dependencies block. Always declares ReactNative if any React-core dep
|
|
660
|
+
// was in the podspec; sibling RN deps come from autolinking's existing
|
|
661
|
+
// .package(path: ...) graph — we reference them by toSwiftName(npmName)
|
|
662
|
+
// since that's what the autolinker registers them under.
|
|
663
|
+
const packageDeps /*: Array<string> */ = [];
|
|
664
|
+
const targetDeps /*: Array<string> */ = [];
|
|
665
|
+
if (spec.coreReactNative) {
|
|
666
|
+
// Remote mode: React Native comes from the remote package identity (no
|
|
667
|
+
// app-layout knowledge). The per-app codegen package is generated INTO
|
|
668
|
+
// the app by definition, so it stays a path reference — relative,
|
|
669
|
+
// computed at scaffold time.
|
|
670
|
+
const remote = ctx.remote;
|
|
671
|
+
const rnLabel =
|
|
672
|
+
remote != null ? remote.identity : REACT_NATIVE_PACKAGE_NAME;
|
|
673
|
+
const codegenDir = ctx.codegenPackageDir;
|
|
674
|
+
if (codegenDir == null) {
|
|
675
|
+
throw new Error(
|
|
676
|
+
'emitScaffoldedPackageSwift: codegenPackageDir is required when the dep depends on React core.',
|
|
677
|
+
);
|
|
678
|
+
}
|
|
679
|
+
if (remote != null) {
|
|
680
|
+
packageDeps.push(
|
|
681
|
+
`.package(url: "${remote.url}", exact: "${remote.version}")`,
|
|
682
|
+
);
|
|
683
|
+
} else {
|
|
684
|
+
const xcfwDir = ctx.localXcfwPackageDir;
|
|
685
|
+
if (xcfwDir == null) {
|
|
686
|
+
throw new Error(
|
|
687
|
+
'emitScaffoldedPackageSwift: localXcfwPackageDir is required when no remote package is configured.',
|
|
688
|
+
);
|
|
689
|
+
}
|
|
690
|
+
packageDeps.push(
|
|
691
|
+
`.package(name: "${REACT_NATIVE_PACKAGE_NAME}", path: "${xcfwDir}")`,
|
|
692
|
+
);
|
|
693
|
+
}
|
|
694
|
+
packageDeps.push(
|
|
695
|
+
`.package(name: "${REACT_CODEGEN_PACKAGE_NAME}", path: "${codegenDir}")`,
|
|
696
|
+
);
|
|
697
|
+
for (const product of REACT_NATIVE_PRODUCTS) {
|
|
698
|
+
targetDeps.push(`.product(name: "${product}", package: "${rnLabel}")`);
|
|
699
|
+
}
|
|
700
|
+
for (const product of REACT_CODEGEN_PRODUCTS) {
|
|
701
|
+
targetDeps.push(
|
|
702
|
+
`.product(name: "${product}", package: "${REACT_CODEGEN_PACKAGE_NAME}")`,
|
|
703
|
+
);
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
for (const siblingName of spec.siblingNames) {
|
|
707
|
+
const swiftSibling =
|
|
708
|
+
spec.siblingSwiftNames?.[siblingName] ?? toSwiftName(siblingName);
|
|
709
|
+
// The autolinker references each self-managed (scaffolded) dep through a
|
|
710
|
+
// `libs/<SwiftName>` symlink, and SPM resolves a manifest's relative
|
|
711
|
+
// package paths against that symlink location — so a sibling lives at
|
|
712
|
+
// `../<SwiftName>` (NOT `../<npm-name>`, which would be `libs/<npm-name>`
|
|
713
|
+
// and not exist).
|
|
714
|
+
packageDeps.push(
|
|
715
|
+
`.package(name: "${swiftSibling}", path: "../${swiftSibling}")`,
|
|
716
|
+
);
|
|
717
|
+
targetDeps.push(
|
|
718
|
+
`.product(name: "${swiftSibling}", package: "${swiftSibling}")`,
|
|
719
|
+
);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// sources: emit only when the podspec declared them. If empty (regex-fallback
|
|
723
|
+
// podspec), no `sources:`/`exclude:` is emitted and SPM auto-scans the target
|
|
724
|
+
// dir — which for `path: "."` is the entire dep root. That is a known
|
|
725
|
+
// limitation of the regex-fallback path (the pod-ipc parse yields explicit
|
|
726
|
+
// sources); a future improvement could emit an `exclude:` list for the dep's
|
|
727
|
+
// example/test/build dirs.
|
|
728
|
+
const sourcesLine =
|
|
729
|
+
spec.sources.length > 0
|
|
730
|
+
? `\n sources: [\n${spec.sources.map(s => ` "${s}",`).join('\n')}\n ],`
|
|
731
|
+
: '';
|
|
732
|
+
|
|
733
|
+
const publicHeadersLine =
|
|
734
|
+
spec.publicHeadersPath != null
|
|
735
|
+
? `\n publicHeadersPath: "${spec.publicHeadersPath}",`
|
|
736
|
+
: '';
|
|
737
|
+
|
|
738
|
+
const resourcesLine =
|
|
739
|
+
spec.resources.length > 0
|
|
740
|
+
? `\n resources: [${spec.resources.map(r => `.copy("${r}")`).join(', ')}],`
|
|
741
|
+
: '';
|
|
742
|
+
|
|
743
|
+
const packageDepsBlock =
|
|
744
|
+
packageDeps.length > 0
|
|
745
|
+
? ` dependencies: [\n ${packageDeps.join(',\n ')},\n ],\n`
|
|
746
|
+
: '';
|
|
747
|
+
|
|
748
|
+
const targetDepsLine =
|
|
749
|
+
targetDeps.length > 0
|
|
750
|
+
? `\n dependencies: [${targetDeps.join(', ')}],`
|
|
751
|
+
: '';
|
|
752
|
+
|
|
753
|
+
return `// swift-tools-version: 6.0
|
|
754
|
+
${SCAFFOLDER_MARKER}
|
|
755
|
+
// AUTO-SCAFFOLDED-VERSION: ${SCAFFOLDER_VERSION}${slotComment}
|
|
756
|
+
// Edit the contents below if needed and re-run \`npx patch-package <dep-name>\`
|
|
757
|
+
// to persist across \`npm install\`. To regenerate from the podspec, remove
|
|
758
|
+
// this file (or just this marker) and re-run \`npx react-native spm scaffold\`.
|
|
759
|
+
//
|
|
760
|
+
// Package references are plain relative paths, computed when this file was
|
|
761
|
+
// scaffolded. They stay correct because the file is re-scaffolded per app
|
|
762
|
+
// and cache slot, and any node_modules relayout reinstalls this package
|
|
763
|
+
// (dropping the file) anyway.
|
|
764
|
+
|
|
765
|
+
import PackageDescription
|
|
766
|
+
|
|
767
|
+
let package = Package(
|
|
768
|
+
name: "${spec.swiftName}",
|
|
769
|
+
platforms: [.iOS(.v15)],
|
|
770
|
+
products: [
|
|
771
|
+
.library(name: "${spec.swiftName}", targets: ["${spec.swiftName}"]),
|
|
772
|
+
],
|
|
773
|
+
${packageDepsBlock} targets: [
|
|
774
|
+
.target(
|
|
775
|
+
name: "${spec.swiftName}",${targetDepsLine}
|
|
776
|
+
path: ".",${sourcesLine}${publicHeadersLine}${resourcesLine}
|
|
777
|
+
cSettings: ${cSettings},
|
|
778
|
+
cxxSettings: ${cxxSettings},
|
|
779
|
+
linkerSettings: [${linkerEntries.join(', ')}]
|
|
780
|
+
),
|
|
781
|
+
],
|
|
782
|
+
cxxLanguageStandard: .cxx20
|
|
783
|
+
)
|
|
784
|
+
`;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// ---------------------------------------------------------------------------
|
|
788
|
+
// Per-dep orchestrator
|
|
789
|
+
// ---------------------------------------------------------------------------
|
|
790
|
+
|
|
791
|
+
/*::
|
|
792
|
+
type ScaffoldContext = {
|
|
793
|
+
appRoot: string,
|
|
794
|
+
projectRoot: string,
|
|
795
|
+
reactNativeRoot: string,
|
|
796
|
+
// Forces overwrite of files carrying the scaffolder marker. Files
|
|
797
|
+
// WITHOUT the marker (user-edited, upstream-shipped) are never touched.
|
|
798
|
+
force: boolean,
|
|
799
|
+
// When true, no file is written — caller gets the would-be content and
|
|
800
|
+
// can preview.
|
|
801
|
+
dryRun: boolean,
|
|
802
|
+
// Slot label (e.g. "0.87.0-nightly-20260513-6e262624f/debug") embedded as
|
|
803
|
+
// a comment so SPM's manifest hash bumps on slot changes.
|
|
804
|
+
cacheSlotLabel: ?string,
|
|
805
|
+
// podspec-name → npm-name index over all autolinked deps, so pod-style
|
|
806
|
+
// `s.dependency` names (e.g. "RNWorklets") wire to the right sibling.
|
|
807
|
+
podToNpm?: Map<string, string>,
|
|
808
|
+
// npm-name → resolved Swift name over all autolinked deps, so sibling
|
|
809
|
+
// references honor each sibling's `spm.name`.
|
|
810
|
+
swiftNameByNpm?: Map<string, string>,
|
|
811
|
+
remote: ?{url: string, version: string, identity: string},
|
|
812
|
+
};
|
|
813
|
+
*/
|
|
814
|
+
|
|
815
|
+
/**
|
|
816
|
+
* Decides whether to scaffold one dep, runs the translation + emission,
|
|
817
|
+
* writes the file (unless dryRun). Pure path/skip logic — all I/O via fs.
|
|
818
|
+
*/
|
|
819
|
+
function scaffoldPackageSwiftForDep(
|
|
820
|
+
dep /*: AutolinkedDep */,
|
|
821
|
+
ctx /*: ScaffoldContext */,
|
|
822
|
+
) /*: ScaffoldResult */ {
|
|
823
|
+
const depName = dep.name;
|
|
824
|
+
|
|
825
|
+
if (NEVER_SCAFFOLD.has(depName)) {
|
|
826
|
+
return {
|
|
827
|
+
depName,
|
|
828
|
+
status: 'skipped-is-react-native',
|
|
829
|
+
reason: 'react-native itself is handled by the xcframework package.',
|
|
830
|
+
};
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
// ios platform missing → no native code to wrap.
|
|
834
|
+
if (dep.platforms.ios == null) {
|
|
835
|
+
return {
|
|
836
|
+
depName,
|
|
837
|
+
status: 'skipped-no-ios',
|
|
838
|
+
reason: 'autolinking.json has no ios platform entry.',
|
|
839
|
+
};
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
// Dep can opt out via its own react-native.config.js.
|
|
843
|
+
const cfg = defaultReadConfig(dep.root);
|
|
844
|
+
// $FlowFixMe[prop-missing] config has dynamic shape
|
|
845
|
+
if (cfg != null && cfg.spm != null && cfg.spm.scaffold === false) {
|
|
846
|
+
return {
|
|
847
|
+
depName,
|
|
848
|
+
status: 'skipped-opt-out',
|
|
849
|
+
reason: 'react-native.config.js sets spm.scaffold = false.',
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
const pkgSwiftPath = path.join(dep.root, 'Package.swift');
|
|
854
|
+
|
|
855
|
+
// A self-managed Package.swift may live either at the dep root (legacy
|
|
856
|
+
// convention) or inside ios/ (preferred for community RN libs that want
|
|
857
|
+
// their npm-package root free of SPM artifacts). If a nested manifest
|
|
858
|
+
// exists and is user-authored, skip — writing a stray root manifest would
|
|
859
|
+
// cause the autolinker to prefer the wrong file.
|
|
860
|
+
const nestedPkgSwiftPath = path.join(dep.root, 'ios', 'Package.swift');
|
|
861
|
+
if (!fs.existsSync(pkgSwiftPath) && fs.existsSync(nestedPkgSwiftPath)) {
|
|
862
|
+
const nested = fs.readFileSync(nestedPkgSwiftPath, 'utf8');
|
|
863
|
+
if (
|
|
864
|
+
!nested.includes(AUTOGEN_MARKER) &&
|
|
865
|
+
!nested.includes(SCAFFOLDER_MARKER)
|
|
866
|
+
) {
|
|
867
|
+
return {
|
|
868
|
+
depName,
|
|
869
|
+
status: 'skipped-self-managed',
|
|
870
|
+
reason:
|
|
871
|
+
'Existing ios/Package.swift was not produced by this scaffolder. ' +
|
|
872
|
+
'Leaving it alone.',
|
|
873
|
+
};
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
// Skip rules around existing files.
|
|
878
|
+
if (fs.existsSync(pkgSwiftPath)) {
|
|
879
|
+
const existing = fs.readFileSync(pkgSwiftPath, 'utf8');
|
|
880
|
+
if (existing.includes(AUTOGEN_MARKER)) {
|
|
881
|
+
return {
|
|
882
|
+
depName,
|
|
883
|
+
status: 'skipped-autogen',
|
|
884
|
+
reason:
|
|
885
|
+
'Existing Package.swift carries the autolinker AUTOGEN marker. ' +
|
|
886
|
+
'spm update will regenerate the synth wrapper.',
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
if (existing.includes(SCAFFOLDER_MARKER)) {
|
|
890
|
+
// Version bump → unconditional regen. A bumped SCAFFOLDER_VERSION
|
|
891
|
+
// implies the emitter's output format changed in a way that requires
|
|
892
|
+
// regenerating existing files; --force is not needed here.
|
|
893
|
+
const vMatch = existing.match(SCAFFOLDER_VERSION_LINE_RE);
|
|
894
|
+
const existingVersion = vMatch != null ? parseInt(vMatch[1], 10) : 1;
|
|
895
|
+
const versionStale = existingVersion < SCAFFOLDER_VERSION;
|
|
896
|
+
if (!ctx.force && !versionStale) {
|
|
897
|
+
// Slot label change is the other auto-regen trigger — bumps SPM's
|
|
898
|
+
// manifest hash so the cache-slot path gets re-resolved.
|
|
899
|
+
const m = existing.match(/^\/\/ Cache slot: (.+)$/m);
|
|
900
|
+
const existingSlot = m != null ? m[1] : null;
|
|
901
|
+
if (ctx.cacheSlotLabel == null || existingSlot === ctx.cacheSlotLabel) {
|
|
902
|
+
return {
|
|
903
|
+
depName,
|
|
904
|
+
status: 'skipped-scaffolder-marker',
|
|
905
|
+
reason:
|
|
906
|
+
'Already scaffolded for this cache slot. Pass --force to regenerate.',
|
|
907
|
+
};
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
if (versionStale) {
|
|
911
|
+
log(
|
|
912
|
+
`Re-scaffolding ${depName} (format v${existingVersion} → v${SCAFFOLDER_VERSION})`,
|
|
913
|
+
);
|
|
914
|
+
}
|
|
915
|
+
// Fall through: regenerate (force, slot changed, or version bumped).
|
|
916
|
+
} else {
|
|
917
|
+
// No marker at all → user-managed or upstream-shipped. Never touch.
|
|
918
|
+
return {
|
|
919
|
+
depName,
|
|
920
|
+
status: 'skipped-self-managed',
|
|
921
|
+
reason:
|
|
922
|
+
'Existing Package.swift was not produced by this scaffolder. ' +
|
|
923
|
+
'Leaving it alone.',
|
|
924
|
+
};
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
// Find a podspec to read. autolinking.json may have provided podspecPath;
|
|
929
|
+
// otherwise glob for *.podspec in dep root.
|
|
930
|
+
// $FlowFixMe[prop-missing] dynamic shape from autolinking.json
|
|
931
|
+
let podspecPath /*: ?string */ = dep.platforms.ios.podspecPath ?? null;
|
|
932
|
+
if (podspecPath == null) {
|
|
933
|
+
try {
|
|
934
|
+
const entries = fs.readdirSync(dep.root);
|
|
935
|
+
// Skip a crashed run's leftover patched copy (read-podspec.js stages it
|
|
936
|
+
// as `.spm-scaffold-<pid>-<name>.podspec` next to the original).
|
|
937
|
+
const candidate = entries.find(
|
|
938
|
+
e => e.endsWith('.podspec') && !e.startsWith('.spm-scaffold-'),
|
|
939
|
+
);
|
|
940
|
+
if (candidate != null) {
|
|
941
|
+
podspecPath = path.join(dep.root, candidate);
|
|
942
|
+
}
|
|
943
|
+
} catch {
|
|
944
|
+
// dep.root may not exist; treat as no-podspec
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
if (podspecPath == null || !fs.existsSync(podspecPath)) {
|
|
948
|
+
return {
|
|
949
|
+
depName,
|
|
950
|
+
status: 'skipped-no-podspec',
|
|
951
|
+
reason: 'No .podspec found in dep root.',
|
|
952
|
+
};
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
let model;
|
|
956
|
+
try {
|
|
957
|
+
model = readPodspec(podspecPath);
|
|
958
|
+
} catch (e) {
|
|
959
|
+
return {
|
|
960
|
+
depName,
|
|
961
|
+
status: 'error',
|
|
962
|
+
reason: `Podspec read failed: ${e.message}`,
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
const spec = translatePodspecToSpmTarget(
|
|
967
|
+
model,
|
|
968
|
+
dep,
|
|
969
|
+
ctx.podToNpm ?? new Map(),
|
|
970
|
+
ctx.swiftNameByNpm ?? new Map(),
|
|
971
|
+
);
|
|
972
|
+
|
|
973
|
+
// Mixed-language fail-closed: SPM can't compile Swift + C-family in one
|
|
974
|
+
// target. Don't emit a manifest that would fail with a cryptic "mixed
|
|
975
|
+
// language source files" resolve error — skip with a clear reason (and remove
|
|
976
|
+
// any stale scaffolded manifest so the autolinker reports it distinctly and
|
|
977
|
+
// points the user at opting it out / a binary distribution).
|
|
978
|
+
const hasSwift = spec.sources.some(f => /\.swift$/i.test(f));
|
|
979
|
+
const hasClang = spec.sources.some(f => /\.(mm?|c|cc|cpp|cxx)$/i.test(f));
|
|
980
|
+
if (hasSwift && hasClang) {
|
|
981
|
+
if (!ctx.dryRun && fs.existsSync(pkgSwiftPath)) {
|
|
982
|
+
const existing = fs.readFileSync(pkgSwiftPath, 'utf8');
|
|
983
|
+
if (existing.includes(SCAFFOLDER_MARKER)) {
|
|
984
|
+
fs.rmSync(pkgSwiftPath, {force: true});
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
return {
|
|
988
|
+
depName,
|
|
989
|
+
status: 'skipped-mixed-language',
|
|
990
|
+
reason:
|
|
991
|
+
'has mixed Swift + Objective-C/C++ sources, which SPM cannot compile ' +
|
|
992
|
+
'in one target (and the bidirectional ObjC↔Swift interop typical of ' +
|
|
993
|
+
'such libs cannot be split without a circular dependency). Opt it out ' +
|
|
994
|
+
'via react-native.config.js (platforms.ios = null) or use a prebuilt ' +
|
|
995
|
+
'xcframework.',
|
|
996
|
+
};
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
// Relative paths into the app, embedded in the scaffolded Package.swift.
|
|
1000
|
+
//
|
|
1001
|
+
// The manifest is written to <dep.root>/Package.swift, but the autolinker
|
|
1002
|
+
// references the dep through a symlink at
|
|
1003
|
+
// <appRoot>/build/generated/autolinking/libs/<SwiftName>. On a fresh resolve
|
|
1004
|
+
// SwiftPM interprets a manifest's relative `.package(path:)` entries against
|
|
1005
|
+
// that SYMLINK location (it does not canonicalize the symlink first), so the
|
|
1006
|
+
// paths must be relative to the symlink dir — NOT the real dep.root.
|
|
1007
|
+
// Computing from dep.root produced a doubled path
|
|
1008
|
+
// (…/autolinking/ios/build/generated/ios) → opaque "package manifest cannot
|
|
1009
|
+
// be accessed" resolution failure. posix separators, as SPM expects.
|
|
1010
|
+
const symlinkDir = path.join(
|
|
1011
|
+
ctx.appRoot,
|
|
1012
|
+
'build',
|
|
1013
|
+
'generated',
|
|
1014
|
+
'autolinking',
|
|
1015
|
+
'libs',
|
|
1016
|
+
spec.swiftName,
|
|
1017
|
+
);
|
|
1018
|
+
const relFromManifest = (...segments /*: Array<string> */) =>
|
|
1019
|
+
path
|
|
1020
|
+
.relative(symlinkDir, path.join(ctx.appRoot, ...segments))
|
|
1021
|
+
.split(path.sep)
|
|
1022
|
+
.join('/');
|
|
1023
|
+
const content = emitScaffoldedPackageSwift(spec, {
|
|
1024
|
+
cacheSlotLabel: ctx.cacheSlotLabel,
|
|
1025
|
+
remote: ctx.remote,
|
|
1026
|
+
codegenPackageDir: relFromManifest('build', 'generated', 'ios'),
|
|
1027
|
+
localXcfwPackageDir: relFromManifest('build', 'xcframeworks'),
|
|
1028
|
+
});
|
|
1029
|
+
|
|
1030
|
+
// Distinguish "first-time scaffold" (no file at all) from "regenerate"
|
|
1031
|
+
// (file with the scaffolder marker, e.g. slot changed). Used by the
|
|
1032
|
+
// CLI orchestrator to decide whether to prompt for confirmation:
|
|
1033
|
+
// first-time scaffolds touch a node_modules dir the user may not expect,
|
|
1034
|
+
// regens are silent because we're maintaining a file we already own.
|
|
1035
|
+
const previouslyExisted = fs.existsSync(pkgSwiftPath);
|
|
1036
|
+
|
|
1037
|
+
if (!ctx.dryRun) {
|
|
1038
|
+
fs.writeFileSync(pkgSwiftPath, content, 'utf8');
|
|
1039
|
+
// Emit the ambient-import prefix header next to the manifest when the
|
|
1040
|
+
// target has ObjC(++) sources (the manifest `-include`s it by bare name).
|
|
1041
|
+
if (spec.needsObjCPrefix) {
|
|
1042
|
+
fs.writeFileSync(
|
|
1043
|
+
path.join(dep.root, SCAFFOLD_PREFIX_HEADER),
|
|
1044
|
+
SCAFFOLD_PREFIX_HEADER_CONTENTS,
|
|
1045
|
+
'utf8',
|
|
1046
|
+
);
|
|
1047
|
+
}
|
|
1048
|
+
// Mirror root-level headers into the generated include/<SwiftName>/ shim
|
|
1049
|
+
// dir (publicHeadersPath) so dependents can use the CocoaPods header-map
|
|
1050
|
+
// spelling `#import <SwiftName/Header.h>`.
|
|
1051
|
+
if (spec.namespacedShimHeaders.length > 0) {
|
|
1052
|
+
const shimDir = path.join(dep.root, 'include', spec.swiftName);
|
|
1053
|
+
fs.mkdirSync(shimDir, {recursive: true});
|
|
1054
|
+
for (const header of spec.namespacedShimHeaders) {
|
|
1055
|
+
fs.writeFileSync(
|
|
1056
|
+
path.join(shimDir, header),
|
|
1057
|
+
`// AUTO-SCAFFOLDED by react-native spm scaffold — the namespaced\n` +
|
|
1058
|
+
`// spelling (<${spec.swiftName}/${header}>) of the package-root header,\n` +
|
|
1059
|
+
`// matching how CocoaPods header maps expose it.\n` +
|
|
1060
|
+
`#import "../../${header}"\n`,
|
|
1061
|
+
'utf8',
|
|
1062
|
+
);
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
return {
|
|
1068
|
+
depName,
|
|
1069
|
+
status: 'written',
|
|
1070
|
+
packageSwiftPath: pkgSwiftPath,
|
|
1071
|
+
warnings: spec.warnings,
|
|
1072
|
+
previouslyExisted,
|
|
1073
|
+
};
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
// ---------------------------------------------------------------------------
|
|
1077
|
+
// Multi-dep orchestrator
|
|
1078
|
+
// ---------------------------------------------------------------------------
|
|
1079
|
+
|
|
1080
|
+
/*::
|
|
1081
|
+
type ScaffoldAllOptions = {
|
|
1082
|
+
appRoot: string,
|
|
1083
|
+
projectRoot: string,
|
|
1084
|
+
reactNativeRoot: string,
|
|
1085
|
+
force?: boolean,
|
|
1086
|
+
dryRun?: boolean,
|
|
1087
|
+
cacheSlotLabel?: ?string,
|
|
1088
|
+
autolinkingJsonPath?: string,
|
|
1089
|
+
// npm dep names to skip entirely — used when the user declined the
|
|
1090
|
+
// confirmation prompt for first-time scaffolds. Skipped deps still
|
|
1091
|
+
// appear in the returned results array with status='skipped-opt-out'.
|
|
1092
|
+
skipDeps?: ReadonlyArray<string>,
|
|
1093
|
+
};
|
|
1094
|
+
*/
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Walks autolinking.json, scaffolds each iOS-native dep, returns one
|
|
1098
|
+
* ScaffoldResult per dep. Caller (setup-apple-spm.js) prints a structured
|
|
1099
|
+
* summary.
|
|
1100
|
+
*/
|
|
1101
|
+
function scaffoldAll(
|
|
1102
|
+
opts /*: ScaffoldAllOptions */,
|
|
1103
|
+
) /*: Array<ScaffoldResult> */ {
|
|
1104
|
+
const {appRoot, projectRoot, reactNativeRoot} = opts;
|
|
1105
|
+
const autolinkingJsonPath =
|
|
1106
|
+
opts.autolinkingJsonPath ??
|
|
1107
|
+
path.join(appRoot, 'build', 'generated', 'autolinking', 'autolinking.json');
|
|
1108
|
+
|
|
1109
|
+
if (!fs.existsSync(autolinkingJsonPath)) {
|
|
1110
|
+
log(
|
|
1111
|
+
`autolinking.json not found at ${path.relative(appRoot, autolinkingJsonPath)}; nothing to scaffold.`,
|
|
1112
|
+
);
|
|
1113
|
+
return [];
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
/*:: type AutolinkingJson = {dependencies?: ?{[string]: {root?: string, platforms?: {ios?: ?{...}, ...}, ...}}, ...}; */
|
|
1117
|
+
// $FlowFixMe[incompatible-type] JSON.parse returns any
|
|
1118
|
+
const data /*: AutolinkingJson */ = JSON.parse(
|
|
1119
|
+
fs.readFileSync(autolinkingJsonPath, 'utf8'),
|
|
1120
|
+
);
|
|
1121
|
+
const deps = data.dependencies;
|
|
1122
|
+
if (deps == null) {
|
|
1123
|
+
return [];
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
// Narrow the direct autolinking.json entries with an iOS platform, then
|
|
1127
|
+
// expand transitive `spm.dependencies` so the scaffolder covers EXACTLY the
|
|
1128
|
+
// set the autolinker considers. Without this, a transitive native dep that
|
|
1129
|
+
// ships no Package.swift would be flagged by the autolinker but never
|
|
1130
|
+
// scaffolded here — leaving `react-native spm scaffold` unable to clear the
|
|
1131
|
+
// autolinker's missing-manifest error.
|
|
1132
|
+
const results /*: Array<ScaffoldResult> */ = [];
|
|
1133
|
+
const directDeps /*: Array<AutolinkedDep> */ = [];
|
|
1134
|
+
for (const name of Object.keys(deps)) {
|
|
1135
|
+
const raw = deps[name];
|
|
1136
|
+
if (raw == null) continue;
|
|
1137
|
+
const root = raw.root;
|
|
1138
|
+
const ios = raw.platforms?.ios;
|
|
1139
|
+
if (typeof root !== 'string' || ios == null) {
|
|
1140
|
+
results.push({
|
|
1141
|
+
depName: name,
|
|
1142
|
+
status: 'skipped-no-ios',
|
|
1143
|
+
reason: 'no iOS platform in autolinking.json',
|
|
1144
|
+
});
|
|
1145
|
+
continue;
|
|
1146
|
+
}
|
|
1147
|
+
// $FlowFixMe[incompatible-type] `ios` shape is runtime-validated above
|
|
1148
|
+
const iosPlatform /*: AutolinkingIosPlatform */ = ios;
|
|
1149
|
+
directDeps.push({name, root, platforms: {ios: iosPlatform}});
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
// Outside the try: a malformed remote config (RemoteVersionError) is a
|
|
1153
|
+
// misconfiguration to surface, not an expansion failure to degrade past.
|
|
1154
|
+
const remote = remotePackageConfig(appRoot);
|
|
1155
|
+
|
|
1156
|
+
let allDeps /*: Array<AutolinkedDep> */ = [];
|
|
1157
|
+
try {
|
|
1158
|
+
allDeps = expandSpmDependencies(directDeps, {
|
|
1159
|
+
readConfig: defaultReadConfig,
|
|
1160
|
+
resolveDep: defaultResolveDep,
|
|
1161
|
+
extraReservedNames: remote != null ? [remote.identity] : undefined,
|
|
1162
|
+
log,
|
|
1163
|
+
});
|
|
1164
|
+
} catch (e) {
|
|
1165
|
+
if (e instanceof SpmNameCollisionError) {
|
|
1166
|
+
throw e;
|
|
1167
|
+
}
|
|
1168
|
+
// A transitive-resolution failure shouldn't abort the whole scaffold pass;
|
|
1169
|
+
// fall back to the direct deps so at least those get manifests.
|
|
1170
|
+
log(`Transitive spm.dependencies expansion failed: ${e.message}`);
|
|
1171
|
+
allDeps = directDeps;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
// Index every autolinked dep's podspec name → its npm name, so a dep that
|
|
1175
|
+
// depends on a sibling by its pod name (reanimated's `s.dependency
|
|
1176
|
+
// "RNWorklets"`) can be wired to the sibling's package (react-native-worklets).
|
|
1177
|
+
// The podspec file basename is the pod name for RN-ecosystem libs (and is
|
|
1178
|
+
// cheap — no `pod ipc` pre-pass).
|
|
1179
|
+
const podToNpm /*: Map<string, string> */ = new Map();
|
|
1180
|
+
for (const dep of allDeps) {
|
|
1181
|
+
const podspecPath = dep.platforms?.ios?.podspecPath;
|
|
1182
|
+
if (typeof podspecPath === 'string' && podspecPath.length > 0) {
|
|
1183
|
+
podToNpm.set(path.basename(podspecPath, '.podspec'), dep.name);
|
|
1184
|
+
} else {
|
|
1185
|
+
// Transitive entries synthesized by expandSpmDependencies (declared via
|
|
1186
|
+
// `spm.dependencies` in react-native.config.js) carry no podspecPath —
|
|
1187
|
+
// discover the podspec at the dep root so podspec-name sibling deps
|
|
1188
|
+
// (e.g. `s.dependency "TestLibraryCommon"`) still wire to their npm
|
|
1189
|
+
// package.
|
|
1190
|
+
try {
|
|
1191
|
+
for (const f of fs.readdirSync(dep.root)) {
|
|
1192
|
+
if (f.endsWith('.podspec') && !f.startsWith('.spm-scaffold-')) {
|
|
1193
|
+
podToNpm.set(path.basename(f, '.podspec'), dep.name);
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
} catch {
|
|
1197
|
+
// unreadable dep root — sibling wiring falls back to the warning path
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
const swiftNameByNpm /*: Map<string, string> */ = new Map();
|
|
1203
|
+
for (const dep of allDeps) {
|
|
1204
|
+
if (dep.swiftName != null) {
|
|
1205
|
+
swiftNameByNpm.set(dep.name, dep.swiftName);
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
const ctx /*: ScaffoldContext */ = {
|
|
1210
|
+
appRoot,
|
|
1211
|
+
projectRoot,
|
|
1212
|
+
reactNativeRoot,
|
|
1213
|
+
force: opts.force === true,
|
|
1214
|
+
dryRun: opts.dryRun === true,
|
|
1215
|
+
cacheSlotLabel: opts.cacheSlotLabel ?? null,
|
|
1216
|
+
podToNpm,
|
|
1217
|
+
swiftNameByNpm,
|
|
1218
|
+
remote,
|
|
1219
|
+
};
|
|
1220
|
+
const skipSet /*: Set<string> */ = new Set(opts.skipDeps ?? []);
|
|
1221
|
+
|
|
1222
|
+
for (const dep of allDeps) {
|
|
1223
|
+
if (skipSet.has(dep.name)) {
|
|
1224
|
+
results.push({
|
|
1225
|
+
depName: dep.name,
|
|
1226
|
+
status: 'skipped-opt-out',
|
|
1227
|
+
reason: 'User declined scaffolding for this dep.',
|
|
1228
|
+
});
|
|
1229
|
+
continue;
|
|
1230
|
+
}
|
|
1231
|
+
try {
|
|
1232
|
+
results.push(scaffoldPackageSwiftForDep(dep, ctx));
|
|
1233
|
+
} catch (e) {
|
|
1234
|
+
results.push({depName: dep.name, status: 'error', reason: e.message});
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
return results;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
module.exports = {
|
|
1241
|
+
scaffoldAll,
|
|
1242
|
+
scaffoldPackageSwiftForDep,
|
|
1243
|
+
translatePodspecToSpmTarget,
|
|
1244
|
+
emitScaffoldedPackageSwift,
|
|
1245
|
+
SCAFFOLDER_MARKER,
|
|
1246
|
+
SCAFFOLDER_VERSION,
|
|
1247
|
+
};
|