@depup/react-native 0.86.0-depup.49 → 0.87.0-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +19 -24
- package/Libraries/Alert/Alert.js +38 -1
- package/Libraries/Animated/AnimatedExports.js +22 -0
- package/Libraries/Animated/AnimatedExports.js.flow +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +120 -3
- package/Libraries/Animated/Easing.js +4 -3
- package/Libraries/Animated/NativeAnimatedAllowlist.js +37 -0
- package/Libraries/Animated/animations/Animation.js +14 -5
- package/Libraries/Animated/animations/DecayAnimation.js +1 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +9 -0
- package/Libraries/Animated/createAnimatedComponent.js +3 -3
- package/Libraries/Animated/nodes/AnimatedColor.js +8 -8
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +106 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +27 -3
- package/Libraries/Animated/nodes/AnimatedValue.js +8 -0
- package/Libraries/Animated/nodes/AnimatedValueXY.js +2 -2
- package/Libraries/AppDelegate/RCTAppDelegate.h +5 -9
- package/Libraries/AppDelegate/RCTAppDelegate.mm +0 -20
- package/Libraries/AppDelegate/RCTAppSetupUtils.h +0 -18
- package/Libraries/AppDelegate/RCTAppSetupUtils.mm +0 -78
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +18 -21
- package/Libraries/AppDelegate/RCTReactNativeFactory.h +5 -41
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +0 -82
- package/Libraries/AppDelegate/RCTRootViewFactory.h +4 -1
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +3 -101
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +1 -0
- 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/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/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 +19 -2
- 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.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 +11 -1
- package/Libraries/Components/View/ViewAccessibility.js +16 -5
- 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 +1 -1
- package/Libraries/Core/Timers/JSTimers.js +53 -52
- package/Libraries/Core/setUpGlobals.js +9 -4
- package/Libraries/Core/setUpNavigator.js +6 -1
- 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.js +3 -0
- 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 +60 -63
- package/Libraries/Image/RCTImageStoreManager.h +0 -2
- 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/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/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/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/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/shims/ReactNativeTypes.js +36 -36
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +4 -4
- 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/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/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/differ/deepDiffer.js +5 -2
- package/Libraries/Utilities/useColorScheme.js +11 -1
- package/Libraries/Utilities/useWindowDimensions.js +6 -0
- 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 +1 -1
- 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/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 +12 -3
- 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/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 +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 +9 -2
- package/ReactAndroid/api/ReactAndroid.api +128 -142
- package/ReactAndroid/build.gradle.kts +26 -21
- 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/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 +5 -7
- 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/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 +195 -194
- 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/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/network/NetworkEventUtil.kt +53 -3
- 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 +1 -1
- 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 +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactInterceptingViewGroup.kt +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +46 -9
- 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 +7 -7
- 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 +6 -6
- 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 +91 -1
- 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 +81 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +4 -0
- 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/RCTAnimatedModuleProvider/React-RCTAnimatedModuleProvider.podspec +63 -0
- package/ReactCommon/React-Fabric.podspec +2 -0
- package/ReactCommon/ReactCommon.podspec +2 -12
- 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 +2 -1
- package/ReactCommon/cxxreact/ReactMarker.cpp +4 -30
- package/ReactCommon/cxxreact/ReactMarker.h +38 -21
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/TraceSection.h +1 -1
- package/ReactCommon/cxxreact/tests/methodcall.cpp +4 -0
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +6 -79
- 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 +2 -3
- package/ReactCommon/jsi/jsi/hermes-interfaces.h +53 -0
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +2 -1
- 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/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/tests/HostTargetTest.cpp +53 -0
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +14 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +11 -0
- 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/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 +1 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +4 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +4 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +60 -3
- 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/dom/NativeDOM.cpp +10 -4
- package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +25 -55
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -23
- package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +4 -0
- package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.h +1 -1
- package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +1 -0
- 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/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/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/ShadowNode.cpp +27 -19
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +2 -0
- 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/element/tests/ElementTest.cpp +3 -3
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +17 -0
- 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/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 +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +22 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +13 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +13 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +9 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +43 -5
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +17 -1
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +113 -8
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +14 -6
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +3 -2
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +1 -85
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +0 -6
- package/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp +671 -0
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +22 -5
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +4 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +11 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +65 -26
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +193 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h +14 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -1
- package/ReactCommon/react/renderer/textlayoutmanager/tests/TextLayoutManagerTest.cpp +86 -5
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +89 -94
- package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -2
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +1 -1
- package/ReactCommon/react/renderer/uimanager/tests/FabricUIManagerTest.cpp +144 -3
- 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/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/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/utils/Telemetry.h +0 -13
- package/ReactCommon/react/utils/tests/Base64Tests.cpp +36 -0
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +0 -1
- package/ReactCommon/runtimeexecutor/platform/ios/ReactCommon/RuntimeExecutorSyncUIThreadUtils.mm +21 -38
- package/ReactCommon/yoga/Yoga.podspec +1 -1
- 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/AbsoluteLayout.cpp +2 -1
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +294 -17
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +1 -1
- 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 +49 -68
- package/react-native.config.js +82 -1
- package/scripts/cocoapods/fabric.rb +1 -1
- package/scripts/cocoapods/jsengine.rb +1 -1
- package/scripts/cocoapods/new_architecture.rb +1 -1
- package/scripts/cocoapods/rncore.rb +36 -78
- package/scripts/cocoapods/rncore_facades.rb +232 -0
- package/scripts/cocoapods/rndependencies.rb +64 -3
- package/scripts/cocoapods/rndeps_facades.rb +193 -0
- package/scripts/cocoapods/spm.rb +78 -11
- package/scripts/cocoapods/utils.rb +5 -7
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +0 -1
- package/scripts/codegen/templates/Package.swift.spm-template +97 -0
- package/scripts/codegen/templates/ReactCodegen.podspec.template +1 -1
- package/scripts/hermes/hermes-utils.js +27 -58
- package/scripts/react-native-xcode.sh +20 -0
- package/scripts/react_native_pods.rb +71 -21
- package/scripts/react_native_pods_utils/script_phases.sh +4 -3
- package/scripts/replace-rncore-version.js +57 -86
- package/scripts/setup-apple-spm.js +1267 -0
- package/scripts/spm/__doc__/rfc-spm-xcframework.md +707 -0
- package/scripts/spm/__doc__/spm-autolinking-plugins.md +244 -0
- package/scripts/spm/__doc__/spm-header-paths-contract.md +97 -0
- package/scripts/spm/__doc__/spm-plugins-assessment.md +128 -0
- package/scripts/spm/__doc__/spm-scripts.md +486 -0
- package/scripts/spm/autolinking-plugins.js +331 -0
- package/scripts/spm/download-spm-artifacts.js +1409 -0
- package/scripts/spm/expand-spm-dependencies.js +216 -0
- package/scripts/spm/flavored-frameworks.js +1008 -0
- package/scripts/spm/generate-spm-autolinking-config.js +221 -0
- package/scripts/spm/generate-spm-autolinking.js +1888 -0
- package/scripts/spm/generate-spm-package.js +302 -0
- package/scripts/spm/generate-spm-xcodeproj.js +2266 -0
- package/scripts/spm/read-podspec.js +695 -0
- package/scripts/spm/scaffold-package-swift.js +1206 -0
- package/scripts/spm/spm-pbxproj.js +654 -0
- package/scripts/spm/spm-types.js +520 -0
- package/scripts/spm/spm-utils.js +645 -0
- package/scripts/spm/sync-spm-autolinking.js +160 -0
- package/sdks/.hermesv1version +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +9 -39
- package/sdks/hermes-engine/hermes-utils.rb +19 -73
- package/sdks/hermes-engine/utils/replace_hermes_version.js +18 -4
- package/sdks/hermes-engine/version.properties +1 -2
- package/settings.gradle.kts +0 -43
- package/src/asset-registry.js +29 -0
- package/src/private/animated/NativeAnimatedHelper.js +45 -21
- package/src/private/assets/AssetRegistry.js +52 -0
- package/src/private/{specs_DEPRECATED/components → components/activityindicator/specs}/ActivityIndicatorViewNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/debuggingoverlay/specs}/DebuggingOverlayNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/drawerlayoutandroid/specs}/AndroidDrawerLayoutNativeComponent.js +8 -8
- package/src/private/{specs_DEPRECATED/components → components/inputaccessoryview/specs}/RCTInputAccessoryViewNativeComponent.js +4 -4
- package/src/private/{specs_DEPRECATED/components → components/modal/specs}/RCTModalHostViewNativeComponent.js +4 -9
- package/src/private/{specs_DEPRECATED/components → components/progressbarandroid/specs}/ProgressBarAndroidNativeComponent.js +5 -5
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/AndroidSwipeRefreshLayoutNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/PullToRefreshViewNativeComponent.js +7 -7
- package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
- package/src/private/{specs_DEPRECATED/components → components/safeareaview/specs}/RCTSafeAreaViewNativeComponent.js +3 -3
- package/src/private/components/scrollview/HScrollViewNativeComponents.js +1 -1
- package/src/private/{specs_DEPRECATED/components → components/scrollview/specs}/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/AndroidSwitchNativeComponent.js +7 -7
- package/src/private/{specs_DEPRECATED/components → components/switch/specs}/SwitchNativeComponent.js +10 -7
- package/src/private/{specs_DEPRECATED/components → components/unimplementedview/specs}/UnimplementedNativeViewNativeComponent.js +4 -4
- package/src/private/components/virtualcollection/Virtual.js +5 -5
- package/src/private/components/virtualcollection/VirtualCollectionView.js +2 -6
- package/src/private/components/virtualcollection/column/VirtualColumn.js +1 -1
- package/src/private/components/virtualcollection/row/VirtualRow.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +3 -1
- package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +4 -4
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +4 -2
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +46 -70
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +88 -94
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
- package/src/private/renderer/events/ReactNativeResponder.js +49 -4
- package/src/private/renderer/events/ResponderTouchHistoryStore.js +11 -2
- package/src/private/renderer/events/dispatchNativeEvent.js +71 -36
- package/src/private/setup/setUpDOM.js +19 -9
- package/src/private/setup/setUpIntersectionObserver.js +7 -0
- package/src/private/setup/setUpMutationObserver.js +3 -1
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +9 -9
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +28 -28
- package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +45 -25
- package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +44 -24
- package/src/private/specs_DEPRECATED/modules/NativeAppState.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +8 -6
- package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +11 -11
- package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +7 -7
- package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +13 -13
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +9 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +8 -5
- package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +5 -5
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +6 -6
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +6 -4
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +35 -31
- package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +24 -24
- package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSourceCode.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js +5 -17
- package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js +10 -15
- package/src/private/specs_DEPRECATED/modules/NativeTiming.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +35 -22
- package/src/private/specs_DEPRECATED/modules/NativeVibration.js +4 -4
- package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +7 -7
- package/src/private/types/HostInstance.js +38 -80
- package/src/private/viewtransition/specs/NativeViewTransition.js +6 -4
- package/src/private/webapis/dom/abort-api/AbortController.js +92 -0
- package/src/private/webapis/dom/abort-api/AbortSignal.js +243 -0
- package/src/private/webapis/dom/events/CustomEvent.js +1 -1
- package/src/private/webapis/dom/events/Event.js +12 -12
- package/src/private/webapis/dom/events/EventTarget.js +146 -37
- package/src/private/webapis/dom/events/internals/EventInternals.js +36 -0
- package/src/private/webapis/dom/events/internals/EventTargetInternals.js +38 -3
- package/src/private/webapis/dom/nodes/ReactNativeDocument.js +11 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +105 -4
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +11 -0
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +9 -0
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +34 -7
- package/src/private/webapis/dom/nodes/ReadOnlyText.js +33 -0
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +46 -42
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +12 -0
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +4 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +10 -0
- package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -3
- package/src/private/webapis/errors/DOMException.js +50 -50
- package/src/private/webapis/geometry/DOMRectList.js +12 -0
- package/src/private/webapis/geometry/DOMRectList.js.flow +3 -1
- package/src/private/webapis/html/events/MessageEvent.js +3 -3
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +13 -0
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +3 -7
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +5 -5
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
- package/src/private/webapis/mutationobserver/MutationObserver.js +7 -7
- package/src/private/webapis/mutationobserver/MutationRecord.js +12 -0
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +5 -7
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/EventTiming.js +3 -3
- package/src/private/webapis/performance/PerformanceEntry.js +3 -3
- package/src/private/webapis/performance/PerformanceObserver.js +4 -4
- package/src/private/webapis/performance/ResourceTiming.js +13 -13
- package/src/private/webapis/performance/UserTiming.js +3 -3
- package/src/private/webapis/performance/internals/Utilities.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +26 -20
- package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
- package/src/private/webapis/websockets/events/CloseEvent.js +3 -3
- package/src/private/webapis/xhr/events/ProgressEvent.js +3 -3
- package/src/react-private-interface.js +145 -0
- package/src/react-private-interface.js.flow +48 -0
- package/src/setup-env.js +22 -0
- package/src/types/globals.d.ts +33 -1
- 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/ReactNativeDependencies.podspec +2 -2
- package/types/index.d.ts +0 -1
- package/types/public/DeprecatedPropertiesAlias.d.ts +0 -4
- package/types/public/ReactNativeTypes.d.ts +4 -2
- package/types_generated/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +26 -31
- package/types_generated/Libraries/Alert/Alert.d.ts +44 -7
- package/types_generated/Libraries/Animated/AnimatedEvent.d.ts +2 -2
- package/types_generated/Libraries/Animated/AnimatedExports.d.ts +2 -2
- package/types_generated/Libraries/Animated/AnimatedImplementation.d.ts +107 -3
- package/types_generated/Libraries/Animated/Easing.d.ts +5 -4
- package/types_generated/Libraries/Animated/animations/Animation.d.ts +7 -7
- package/types_generated/Libraries/Animated/animations/DecayAnimation.d.ts +5 -5
- package/types_generated/Libraries/Animated/animations/SpringAnimation.d.ts +49 -49
- package/types_generated/Libraries/Animated/animations/TimingAnimation.d.ts +13 -13
- package/types_generated/Libraries/Animated/components/AnimatedFlatList.d.ts +3 -3
- package/types_generated/Libraries/Animated/components/AnimatedSectionList.d.ts +3 -3
- package/types_generated/Libraries/Animated/createAnimatedComponent.d.ts +4 -4
- package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +2 -2
- package/types_generated/Libraries/Animated/nodes/AnimatedInterpolation.d.ts +9 -9
- package/types_generated/Libraries/Animated/nodes/AnimatedNode.d.ts +3 -3
- package/types_generated/Libraries/AppState/AppState.d.ts +41 -22
- package/types_generated/Libraries/BatchedBridge/NativeModules.d.ts +8 -1
- package/types_generated/Libraries/Blob/BlobTypes.d.ts +4 -4
- package/types_generated/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +37 -46
- package/types_generated/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +92 -43
- package/types_generated/Libraries/Components/Button.d.ts +118 -197
- package/types_generated/Libraries/Components/Clipboard/Clipboard.d.ts +6 -1
- package/types_generated/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.d.ts +44 -63
- package/types_generated/Libraries/Components/Keyboard/Keyboard.d.ts +30 -61
- package/types_generated/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +30 -21
- package/types_generated/Libraries/Components/Pressable/Pressable.d.ts +41 -17
- package/types_generated/Libraries/Components/Pressable/useAndroidRippleForView.d.ts +6 -6
- package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +5 -5
- package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.d.ts +18 -1
- package/types_generated/Libraries/Components/RefreshControl/RefreshControl.d.ts +35 -52
- package/types_generated/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -11
- package/types_generated/Libraries/Components/ScrollView/ScrollView.d.ts +212 -88
- package/types_generated/Libraries/Components/ScrollView/ScrollViewStickyHeader.d.ts +4 -4
- package/types_generated/Libraries/Components/StatusBar/StatusBar.d.ts +29 -62
- package/types_generated/Libraries/Components/Switch/Switch.d.ts +75 -70
- package/types_generated/Libraries/Components/TextInput/InputAccessoryView.d.ts +16 -65
- package/types_generated/Libraries/Components/TextInput/TextInput.d.ts +118 -3
- package/types_generated/Libraries/Components/TextInput/TextInput.flow.d.ts +23 -8
- 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 +28 -17
- 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
|
@@ -1,1572 +0,0 @@
|
|
|
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
|
-
|
|
8
|
-
#include <atomic>
|
|
9
|
-
#include <future>
|
|
10
|
-
|
|
11
|
-
#import <React/RCTAssert.h>
|
|
12
|
-
#import <React/RCTBridge+Inspector.h>
|
|
13
|
-
#import <React/RCTBridge+Private.h>
|
|
14
|
-
#import <React/RCTBridge.h>
|
|
15
|
-
#import <React/RCTBridgeMethod.h>
|
|
16
|
-
#import <React/RCTBridgeModule.h>
|
|
17
|
-
#import <React/RCTBridgeModuleDecorator.h>
|
|
18
|
-
#import <React/RCTCallInvoker.h>
|
|
19
|
-
#import <React/RCTConstants.h>
|
|
20
|
-
#import <React/RCTConvert.h>
|
|
21
|
-
#import <React/RCTCxxBridgeDelegate.h>
|
|
22
|
-
#import <React/RCTCxxUtils.h>
|
|
23
|
-
#import <React/RCTDevSettings.h>
|
|
24
|
-
#import <React/RCTDisplayLink.h>
|
|
25
|
-
#import <React/RCTJavaScriptLoader.h>
|
|
26
|
-
#import <React/RCTLog.h>
|
|
27
|
-
#import <React/RCTModuleData.h>
|
|
28
|
-
#import <React/RCTPerformanceLogger.h>
|
|
29
|
-
#import <React/RCTProfile.h>
|
|
30
|
-
#import <React/RCTRedBox.h>
|
|
31
|
-
#import <React/RCTRedBoxSetEnabled.h>
|
|
32
|
-
#import <React/RCTReloadCommand.h>
|
|
33
|
-
#import <React/RCTTurboModuleRegistry.h>
|
|
34
|
-
#import <React/RCTUtils.h>
|
|
35
|
-
#import <cxxreact/CxxNativeModule.h>
|
|
36
|
-
#import <cxxreact/Instance.h>
|
|
37
|
-
#import <cxxreact/JSBundleType.h>
|
|
38
|
-
#import <cxxreact/JSIndexedRAMBundle.h>
|
|
39
|
-
#import <cxxreact/ModuleRegistry.h>
|
|
40
|
-
#import <cxxreact/RAMBundleRegistry.h>
|
|
41
|
-
#import <cxxreact/ReactMarker.h>
|
|
42
|
-
#import <jsinspector-modern/ReactCdp.h>
|
|
43
|
-
#import <jsireact/JSIExecutor.h>
|
|
44
|
-
#import <react/utils/FollyConvert.h>
|
|
45
|
-
#import <reactperflogger/BridgeNativeModulePerfLogger.h>
|
|
46
|
-
|
|
47
|
-
#if !defined(USE_HERMES) || USE_HERMES == 1
|
|
48
|
-
#import <reacthermes/HermesExecutorFactory.h>
|
|
49
|
-
#endif
|
|
50
|
-
#import "RCTJSIExecutorRuntimeInstaller.h"
|
|
51
|
-
|
|
52
|
-
#import "NSDataBigString.h"
|
|
53
|
-
#import "RCTMessageThread.h"
|
|
54
|
-
#import "RCTObjcExecutor.h"
|
|
55
|
-
|
|
56
|
-
#if RCT_DEV_MENU && __has_include(<React/RCTDevLoadingViewProtocol.h>)
|
|
57
|
-
#import <React/RCTDevLoadingViewProtocol.h>
|
|
58
|
-
#endif
|
|
59
|
-
|
|
60
|
-
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
61
|
-
|
|
62
|
-
static NSString *const RCTJSThreadName = @"com.facebook.react.JavaScript";
|
|
63
|
-
|
|
64
|
-
using RCTPendingCall = void (^)();
|
|
65
|
-
|
|
66
|
-
using namespace facebook::jsi;
|
|
67
|
-
using namespace facebook::react;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Must be kept in sync with `MessageQueue.js`.
|
|
71
|
-
*/
|
|
72
|
-
typedef NS_ENUM(NSInteger, RCTBridgeFields) {
|
|
73
|
-
RCTBridgeFieldRequestModuleIDs = 0,
|
|
74
|
-
RCTBridgeFieldMethodIDs,
|
|
75
|
-
RCTBridgeFieldParams,
|
|
76
|
-
RCTBridgeFieldCallID,
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
namespace {
|
|
80
|
-
|
|
81
|
-
int32_t getUniqueId()
|
|
82
|
-
{
|
|
83
|
-
static std::atomic<int32_t> counter{0};
|
|
84
|
-
return counter++;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
class GetDescAdapter : public JSExecutorFactory {
|
|
88
|
-
public:
|
|
89
|
-
GetDescAdapter(RCTCxxBridge *bridge, std::shared_ptr<JSExecutorFactory> factory) : bridge_(bridge), factory_(factory)
|
|
90
|
-
{
|
|
91
|
-
}
|
|
92
|
-
std::unique_ptr<JSExecutor> createJSExecutor(
|
|
93
|
-
std::shared_ptr<ExecutorDelegate> delegate,
|
|
94
|
-
std::shared_ptr<MessageQueueThread> jsQueue) override
|
|
95
|
-
{
|
|
96
|
-
auto ret = factory_->createJSExecutor(delegate, jsQueue);
|
|
97
|
-
bridge_.bridgeDescription = @(ret->getDescription().c_str());
|
|
98
|
-
return ret;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
private:
|
|
102
|
-
RCTCxxBridge *bridge_;
|
|
103
|
-
std::shared_ptr<JSExecutorFactory> factory_;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
} // namespace
|
|
107
|
-
|
|
108
|
-
static void mapReactMarkerToPerformanceLogger(
|
|
109
|
-
const ReactMarker::ReactMarkerId markerId,
|
|
110
|
-
RCTPerformanceLogger *performanceLogger,
|
|
111
|
-
const char *tag)
|
|
112
|
-
{
|
|
113
|
-
switch (markerId) {
|
|
114
|
-
case ReactMarker::APP_STARTUP_START:
|
|
115
|
-
[performanceLogger markStartForTag:RCTPLAppStartup];
|
|
116
|
-
break;
|
|
117
|
-
case ReactMarker::APP_STARTUP_STOP:
|
|
118
|
-
[performanceLogger markStopForTag:RCTPLAppStartup];
|
|
119
|
-
break;
|
|
120
|
-
case ReactMarker::INIT_REACT_RUNTIME_START:
|
|
121
|
-
[performanceLogger markStartForTag:RCTPLInitReactRuntime];
|
|
122
|
-
break;
|
|
123
|
-
case ReactMarker::INIT_REACT_RUNTIME_STOP:
|
|
124
|
-
[performanceLogger markStopForTag:RCTPLInitReactRuntime];
|
|
125
|
-
break;
|
|
126
|
-
case ReactMarker::RUN_JS_BUNDLE_START:
|
|
127
|
-
[performanceLogger markStartForTag:RCTPLScriptExecution];
|
|
128
|
-
break;
|
|
129
|
-
case ReactMarker::RUN_JS_BUNDLE_STOP:
|
|
130
|
-
[performanceLogger markStopForTag:RCTPLScriptExecution];
|
|
131
|
-
break;
|
|
132
|
-
case ReactMarker::NATIVE_REQUIRE_START:
|
|
133
|
-
[performanceLogger appendStartForTag:RCTPLRAMNativeRequires];
|
|
134
|
-
break;
|
|
135
|
-
case ReactMarker::NATIVE_REQUIRE_STOP:
|
|
136
|
-
[performanceLogger appendStopForTag:RCTPLRAMNativeRequires];
|
|
137
|
-
[performanceLogger addValue:1 forTag:RCTPLRAMNativeRequiresCount];
|
|
138
|
-
break;
|
|
139
|
-
case ReactMarker::NATIVE_MODULE_SETUP_START:
|
|
140
|
-
[performanceLogger markStartForTag:RCTPLNativeModuleSetup];
|
|
141
|
-
break;
|
|
142
|
-
case ReactMarker::NATIVE_MODULE_SETUP_STOP:
|
|
143
|
-
[performanceLogger markStopForTag:RCTPLNativeModuleSetup];
|
|
144
|
-
break;
|
|
145
|
-
// Not needed in bridge mode.
|
|
146
|
-
case ReactMarker::REACT_INSTANCE_INIT_START:
|
|
147
|
-
case ReactMarker::REACT_INSTANCE_INIT_STOP:
|
|
148
|
-
// Not used on iOS.
|
|
149
|
-
case ReactMarker::CREATE_REACT_CONTEXT_STOP:
|
|
150
|
-
case ReactMarker::JS_BUNDLE_STRING_CONVERT_START:
|
|
151
|
-
case ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP:
|
|
152
|
-
case ReactMarker::REGISTER_JS_SEGMENT_START:
|
|
153
|
-
case ReactMarker::REGISTER_JS_SEGMENT_STOP:
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
static void registerPerformanceLoggerHooks(RCTPerformanceLogger *performanceLogger)
|
|
159
|
-
{
|
|
160
|
-
std::unique_lock lock(ReactMarker::logTaggedMarkerImplMutex);
|
|
161
|
-
__weak RCTPerformanceLogger *weakPerformanceLogger = performanceLogger;
|
|
162
|
-
ReactMarker::LogTaggedMarker newMarker = [weakPerformanceLogger](
|
|
163
|
-
const ReactMarker::ReactMarkerId markerId, const char *tag) {
|
|
164
|
-
mapReactMarkerToPerformanceLogger(markerId, weakPerformanceLogger, tag);
|
|
165
|
-
};
|
|
166
|
-
ReactMarker::logTaggedMarkerImpl = newMarker;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
@interface RCTCxxBridge () <RCTModuleDataCallInvokerProvider>
|
|
170
|
-
|
|
171
|
-
@property (nonatomic, weak, readonly) RCTBridge *parentBridge;
|
|
172
|
-
@property (nonatomic, assign, readonly) BOOL moduleSetupComplete;
|
|
173
|
-
|
|
174
|
-
- (instancetype)initWithParentBridge:(RCTBridge *)bridge;
|
|
175
|
-
- (void)batchDidComplete;
|
|
176
|
-
|
|
177
|
-
@end
|
|
178
|
-
|
|
179
|
-
struct RCTInstanceCallback : public InstanceCallback {
|
|
180
|
-
__weak RCTCxxBridge *bridge_;
|
|
181
|
-
RCTInstanceCallback(RCTCxxBridge *bridge) : bridge_(bridge) {};
|
|
182
|
-
void onBatchComplete() override
|
|
183
|
-
{
|
|
184
|
-
[bridge_ batchDidComplete];
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
@interface RCTBridgeDisplayLinkModuleHolder : NSObject <RCTDisplayLinkModuleHolder>
|
|
189
|
-
- (instancetype)initWithModuleData:(RCTModuleData *)moduleData;
|
|
190
|
-
@end
|
|
191
|
-
|
|
192
|
-
@implementation RCTBridgeDisplayLinkModuleHolder {
|
|
193
|
-
RCTModuleData *_moduleData;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
- (instancetype)initWithModuleData:(RCTModuleData *)moduleData
|
|
197
|
-
{
|
|
198
|
-
_moduleData = moduleData;
|
|
199
|
-
return self;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
- (id<RCTBridgeModule>)instance
|
|
203
|
-
{
|
|
204
|
-
return _moduleData.instance;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
- (Class)moduleClass
|
|
208
|
-
{
|
|
209
|
-
return _moduleData.moduleClass;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
- (dispatch_queue_t)methodQueue
|
|
213
|
-
{
|
|
214
|
-
return _moduleData.methodQueue;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
@end
|
|
218
|
-
|
|
219
|
-
@implementation RCTCxxBridge {
|
|
220
|
-
BOOL _didInvalidate;
|
|
221
|
-
std::atomic<BOOL> _moduleRegistryCreated;
|
|
222
|
-
|
|
223
|
-
NSMutableArray<RCTPendingCall> *_pendingCalls;
|
|
224
|
-
std::atomic<NSInteger> _pendingCount;
|
|
225
|
-
|
|
226
|
-
// Native modules
|
|
227
|
-
NSMutableDictionary<NSString *, RCTModuleData *> *_moduleDataByName;
|
|
228
|
-
NSMutableArray<RCTModuleData *> *_moduleDataByID;
|
|
229
|
-
NSMutableArray<Class> *_moduleClassesByID;
|
|
230
|
-
NSUInteger _modulesInitializedOnMainQueue;
|
|
231
|
-
RCTDisplayLink *_displayLink;
|
|
232
|
-
|
|
233
|
-
// JS thread management
|
|
234
|
-
NSThread *_jsThread;
|
|
235
|
-
std::shared_ptr<RCTMessageThread> _jsMessageThread;
|
|
236
|
-
std::mutex _moduleRegistryLock;
|
|
237
|
-
|
|
238
|
-
// This is uniquely owned, but weak_ptr is used.
|
|
239
|
-
std::shared_ptr<Instance> _reactInstance;
|
|
240
|
-
|
|
241
|
-
// Necessary for searching in TurboModules in TurboModuleManager
|
|
242
|
-
id<RCTTurboModuleRegistry> _turboModuleRegistry;
|
|
243
|
-
|
|
244
|
-
RCTModuleRegistry *_objCModuleRegistry;
|
|
245
|
-
RCTViewRegistry *_viewRegistry_DEPRECATED;
|
|
246
|
-
RCTBundleManager *_bundleManager;
|
|
247
|
-
RCTCallableJSModules *_callableJSModules;
|
|
248
|
-
std::atomic<BOOL> _loading;
|
|
249
|
-
std::atomic<BOOL> _valid;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
@synthesize bridgeDescription = _bridgeDescription;
|
|
253
|
-
@synthesize performanceLogger = _performanceLogger;
|
|
254
|
-
|
|
255
|
-
- (BOOL)isLoading
|
|
256
|
-
{
|
|
257
|
-
return _loading;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
- (void)setLoading:(BOOL)newValue
|
|
261
|
-
{
|
|
262
|
-
_loading = newValue;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
- (BOOL)isValid
|
|
266
|
-
{
|
|
267
|
-
return _valid;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
- (void)setValid:(BOOL)newValue
|
|
271
|
-
{
|
|
272
|
-
_valid = newValue;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
- (RCTModuleRegistry *)moduleRegistry
|
|
276
|
-
{
|
|
277
|
-
return _objCModuleRegistry;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
- (void)setRCTTurboModuleRegistry:(id<RCTTurboModuleRegistry>)turboModuleRegistry
|
|
281
|
-
{
|
|
282
|
-
_turboModuleRegistry = turboModuleRegistry;
|
|
283
|
-
[_objCModuleRegistry setTurboModuleRegistry:_turboModuleRegistry];
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
- (RCTBridgeModuleDecorator *)bridgeModuleDecorator
|
|
287
|
-
{
|
|
288
|
-
return [[RCTBridgeModuleDecorator alloc] initWithViewRegistry:_viewRegistry_DEPRECATED
|
|
289
|
-
moduleRegistry:_objCModuleRegistry
|
|
290
|
-
bundleManager:_bundleManager
|
|
291
|
-
callableJSModules:_callableJSModules];
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
- (std::shared_ptr<MessageQueueThread>)jsMessageThread
|
|
295
|
-
{
|
|
296
|
-
return _jsMessageThread;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
- (BOOL)isInspectable
|
|
300
|
-
{
|
|
301
|
-
return _reactInstance ? _reactInstance->isInspectable() : NO;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
- (instancetype)initWithParentBridge:(RCTBridge *)bridge
|
|
305
|
-
{
|
|
306
|
-
RCTAssertParam(bridge);
|
|
307
|
-
|
|
308
|
-
if ((self = [super initWithDelegate:bridge.delegate
|
|
309
|
-
bundleURL:bridge.bundleURL
|
|
310
|
-
moduleProvider:bridge.moduleProvider
|
|
311
|
-
launchOptions:bridge.launchOptions])) {
|
|
312
|
-
_parentBridge = bridge;
|
|
313
|
-
_performanceLogger = [bridge performanceLogger];
|
|
314
|
-
|
|
315
|
-
registerPerformanceLoggerHooks(_performanceLogger);
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Set Initial State
|
|
319
|
-
*/
|
|
320
|
-
_valid = YES;
|
|
321
|
-
_loading = YES;
|
|
322
|
-
_moduleRegistryCreated = NO;
|
|
323
|
-
_pendingCalls = [NSMutableArray new];
|
|
324
|
-
_displayLink = [RCTDisplayLink new];
|
|
325
|
-
_moduleDataByName = [NSMutableDictionary new];
|
|
326
|
-
_moduleClassesByID = [NSMutableArray new];
|
|
327
|
-
_moduleDataByID = [NSMutableArray new];
|
|
328
|
-
_objCModuleRegistry = [RCTModuleRegistry new];
|
|
329
|
-
[_objCModuleRegistry setBridge:self];
|
|
330
|
-
_bundleManager = [RCTBundleManager new];
|
|
331
|
-
[_bundleManager setBridge:self];
|
|
332
|
-
_viewRegistry_DEPRECATED = [RCTViewRegistry new];
|
|
333
|
-
[_viewRegistry_DEPRECATED setBridge:self];
|
|
334
|
-
_callableJSModules = [RCTCallableJSModules new];
|
|
335
|
-
[_callableJSModules setBridge:self];
|
|
336
|
-
|
|
337
|
-
[RCTBridge setCurrentBridge:self];
|
|
338
|
-
|
|
339
|
-
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
340
|
-
selector:@selector(handleMemoryWarning)
|
|
341
|
-
name:UIApplicationDidReceiveMemoryWarningNotification
|
|
342
|
-
object:nil];
|
|
343
|
-
|
|
344
|
-
RCTLogSetBridgeModuleRegistry(_objCModuleRegistry);
|
|
345
|
-
RCTLogSetBridgeCallableJSModules(_callableJSModules);
|
|
346
|
-
}
|
|
347
|
-
return self;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
- (void)dealloc
|
|
351
|
-
{
|
|
352
|
-
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
+ (void)runRunLoop
|
|
356
|
-
{
|
|
357
|
-
@autoreleasepool {
|
|
358
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge runJSRunLoop] setup", nil);
|
|
359
|
-
|
|
360
|
-
// copy thread name to pthread name
|
|
361
|
-
pthread_setname_np([NSThread currentThread].name.UTF8String);
|
|
362
|
-
|
|
363
|
-
// Set up a dummy runloop source to avoid spinning
|
|
364
|
-
CFRunLoopSourceContext noSpinCtx = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
|
|
365
|
-
CFRunLoopSourceRef noSpinSource = CFRunLoopSourceCreate(NULL, 0, &noSpinCtx);
|
|
366
|
-
CFRunLoopAddSource(CFRunLoopGetCurrent(), noSpinSource, kCFRunLoopDefaultMode);
|
|
367
|
-
CFRelease(noSpinSource);
|
|
368
|
-
|
|
369
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
370
|
-
|
|
371
|
-
// run the run loop
|
|
372
|
-
while (kCFRunLoopRunStopped !=
|
|
373
|
-
CFRunLoopRunInMode(
|
|
374
|
-
kCFRunLoopDefaultMode, ((NSDate *)[NSDate distantFuture]).timeIntervalSinceReferenceDate, NO)) {
|
|
375
|
-
RCTAssert(NO, @"not reached assertion"); // runloop spun. that's bad.
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
- (void)_tryAndHandleError:(dispatch_block_t)block
|
|
381
|
-
{
|
|
382
|
-
NSError *error = tryAndReturnError(block);
|
|
383
|
-
if (error) {
|
|
384
|
-
[self handleError:error];
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
- (void)handleMemoryWarning
|
|
389
|
-
{
|
|
390
|
-
// We only want to run garbage collector when the loading is finished
|
|
391
|
-
// and the instance is valid.
|
|
392
|
-
if (!_valid || _loading) {
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
// We need to hold a local retaining pointer to react instance
|
|
397
|
-
// in case if some other tread resets it.
|
|
398
|
-
auto reactInstance = _reactInstance;
|
|
399
|
-
if (reactInstance) {
|
|
400
|
-
// Memory Pressure Unloading Level 15 represents TRIM_MEMORY_RUNNING_CRITICAL.
|
|
401
|
-
int unloadLevel = 15;
|
|
402
|
-
reactInstance->handleMemoryPressure(unloadLevel);
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Ensure block is run on the JS thread. If we're already on the JS thread, the block will execute synchronously.
|
|
408
|
-
* If we're not on the JS thread, the block is dispatched to that thread. Any errors encountered while executing
|
|
409
|
-
* the block will go through handleError:
|
|
410
|
-
*/
|
|
411
|
-
- (void)ensureOnJavaScriptThread:(dispatch_block_t)block
|
|
412
|
-
{
|
|
413
|
-
RCTAssert(_jsThread, @"This method must not be called before the JS thread is created");
|
|
414
|
-
|
|
415
|
-
// This does not use _jsMessageThread because it may be called early before the runloop reference is captured
|
|
416
|
-
// and _jsMessageThread is valid. _jsMessageThread also doesn't allow us to shortcut the dispatch if we're
|
|
417
|
-
// already on the correct thread.
|
|
418
|
-
|
|
419
|
-
if ([NSThread currentThread] == _jsThread) {
|
|
420
|
-
[self _tryAndHandleError:block];
|
|
421
|
-
} else {
|
|
422
|
-
[self performSelector:@selector(_tryAndHandleError:) onThread:_jsThread withObject:block waitUntilDone:NO];
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
- (void)start
|
|
427
|
-
{
|
|
428
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge start]", nil);
|
|
429
|
-
|
|
430
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptWillStartLoadingNotification
|
|
431
|
-
object:_parentBridge
|
|
432
|
-
userInfo:@{@"bridge" : self}];
|
|
433
|
-
|
|
434
|
-
// Set up the JS thread early
|
|
435
|
-
_jsThread = [[NSThread alloc] initWithTarget:[self class] selector:@selector(runRunLoop) object:nil];
|
|
436
|
-
_jsThread.name = RCTJSThreadName;
|
|
437
|
-
_jsThread.qualityOfService = NSOperationQualityOfServiceUserInteractive;
|
|
438
|
-
#if RCT_DEBUG
|
|
439
|
-
_jsThread.stackSize *= 2;
|
|
440
|
-
#endif
|
|
441
|
-
[_jsThread start];
|
|
442
|
-
|
|
443
|
-
dispatch_group_t prepareBridge = dispatch_group_create();
|
|
444
|
-
|
|
445
|
-
[_performanceLogger markStartForTag:RCTPLNativeModuleInit];
|
|
446
|
-
|
|
447
|
-
[self registerExtraModules];
|
|
448
|
-
// Initialize all native modules that cannot be loaded lazily
|
|
449
|
-
(void)[self _initializeModules:RCTGetModuleClasses() withDispatchGroup:prepareBridge lazilyDiscovered:NO];
|
|
450
|
-
|
|
451
|
-
[_performanceLogger markStopForTag:RCTPLNativeModuleInit];
|
|
452
|
-
|
|
453
|
-
// This doesn't really do anything. The real work happens in initializeBridge.
|
|
454
|
-
_reactInstance.reset(new Instance);
|
|
455
|
-
|
|
456
|
-
__weak RCTCxxBridge *weakSelf = self;
|
|
457
|
-
|
|
458
|
-
// Prepare executor factory (shared_ptr for copy into block)
|
|
459
|
-
std::shared_ptr<JSExecutorFactory> executorFactory;
|
|
460
|
-
if (!self.executorClass) {
|
|
461
|
-
if ([self.delegate conformsToProtocol:@protocol(RCTCxxBridgeDelegate)]) {
|
|
462
|
-
id<RCTCxxBridgeDelegate> cxxDelegate = (id<RCTCxxBridgeDelegate>)self.delegate;
|
|
463
|
-
executorFactory = [cxxDelegate jsExecutorFactoryForBridge:self];
|
|
464
|
-
}
|
|
465
|
-
if (!executorFactory) {
|
|
466
|
-
auto installBindings = RCTJSIExecutorRuntimeInstaller(nullptr);
|
|
467
|
-
#if !defined(USE_HERMES) || USE_HERMES == 1
|
|
468
|
-
executorFactory = std::make_shared<HermesExecutorFactory>(installBindings);
|
|
469
|
-
#endif
|
|
470
|
-
}
|
|
471
|
-
} else {
|
|
472
|
-
id<RCTJavaScriptExecutor> objcExecutor = [self moduleForClass:self.executorClass];
|
|
473
|
-
executorFactory.reset(new RCTObjcExecutorFactory(objcExecutor, ^(NSError *error) {
|
|
474
|
-
if (error) {
|
|
475
|
-
[weakSelf handleError:error];
|
|
476
|
-
}
|
|
477
|
-
}));
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
// Grab the inspector target from the parent bridge here, on the main queue, to avoid inadvertently
|
|
481
|
-
// moving ownership of the parent bridge to the JS thread, which would violate expectations around
|
|
482
|
-
// the timing and thread affinity of RCTBridge's destruction. This could technically be a dangling
|
|
483
|
-
// pointer into a member of RCTBridge! But we only use it while _reactInstance exists, meaning we
|
|
484
|
-
// haven't been invalidated, and therefore RCTBridge hasn't been deallocated yet.
|
|
485
|
-
RCTAssertMainQueue();
|
|
486
|
-
facebook::react::jsinspector_modern::HostTarget *parentInspectorTarget = _parentBridge.inspectorTarget;
|
|
487
|
-
|
|
488
|
-
// Dispatch the instance initialization as soon as the initial module metadata has
|
|
489
|
-
// been collected (see initModules)
|
|
490
|
-
dispatch_group_enter(prepareBridge);
|
|
491
|
-
[self ensureOnJavaScriptThread:^{
|
|
492
|
-
[weakSelf _initializeBridge:executorFactory parentInspectorTarget:parentInspectorTarget];
|
|
493
|
-
dispatch_group_leave(prepareBridge);
|
|
494
|
-
}];
|
|
495
|
-
|
|
496
|
-
// Load the source asynchronously, then store it for later execution.
|
|
497
|
-
dispatch_group_enter(prepareBridge);
|
|
498
|
-
__block NSData *sourceCode;
|
|
499
|
-
__block NSURL *sourceURL = self.bundleURL;
|
|
500
|
-
|
|
501
|
-
#if RCT_DEV_MENU && __has_include(<React/RCTDevLoadingViewProtocol.h>)
|
|
502
|
-
{
|
|
503
|
-
id<RCTDevLoadingViewProtocol> loadingView = [self moduleForName:@"DevLoadingView" lazilyLoadIfNecessary:YES];
|
|
504
|
-
[loadingView showWithURL:self.bundleURL];
|
|
505
|
-
}
|
|
506
|
-
#endif
|
|
507
|
-
|
|
508
|
-
[self
|
|
509
|
-
loadSource:^(NSError *error, RCTSource *source) {
|
|
510
|
-
if (error) {
|
|
511
|
-
[weakSelf handleError:error];
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
sourceCode = source.data;
|
|
515
|
-
if (source.url) {
|
|
516
|
-
sourceURL = source.url;
|
|
517
|
-
}
|
|
518
|
-
dispatch_group_leave(prepareBridge);
|
|
519
|
-
}
|
|
520
|
-
onProgress:^(RCTLoadingProgress *progressData) {
|
|
521
|
-
#if RCT_DEV_MENU && __has_include(<React/RCTDevLoadingViewProtocol.h>)
|
|
522
|
-
id<RCTDevLoadingViewProtocol> loadingView = [weakSelf moduleForName:@"DevLoadingView"
|
|
523
|
-
lazilyLoadIfNecessary:YES];
|
|
524
|
-
[loadingView updateProgress:progressData];
|
|
525
|
-
#endif
|
|
526
|
-
}];
|
|
527
|
-
|
|
528
|
-
// Wait for both the modules and source code to have finished loading
|
|
529
|
-
dispatch_group_notify(prepareBridge, dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
|
|
530
|
-
RCTCxxBridge *strongSelf = weakSelf;
|
|
531
|
-
if (sourceCode && strongSelf.loading) {
|
|
532
|
-
[strongSelf executeSourceCode:sourceCode withSourceURL:sourceURL sync:NO];
|
|
533
|
-
}
|
|
534
|
-
});
|
|
535
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
- (void)loadSource:(RCTSourceLoadBlock)_onSourceLoad onProgress:(RCTSourceLoadProgressBlock)onProgress
|
|
539
|
-
{
|
|
540
|
-
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
|
|
541
|
-
[center postNotificationName:RCTBridgeWillDownloadScriptNotification object:_parentBridge];
|
|
542
|
-
[_performanceLogger markStartForTag:RCTPLScriptDownload];
|
|
543
|
-
NSUInteger cookie = RCTProfileBeginAsyncEvent(0, @"JavaScript download", nil);
|
|
544
|
-
|
|
545
|
-
// Suppress a warning if RCTProfileBeginAsyncEvent gets compiled out
|
|
546
|
-
(void)cookie;
|
|
547
|
-
|
|
548
|
-
RCTPerformanceLogger *performanceLogger = _performanceLogger;
|
|
549
|
-
RCTSourceLoadBlock onSourceLoad = ^(NSError *error, RCTSource *source) {
|
|
550
|
-
RCTProfileEndAsyncEvent(0, @"native", cookie, @"JavaScript download", @"JS async");
|
|
551
|
-
[performanceLogger markStopForTag:RCTPLScriptDownload];
|
|
552
|
-
[performanceLogger setValue:source.length forTag:RCTPLBundleSize];
|
|
553
|
-
|
|
554
|
-
NSDictionary *userInfo = @{
|
|
555
|
-
RCTBridgeDidDownloadScriptNotificationSourceKey : source ?: [NSNull null],
|
|
556
|
-
RCTBridgeDidDownloadScriptNotificationBridgeDescriptionKey : self->_bridgeDescription ?: [NSNull null],
|
|
557
|
-
};
|
|
558
|
-
|
|
559
|
-
[center postNotificationName:RCTBridgeDidDownloadScriptNotification object:self->_parentBridge userInfo:userInfo];
|
|
560
|
-
|
|
561
|
-
_onSourceLoad(error, source);
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
if ([self.delegate respondsToSelector:@selector(loadSourceForBridge:onProgress:onComplete:)]) {
|
|
565
|
-
[self.delegate loadSourceForBridge:_parentBridge onProgress:onProgress onComplete:onSourceLoad];
|
|
566
|
-
} else if ([self.delegate respondsToSelector:@selector(loadSourceForBridge:withBlock:)]) {
|
|
567
|
-
[self.delegate loadSourceForBridge:_parentBridge withBlock:onSourceLoad];
|
|
568
|
-
} else if (!self.bundleURL) {
|
|
569
|
-
NSError *error = RCTErrorWithMessage(
|
|
570
|
-
@"No bundle URL present.\n\nMake sure you're running a packager "
|
|
571
|
-
"server or have included a .jsbundle file in your application bundle.");
|
|
572
|
-
onSourceLoad(error, nil);
|
|
573
|
-
} else {
|
|
574
|
-
__weak RCTCxxBridge *weakSelf = self;
|
|
575
|
-
[RCTJavaScriptLoader loadBundleAtURL:self.bundleURL
|
|
576
|
-
onProgress:onProgress
|
|
577
|
-
onComplete:^(NSError *error, RCTSource *source) {
|
|
578
|
-
if (error) {
|
|
579
|
-
[weakSelf handleError:error];
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
onSourceLoad(error, source);
|
|
583
|
-
}];
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
- (NSArray<Class> *)moduleClasses
|
|
588
|
-
{
|
|
589
|
-
if (RCT_DEBUG && _valid && _moduleClassesByID == nil) {
|
|
590
|
-
RCTLogError(
|
|
591
|
-
@"Bridge modules have not yet been initialized. You may be "
|
|
592
|
-
"trying to access a module too early in the startup procedure.");
|
|
593
|
-
}
|
|
594
|
-
return _moduleClassesByID;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Used by RCTUIManager
|
|
599
|
-
*/
|
|
600
|
-
- (RCTModuleData *)moduleDataForName:(NSString *)moduleName
|
|
601
|
-
{
|
|
602
|
-
return _moduleDataByName[moduleName];
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
- (id)moduleForName:(NSString *)moduleName
|
|
606
|
-
{
|
|
607
|
-
return [self moduleForName:moduleName lazilyLoadIfNecessary:NO];
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
- (id)moduleForName:(NSString *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad
|
|
611
|
-
{
|
|
612
|
-
if (RCTTurboModuleEnabled() && _turboModuleRegistry) {
|
|
613
|
-
const char *moduleNameCStr = [moduleName UTF8String];
|
|
614
|
-
if (lazilyLoad || [_turboModuleRegistry moduleIsInitialized:moduleNameCStr]) {
|
|
615
|
-
id<RCTTurboModule> module = [_turboModuleRegistry moduleForName:moduleNameCStr warnOnLookupFailure:NO];
|
|
616
|
-
if (module != nil) {
|
|
617
|
-
return module;
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
if (!lazilyLoad) {
|
|
623
|
-
return _moduleDataByName[moduleName].instance;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
RCTModuleData *moduleData = _moduleDataByName[moduleName];
|
|
627
|
-
if (moduleData) {
|
|
628
|
-
if (![moduleData isKindOfClass:[RCTModuleData class]]) {
|
|
629
|
-
// There is rare race condition where the data stored in the dictionary
|
|
630
|
-
// may have been deallocated, which means the module instance is no longer
|
|
631
|
-
// usable.
|
|
632
|
-
return nil;
|
|
633
|
-
}
|
|
634
|
-
return moduleData.instance;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
// Module may not be loaded yet, so attempt to force load it here.
|
|
638
|
-
// Do this only if the bridge is still valid.
|
|
639
|
-
if (_didInvalidate) {
|
|
640
|
-
return nil;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
const BOOL result = [self.delegate respondsToSelector:@selector(bridge:didNotFindModule:)] &&
|
|
644
|
-
[self.delegate bridge:self didNotFindModule:moduleName];
|
|
645
|
-
if (result) {
|
|
646
|
-
// Try again.
|
|
647
|
-
moduleData = _moduleDataByName[moduleName];
|
|
648
|
-
#if RCT_DEV
|
|
649
|
-
// If the `_moduleDataByName` is nil, it must have been cleared by the reload.
|
|
650
|
-
} else if (_moduleDataByName != nil) {
|
|
651
|
-
RCTLogError(@"Unable to find module for %@", moduleName);
|
|
652
|
-
}
|
|
653
|
-
#else
|
|
654
|
-
} else {
|
|
655
|
-
RCTLogError(@"Unable to find module for %@", moduleName);
|
|
656
|
-
}
|
|
657
|
-
#endif
|
|
658
|
-
|
|
659
|
-
return moduleData.instance;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
- (BOOL)moduleIsInitialized:(Class)moduleClass
|
|
663
|
-
{
|
|
664
|
-
NSString *moduleName = RCTBridgeModuleNameForClass(moduleClass);
|
|
665
|
-
if (_moduleDataByName[moduleName].hasInstance) {
|
|
666
|
-
return YES;
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
if (_turboModuleRegistry) {
|
|
670
|
-
return [_turboModuleRegistry moduleIsInitialized:[moduleName UTF8String]];
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
return NO;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
- (id)moduleForClass:(Class)moduleClass
|
|
677
|
-
{
|
|
678
|
-
return [self moduleForName:RCTBridgeModuleNameForClass(moduleClass) lazilyLoadIfNecessary:YES];
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
- (std::shared_ptr<ModuleRegistry>)_buildModuleRegistryUnlocked
|
|
682
|
-
{
|
|
683
|
-
if (!self.valid) {
|
|
684
|
-
return {};
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
[_performanceLogger markStartForTag:RCTPLNativeModulePrepareConfig];
|
|
688
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge buildModuleRegistry]", nil);
|
|
689
|
-
|
|
690
|
-
__weak __typeof(self) weakSelf = self;
|
|
691
|
-
ModuleRegistry::ModuleNotFoundCallback moduleNotFoundCallback = ^bool(const std::string &name) {
|
|
692
|
-
__strong __typeof(weakSelf) strongSelf = weakSelf;
|
|
693
|
-
return [strongSelf.delegate respondsToSelector:@selector(bridge:didNotFindModule:)] &&
|
|
694
|
-
[strongSelf.delegate bridge:strongSelf didNotFindModule:@(name.c_str())];
|
|
695
|
-
};
|
|
696
|
-
|
|
697
|
-
auto registry = std::make_shared<ModuleRegistry>(
|
|
698
|
-
createNativeModules(_moduleDataByID, self, _reactInstance), moduleNotFoundCallback);
|
|
699
|
-
|
|
700
|
-
[_performanceLogger markStopForTag:RCTPLNativeModulePrepareConfig];
|
|
701
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
702
|
-
|
|
703
|
-
return registry;
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
- (void)_initializeBridge:(std::shared_ptr<JSExecutorFactory>)executorFactory
|
|
707
|
-
parentInspectorTarget:(facebook::react::jsinspector_modern::HostTarget *)parentInspectorTarget
|
|
708
|
-
{
|
|
709
|
-
if (!self.valid) {
|
|
710
|
-
return;
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
__weak RCTCxxBridge *weakSelf = self;
|
|
714
|
-
_jsMessageThread = std::make_shared<RCTMessageThread>([NSRunLoop currentRunLoop], ^(NSError *error) {
|
|
715
|
-
if (error) {
|
|
716
|
-
[weakSelf handleError:error];
|
|
717
|
-
}
|
|
718
|
-
});
|
|
719
|
-
|
|
720
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge initializeBridge:]", nil);
|
|
721
|
-
// This can only be false if the bridge was invalidated before startup completed
|
|
722
|
-
if (_reactInstance) {
|
|
723
|
-
#if RCT_DEV
|
|
724
|
-
executorFactory = std::make_shared<GetDescAdapter>(self, executorFactory);
|
|
725
|
-
#endif
|
|
726
|
-
|
|
727
|
-
[self _initializeBridgeLocked:executorFactory parentInspectorTarget:parentInspectorTarget];
|
|
728
|
-
|
|
729
|
-
#if RCT_PROFILE
|
|
730
|
-
if (RCTProfileIsProfiling()) {
|
|
731
|
-
_reactInstance->setGlobalVariable("__RCTProfileIsProfiling", std::make_unique<JSBigStdString>("true"));
|
|
732
|
-
}
|
|
733
|
-
#endif
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
- (void)_initializeBridgeLocked:(std::shared_ptr<JSExecutorFactory>)executorFactory
|
|
740
|
-
parentInspectorTarget:(facebook::react::jsinspector_modern::HostTarget *)parentInspectorTarget
|
|
741
|
-
{
|
|
742
|
-
std::lock_guard<std::mutex> guard(_moduleRegistryLock);
|
|
743
|
-
|
|
744
|
-
// This is async, but any calls into JS are blocked by the m_syncReady CV in Instance
|
|
745
|
-
_reactInstance->initializeBridge(
|
|
746
|
-
std::make_unique<RCTInstanceCallback>(self),
|
|
747
|
-
executorFactory,
|
|
748
|
-
_jsMessageThread,
|
|
749
|
-
[self _buildModuleRegistryUnlocked],
|
|
750
|
-
parentInspectorTarget);
|
|
751
|
-
_moduleRegistryCreated = YES;
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
- (void)updateModuleWithInstance:(id<RCTBridgeModule>)instance
|
|
755
|
-
{
|
|
756
|
-
NSString *const moduleName = RCTBridgeModuleNameForClass([instance class]);
|
|
757
|
-
if (moduleName) {
|
|
758
|
-
RCTModuleData *const moduleData = _moduleDataByName[moduleName];
|
|
759
|
-
if (moduleData) {
|
|
760
|
-
moduleData.instance = instance;
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
- (NSArray<RCTModuleData *> *)registerModulesForClasses:(NSArray<Class> *)moduleClasses
|
|
766
|
-
{
|
|
767
|
-
return [self _registerModulesForClasses:moduleClasses lazilyDiscovered:NO];
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
- (NSArray<RCTModuleData *> *)_registerModulesForClasses:(NSArray<Class> *)moduleClasses
|
|
771
|
-
lazilyDiscovered:(BOOL)lazilyDiscovered
|
|
772
|
-
{
|
|
773
|
-
RCT_PROFILE_BEGIN_EVENT(
|
|
774
|
-
RCTProfileTagAlways, @"-[RCTCxxBridge initModulesWithDispatchGroup:] autoexported moduleData", nil);
|
|
775
|
-
|
|
776
|
-
NSArray *moduleClassesCopy = [moduleClasses copy];
|
|
777
|
-
NSMutableArray<RCTModuleData *> *moduleDataByID = [NSMutableArray arrayWithCapacity:moduleClassesCopy.count];
|
|
778
|
-
for (Class moduleClass in moduleClassesCopy) {
|
|
779
|
-
if (RCTTurboModuleEnabled() && [moduleClass conformsToProtocol:@protocol(RCTTurboModule)]) {
|
|
780
|
-
continue;
|
|
781
|
-
}
|
|
782
|
-
NSString *moduleName = RCTBridgeModuleNameForClass(moduleClass);
|
|
783
|
-
|
|
784
|
-
// Check for module name collisions
|
|
785
|
-
RCTModuleData *moduleData = _moduleDataByName[moduleName];
|
|
786
|
-
if (moduleData) {
|
|
787
|
-
if (moduleData.hasInstance || lazilyDiscovered) {
|
|
788
|
-
// Existing module was preregistered, so it takes precedence
|
|
789
|
-
continue;
|
|
790
|
-
} else if ([moduleClass new] == nil) {
|
|
791
|
-
// The new module returned nil from init, so use the old module
|
|
792
|
-
continue;
|
|
793
|
-
} else if ([moduleData.moduleClass new] != nil) {
|
|
794
|
-
// Both modules were non-nil, so it's unclear which should take precedence
|
|
795
|
-
RCTLogWarn(
|
|
796
|
-
@"Attempted to register RCTBridgeModule class %@ for the "
|
|
797
|
-
"name '%@', but name was already registered by class %@",
|
|
798
|
-
moduleClass,
|
|
799
|
-
moduleName,
|
|
800
|
-
moduleData.moduleClass);
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
// Instantiate moduleData
|
|
805
|
-
// TODO #13258411: can we defer this until config generation?
|
|
806
|
-
int32_t moduleDataId = getUniqueId();
|
|
807
|
-
BridgeNativeModulePerfLogger::moduleDataCreateStart([moduleName UTF8String], moduleDataId);
|
|
808
|
-
moduleData = [[RCTModuleData alloc] initWithModuleClass:moduleClass
|
|
809
|
-
bridge:self
|
|
810
|
-
moduleRegistry:_objCModuleRegistry
|
|
811
|
-
viewRegistry_DEPRECATED:_viewRegistry_DEPRECATED
|
|
812
|
-
bundleManager:_bundleManager
|
|
813
|
-
callableJSModules:_callableJSModules];
|
|
814
|
-
moduleData.callInvokerProvider = self;
|
|
815
|
-
BridgeNativeModulePerfLogger::moduleDataCreateEnd([moduleName UTF8String], moduleDataId);
|
|
816
|
-
|
|
817
|
-
_moduleDataByName[moduleName] = moduleData;
|
|
818
|
-
[_moduleClassesByID addObject:moduleClass];
|
|
819
|
-
[moduleDataByID addObject:moduleData];
|
|
820
|
-
}
|
|
821
|
-
[_moduleDataByID addObjectsFromArray:moduleDataByID];
|
|
822
|
-
|
|
823
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
824
|
-
|
|
825
|
-
return moduleDataByID;
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
- (void)registerExtraModules
|
|
829
|
-
{
|
|
830
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge initModulesWithDispatchGroup:] extraModules", nil);
|
|
831
|
-
|
|
832
|
-
NSArray<id<RCTBridgeModule>> *appExtraModules = nil;
|
|
833
|
-
if ([self.delegate respondsToSelector:@selector(extraModulesForBridge:)]) {
|
|
834
|
-
appExtraModules = [self.delegate extraModulesForBridge:_parentBridge];
|
|
835
|
-
} else if (self.moduleProvider) {
|
|
836
|
-
appExtraModules = self.moduleProvider();
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
NSMutableArray<id<RCTBridgeModule>> *extraModules = [NSMutableArray new];
|
|
840
|
-
|
|
841
|
-
// Prevent TurboModules from appearing the NativeModule system
|
|
842
|
-
for (id<RCTBridgeModule> module in appExtraModules) {
|
|
843
|
-
if (!(RCTTurboModuleEnabled() && [module conformsToProtocol:@protocol(RCTTurboModule)])) {
|
|
844
|
-
[extraModules addObject:module];
|
|
845
|
-
}
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
849
|
-
|
|
850
|
-
RCT_PROFILE_BEGIN_EVENT(
|
|
851
|
-
RCTProfileTagAlways, @"-[RCTCxxBridge initModulesWithDispatchGroup:] preinitialized moduleData", nil);
|
|
852
|
-
// Set up moduleData for pre-initialized module instances
|
|
853
|
-
for (id<RCTBridgeModule> module in extraModules) {
|
|
854
|
-
Class moduleClass = [module class];
|
|
855
|
-
NSString *moduleName = RCTBridgeModuleNameForClass(moduleClass);
|
|
856
|
-
|
|
857
|
-
if (RCT_DEBUG) {
|
|
858
|
-
// Check for name collisions between preregistered modules
|
|
859
|
-
RCTModuleData *moduleData = _moduleDataByName[moduleName];
|
|
860
|
-
if (moduleData) {
|
|
861
|
-
RCTLogError(
|
|
862
|
-
@"Attempted to register RCTBridgeModule class %@ for the "
|
|
863
|
-
"name '%@', but name was already registered by class %@",
|
|
864
|
-
moduleClass,
|
|
865
|
-
moduleName,
|
|
866
|
-
moduleData.moduleClass);
|
|
867
|
-
continue;
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
if (RCTTurboModuleEnabled() && [module conformsToProtocol:@protocol(RCTTurboModule)]) {
|
|
872
|
-
#if RCT_DEBUG
|
|
873
|
-
// TODO: don't ask for extra module for when TurboModule is enabled.
|
|
874
|
-
RCTLogError(
|
|
875
|
-
@"NativeModule '%@' was marked as TurboModule, but provided as an extra NativeModule "
|
|
876
|
-
"by the class '%@', ignoring.",
|
|
877
|
-
moduleName,
|
|
878
|
-
moduleClass);
|
|
879
|
-
#endif
|
|
880
|
-
continue;
|
|
881
|
-
}
|
|
882
|
-
|
|
883
|
-
// Instantiate moduleData container
|
|
884
|
-
int32_t moduleDataId = getUniqueId();
|
|
885
|
-
BridgeNativeModulePerfLogger::moduleDataCreateStart([moduleName UTF8String], moduleDataId);
|
|
886
|
-
RCTModuleData *moduleData = [[RCTModuleData alloc] initWithModuleInstance:module
|
|
887
|
-
bridge:self
|
|
888
|
-
moduleRegistry:_objCModuleRegistry
|
|
889
|
-
viewRegistry_DEPRECATED:_viewRegistry_DEPRECATED
|
|
890
|
-
bundleManager:_bundleManager
|
|
891
|
-
callableJSModules:_callableJSModules];
|
|
892
|
-
BridgeNativeModulePerfLogger::moduleDataCreateEnd([moduleName UTF8String], moduleDataId);
|
|
893
|
-
|
|
894
|
-
_moduleDataByName[moduleName] = moduleData;
|
|
895
|
-
[_moduleClassesByID addObject:moduleClass];
|
|
896
|
-
[_moduleDataByID addObject:moduleData];
|
|
897
|
-
}
|
|
898
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<Class> *)modules
|
|
902
|
-
withDispatchGroup:(dispatch_group_t)dispatchGroup
|
|
903
|
-
lazilyDiscovered:(BOOL)lazilyDiscovered
|
|
904
|
-
{
|
|
905
|
-
// Set up moduleData for automatically-exported modules
|
|
906
|
-
NSArray<RCTModuleData *> *moduleDataById = [self _registerModulesForClasses:modules
|
|
907
|
-
lazilyDiscovered:lazilyDiscovered];
|
|
908
|
-
|
|
909
|
-
if (lazilyDiscovered) {
|
|
910
|
-
#if RCT_DEBUG
|
|
911
|
-
// Lazily discovered modules do not require instantiation here,
|
|
912
|
-
// as they are not allowed to have pre-instantiated instance
|
|
913
|
-
// and must not require the main queue.
|
|
914
|
-
for (RCTModuleData *moduleData in moduleDataById) {
|
|
915
|
-
RCTAssert(
|
|
916
|
-
!(moduleData.requiresMainQueueSetup || moduleData.hasInstance),
|
|
917
|
-
@"Module \'%@\' requires initialization on the Main Queue or has pre-instantiated, which is not supported for the lazily discovered modules.",
|
|
918
|
-
moduleData.name);
|
|
919
|
-
}
|
|
920
|
-
#endif
|
|
921
|
-
} else {
|
|
922
|
-
RCT_PROFILE_BEGIN_EVENT(
|
|
923
|
-
RCTProfileTagAlways, @"-[RCTCxxBridge initModulesWithDispatchGroup:] moduleData.hasInstance", nil);
|
|
924
|
-
// Dispatch module init onto main thread for those modules that require it
|
|
925
|
-
// For non-lazily discovered modules we run through the entire set of modules
|
|
926
|
-
// that we have, otherwise some modules coming from the delegate
|
|
927
|
-
// or module provider block, will not be properly instantiated.
|
|
928
|
-
for (RCTModuleData *moduleData in _moduleDataByID) {
|
|
929
|
-
if (moduleData.hasInstance && (!moduleData.requiresMainQueueSetup || RCTIsMainQueue())) {
|
|
930
|
-
// Modules that were pre-initialized should ideally be set up before
|
|
931
|
-
// bridge init has finished, otherwise the caller may try to access the
|
|
932
|
-
// module directly rather than via `[bridge moduleForClass:]`, which won't
|
|
933
|
-
// trigger the lazy initialization process. If the module cannot safely be
|
|
934
|
-
// set up on the current thread, it will instead be async dispatched
|
|
935
|
-
// to the main thread to be set up in _prepareModulesWithDispatchGroup:.
|
|
936
|
-
(void)[moduleData instance];
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
940
|
-
|
|
941
|
-
// From this point on, RCTDidInitializeModuleNotification notifications will
|
|
942
|
-
// be sent the first time a module is accessed.
|
|
943
|
-
_moduleSetupComplete = YES;
|
|
944
|
-
[self _prepareModulesWithDispatchGroup:dispatchGroup];
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
#if RCT_PROFILE
|
|
948
|
-
if (RCTProfileIsProfiling()) {
|
|
949
|
-
// Depends on moduleDataByID being loaded
|
|
950
|
-
RCTProfileHookModules(self);
|
|
951
|
-
}
|
|
952
|
-
#endif
|
|
953
|
-
return moduleDataById;
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
- (void)registerAdditionalModuleClasses:(NSArray<Class> *)modules
|
|
957
|
-
{
|
|
958
|
-
std::lock_guard<std::mutex> guard(_moduleRegistryLock);
|
|
959
|
-
if (_moduleRegistryCreated) {
|
|
960
|
-
NSArray<RCTModuleData *> *newModules = [self _initializeModules:modules
|
|
961
|
-
withDispatchGroup:NULL
|
|
962
|
-
lazilyDiscovered:YES];
|
|
963
|
-
assert(_reactInstance); // at this point you must have reactInstance as you already called
|
|
964
|
-
// reactInstance->initializeBridge
|
|
965
|
-
_reactInstance->getModuleRegistry().registerModules(createNativeModules(newModules, self, _reactInstance));
|
|
966
|
-
} else {
|
|
967
|
-
[self registerModulesForClasses:modules];
|
|
968
|
-
}
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
- (void)_prepareModulesWithDispatchGroup:(dispatch_group_t)dispatchGroup
|
|
972
|
-
{
|
|
973
|
-
RCT_PROFILE_BEGIN_EVENT(0, @"-[RCTCxxBridge _prepareModulesWithDispatchGroup]", nil);
|
|
974
|
-
|
|
975
|
-
BOOL initializeImmediately = NO;
|
|
976
|
-
if (dispatchGroup == NULL) {
|
|
977
|
-
// If no dispatchGroup is passed in, we must prepare everything immediately.
|
|
978
|
-
// We better be on the right thread too.
|
|
979
|
-
RCTAssertMainQueue();
|
|
980
|
-
initializeImmediately = YES;
|
|
981
|
-
}
|
|
982
|
-
|
|
983
|
-
// Set up modules that require main thread init or constants export
|
|
984
|
-
[_performanceLogger setValue:0 forTag:RCTPLNativeModuleMainThread];
|
|
985
|
-
|
|
986
|
-
for (RCTModuleData *moduleData in _moduleDataByID) {
|
|
987
|
-
if (moduleData.requiresMainQueueSetup) {
|
|
988
|
-
// Modules that need to be set up on the main thread cannot be initialized
|
|
989
|
-
// lazily when required without doing a dispatch_sync to the main thread,
|
|
990
|
-
// which can result in deadlock. To avoid this, we initialize all of these
|
|
991
|
-
// modules on the main thread in parallel with loading the JS code, so
|
|
992
|
-
// they will already be available before they are ever required.
|
|
993
|
-
dispatch_block_t block = ^{
|
|
994
|
-
if (self.valid) {
|
|
995
|
-
[self->_performanceLogger appendStartForTag:RCTPLNativeModuleMainThread];
|
|
996
|
-
(void)[moduleData instance];
|
|
997
|
-
[moduleData gatherConstants];
|
|
998
|
-
[self->_performanceLogger appendStopForTag:RCTPLNativeModuleMainThread];
|
|
999
|
-
}
|
|
1000
|
-
};
|
|
1001
|
-
|
|
1002
|
-
if (initializeImmediately && RCTIsMainQueue()) {
|
|
1003
|
-
block();
|
|
1004
|
-
} else {
|
|
1005
|
-
// We've already checked that dispatchGroup is non-null, but this satisfies the
|
|
1006
|
-
// Xcode analyzer
|
|
1007
|
-
if (dispatchGroup) {
|
|
1008
|
-
dispatch_group_async(dispatchGroup, dispatch_get_main_queue(), block);
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
1011
|
-
_modulesInitializedOnMainQueue++;
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
[_performanceLogger setValue:_modulesInitializedOnMainQueue forTag:RCTPLNativeModuleMainThreadUsesCount];
|
|
1015
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
- (void)registerModuleForFrameUpdates:(id<RCTBridgeModule>)module withModuleData:(RCTModuleData *)moduleData
|
|
1019
|
-
{
|
|
1020
|
-
id<RCTDisplayLinkModuleHolder> moduleHolder =
|
|
1021
|
-
[[RCTBridgeDisplayLinkModuleHolder alloc] initWithModuleData:moduleData];
|
|
1022
|
-
[_displayLink registerModuleForFrameUpdates:module withModuleHolder:moduleHolder];
|
|
1023
|
-
}
|
|
1024
|
-
|
|
1025
|
-
- (void)executeSourceCode:(NSData *)sourceCode withSourceURL:(NSURL *)url sync:(BOOL)sync
|
|
1026
|
-
{
|
|
1027
|
-
// This will get called from whatever thread was actually executing JS.
|
|
1028
|
-
dispatch_block_t completion = ^{
|
|
1029
|
-
// Log start up metrics early before processing any other js calls
|
|
1030
|
-
[self logStartupFinish];
|
|
1031
|
-
// Flush pending calls immediately so we preserve ordering
|
|
1032
|
-
[self _flushPendingCalls];
|
|
1033
|
-
|
|
1034
|
-
// Perform the state update and notification on the main thread, so we can't run into
|
|
1035
|
-
// timing issues with RCTRootView
|
|
1036
|
-
dispatch_async(dispatch_get_main_queue(), ^{
|
|
1037
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptDidLoadNotification
|
|
1038
|
-
object:self->_parentBridge
|
|
1039
|
-
userInfo:@{@"bridge" : self}];
|
|
1040
|
-
|
|
1041
|
-
// Starting the display link is not critical to startup, so do it last
|
|
1042
|
-
[self ensureOnJavaScriptThread:^{
|
|
1043
|
-
// Register the display link to start sending js calls after everything is setup
|
|
1044
|
-
[self->_displayLink addToRunLoop:[NSRunLoop currentRunLoop]];
|
|
1045
|
-
}];
|
|
1046
|
-
});
|
|
1047
|
-
};
|
|
1048
|
-
|
|
1049
|
-
if (sync) {
|
|
1050
|
-
[self executeApplicationScriptSync:sourceCode url:url];
|
|
1051
|
-
completion();
|
|
1052
|
-
} else {
|
|
1053
|
-
[self enqueueApplicationScript:sourceCode url:url onComplete:completion];
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
// Use the original request URL here - HMRClient uses this to derive the /hot URL and entry point.
|
|
1057
|
-
[self.devSettings setupHMRClientWithBundleURL:self.bundleURL];
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
- (void)handleError:(NSError *)error
|
|
1061
|
-
{
|
|
1062
|
-
// This is generally called when the infrastructure throws an
|
|
1063
|
-
// exception while calling JS. Most product exceptions will not go
|
|
1064
|
-
// through this method, but through RCTExceptionManager.
|
|
1065
|
-
|
|
1066
|
-
// There are three possible states:
|
|
1067
|
-
// 1. initializing == _valid && _loading
|
|
1068
|
-
// 2. initializing/loading finished (success or failure) == _valid && !_loading
|
|
1069
|
-
// 3. invalidated == !_valid && !_loading
|
|
1070
|
-
|
|
1071
|
-
// !_valid && _loading can't happen.
|
|
1072
|
-
|
|
1073
|
-
// In state 1: on main queue, move to state 2, reset the bridge, and RCTFatal.
|
|
1074
|
-
// In state 2: go directly to RCTFatal. Do not enqueue, do not collect $200.
|
|
1075
|
-
// In state 3: do nothing.
|
|
1076
|
-
|
|
1077
|
-
if (self->_valid && !self->_loading) {
|
|
1078
|
-
if ([error userInfo][RCTJSRawStackTraceKey]) {
|
|
1079
|
-
RCTRedBox *redBox = RCTRedBoxGetEnabled() ? [self.moduleRegistry moduleForName:"RedBox"] : nil;
|
|
1080
|
-
[redBox showErrorMessage:[error localizedDescription] withRawStack:[error userInfo][RCTJSRawStackTraceKey]];
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
|
-
RCTFatal(error);
|
|
1084
|
-
|
|
1085
|
-
// RN will stop, but let the rest of the app keep going.
|
|
1086
|
-
return;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
if (!_valid || !_loading) {
|
|
1090
|
-
return;
|
|
1091
|
-
}
|
|
1092
|
-
|
|
1093
|
-
// Hack: once the bridge is invalidated below, it won't initialize any new native
|
|
1094
|
-
// modules. Initialize the redbox module now so we can still report this error.
|
|
1095
|
-
RCTRedBox *redBox = RCTRedBoxGetEnabled() ? [self.moduleRegistry moduleForName:"RedBox"] : nil;
|
|
1096
|
-
|
|
1097
|
-
_loading = NO;
|
|
1098
|
-
_valid = NO;
|
|
1099
|
-
_moduleRegistryCreated = NO;
|
|
1100
|
-
|
|
1101
|
-
dispatch_async(dispatch_get_main_queue(), ^{
|
|
1102
|
-
if (self->_jsMessageThread) {
|
|
1103
|
-
// Make sure initializeBridge completed
|
|
1104
|
-
self->_jsMessageThread->runOnQueueSync([] {});
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
self->_reactInstance.reset();
|
|
1108
|
-
self->_jsMessageThread.reset();
|
|
1109
|
-
|
|
1110
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptDidFailToLoadNotification
|
|
1111
|
-
object:self->_parentBridge
|
|
1112
|
-
userInfo:@{@"bridge" : self, @"error" : error}];
|
|
1113
|
-
|
|
1114
|
-
if ([error userInfo][RCTJSRawStackTraceKey]) {
|
|
1115
|
-
[redBox showErrorMessage:[error localizedDescription] withRawStack:[error userInfo][RCTJSRawStackTraceKey]];
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
RCTFatal(error);
|
|
1119
|
-
});
|
|
1120
|
-
}
|
|
1121
|
-
|
|
1122
|
-
RCT_NOT_IMPLEMENTED(-(instancetype)initWithDelegate : (__unused id<RCTBridgeDelegate>)delegate bundleURL : (
|
|
1123
|
-
__unused NSURL *)bundleURL moduleProvider : (__unused RCTBridgeModuleListProvider)
|
|
1124
|
-
block launchOptions : (__unused NSDictionary *)launchOptions)
|
|
1125
|
-
|
|
1126
|
-
RCT_NOT_IMPLEMENTED(-(instancetype)initWithBundleURL : (__unused NSURL *)bundleURL moduleProvider : (
|
|
1127
|
-
__unused RCTBridgeModuleListProvider)block launchOptions : (__unused NSDictionary *)launchOptions)
|
|
1128
|
-
|
|
1129
|
-
/**
|
|
1130
|
-
* Prevent super from calling setUp (that'd create another batchedBridge)
|
|
1131
|
-
*/
|
|
1132
|
-
- (void)setUp
|
|
1133
|
-
{
|
|
1134
|
-
}
|
|
1135
|
-
|
|
1136
|
-
- (Class)executorClass
|
|
1137
|
-
{
|
|
1138
|
-
return _parentBridge.executorClass;
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
- (void)setExecutorClass:(Class)executorClass
|
|
1142
|
-
{
|
|
1143
|
-
RCTAssertMainQueue();
|
|
1144
|
-
|
|
1145
|
-
_parentBridge.executorClass = executorClass;
|
|
1146
|
-
}
|
|
1147
|
-
|
|
1148
|
-
- (NSURL *)bundleURL
|
|
1149
|
-
{
|
|
1150
|
-
return _parentBridge.bundleURL;
|
|
1151
|
-
}
|
|
1152
|
-
|
|
1153
|
-
- (void)setBundleURL:(NSURL *)bundleURL
|
|
1154
|
-
{
|
|
1155
|
-
_parentBridge.bundleURL = bundleURL;
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
- (id<RCTBridgeDelegate>)delegate
|
|
1159
|
-
{
|
|
1160
|
-
return _parentBridge.delegate;
|
|
1161
|
-
}
|
|
1162
|
-
|
|
1163
|
-
- (void)dispatchBlock:(dispatch_block_t)block queue:(dispatch_queue_t)queue
|
|
1164
|
-
{
|
|
1165
|
-
if (queue == RCTJSThread) {
|
|
1166
|
-
[self ensureOnJavaScriptThread:block];
|
|
1167
|
-
} else if (queue) {
|
|
1168
|
-
dispatch_async(queue, block);
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1172
|
-
#pragma mark - RCTInvalidating
|
|
1173
|
-
|
|
1174
|
-
- (void)invalidate
|
|
1175
|
-
{
|
|
1176
|
-
if (_didInvalidate) {
|
|
1177
|
-
return;
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
|
-
RCTAssertMainQueue();
|
|
1181
|
-
RCTLogInfo(@"Invalidating %@ (parent: %@, executor: %@)", self, _parentBridge, [self executorClass]);
|
|
1182
|
-
|
|
1183
|
-
if (self->_reactInstance) {
|
|
1184
|
-
// Do this synchronously on the main thread to fulfil unregisterFromInspector's
|
|
1185
|
-
// requirements.
|
|
1186
|
-
self->_reactInstance->unregisterFromInspector();
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
|
-
_loading = NO;
|
|
1190
|
-
_valid = NO;
|
|
1191
|
-
_didInvalidate = YES;
|
|
1192
|
-
_moduleRegistryCreated = NO;
|
|
1193
|
-
|
|
1194
|
-
if ([RCTBridge currentBridge] == self) {
|
|
1195
|
-
[RCTBridge setCurrentBridge:nil];
|
|
1196
|
-
}
|
|
1197
|
-
|
|
1198
|
-
// Stop JS instance and message thread
|
|
1199
|
-
[self ensureOnJavaScriptThread:^{
|
|
1200
|
-
[self->_displayLink invalidate];
|
|
1201
|
-
self->_displayLink = nil;
|
|
1202
|
-
|
|
1203
|
-
if (RCTProfileIsProfiling()) {
|
|
1204
|
-
RCTProfileUnhookModules(self);
|
|
1205
|
-
}
|
|
1206
|
-
|
|
1207
|
-
// Invalidate modules
|
|
1208
|
-
|
|
1209
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTBridgeWillInvalidateModulesNotification
|
|
1210
|
-
object:self->_parentBridge
|
|
1211
|
-
userInfo:@{@"bridge" : self}];
|
|
1212
|
-
|
|
1213
|
-
// We're on the JS thread (which we'll be suspending soon), so no new calls will be made to native modules after
|
|
1214
|
-
// this completes. We must ensure all previous calls were dispatched before deallocating the instance (and module
|
|
1215
|
-
// wrappers) or we may have invalid pointers still in flight.
|
|
1216
|
-
dispatch_group_t moduleInvalidation = dispatch_group_create();
|
|
1217
|
-
for (RCTModuleData *moduleData in self->_moduleDataByID) {
|
|
1218
|
-
// Be careful when grabbing an instance here, we don't want to instantiate
|
|
1219
|
-
// any modules just to invalidate them.
|
|
1220
|
-
if (![moduleData hasInstance]) {
|
|
1221
|
-
continue;
|
|
1222
|
-
}
|
|
1223
|
-
|
|
1224
|
-
if ([moduleData.instance respondsToSelector:@selector(invalidate)]) {
|
|
1225
|
-
dispatch_group_enter(moduleInvalidation);
|
|
1226
|
-
[self
|
|
1227
|
-
dispatchBlock:^{
|
|
1228
|
-
[(id<RCTInvalidating>)moduleData.instance invalidate];
|
|
1229
|
-
dispatch_group_leave(moduleInvalidation);
|
|
1230
|
-
}
|
|
1231
|
-
queue:moduleData.methodQueue];
|
|
1232
|
-
}
|
|
1233
|
-
[moduleData invalidate];
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
if (dispatch_group_wait(moduleInvalidation, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC))) {
|
|
1237
|
-
RCTLogError(@"Timed out waiting for modules to be invalidated");
|
|
1238
|
-
}
|
|
1239
|
-
|
|
1240
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTBridgeDidInvalidateModulesNotification
|
|
1241
|
-
object:self->_parentBridge
|
|
1242
|
-
userInfo:@{@"bridge" : self}];
|
|
1243
|
-
|
|
1244
|
-
self->_reactInstance.reset();
|
|
1245
|
-
self->_jsMessageThread.reset();
|
|
1246
|
-
|
|
1247
|
-
self->_moduleDataByName = nil;
|
|
1248
|
-
self->_moduleDataByID = nil;
|
|
1249
|
-
self->_moduleClassesByID = nil;
|
|
1250
|
-
self->_pendingCalls = nil;
|
|
1251
|
-
|
|
1252
|
-
[self->_jsThread cancel];
|
|
1253
|
-
self->_jsThread = nil;
|
|
1254
|
-
CFRunLoopStop(CFRunLoopGetCurrent());
|
|
1255
|
-
}];
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1258
|
-
- (void)logMessage:(NSString *)message level:(NSString *)level
|
|
1259
|
-
{
|
|
1260
|
-
if (RCT_DEBUG && _valid) {
|
|
1261
|
-
[self enqueueJSCall:@"RCTLog" method:@"logIfNoNativeHook" args:@[ level, message ] completion:NULL];
|
|
1262
|
-
}
|
|
1263
|
-
}
|
|
1264
|
-
|
|
1265
|
-
#pragma mark - RCTBridge methods
|
|
1266
|
-
|
|
1267
|
-
- (void)_runAfterLoad:(RCTPendingCall)block
|
|
1268
|
-
{
|
|
1269
|
-
// Ordering here is tricky. Ideally, the C++ bridge would provide
|
|
1270
|
-
// functionality to defer calls until after the app is loaded. Until that
|
|
1271
|
-
// happens, we do this. _pendingCount keeps a count of blocks which have
|
|
1272
|
-
// been deferred. It is incremented using an atomic barrier call before each
|
|
1273
|
-
// block is added to the js queue, and decremented using an atomic barrier
|
|
1274
|
-
// call after the block is executed. If _pendingCount is zero, there is no
|
|
1275
|
-
// work either in the js queue, or in _pendingCalls, so it is safe to add new
|
|
1276
|
-
// work to the JS queue directly.
|
|
1277
|
-
|
|
1278
|
-
if (self.loading || _pendingCount > 0) {
|
|
1279
|
-
// From the callers' perspective:
|
|
1280
|
-
|
|
1281
|
-
// Phase 1: jsQueueBlocks are added to the queue; _pendingCount is
|
|
1282
|
-
// incremented for each. If the first block is created after self.loading is
|
|
1283
|
-
// true, phase 1 will be nothing.
|
|
1284
|
-
_pendingCount++;
|
|
1285
|
-
dispatch_block_t jsQueueBlock = ^{
|
|
1286
|
-
// From the perspective of the JS queue:
|
|
1287
|
-
if (self.loading) {
|
|
1288
|
-
// Phase A: jsQueueBlocks are executed. self.loading is true, so they
|
|
1289
|
-
// are added to _pendingCalls.
|
|
1290
|
-
[self->_pendingCalls addObject:block];
|
|
1291
|
-
} else {
|
|
1292
|
-
// Phase C: More jsQueueBlocks are executed. self.loading is false, so
|
|
1293
|
-
// each block is executed, adding work to the queue, and _pendingCount is
|
|
1294
|
-
// decremented.
|
|
1295
|
-
block();
|
|
1296
|
-
self->_pendingCount--;
|
|
1297
|
-
}
|
|
1298
|
-
};
|
|
1299
|
-
[self ensureOnJavaScriptThread:jsQueueBlock];
|
|
1300
|
-
} else {
|
|
1301
|
-
// Phase 2/Phase D: blocks are executed directly, adding work to the JS queue.
|
|
1302
|
-
block();
|
|
1303
|
-
}
|
|
1304
|
-
}
|
|
1305
|
-
|
|
1306
|
-
- (void)logStartupFinish
|
|
1307
|
-
{
|
|
1308
|
-
// Log metrics about native requires during the bridge startup.
|
|
1309
|
-
uint64_t nativeRequiresCount = [_performanceLogger valueForTag:RCTPLRAMNativeRequiresCount];
|
|
1310
|
-
[_performanceLogger setValue:nativeRequiresCount forTag:RCTPLRAMStartupNativeRequiresCount];
|
|
1311
|
-
uint64_t nativeRequires = [_performanceLogger valueForTag:RCTPLRAMNativeRequires];
|
|
1312
|
-
[_performanceLogger setValue:nativeRequires forTag:RCTPLRAMStartupNativeRequires];
|
|
1313
|
-
|
|
1314
|
-
[_performanceLogger markStopForTag:RCTPLBridgeStartup];
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
- (void)_flushPendingCalls
|
|
1318
|
-
{
|
|
1319
|
-
RCT_PROFILE_BEGIN_EVENT(0, @"Processing pendingCalls", @{@"count" : [@(_pendingCalls.count) stringValue]});
|
|
1320
|
-
// Phase B: _flushPendingCalls happens. Each block in _pendingCalls is
|
|
1321
|
-
// executed, adding work to the queue, and _pendingCount is decremented.
|
|
1322
|
-
// loading is set to NO.
|
|
1323
|
-
NSArray<RCTPendingCall> *pendingCalls = _pendingCalls;
|
|
1324
|
-
_pendingCalls = nil;
|
|
1325
|
-
for (RCTPendingCall call in pendingCalls) {
|
|
1326
|
-
call();
|
|
1327
|
-
_pendingCount--;
|
|
1328
|
-
}
|
|
1329
|
-
_loading = NO;
|
|
1330
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
/**
|
|
1334
|
-
* Public. Can be invoked from any thread.
|
|
1335
|
-
*/
|
|
1336
|
-
- (void)enqueueJSCall:(NSString *)module
|
|
1337
|
-
method:(NSString *)method
|
|
1338
|
-
args:(NSArray *)args
|
|
1339
|
-
completion:(dispatch_block_t)completion
|
|
1340
|
-
{
|
|
1341
|
-
if (!self.valid) {
|
|
1342
|
-
return;
|
|
1343
|
-
}
|
|
1344
|
-
|
|
1345
|
-
/**
|
|
1346
|
-
* AnyThread
|
|
1347
|
-
*/
|
|
1348
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge enqueueJSCall:]", nil);
|
|
1349
|
-
|
|
1350
|
-
RCTProfileBeginFlowEvent();
|
|
1351
|
-
__weak __typeof(self) weakSelf = self;
|
|
1352
|
-
[self _runAfterLoad:^() {
|
|
1353
|
-
RCTProfileEndFlowEvent();
|
|
1354
|
-
__strong __typeof(weakSelf) strongSelf = weakSelf;
|
|
1355
|
-
if (!strongSelf) {
|
|
1356
|
-
return;
|
|
1357
|
-
}
|
|
1358
|
-
|
|
1359
|
-
if (strongSelf->_reactInstance) {
|
|
1360
|
-
strongSelf->_reactInstance->callJSFunction(
|
|
1361
|
-
[module UTF8String], [method UTF8String], convertIdToFollyDynamic(args ?: @[]));
|
|
1362
|
-
|
|
1363
|
-
// ensureOnJavaScriptThread may execute immediately, so use jsMessageThread, to make sure
|
|
1364
|
-
// the block is invoked after callJSFunction
|
|
1365
|
-
if (completion) {
|
|
1366
|
-
if (strongSelf->_jsMessageThread) {
|
|
1367
|
-
strongSelf->_jsMessageThread->runOnQueue(completion);
|
|
1368
|
-
} else {
|
|
1369
|
-
RCTLogWarn(@"Can't invoke completion without messageThread");
|
|
1370
|
-
}
|
|
1371
|
-
}
|
|
1372
|
-
}
|
|
1373
|
-
}];
|
|
1374
|
-
|
|
1375
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
1376
|
-
}
|
|
1377
|
-
|
|
1378
|
-
/**
|
|
1379
|
-
* Called by RCTModuleMethod from any thread.
|
|
1380
|
-
*/
|
|
1381
|
-
- (void)enqueueCallback:(NSNumber *)cbID args:(NSArray *)args
|
|
1382
|
-
{
|
|
1383
|
-
if (!self.valid) {
|
|
1384
|
-
return;
|
|
1385
|
-
}
|
|
1386
|
-
|
|
1387
|
-
/**
|
|
1388
|
-
* AnyThread
|
|
1389
|
-
*/
|
|
1390
|
-
|
|
1391
|
-
RCTProfileBeginFlowEvent();
|
|
1392
|
-
__weak __typeof(self) weakSelf = self;
|
|
1393
|
-
[self _runAfterLoad:^() {
|
|
1394
|
-
RCTProfileEndFlowEvent();
|
|
1395
|
-
__strong __typeof(weakSelf) strongSelf = weakSelf;
|
|
1396
|
-
if (!strongSelf) {
|
|
1397
|
-
return;
|
|
1398
|
-
}
|
|
1399
|
-
|
|
1400
|
-
if (strongSelf->_reactInstance) {
|
|
1401
|
-
strongSelf->_reactInstance->callJSCallback([cbID unsignedLongLongValue], convertIdToFollyDynamic(args ?: @[]));
|
|
1402
|
-
}
|
|
1403
|
-
}];
|
|
1404
|
-
}
|
|
1405
|
-
|
|
1406
|
-
/**
|
|
1407
|
-
* Private hack to support `setTimeout(fn, 0)`
|
|
1408
|
-
*/
|
|
1409
|
-
- (void)_immediatelyCallTimer:(NSNumber *)timer
|
|
1410
|
-
{
|
|
1411
|
-
if (_reactInstance) {
|
|
1412
|
-
_reactInstance->callJSFunction(
|
|
1413
|
-
"JSTimers", "callTimers", folly::dynamic::array(folly::dynamic::array([timer doubleValue])));
|
|
1414
|
-
}
|
|
1415
|
-
}
|
|
1416
|
-
|
|
1417
|
-
- (void)enqueueApplicationScript:(NSData *)script url:(NSURL *)url onComplete:(dispatch_block_t)onComplete
|
|
1418
|
-
{
|
|
1419
|
-
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways, @"-[RCTCxxBridge enqueueApplicationScript]", nil);
|
|
1420
|
-
|
|
1421
|
-
[self executeApplicationScript:script url:url async:YES];
|
|
1422
|
-
|
|
1423
|
-
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
|
1424
|
-
|
|
1425
|
-
// Assumes that onComplete can be called when the next block on the JS thread is scheduled
|
|
1426
|
-
if (onComplete) {
|
|
1427
|
-
RCTAssert(_jsMessageThread != nullptr, @"Cannot invoke completion without jsMessageThread");
|
|
1428
|
-
_jsMessageThread->runOnQueue(onComplete);
|
|
1429
|
-
}
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
- (void)executeApplicationScriptSync:(NSData *)script url:(NSURL *)url
|
|
1433
|
-
{
|
|
1434
|
-
[self executeApplicationScript:script url:url async:NO];
|
|
1435
|
-
}
|
|
1436
|
-
|
|
1437
|
-
- (void)executeApplicationScript:(NSData *)script url:(NSURL *)url async:(BOOL)async
|
|
1438
|
-
{
|
|
1439
|
-
[self _tryAndHandleError:^{
|
|
1440
|
-
NSString *sourceUrlStr = deriveSourceURL(url);
|
|
1441
|
-
[[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptWillStartExecutingNotification
|
|
1442
|
-
object:self->_parentBridge
|
|
1443
|
-
userInfo:@{@"bridge" : self}];
|
|
1444
|
-
|
|
1445
|
-
BundleHeader header;
|
|
1446
|
-
[script getBytes:&header length:sizeof(header)];
|
|
1447
|
-
ScriptTag scriptType = parseTypeFromHeader(header);
|
|
1448
|
-
|
|
1449
|
-
// hold a local reference to reactInstance in case a parallel thread
|
|
1450
|
-
// resets it between null check and usage
|
|
1451
|
-
auto reactInstance = self->_reactInstance;
|
|
1452
|
-
if (scriptType == ScriptTag::RAMBundle) {
|
|
1453
|
-
[self->_performanceLogger markStartForTag:RCTPLRAMBundleLoad];
|
|
1454
|
-
auto ramBundle = std::make_unique<JSIndexedRAMBundle>(sourceUrlStr.UTF8String);
|
|
1455
|
-
std::unique_ptr<const JSBigString> scriptStr = ramBundle->getStartupCode();
|
|
1456
|
-
[self->_performanceLogger markStopForTag:RCTPLRAMBundleLoad];
|
|
1457
|
-
[self->_performanceLogger setValue:scriptStr->size() forTag:RCTPLRAMStartupCodeSize];
|
|
1458
|
-
if (reactInstance) {
|
|
1459
|
-
auto registry =
|
|
1460
|
-
RAMBundleRegistry::multipleBundlesRegistry(std::move(ramBundle), JSIndexedRAMBundle::buildFactory());
|
|
1461
|
-
reactInstance->loadRAMBundle(std::move(registry), std::move(scriptStr), sourceUrlStr.UTF8String, !async);
|
|
1462
|
-
}
|
|
1463
|
-
} else if (reactInstance) {
|
|
1464
|
-
reactInstance->loadScriptFromString(std::make_unique<NSDataBigString>(script), sourceUrlStr.UTF8String, !async);
|
|
1465
|
-
} else {
|
|
1466
|
-
std::string methodName = async ? "loadBundle" : "loadBundleSync";
|
|
1467
|
-
throw std::logic_error("Attempt to call " + methodName + ": on uninitialized bridge");
|
|
1468
|
-
}
|
|
1469
|
-
}];
|
|
1470
|
-
}
|
|
1471
|
-
|
|
1472
|
-
- (void)registerSegmentWithId:(NSUInteger)segmentId path:(NSString *)path
|
|
1473
|
-
{
|
|
1474
|
-
if (_reactInstance) {
|
|
1475
|
-
_reactInstance->registerBundle(static_cast<uint32_t>(segmentId), path.UTF8String);
|
|
1476
|
-
}
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
#pragma mark - Payload Processing
|
|
1480
|
-
|
|
1481
|
-
- (void)batchDidComplete
|
|
1482
|
-
{
|
|
1483
|
-
// TODO #12592471: batchDidComplete is only used by RCTUIManager,
|
|
1484
|
-
// can we eliminate this special case?
|
|
1485
|
-
for (RCTModuleData *moduleData in _moduleDataByID) {
|
|
1486
|
-
if (moduleData.implementsBatchDidComplete) {
|
|
1487
|
-
[self
|
|
1488
|
-
dispatchBlock:^{
|
|
1489
|
-
[moduleData.instance batchDidComplete];
|
|
1490
|
-
}
|
|
1491
|
-
queue:moduleData.methodQueue];
|
|
1492
|
-
}
|
|
1493
|
-
}
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
- (void)startProfiling
|
|
1497
|
-
{
|
|
1498
|
-
RCTAssertMainQueue();
|
|
1499
|
-
|
|
1500
|
-
[self ensureOnJavaScriptThread:^{
|
|
1501
|
-
RCTProfileInit(self);
|
|
1502
|
-
|
|
1503
|
-
[self enqueueJSCall:@"Systrace" method:@"setEnabled" args:@[ @YES ] completion:NULL];
|
|
1504
|
-
}];
|
|
1505
|
-
}
|
|
1506
|
-
|
|
1507
|
-
- (void)stopProfiling:(void (^)(NSData *))callback
|
|
1508
|
-
{
|
|
1509
|
-
RCTAssertMainQueue();
|
|
1510
|
-
|
|
1511
|
-
[self ensureOnJavaScriptThread:^{
|
|
1512
|
-
[self enqueueJSCall:@"Systrace" method:@"setEnabled" args:@[ @NO ] completion:NULL];
|
|
1513
|
-
RCTProfileEnd(self, ^(NSString *log) {
|
|
1514
|
-
NSData *logData = [log dataUsingEncoding:NSUTF8StringEncoding];
|
|
1515
|
-
callback(logData);
|
|
1516
|
-
});
|
|
1517
|
-
}];
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
|
-
- (BOOL)isBatchActive
|
|
1521
|
-
{
|
|
1522
|
-
return _reactInstance ? _reactInstance->isBatchActive() : NO;
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
- (void *)runtime
|
|
1526
|
-
{
|
|
1527
|
-
if (!_reactInstance) {
|
|
1528
|
-
return nullptr;
|
|
1529
|
-
}
|
|
1530
|
-
|
|
1531
|
-
return _reactInstance->getJavaScriptContext();
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
- (void)invokeAsync:(CallFunc &&)func
|
|
1535
|
-
{
|
|
1536
|
-
__block auto retainedFunc = std::move(func);
|
|
1537
|
-
__weak __typeof(self) weakSelf = self;
|
|
1538
|
-
[self _runAfterLoad:^{
|
|
1539
|
-
__strong __typeof(self) strongSelf = weakSelf;
|
|
1540
|
-
|
|
1541
|
-
if (std::shared_ptr<CallInvoker> jsInvoker = strongSelf.jsCallInvoker) {
|
|
1542
|
-
jsInvoker->invokeAsync(std::move(retainedFunc));
|
|
1543
|
-
}
|
|
1544
|
-
}];
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
#pragma mark - RCTBridge (RCTTurboModule)
|
|
1548
|
-
|
|
1549
|
-
- (std::shared_ptr<CallInvoker>)jsCallInvoker
|
|
1550
|
-
{
|
|
1551
|
-
return _reactInstance ? _reactInstance->getJSCallInvoker() : nullptr;
|
|
1552
|
-
}
|
|
1553
|
-
|
|
1554
|
-
- (std::shared_ptr<NativeMethodCallInvoker>)decorateNativeMethodCallInvoker:
|
|
1555
|
-
(std::shared_ptr<NativeMethodCallInvoker>)nativeInvoker
|
|
1556
|
-
{
|
|
1557
|
-
return _reactInstance ? _reactInstance->getDecoratedNativeMethodCallInvoker(nativeInvoker) : nullptr;
|
|
1558
|
-
}
|
|
1559
|
-
|
|
1560
|
-
#pragma mark - RCTModuleDataCallInvokerProvider
|
|
1561
|
-
|
|
1562
|
-
- (RCTCallInvoker *)callInvokerForModuleData:(RCTModuleData *)moduleData
|
|
1563
|
-
{
|
|
1564
|
-
return [[RCTCallInvoker alloc] initWithCallInvoker:self.jsCallInvoker];
|
|
1565
|
-
}
|
|
1566
|
-
|
|
1567
|
-
@end
|
|
1568
|
-
|
|
1569
|
-
#else // RCT_REMOVE_LEGACY_ARCH
|
|
1570
|
-
@implementation RCTCxxBridge
|
|
1571
|
-
@end
|
|
1572
|
-
#endif // RCT_REMOVE_LEGACY_ARCH
|