From 03ba8246c9b398f2195dc2483c9cfa87f7d7baba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Tue, 15 Sep 2026 05:18:48 -0700 Subject: [PATCH] Align the no-deep-imports auto-fix map with the public API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: The auto-fix map behind `react-native/no-deep-imports` had drifted from the exports declared in `index.js.flow`, so the rule offered fixes that do not type-check and missed fixes it could have offered. It was missing 28 modules, among them EventEmitter, CoreEventTypes, PlatformTypes, RendererProxy, usePressability, AssetRegistry and the virtual collection components. It still listed `InteractionManager`, which has been removed from the public API and whose root getter now throws in development, and `Touchable`, which is a value-only runtime re-export absent from the published types — auto-fixing either one produces broken code. It also carried a malformed `./Libraries/Utilities/PlatformTypes` key and two type names, `NativeMethods` and `NativeMethodsMixin`, that the root module does not export. The map is now generated from `index.js.flow`, so it tracks the real surface. Two groups of exports stay out of the map on purpose. The rule keeps reporting those deep imports; it simply does not offer a fix for them. Renamed re-exports such as `NativeText as unstable_NativeText`, and namespace re-exports such as `export * as Systrace`, cannot be expressed by a fixer that only rewrites same-name specifiers. Names published behind an `unstable_` or `experimental_` prefix are excluded as well. They are genuine public exports, but rewriting a deep import of `ViewNativeComponent` into `unstable_NativeView` quietly moves a call site onto an experimental API, and that is a choice the author should make rather than a lint fixer. `InitializeCore` and `RootTagTypes` remain hand-written entries, since neither is derivable from `index.js.flow`: the first has no root export at all and is replaced wholesale by the `react-native/setup-env` entry point, and the second re-exports `RootTag`, which the root does export. Changelog: [General][Fixed] - Align the `react-native/no-deep-imports` auto-fix map with the package's public API Differential Revision: D119678373 --- .../no-deep-imports.js | 3 +- packages/eslint-plugin-react-native/utils.js | 635 +++++++++++------- 2 files changed, 397 insertions(+), 241 deletions(-) diff --git a/packages/eslint-plugin-react-native/no-deep-imports.js b/packages/eslint-plugin-react-native/no-deep-imports.js index 1a682374c6be..50639ee29035 100644 --- a/packages/eslint-plugin-react-native/no-deep-imports.js +++ b/packages/eslint-plugin-react-native/no-deep-imports.js @@ -202,7 +202,8 @@ module.exports = { return ( source.value === 'react-native/asset-registry' || source.value === 'react-native/react-private-interface' || - source.value === 'react-native/setup-env' + source.value === 'react-native/setup-env' || + source.value === 'react-native/unstable-internals-do-not-use' ); } diff --git a/packages/eslint-plugin-react-native/utils.js b/packages/eslint-plugin-react-native/utils.js index 851592232ed0..be51ad8d14cf 100644 --- a/packages/eslint-plugin-react-native/utils.js +++ b/packages/eslint-plugin-react-native/utils.js @@ -15,95 +15,129 @@ * The assumption is that renaming/removing components shouldn't happen too often. * If a new component is added, it should be imported from the root. * If the path is not matched, the auto-fix won't be suggested. + * + * Mirrors the public API surface declared in `index.js.flow`, plus the re-export + * aliases below. + * + * `index.js.flow` names exactly one source module per export, but several modules + * re-export the same symbol and call sites import from whichever is closest to hand + * (e.g. `EventSubscription` is published from `vendor/emitter/EventEmitter` yet also + * re-exported by `EventEmitter/NativeEventEmitter`). Those aliases are listed + * explicitly so the rule keeps offering a fix for them. + * + * Two groups of exports are left out on purpose, so the deep import is still + * reported but no auto-fix is offered: + * - renamed re-exports (`NativeText as unstable_NativeText`) and namespace + * re-exports (`export * as Systrace`), which the fixer cannot express; + * - names published under an `unstable_` or `experimental_` prefix, since + * auto-fixing a call site onto an experimental API is not a decision a lint + * fixer should make on the author's behalf. */ const publicAPIMapping = { + 'Libraries/ActionSheetIOS/ActionSheetIOS': { + default: 'ActionSheetIOS', + types: [ + 'ActionSheetIOSOptions', + 'ShareActionSheetError', + 'ShareActionSheetIOSOptions', + ], + }, + 'Libraries/Alert/Alert': { + default: 'Alert', + types: ['AlertButton', 'AlertButtonStyle', 'AlertOptions', 'AlertType'], + }, + 'Libraries/Animated/Animated': { + default: 'Animated', + types: null, + }, + 'Libraries/Animated/Easing': { + default: 'Easing', + types: ['EasingFunction'], + }, + 'Libraries/Animated/useAnimatedColor': { + default: 'useAnimatedColor', + types: null, + }, + 'Libraries/Animated/useAnimatedValue': { + default: 'useAnimatedValue', + types: null, + }, + 'Libraries/Animated/useAnimatedValueXY': { + default: 'useAnimatedValueXY', + types: null, + }, + 'Libraries/AppState/AppState': { + default: 'AppState', + types: ['AppStateEvent', 'AppStateStatus'], + }, + 'Libraries/BatchedBridge/NativeModules': { + default: 'NativeModules', + types: null, + }, 'Libraries/Components/AccessibilityInfo/AccessibilityInfo': { default: 'AccessibilityInfo', types: null, }, 'Libraries/Components/ActivityIndicator/ActivityIndicator': { default: 'ActivityIndicator', - types: ['ActivityIndicatorProps'], + types: ['ActivityIndicatorInstance', 'ActivityIndicatorProps'], }, 'Libraries/Components/Button': { default: 'Button', - types: ['ButtonProps'], + types: ['ButtonInstance', 'ButtonProps'], + }, + 'Libraries/Components/Clipboard/Clipboard': { + default: 'Clipboard', + types: null, }, 'Libraries/Components/DrawerAndroid/DrawerLayoutAndroid': { default: 'DrawerLayoutAndroid', - types: ['DrawerLayoutAndroidProps', 'DrawerSlideEvent'], - }, - 'Libraries/Components/LayoutConformance/LayoutConformance': { - default: 'experimental_LayoutConformance', - types: ['LayoutConformanceProps'], - }, - 'Libraries/Core/InitializeCore': { - // `InitializeCore` has no public named export; the deep import must be - // swapped for the `react-native/setup-env` entry point entirely. - default: null, types: null, - replacementSource: 'react-native/setup-env', }, - 'Libraries/Lists/FlatList': { - default: 'FlatList', - types: ['FlatListProps'], - }, - 'Libraries/Image/Image': { - default: 'Image', + 'Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes': { + default: null, types: [ - 'ImageBackgroundProps', - 'ImageErrorEvent', - 'ImageLoadEvent', - 'ImageProgressEventIOS', - 'ImageProps', - 'ImagePropsAndroid', - 'ImagePropsBase', - 'ImagePropsIOS', - 'ImageResolvedAssetSource', - 'ImageSize', - 'ImageSourcePropType', + 'DrawerLayoutAndroidInstance', + 'DrawerLayoutAndroidProps', + 'DrawerSlideEvent', ], }, - 'Libraries/Image/ImageSource': { - default: null, - types: ['ImageRequireSource', 'ImageSource', 'ImageURISource'], - }, - 'Libraries/Image/ImageBackground': { - default: 'ImageBackground', - types: null, - }, - 'Libraries/Components/TextInput/InputAccessoryView': { - default: 'InputAccessoryView', - types: ['InputAccessoryViewProps'], + 'Libraries/Components/Keyboard/Keyboard': { + default: 'Keyboard', + types: [ + 'AndroidKeyboardEvent', + 'IOSKeyboardEvent', + 'KeyboardEvent', + 'KeyboardEventEasing', + 'KeyboardEventName', + 'KeyboardMetrics', + ], }, 'Libraries/Components/Keyboard/KeyboardAvoidingView': { default: 'KeyboardAvoidingView', - types: ['KeyboardAvoidingViewProps'], + types: ['KeyboardAvoidingViewInstance', 'KeyboardAvoidingViewProps'], }, - 'Libraries/Modal/Modal': { - default: 'Modal', - types: [ - 'ModalBaseProps', - 'ModalProps', - 'ModalPropsAndroid', - 'ModalPropsIOS', - ], + 'Libraries/Components/LayoutConformance/LayoutConformance': { + default: null, + types: ['LayoutConformanceProps'], }, 'Libraries/Components/Pressable/Pressable': { default: 'Pressable', types: [ 'PressableAndroidRippleConfig', + 'PressableInstance', 'PressableProps', 'PressableStateCallbackType', ], }, 'Libraries/Components/ProgressBarAndroid/ProgressBarAndroid': { default: 'ProgressBarAndroid', - types: ['ProgressBarAndroidProps'], + types: ['ProgressBarAndroidInstance', 'ProgressBarAndroidProps'], }, 'Libraries/Components/RefreshControl/RefreshControl': { default: 'RefreshControl', types: [ + 'RefreshControlInstance', 'RefreshControlProps', 'RefreshControlPropsAndroid', 'RefreshControlPropsIOS', @@ -111,77 +145,78 @@ const publicAPIMapping = { }, 'Libraries/Components/SafeAreaView/SafeAreaView': { default: 'SafeAreaView', - types: null, + types: ['SafeAreaViewInstance'], }, 'Libraries/Components/ScrollView/ScrollView': { default: 'ScrollView', types: [ 'ScrollResponderType', + 'ScrollViewImperativeMethods', + 'ScrollViewInstance', 'ScrollViewProps', 'ScrollViewPropsAndroid', 'ScrollViewPropsIOS', - 'ScrollViewImperativeMethods', 'ScrollViewScrollToOptions', ], }, - 'Libraries/Lists/SectionList': { - default: 'SectionList', - types: [ - 'SectionListProps', - 'SectionListRenderItem', - 'SectionListRenderItemInfo', - 'SectionListData', - ], - }, 'Libraries/Components/StatusBar/StatusBar': { default: 'StatusBar', - types: ['StatusBarAnimation', 'StatusBarProps', 'StatusBarStyle'], + types: [ + 'StatusBarAnimation', + 'StatusBarInstance', + 'StatusBarProps', + 'StatusBarStyle', + ], }, 'Libraries/Components/Switch/Switch': { default: 'Switch', - types: ['SwitchChangeEvent', 'SwitchProps'], + types: ['SwitchChangeEvent', 'SwitchInstance', 'SwitchProps'], }, - 'Libraries/Text/Text': { - default: 'Text', - types: ['TextProps'], + 'Libraries/Components/TextInput/InputAccessoryView': { + default: 'InputAccessoryView', + types: ['InputAccessoryViewProps'], }, 'Libraries/Components/TextInput/TextInput': { default: 'TextInput', types: [ 'AutoCapitalize', + 'BlurEvent', 'EnterKeyHintTypeOptions', - 'KeyboardTypeOptions', + 'FocusEvent', 'InputModeOptions', + 'KeyboardTypeOptions', + 'ReturnKeyTypeOptions', + 'SubmitBehavior', 'TextContentType', 'TextInputAndroidProps', - 'TextInputIOSProps', - 'TextInputProps', + 'TextInputBlurEvent', 'TextInputChangeEvent', 'TextInputContentSizeChangeEvent', 'TextInputEndEditingEvent', 'TextInputFocusEvent', + 'TextInputIOSProps', + 'TextInputInstance', 'TextInputKeyPressEvent', + 'TextInputProps', 'TextInputSelectionChangeEvent', 'TextInputSubmitEditingEvent', - 'ReturnKeyTypeOptions', - 'SubmitBehavior', ], }, - 'Libraries/Components/Touchable/Touchable': { - default: 'Touchable', + 'Libraries/Components/ToastAndroid/ToastAndroid': { + default: 'ToastAndroid', types: null, }, 'Libraries/Components/Touchable/TouchableHighlight': { default: 'TouchableHighlight', - types: ['TouchableHighlightProps'], + types: ['TouchableHighlightInstance', 'TouchableHighlightProps'], }, 'Libraries/Components/Touchable/TouchableNativeFeedback': { default: 'TouchableNativeFeedback', - types: ['TouchableNativeFeedbackProps'], + types: ['TouchableNativeFeedbackInstance', 'TouchableNativeFeedbackProps'], }, 'Libraries/Components/Touchable/TouchableOpacity': { default: 'TouchableOpacity', - types: ['TouchableOpacityProps'], + types: ['TouchableOpacityInstance', 'TouchableOpacityProps'], }, 'Libraries/Components/Touchable/TouchableWithoutFeedback': { default: 'TouchableWithoutFeedback', @@ -189,12 +224,13 @@ const publicAPIMapping = { }, 'Libraries/Components/View/View': { default: 'View', - types: null, + types: ['ViewInstance'], }, 'Libraries/Components/View/ViewAccessibility': { default: null, types: [ 'AccessibilityActionEvent', + 'AccessibilityActionInfo', 'AccessibilityProps', 'AccessibilityRole', 'AccessibilityState', @@ -202,6 +238,10 @@ const publicAPIMapping = { 'Role', ], }, + 'Libraries/Components/View/ViewNativeComponent': { + default: null, + types: null, + }, 'Libraries/Components/View/ViewPropTypes': { default: null, types: [ @@ -212,107 +252,75 @@ const publicAPIMapping = { 'ViewPropsIOS', ], }, - 'Libraries/Lists/VirtualizedList': { - default: 'VirtualizedList', - types: [ - 'ListRenderItemInfo', - 'ListRenderItem', - 'Separators', - 'VirtualizedListProps', - ], - }, - 'Libraries/Lists/VirtualizedSectionList': { - default: 'VirtualizedSectionList', - types: [ - 'ScrollToLocationParamsType', - 'SectionBase', - 'VirtualizedSectionListProps', - ], - }, - 'Libraries/ActionSheetIOS/ActionSheetIOS': { - default: 'ActionSheetIOS', - types: [ - 'ActionSheetIOSOptions', - 'ShareActionSheetIOSOptions', - 'ShareActionSheetError', - ], - }, - 'Libraries/Alert/Alert': { - default: 'Alert', - types: ['AlertType', 'AlertButtonStyle', 'AlertButton', 'AlertOptions'], + 'Libraries/Core/InitializeCore': { + // `InitializeCore` has no public named export; the deep import must be + // swapped for the `react-native/setup-env` entry point entirely. + default: null, + types: null, + replacementSource: 'react-native/setup-env', }, - 'Libraries/Animated/Animated': { - default: 'Animated', + 'Libraries/Core/ReactNativeVersion': { + default: 'ReactNativeVersion', types: null, }, - 'Libraries/Utilities/Appearance': { - default: 'Appearance', + 'Libraries/Core/registerCallableModule': { + default: 'registerCallableModule', types: null, }, - 'Libraries/ReactNative/AppRegistry': { - default: 'AppRegistry', + 'Libraries/EventEmitter/NativeEventEmitter': { + default: 'NativeEventEmitter', types: [ - 'TaskProvider', - 'ComponentProvider', - 'ComponentProviderInstrumentationHook', - 'AppConfig', - 'Runnable', - 'Runnables', - 'Registry', - 'WrapperComponentProvider', - 'RootViewStyleProvider', + 'EmitterSubscription', + 'EventSubscription', + 'NativeEventSubscription', ], }, - 'Libraries/AppState/AppState': { - default: 'AppState', - types: ['AppStateStatus', 'AppStateEvent'], - }, - 'Libraries/Utilities/BackHandler': { - default: 'BackHandler', - types: ['BackPressEventName'], - }, - 'Libraries/Components/Clipboard/Clipboard': { - default: 'Clipboard', - types: null, - }, - 'Libraries/Utilities/DeviceInfo': { - default: 'DeviceInfo', - types: ['DeviceInfoConstants'], - }, - 'src/private/devsupport/devmenu/DevMenu': { - default: 'DevMenu', + 'Libraries/EventEmitter/RCTDeviceEventEmitter': { + default: 'DeviceEventEmitter', types: null, }, - 'Libraries/Utilities/DevSettings': { - default: 'DevSettings', + 'Libraries/EventEmitter/RCTNativeAppEventEmitter': { + default: 'NativeAppEventEmitter', types: null, }, - 'Libraries/Utilities/Dimensions': { - default: 'Dimensions', + 'Libraries/Image/Image': { + default: 'Image', types: [ - 'DimensionsPayload', - 'DisplayMetrics', - 'DisplayMetricsAndroid', - 'ScaledSize', + 'ImageBackgroundProps', + 'ImageErrorEvent', + 'ImageLoadEvent', + 'ImageProgressEventIOS', + 'ImageProps', + 'ImagePropsAndroid', + 'ImagePropsBase', + 'ImagePropsIOS', + 'ImageResolvedAssetSource', + 'ImageSize', + 'ImageSourcePropType', ], }, - 'Libraries/Animated/Easing': { - default: 'Easing', - types: ['EasingFunction'], + 'Libraries/Image/ImageBackground': { + default: 'ImageBackground', + types: ['ImageBackgroundInstance', 'ImageBackgroundProps'], }, - 'Libraries/ReactNative/I18nManager': { - default: 'I18nManager', - types: null, + 'Libraries/Image/ImageResizeMode': { + default: null, + types: ['ImageResizeMode'], }, - 'Libraries/Components/Keyboard/Keyboard': { - default: 'Keyboard', + 'Libraries/Image/ImageSource': { + default: null, + types: ['ImageRequireSource', 'ImageSource', 'ImageURISource'], + }, + 'Libraries/Image/ImageTypes.flow': { + default: null, + types: ['ImageInstance', 'ImageProps'], + }, + 'Libraries/Interaction/PanResponder': { + default: 'PanResponder', types: [ - 'AndroidKeyboardEvent', - 'IOSKeyboardEvent', - 'KeyboardEvent', - 'KeyboardEventEasing', - 'KeyboardEventName', - 'KeyboardMetrics', + 'PanResponderCallbacks', + 'PanResponderGestureState', + 'PanResponderInstance', ], }, 'Libraries/LayoutAnimation/LayoutAnimation': { @@ -330,42 +338,114 @@ const publicAPIMapping = { default: 'Linking', types: null, }, + 'Libraries/Lists/FlatList': { + default: 'FlatList', + types: ['FlatListInstance', 'FlatListProps'], + }, + 'Libraries/Lists/SectionList': { + default: 'SectionList', + types: [ + 'SectionBase', + 'SectionListData', + 'SectionListInstance', + 'SectionListProps', + 'SectionListRenderItem', + 'SectionListRenderItemInfo', + ], + }, + 'Libraries/Lists/VirtualizedList': { + default: 'VirtualizedList', + types: [ + 'ListRenderItem', + 'ListRenderItemInfo', + 'ListViewToken', + 'Separators', + 'VirtualizedListInstance', + 'VirtualizedListProps', + ], + }, + 'Libraries/Lists/VirtualizedSectionList': { + default: 'VirtualizedSectionList', + types: [ + 'ScrollToLocationParamsType', + 'SectionBase', + 'VirtualizedSectionListInstance', + 'VirtualizedSectionListProps', + ], + }, 'Libraries/LogBox/LogBox': { default: 'LogBox', types: ['ExtendedExceptionData', 'IgnorePattern', 'LogData'], }, - 'Libraries/EventEmitter/NativeEventEmitter': { - default: 'NativeEventEmitter', + 'Libraries/Modal/Modal': { + default: 'Modal', types: [ - 'EventSubscription', - 'EmitterSubscription', - 'NativeEventSubscription', + 'ModalBaseProps', + 'ModalInstance', + 'ModalProps', + 'ModalPropsAndroid', + 'ModalPropsIOS', ], }, 'Libraries/Network/RCTNetworking': { default: 'Networking', types: null, }, - 'Libraries/Interaction/PanResponder': { - default: 'PanResponder', - types: [ - 'PanResponderCallbacks', - 'PanResponderGestureState', - 'PanResponderInstance', - ], - }, 'Libraries/PermissionsAndroid/PermissionsAndroid': { default: 'PermissionsAndroid', types: ['Permission', 'PermissionStatus', 'Rationale'], }, - 'Libraries/Utilities/PixelRatio': { - default: 'PixelRatio', + 'Libraries/Pressability/Pressability': { + default: null, + types: ['PressabilityConfig'], + }, + 'Libraries/Pressability/usePressability': { + default: 'usePressability', types: null, }, 'Libraries/PushNotificationIOS/PushNotificationIOS': { default: 'PushNotificationIOS', types: ['PushNotificationEventName', 'PushNotificationPermissions'], }, + 'Libraries/ReactNative/AppRegistry': { + default: null, + types: [ + 'AppConfig', + 'AppRegistry', + 'ComponentProvider', + 'ComponentProviderInstrumentationHook', + 'Registry', + 'RootViewStyleProvider', + 'Runnable', + 'Runnables', + 'TaskProvider', + 'WrapperComponentProvider', + ], + }, + 'Libraries/ReactNative/I18nManager': { + default: 'I18nManager', + types: null, + }, + 'Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance': { + default: null, + types: ['PublicRootInstance', 'PublicTextInstance'], + }, + 'Libraries/ReactNative/RendererProxy': { + default: null, + types: ['findNodeHandle'], + }, + 'Libraries/ReactNative/RootTag': { + default: null, + types: ['RootTag', 'RootTagContext'], + }, + 'Libraries/ReactNative/UIManager': { + default: 'UIManager', + types: null, + }, + 'Libraries/ReactNative/requireNativeComponent': { + default: 'requireNativeComponent', + types: null, + }, 'Libraries/Settings/Settings': { default: 'Settings', types: null, @@ -374,13 +454,30 @@ const publicAPIMapping = { default: 'Share', types: ['ShareAction', 'ShareContent', 'ShareOptions'], }, + 'Libraries/StyleSheet/EdgeInsetsPropType': { + default: null, + types: ['EdgeInsetsProp'], + }, + 'Libraries/StyleSheet/PlatformColorValueTypes': { + default: null, + types: ['PlatformColor'], + }, + 'Libraries/StyleSheet/PlatformColorValueTypesIOS': { + default: null, + types: ['DynamicColorIOS', 'DynamicColorIOSTuple'], + }, + 'Libraries/StyleSheet/Rect': { + default: null, + types: ['Insets'], + }, 'Libraries/StyleSheet/StyleSheet': { default: 'StyleSheet', types: [ + 'BoxShadowValue', 'ColorValue', - 'ImageStyle', 'FilterFunction', 'FontVariant', + 'ImageStyle', 'NativeColorValue', 'OpaqueColorValue', 'StyleProp', @@ -397,128 +494,186 @@ const publicAPIMapping = { 'DimensionValue', 'DropShadowValue', 'EdgeInsetsValue', + 'FilterFunction', + 'NativeColorValue', 'PointValue', ], }, - 'Libraries/StyleSheet/Rect': { + 'Libraries/StyleSheet/processColor': { + default: 'processColor', + types: ['ProcessedColorValue'], + }, + 'Libraries/Text/Text': { + default: 'Text', + types: ['TextInstance', 'TextProps'], + }, + 'Libraries/Text/TextAncestorContext': { default: null, - types: ['Insets'], + types: null, }, - 'Libraries/Performance/Systrace': { - default: 'Systrace', + 'Libraries/Text/TextNativeComponent': { + default: null, types: null, }, - 'Libraries/Components/ToastAndroid/ToastAndroid': { - default: 'ToastAndroid', + 'Libraries/Text/TextProps': { + default: null, + types: ['TextProps'], + }, + 'Libraries/TurboModule/RCTExport': { + default: null, + types: ['RootTag', 'TurboModule'], + }, + 'Libraries/Types/CoreEventTypes': { + default: null, + types: [ + 'BlurEvent', + 'FocusEvent', + 'GestureResponderEvent', + 'KeyDownEvent', + 'KeyEvent', + 'KeyUpEvent', + 'LayoutChangeEvent', + 'LayoutRectangle', + 'MouseEvent', + 'NativeMouseEvent', + 'NativePointerEvent', + 'NativeScrollEvent', + 'NativeSyntheticEvent', + 'NativeTouchEvent', + 'NativeUIEvent', + 'PointerEvent', + 'ResponderSyntheticEvent', + 'ScrollEvent', + 'TargetedEvent', + 'TextLayoutEvent', + ], + }, + 'Libraries/Types/RootTagTypes': { + default: null, + types: ['RootTag'], + }, + 'Libraries/UTFSequence': { + default: 'UTFSequence', types: null, }, - 'Libraries/TurboModule/TurboModuleRegistry': { - default: 'TurboModuleRegistry', + 'Libraries/Utilities/BackHandler': { + default: 'BackHandler', + types: ['BackPressEventName'], + }, + 'Libraries/Utilities/DevSettings': { + default: 'DevSettings', types: null, }, - 'Libraries/TurboModule/RCTExport': { + 'Libraries/Utilities/DeviceInfo': { + default: 'DeviceInfo', + types: ['DeviceInfoConstants'], + }, + 'Libraries/Utilities/Dimensions': { + default: 'Dimensions', + types: [ + 'DimensionsPayload', + 'DisplayMetrics', + 'DisplayMetricsAndroid', + 'ScaledSize', + ], + }, + 'Libraries/Utilities/PixelRatio': { + default: 'PixelRatio', + types: null, + }, + 'Libraries/Utilities/Platform': { + default: 'Platform', + types: null, + }, + 'Libraries/Utilities/PlatformTypes': { default: null, - types: ['TurboModule'], + types: ['PlatformOSType', 'PlatformSelectSpec'], }, - 'Libraries/ReactNative/UIManager': { - default: 'UIManager', + 'Libraries/Utilities/codegenNativeCommands': { + default: 'codegenNativeCommands', types: null, }, - 'Libraries/Animated/useAnimatedValue': { - default: 'useAnimatedValue', + 'Libraries/Utilities/codegenNativeComponent': { + default: 'codegenNativeComponent', types: null, }, 'Libraries/Utilities/useColorScheme': { default: 'useColorScheme', types: null, }, - 'src/private/specs_DEPRECATED/modules/NativeAppearance': { - default: null, - types: ['ColorSchemeName'], - }, 'Libraries/Utilities/useWindowDimensions': { default: 'useWindowDimensions', types: null, }, - 'Libraries/UTFSequence': { - default: 'UTFSequence', - types: null, - }, 'Libraries/Vibration/Vibration': { default: 'Vibration', types: null, }, - 'Libraries/Utilities/codegenNativeComponent': { - default: 'codegenNativeComponent', - types: null, + 'Libraries/vendor/core/ErrorUtils': { + default: null, + types: ['ErrorUtils'], }, - 'Libraries/Utilities/codegenNativeCommands': { - default: 'codegenNativeCommands', - types: null, + 'Libraries/vendor/emitter/EventEmitter': { + default: 'EventEmitter', + types: ['EventSubscription', 'IEventEmitter'], }, - 'Libraries/EventEmitter/RCTDeviceEventEmitter': { - default: 'DeviceEventEmitter', + 'src/private/assets/AssetRegistry': { + default: null, + types: ['AssetDestPathResolver', 'AssetRegistry', 'PackagerAsset'], + }, + 'src/private/components/virtualcollection/FlingConstants': { + default: null, types: null, }, - 'Libraries/StyleSheet/PlatformColorValueTypesIOS': { - default: 'DynamicColorIOS', - types: ['DynamicColorIOSTuple'], + 'src/private/components/virtualcollection/Virtual': { + default: null, + types: null, }, - 'Libraries/EventEmitter/RCTNativeAppEventEmitter': { - default: 'NativeAppEventEmitter', + 'src/private/components/virtualcollection/VirtualCollectionView': { + default: null, types: null, }, - 'Libraries/BatchedBridge/NativeModules': { - default: 'NativeModules', + 'src/private/components/virtualcollection/column/VirtualColumn': { + default: null, types: null, }, - 'Libraries/Utilities/Platform': { - default: 'Platform', + 'src/private/components/virtualcollection/column/VirtualColumnGenerator': { + default: null, types: null, }, - './Libraries/Utilities/PlatformTypes': { + 'src/private/components/virtualcollection/dom/getScrollParent': { default: null, - types: ['PlatformOSType', 'PlatformSelectSpec'], + types: null, }, - 'Libraries/StyleSheet/PlatformColorValueTypes': { - default: 'PlatformColor', + 'src/private/components/virtualcollection/row/VirtualRow': { + default: null, types: null, }, - 'Libraries/StyleSheet/processColor': { - default: 'processColor', - types: ['ProcessedColorValue'], + 'src/private/components/virtualview/VirtualView': { + default: null, + types: ['ModeChangeEvent', 'VirtualViewMode'], }, - 'Libraries/ReactNative/requireNativeComponent': { - default: 'requireNativeComponent', + 'src/private/devsupport/devmenu/DevMenu': { + default: 'DevMenu', types: null, }, - 'Libraries/ReactNative/RootTag': { - default: 'RootTagContext', - types: ['RootTag'], + 'src/private/specs_DEPRECATED/modules/NativeAppearance': { + default: null, + types: ['ColorSchemeName'], }, - 'Libraries/Types/RootTagTypes': { + 'src/private/types/HostComponent': { default: null, - types: ['RootTag'], + types: ['HostComponent'], }, 'src/private/types/HostInstance': { default: null, types: [ 'HostInstance', - 'NativeMethods', - 'NativeMethodsMixin', 'MeasureInWindowOnSuccessCallback', 'MeasureLayoutOnSuccessCallback', 'MeasureOnSuccessCallback', ], }, - 'src/private/types/HostComponent': { - default: null, - types: ['HostComponent'], - }, - 'Libraries/vendor/core/ErrorUtils': { - default: null, - types: ['ErrorUtils'], - }, }; module.exports = {