From 26e33a5f175e4a715d827be773efdb427ca2b52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Mon, 22 Jan 2024 09:47:08 -0800 Subject: [PATCH] Back out "Revert D52919566: [RN] Move codegen root directory from Libraries to src" Summary: Changelog: [internal] bypass-github-export-checks Reviewed By: huntie Differential Revision: D52958335 fbshipit-source-id: 24403cdae650fdd4ec0c739b912f69bd6cd5aaad --- .../NativeActionSheetManager.js | 49 +- .../Libraries/Alert/NativeAlertManager.js | 30 +- .../Animated/NativeAnimatedModule.js | 72 +- .../Animated/NativeAnimatedTurboModule.js | 73 +- .../Libraries/AppState/NativeAppState.js | 28 +- .../Libraries/Blob/NativeBlobModule.js | 54 +- .../Libraries/Blob/NativeFileReaderModule.js | 17 +- .../BugReporting/NativeBugReporting.js | 15 +- .../NativeAccessibilityInfo.js | 26 +- .../NativeAccessibilityManager.js | 61 +- .../ActivityIndicatorViewNativeComponent.js | 46 +- .../Components/Clipboard/NativeClipboard.js | 14 +- .../AndroidDrawerLayoutNativeComponent.js | 117 +- .../Keyboard/NativeKeyboardObserver.js | 13 +- .../ProgressBarAndroidNativeComponent.js | 28 +- ...ndroidSwipeRefreshLayoutNativeComponent.js | 67 +- .../PullToRefreshViewNativeComponent.js | 64 +- .../RCTSafeAreaViewNativeComponent.js | 18 +- ...izontalScrollContentViewNativeComponent.js | 19 +- .../Components/Sound/NativeSoundManager.js | 15 +- .../NativeStatusBarManagerAndroid.js | 61 +- .../StatusBar/NativeStatusBarManagerIOS.js | 82 +- .../Switch/AndroidSwitchNativeComponent.js | 57 +- .../Switch/SwitchNativeComponent.js | 56 +- .../RCTInputAccessoryViewNativeComponent.js | 21 +- .../ToastAndroid/NativeToastAndroid.js | 31 +- .../UnimplementedNativeViewNativeComponent.js | 19 +- .../Libraries/Core/NativeExceptionsManager.js | 96 +- .../SegmentFetcher/NativeSegmentFetcher.js | 21 +- .../Libraries/Core/Timers/NativeTiming.js | 19 +- .../DebuggingOverlayNativeComponent.js | 56 +- .../NativeDevToolsSettingsManager.js | 17 +- .../HeapCapture/NativeJSCHeapCapture.js | 12 +- .../Libraries/Image/NativeImageEditor.js | 45 +- .../Image/NativeImageLoaderAndroid.js | 25 +- .../Libraries/Image/NativeImageLoaderIOS.js | 32 +- .../Image/NativeImageStoreAndroid.js | 19 +- .../Libraries/Image/NativeImageStoreIOS.js | 26 +- .../Interaction/NativeFrameRateLogger.js | 17 +- .../NativeIntersectionObserver.js | 34 +- .../Libraries/Linking/NativeIntentAndroid.js | 23 +- .../Libraries/Linking/NativeLinkingManager.js | 20 +- .../Libraries/Modal/NativeModalManager.js | 14 +- .../Modal/RCTModalHostViewNativeComponent.js | 132 +- .../NativeMutationObserver.js | 51 +- .../specs/NativeAnimationsDebugModule.js | 13 +- .../NativeModules/specs/NativeDevMenu.js | 16 +- .../NativeModules/specs/NativeDevSettings.js | 26 +- .../specs/NativeDeviceEventManager.js | 12 +- .../specs/NativeDialogManagerAndroid.js | 41 +- .../NativeModules/specs/NativeLogBox.js | 13 +- .../NativeModules/specs/NativeRedBox.js | 15 +- .../NativeModules/specs/NativeSourceCode.js | 27 +- .../Network/NativeNetworkingAndroid.js | 32 +- .../Libraries/Network/NativeNetworkingIOS.js | 32 +- .../Performance/NativeJSCSamplingProfiler.js | 12 +- .../NativePermissionsAndroid.js | 72 +- .../NativePushNotificationManagerIOS.js | 102 +- .../NativeHeadlessJsTaskSupport.js | 13 +- .../ReactNative/NativeI18nManager.js | 21 +- .../Libraries/ReactNative/NativeUIManager.js | 113 +- .../Settings/NativeSettingsManager.js | 20 +- .../Libraries/Share/NativeShareModule.js | 16 +- .../samples/NativeSampleTurboModule.js | 45 +- .../Libraries/Utilities/NativeAppearance.js | 29 +- .../Utilities/NativeDevLoadingView.js | 17 +- .../Libraries/Utilities/NativeDeviceInfo.js | 49 +- .../NativePlatformConstantsAndroid.js | 37 +- .../Utilities/NativePlatformConstantsIOS.js | 30 +- .../Libraries/Vibration/NativeVibration.js | 17 +- .../WebPerformance/NativePerformance.js | 26 +- .../NativePerformanceObserver.js | 54 +- .../WebSocket/NativeWebSocketModule.js | 29 +- .../__snapshots__/public-api-test.js.snap | 1475 ++--------------- .../ReactAndroid/build.gradle.kts | 2 +- packages/react-native/package.json | 4 +- .../ActivityIndicatorViewNativeComponent.js | 53 + .../AndroidDrawerLayoutNativeComponent.js | 124 ++ ...izontalScrollContentViewNativeComponent.js | 26 + ...ndroidSwipeRefreshLayoutNativeComponent.js | 74 + .../AndroidSwitchNativeComponent.js | 62 + .../DebuggingOverlayNativeComponent.js | 61 + .../ProgressBarAndroidNativeComponent.js | 36 + .../PullToRefreshViewNativeComponent.js | 71 + .../RCTInputAccessoryViewNativeComponent.js | 26 + .../RCTModalHostViewNativeComponent.js | 139 ++ .../RCTSafeAreaViewNativeComponent.js | 25 + .../specs/components/SwitchNativeComponent.js | 61 + .../UnimplementedNativeViewNativeComponent.js | 26 + .../specs/modules/NativeAccessibilityInfo.js | 33 + .../modules/NativeAccessibilityManager.js | 66 + .../specs/modules/NativeActionSheetManager.js | 54 + .../specs/modules/NativeAlertManager.js | 35 + .../specs/modules/NativeAnimatedModule.js | 77 + .../modules/NativeAnimatedTurboModule.js | 78 + .../modules/NativeAnimationsDebugModule.js | 20 + .../private/specs/modules/NativeAppState.js | 33 + .../private/specs/modules/NativeAppearance.js | 36 + .../private/specs/modules/NativeBlobModule.js | 59 + .../specs/modules/NativeBugReporting.js | 20 + .../private/specs/modules/NativeClipboard.js | 21 + .../specs/modules/NativeDevLoadingView.js | 24 + .../private/specs/modules/NativeDevMenu.js | 23 + .../specs/modules/NativeDevSettings.js | 33 + .../modules/NativeDevToolsSettingsManager.js | 24 + .../specs/modules/NativeDeviceEventManager.js | 19 + .../private/specs/modules/NativeDeviceInfo.js | 58 + .../modules/NativeDialogManagerAndroid.js | 48 + .../specs/modules/NativeExceptionsManager.js | 103 ++ .../specs/modules/NativeFileReaderModule.js | 22 + .../specs/modules/NativeFrameRateLogger.js | 22 + .../modules/NativeHeadlessJsTaskSupport.js | 20 + .../specs/modules/NativeI18nManager.js | 28 + .../specs/modules/NativeImageEditor.js | 52 + .../specs/modules/NativeImageLoaderAndroid.js | 30 + .../specs/modules/NativeImageLoaderIOS.js | 37 + .../specs/modules/NativeImageStoreAndroid.js | 26 + .../specs/modules/NativeImageStoreIOS.js | 33 + .../specs/modules/NativeIntentAndroid.js | 30 + .../modules/NativeIntersectionObserver.js | 41 + .../specs/modules/NativeJSCHeapCapture.js | 19 + .../modules/NativeJSCSamplingProfiler.js | 19 + .../specs/modules/NativeKeyboardObserver.js | 20 + .../specs/modules/NativeLinkingManager.js | 27 + .../src/private/specs/modules/NativeLogBox.js | 20 + .../specs/modules/NativeModalManager.js | 21 + .../specs/modules/NativeMutationObserver.js | 58 + .../specs/modules/NativeNetworkingAndroid.js | 37 + .../specs/modules/NativeNetworkingIOS.js | 37 + .../specs/modules/NativePerformance.js | 33 + .../modules/NativePerformanceObserver.js | 61 + .../specs/modules/NativePermissionsAndroid.js | 77 + .../modules/NativePlatformConstantsAndroid.js | 44 + .../modules/NativePlatformConstantsIOS.js | 37 + .../NativePushNotificationManagerIOS.js | 107 ++ .../src/private/specs/modules/NativeRedBox.js | 20 + .../specs/modules/NativeSampleTurboModule.js | 53 + .../specs/modules/NativeSegmentFetcher.js | 28 + .../specs/modules/NativeSettingsManager.js | 25 + .../specs/modules/NativeShareModule.js | 23 + .../specs/modules/NativeSoundManager.js | 22 + .../private/specs/modules/NativeSourceCode.js | 36 + .../modules/NativeStatusBarManagerAndroid.js | 68 + .../modules/NativeStatusBarManagerIOS.js | 89 + .../src/private/specs/modules/NativeTiming.js | 26 + .../specs/modules/NativeToastAndroid.js | 38 + .../private/specs/modules/NativeUIManager.js | 118 ++ .../private/specs/modules/NativeVibration.js | 24 + .../specs/modules/NativeWebSocketModule.js | 34 + 149 files changed, 3600 insertions(+), 3832 deletions(-) create mode 100644 packages/react-native/src/private/specs/components/ActivityIndicatorViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/AndroidSwitchNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/DebuggingOverlayNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/ProgressBarAndroidNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/PullToRefreshViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/RCTModalHostViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/RCTSafeAreaViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/SwitchNativeComponent.js create mode 100644 packages/react-native/src/private/specs/components/UnimplementedNativeViewNativeComponent.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAccessibilityInfo.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAccessibilityManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeActionSheetManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAlertManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAnimatedModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAnimatedTurboModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAnimationsDebugModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAppState.js create mode 100644 packages/react-native/src/private/specs/modules/NativeAppearance.js create mode 100644 packages/react-native/src/private/specs/modules/NativeBlobModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeBugReporting.js create mode 100644 packages/react-native/src/private/specs/modules/NativeClipboard.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDevLoadingView.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDevMenu.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDevSettings.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDevToolsSettingsManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDeviceEventManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDeviceInfo.js create mode 100644 packages/react-native/src/private/specs/modules/NativeDialogManagerAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeExceptionsManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeFileReaderModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeFrameRateLogger.js create mode 100644 packages/react-native/src/private/specs/modules/NativeHeadlessJsTaskSupport.js create mode 100644 packages/react-native/src/private/specs/modules/NativeI18nManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeImageEditor.js create mode 100644 packages/react-native/src/private/specs/modules/NativeImageLoaderAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeImageLoaderIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativeImageStoreAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeImageStoreIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativeIntentAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeIntersectionObserver.js create mode 100644 packages/react-native/src/private/specs/modules/NativeJSCHeapCapture.js create mode 100644 packages/react-native/src/private/specs/modules/NativeJSCSamplingProfiler.js create mode 100644 packages/react-native/src/private/specs/modules/NativeKeyboardObserver.js create mode 100644 packages/react-native/src/private/specs/modules/NativeLinkingManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeLogBox.js create mode 100644 packages/react-native/src/private/specs/modules/NativeModalManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeMutationObserver.js create mode 100644 packages/react-native/src/private/specs/modules/NativeNetworkingAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeNetworkingIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativePerformance.js create mode 100644 packages/react-native/src/private/specs/modules/NativePerformanceObserver.js create mode 100644 packages/react-native/src/private/specs/modules/NativePermissionsAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativePlatformConstantsAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativePlatformConstantsIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativePushNotificationManagerIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativeRedBox.js create mode 100644 packages/react-native/src/private/specs/modules/NativeSampleTurboModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeSegmentFetcher.js create mode 100644 packages/react-native/src/private/specs/modules/NativeSettingsManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeShareModule.js create mode 100644 packages/react-native/src/private/specs/modules/NativeSoundManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeSourceCode.js create mode 100644 packages/react-native/src/private/specs/modules/NativeStatusBarManagerAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeStatusBarManagerIOS.js create mode 100644 packages/react-native/src/private/specs/modules/NativeTiming.js create mode 100644 packages/react-native/src/private/specs/modules/NativeToastAndroid.js create mode 100644 packages/react-native/src/private/specs/modules/NativeUIManager.js create mode 100644 packages/react-native/src/private/specs/modules/NativeVibration.js create mode 100644 packages/react-native/src/private/specs/modules/NativeWebSocketModule.js diff --git a/packages/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js b/packages/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js index 8247ac260af..06fec75530e 100644 --- a/packages/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js +++ b/packages/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js @@ -4,51 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +showActionSheetWithOptions: ( - options: {| - +title?: ?string, - +message?: ?string, - +options: ?Array, - +destructiveButtonIndices?: ?Array, - +cancelButtonIndex?: ?number, - +anchor?: ?number, - +tintColor?: ?number, - +cancelButtonTintColor?: ?number, - +userInterfaceStyle?: ?string, - +disabledButtonIndices?: Array, - |}, - callback: (buttonIndex: number) => void, - ) => void; - +showShareActionSheetWithOptions: ( - options: {| - +message?: ?string, - +url?: ?string, - +subject?: ?string, - +anchor?: ?number, - +tintColor?: ?number, - +cancelButtonTintColor?: ?number, - +excludedActivityTypes?: ?Array, - +userInterfaceStyle?: ?string, - |}, - failureCallback: (error: {| - +domain: string, - +code: string, - +userInfo?: ?Object, - +message: string, - |}) => void, - successCallback: (completed: boolean, activityType: ?string) => void, - ) => void; - +dismissActionSheet?: () => void; -} - -export default (TurboModuleRegistry.get('ActionSheetManager'): ?Spec); +export * from '../../src/private/specs/modules/NativeActionSheetManager'; +import NativeActionSheetManager from '../../src/private/specs/modules/NativeActionSheetManager'; +export default NativeActionSheetManager; diff --git a/packages/react-native/Libraries/Alert/NativeAlertManager.js b/packages/react-native/Libraries/Alert/NativeAlertManager.js index 7f7b1cf6a9b..33d2102f6e3 100644 --- a/packages/react-native/Libraries/Alert/NativeAlertManager.js +++ b/packages/react-native/Libraries/Alert/NativeAlertManager.js @@ -4,32 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type Args = {| - title?: string, - message?: string, - buttons?: Array, // TODO(T67565166): have a better type - type?: string, - defaultValue?: string, - cancelButtonKey?: string, - destructiveButtonKey?: string, - preferredButtonKey?: string, - keyboardType?: string, - userInterfaceStyle?: string, -|}; - -export interface Spec extends TurboModule { - +alertWithArgs: ( - args: Args, - callback: (id: number, value: string) => void, - ) => void; -} - -export default (TurboModuleRegistry.get('AlertManager'): ?Spec); +export * from '../../src/private/specs/modules/NativeAlertManager'; +import NativeAlertManager from '../../src/private/specs/modules/NativeAlertManager'; +export default NativeAlertManager; diff --git a/packages/react-native/Libraries/Animated/NativeAnimatedModule.js b/packages/react-native/Libraries/Animated/NativeAnimatedModule.js index 5094739f4fd..74a9cbb3f46 100644 --- a/packages/react-native/Libraries/Animated/NativeAnimatedModule.js +++ b/packages/react-native/Libraries/Animated/NativeAnimatedModule.js @@ -4,74 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; -import shouldUseTurboAnimatedModule from './shouldUseTurboAnimatedModule'; - -type EndResult = {finished: boolean, value?: number, ...}; -type EndCallback = (result: EndResult) => void; -type SaveValueCallback = (value: number) => void; - -export type EventMapping = {| - nativeEventPath: Array, - animatedValueTag: ?number, -|}; - -// The config has different keys depending on the type of the Node -// TODO(T54896888): Make these types strict -export type AnimatedNodeConfig = Object; -export type AnimatingNodeConfig = Object; - -export interface Spec extends TurboModule { - +startOperationBatch: () => void; - +finishOperationBatch: () => void; - +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; - +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; - +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; - +startListeningToAnimatedNodeValue: (tag: number) => void; - +stopListeningToAnimatedNodeValue: (tag: number) => void; - +connectAnimatedNodes: (parentTag: number, childTag: number) => void; - +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; - +startAnimatingNode: ( - animationId: number, - nodeTag: number, - config: AnimatingNodeConfig, - endCallback: EndCallback, - ) => void; - +stopAnimation: (animationId: number) => void; - +setAnimatedNodeValue: (nodeTag: number, value: number) => void; - +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; - +flattenAnimatedNodeOffset: (nodeTag: number) => void; - +extractAnimatedNodeOffset: (nodeTag: number) => void; - +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; - +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; - +restoreDefaultValues: (nodeTag: number) => void; - +dropAnimatedNode: (tag: number) => void; - +addAnimatedEventToView: ( - viewTag: number, - eventName: string, - eventMapping: EventMapping, - ) => void; - +removeAnimatedEventFromView: ( - viewTag: number, - eventName: string, - animatedNodeTag: number, - ) => void; - - // Events - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - - // All of the above in a batched mode - +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; -} - -const NativeModule: ?Spec = !shouldUseTurboAnimatedModule() - ? TurboModuleRegistry.get('NativeAnimatedModule') - : null; -export default NativeModule; +export * from '../../src/private/specs/modules/NativeAnimatedModule'; +import NativeAnimatedModule from '../../src/private/specs/modules/NativeAnimatedModule'; +export default NativeAnimatedModule; diff --git a/packages/react-native/Libraries/Animated/NativeAnimatedTurboModule.js b/packages/react-native/Libraries/Animated/NativeAnimatedTurboModule.js index 35a4ffa16bf..36086746940 100644 --- a/packages/react-native/Libraries/Animated/NativeAnimatedTurboModule.js +++ b/packages/react-native/Libraries/Animated/NativeAnimatedTurboModule.js @@ -4,75 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; -import shouldUseTurboAnimatedModule from './shouldUseTurboAnimatedModule'; - -type EndResult = {finished: boolean, value?: number, ...}; -type EndCallback = (result: EndResult) => void; -type SaveValueCallback = (value: number) => void; - -export type EventMapping = {| - nativeEventPath: Array, - animatedValueTag: ?number, -|}; - -// The config has different keys depending on the type of the Node -// TODO(T54896888): Make these types strict -export type AnimatedNodeConfig = Object; -export type AnimatingNodeConfig = Object; - -export interface Spec extends TurboModule { - +startOperationBatch: () => void; - +finishOperationBatch: () => void; - +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; - +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; - +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; - +startListeningToAnimatedNodeValue: (tag: number) => void; - +stopListeningToAnimatedNodeValue: (tag: number) => void; - +connectAnimatedNodes: (parentTag: number, childTag: number) => void; - +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; - +startAnimatingNode: ( - animationId: number, - nodeTag: number, - config: AnimatingNodeConfig, - endCallback: EndCallback, - ) => void; - +stopAnimation: (animationId: number) => void; - +setAnimatedNodeValue: (nodeTag: number, value: number) => void; - +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; - +flattenAnimatedNodeOffset: (nodeTag: number) => void; - +extractAnimatedNodeOffset: (nodeTag: number) => void; - +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; - +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; - +restoreDefaultValues: (nodeTag: number) => void; - +dropAnimatedNode: (tag: number) => void; - +addAnimatedEventToView: ( - viewTag: number, - eventName: string, - eventMapping: EventMapping, - ) => void; - +removeAnimatedEventFromView: ( - viewTag: number, - eventName: string, - animatedNodeTag: number, - ) => void; - - // Events - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - - // All of the above in a batched mode - +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; -} - -const NativeModule: ?Spec = shouldUseTurboAnimatedModule() - ? TurboModuleRegistry.get('NativeAnimatedTurboModule') - : null; - -export default NativeModule; +export * from '../../src/private/specs/modules/NativeAnimatedTurboModule'; +import NativeAnimatedTurboModule from '../../src/private/specs/modules/NativeAnimatedTurboModule'; +export default NativeAnimatedTurboModule; diff --git a/packages/react-native/Libraries/AppState/NativeAppState.js b/packages/react-native/Libraries/AppState/NativeAppState.js index 41c20488648..fdcebcd2f87 100644 --- a/packages/react-native/Libraries/AppState/NativeAppState.js +++ b/packages/react-native/Libraries/AppState/NativeAppState.js @@ -4,30 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type AppStateConstants = {| - initialAppState: string, -|}; - -export type AppState = {|app_state: string|}; - -export interface Spec extends TurboModule { - +getConstants: () => AppStateConstants; - +getCurrentAppState: ( - success: (appState: AppState) => void, - error: (error: Object) => void, - ) => void; - - // Events - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.getEnforcing('AppState'): Spec); +export * from '../../src/private/specs/modules/NativeAppState'; +import NativeAppState from '../../src/private/specs/modules/NativeAppState'; +export default NativeAppState; diff --git a/packages/react-native/Libraries/Blob/NativeBlobModule.js b/packages/react-native/Libraries/Blob/NativeBlobModule.js index 00a86fae31b..1971794371d 100644 --- a/packages/react-native/Libraries/Blob/NativeBlobModule.js +++ b/packages/react-native/Libraries/Blob/NativeBlobModule.js @@ -4,56 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|}; - +addNetworkingHandler: () => void; - +addWebSocketHandler: (id: number) => void; - +removeWebSocketHandler: (id: number) => void; - +sendOverSocket: (blob: Object, socketID: number) => void; - +createFromParts: (parts: Array, withId: string) => void; - +release: (blobId: string) => void; -} - -const NativeModule = TurboModuleRegistry.get('BlobModule'); - -let constants = null; -let NativeBlobModule = null; - -if (NativeModule != null) { - NativeBlobModule = { - getConstants(): {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|} { - if (constants == null) { - constants = NativeModule.getConstants(); - } - return constants; - }, - addNetworkingHandler(): void { - NativeModule.addNetworkingHandler(); - }, - addWebSocketHandler(id: number): void { - NativeModule.addWebSocketHandler(id); - }, - removeWebSocketHandler(id: number): void { - NativeModule.removeWebSocketHandler(id); - }, - sendOverSocket(blob: Object, socketID: number): void { - NativeModule.sendOverSocket(blob, socketID); - }, - createFromParts(parts: Array, withId: string): void { - NativeModule.createFromParts(parts, withId); - }, - release(blobId: string): void { - NativeModule.release(blobId); - }, - }; -} - -export default (NativeBlobModule: ?Spec); +export * from '../../src/private/specs/modules/NativeBlobModule'; +import NativeBlobModule from '../../src/private/specs/modules/NativeBlobModule'; +export default NativeBlobModule; diff --git a/packages/react-native/Libraries/Blob/NativeFileReaderModule.js b/packages/react-native/Libraries/Blob/NativeFileReaderModule.js index e581aba74d1..9d620af0a1b 100644 --- a/packages/react-native/Libraries/Blob/NativeFileReaderModule.js +++ b/packages/react-native/Libraries/Blob/NativeFileReaderModule.js @@ -4,19 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +readAsDataURL: (data: Object) => Promise; - +readAsText: (data: Object, encoding: string) => Promise; -} - -export default (TurboModuleRegistry.getEnforcing( - 'FileReaderModule', -): Spec); +export * from '../../src/private/specs/modules/NativeFileReaderModule'; +import NativeFileReaderModule from '../../src/private/specs/modules/NativeFileReaderModule'; +export default NativeFileReaderModule; diff --git a/packages/react-native/Libraries/BugReporting/NativeBugReporting.js b/packages/react-native/Libraries/BugReporting/NativeBugReporting.js index 6cd436f685a..ca0edbf81af 100644 --- a/packages/react-native/Libraries/BugReporting/NativeBugReporting.js +++ b/packages/react-native/Libraries/BugReporting/NativeBugReporting.js @@ -4,17 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * + * @flow strict-local * @format - * @flow */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +startReportAProblemFlow: () => void; - +setExtraData: (extraData: Object, extraFiles: Object) => void; -} - -export default (TurboModuleRegistry.get('BugReporting'): ?Spec); +export * from '../../src/private/specs/modules/NativeBugReporting'; +import NativeBugReporting from '../../src/private/specs/modules/NativeBugReporting'; +export default NativeBugReporting; diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js b/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js index e4661589749..5e310f43042 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js @@ -8,26 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +isReduceMotionEnabled: ( - onSuccess: (isReduceMotionEnabled: boolean) => void, - ) => void; - +isTouchExplorationEnabled: ( - onSuccess: (isScreenReaderEnabled: boolean) => void, - ) => void; - +isAccessibilityServiceEnabled?: ?( - onSuccess: (isAccessibilityServiceEnabled: boolean) => void, - ) => void; - +setAccessibilityFocus: (reactTag: number) => void; - +announceForAccessibility: (announcement: string) => void; - +getRecommendedTimeoutMillis?: ( - mSec: number, - onSuccess: (recommendedTimeoutMillis: number) => void, - ) => void; -} - -export default (TurboModuleRegistry.get('AccessibilityInfo'): ?Spec); +export * from '../../../src/private/specs/modules/NativeAccessibilityInfo'; +import NativeAccessibilityInfo from '../../../src/private/specs/modules/NativeAccessibilityInfo'; +export default NativeAccessibilityInfo; diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js b/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js index f815b18c97b..7cbe73f6186 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js @@ -4,63 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getCurrentBoldTextState: ( - onSuccess: (isBoldTextEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentGrayscaleState: ( - onSuccess: (isGrayscaleEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentInvertColorsState: ( - onSuccess: (isInvertColorsEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentReduceMotionState: ( - onSuccess: (isReduceMotionEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentPrefersCrossFadeTransitionsState?: ( - onSuccess: (prefersCrossFadeTransitions: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentReduceTransparencyState: ( - onSuccess: (isReduceTransparencyEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +getCurrentVoiceOverState: ( - onSuccess: (isScreenReaderEnabled: boolean) => void, - onError: (error: Object) => void, - ) => void; - +setAccessibilityContentSizeMultipliers: (JSMultipliers: {| - +extraSmall?: ?number, - +small?: ?number, - +medium?: ?number, - +large?: ?number, - +extraLarge?: ?number, - +extraExtraLarge?: ?number, - +extraExtraExtraLarge?: ?number, - +accessibilityMedium?: ?number, - +accessibilityLarge?: ?number, - +accessibilityExtraLarge?: ?number, - +accessibilityExtraExtraLarge?: ?number, - +accessibilityExtraExtraExtraLarge?: ?number, - |}) => void; - +setAccessibilityFocus: (reactTag: number) => void; - +announceForAccessibility: (announcement: string) => void; - +announceForAccessibilityWithOptions?: ( - announcement: string, - options: {queue?: boolean}, - ) => void; -} - -export default (TurboModuleRegistry.get('AccessibilityManager'): ?Spec); +export * from '../../../src/private/specs/modules/NativeAccessibilityManager'; +import NativeAccessibilityManager from '../../../src/private/specs/modules/NativeAccessibilityManager'; +export default NativeAccessibilityManager; diff --git a/packages/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js b/packages/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js index 0d79257ae1c..6a7a7e7367b 100644 --- a/packages/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js @@ -8,46 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type {WithDefault} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - /** - * Whether the indicator should hide when not animating (true by default). - * - * See https://reactnative.dev/docs/activityindicator#hideswhenstopped-ios - */ - hidesWhenStopped?: WithDefault, - - /** - * Whether to show the indicator (true, the default) or hide it (false). - * - * See https://reactnative.dev/docs/activityindicator#animating - */ - animating?: WithDefault, - - /** - * The foreground color of the spinner (default is gray). - * - * See https://reactnative.dev/docs/activityindicator#color - */ - color?: ?ColorValue, - - /** - * Size of the indicator (default is 'small'). - * Passing a number to the size prop is only supported on Android. - * - * See https://reactnative.dev/docs/activityindicator#size - */ - size?: WithDefault<'small' | 'large', 'small'>, -|}>; - -export default (codegenNativeComponent('ActivityIndicatorView', { - paperComponentName: 'RCTActivityIndicatorView', -}): HostComponent); +export * from '../../../src/private/specs/components/ActivityIndicatorViewNativeComponent'; +import ActivityIndicatorViewNativeComponent from '../../../src/private/specs/components/ActivityIndicatorViewNativeComponent'; +export default ActivityIndicatorViewNativeComponent; diff --git a/packages/react-native/Libraries/Components/Clipboard/NativeClipboard.js b/packages/react-native/Libraries/Components/Clipboard/NativeClipboard.js index d7f26802483..2d3c315ead6 100644 --- a/packages/react-native/Libraries/Components/Clipboard/NativeClipboard.js +++ b/packages/react-native/Libraries/Components/Clipboard/NativeClipboard.js @@ -8,14 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getString: () => Promise; - +setString: (content: string) => void; -} - -export default (TurboModuleRegistry.getEnforcing('Clipboard'): Spec); +export * from '../../../src/private/specs/modules/NativeClipboard'; +import NativeClipboard from '../../../src/private/specs/modules/NativeClipboard'; +export default NativeClipboard; diff --git a/packages/react-native/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js b/packages/react-native/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js index ced6d34a9ab..03e2695735c 100644 --- a/packages/react-native/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +++ b/packages/react-native/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js @@ -8,117 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type { - DirectEventHandler, - Float, - Int32, - WithDefault, -} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type DrawerStateEvent = $ReadOnly<{| - drawerState: Int32, -|}>; - -type DrawerSlideEvent = $ReadOnly<{| - offset: Float, -|}>; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - /** - * Determines whether the keyboard gets dismissed in response to a drag. - * - 'none' (the default), drags do not dismiss the keyboard. - * - 'on-drag', the keyboard is dismissed when a drag begins. - */ - keyboardDismissMode?: WithDefault<'none' | 'on-drag', 'none'>, - - /** - * Specifies the background color of the drawer. The default value is white. - * If you want to set the opacity of the drawer, use rgba. Example: - * - * ``` - * return ( - * - * - * ); - * ``` - */ - drawerBackgroundColor: ColorValue, - - /** - * Specifies the side of the screen from which the drawer will slide in. - */ - drawerPosition?: WithDefault<'left' | 'right', 'left'>, - - /** - * Specifies the width of the drawer, more precisely the width of the view that be pulled in - * from the edge of the window. - */ - - drawerWidth?: WithDefault, - - /** - * Specifies the lock mode of the drawer. The drawer can be locked in 3 states: - * - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures. - * - locked-closed, meaning that the drawer will stay closed and not respond to gestures. - * - locked-open, meaning that the drawer will stay opened and not respond to gestures. - * The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`). - */ - drawerLockMode?: WithDefault< - 'unlocked' | 'locked-closed' | 'locked-open', - 'unlocked', - >, - - /** - * Function called whenever there is an interaction with the navigation view. - */ - onDrawerSlide?: ?DirectEventHandler, - - /** - * Function called when the drawer state has changed. The drawer can be in 3 states: - * - Idle, meaning there is no interaction with the navigation view happening at the time - * - Dragging, meaning there is currently an interaction with the navigation view - * - Settling, meaning that there was an interaction with the navigation view, and the - * navigation view is now finishing its closing or opening animation - */ - onDrawerStateChanged?: ?DirectEventHandler, - - /** - * Function called whenever the navigation view has been opened. - */ - onDrawerOpen?: ?DirectEventHandler, - - /** - * Function called whenever the navigation view has been closed. - */ - onDrawerClose?: ?DirectEventHandler, - - /** - * Make the drawer take the entire screen and draw the background of the - * status bar to allow it to open over the status bar. It will only have an - * effect on API 21+. - */ - statusBarBackgroundColor?: ?ColorValue, -|}>; - -type NativeType = HostComponent; - -interface NativeCommands { - +openDrawer: (viewRef: React.ElementRef) => void; - +closeDrawer: (viewRef: React.ElementRef) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: ['openDrawer', 'closeDrawer'], -}); - -export default (codegenNativeComponent( - 'AndroidDrawerLayout', -): NativeType); +export * from '../../../src/private/specs/components/AndroidDrawerLayoutNativeComponent'; +import AndroidDrawerLayoutNativeComponent from '../../../src/private/specs/components/AndroidDrawerLayoutNativeComponent'; +export default AndroidDrawerLayoutNativeComponent; diff --git a/packages/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js b/packages/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js index 2dff4a1d1d5..f539abc7c56 100644 --- a/packages/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js +++ b/packages/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js @@ -8,13 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.get('KeyboardObserver'): ?Spec); +export * from '../../../src/private/specs/modules/NativeKeyboardObserver'; +import NativeKeyboardObserver from '../../../src/private/specs/modules/NativeKeyboardObserver'; +export default NativeKeyboardObserver; diff --git a/packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js b/packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js index 2dc49e65a37..7e5f03e33ee 100644 --- a/packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +++ b/packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js @@ -4,30 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow strict-local * @format + * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type {Double, WithDefault} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - //Props - styleAttr?: string, - typeAttr?: string, - indeterminate: boolean, - progress?: WithDefault, - animating?: WithDefault, - color?: ?ColorValue, - testID?: WithDefault, -|}>; - -export default (codegenNativeComponent('AndroidProgressBar', { - interfaceOnly: true, -}): HostComponent); +export * from '../../../src/private/specs/components/ProgressBarAndroidNativeComponent'; +import ProgressBarAndroidNativeComponent from '../../../src/private/specs/components/ProgressBarAndroidNativeComponent'; +export default ProgressBarAndroidNativeComponent; diff --git a/packages/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js b/packages/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js index dd76d15d61d..8e7d56557e9 100644 --- a/packages/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +++ b/packages/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js @@ -8,67 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type { - DirectEventHandler, - Float, - WithDefault, -} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - /** - * Whether the pull to refresh functionality is enabled. - */ - enabled?: WithDefault, - /** - * The colors (at least one) that will be used to draw the refresh indicator. - */ - colors?: ?$ReadOnlyArray, - /** - * The background color of the refresh indicator. - */ - progressBackgroundColor?: ?ColorValue, - /** - * Size of the refresh indicator. - */ - size?: WithDefault<'default' | 'large', 'default'>, - /** - * Progress view top offset - */ - progressViewOffset?: WithDefault, - - /** - * Called when the view starts refreshing. - */ - onRefresh?: ?DirectEventHandler, - - /** - * Whether the view should be indicating an active refresh. - */ - refreshing: boolean, -|}>; - -type NativeType = HostComponent; - -interface NativeCommands { - +setNativeRefreshing: ( - viewRef: React.ElementRef, - value: boolean, - ) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: ['setNativeRefreshing'], -}); - -export default (codegenNativeComponent( - 'AndroidSwipeRefreshLayout', -): NativeType); +export * from '../../../src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent'; +import AndroidSwipeRefreshLayoutNativeComponent from '../../../src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent'; +export default AndroidSwipeRefreshLayoutNativeComponent; diff --git a/packages/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js b/packages/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js index f47880e111d..a5ae5e5b176 100644 --- a/packages/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js @@ -8,64 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type { - DirectEventHandler, - Float, - WithDefault, -} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - /** - * The color of the refresh indicator. - */ - tintColor?: ?ColorValue, - /** - * Title color. - */ - titleColor?: ?ColorValue, - /** - * The title displayed under the refresh indicator. - */ - title?: WithDefault, - /** - * Progress view top offset - */ - progressViewOffset?: WithDefault, - - /** - * Called when the view starts refreshing. - */ - onRefresh?: ?DirectEventHandler, - - /** - * Whether the view should be indicating an active refresh. - */ - refreshing: boolean, -|}>; - -type ComponentType = HostComponent; - -interface NativeCommands { - +setNativeRefreshing: ( - viewRef: React.ElementRef, - refreshing: boolean, - ) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: ['setNativeRefreshing'], -}); - -export default (codegenNativeComponent('PullToRefreshView', { - paperComponentName: 'RCTRefreshControl', - excludedPlatforms: ['android'], -}): HostComponent); +export * from '../../../src/private/specs/components/PullToRefreshViewNativeComponent'; +import PullToRefreshViewNativeComponent from '../../../src/private/specs/components/PullToRefreshViewNativeComponent'; +export default PullToRefreshViewNativeComponent; diff --git a/packages/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js b/packages/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js index ff0d08ae5ce..ac6e9cfaf93 100644 --- a/packages/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js @@ -8,18 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - // No props -|}>; - -export default (codegenNativeComponent('SafeAreaView', { - paperComponentName: 'RCTSafeAreaView', - interfaceOnly: true, -}): HostComponent); +export * from '../../../src/private/specs/components/RCTSafeAreaViewNativeComponent'; +import RCTSafeAreaViewNativeComponent from '../../../src/private/specs/components/RCTSafeAreaViewNativeComponent'; +export default RCTSafeAreaViewNativeComponent; diff --git a/packages/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js b/packages/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js index 50b814a93b9..f6c6097bbbf 100644 --- a/packages/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js @@ -8,19 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - removeClippedSubviews?: ?boolean, -|}>; - -type NativeType = HostComponent; - -export default (codegenNativeComponent( - 'AndroidHorizontalScrollContentView', -): NativeType); +export * from '../../../src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent'; +import AndroidHorizontalScrollContentViewNativeComponent from '../../../src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent'; +export default AndroidHorizontalScrollContentViewNativeComponent; diff --git a/packages/react-native/Libraries/Components/Sound/NativeSoundManager.js b/packages/react-native/Libraries/Components/Sound/NativeSoundManager.js index 425a3c3b835..08e4b37c4e6 100644 --- a/packages/react-native/Libraries/Components/Sound/NativeSoundManager.js +++ b/packages/react-native/Libraries/Components/Sound/NativeSoundManager.js @@ -8,15 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -/** - * Native Module used for playing sounds in native platform. - */ -export interface Spec extends TurboModule { - +playTouchSound: () => void; -} - -export default (TurboModuleRegistry.get('SoundManager'): ?Spec); +export * from '../../../src/private/specs/modules/NativeSoundManager'; +import NativeSoundManager from '../../../src/private/specs/modules/NativeSoundManager'; +export default NativeSoundManager; diff --git a/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js b/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js index acebb6ca3bd..42739be6110 100644 --- a/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +++ b/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js @@ -8,61 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR: number, - |}; - +setColor: (color: number, animated: boolean) => void; - +setTranslucent: (translucent: boolean) => void; - - /** - * - statusBarStyles can be: - * - 'default' - * - 'dark-content' - */ - +setStyle: (statusBarStyle?: ?string) => void; - +setHidden: (hidden: boolean) => void; -} - -const NativeModule = TurboModuleRegistry.getEnforcing('StatusBarManager'); -let constants = null; - -const NativeStatusBarManager = { - getConstants(): {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |} { - if (constants == null) { - constants = NativeModule.getConstants(); - } - return constants; - }, - - setColor(color: number, animated: boolean): void { - NativeModule.setColor(color, animated); - }, - - setTranslucent(translucent: boolean): void { - NativeModule.setTranslucent(translucent); - }, - - /** - * - statusBarStyles can be: - * - 'default' - * - 'dark-content' - */ - setStyle(statusBarStyle?: ?string): void { - NativeModule.setStyle(statusBarStyle); - }, - - setHidden(hidden: boolean): void { - NativeModule.setHidden(hidden); - }, -}; - -export default NativeStatusBarManager; +export * from '../../../src/private/specs/modules/NativeStatusBarManagerAndroid'; +import NativeStatusBarManagerAndroid from '../../../src/private/specs/modules/NativeStatusBarManagerAndroid'; +export default NativeStatusBarManagerAndroid; diff --git a/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js b/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js index 4ca0011b8a4..b7c50ea0b70 100644 --- a/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +++ b/packages/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js @@ -8,82 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |}; - - // TODO(T47754272) Can we remove this method? - +getHeight: (callback: (result: {|height: number|}) => void) => void; - +setNetworkActivityIndicatorVisible: (visible: boolean) => void; - +addListener: (eventType: string) => void; - +removeListeners: (count: number) => void; - - /** - * - statusBarStyles can be: - * - 'default' - * - 'dark-content' - * - 'light-content' - */ - +setStyle: (statusBarStyle?: ?string, animated: boolean) => void; - /** - * - withAnimation can be: 'none' | 'fade' | 'slide' - */ - +setHidden: (hidden: boolean, withAnimation: string) => void; -} - -const NativeModule = TurboModuleRegistry.getEnforcing('StatusBarManager'); -let constants = null; - -const NativeStatusBarManager = { - getConstants(): {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |} { - if (constants == null) { - constants = NativeModule.getConstants(); - } - return constants; - }, - - // TODO(T47754272) Can we remove this method? - getHeight(callback: (result: {|height: number|}) => void): void { - NativeModule.getHeight(callback); - }, - - setNetworkActivityIndicatorVisible(visible: boolean): void { - NativeModule.setNetworkActivityIndicatorVisible(visible); - }, - - addListener(eventType: string): void { - NativeModule.addListener(eventType); - }, - - removeListeners(count: number): void { - NativeModule.removeListeners(count); - }, - - /** - * - statusBarStyles can be: - * - 'default' - * - 'dark-content' - * - 'light-content' - */ - setStyle(statusBarStyle?: ?string, animated: boolean): void { - NativeModule.setStyle(statusBarStyle, animated); - }, - - /** - * - withAnimation can be: 'none' | 'fade' | 'slide' - */ - setHidden(hidden: boolean, withAnimation: string): void { - NativeModule.setHidden(hidden, withAnimation); - }, -}; - -export default NativeStatusBarManager; +export * from '../../../src/private/specs/modules/NativeStatusBarManagerIOS'; +import NativeStatusBarManagerIOS from '../../../src/private/specs/modules/NativeStatusBarManagerIOS'; +export default NativeStatusBarManagerIOS; diff --git a/packages/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js b/packages/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js index a31d7a0244a..2e34815590f 100644 --- a/packages/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +++ b/packages/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js @@ -4,59 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow strict-local * @format + * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type { - BubblingEventHandler, - Int32, - WithDefault, -} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type SwitchChangeEvent = $ReadOnly<{| - value: boolean, - target: Int32, -|}>; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - // Props - disabled?: WithDefault, - enabled?: WithDefault, - thumbColor?: ?ColorValue, - trackColorForFalse?: ?ColorValue, - trackColorForTrue?: ?ColorValue, - value?: WithDefault, - on?: WithDefault, - thumbTintColor?: ?ColorValue, - trackTintColor?: ?ColorValue, - - // Events - onChange?: BubblingEventHandler, -|}>; - -type NativeType = HostComponent; - -interface NativeCommands { - +setNativeValue: ( - viewRef: React.ElementRef, - value: boolean, - ) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: ['setNativeValue'], -}); - -export default (codegenNativeComponent('AndroidSwitch', { - interfaceOnly: true, -}): NativeType); +export * from '../../../src/private/specs/components/AndroidSwitchNativeComponent'; +import AndroidSwitchNativeComponent from '../../../src/private/specs/components/AndroidSwitchNativeComponent'; +export default AndroidSwitchNativeComponent; diff --git a/packages/react-native/Libraries/Components/Switch/SwitchNativeComponent.js b/packages/react-native/Libraries/Components/Switch/SwitchNativeComponent.js index 71bf14fb833..7ecec529192 100644 --- a/packages/react-native/Libraries/Components/Switch/SwitchNativeComponent.js +++ b/packages/react-native/Libraries/Components/Switch/SwitchNativeComponent.js @@ -4,58 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow strict-local * @format + * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type { - BubblingEventHandler, - Int32, - WithDefault, -} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type SwitchChangeEvent = $ReadOnly<{| - value: boolean, - target: Int32, -|}>; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - // Props - disabled?: WithDefault, - value?: WithDefault, - tintColor?: ?ColorValue, - onTintColor?: ?ColorValue, - thumbTintColor?: ?ColorValue, - - // Deprecated props - thumbColor?: ?ColorValue, - trackColorForFalse?: ?ColorValue, - trackColorForTrue?: ?ColorValue, - - // Events - onChange?: ?BubblingEventHandler, -|}>; - -type ComponentType = HostComponent; - -interface NativeCommands { - +setValue: (viewRef: React.ElementRef, value: boolean) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: ['setValue'], -}); - -export default (codegenNativeComponent('Switch', { - paperComponentName: 'RCTSwitch', - excludedPlatforms: ['android'], -}): ComponentType); +export * from '../../../src/private/specs/components/SwitchNativeComponent'; +import SwitchNativeComponent from '../../../src/private/specs/components/SwitchNativeComponent'; +export default SwitchNativeComponent; diff --git a/packages/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js b/packages/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js index 48432dbdd2c..9a1dd64f3ed 100644 --- a/packages/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js @@ -4,23 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow strict-local * @format + * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheet'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - backgroundColor?: ?ColorValue, -|}>; - -export default (codegenNativeComponent('InputAccessory', { - interfaceOnly: true, - paperComponentName: 'RCTInputAccessoryView', - excludedPlatforms: ['android'], -}): HostComponent); +export * from '../../../src/private/specs/components/RCTInputAccessoryViewNativeComponent'; +import RCTInputAccessoryViewNativeComponent from '../../../src/private/specs/components/RCTInputAccessoryViewNativeComponent'; +export default RCTInputAccessoryViewNativeComponent; diff --git a/packages/react-native/Libraries/Components/ToastAndroid/NativeToastAndroid.js b/packages/react-native/Libraries/Components/ToastAndroid/NativeToastAndroid.js index 3a13f89bd45..5a3e9aedf38 100644 --- a/packages/react-native/Libraries/Components/ToastAndroid/NativeToastAndroid.js +++ b/packages/react-native/Libraries/Components/ToastAndroid/NativeToastAndroid.js @@ -8,31 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {| - SHORT: number, - LONG: number, - TOP: number, - BOTTOM: number, - CENTER: number, - |}; - +show: (message: string, duration: number) => void; - +showWithGravity: ( - message: string, - duration: number, - gravity: number, - ) => void; - +showWithGravityAndOffset: ( - message: string, - duration: number, - gravity: number, - xOffset: number, - yOffset: number, - ) => void; -} - -export default (TurboModuleRegistry.getEnforcing('ToastAndroid'): Spec); +export * from '../../../src/private/specs/modules/NativeToastAndroid'; +import NativeToastAndroid from '../../../src/private/specs/modules/NativeToastAndroid'; +export default NativeToastAndroid; diff --git a/packages/react-native/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js b/packages/react-native/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js index 3c972820c54..4eb6022646e 100644 --- a/packages/react-native/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +++ b/packages/react-native/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js @@ -8,19 +8,6 @@ * @flow strict-local */ -import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {WithDefault} from '../../Types/CodegenTypes'; -import type {ViewProps} from '../View/ViewPropTypes'; - -import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - name?: WithDefault, -|}>; - -// NOTE: This component is not implemented in paper -// Do not require this file in paper builds -export default (codegenNativeComponent( - 'UnimplementedNativeView', -): HostComponent); +export * from '../../../src/private/specs/components/UnimplementedNativeViewNativeComponent'; +import UnimplementedNativeViewNativeComponent from '../../../src/private/specs/components/UnimplementedNativeViewNativeComponent'; +export default UnimplementedNativeViewNativeComponent; diff --git a/packages/react-native/Libraries/Core/NativeExceptionsManager.js b/packages/react-native/Libraries/Core/NativeExceptionsManager.js index aac86e07eda..e0c7872fe00 100644 --- a/packages/react-native/Libraries/Core/NativeExceptionsManager.js +++ b/packages/react-native/Libraries/Core/NativeExceptionsManager.js @@ -8,96 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -const Platform = require('../Utilities/Platform'); - -export type StackFrame = {| - column: ?number, - file: ?string, - lineNumber: ?number, - methodName: string, - collapse?: boolean, -|}; -export type ExceptionData = { - message: string, - originalMessage: ?string, - name: ?string, - componentStack: ?string, - stack: Array, - id: number, - isFatal: boolean, - // flowlint-next-line unclear-type:off - extraData?: Object, - ... -}; -export interface Spec extends TurboModule { - // Deprecated: Use `reportException` - +reportFatalException: ( - message: string, - stack: Array, - exceptionId: number, - ) => void; - // Deprecated: Use `reportException` - +reportSoftException: ( - message: string, - stack: Array, - exceptionId: number, - ) => void; - +reportException?: (data: ExceptionData) => void; - +updateExceptionMessage: ( - message: string, - stack: Array, - exceptionId: number, - ) => void; - // TODO(T53311281): This is a noop on iOS now. Implement it. - +dismissRedbox?: () => void; -} - -const NativeModule = - TurboModuleRegistry.getEnforcing('ExceptionsManager'); - -const ExceptionsManager = { - reportFatalException( - message: string, - stack: Array, - exceptionId: number, - ) { - NativeModule.reportFatalException(message, stack, exceptionId); - }, - reportSoftException( - message: string, - stack: Array, - exceptionId: number, - ) { - NativeModule.reportSoftException(message, stack, exceptionId); - }, - updateExceptionMessage( - message: string, - stack: Array, - exceptionId: number, - ) { - NativeModule.updateExceptionMessage(message, stack, exceptionId); - }, - dismissRedbox(): void { - if (Platform.OS !== 'ios' && NativeModule.dismissRedbox) { - // TODO(T53311281): This is a noop on iOS now. Implement it. - NativeModule.dismissRedbox(); - } - }, - reportException(data: ExceptionData): void { - if (NativeModule.reportException) { - NativeModule.reportException(data); - return; - } - if (data.isFatal) { - ExceptionsManager.reportFatalException(data.message, data.stack, data.id); - } else { - ExceptionsManager.reportSoftException(data.message, data.stack, data.id); - } - }, -}; - -export default ExceptionsManager; +export * from '../../src/private/specs/modules/NativeExceptionsManager'; +import NativeExceptionsManager from '../../src/private/specs/modules/NativeExceptionsManager'; +export default NativeExceptionsManager; diff --git a/packages/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js b/packages/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js index b39822ca9c1..5319218e4cc 100644 --- a/packages/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +++ b/packages/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js @@ -8,21 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +fetchSegment: ( - segmentId: number, - options: Object, // flowlint-line unclear-type: off - callback: (error: ?Object) => void, // flowlint-line unclear-type: off - ) => void; - +getSegment?: ( - segmentId: number, - options: Object, // flowlint-line unclear-type: off - callback: (error: ?Object, path: ?string) => void, // flowlint-line unclear-type: off - ) => void; -} - -export default (TurboModuleRegistry.getEnforcing('SegmentFetcher'): Spec); +export * from '../../../src/private/specs/modules/NativeSegmentFetcher'; +import NativeSegmentFetcher from '../../../src/private/specs/modules/NativeSegmentFetcher'; +export default NativeSegmentFetcher; diff --git a/packages/react-native/Libraries/Core/Timers/NativeTiming.js b/packages/react-native/Libraries/Core/Timers/NativeTiming.js index 5feaa3077a0..4b2912453ca 100644 --- a/packages/react-native/Libraries/Core/Timers/NativeTiming.js +++ b/packages/react-native/Libraries/Core/Timers/NativeTiming.js @@ -8,19 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +createTimer: ( - callbackID: number, - duration: number, - jsSchedulingTime: number, - repeats: boolean, - ) => void; - +deleteTimer: (timerID: number) => void; - +setSendIdleEvents: (sendIdleEvents: boolean) => void; -} - -export default (TurboModuleRegistry.get('Timing'): ?Spec); +export * from '../../../src/private/specs/modules/NativeTiming'; +import NativeTiming from '../../../src/private/specs/modules/NativeTiming'; +export default NativeTiming; diff --git a/packages/react-native/Libraries/Debugging/DebuggingOverlayNativeComponent.js b/packages/react-native/Libraries/Debugging/DebuggingOverlayNativeComponent.js index 36e4bed6bd1..0bf8b9b4e34 100644 --- a/packages/react-native/Libraries/Debugging/DebuggingOverlayNativeComponent.js +++ b/packages/react-native/Libraries/Debugging/DebuggingOverlayNativeComponent.js @@ -4,58 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow strict-local * @format + * @flow strict-local */ -import type {ViewProps} from '../Components/View/ViewPropTypes'; -import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; -import type {ProcessedColorValue} from '../StyleSheet/processColor'; - -import codegenNativeCommands from '../Utilities/codegenNativeCommands'; -import codegenNativeComponent from '../Utilities/codegenNativeComponent'; -import * as React from 'react'; - -type NativeProps = $ReadOnly<{| - ...ViewProps, -|}>; -export type DebuggingOverlayNativeComponentType = HostComponent; - -export type TraceUpdate = { - id: number, - rectangle: ElementRectangle, - color: ?ProcessedColorValue, -}; - -export type ElementRectangle = { - x: number, - y: number, - width: number, - height: number, -}; - -interface NativeCommands { - +highlightTraceUpdates: ( - viewRef: React.ElementRef, - updates: $ReadOnlyArray, - ) => void; - +highlightElements: ( - viewRef: React.ElementRef, - elements: $ReadOnlyArray, - ) => void; - +clearElementsHighlights: ( - viewRef: React.ElementRef, - ) => void; -} - -export const Commands: NativeCommands = codegenNativeCommands({ - supportedCommands: [ - 'highlightTraceUpdates', - 'highlightElements', - 'clearElementsHighlights', - ], -}); - -export default (codegenNativeComponent( - 'DebuggingOverlay', -): HostComponent); +export * from '../../src/private/specs/components/DebuggingOverlayNativeComponent'; +import DebuggingOverlayNativeComponent from '../../src/private/specs/components/DebuggingOverlayNativeComponent'; +export default DebuggingOverlayNativeComponent; diff --git a/packages/react-native/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js b/packages/react-native/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js index 8370f8f1974..ad27f812965 100644 --- a/packages/react-native/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +++ b/packages/react-native/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js @@ -8,17 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +setConsolePatchSettings: (newConsolePatchSettings: string) => void; - +getConsolePatchSettings: () => ?string; - +setProfilingSettings?: (newProfilingSettings: string) => void; - +getProfilingSettings?: () => ?string; -} - -export default (TurboModuleRegistry.get( - 'DevToolsSettingsManager', -): ?Spec); +export * from '../../src/private/specs/modules/NativeDevToolsSettingsManager'; +import NativeDevToolsSettingsManager from '../../src/private/specs/modules/NativeDevToolsSettingsManager'; +export default NativeDevToolsSettingsManager; diff --git a/packages/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js b/packages/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js index d892ad0bca4..90f2263e127 100644 --- a/packages/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js +++ b/packages/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js @@ -8,12 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +captureComplete: (path: string, error: ?string) => void; -} - -export default (TurboModuleRegistry.get('JSCHeapCapture'): ?Spec); +export * from '../../src/private/specs/modules/NativeJSCHeapCapture'; +import NativeJSCHeapCapture from '../../src/private/specs/modules/NativeJSCHeapCapture'; +export default NativeJSCHeapCapture; diff --git a/packages/react-native/Libraries/Image/NativeImageEditor.js b/packages/react-native/Libraries/Image/NativeImageEditor.js index 543afac65de..0d9fdb2d6d2 100644 --- a/packages/react-native/Libraries/Image/NativeImageEditor.js +++ b/packages/react-native/Libraries/Image/NativeImageEditor.js @@ -8,45 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -type Options = {| - +offset: {| - +x: number, - +y: number, - |}, - +size: {| - +width: number, - +height: number, - |}, - +displaySize?: ?{| - +width: number, - +height: number, - |}, - /** - * Enum with potential values: - * - cover - * - contain - * - stretch - * - center - * - repeat - */ - +resizeMode?: ?string, - +allowExternalStorage?: boolean, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +cropImage: ( - uri: string, - cropData: Options, - successCallback: (uri: string) => void, - errorCallback: (error: string) => void, - ) => void; -} - -export default (TurboModuleRegistry.getEnforcing( - 'ImageEditingManager', -): Spec); +export * from '../../src/private/specs/modules/NativeImageEditor'; +import NativeImageEditor from '../../src/private/specs/modules/NativeImageEditor'; +export default NativeImageEditor; diff --git a/packages/react-native/Libraries/Image/NativeImageLoaderAndroid.js b/packages/react-native/Libraries/Image/NativeImageLoaderAndroid.js index 8576e47b4e0..0b4ff7bf7d9 100644 --- a/packages/react-native/Libraries/Image/NativeImageLoaderAndroid.js +++ b/packages/react-native/Libraries/Image/NativeImageLoaderAndroid.js @@ -4,27 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type ImageSize = { - width: number, - height: number, - ... -}; - -export interface Spec extends TurboModule { - +abortRequest: (requestId: number) => void; - +getConstants: () => {||}; - +getSize: (uri: string) => Promise; - +getSizeWithHeaders: (uri: string, headers: Object) => Promise; - +prefetchImage: (uri: string, requestId: number) => Promise; - +queryCache: (uris: Array) => Promise; -} - -export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); +export * from '../../src/private/specs/modules/NativeImageLoaderAndroid'; +import NativeImageLoaderAndroid from '../../src/private/specs/modules/NativeImageLoaderAndroid'; +export default NativeImageLoaderAndroid; diff --git a/packages/react-native/Libraries/Image/NativeImageLoaderIOS.js b/packages/react-native/Libraries/Image/NativeImageLoaderIOS.js index b46a43be580..75a0d1eb81e 100644 --- a/packages/react-native/Libraries/Image/NativeImageLoaderIOS.js +++ b/packages/react-native/Libraries/Image/NativeImageLoaderIOS.js @@ -4,34 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {RootTag} from '../TurboModule/RCTExport'; -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - // Return [width, height] of image uri - +getSize: (uri: string) => Promise<$ReadOnlyArray>; - +getSizeWithHeaders: ( - uri: string, - headers: Object, - ) => Promise<{ - width: number, - height: number, - ... - }>; - +prefetchImage: (uri: string) => Promise; - +prefetchImageWithMetadata?: ( - uri: string, - queryRootName: string, - rootTag: RootTag, - ) => Promise; - +queryCache: (uris: Array) => Promise; -} - -export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); +export * from '../../src/private/specs/modules/NativeImageLoaderIOS'; +import NativeImageLoaderIOS from '../../src/private/specs/modules/NativeImageLoaderIOS'; +export default NativeImageLoaderIOS; diff --git a/packages/react-native/Libraries/Image/NativeImageStoreAndroid.js b/packages/react-native/Libraries/Image/NativeImageStoreAndroid.js index 68644b9a2df..e70d19bbb75 100644 --- a/packages/react-native/Libraries/Image/NativeImageStoreAndroid.js +++ b/packages/react-native/Libraries/Image/NativeImageStoreAndroid.js @@ -8,19 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getBase64ForTag: ( - uri: string, - successCallback: (base64ImageData: string) => void, - errorCallback: (error: string) => void, - ) => void; -} - -export default (TurboModuleRegistry.getEnforcing( - 'ImageStoreManager', -): Spec); +export * from '../../src/private/specs/modules/NativeImageStoreAndroid'; +import NativeImageStoreAndroid from '../../src/private/specs/modules/NativeImageStoreAndroid'; +export default NativeImageStoreAndroid; diff --git a/packages/react-native/Libraries/Image/NativeImageStoreIOS.js b/packages/react-native/Libraries/Image/NativeImageStoreIOS.js index 332b7bc9fbe..33bc7384cae 100644 --- a/packages/react-native/Libraries/Image/NativeImageStoreIOS.js +++ b/packages/react-native/Libraries/Image/NativeImageStoreIOS.js @@ -8,26 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getBase64ForTag: ( - uri: string, - successCallback: (base64ImageData: string) => void, - errorCallback: (error: {|message: string|}) => void, - ) => void; - +hasImageForTag: (uri: string, callback: (hasImage: boolean) => void) => void; - +removeImageForTag: (uri: string) => void; - +addImageFromBase64: ( - base64ImageData: string, - successCallback: (uri: string) => void, - errorCallback: (error: {|message: string|}) => void, - ) => void; -} - -export default (TurboModuleRegistry.getEnforcing( - 'ImageStoreManager', -): Spec); +export * from '../../src/private/specs/modules/NativeImageStoreIOS'; +import NativeImageStoreIOS from '../../src/private/specs/modules/NativeImageStoreIOS'; +export default NativeImageStoreIOS; diff --git a/packages/react-native/Libraries/Interaction/NativeFrameRateLogger.js b/packages/react-native/Libraries/Interaction/NativeFrameRateLogger.js index 929582e74e7..5ac53310c58 100644 --- a/packages/react-native/Libraries/Interaction/NativeFrameRateLogger.js +++ b/packages/react-native/Libraries/Interaction/NativeFrameRateLogger.js @@ -4,19 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @format * @flow strict + * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +setGlobalOptions: (options: {|+debug?: ?boolean|}) => void; - +setContext: (context: string) => void; - +beginScroll: () => void; - +endScroll: () => void; -} - -export default (TurboModuleRegistry.get('FrameRateLogger'): ?Spec); +export * from '../../src/private/specs/modules/NativeFrameRateLogger'; +import NativeFrameRateLogger from '../../src/private/specs/modules/NativeFrameRateLogger'; +export default NativeFrameRateLogger; diff --git a/packages/react-native/Libraries/IntersectionObserver/NativeIntersectionObserver.js b/packages/react-native/Libraries/IntersectionObserver/NativeIntersectionObserver.js index ff620ec123a..c50a499b865 100644 --- a/packages/react-native/Libraries/IntersectionObserver/NativeIntersectionObserver.js +++ b/packages/react-native/Libraries/IntersectionObserver/NativeIntersectionObserver.js @@ -8,34 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type NativeIntersectionObserverEntry = { - intersectionObserverId: number, - targetInstanceHandle: mixed, - targetRect: $ReadOnlyArray, // It's actually a tuple with x, y, width and height - rootRect: $ReadOnlyArray, // It's actually a tuple with x, y, width and height - intersectionRect: ?$ReadOnlyArray, // It's actually a tuple with x, y, width and height - isIntersectingAboveThresholds: boolean, - time: number, -}; - -export type NativeIntersectionObserverObserveOptions = { - intersectionObserverId: number, - targetShadowNode: mixed, - thresholds: $ReadOnlyArray, -}; - -export interface Spec extends TurboModule { - +observe: (options: NativeIntersectionObserverObserveOptions) => void; - +unobserve: (intersectionObserverId: number, targetShadowNode: mixed) => void; - +connect: (notifyIntersectionObserversCallback: () => void) => void; - +disconnect: () => void; - +takeRecords: () => $ReadOnlyArray; -} - -export default (TurboModuleRegistry.get( - 'NativeIntersectionObserverCxx', -): ?Spec); +export * from '../../src/private/specs/modules/NativeIntersectionObserver'; +import NativeIntersectionObserver from '../../src/private/specs/modules/NativeIntersectionObserver'; +export default NativeIntersectionObserver; diff --git a/packages/react-native/Libraries/Linking/NativeIntentAndroid.js b/packages/react-native/Libraries/Linking/NativeIntentAndroid.js index 7a9f9b7bfe9..67dcaa6f980 100644 --- a/packages/react-native/Libraries/Linking/NativeIntentAndroid.js +++ b/packages/react-native/Libraries/Linking/NativeIntentAndroid.js @@ -8,23 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getInitialURL: () => Promise; - +canOpenURL: (url: string) => Promise; - +openURL: (url: string) => Promise; - +openSettings: () => Promise; - +sendIntent: ( - action: string, - extras: ?Array<{ - key: string, - value: string | number | boolean, // TODO(T67672788): Union types are not type safe - ... - }>, - ) => Promise; -} - -export default (TurboModuleRegistry.get('IntentAndroid'): ?Spec); +export * from '../../src/private/specs/modules/NativeIntentAndroid'; +import NativeIntentAndroid from '../../src/private/specs/modules/NativeIntentAndroid'; +export default NativeIntentAndroid; diff --git a/packages/react-native/Libraries/Linking/NativeLinkingManager.js b/packages/react-native/Libraries/Linking/NativeLinkingManager.js index 8f4eb239f42..6dfe4d4a4ed 100644 --- a/packages/react-native/Libraries/Linking/NativeLinkingManager.js +++ b/packages/react-native/Libraries/Linking/NativeLinkingManager.js @@ -8,20 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - // Common interface - +getInitialURL: () => Promise; - +canOpenURL: (url: string) => Promise; - +openURL: (url: string) => Promise; - +openSettings: () => Promise; - - // Events - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.get('LinkingManager'): ?Spec); +export * from '../../src/private/specs/modules/NativeLinkingManager'; +import NativeLinkingManager from '../../src/private/specs/modules/NativeLinkingManager'; +export default NativeLinkingManager; diff --git a/packages/react-native/Libraries/Modal/NativeModalManager.js b/packages/react-native/Libraries/Modal/NativeModalManager.js index f85a77ac4b5..8e0c835d52f 100644 --- a/packages/react-native/Libraries/Modal/NativeModalManager.js +++ b/packages/react-native/Libraries/Modal/NativeModalManager.js @@ -8,14 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - // RCTEventEmitter - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.get('ModalManager'): ?Spec); +export * from '../../src/private/specs/modules/NativeModalManager'; +import NativeModalManager from '../../src/private/specs/modules/NativeModalManager'; +export default NativeModalManager; diff --git a/packages/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js b/packages/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js index a21af54ae4f..06b6ea28bf5 100644 --- a/packages/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js +++ b/packages/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js @@ -8,132 +8,6 @@ * @flow strict-local */ -import type {ViewProps} from '../Components/View/ViewPropTypes'; -import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; -import type { - DirectEventHandler, - Int32, - WithDefault, -} from '../Types/CodegenTypes'; - -import codegenNativeComponent from '../Utilities/codegenNativeComponent'; - -type OrientationChangeEvent = $ReadOnly<{| - orientation: 'portrait' | 'landscape', -|}>; - -type NativeProps = $ReadOnly<{| - ...ViewProps, - - /** - * The `animationType` prop controls how the modal animates. - * - * See https://reactnative.dev/docs/modal#animationtype - */ - animationType?: WithDefault<'none' | 'slide' | 'fade', 'none'>, - - /** - * The `presentationStyle` prop controls how the modal appears. - * - * See https://reactnative.dev/docs/modal#presentationstyle - */ - presentationStyle?: WithDefault< - 'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen', - 'fullScreen', - >, - - /** - * The `transparent` prop determines whether your modal will fill the - * entire view. - * - * See https://reactnative.dev/docs/modal#transparent - */ - transparent?: WithDefault, - - /** - * The `statusBarTranslucent` prop determines whether your modal should go under - * the system statusbar. - * - * See https://reactnative.dev/docs/modal#statusBarTranslucent - */ - statusBarTranslucent?: WithDefault, - - /** - * The `hardwareAccelerated` prop controls whether to force hardware - * acceleration for the underlying window. - * - * See https://reactnative.dev/docs/modal#hardwareaccelerated - */ - hardwareAccelerated?: WithDefault, - - /** - * The `onRequestClose` callback is called when the user taps the hardware - * back button on Android or the menu button on Apple TV. - * - * This is required on Apple TV and Android. - * - * See https://reactnative.dev/docs/modal#onrequestclose - */ - onRequestClose?: ?DirectEventHandler, - - /** - * The `onShow` prop allows passing a function that will be called once the - * modal has been shown. - * - * See https://reactnative.dev/docs/modal#onshow - */ - onShow?: ?DirectEventHandler, - - /** - * The `onDismiss` prop allows passing a function that will be called once - * the modal has been dismissed. - * - * See https://reactnative.dev/docs/modal#ondismiss - */ - onDismiss?: ?DirectEventHandler, - - /** - * The `visible` prop determines whether your modal is visible. - * - * See https://reactnative.dev/docs/modal#visible - */ - visible?: WithDefault, - - /** - * Deprecated. Use the `animationType` prop instead. - */ - animated?: WithDefault, - - /** - * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations. - * - * See https://reactnative.dev/docs/modal#supportedorientations - */ - supportedOrientations?: WithDefault< - $ReadOnlyArray< - | 'portrait' - | 'portrait-upside-down' - | 'landscape' - | 'landscape-left' - | 'landscape-right', - >, - 'portrait', - >, - - /** - * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed. - * - * See https://reactnative.dev/docs/modal#onorientationchange - */ - onOrientationChange?: ?DirectEventHandler, - - /** - * The `identifier` is the unique number for identifying Modal components. - */ - identifier?: WithDefault, -|}>; - -export default (codegenNativeComponent('ModalHostView', { - interfaceOnly: true, - paperComponentName: 'RCTModalHostView', -}): HostComponent); +export * from '../../src/private/specs/components/RCTModalHostViewNativeComponent'; +import RCTModalHostViewNativeComponent from '../../src/private/specs/components/RCTModalHostViewNativeComponent'; +export default RCTModalHostViewNativeComponent; diff --git a/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js b/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js index 024102c96c8..c348917049f 100644 --- a/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js +++ b/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js @@ -8,51 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type MutationObserverId = number; - -// These types are not supported by the codegen. -type ShadowNode = mixed; -type InstanceHandle = mixed; -type ReactNativeElement = mixed; -type ReadOnlyNode = mixed; - -export type NativeMutationRecord = { - mutationObserverId: MutationObserverId, - target: ReactNativeElement, - addedNodes: $ReadOnlyArray, - removedNodes: $ReadOnlyArray, - ... -}; - -export type NativeMutationObserverObserveOptions = { - mutationObserverId: number, - targetShadowNode: ShadowNode, - subtree: boolean, -}; - -export interface Spec extends TurboModule { - +observe: (options: NativeMutationObserverObserveOptions) => void; - +unobserve: ( - mutationObserverId: number, - targetShadowNode: ShadowNode, - ) => void; - +connect: ( - notifyMutationObservers: () => void, - // We need this to retain the public instance before React removes the - // reference to it (which happen in mutations that remove nodes, or when - // nodes are removed between the change and the callback is executed in JS). - getPublicInstanceFromInstanceHandle: ( - instanceHandle: InstanceHandle, - ) => ReadOnlyNode, - ) => void; - +disconnect: () => void; - +takeRecords: () => $ReadOnlyArray; -} - -export default (TurboModuleRegistry.get( - 'NativeMutationObserverCxx', -): ?Spec); +export * from '../../src/private/specs/modules/NativeMutationObserver'; +import NativeMutationObserver from '../../src/private/specs/modules/NativeMutationObserver'; +export default NativeMutationObserver; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js b/packages/react-native/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js index 31869c35abb..abcba87dfbf 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js @@ -8,13 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +startRecordingFps: () => void; - +stopRecordingFps: (animationStopTimeMs: number) => void; -} - -export default (TurboModuleRegistry.get('AnimationsDebugModule'): ?Spec); +export * from '../../../src/private/specs/modules/NativeAnimationsDebugModule'; +import NativeAnimationsDebugModule from '../../../src/private/specs/modules/NativeAnimationsDebugModule'; +export default NativeAnimationsDebugModule; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeDevMenu.js b/packages/react-native/Libraries/NativeModules/specs/NativeDevMenu.js index 3819002afbe..5cda96f7a8a 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeDevMenu.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeDevMenu.js @@ -8,16 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +show: () => void; - +reload: () => void; - +debugRemotely: (enableDebug: boolean) => void; - +setProfilingEnabled: (enabled: boolean) => void; - +setHotLoadingEnabled: (enabled: boolean) => void; -} - -export default (TurboModuleRegistry.getEnforcing('DevMenu'): Spec); +export * from '../../../src/private/specs/modules/NativeDevMenu'; +import NativeDevMenu from '../../../src/private/specs/modules/NativeDevMenu'; +export default NativeDevMenu; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeDevSettings.js b/packages/react-native/Libraries/NativeModules/specs/NativeDevSettings.js index 142836e57c2..3afe5e7c1ae 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeDevSettings.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeDevSettings.js @@ -8,26 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +reload: () => void; - +reloadWithReason?: (reason: string) => void; - +onFastRefresh?: () => void; - +setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void; - +setIsDebuggingRemotely: (isDebuggingRemotelyEnabled: boolean) => void; - +setProfilingEnabled: (isProfilingEnabled: boolean) => void; - +toggleElementInspector: () => void; - +addMenuItem: (title: string) => void; - - // Events - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - - // iOS only. - +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void; -} - -export default (TurboModuleRegistry.getEnforcing('DevSettings'): Spec); +export * from '../../../src/private/specs/modules/NativeDevSettings'; +import NativeDevSettings from '../../../src/private/specs/modules/NativeDevSettings'; +export default NativeDevSettings; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeDeviceEventManager.js b/packages/react-native/Libraries/NativeModules/specs/NativeDeviceEventManager.js index 464d154d2d8..c072f8fe0db 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeDeviceEventManager.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeDeviceEventManager.js @@ -8,12 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +invokeDefaultBackPressHandler: () => void; -} - -export default (TurboModuleRegistry.get('DeviceEventManager'): ?Spec); +export * from '../../../src/private/specs/modules/NativeDeviceEventManager'; +import NativeDeviceEventManager from '../../../src/private/specs/modules/NativeDeviceEventManager'; +export default NativeDeviceEventManager; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js b/packages/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js index beccaf95335..cfa2794219c 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js @@ -8,41 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -/* 'buttonClicked' | 'dismissed' */ -type DialogAction = string; -/* - buttonPositive = -1, - buttonNegative = -2, - buttonNeutral = -3 -*/ -type DialogButtonKey = number; -export type DialogOptions = {| - title?: string, - message?: string, - buttonPositive?: string, - buttonNegative?: string, - buttonNeutral?: string, - items?: Array, - cancelable?: boolean, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => {| - +buttonClicked: DialogAction, - +dismissed: DialogAction, - +buttonPositive: DialogButtonKey, - +buttonNegative: DialogButtonKey, - +buttonNeutral: DialogButtonKey, - |}; - +showAlert: ( - config: DialogOptions, - onError: (error: string) => void, - onAction: (action: DialogAction, buttonKey?: DialogButtonKey) => void, - ) => void; -} - -export default (TurboModuleRegistry.get('DialogManagerAndroid'): ?Spec); +export * from '../../../src/private/specs/modules/NativeDialogManagerAndroid'; +import NativeDialogManagerAndroid from '../../../src/private/specs/modules/NativeDialogManagerAndroid'; +export default NativeDialogManagerAndroid; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeLogBox.js b/packages/react-native/Libraries/NativeModules/specs/NativeLogBox.js index 35a8d460b96..836da86d63b 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeLogBox.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeLogBox.js @@ -8,13 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +show: () => void; - +hide: () => void; -} - -export default (TurboModuleRegistry.get('LogBox'): ?Spec); +export * from '../../../src/private/specs/modules/NativeLogBox'; +import NativeLogBox from '../../../src/private/specs/modules/NativeLogBox'; +export default NativeLogBox; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeRedBox.js b/packages/react-native/Libraries/NativeModules/specs/NativeRedBox.js index 689f09aa1f5..e278898f2d8 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeRedBox.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeRedBox.js @@ -4,17 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +setExtraData: (extraData: Object, forIdentifier: string) => void; - +dismiss: () => void; -} - -export default (TurboModuleRegistry.get('RedBox'): ?Spec); +export * from '../../../src/private/specs/modules/NativeRedBox'; +import NativeRedBox from '../../../src/private/specs/modules/NativeRedBox'; +export default NativeRedBox; diff --git a/packages/react-native/Libraries/NativeModules/specs/NativeSourceCode.js b/packages/react-native/Libraries/NativeModules/specs/NativeSourceCode.js index 8441e21cb87..3ff3c9c109d 100644 --- a/packages/react-native/Libraries/NativeModules/specs/NativeSourceCode.js +++ b/packages/react-native/Libraries/NativeModules/specs/NativeSourceCode.js @@ -8,29 +8,6 @@ * @format */ -import type {TurboModule} from '../../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry'; - -export type SourceCodeConstants = {| - scriptURL: string, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => SourceCodeConstants; -} - -const NativeModule = TurboModuleRegistry.getEnforcing('SourceCode'); -let constants = null; - -const NativeSourceCode = { - getConstants(): SourceCodeConstants { - if (constants == null) { - constants = NativeModule.getConstants(); - } - - return constants; - }, -}; - +export * from '../../../src/private/specs/modules/NativeSourceCode'; +import NativeSourceCode from '../../../src/private/specs/modules/NativeSourceCode'; export default NativeSourceCode; diff --git a/packages/react-native/Libraries/Network/NativeNetworkingAndroid.js b/packages/react-native/Libraries/Network/NativeNetworkingAndroid.js index f15a19f9b24..429bd876800 100644 --- a/packages/react-native/Libraries/Network/NativeNetworkingAndroid.js +++ b/packages/react-native/Libraries/Network/NativeNetworkingAndroid.js @@ -4,34 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -type Header = [string, string]; - -export interface Spec extends TurboModule { - +sendRequest: ( - method: string, - url: string, - requestId: number, - headers: Array
, - data: Object, - responseType: string, - useIncrementalUpdates: boolean, - timeout: number, - withCredentials: boolean, - ) => void; - +abortRequest: (requestId: number) => void; - +clearCookies: (callback: (result: boolean) => void) => void; - - // RCTEventEmitter - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.getEnforcing('Networking'): Spec); +export * from '../../src/private/specs/modules/NativeNetworkingAndroid'; +import NativeNetworkingAndroid from '../../src/private/specs/modules/NativeNetworkingAndroid'; +export default NativeNetworkingAndroid; diff --git a/packages/react-native/Libraries/Network/NativeNetworkingIOS.js b/packages/react-native/Libraries/Network/NativeNetworkingIOS.js index 28ec9d7bcba..f7f46d26f07 100644 --- a/packages/react-native/Libraries/Network/NativeNetworkingIOS.js +++ b/packages/react-native/Libraries/Network/NativeNetworkingIOS.js @@ -4,34 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +sendRequest: ( - query: {| - method: string, - url: string, - data: Object, - headers: Object, - responseType: string, - incrementalUpdates: boolean, - timeout: number, - withCredentials: boolean, - |}, - callback: (requestId: number) => void, - ) => void; - +abortRequest: (requestId: number) => void; - +clearCookies: (callback: (result: boolean) => void) => void; - - // RCTEventEmitter - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.getEnforcing('Networking'): Spec); +export * from '../../src/private/specs/modules/NativeNetworkingIOS'; +import NativeNetworkingIOS from '../../src/private/specs/modules/NativeNetworkingIOS'; +export default NativeNetworkingIOS; diff --git a/packages/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js b/packages/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js index ca780e705f0..3d7a19497be 100644 --- a/packages/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js +++ b/packages/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js @@ -8,12 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +operationComplete: (token: number, result: ?string, error: ?string) => void; -} - -export default (TurboModuleRegistry.get('JSCSamplingProfiler'): ?Spec); +export * from '../../src/private/specs/modules/NativeJSCSamplingProfiler'; +import NativeJSCSamplingProfiler from '../../src/private/specs/modules/NativeJSCSamplingProfiler'; +export default NativeJSCSamplingProfiler; diff --git a/packages/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js b/packages/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js index 6373ab08d61..d6d77d26213 100644 --- a/packages/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +++ b/packages/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js @@ -4,74 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @format * @flow strict + * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -// TODO: Use proper enum types. -export type PermissionStatus = string; -export type PermissionType = string; -/* -export type PermissionStatus = 'granted' | 'denied' | 'never_ask_again'; -export type PermissionType = - | 'android.permission.READ_CALENDAR' - | 'android.permission.WRITE_CALENDAR' - | 'android.permission.CAMERA' - | 'android.permission.READ_CONTACTS' - | 'android.permission.WRITE_CONTACTS' - | 'android.permission.GET_ACCOUNTS' - | 'android.permission.ACCESS_BACKGROUND_LOCATION' - | 'android.permission.ACCESS_FINE_LOCATION' - | 'android.permission.ACCESS_COARSE_LOCATION' - | 'android.permission.RECORD_AUDIO' - | 'android.permission.READ_PHONE_STATE' - | 'android.permission.CALL_PHONE' - | 'android.permission.READ_CALL_LOG' - | 'android.permission.WRITE_CALL_LOG' - | 'com.android.voicemail.permission.ADD_VOICEMAIL' - | 'com.android.voicemail.permission.READ_VOICEMAIL' - | 'com.android.voicemail.permission.WRITE_VOICEMAIL' - | 'android.permission.USE_SIP' - | 'android.permission.PROCESS_OUTGOING_CALLS' - | 'android.permission.BODY_SENSORS' - | 'android.permission.BODY_SENSORS_BACKGROUND' - | 'android.permission.SEND_SMS' - | 'android.permission.RECEIVE_SMS' - | 'android.permission.READ_SMS' - | 'android.permission.RECEIVE_WAP_PUSH' - | 'android.permission.RECEIVE_MMS' - | 'android.permission.READ_EXTERNAL_STORAGE' - | 'android.permission.READ_MEDIA_IMAGES', - | 'android.permission.READ_MEDIA_VIDEO', - | 'android.permission.READ_MEDIA_AUDIO', - | 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED' - | 'android.permission.WRITE_EXTERNAL_STORAGE' - | 'android.permission.BLUETOOTH_CONNECT' - | 'android.permission.BLUETOOTH_SCAN' - | 'android.permission.BLUETOOTH_ADVERTISE' - | 'android.permission.ACCESS_MEDIA_LOCATION' - | 'android.permission.ACCEPT_HANDOVER' - | 'android.permission.ACTIVITY_RECOGNITION' - | 'android.permission.ANSWER_PHONE_CALLS' - | 'android.permission.READ_PHONE_NUMBERS' - | 'android.permission.UWB_RANGING' - | 'android.permission.POST_NOTIFICATIONS' - | 'android.permission.NEARBY_WIFI_DEVICES'; -*/ - -export interface Spec extends TurboModule { - +checkPermission: (permission: PermissionType) => Promise; - +requestPermission: (permission: PermissionType) => Promise; - +shouldShowRequestPermissionRationale: ( - permission: string, - ) => Promise; - +requestMultiplePermissions: ( - permissions: Array, - ) => Promise<{[permission: PermissionType]: PermissionStatus, ...}>; -} - -export default (TurboModuleRegistry.get('PermissionsAndroid'): ?Spec); +export * from '../../src/private/specs/modules/NativePermissionsAndroid'; +import NativePermissionsAndroid from '../../src/private/specs/modules/NativePermissionsAndroid'; +export default NativePermissionsAndroid; diff --git a/packages/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js b/packages/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js index 0df32a8b379..e7d2b687b0e 100644 --- a/packages/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +++ b/packages/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js @@ -4,104 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * + * @flow strict-local * @format - * @flow */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -type Permissions = {| - alert: boolean, - badge: boolean, - sound: boolean, -|}; - -type Notification = {| - +alertTitle?: ?string, - +alertBody?: ?string, - +userInfo?: ?Object, - /** - * Identifier for the notification category. See the [Apple documentation](https://developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types) - * for more details. - */ - +category?: ?string, - /** - * Actual type: string | number - * - * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`. - * If both are specified, `fireDate` takes precedence. - * If you use `presentLocalNotification`, both will be ignored - * and the notification will be shown immediately. - */ - +fireDate?: ?number, - /** - * Seconds from now to display the notification. - * - * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`. - * If both are specified, `fireDate` takes precedence. - * If you use `presentLocalNotification`, both will be ignored - * and the notification will be shown immediately. - */ - +fireIntervalSeconds?: ?number, - /** Badge count to display on the app icon. */ - +applicationIconBadgeNumber?: ?number, - /** Whether to silence the notification sound. */ - +isSilent?: ?boolean, - /** - * Custom notification sound to play. Write-only: soundName will be null when - * accessing already created notifications using getScheduledLocalNotifications - * or getDeliveredNotifications. - */ - +soundName?: ?string, - /** DEPRECATED. This was used for iOS's legacy UILocalNotification. */ - +alertAction?: ?string, - /** DEPRECATED. Use `fireDate` or `fireIntervalSeconds` instead. */ - +repeatInterval?: ?string, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +onFinishRemoteNotification: ( - notificationId: string, - /** - * Type: - * 'UIBackgroundFetchResultNewData' | - * 'UIBackgroundFetchResultNoData' | - * 'UIBackgroundFetchResultFailed' - */ - fetchResult: string, - ) => void; - +setApplicationIconBadgeNumber: (num: number) => void; - +getApplicationIconBadgeNumber: (callback: (num: number) => void) => void; - +requestPermissions: (permission: {| - +alert: boolean, - +badge: boolean, - +sound: boolean, - |}) => Promise; - +abandonPermissions: () => void; - +checkPermissions: (callback: (permissions: Permissions) => void) => void; - +presentLocalNotification: (notification: Notification) => void; - +scheduleLocalNotification: (notification: Notification) => void; - +cancelAllLocalNotifications: () => void; - +cancelLocalNotifications: (userInfo: Object) => void; - +getInitialNotification: () => Promise; - +getScheduledLocalNotifications: ( - callback: (notification: Notification) => void, - ) => void; - +removeAllDeliveredNotifications: () => void; - +removeDeliveredNotifications: (identifiers: Array) => void; - +getDeliveredNotifications: ( - callback: (notification: Array) => void, - ) => void; - +getAuthorizationStatus: ( - callback: (authorizationStatus: number) => void, - ) => void; - +addListener: (eventType: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.get( - 'PushNotificationManager', -): ?Spec); +export * from '../../src/private/specs/modules/NativePushNotificationManagerIOS'; +import NativePushNotificationManagerIOS from '../../src/private/specs/modules/NativePushNotificationManagerIOS'; +export default NativePushNotificationManagerIOS; diff --git a/packages/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js b/packages/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js index 48940a9b021..94efcd69386 100644 --- a/packages/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +++ b/packages/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js @@ -8,13 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +notifyTaskFinished: (taskId: number) => void; - +notifyTaskRetry: (taskId: number) => Promise; -} - -export default (TurboModuleRegistry.get('HeadlessJsTaskSupport'): ?Spec); +export * from '../../src/private/specs/modules/NativeHeadlessJsTaskSupport'; +import NativeHeadlessJsTaskSupport from '../../src/private/specs/modules/NativeHeadlessJsTaskSupport'; +export default NativeHeadlessJsTaskSupport; diff --git a/packages/react-native/Libraries/ReactNative/NativeI18nManager.js b/packages/react-native/Libraries/ReactNative/NativeI18nManager.js index 7228b4f2e2c..a00ab4f21a4 100644 --- a/packages/react-native/Libraries/ReactNative/NativeI18nManager.js +++ b/packages/react-native/Libraries/ReactNative/NativeI18nManager.js @@ -8,21 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type I18nManagerConstants = {| - doLeftAndRightSwapInRTL: boolean, - isRTL: boolean, - localeIdentifier?: ?string, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => I18nManagerConstants; - allowRTL: (allowRTL: boolean) => void; - forceRTL: (forceRTL: boolean) => void; - swapLeftAndRightInRTL: (flipStyles: boolean) => void; -} - -export default (TurboModuleRegistry.get('I18nManager'): ?Spec); +export * from '../../src/private/specs/modules/NativeI18nManager'; +import NativeI18nManager from '../../src/private/specs/modules/NativeI18nManager'; +export default NativeI18nManager; diff --git a/packages/react-native/Libraries/ReactNative/NativeUIManager.js b/packages/react-native/Libraries/ReactNative/NativeUIManager.js index 4613bc3a259..ed833ea1357 100644 --- a/packages/react-native/Libraries/ReactNative/NativeUIManager.js +++ b/packages/react-native/Libraries/ReactNative/NativeUIManager.js @@ -4,115 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {RootTag} from '../TurboModule/RCTExport'; -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => Object; - +createView: ( - reactTag: ?number, - viewName: string, - rootTag: RootTag, - props: Object, - ) => void; - +updateView: (reactTag: number, viewName: string, props: Object) => void; - +findSubviewIn: ( - reactTag: ?number, - point: Array, - callback: ( - nativeViewTag: number, - left: number, - top: number, - width: number, - height: number, - ) => void, - ) => void; - +dispatchViewManagerCommand: ( - reactTag: ?number, - commandID: number, - commandArgs: ?Array, - ) => void; - +measure: ( - reactTag: number, - callback: ( - left: number, - top: number, - width: number, - height: number, - pageX: number, - pageY: number, - ) => void, - ) => void; - +measureInWindow: ( - reactTag: number, - callback: (x: number, y: number, width: number, height: number) => void, - ) => void; - +viewIsDescendantOf: ( - reactTag: ?number, - ancestorReactTag: ?number, - callback: (result: Array) => void, - ) => void; - +measureLayout: ( - reactTag: number, - ancestorReactTag: number, - errorCallback: (error: Object) => void, - callback: ( - left: number, - top: number, - width: number, - height: number, - ) => void, - ) => void; - +measureLayoutRelativeToParent: ( - reactTag: number, - errorCallback: (error: Object) => void, - callback: ( - left: number, - top: number, - width: number, - height: number, - ) => void, - ) => void; - +setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void; - +clearJSResponder: () => void; - +configureNextLayoutAnimation: ( - config: Object, - callback: () => void, // check what is returned here - errorCallback: (error: Object) => void, - ) => void; - +setChildren: (containerTag: ?number, reactTags: Array) => void; - +manageChildren: ( - containerTag: ?number, - moveFromIndices: Array, - moveToIndices: Array, - addChildReactTags: Array, - addAtIndices: Array, - removeAtIndices: Array, - ) => void; - - // Android only - +getConstantsForViewManager?: (viewManagerName: string) => Object; - +getDefaultEventTypes?: () => Array; - +setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void; - +sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void; - +showPopupMenu?: ( - reactTag: ?number, - items: Array, - error: (error: Object) => void, - success: (event: string, selected?: number) => void, - ) => void; - +dismissPopupMenu?: () => void; - - // ios only - +lazilyLoadView?: (name: string) => Object; // revisit return - +focus?: (reactTag: ?number) => void; - +blur?: (reactTag: ?number) => void; -} - -export default (TurboModuleRegistry.getEnforcing('UIManager'): Spec); +export * from '../../src/private/specs/modules/NativeUIManager'; +import NativeUIManager from '../../src/private/specs/modules/NativeUIManager'; +export default NativeUIManager; diff --git a/packages/react-native/Libraries/Settings/NativeSettingsManager.js b/packages/react-native/Libraries/Settings/NativeSettingsManager.js index e0219e66195..9764843d78c 100644 --- a/packages/react-native/Libraries/Settings/NativeSettingsManager.js +++ b/packages/react-native/Libraries/Settings/NativeSettingsManager.js @@ -4,22 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {| - settings: Object, - |}; - +setValues: (values: Object) => void; - +deleteValues: (values: Array) => void; -} - -export default (TurboModuleRegistry.getEnforcing( - 'SettingsManager', -): Spec); +export * from '../../src/private/specs/modules/NativeSettingsManager'; +import NativeSettingsManager from '../../src/private/specs/modules/NativeSettingsManager'; +export default NativeSettingsManager; diff --git a/packages/react-native/Libraries/Share/NativeShareModule.js b/packages/react-native/Libraries/Share/NativeShareModule.js index 39b877cd098..accb8798e2a 100644 --- a/packages/react-native/Libraries/Share/NativeShareModule.js +++ b/packages/react-native/Libraries/Share/NativeShareModule.js @@ -8,16 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +share: ( - content: {|title?: string, message?: string|}, - dialogTitle?: string, - ) => Promise<{|action: string|}>; -} - -export default (TurboModuleRegistry.get('ShareModule'): ?Spec); +export * from '../../src/private/specs/modules/NativeShareModule'; +import NativeShareModule from '../../src/private/specs/modules/NativeShareModule'; +export default NativeShareModule; diff --git a/packages/react-native/Libraries/TurboModule/samples/NativeSampleTurboModule.js b/packages/react-native/Libraries/TurboModule/samples/NativeSampleTurboModule.js index a46dd55ed9d..6db6845b56f 100644 --- a/packages/react-native/Libraries/TurboModule/samples/NativeSampleTurboModule.js +++ b/packages/react-native/Libraries/TurboModule/samples/NativeSampleTurboModule.js @@ -4,47 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {UnsafeObject} from '../../Types/CodegenTypes'; -import type {RootTag, TurboModule} from '../RCTExport'; - -import * as TurboModuleRegistry from '../TurboModuleRegistry'; - -export enum EnumInt { - A = 23, - B = 42, -} - -export interface Spec extends TurboModule { - // Exported methods. - +getConstants: () => {| - const1: boolean, - const2: number, - const3: string, - |}; - +voidFunc: () => void; - +getBool: (arg: boolean) => boolean; - +getEnum?: (arg: EnumInt) => EnumInt; - +getNumber: (arg: number) => number; - +getString: (arg: string) => string; - +getArray: (arg: Array) => Array; - +getObject: (arg: Object) => Object; - +getUnsafeObject: (arg: UnsafeObject) => UnsafeObject; - +getRootTag: (arg: RootTag) => RootTag; - +getValue: (x: number, y: string, z: Object) => Object; - +getValueWithCallback: (callback: (value: string) => void) => void; - +getValueWithPromise: (error: boolean) => Promise; - +voidFuncThrows?: () => void; - +getObjectThrows?: (arg: Object) => Object; - +promiseThrows?: () => Promise; - +voidFuncAssert?: () => void; - +getObjectAssert?: (arg: Object) => Object; - +promiseAssert?: () => Promise; -} - -export default (TurboModuleRegistry.getEnforcing( - 'SampleTurboModule', -): Spec); +export * from '../../../src/private/specs/modules/NativeSampleTurboModule'; +import NativeSampleTurboModule from '../../../src/private/specs/modules/NativeSampleTurboModule'; +export default NativeSampleTurboModule; diff --git a/packages/react-native/Libraries/Utilities/NativeAppearance.js b/packages/react-native/Libraries/Utilities/NativeAppearance.js index 786790f5987..4b874aa37e5 100644 --- a/packages/react-native/Libraries/Utilities/NativeAppearance.js +++ b/packages/react-native/Libraries/Utilities/NativeAppearance.js @@ -8,29 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type ColorSchemeName = 'light' | 'dark'; - -export type AppearancePreferences = {| - // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union - // types. - /* 'light' | 'dark' */ - colorScheme?: ?string, -|}; - -export interface Spec extends TurboModule { - // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union - // types. - /* 'light' | 'dark' */ - +getColorScheme: () => ?string; - +setColorScheme?: (colorScheme: string) => void; - - // RCTEventEmitter - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.get('Appearance'): ?Spec); +export type * from '../../src/private/specs/modules/NativeAppearance'; +import NativeAppearance from '../../src/private/specs/modules/NativeAppearance'; +export default NativeAppearance; diff --git a/packages/react-native/Libraries/Utilities/NativeDevLoadingView.js b/packages/react-native/Libraries/Utilities/NativeDevLoadingView.js index 2b9952fea40..2e930f2c359 100644 --- a/packages/react-native/Libraries/Utilities/NativeDevLoadingView.js +++ b/packages/react-native/Libraries/Utilities/NativeDevLoadingView.js @@ -8,17 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +showMessage: ( - message: string, - withColor: ?number, - withBackgroundColor: ?number, - ) => void; - +hide: () => void; -} - -export default (TurboModuleRegistry.get('DevLoadingView'): ?Spec); +export * from '../../src/private/specs/modules/NativeDevLoadingView'; +import NativeDevLoadingView from '../../src/private/specs/modules/NativeDevLoadingView'; +export default NativeDevLoadingView; diff --git a/packages/react-native/Libraries/Utilities/NativeDeviceInfo.js b/packages/react-native/Libraries/Utilities/NativeDeviceInfo.js index ff4e2818f26..028ce61c91c 100644 --- a/packages/react-native/Libraries/Utilities/NativeDeviceInfo.js +++ b/packages/react-native/Libraries/Utilities/NativeDeviceInfo.js @@ -8,51 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type DisplayMetricsAndroid = {| - width: number, - height: number, - scale: number, - fontScale: number, - densityDpi: number, -|}; - -export type DisplayMetrics = {| - width: number, - height: number, - scale: number, - fontScale: number, -|}; - -export type DimensionsPayload = {| - window?: DisplayMetrics, - screen?: DisplayMetrics, - windowPhysicalPixels?: DisplayMetricsAndroid, - screenPhysicalPixels?: DisplayMetricsAndroid, -|}; - -export type DeviceInfoConstants = {| - +Dimensions: DimensionsPayload, - +isIPhoneX_deprecated?: boolean, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => DeviceInfoConstants; -} - -const NativeModule: Spec = TurboModuleRegistry.getEnforcing('DeviceInfo'); -let constants: ?DeviceInfoConstants = null; - -const NativeDeviceInfo = { - getConstants(): DeviceInfoConstants { - if (constants == null) { - constants = NativeModule.getConstants(); - } - return constants; - }, -}; - +export * from '../../src/private/specs/modules/NativeDeviceInfo'; +import NativeDeviceInfo from '../../src/private/specs/modules/NativeDeviceInfo'; export default NativeDeviceInfo; diff --git a/packages/react-native/Libraries/Utilities/NativePlatformConstantsAndroid.js b/packages/react-native/Libraries/Utilities/NativePlatformConstantsAndroid.js index 6eab28ff02f..b5bc58a1d03 100644 --- a/packages/react-native/Libraries/Utilities/NativePlatformConstantsAndroid.js +++ b/packages/react-native/Libraries/Utilities/NativePlatformConstantsAndroid.js @@ -8,37 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type ReactNativeVersionAndroid = {| - major: number, - minor: number, - patch: number, - prerelease: ?number, -|}; - -export type PlatformConstantsAndroid = {| - isTesting: boolean, - isDisableAnimations?: boolean, - reactNativeVersion: ReactNativeVersionAndroid, - Version: number, - Release: string, - Serial: string, - Fingerprint: string, - Model: string, - ServerHost?: string, - uiMode: string, - Brand: string, - Manufacturer: string, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => PlatformConstantsAndroid; - +getAndroidID: () => string; -} - -export default (TurboModuleRegistry.getEnforcing( - 'PlatformConstants', -): Spec); +export * from '../../src/private/specs/modules/NativePlatformConstantsAndroid'; +import NativePlatformConstantsAndroid from '../../src/private/specs/modules/NativePlatformConstantsAndroid'; +export default NativePlatformConstantsAndroid; diff --git a/packages/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js b/packages/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js index a4586079d50..301ea812712 100644 --- a/packages/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js +++ b/packages/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js @@ -8,30 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type PlatformConstantsIOS = {| - isTesting: boolean, - isDisableAnimations?: boolean, - reactNativeVersion: {| - major: number, - minor: number, - patch: number, - prerelease: ?number, - |}, - forceTouchAvailable: boolean, - osVersion: string, - systemName: string, - interfaceIdiom: string, - isMacCatalyst?: boolean, -|}; - -export interface Spec extends TurboModule { - +getConstants: () => PlatformConstantsIOS; -} - -export default (TurboModuleRegistry.getEnforcing( - 'PlatformConstants', -): Spec); +export * from '../../src/private/specs/modules/NativePlatformConstantsIOS'; +import NativePlatformConstantsIOS from '../../src/private/specs/modules/NativePlatformConstantsIOS'; +export default NativePlatformConstantsIOS; diff --git a/packages/react-native/Libraries/Vibration/NativeVibration.js b/packages/react-native/Libraries/Vibration/NativeVibration.js index 8fcc446817b..b23fe17b89b 100644 --- a/packages/react-native/Libraries/Vibration/NativeVibration.js +++ b/packages/react-native/Libraries/Vibration/NativeVibration.js @@ -8,17 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +vibrate: (pattern: number) => void; - - // Android only - +vibrateByPattern: (pattern: Array, repeat: number) => void; - +cancel: () => void; -} - -export default (TurboModuleRegistry.getEnforcing('Vibration'): Spec); +export * from '../../src/private/specs/modules/NativeVibration'; +import NativeVibration from '../../src/private/specs/modules/NativeVibration'; +export default NativeVibration; diff --git a/packages/react-native/Libraries/WebPerformance/NativePerformance.js b/packages/react-native/Libraries/WebPerformance/NativePerformance.js index 0b5dd11d641..9793c230546 100644 --- a/packages/react-native/Libraries/WebPerformance/NativePerformance.js +++ b/packages/react-native/Libraries/WebPerformance/NativePerformance.js @@ -8,26 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type NativeMemoryInfo = {[key: string]: ?number}; - -export type ReactNativeStartupTiming = {[key: string]: ?number}; - -export interface Spec extends TurboModule { - +mark: (name: string, startTime: number) => void; - +measure: ( - name: string, - startTime: number, - endTime: number, - duration?: number, - startMark?: string, - endMark?: string, - ) => void; - +getSimpleMemoryInfo: () => NativeMemoryInfo; - +getReactNativeStartupTiming: () => ReactNativeStartupTiming; -} - -export default (TurboModuleRegistry.get('NativePerformanceCxx'): ?Spec); +export * from '../../src/private/specs/modules/NativePerformance'; +import NativePerformance from '../../src/private/specs/modules/NativePerformance'; +export default NativePerformance; diff --git a/packages/react-native/Libraries/WebPerformance/NativePerformanceObserver.js b/packages/react-native/Libraries/WebPerformance/NativePerformanceObserver.js index 6db3be05a91..6edf1dc5c65 100644 --- a/packages/react-native/Libraries/WebPerformance/NativePerformanceObserver.js +++ b/packages/react-native/Libraries/WebPerformance/NativePerformanceObserver.js @@ -8,54 +8,6 @@ * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export type RawPerformanceEntryType = number; - -export type RawPerformanceEntry = {| - name: string, - entryType: RawPerformanceEntryType, - startTime: number, - duration: number, - // For "event" entries only: - processingStart?: number, - processingEnd?: number, - interactionId?: number, -|}; - -export type GetPendingEntriesResult = {| - entries: $ReadOnlyArray, - droppedEntriesCount: number, -|}; - -export interface Spec extends TurboModule { - +startReporting: (entryType: RawPerformanceEntryType) => void; - +stopReporting: (entryType: RawPerformanceEntryType) => void; - +setIsBuffered: ( - entryTypes: $ReadOnlyArray, - isBuffered: boolean, - ) => void; - +popPendingEntries: () => GetPendingEntriesResult; - +setOnPerformanceEntryCallback: (callback?: () => void) => void; - +logRawEntry: (entry: RawPerformanceEntry) => void; - +getEventCounts: () => $ReadOnlyArray<[string, number]>; - +setDurationThreshold: ( - entryType: RawPerformanceEntryType, - durationThreshold: number, - ) => void; - +clearEntries: ( - entryType: RawPerformanceEntryType, - entryName?: string, - ) => void; - +getEntries: ( - entryType?: RawPerformanceEntryType, - entryName?: string, - ) => $ReadOnlyArray; - +getSupportedPerformanceEntryTypes: () => $ReadOnlyArray; -} - -export default (TurboModuleRegistry.get( - 'NativePerformanceObserverCxx', -): ?Spec); +export * from '../../src/private/specs/modules/NativePerformanceObserver'; +import NativePerformanceObserver from '../../src/private/specs/modules/NativePerformanceObserver'; +export default NativePerformanceObserver; diff --git a/packages/react-native/Libraries/WebSocket/NativeWebSocketModule.js b/packages/react-native/Libraries/WebSocket/NativeWebSocketModule.js index 7ae271cc524..2220a52dcb0 100644 --- a/packages/react-native/Libraries/WebSocket/NativeWebSocketModule.js +++ b/packages/react-native/Libraries/WebSocket/NativeWebSocketModule.js @@ -4,31 +4,10 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict-local * @format */ -import type {TurboModule} from '../TurboModule/RCTExport'; - -import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry'; - -export interface Spec extends TurboModule { - +connect: ( - url: string, - protocols: ?Array, - options: {|headers?: Object|}, - socketID: number, - ) => void; - +send: (message: string, forSocketID: number) => void; - +sendBinary: (base64String: string, forSocketID: number) => void; - +ping: (socketID: number) => void; - +close: (code: number, reason: string, socketID: number) => void; - - // RCTEventEmitter - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} - -export default (TurboModuleRegistry.getEnforcing( - 'WebSocketModule', -): Spec); +export * from '../../src/private/specs/modules/NativeWebSocketModule'; +import NativeWebSocketModule from '../../src/private/specs/modules/NativeWebSocketModule'; +export default NativeWebSocketModule; diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 525bae5912e..a393a88137b 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -29,45 +29,8 @@ declare module.exports: ActionSheetIOS; `; exports[`public API should not change unintentionally Libraries/ActionSheetIOS/NativeActionSheetManager.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +showActionSheetWithOptions: ( - options: {| - +title?: ?string, - +message?: ?string, - +options: ?Array, - +destructiveButtonIndices?: ?Array, - +cancelButtonIndex?: ?number, - +anchor?: ?number, - +tintColor?: ?number, - +cancelButtonTintColor?: ?number, - +userInterfaceStyle?: ?string, - +disabledButtonIndices?: Array, - |}, - callback: (buttonIndex: number) => void - ) => void; - +showShareActionSheetWithOptions: ( - options: {| - +message?: ?string, - +url?: ?string, - +subject?: ?string, - +anchor?: ?number, - +tintColor?: ?number, - +cancelButtonTintColor?: ?number, - +excludedActivityTypes?: ?Array, - +userInterfaceStyle?: ?string, - |}, - failureCallback: (error: {| - +domain: string, - +code: string, - +userInfo?: ?Object, - +message: string, - |}) => void, - successCallback: (completed: boolean, activityType: ?string) => void - ) => void; - +dismissActionSheet?: () => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeActionSheetManager\\"; +declare export default typeof NativeActionSheetManager; " `; @@ -113,25 +76,8 @@ declare module.exports: Alert; `; exports[`public API should not change unintentionally Libraries/Alert/NativeAlertManager.js 1`] = ` -"export type Args = {| - title?: string, - message?: string, - buttons?: Array, - type?: string, - defaultValue?: string, - cancelButtonKey?: string, - destructiveButtonKey?: string, - preferredButtonKey?: string, - keyboardType?: string, - userInterfaceStyle?: string, -|}; -export interface Spec extends TurboModule { - +alertWithArgs: ( - args: Args, - callback: (id: number, value: string) => void - ) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeAlertManager\\"; +declare export default typeof NativeAlertManager; " `; @@ -538,110 +484,14 @@ declare export default { `; exports[`public API should not change unintentionally Libraries/Animated/NativeAnimatedModule.js 1`] = ` -"type EndResult = { finished: boolean, value?: number, ... }; -type EndCallback = (result: EndResult) => void; -type SaveValueCallback = (value: number) => void; -export type EventMapping = {| - nativeEventPath: Array, - animatedValueTag: ?number, -|}; -export type AnimatedNodeConfig = Object; -export type AnimatingNodeConfig = Object; -export interface Spec extends TurboModule { - +startOperationBatch: () => void; - +finishOperationBatch: () => void; - +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; - +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; - +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; - +startListeningToAnimatedNodeValue: (tag: number) => void; - +stopListeningToAnimatedNodeValue: (tag: number) => void; - +connectAnimatedNodes: (parentTag: number, childTag: number) => void; - +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; - +startAnimatingNode: ( - animationId: number, - nodeTag: number, - config: AnimatingNodeConfig, - endCallback: EndCallback - ) => void; - +stopAnimation: (animationId: number) => void; - +setAnimatedNodeValue: (nodeTag: number, value: number) => void; - +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; - +flattenAnimatedNodeOffset: (nodeTag: number) => void; - +extractAnimatedNodeOffset: (nodeTag: number) => void; - +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; - +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; - +restoreDefaultValues: (nodeTag: number) => void; - +dropAnimatedNode: (tag: number) => void; - +addAnimatedEventToView: ( - viewTag: number, - eventName: string, - eventMapping: EventMapping - ) => void; - +removeAnimatedEventFromView: ( - viewTag: number, - eventName: string, - animatedNodeTag: number - ) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; -} -declare const NativeModule: ?Spec; -declare export default typeof NativeModule; +"export * from \\"../../src/private/specs/modules/NativeAnimatedModule\\"; +declare export default typeof NativeAnimatedModule; " `; exports[`public API should not change unintentionally Libraries/Animated/NativeAnimatedTurboModule.js 1`] = ` -"type EndResult = { finished: boolean, value?: number, ... }; -type EndCallback = (result: EndResult) => void; -type SaveValueCallback = (value: number) => void; -export type EventMapping = {| - nativeEventPath: Array, - animatedValueTag: ?number, -|}; -export type AnimatedNodeConfig = Object; -export type AnimatingNodeConfig = Object; -export interface Spec extends TurboModule { - +startOperationBatch: () => void; - +finishOperationBatch: () => void; - +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; - +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; - +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; - +startListeningToAnimatedNodeValue: (tag: number) => void; - +stopListeningToAnimatedNodeValue: (tag: number) => void; - +connectAnimatedNodes: (parentTag: number, childTag: number) => void; - +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; - +startAnimatingNode: ( - animationId: number, - nodeTag: number, - config: AnimatingNodeConfig, - endCallback: EndCallback - ) => void; - +stopAnimation: (animationId: number) => void; - +setAnimatedNodeValue: (nodeTag: number, value: number) => void; - +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; - +flattenAnimatedNodeOffset: (nodeTag: number) => void; - +extractAnimatedNodeOffset: (nodeTag: number) => void; - +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; - +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; - +restoreDefaultValues: (nodeTag: number) => void; - +dropAnimatedNode: (tag: number) => void; - +addAnimatedEventToView: ( - viewTag: number, - eventName: string, - eventMapping: EventMapping - ) => void; - +removeAnimatedEventFromView: ( - viewTag: number, - eventName: string, - animatedNodeTag: number - ) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; -} -declare const NativeModule: ?Spec; -declare export default typeof NativeModule; +"export * from \\"../../src/private/specs/modules/NativeAnimatedTurboModule\\"; +declare export default typeof NativeAnimatedTurboModule; " `; @@ -1444,20 +1294,8 @@ declare module.exports: AppState; `; exports[`public API should not change unintentionally Libraries/AppState/NativeAppState.js 1`] = ` -"export type AppStateConstants = {| - initialAppState: string, -|}; -export type AppState = {| app_state: string |}; -export interface Spec extends TurboModule { - +getConstants: () => AppStateConstants; - +getCurrentAppState: ( - success: (appState: AppState) => void, - error: (error: Object) => void - ) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeAppState\\"; +declare export default typeof NativeAppState; " `; @@ -1639,25 +1477,14 @@ declare module.exports: File; `; exports[`public API should not change unintentionally Libraries/Blob/NativeBlobModule.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {| BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string |}; - +addNetworkingHandler: () => void; - +addWebSocketHandler: (id: number) => void; - +removeWebSocketHandler: (id: number) => void; - +sendOverSocket: (blob: Object, socketID: number) => void; - +createFromParts: (parts: Array, withId: string) => void; - +release: (blobId: string) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeBlobModule\\"; +declare export default typeof NativeBlobModule; " `; exports[`public API should not change unintentionally Libraries/Blob/NativeFileReaderModule.js 1`] = ` -"export interface Spec extends TurboModule { - +readAsDataURL: (data: Object) => Promise; - +readAsText: (data: Object, encoding: string) => Promise; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeFileReaderModule\\"; +declare export default typeof NativeFileReaderModule; " `; @@ -1695,11 +1522,8 @@ declare module.exports: BugReporting; `; exports[`public API should not change unintentionally Libraries/BugReporting/NativeBugReporting.js 1`] = ` -"export interface Spec extends TurboModule { - +startReportAProblemFlow: () => void; - +setExtraData: (extraData: Object, extraFiles: Object) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeBugReporting\\"; +declare export default typeof NativeBugReporting; " `; @@ -1764,79 +1588,14 @@ declare export default typeof AccessibilityInfo; `; exports[`public API should not change unintentionally Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js 1`] = ` -"export interface Spec extends TurboModule { - +isReduceMotionEnabled: ( - onSuccess: (isReduceMotionEnabled: boolean) => void - ) => void; - +isTouchExplorationEnabled: ( - onSuccess: (isScreenReaderEnabled: boolean) => void - ) => void; - +isAccessibilityServiceEnabled?: ?( - onSuccess: (isAccessibilityServiceEnabled: boolean) => void - ) => void; - +setAccessibilityFocus: (reactTag: number) => void; - +announceForAccessibility: (announcement: string) => void; - +getRecommendedTimeoutMillis?: ( - mSec: number, - onSuccess: (recommendedTimeoutMillis: number) => void - ) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeAccessibilityInfo\\"; +declare export default typeof NativeAccessibilityInfo; " `; exports[`public API should not change unintentionally Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js 1`] = ` -"export interface Spec extends TurboModule { - +getCurrentBoldTextState: ( - onSuccess: (isBoldTextEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentGrayscaleState: ( - onSuccess: (isGrayscaleEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentInvertColorsState: ( - onSuccess: (isInvertColorsEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentReduceMotionState: ( - onSuccess: (isReduceMotionEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentPrefersCrossFadeTransitionsState?: ( - onSuccess: (prefersCrossFadeTransitions: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentReduceTransparencyState: ( - onSuccess: (isReduceTransparencyEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +getCurrentVoiceOverState: ( - onSuccess: (isScreenReaderEnabled: boolean) => void, - onError: (error: Object) => void - ) => void; - +setAccessibilityContentSizeMultipliers: (JSMultipliers: {| - +extraSmall?: ?number, - +small?: ?number, - +medium?: ?number, - +large?: ?number, - +extraLarge?: ?number, - +extraExtraLarge?: ?number, - +extraExtraExtraLarge?: ?number, - +accessibilityMedium?: ?number, - +accessibilityLarge?: ?number, - +accessibilityExtraLarge?: ?number, - +accessibilityExtraExtraLarge?: ?number, - +accessibilityExtraExtraExtraLarge?: ?number, - |}) => void; - +setAccessibilityFocus: (reactTag: number) => void; - +announceForAccessibility: (announcement: string) => void; - +announceForAccessibilityWithOptions?: ( - announcement: string, - options: { queue?: boolean } - ) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeAccessibilityManager\\"; +declare export default typeof NativeAccessibilityManager; " `; @@ -1888,14 +1647,8 @@ declare export default typeof ActivityIndicatorWithRef; `; exports[`public API should not change unintentionally Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - hidesWhenStopped?: WithDefault, - animating?: WithDefault, - color?: ?ColorValue, - size?: WithDefault<\\"small\\" | \\"large\\", \\"small\\">, -|}>; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/ActivityIndicatorViewNativeComponent\\"; +declare export default typeof ActivityIndicatorViewNativeComponent; " `; @@ -1941,45 +1694,14 @@ exports[`public API should not change unintentionally Libraries/Components/Clipb `; exports[`public API should not change unintentionally Libraries/Components/Clipboard/NativeClipboard.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getString: () => Promise; - +setString: (content: string) => void; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeClipboard\\"; +declare export default typeof NativeClipboard; " `; exports[`public API should not change unintentionally Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js 1`] = ` -"type DrawerStateEvent = $ReadOnly<{| - drawerState: Int32, -|}>; -type DrawerSlideEvent = $ReadOnly<{| - offset: Float, -|}>; -type NativeProps = $ReadOnly<{| - ...ViewProps, - keyboardDismissMode?: WithDefault<\\"none\\" | \\"on-drag\\", \\"none\\">, - drawerBackgroundColor: ColorValue, - drawerPosition?: WithDefault<\\"left\\" | \\"right\\", \\"left\\">, - drawerWidth?: WithDefault, - drawerLockMode?: WithDefault< - \\"unlocked\\" | \\"locked-closed\\" | \\"locked-open\\", - \\"unlocked\\", - >, - onDrawerSlide?: ?DirectEventHandler, - onDrawerStateChanged?: ?DirectEventHandler, - onDrawerOpen?: ?DirectEventHandler, - onDrawerClose?: ?DirectEventHandler, - statusBarBackgroundColor?: ?ColorValue, -|}>; -type NativeType = HostComponent; -interface NativeCommands { - +openDrawer: (viewRef: React.ElementRef) => void; - +closeDrawer: (viewRef: React.ElementRef) => void; -} -declare export const Commands: NativeCommands; -declare export default NativeType; +"export * from \\"../../../src/private/specs/components/AndroidDrawerLayoutNativeComponent\\"; +declare export default typeof AndroidDrawerLayoutNativeComponent; " `; @@ -2043,11 +1765,8 @@ declare module.exports: Keyboard; `; exports[`public API should not change unintentionally Libraries/Components/Keyboard/NativeKeyboardObserver.js 1`] = ` -"export interface Spec extends TurboModule { - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeKeyboardObserver\\"; +declare export default typeof NativeKeyboardObserver; " `; @@ -2178,70 +1897,26 @@ declare module.exports: `; exports[`public API should not change unintentionally Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - styleAttr?: string, - typeAttr?: string, - indeterminate: boolean, - progress?: WithDefault, - animating?: WithDefault, - color?: ?ColorValue, - testID?: WithDefault, -|}>; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/ProgressBarAndroidNativeComponent\\"; +declare export default typeof ProgressBarAndroidNativeComponent; " `; exports[`public API should not change unintentionally Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - enabled?: WithDefault, - colors?: ?$ReadOnlyArray, - progressBackgroundColor?: ?ColorValue, - size?: WithDefault<\\"default\\" | \\"large\\", \\"default\\">, - progressViewOffset?: WithDefault, - onRefresh?: ?DirectEventHandler, - refreshing: boolean, -|}>; -type NativeType = HostComponent; -interface NativeCommands { - +setNativeRefreshing: ( - viewRef: React.ElementRef, - value: boolean - ) => void; -} -declare export const Commands: NativeCommands; -declare export default NativeType; +"export * from \\"../../../src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent\\"; +declare export default typeof AndroidSwipeRefreshLayoutNativeComponent; " `; exports[`public API should not change unintentionally Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - tintColor?: ?ColorValue, - titleColor?: ?ColorValue, - title?: WithDefault, - progressViewOffset?: WithDefault, - onRefresh?: ?DirectEventHandler, - refreshing: boolean, -|}>; -type ComponentType = HostComponent; -interface NativeCommands { - +setNativeRefreshing: ( - viewRef: React.ElementRef, - refreshing: boolean - ) => void; -} -declare export const Commands: NativeCommands; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/PullToRefreshViewNativeComponent\\"; +declare export default typeof PullToRefreshViewNativeComponent; " `; exports[`public API should not change unintentionally Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, -|}>; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/RCTSafeAreaViewNativeComponent\\"; +declare export default typeof RCTSafeAreaViewNativeComponent; " `; @@ -2255,12 +1930,8 @@ declare export default typeof exported; `; exports[`public API should not change unintentionally Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - removeClippedSubviews?: ?boolean, -|}>; -type NativeType = HostComponent; -declare export default NativeType; +"export * from \\"../../../src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent\\"; +declare export default typeof AndroidHorizontalScrollContentViewNativeComponent; " `; @@ -2425,10 +2096,8 @@ declare module.exports: processDecelerationRate; `; exports[`public API should not change unintentionally Libraries/Components/Sound/NativeSoundManager.js 1`] = ` -"export interface Spec extends TurboModule { - +playTouchSound: () => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeSoundManager\\"; +declare export default typeof NativeSoundManager; " `; @@ -2439,86 +2108,20 @@ declare module.exports: SoundManager; `; exports[`public API should not change unintentionally Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR: number, - |}; - +setColor: (color: number, animated: boolean) => void; - +setTranslucent: (translucent: boolean) => void; - +setStyle: (statusBarStyle?: ?string) => void; - +setHidden: (hidden: boolean) => void; -} -declare const NativeStatusBarManager: { - getConstants(): {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |}, - setColor(color: number, animated: boolean): void, - setTranslucent(translucent: boolean): void, - setStyle(statusBarStyle?: ?string): void, - setHidden(hidden: boolean): void, -}; -declare export default typeof NativeStatusBarManager; +"export * from \\"../../../src/private/specs/modules/NativeStatusBarManagerAndroid\\"; +declare export default typeof NativeStatusBarManagerAndroid; " `; exports[`public API should not change unintentionally Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |}; - +getHeight: (callback: (result: {| height: number |}) => void) => void; - +setNetworkActivityIndicatorVisible: (visible: boolean) => void; - +addListener: (eventType: string) => void; - +removeListeners: (count: number) => void; - +setStyle: (statusBarStyle?: ?string, animated: boolean) => void; - +setHidden: (hidden: boolean, withAnimation: string) => void; -} -declare const NativeStatusBarManager: { - getConstants(): {| - +HEIGHT: number, - +DEFAULT_BACKGROUND_COLOR?: number, - |}, - getHeight(callback: (result: {| height: number |}) => void): void, - setNetworkActivityIndicatorVisible(visible: boolean): void, - addListener(eventType: string): void, - removeListeners(count: number): void, - setStyle(statusBarStyle?: ?string, animated: boolean): void, - setHidden(hidden: boolean, withAnimation: string): void, -}; -declare export default typeof NativeStatusBarManager; +"export * from \\"../../../src/private/specs/modules/NativeStatusBarManagerIOS\\"; +declare export default typeof NativeStatusBarManagerIOS; " `; exports[`public API should not change unintentionally Libraries/Components/Switch/AndroidSwitchNativeComponent.js 1`] = ` -"type SwitchChangeEvent = $ReadOnly<{| - value: boolean, - target: Int32, -|}>; -type NativeProps = $ReadOnly<{| - ...ViewProps, - disabled?: WithDefault, - enabled?: WithDefault, - thumbColor?: ?ColorValue, - trackColorForFalse?: ?ColorValue, - trackColorForTrue?: ?ColorValue, - value?: WithDefault, - on?: WithDefault, - thumbTintColor?: ?ColorValue, - trackTintColor?: ?ColorValue, - onChange?: BubblingEventHandler, -|}>; -type NativeType = HostComponent; -interface NativeCommands { - +setNativeValue: ( - viewRef: React.ElementRef, - value: boolean - ) => void; -} -declare export const Commands: NativeCommands; -declare export default NativeType; +"export * from \\"../../../src/private/specs/components/AndroidSwitchNativeComponent\\"; +declare export default typeof AndroidSwitchNativeComponent; " `; @@ -2553,28 +2156,8 @@ declare export default typeof SwitchWithForwardedRef; `; exports[`public API should not change unintentionally Libraries/Components/Switch/SwitchNativeComponent.js 1`] = ` -"type SwitchChangeEvent = $ReadOnly<{| - value: boolean, - target: Int32, -|}>; -type NativeProps = $ReadOnly<{| - ...ViewProps, - disabled?: WithDefault, - value?: WithDefault, - tintColor?: ?ColorValue, - onTintColor?: ?ColorValue, - thumbTintColor?: ?ColorValue, - thumbColor?: ?ColorValue, - trackColorForFalse?: ?ColorValue, - trackColorForTrue?: ?ColorValue, - onChange?: ?BubblingEventHandler, -|}>; -type ComponentType = HostComponent; -interface NativeCommands { - +setValue: (viewRef: React.ElementRef, value: boolean) => void; -} -declare export const Commands: NativeCommands; -declare export default ComponentType; +"export * from \\"../../../src/private/specs/components/SwitchNativeComponent\\"; +declare export default typeof SwitchNativeComponent; " `; @@ -2785,11 +2368,8 @@ declare export default HostComponent; `; exports[`public API should not change unintentionally Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - backgroundColor?: ?ColorValue, -|}>; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/RCTInputAccessoryViewNativeComponent\\"; +declare export default typeof RCTInputAccessoryViewNativeComponent; " `; @@ -3537,29 +3117,8 @@ declare module.exports: { `; exports[`public API should not change unintentionally Libraries/Components/ToastAndroid/NativeToastAndroid.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {| - SHORT: number, - LONG: number, - TOP: number, - BOTTOM: number, - CENTER: number, - |}; - +show: (message: string, duration: number) => void; - +showWithGravity: ( - message: string, - duration: number, - gravity: number - ) => void; - +showWithGravityAndOffset: ( - message: string, - duration: number, - gravity: number, - xOffset: number, - yOffset: number - ) => void; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeToastAndroid\\"; +declare export default typeof NativeToastAndroid; " `; @@ -3759,11 +3318,8 @@ declare module.exports: Touchable; `; exports[`public API should not change unintentionally Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, - name?: WithDefault, -|}>; -declare export default HostComponent; +"export * from \\"../../../src/private/specs/components/UnimplementedNativeViewNativeComponent\\"; +declare export default typeof UnimplementedNativeViewNativeComponent; " `; @@ -4263,63 +3819,8 @@ exports[`public API should not change unintentionally Libraries/Core/ExtendedErr exports[`public API should not change unintentionally Libraries/Core/InitializeCore.js 1`] = `""`; exports[`public API should not change unintentionally Libraries/Core/NativeExceptionsManager.js 1`] = ` -"export type StackFrame = {| - column: ?number, - file: ?string, - lineNumber: ?number, - methodName: string, - collapse?: boolean, -|}; -export type ExceptionData = { - message: string, - originalMessage: ?string, - name: ?string, - componentStack: ?string, - stack: Array, - id: number, - isFatal: boolean, - extraData?: Object, - ... -}; -export interface Spec extends TurboModule { - +reportFatalException: ( - message: string, - stack: Array, - exceptionId: number - ) => void; - +reportSoftException: ( - message: string, - stack: Array, - exceptionId: number - ) => void; - +reportException?: (data: ExceptionData) => void; - +updateExceptionMessage: ( - message: string, - stack: Array, - exceptionId: number - ) => void; - +dismissRedbox?: () => void; -} -declare const ExceptionsManager: { - reportFatalException( - message: string, - stack: Array, - exceptionId: number - ): void, - reportSoftException( - message: string, - stack: Array, - exceptionId: number - ): void, - updateExceptionMessage( - message: string, - stack: Array, - exceptionId: number - ): void, - dismissRedbox(): void, - reportException(data: ExceptionData): void, -}; -declare export default typeof ExceptionsManager; +"export * from \\"../../src/private/specs/modules/NativeExceptionsManager\\"; +declare export default typeof NativeExceptionsManager; " `; @@ -4351,19 +3852,8 @@ declare export default typeof ReactFiberErrorDialog; `; exports[`public API should not change unintentionally Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js 1`] = ` -"export interface Spec extends TurboModule { - +fetchSegment: ( - segmentId: number, - options: Object, - callback: (error: ?Object) => void - ) => void; - +getSegment?: ( - segmentId: number, - options: Object, - callback: (error: ?Object, path: ?string) => void - ) => void; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeSegmentFetcher\\"; +declare export default typeof NativeSegmentFetcher; " `; @@ -4395,17 +3885,8 @@ declare module.exports: ExportedJSTimers; `; exports[`public API should not change unintentionally Libraries/Core/Timers/NativeTiming.js 1`] = ` -"export interface Spec extends TurboModule { - +createTimer: ( - callbackID: number, - duration: number, - jsSchedulingTime: number, - repeats: boolean - ) => void; - +deleteTimer: (timerID: number) => void; - +setSendIdleEvents: (sendIdleEvents: boolean) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeTiming\\"; +declare export default typeof NativeTiming; " `; @@ -4489,36 +3970,8 @@ declare export default typeof DebuggingOverlayWithForwardedRef; `; exports[`public API should not change unintentionally Libraries/Debugging/DebuggingOverlayNativeComponent.js 1`] = ` -"type NativeProps = $ReadOnly<{| - ...ViewProps, -|}>; -export type DebuggingOverlayNativeComponentType = HostComponent; -export type TraceUpdate = { - id: number, - rectangle: ElementRectangle, - color: ?ProcessedColorValue, -}; -export type ElementRectangle = { - x: number, - y: number, - width: number, - height: number, -}; -interface NativeCommands { - +highlightTraceUpdates: ( - viewRef: React.ElementRef, - updates: $ReadOnlyArray - ) => void; - +highlightElements: ( - viewRef: React.ElementRef, - elements: $ReadOnlyArray - ) => void; - +clearElementsHighlights: ( - viewRef: React.ElementRef - ) => void; -} -declare export const Commands: NativeCommands; -declare export default HostComponent; +"export * from \\"../../src/private/specs/components/DebuggingOverlayNativeComponent\\"; +declare export default typeof DebuggingOverlayNativeComponent; " `; @@ -4582,13 +4035,8 @@ declare module.exports: DevToolsSettingsManager; `; exports[`public API should not change unintentionally Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js 1`] = ` -"export interface Spec extends TurboModule { - +setConsolePatchSettings: (newConsolePatchSettings: string) => void; - +getConsolePatchSettings: () => ?string; - +setProfilingSettings?: (newProfilingSettings: string) => void; - +getProfilingSettings?: () => ?string; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeDevToolsSettingsManager\\"; +declare export default typeof NativeDevToolsSettingsManager; " `; @@ -4721,10 +4169,8 @@ declare module.exports: HeapCapture; `; exports[`public API should not change unintentionally Libraries/HeapCapture/NativeJSCHeapCapture.js 1`] = ` -"export interface Spec extends TurboModule { - +captureComplete: (path: string, error: ?string) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeJSCHeapCapture\\"; +declare export default typeof NativeJSCHeapCapture; " `; @@ -5032,107 +4478,32 @@ declare export default typeof ImageViewNativeComponent; `; exports[`public API should not change unintentionally Libraries/Image/NativeImageEditor.js 1`] = ` -"type Options = {| - +offset: {| - +x: number, - +y: number, - |}, - +size: {| - +width: number, - +height: number, - |}, - +displaySize?: ?{| - +width: number, - +height: number, - |}, - +resizeMode?: ?string, - +allowExternalStorage?: boolean, -|}; -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +cropImage: ( - uri: string, - cropData: Options, - successCallback: (uri: string) => void, - errorCallback: (error: string) => void - ) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeImageEditor\\"; +declare export default typeof NativeImageEditor; " `; exports[`public API should not change unintentionally Libraries/Image/NativeImageLoaderAndroid.js 1`] = ` -"export type ImageSize = { - width: number, - height: number, - ... -}; -export interface Spec extends TurboModule { - +abortRequest: (requestId: number) => void; - +getConstants: () => {||}; - +getSize: (uri: string) => Promise; - +getSizeWithHeaders: (uri: string, headers: Object) => Promise; - +prefetchImage: (uri: string, requestId: number) => Promise; - +queryCache: (uris: Array) => Promise; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeImageLoaderAndroid\\"; +declare export default typeof NativeImageLoaderAndroid; " `; exports[`public API should not change unintentionally Libraries/Image/NativeImageLoaderIOS.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getSize: (uri: string) => Promise<$ReadOnlyArray>; - +getSizeWithHeaders: ( - uri: string, - headers: Object - ) => Promise<{ - width: number, - height: number, - ... - }>; - +prefetchImage: (uri: string) => Promise; - +prefetchImageWithMetadata?: ( - uri: string, - queryRootName: string, - rootTag: RootTag - ) => Promise; - +queryCache: (uris: Array) => Promise; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeImageLoaderIOS\\"; +declare export default typeof NativeImageLoaderIOS; " `; exports[`public API should not change unintentionally Libraries/Image/NativeImageStoreAndroid.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getBase64ForTag: ( - uri: string, - successCallback: (base64ImageData: string) => void, - errorCallback: (error: string) => void - ) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeImageStoreAndroid\\"; +declare export default typeof NativeImageStoreAndroid; " `; exports[`public API should not change unintentionally Libraries/Image/NativeImageStoreIOS.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +getBase64ForTag: ( - uri: string, - successCallback: (base64ImageData: string) => void, - errorCallback: (error: {| message: string |}) => void - ) => void; - +hasImageForTag: (uri: string, callback: (hasImage: boolean) => void) => void; - +removeImageForTag: (uri: string) => void; - +addImageFromBase64: ( - base64ImageData: string, - successCallback: (uri: string) => void, - errorCallback: (error: {| message: string |}) => void - ) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeImageStoreIOS\\"; +declare export default typeof NativeImageStoreIOS; " `; @@ -5303,13 +4674,8 @@ declare module.exports: JSEventLoopWatchdog; `; exports[`public API should not change unintentionally Libraries/Interaction/NativeFrameRateLogger.js 1`] = ` -"export interface Spec extends TurboModule { - +setGlobalOptions: (options: {| +debug?: ?boolean |}) => void; - +setContext: (context: string) => void; - +beginScroll: () => void; - +endScroll: () => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeFrameRateLogger\\"; +declare export default typeof NativeFrameRateLogger; " `; @@ -5482,28 +4848,8 @@ declare export function unobserve( `; exports[`public API should not change unintentionally Libraries/IntersectionObserver/NativeIntersectionObserver.js 1`] = ` -"export type NativeIntersectionObserverEntry = { - intersectionObserverId: number, - targetInstanceHandle: mixed, - targetRect: $ReadOnlyArray, - rootRect: $ReadOnlyArray, - intersectionRect: ?$ReadOnlyArray, - isIntersectingAboveThresholds: boolean, - time: number, -}; -export type NativeIntersectionObserverObserveOptions = { - intersectionObserverId: number, - targetShadowNode: mixed, - thresholds: $ReadOnlyArray, -}; -export interface Spec extends TurboModule { - +observe: (options: NativeIntersectionObserverObserveOptions) => void; - +unobserve: (intersectionObserverId: number, targetShadowNode: mixed) => void; - +connect: (notifyIntersectionObserversCallback: () => void) => void; - +disconnect: () => void; - +takeRecords: () => $ReadOnlyArray; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeIntersectionObserver\\"; +declare export default typeof NativeIntersectionObserver; " `; @@ -5645,34 +4991,14 @@ declare module.exports: Linking; `; exports[`public API should not change unintentionally Libraries/Linking/NativeIntentAndroid.js 1`] = ` -"export interface Spec extends TurboModule { - +getInitialURL: () => Promise; - +canOpenURL: (url: string) => Promise; - +openURL: (url: string) => Promise; - +openSettings: () => Promise; - +sendIntent: ( - action: string, - extras: ?Array<{ - key: string, - value: string | number | boolean, - ... - }> - ) => Promise; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeIntentAndroid\\"; +declare export default typeof NativeIntentAndroid; " `; exports[`public API should not change unintentionally Libraries/Linking/NativeLinkingManager.js 1`] = ` -"export interface Spec extends TurboModule { - +getInitialURL: () => Promise; - +canOpenURL: (url: string) => Promise; - +openURL: (url: string) => Promise; - +openSettings: () => Promise; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeLinkingManager\\"; +declare export default typeof NativeLinkingManager; " `; @@ -6174,47 +5500,14 @@ exports[`public API should not change unintentionally Libraries/Modal/ModalInjec `; exports[`public API should not change unintentionally Libraries/Modal/NativeModalManager.js 1`] = ` -"export interface Spec extends TurboModule { - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeModalManager\\"; +declare export default typeof NativeModalManager; " `; exports[`public API should not change unintentionally Libraries/Modal/RCTModalHostViewNativeComponent.js 1`] = ` -"type OrientationChangeEvent = $ReadOnly<{| - orientation: \\"portrait\\" | \\"landscape\\", -|}>; -type NativeProps = $ReadOnly<{| - ...ViewProps, - animationType?: WithDefault<\\"none\\" | \\"slide\\" | \\"fade\\", \\"none\\">, - presentationStyle?: WithDefault< - \\"fullScreen\\" | \\"pageSheet\\" | \\"formSheet\\" | \\"overFullScreen\\", - \\"fullScreen\\", - >, - transparent?: WithDefault, - statusBarTranslucent?: WithDefault, - hardwareAccelerated?: WithDefault, - onRequestClose?: ?DirectEventHandler, - onShow?: ?DirectEventHandler, - onDismiss?: ?DirectEventHandler, - visible?: WithDefault, - animated?: WithDefault, - supportedOrientations?: WithDefault< - $ReadOnlyArray< - | \\"portrait\\" - | \\"portrait-upside-down\\" - | \\"landscape\\" - | \\"landscape-left\\" - | \\"landscape-right\\", - >, - \\"portrait\\", - >, - onOrientationChange?: ?DirectEventHandler, - identifier?: WithDefault, -|}>; -declare export default HostComponent; +"export * from \\"../../src/private/specs/components/RCTModalHostViewNativeComponent\\"; +declare export default typeof RCTModalHostViewNativeComponent; " `; @@ -6290,39 +5583,8 @@ declare export function createMutationRecord( `; exports[`public API should not change unintentionally Libraries/MutationObserver/NativeMutationObserver.js 1`] = ` -"export type MutationObserverId = number; -type ShadowNode = mixed; -type InstanceHandle = mixed; -type ReactNativeElement = mixed; -type ReadOnlyNode = mixed; -export type NativeMutationRecord = { - mutationObserverId: MutationObserverId, - target: ReactNativeElement, - addedNodes: $ReadOnlyArray, - removedNodes: $ReadOnlyArray, - ... -}; -export type NativeMutationObserverObserveOptions = { - mutationObserverId: number, - targetShadowNode: ShadowNode, - subtree: boolean, -}; -export interface Spec extends TurboModule { - +observe: (options: NativeMutationObserverObserveOptions) => void; - +unobserve: ( - mutationObserverId: number, - targetShadowNode: ShadowNode - ) => void; - +connect: ( - notifyMutationObservers: () => void, - getPublicInstanceFromInstanceHandle: ( - instanceHandle: InstanceHandle - ) => ReadOnlyNode - ) => void; - +disconnect: () => void; - +takeRecords: () => $ReadOnlyArray; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeMutationObserver\\"; +declare export default typeof NativeMutationObserver; " `; @@ -6438,108 +5700,49 @@ declare export function isIgnored(value: mixed): boolean; `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeAnimationsDebugModule.js 1`] = ` -"export interface Spec extends TurboModule { - +startRecordingFps: () => void; - +stopRecordingFps: (animationStopTimeMs: number) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeAnimationsDebugModule\\"; +declare export default typeof NativeAnimationsDebugModule; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeDevMenu.js 1`] = ` -"export interface Spec extends TurboModule { - +show: () => void; - +reload: () => void; - +debugRemotely: (enableDebug: boolean) => void; - +setProfilingEnabled: (enabled: boolean) => void; - +setHotLoadingEnabled: (enabled: boolean) => void; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeDevMenu\\"; +declare export default typeof NativeDevMenu; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeDevSettings.js 1`] = ` -"export interface Spec extends TurboModule { - +reload: () => void; - +reloadWithReason?: (reason: string) => void; - +onFastRefresh?: () => void; - +setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void; - +setIsDebuggingRemotely: (isDebuggingRemotelyEnabled: boolean) => void; - +setProfilingEnabled: (isProfilingEnabled: boolean) => void; - +toggleElementInspector: () => void; - +addMenuItem: (title: string) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; - +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeDevSettings\\"; +declare export default typeof NativeDevSettings; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeDeviceEventManager.js 1`] = ` -"export interface Spec extends TurboModule { - +invokeDefaultBackPressHandler: () => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeDeviceEventManager\\"; +declare export default typeof NativeDeviceEventManager; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeDialogManagerAndroid.js 1`] = ` -"type DialogAction = string; -type DialogButtonKey = number; -export type DialogOptions = {| - title?: string, - message?: string, - buttonPositive?: string, - buttonNegative?: string, - buttonNeutral?: string, - items?: Array, - cancelable?: boolean, -|}; -export interface Spec extends TurboModule { - +getConstants: () => {| - +buttonClicked: DialogAction, - +dismissed: DialogAction, - +buttonPositive: DialogButtonKey, - +buttonNegative: DialogButtonKey, - +buttonNeutral: DialogButtonKey, - |}; - +showAlert: ( - config: DialogOptions, - onError: (error: string) => void, - onAction: (action: DialogAction, buttonKey?: DialogButtonKey) => void - ) => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeDialogManagerAndroid\\"; +declare export default typeof NativeDialogManagerAndroid; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeLogBox.js 1`] = ` -"export interface Spec extends TurboModule { - +show: () => void; - +hide: () => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeLogBox\\"; +declare export default typeof NativeLogBox; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeRedBox.js 1`] = ` -"export interface Spec extends TurboModule { - +setExtraData: (extraData: Object, forIdentifier: string) => void; - +dismiss: () => void; -} -declare export default ?Spec; +"export * from \\"../../../src/private/specs/modules/NativeRedBox\\"; +declare export default typeof NativeRedBox; " `; exports[`public API should not change unintentionally Libraries/NativeModules/specs/NativeSourceCode.js 1`] = ` -"export type SourceCodeConstants = {| - scriptURL: string, -|}; -export interface Spec extends TurboModule { - +getConstants: () => SourceCodeConstants; -} -declare const NativeSourceCode: { getConstants(): SourceCodeConstants }; +"export * from \\"../../../src/private/specs/modules/NativeSourceCode\\"; declare export default typeof NativeSourceCode; " `; @@ -6573,49 +5776,14 @@ declare module.exports: FormData; `; exports[`public API should not change unintentionally Libraries/Network/NativeNetworkingAndroid.js 1`] = ` -"type Header = [string, string]; -export interface Spec extends TurboModule { - +sendRequest: ( - method: string, - url: string, - requestId: number, - headers: Array
, - data: Object, - responseType: string, - useIncrementalUpdates: boolean, - timeout: number, - withCredentials: boolean - ) => void; - +abortRequest: (requestId: number) => void; - +clearCookies: (callback: (result: boolean) => void) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeNetworkingAndroid\\"; +declare export default typeof NativeNetworkingAndroid; " `; exports[`public API should not change unintentionally Libraries/Network/NativeNetworkingIOS.js 1`] = ` -"export interface Spec extends TurboModule { - +sendRequest: ( - query: {| - method: string, - url: string, - data: Object, - headers: Object, - responseType: string, - incrementalUpdates: boolean, - timeout: number, - withCredentials: boolean, - |}, - callback: (requestId: number) => void - ) => void; - +abortRequest: (requestId: number) => void; - +clearCookies: (callback: (result: boolean) => void) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeNetworkingIOS\\"; +declare export default typeof NativeNetworkingIOS; " `; @@ -6790,10 +5958,8 @@ exports[`public API should not change unintentionally Libraries/NewAppScreen/ind `; exports[`public API should not change unintentionally Libraries/Performance/NativeJSCSamplingProfiler.js 1`] = ` -"export interface Spec extends TurboModule { - +operationComplete: (token: number, result: ?string, error: ?string) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeJSCSamplingProfiler\\"; +declare export default typeof NativeJSCSamplingProfiler; " `; @@ -6869,19 +6035,8 @@ declare export function counterEvent(eventName: EventName, value: number): void; `; exports[`public API should not change unintentionally Libraries/PermissionsAndroid/NativePermissionsAndroid.js 1`] = ` -"export type PermissionStatus = string; -export type PermissionType = string; -export interface Spec extends TurboModule { - +checkPermission: (permission: PermissionType) => Promise; - +requestPermission: (permission: PermissionType) => Promise; - +shouldShowRequestPermissionRationale: ( - permission: string - ) => Promise; - +requestMultiplePermissions: ( - permissions: Array - ) => Promise<{ [permission: PermissionType]: PermissionStatus, ... }>; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativePermissionsAndroid\\"; +declare export default typeof NativePermissionsAndroid; " `; @@ -7135,59 +6290,8 @@ declare module.exports: Promise; `; exports[`public API should not change unintentionally Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js 1`] = ` -"type Permissions = {| - alert: boolean, - badge: boolean, - sound: boolean, -|}; -type Notification = {| - +alertTitle?: ?string, - +alertBody?: ?string, - +userInfo?: ?Object, - +category?: ?string, - +fireDate?: ?number, - +fireIntervalSeconds?: ?number, - +applicationIconBadgeNumber?: ?number, - +isSilent?: ?boolean, - +soundName?: ?string, - +alertAction?: ?string, - +repeatInterval?: ?string, -|}; -export interface Spec extends TurboModule { - +getConstants: () => {||}; - +onFinishRemoteNotification: ( - notificationId: string, - fetchResult: string - ) => void; - +setApplicationIconBadgeNumber: (num: number) => void; - +getApplicationIconBadgeNumber: (callback: (num: number) => void) => void; - +requestPermissions: (permission: {| - +alert: boolean, - +badge: boolean, - +sound: boolean, - |}) => Promise; - +abandonPermissions: () => void; - +checkPermissions: (callback: (permissions: Permissions) => void) => void; - +presentLocalNotification: (notification: Notification) => void; - +scheduleLocalNotification: (notification: Notification) => void; - +cancelAllLocalNotifications: () => void; - +cancelLocalNotifications: (userInfo: Object) => void; - +getInitialNotification: () => Promise; - +getScheduledLocalNotifications: ( - callback: (notification: Notification) => void - ) => void; - +removeAllDeliveredNotifications: () => void; - +removeDeliveredNotifications: (identifiers: Array) => void; - +getDeliveredNotifications: ( - callback: (notification: Array) => void - ) => void; - +getAuthorizationStatus: ( - callback: (authorizationStatus: number) => void - ) => void; - +addListener: (eventType: string) => void; - +removeListeners: (count: number) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativePushNotificationManagerIOS\\"; +declare export default typeof NativePushNotificationManagerIOS; " `; @@ -7484,119 +6588,20 @@ exports[`public API should not change unintentionally Libraries/ReactNative/I18n `; exports[`public API should not change unintentionally Libraries/ReactNative/NativeHeadlessJsTaskSupport.js 1`] = ` -"export interface Spec extends TurboModule { - +notifyTaskFinished: (taskId: number) => void; - +notifyTaskRetry: (taskId: number) => Promise; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeHeadlessJsTaskSupport\\"; +declare export default typeof NativeHeadlessJsTaskSupport; " `; exports[`public API should not change unintentionally Libraries/ReactNative/NativeI18nManager.js 1`] = ` -"export type I18nManagerConstants = {| - doLeftAndRightSwapInRTL: boolean, - isRTL: boolean, - localeIdentifier?: ?string, -|}; -export interface Spec extends TurboModule { - +getConstants: () => I18nManagerConstants; - allowRTL: (allowRTL: boolean) => void; - forceRTL: (forceRTL: boolean) => void; - swapLeftAndRightInRTL: (flipStyles: boolean) => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeI18nManager\\"; +declare export default typeof NativeI18nManager; " `; exports[`public API should not change unintentionally Libraries/ReactNative/NativeUIManager.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => Object; - +createView: ( - reactTag: ?number, - viewName: string, - rootTag: RootTag, - props: Object - ) => void; - +updateView: (reactTag: number, viewName: string, props: Object) => void; - +findSubviewIn: ( - reactTag: ?number, - point: Array, - callback: ( - nativeViewTag: number, - left: number, - top: number, - width: number, - height: number - ) => void - ) => void; - +dispatchViewManagerCommand: ( - reactTag: ?number, - commandID: number, - commandArgs: ?Array - ) => void; - +measure: ( - reactTag: number, - callback: ( - left: number, - top: number, - width: number, - height: number, - pageX: number, - pageY: number - ) => void - ) => void; - +measureInWindow: ( - reactTag: number, - callback: (x: number, y: number, width: number, height: number) => void - ) => void; - +viewIsDescendantOf: ( - reactTag: ?number, - ancestorReactTag: ?number, - callback: (result: Array) => void - ) => void; - +measureLayout: ( - reactTag: number, - ancestorReactTag: number, - errorCallback: (error: Object) => void, - callback: (left: number, top: number, width: number, height: number) => void - ) => void; - +measureLayoutRelativeToParent: ( - reactTag: number, - errorCallback: (error: Object) => void, - callback: (left: number, top: number, width: number, height: number) => void - ) => void; - +setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void; - +clearJSResponder: () => void; - +configureNextLayoutAnimation: ( - config: Object, - callback: () => void, - errorCallback: (error: Object) => void - ) => void; - +setChildren: (containerTag: ?number, reactTags: Array) => void; - +manageChildren: ( - containerTag: ?number, - moveFromIndices: Array, - moveToIndices: Array, - addChildReactTags: Array, - addAtIndices: Array, - removeAtIndices: Array - ) => void; - +getConstantsForViewManager?: (viewManagerName: string) => Object; - +getDefaultEventTypes?: () => Array; - +setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void; - +sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void; - +showPopupMenu?: ( - reactTag: ?number, - items: Array, - error: (error: Object) => void, - success: (event: string, selected?: number) => void - ) => void; - +dismissPopupMenu?: () => void; - +lazilyLoadView?: (name: string) => Object; - +focus?: (reactTag: ?number) => void; - +blur?: (reactTag: ?number) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeUIManager\\"; +declare export default typeof NativeUIManager; " `; @@ -8165,14 +7170,8 @@ declare module.exports: createReactNativeComponentClass; `; exports[`public API should not change unintentionally Libraries/Settings/NativeSettingsManager.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {| - settings: Object, - |}; - +setValues: (values: Object) => void; - +deleteValues: (values: Array) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeSettingsManager\\"; +declare export default typeof NativeSettingsManager; " `; @@ -8201,14 +7200,8 @@ declare module.exports: Settings; `; exports[`public API should not change unintentionally Libraries/Share/NativeShareModule.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +share: ( - content: {| title?: string, message?: string |}, - dialogTitle?: string - ) => Promise<{| action: string |}>; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeShareModule\\"; +declare export default typeof NativeShareModule; " `; @@ -8970,36 +7963,8 @@ declare export function getEnforcing(name: string): T; `; exports[`public API should not change unintentionally Libraries/TurboModule/samples/NativeSampleTurboModule.js 1`] = ` -"export enum EnumInt { - A = 23, - B = 42, -} -export interface Spec extends TurboModule { - +getConstants: () => {| - const1: boolean, - const2: number, - const3: string, - |}; - +voidFunc: () => void; - +getBool: (arg: boolean) => boolean; - +getEnum?: (arg: EnumInt) => EnumInt; - +getNumber: (arg: number) => number; - +getString: (arg: string) => string; - +getArray: (arg: Array) => Array; - +getObject: (arg: Object) => Object; - +getUnsafeObject: (arg: UnsafeObject) => UnsafeObject; - +getRootTag: (arg: RootTag) => RootTag; - +getValue: (x: number, y: string, z: Object) => Object; - +getValueWithCallback: (callback: (value: string) => void) => void; - +getValueWithPromise: (error: boolean) => Promise; - +voidFuncThrows?: () => void; - +getObjectThrows?: (arg: Object) => Object; - +promiseThrows?: () => Promise; - +voidFuncAssert?: () => void; - +getObjectAssert?: (arg: Object) => Object; - +promiseAssert?: () => Promise; -} -declare export default Spec; +"export * from \\"../../../src/private/specs/modules/NativeSampleTurboModule\\"; +declare export default typeof NativeSampleTurboModule; " `; @@ -9479,114 +8444,32 @@ exports[`public API should not change unintentionally Libraries/Utilities/Loadin `; exports[`public API should not change unintentionally Libraries/Utilities/NativeAppearance.js 1`] = ` -"export type ColorSchemeName = \\"light\\" | \\"dark\\"; -export type AppearancePreferences = {| - colorScheme?: ?string, -|}; -export interface Spec extends TurboModule { - +getColorScheme: () => ?string; - +setColorScheme?: (colorScheme: string) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default ?Spec; +"export type * from \\"../../src/private/specs/modules/NativeAppearance\\"; +declare export default typeof NativeAppearance; " `; exports[`public API should not change unintentionally Libraries/Utilities/NativeDevLoadingView.js 1`] = ` -"export interface Spec extends TurboModule { - +showMessage: ( - message: string, - withColor: ?number, - withBackgroundColor: ?number - ) => void; - +hide: () => void; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativeDevLoadingView\\"; +declare export default typeof NativeDevLoadingView; " `; exports[`public API should not change unintentionally Libraries/Utilities/NativeDeviceInfo.js 1`] = ` -"export type DisplayMetricsAndroid = {| - width: number, - height: number, - scale: number, - fontScale: number, - densityDpi: number, -|}; -export type DisplayMetrics = {| - width: number, - height: number, - scale: number, - fontScale: number, -|}; -export type DimensionsPayload = {| - window?: DisplayMetrics, - screen?: DisplayMetrics, - windowPhysicalPixels?: DisplayMetricsAndroid, - screenPhysicalPixels?: DisplayMetricsAndroid, -|}; -export type DeviceInfoConstants = {| - +Dimensions: DimensionsPayload, - +isIPhoneX_deprecated?: boolean, -|}; -export interface Spec extends TurboModule { - +getConstants: () => DeviceInfoConstants; -} -declare const NativeDeviceInfo: { getConstants(): DeviceInfoConstants }; +"export * from \\"../../src/private/specs/modules/NativeDeviceInfo\\"; declare export default typeof NativeDeviceInfo; " `; exports[`public API should not change unintentionally Libraries/Utilities/NativePlatformConstantsAndroid.js 1`] = ` -"export type ReactNativeVersionAndroid = {| - major: number, - minor: number, - patch: number, - prerelease: ?number, -|}; -export type PlatformConstantsAndroid = {| - isTesting: boolean, - isDisableAnimations?: boolean, - reactNativeVersion: ReactNativeVersionAndroid, - Version: number, - Release: string, - Serial: string, - Fingerprint: string, - Model: string, - ServerHost?: string, - uiMode: string, - Brand: string, - Manufacturer: string, -|}; -export interface Spec extends TurboModule { - +getConstants: () => PlatformConstantsAndroid; - +getAndroidID: () => string; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativePlatformConstantsAndroid\\"; +declare export default typeof NativePlatformConstantsAndroid; " `; exports[`public API should not change unintentionally Libraries/Utilities/NativePlatformConstantsIOS.js 1`] = ` -"export type PlatformConstantsIOS = {| - isTesting: boolean, - isDisableAnimations?: boolean, - reactNativeVersion: {| - major: number, - minor: number, - patch: number, - prerelease: ?number, - |}, - forceTouchAvailable: boolean, - osVersion: string, - systemName: string, - interfaceIdiom: string, - isMacCatalyst?: boolean, -|}; -export interface Spec extends TurboModule { - +getConstants: () => PlatformConstantsIOS; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativePlatformConstantsIOS\\"; +declare export default typeof NativePlatformConstantsIOS; " `; @@ -9981,13 +8864,8 @@ declare module.exports: warnOnce; `; exports[`public API should not change unintentionally Libraries/Vibration/NativeVibration.js 1`] = ` -"export interface Spec extends TurboModule { - +getConstants: () => {||}; - +vibrate: (pattern: number) => void; - +vibrateByPattern: (pattern: Array, repeat: number) => void; - +cancel: () => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeVibration\\"; +declare export default typeof NativeVibration; " `; @@ -10037,66 +8915,14 @@ declare export default class MemoryInfo { `; exports[`public API should not change unintentionally Libraries/WebPerformance/NativePerformance.js 1`] = ` -"export type NativeMemoryInfo = { [key: string]: ?number }; -export type ReactNativeStartupTiming = { [key: string]: ?number }; -export interface Spec extends TurboModule { - +mark: (name: string, startTime: number) => void; - +measure: ( - name: string, - startTime: number, - endTime: number, - duration?: number, - startMark?: string, - endMark?: string - ) => void; - +getSimpleMemoryInfo: () => NativeMemoryInfo; - +getReactNativeStartupTiming: () => ReactNativeStartupTiming; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativePerformance\\"; +declare export default typeof NativePerformance; " `; exports[`public API should not change unintentionally Libraries/WebPerformance/NativePerformanceObserver.js 1`] = ` -"export type RawPerformanceEntryType = number; -export type RawPerformanceEntry = {| - name: string, - entryType: RawPerformanceEntryType, - startTime: number, - duration: number, - processingStart?: number, - processingEnd?: number, - interactionId?: number, -|}; -export type GetPendingEntriesResult = {| - entries: $ReadOnlyArray, - droppedEntriesCount: number, -|}; -export interface Spec extends TurboModule { - +startReporting: (entryType: RawPerformanceEntryType) => void; - +stopReporting: (entryType: RawPerformanceEntryType) => void; - +setIsBuffered: ( - entryTypes: $ReadOnlyArray, - isBuffered: boolean - ) => void; - +popPendingEntries: () => GetPendingEntriesResult; - +setOnPerformanceEntryCallback: (callback?: () => void) => void; - +logRawEntry: (entry: RawPerformanceEntry) => void; - +getEventCounts: () => $ReadOnlyArray<[string, number]>; - +setDurationThreshold: ( - entryType: RawPerformanceEntryType, - durationThreshold: number - ) => void; - +clearEntries: ( - entryType: RawPerformanceEntryType, - entryName?: string - ) => void; - +getEntries: ( - entryType?: RawPerformanceEntryType, - entryName?: string - ) => $ReadOnlyArray; - +getSupportedPerformanceEntryTypes: () => $ReadOnlyArray; -} -declare export default ?Spec; +"export * from \\"../../src/private/specs/modules/NativePerformanceObserver\\"; +declare export default typeof NativePerformanceObserver; " `; @@ -10285,21 +9111,8 @@ declare export default class ReactNativeStartupTiming { `; exports[`public API should not change unintentionally Libraries/WebSocket/NativeWebSocketModule.js 1`] = ` -"export interface Spec extends TurboModule { - +connect: ( - url: string, - protocols: ?Array, - options: {| headers?: Object |}, - socketID: number - ) => void; - +send: (message: string, forSocketID: number) => void; - +sendBinary: (base64String: string, forSocketID: number) => void; - +ping: (socketID: number) => void; - +close: (code: number, reason: string, socketID: number) => void; - +addListener: (eventName: string) => void; - +removeListeners: (count: number) => void; -} -declare export default Spec; +"export * from \\"../../src/private/specs/modules/NativeWebSocketModule\\"; +declare export default typeof NativeWebSocketModule; " `; diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 19537c13756..104fa7583bf 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -754,7 +754,7 @@ react { // TODO: The library name is chosen for parity with Fabric components & iOS // This should be changed to a more generic name, e.g. `ReactCoreSpec`. libraryName = "rncore" - jsRootDir = file("../Libraries") + jsRootDir = file("../src") } // For build from source, we need to override the privateReact extension. diff --git a/packages/react-native/package.json b/packages/react-native/package.json index a93a579f8dd..6a53fdb5088 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -140,14 +140,14 @@ "type": "modules", "ios": {}, "android": {}, - "jsSrcsDir": "Libraries" + "jsSrcsDir": "src" }, { "name": "rncore", "type": "components", "ios": {}, "android": {}, - "jsSrcsDir": "Libraries" + "jsSrcsDir": "src" } ] } diff --git a/packages/react-native/src/private/specs/components/ActivityIndicatorViewNativeComponent.js b/packages/react-native/src/private/specs/components/ActivityIndicatorViewNativeComponent.js new file mode 100644 index 00000000000..b24ad41303f --- /dev/null +++ b/packages/react-native/src/private/specs/components/ActivityIndicatorViewNativeComponent.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type {WithDefault} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + /** + * Whether the indicator should hide when not animating (true by default). + * + * See https://reactnative.dev/docs/activityindicator#hideswhenstopped-ios + */ + hidesWhenStopped?: WithDefault, + + /** + * Whether to show the indicator (true, the default) or hide it (false). + * + * See https://reactnative.dev/docs/activityindicator#animating + */ + animating?: WithDefault, + + /** + * The foreground color of the spinner (default is gray). + * + * See https://reactnative.dev/docs/activityindicator#color + */ + color?: ?ColorValue, + + /** + * Size of the indicator (default is 'small'). + * Passing a number to the size prop is only supported on Android. + * + * See https://reactnative.dev/docs/activityindicator#size + */ + size?: WithDefault<'small' | 'large', 'small'>, +|}>; + +export default (codegenNativeComponent('ActivityIndicatorView', { + paperComponentName: 'RCTActivityIndicatorView', +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js b/packages/react-native/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js new file mode 100644 index 00000000000..525009eddb3 --- /dev/null +++ b/packages/react-native/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js @@ -0,0 +1,124 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + DirectEventHandler, + Float, + Int32, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type DrawerStateEvent = $ReadOnly<{| + drawerState: Int32, +|}>; + +type DrawerSlideEvent = $ReadOnly<{| + offset: Float, +|}>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + /** + * Determines whether the keyboard gets dismissed in response to a drag. + * - 'none' (the default), drags do not dismiss the keyboard. + * - 'on-drag', the keyboard is dismissed when a drag begins. + */ + keyboardDismissMode?: WithDefault<'none' | 'on-drag', 'none'>, + + /** + * Specifies the background color of the drawer. The default value is white. + * If you want to set the opacity of the drawer, use rgba. Example: + * + * ``` + * return ( + * + * + * ); + * ``` + */ + drawerBackgroundColor: ColorValue, + + /** + * Specifies the side of the screen from which the drawer will slide in. + */ + drawerPosition?: WithDefault<'left' | 'right', 'left'>, + + /** + * Specifies the width of the drawer, more precisely the width of the view that be pulled in + * from the edge of the window. + */ + + drawerWidth?: WithDefault, + + /** + * Specifies the lock mode of the drawer. The drawer can be locked in 3 states: + * - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures. + * - locked-closed, meaning that the drawer will stay closed and not respond to gestures. + * - locked-open, meaning that the drawer will stay opened and not respond to gestures. + * The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`). + */ + drawerLockMode?: WithDefault< + 'unlocked' | 'locked-closed' | 'locked-open', + 'unlocked', + >, + + /** + * Function called whenever there is an interaction with the navigation view. + */ + onDrawerSlide?: ?DirectEventHandler, + + /** + * Function called when the drawer state has changed. The drawer can be in 3 states: + * - Idle, meaning there is no interaction with the navigation view happening at the time + * - Dragging, meaning there is currently an interaction with the navigation view + * - Settling, meaning that there was an interaction with the navigation view, and the + * navigation view is now finishing its closing or opening animation + */ + onDrawerStateChanged?: ?DirectEventHandler, + + /** + * Function called whenever the navigation view has been opened. + */ + onDrawerOpen?: ?DirectEventHandler, + + /** + * Function called whenever the navigation view has been closed. + */ + onDrawerClose?: ?DirectEventHandler, + + /** + * Make the drawer take the entire screen and draw the background of the + * status bar to allow it to open over the status bar. It will only have an + * effect on API 21+. + */ + statusBarBackgroundColor?: ?ColorValue, +|}>; + +type NativeType = HostComponent; + +interface NativeCommands { + +openDrawer: (viewRef: React.ElementRef) => void; + +closeDrawer: (viewRef: React.ElementRef) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['openDrawer', 'closeDrawer'], +}); + +export default (codegenNativeComponent( + 'AndroidDrawerLayout', +): NativeType); diff --git a/packages/react-native/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js b/packages/react-native/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js new file mode 100644 index 00000000000..98bf5c55ee4 --- /dev/null +++ b/packages/react-native/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + removeClippedSubviews?: ?boolean, +|}>; + +type NativeType = HostComponent; + +export default (codegenNativeComponent( + 'AndroidHorizontalScrollContentView', +): NativeType); diff --git a/packages/react-native/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js b/packages/react-native/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js new file mode 100644 index 00000000000..3d8a8e52fb8 --- /dev/null +++ b/packages/react-native/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js @@ -0,0 +1,74 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + DirectEventHandler, + Float, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + /** + * Whether the pull to refresh functionality is enabled. + */ + enabled?: WithDefault, + /** + * The colors (at least one) that will be used to draw the refresh indicator. + */ + colors?: ?$ReadOnlyArray, + /** + * The background color of the refresh indicator. + */ + progressBackgroundColor?: ?ColorValue, + /** + * Size of the refresh indicator. + */ + size?: WithDefault<'default' | 'large', 'default'>, + /** + * Progress view top offset + */ + progressViewOffset?: WithDefault, + + /** + * Called when the view starts refreshing. + */ + onRefresh?: ?DirectEventHandler, + + /** + * Whether the view should be indicating an active refresh. + */ + refreshing: boolean, +|}>; + +type NativeType = HostComponent; + +interface NativeCommands { + +setNativeRefreshing: ( + viewRef: React.ElementRef, + value: boolean, + ) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['setNativeRefreshing'], +}); + +export default (codegenNativeComponent( + 'AndroidSwipeRefreshLayout', +): NativeType); diff --git a/packages/react-native/src/private/specs/components/AndroidSwitchNativeComponent.js b/packages/react-native/src/private/specs/components/AndroidSwitchNativeComponent.js new file mode 100644 index 00000000000..788d8cac641 --- /dev/null +++ b/packages/react-native/src/private/specs/components/AndroidSwitchNativeComponent.js @@ -0,0 +1,62 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + BubblingEventHandler, + Int32, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type SwitchChangeEvent = $ReadOnly<{| + value: boolean, + target: Int32, +|}>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + // Props + disabled?: WithDefault, + enabled?: WithDefault, + thumbColor?: ?ColorValue, + trackColorForFalse?: ?ColorValue, + trackColorForTrue?: ?ColorValue, + value?: WithDefault, + on?: WithDefault, + thumbTintColor?: ?ColorValue, + trackTintColor?: ?ColorValue, + + // Events + onChange?: BubblingEventHandler, +|}>; + +type NativeType = HostComponent; + +interface NativeCommands { + +setNativeValue: ( + viewRef: React.ElementRef, + value: boolean, + ) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['setNativeValue'], +}); + +export default (codegenNativeComponent('AndroidSwitch', { + interfaceOnly: true, +}): NativeType); diff --git a/packages/react-native/src/private/specs/components/DebuggingOverlayNativeComponent.js b/packages/react-native/src/private/specs/components/DebuggingOverlayNativeComponent.js new file mode 100644 index 00000000000..1d2f230ce99 --- /dev/null +++ b/packages/react-native/src/private/specs/components/DebuggingOverlayNativeComponent.js @@ -0,0 +1,61 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ProcessedColorValue} from '../../../../Libraries/StyleSheet/processColor'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, +|}>; +export type DebuggingOverlayNativeComponentType = HostComponent; + +export type TraceUpdate = { + id: number, + rectangle: ElementRectangle, + color: ?ProcessedColorValue, +}; + +export type ElementRectangle = { + x: number, + y: number, + width: number, + height: number, +}; + +interface NativeCommands { + +highlightTraceUpdates: ( + viewRef: React.ElementRef, + updates: $ReadOnlyArray, + ) => void; + +highlightElements: ( + viewRef: React.ElementRef, + elements: $ReadOnlyArray, + ) => void; + +clearElementsHighlights: ( + viewRef: React.ElementRef, + ) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: [ + 'highlightTraceUpdates', + 'highlightElements', + 'clearElementsHighlights', + ], +}); + +export default (codegenNativeComponent( + 'DebuggingOverlay', +): HostComponent); diff --git a/packages/react-native/src/private/specs/components/ProgressBarAndroidNativeComponent.js b/packages/react-native/src/private/specs/components/ProgressBarAndroidNativeComponent.js new file mode 100644 index 00000000000..c2878ec5019 --- /dev/null +++ b/packages/react-native/src/private/specs/components/ProgressBarAndroidNativeComponent.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + Double, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + //Props + styleAttr?: string, + typeAttr?: string, + indeterminate: boolean, + progress?: WithDefault, + animating?: WithDefault, + color?: ?ColorValue, + testID?: WithDefault, +|}>; + +export default (codegenNativeComponent('AndroidProgressBar', { + interfaceOnly: true, +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/PullToRefreshViewNativeComponent.js b/packages/react-native/src/private/specs/components/PullToRefreshViewNativeComponent.js new file mode 100644 index 00000000000..0e139d5096c --- /dev/null +++ b/packages/react-native/src/private/specs/components/PullToRefreshViewNativeComponent.js @@ -0,0 +1,71 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + DirectEventHandler, + Float, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + /** + * The color of the refresh indicator. + */ + tintColor?: ?ColorValue, + /** + * Title color. + */ + titleColor?: ?ColorValue, + /** + * The title displayed under the refresh indicator. + */ + title?: WithDefault, + /** + * Progress view top offset + */ + progressViewOffset?: WithDefault, + + /** + * Called when the view starts refreshing. + */ + onRefresh?: ?DirectEventHandler, + + /** + * Whether the view should be indicating an active refresh. + */ + refreshing: boolean, +|}>; + +type ComponentType = HostComponent; + +interface NativeCommands { + +setNativeRefreshing: ( + viewRef: React.ElementRef, + refreshing: boolean, + ) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['setNativeRefreshing'], +}); + +export default (codegenNativeComponent('PullToRefreshView', { + paperComponentName: 'RCTRefreshControl', + excludedPlatforms: ['android'], +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js b/packages/react-native/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js new file mode 100644 index 00000000000..ac19932c3e9 --- /dev/null +++ b/packages/react-native/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + backgroundColor?: ?ColorValue, +|}>; + +export default (codegenNativeComponent('InputAccessory', { + interfaceOnly: true, + paperComponentName: 'RCTInputAccessoryView', + excludedPlatforms: ['android'], +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/RCTModalHostViewNativeComponent.js b/packages/react-native/src/private/specs/components/RCTModalHostViewNativeComponent.js new file mode 100644 index 00000000000..86bf895d767 --- /dev/null +++ b/packages/react-native/src/private/specs/components/RCTModalHostViewNativeComponent.js @@ -0,0 +1,139 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type { + DirectEventHandler, + Int32, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type OrientationChangeEvent = $ReadOnly<{| + orientation: 'portrait' | 'landscape', +|}>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + /** + * The `animationType` prop controls how the modal animates. + * + * See https://reactnative.dev/docs/modal#animationtype + */ + animationType?: WithDefault<'none' | 'slide' | 'fade', 'none'>, + + /** + * The `presentationStyle` prop controls how the modal appears. + * + * See https://reactnative.dev/docs/modal#presentationstyle + */ + presentationStyle?: WithDefault< + 'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen', + 'fullScreen', + >, + + /** + * The `transparent` prop determines whether your modal will fill the + * entire view. + * + * See https://reactnative.dev/docs/modal#transparent + */ + transparent?: WithDefault, + + /** + * The `statusBarTranslucent` prop determines whether your modal should go under + * the system statusbar. + * + * See https://reactnative.dev/docs/modal#statusBarTranslucent + */ + statusBarTranslucent?: WithDefault, + + /** + * The `hardwareAccelerated` prop controls whether to force hardware + * acceleration for the underlying window. + * + * See https://reactnative.dev/docs/modal#hardwareaccelerated + */ + hardwareAccelerated?: WithDefault, + + /** + * The `onRequestClose` callback is called when the user taps the hardware + * back button on Android or the menu button on Apple TV. + * + * This is required on Apple TV and Android. + * + * See https://reactnative.dev/docs/modal#onrequestclose + */ + onRequestClose?: ?DirectEventHandler, + + /** + * The `onShow` prop allows passing a function that will be called once the + * modal has been shown. + * + * See https://reactnative.dev/docs/modal#onshow + */ + onShow?: ?DirectEventHandler, + + /** + * The `onDismiss` prop allows passing a function that will be called once + * the modal has been dismissed. + * + * See https://reactnative.dev/docs/modal#ondismiss + */ + onDismiss?: ?DirectEventHandler, + + /** + * The `visible` prop determines whether your modal is visible. + * + * See https://reactnative.dev/docs/modal#visible + */ + visible?: WithDefault, + + /** + * Deprecated. Use the `animationType` prop instead. + */ + animated?: WithDefault, + + /** + * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations. + * + * See https://reactnative.dev/docs/modal#supportedorientations + */ + supportedOrientations?: WithDefault< + $ReadOnlyArray< + | 'portrait' + | 'portrait-upside-down' + | 'landscape' + | 'landscape-left' + | 'landscape-right', + >, + 'portrait', + >, + + /** + * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed. + * + * See https://reactnative.dev/docs/modal#onorientationchange + */ + onOrientationChange?: ?DirectEventHandler, + + /** + * The `identifier` is the unique number for identifying Modal components. + */ + identifier?: WithDefault, +|}>; + +export default (codegenNativeComponent('ModalHostView', { + interfaceOnly: true, + paperComponentName: 'RCTModalHostView', +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/RCTSafeAreaViewNativeComponent.js b/packages/react-native/src/private/specs/components/RCTSafeAreaViewNativeComponent.js new file mode 100644 index 00000000000..e626f78123f --- /dev/null +++ b/packages/react-native/src/private/specs/components/RCTSafeAreaViewNativeComponent.js @@ -0,0 +1,25 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + // No props +|}>; + +export default (codegenNativeComponent('SafeAreaView', { + paperComponentName: 'RCTSafeAreaView', + interfaceOnly: true, +}): HostComponent); diff --git a/packages/react-native/src/private/specs/components/SwitchNativeComponent.js b/packages/react-native/src/private/specs/components/SwitchNativeComponent.js new file mode 100644 index 00000000000..f2f514da0a8 --- /dev/null +++ b/packages/react-native/src/private/specs/components/SwitchNativeComponent.js @@ -0,0 +1,61 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet'; +import type { + BubblingEventHandler, + Int32, + WithDefault, +} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands'; +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; +import * as React from 'react'; + +type SwitchChangeEvent = $ReadOnly<{| + value: boolean, + target: Int32, +|}>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + // Props + disabled?: WithDefault, + value?: WithDefault, + tintColor?: ?ColorValue, + onTintColor?: ?ColorValue, + thumbTintColor?: ?ColorValue, + + // Deprecated props + thumbColor?: ?ColorValue, + trackColorForFalse?: ?ColorValue, + trackColorForTrue?: ?ColorValue, + + // Events + onChange?: ?BubblingEventHandler, +|}>; + +type ComponentType = HostComponent; + +interface NativeCommands { + +setValue: (viewRef: React.ElementRef, value: boolean) => void; +} + +export const Commands: NativeCommands = codegenNativeCommands({ + supportedCommands: ['setValue'], +}); + +export default (codegenNativeComponent('Switch', { + paperComponentName: 'RCTSwitch', + excludedPlatforms: ['android'], +}): ComponentType); diff --git a/packages/react-native/src/private/specs/components/UnimplementedNativeViewNativeComponent.js b/packages/react-native/src/private/specs/components/UnimplementedNativeViewNativeComponent.js new file mode 100644 index 00000000000..308f0adaf90 --- /dev/null +++ b/packages/react-native/src/private/specs/components/UnimplementedNativeViewNativeComponent.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict-local + */ + +import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes'; +import type {HostComponent} from '../../../../Libraries/Renderer/shims/ReactNativeTypes'; +import type {WithDefault} from '../../../../Libraries/Types/CodegenTypes'; + +import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + name?: WithDefault, +|}>; + +// NOTE: This component is not implemented in paper +// Do not require this file in paper builds +export default (codegenNativeComponent( + 'UnimplementedNativeView', +): HostComponent); diff --git a/packages/react-native/src/private/specs/modules/NativeAccessibilityInfo.js b/packages/react-native/src/private/specs/modules/NativeAccessibilityInfo.js new file mode 100644 index 00000000000..0524dfa3682 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAccessibilityInfo.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +isReduceMotionEnabled: ( + onSuccess: (isReduceMotionEnabled: boolean) => void, + ) => void; + +isTouchExplorationEnabled: ( + onSuccess: (isScreenReaderEnabled: boolean) => void, + ) => void; + +isAccessibilityServiceEnabled?: ?( + onSuccess: (isAccessibilityServiceEnabled: boolean) => void, + ) => void; + +setAccessibilityFocus: (reactTag: number) => void; + +announceForAccessibility: (announcement: string) => void; + +getRecommendedTimeoutMillis?: ( + mSec: number, + onSuccess: (recommendedTimeoutMillis: number) => void, + ) => void; +} + +export default (TurboModuleRegistry.get('AccessibilityInfo'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeAccessibilityManager.js b/packages/react-native/src/private/specs/modules/NativeAccessibilityManager.js new file mode 100644 index 00000000000..20db1734da5 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAccessibilityManager.js @@ -0,0 +1,66 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getCurrentBoldTextState: ( + onSuccess: (isBoldTextEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentGrayscaleState: ( + onSuccess: (isGrayscaleEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentInvertColorsState: ( + onSuccess: (isInvertColorsEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentReduceMotionState: ( + onSuccess: (isReduceMotionEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentPrefersCrossFadeTransitionsState?: ( + onSuccess: (prefersCrossFadeTransitions: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentReduceTransparencyState: ( + onSuccess: (isReduceTransparencyEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +getCurrentVoiceOverState: ( + onSuccess: (isScreenReaderEnabled: boolean) => void, + onError: (error: Object) => void, + ) => void; + +setAccessibilityContentSizeMultipliers: (JSMultipliers: {| + +extraSmall?: ?number, + +small?: ?number, + +medium?: ?number, + +large?: ?number, + +extraLarge?: ?number, + +extraExtraLarge?: ?number, + +extraExtraExtraLarge?: ?number, + +accessibilityMedium?: ?number, + +accessibilityLarge?: ?number, + +accessibilityExtraLarge?: ?number, + +accessibilityExtraExtraLarge?: ?number, + +accessibilityExtraExtraExtraLarge?: ?number, + |}) => void; + +setAccessibilityFocus: (reactTag: number) => void; + +announceForAccessibility: (announcement: string) => void; + +announceForAccessibilityWithOptions?: ( + announcement: string, + options: {queue?: boolean}, + ) => void; +} + +export default (TurboModuleRegistry.get('AccessibilityManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeActionSheetManager.js b/packages/react-native/src/private/specs/modules/NativeActionSheetManager.js new file mode 100644 index 00000000000..37407bd01cf --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeActionSheetManager.js @@ -0,0 +1,54 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +showActionSheetWithOptions: ( + options: {| + +title?: ?string, + +message?: ?string, + +options: ?Array, + +destructiveButtonIndices?: ?Array, + +cancelButtonIndex?: ?number, + +anchor?: ?number, + +tintColor?: ?number, + +cancelButtonTintColor?: ?number, + +userInterfaceStyle?: ?string, + +disabledButtonIndices?: Array, + |}, + callback: (buttonIndex: number) => void, + ) => void; + +showShareActionSheetWithOptions: ( + options: {| + +message?: ?string, + +url?: ?string, + +subject?: ?string, + +anchor?: ?number, + +tintColor?: ?number, + +cancelButtonTintColor?: ?number, + +excludedActivityTypes?: ?Array, + +userInterfaceStyle?: ?string, + |}, + failureCallback: (error: {| + +domain: string, + +code: string, + +userInfo?: ?Object, + +message: string, + |}) => void, + successCallback: (completed: boolean, activityType: ?string) => void, + ) => void; + +dismissActionSheet?: () => void; +} + +export default (TurboModuleRegistry.get('ActionSheetManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeAlertManager.js b/packages/react-native/src/private/specs/modules/NativeAlertManager.js new file mode 100644 index 00000000000..f17ec771418 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAlertManager.js @@ -0,0 +1,35 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type Args = {| + title?: string, + message?: string, + buttons?: Array, // TODO(T67565166): have a better type + type?: string, + defaultValue?: string, + cancelButtonKey?: string, + destructiveButtonKey?: string, + preferredButtonKey?: string, + keyboardType?: string, + userInterfaceStyle?: string, +|}; + +export interface Spec extends TurboModule { + +alertWithArgs: ( + args: Args, + callback: (id: number, value: string) => void, + ) => void; +} + +export default (TurboModuleRegistry.get('AlertManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeAnimatedModule.js b/packages/react-native/src/private/specs/modules/NativeAnimatedModule.js new file mode 100644 index 00000000000..2c67bfccd73 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAnimatedModule.js @@ -0,0 +1,77 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import shouldUseTurboAnimatedModule from '../../../../Libraries/Animated/shouldUseTurboAnimatedModule'; +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +type EndResult = {finished: boolean, value?: number, ...}; +type EndCallback = (result: EndResult) => void; +type SaveValueCallback = (value: number) => void; + +export type EventMapping = {| + nativeEventPath: Array, + animatedValueTag: ?number, +|}; + +// The config has different keys depending on the type of the Node +// TODO(T54896888): Make these types strict +export type AnimatedNodeConfig = Object; +export type AnimatingNodeConfig = Object; + +export interface Spec extends TurboModule { + +startOperationBatch: () => void; + +finishOperationBatch: () => void; + +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; + +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; + +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; + +startListeningToAnimatedNodeValue: (tag: number) => void; + +stopListeningToAnimatedNodeValue: (tag: number) => void; + +connectAnimatedNodes: (parentTag: number, childTag: number) => void; + +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; + +startAnimatingNode: ( + animationId: number, + nodeTag: number, + config: AnimatingNodeConfig, + endCallback: EndCallback, + ) => void; + +stopAnimation: (animationId: number) => void; + +setAnimatedNodeValue: (nodeTag: number, value: number) => void; + +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; + +flattenAnimatedNodeOffset: (nodeTag: number) => void; + +extractAnimatedNodeOffset: (nodeTag: number) => void; + +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; + +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; + +restoreDefaultValues: (nodeTag: number) => void; + +dropAnimatedNode: (tag: number) => void; + +addAnimatedEventToView: ( + viewTag: number, + eventName: string, + eventMapping: EventMapping, + ) => void; + +removeAnimatedEventFromView: ( + viewTag: number, + eventName: string, + animatedNodeTag: number, + ) => void; + + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; + + // All of the above in a batched mode + +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; +} + +const NativeModule: ?Spec = !shouldUseTurboAnimatedModule() + ? TurboModuleRegistry.get('NativeAnimatedModule') + : null; +export default NativeModule; diff --git a/packages/react-native/src/private/specs/modules/NativeAnimatedTurboModule.js b/packages/react-native/src/private/specs/modules/NativeAnimatedTurboModule.js new file mode 100644 index 00000000000..7af2ef159d3 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAnimatedTurboModule.js @@ -0,0 +1,78 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import shouldUseTurboAnimatedModule from '../../../../Libraries/Animated/shouldUseTurboAnimatedModule'; +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +type EndResult = {finished: boolean, value?: number, ...}; +type EndCallback = (result: EndResult) => void; +type SaveValueCallback = (value: number) => void; + +export type EventMapping = {| + nativeEventPath: Array, + animatedValueTag: ?number, +|}; + +// The config has different keys depending on the type of the Node +// TODO(T54896888): Make these types strict +export type AnimatedNodeConfig = Object; +export type AnimatingNodeConfig = Object; + +export interface Spec extends TurboModule { + +startOperationBatch: () => void; + +finishOperationBatch: () => void; + +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void; + +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void; + +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void; + +startListeningToAnimatedNodeValue: (tag: number) => void; + +stopListeningToAnimatedNodeValue: (tag: number) => void; + +connectAnimatedNodes: (parentTag: number, childTag: number) => void; + +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void; + +startAnimatingNode: ( + animationId: number, + nodeTag: number, + config: AnimatingNodeConfig, + endCallback: EndCallback, + ) => void; + +stopAnimation: (animationId: number) => void; + +setAnimatedNodeValue: (nodeTag: number, value: number) => void; + +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void; + +flattenAnimatedNodeOffset: (nodeTag: number) => void; + +extractAnimatedNodeOffset: (nodeTag: number) => void; + +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void; + +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void; + +restoreDefaultValues: (nodeTag: number) => void; + +dropAnimatedNode: (tag: number) => void; + +addAnimatedEventToView: ( + viewTag: number, + eventName: string, + eventMapping: EventMapping, + ) => void; + +removeAnimatedEventFromView: ( + viewTag: number, + eventName: string, + animatedNodeTag: number, + ) => void; + + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; + + // All of the above in a batched mode + +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array) => void; +} + +const NativeModule: ?Spec = shouldUseTurboAnimatedModule() + ? TurboModuleRegistry.get('NativeAnimatedTurboModule') + : null; + +export default NativeModule; diff --git a/packages/react-native/src/private/specs/modules/NativeAnimationsDebugModule.js b/packages/react-native/src/private/specs/modules/NativeAnimationsDebugModule.js new file mode 100644 index 00000000000..0a13240d48c --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAnimationsDebugModule.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +startRecordingFps: () => void; + +stopRecordingFps: (animationStopTimeMs: number) => void; +} + +export default (TurboModuleRegistry.get('AnimationsDebugModule'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeAppState.js b/packages/react-native/src/private/specs/modules/NativeAppState.js new file mode 100644 index 00000000000..5627f7ea251 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAppState.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type AppStateConstants = {| + initialAppState: string, +|}; + +export type AppState = {|app_state: string|}; + +export interface Spec extends TurboModule { + +getConstants: () => AppStateConstants; + +getCurrentAppState: ( + success: (appState: AppState) => void, + error: (error: Object) => void, + ) => void; + + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.getEnforcing('AppState'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeAppearance.js b/packages/react-native/src/private/specs/modules/NativeAppearance.js new file mode 100644 index 00000000000..27dedcb476a --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeAppearance.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type ColorSchemeName = 'light' | 'dark'; + +export type AppearancePreferences = {| + // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union + // types. + /* 'light' | 'dark' */ + colorScheme?: ?string, +|}; + +export interface Spec extends TurboModule { + // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union + // types. + /* 'light' | 'dark' */ + +getColorScheme: () => ?string; + +setColorScheme?: (colorScheme: string) => void; + + // RCTEventEmitter + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.get('Appearance'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeBlobModule.js b/packages/react-native/src/private/specs/modules/NativeBlobModule.js new file mode 100644 index 00000000000..f04198990b2 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeBlobModule.js @@ -0,0 +1,59 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|}; + +addNetworkingHandler: () => void; + +addWebSocketHandler: (id: number) => void; + +removeWebSocketHandler: (id: number) => void; + +sendOverSocket: (blob: Object, socketID: number) => void; + +createFromParts: (parts: Array, withId: string) => void; + +release: (blobId: string) => void; +} + +const NativeModule = TurboModuleRegistry.get('BlobModule'); + +let constants = null; +let NativeBlobModule = null; + +if (NativeModule != null) { + NativeBlobModule = { + getConstants(): {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|} { + if (constants == null) { + constants = NativeModule.getConstants(); + } + return constants; + }, + addNetworkingHandler(): void { + NativeModule.addNetworkingHandler(); + }, + addWebSocketHandler(id: number): void { + NativeModule.addWebSocketHandler(id); + }, + removeWebSocketHandler(id: number): void { + NativeModule.removeWebSocketHandler(id); + }, + sendOverSocket(blob: Object, socketID: number): void { + NativeModule.sendOverSocket(blob, socketID); + }, + createFromParts(parts: Array, withId: string): void { + NativeModule.createFromParts(parts, withId); + }, + release(blobId: string): void { + NativeModule.release(blobId); + }, + }; +} + +export default (NativeBlobModule: ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeBugReporting.js b/packages/react-native/src/private/specs/modules/NativeBugReporting.js new file mode 100644 index 00000000000..7dc8ded4c14 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeBugReporting.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +startReportAProblemFlow: () => void; + +setExtraData: (extraData: Object, extraFiles: Object) => void; +} + +export default (TurboModuleRegistry.get('BugReporting'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeClipboard.js b/packages/react-native/src/private/specs/modules/NativeClipboard.js new file mode 100644 index 00000000000..98e16e3f7e1 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeClipboard.js @@ -0,0 +1,21 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +getString: () => Promise; + +setString: (content: string) => void; +} + +export default (TurboModuleRegistry.getEnforcing('Clipboard'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDevLoadingView.js b/packages/react-native/src/private/specs/modules/NativeDevLoadingView.js new file mode 100644 index 00000000000..08bd9589e7c --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDevLoadingView.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +showMessage: ( + message: string, + withColor: ?number, + withBackgroundColor: ?number, + ) => void; + +hide: () => void; +} + +export default (TurboModuleRegistry.get('DevLoadingView'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDevMenu.js b/packages/react-native/src/private/specs/modules/NativeDevMenu.js new file mode 100644 index 00000000000..0c71895cec3 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDevMenu.js @@ -0,0 +1,23 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +show: () => void; + +reload: () => void; + +debugRemotely: (enableDebug: boolean) => void; + +setProfilingEnabled: (enabled: boolean) => void; + +setHotLoadingEnabled: (enabled: boolean) => void; +} + +export default (TurboModuleRegistry.getEnforcing('DevMenu'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDevSettings.js b/packages/react-native/src/private/specs/modules/NativeDevSettings.js new file mode 100644 index 00000000000..26085ad6bc3 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDevSettings.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +reload: () => void; + +reloadWithReason?: (reason: string) => void; + +onFastRefresh?: () => void; + +setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void; + +setIsDebuggingRemotely: (isDebuggingRemotelyEnabled: boolean) => void; + +setProfilingEnabled: (isProfilingEnabled: boolean) => void; + +toggleElementInspector: () => void; + +addMenuItem: (title: string) => void; + + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; + + // iOS only. + +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void; +} + +export default (TurboModuleRegistry.getEnforcing('DevSettings'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDevToolsSettingsManager.js b/packages/react-native/src/private/specs/modules/NativeDevToolsSettingsManager.js new file mode 100644 index 00000000000..7a645018e71 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDevToolsSettingsManager.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +setConsolePatchSettings: (newConsolePatchSettings: string) => void; + +getConsolePatchSettings: () => ?string; + +setProfilingSettings?: (newProfilingSettings: string) => void; + +getProfilingSettings?: () => ?string; +} + +export default (TurboModuleRegistry.get( + 'DevToolsSettingsManager', +): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDeviceEventManager.js b/packages/react-native/src/private/specs/modules/NativeDeviceEventManager.js new file mode 100644 index 00000000000..8894d45215d --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDeviceEventManager.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +invokeDefaultBackPressHandler: () => void; +} + +export default (TurboModuleRegistry.get('DeviceEventManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeDeviceInfo.js b/packages/react-native/src/private/specs/modules/NativeDeviceInfo.js new file mode 100644 index 00000000000..44c18203a91 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDeviceInfo.js @@ -0,0 +1,58 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type DisplayMetricsAndroid = {| + width: number, + height: number, + scale: number, + fontScale: number, + densityDpi: number, +|}; + +export type DisplayMetrics = {| + width: number, + height: number, + scale: number, + fontScale: number, +|}; + +export type DimensionsPayload = {| + window?: DisplayMetrics, + screen?: DisplayMetrics, + windowPhysicalPixels?: DisplayMetricsAndroid, + screenPhysicalPixels?: DisplayMetricsAndroid, +|}; + +export type DeviceInfoConstants = {| + +Dimensions: DimensionsPayload, + +isIPhoneX_deprecated?: boolean, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => DeviceInfoConstants; +} + +const NativeModule: Spec = TurboModuleRegistry.getEnforcing('DeviceInfo'); +let constants: ?DeviceInfoConstants = null; + +const NativeDeviceInfo = { + getConstants(): DeviceInfoConstants { + if (constants == null) { + constants = NativeModule.getConstants(); + } + return constants; + }, +}; + +export default NativeDeviceInfo; diff --git a/packages/react-native/src/private/specs/modules/NativeDialogManagerAndroid.js b/packages/react-native/src/private/specs/modules/NativeDialogManagerAndroid.js new file mode 100644 index 00000000000..07e19b47c14 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeDialogManagerAndroid.js @@ -0,0 +1,48 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +/* 'buttonClicked' | 'dismissed' */ +type DialogAction = string; +/* + buttonPositive = -1, + buttonNegative = -2, + buttonNeutral = -3 +*/ +type DialogButtonKey = number; +export type DialogOptions = {| + title?: string, + message?: string, + buttonPositive?: string, + buttonNegative?: string, + buttonNeutral?: string, + items?: Array, + cancelable?: boolean, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => {| + +buttonClicked: DialogAction, + +dismissed: DialogAction, + +buttonPositive: DialogButtonKey, + +buttonNegative: DialogButtonKey, + +buttonNeutral: DialogButtonKey, + |}; + +showAlert: ( + config: DialogOptions, + onError: (error: string) => void, + onAction: (action: DialogAction, buttonKey?: DialogButtonKey) => void, + ) => void; +} + +export default (TurboModuleRegistry.get('DialogManagerAndroid'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeExceptionsManager.js b/packages/react-native/src/private/specs/modules/NativeExceptionsManager.js new file mode 100644 index 00000000000..1da0633dc17 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeExceptionsManager.js @@ -0,0 +1,103 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +const Platform = require('../../../../Libraries/Utilities/Platform'); + +export type StackFrame = {| + column: ?number, + file: ?string, + lineNumber: ?number, + methodName: string, + collapse?: boolean, +|}; +export type ExceptionData = { + message: string, + originalMessage: ?string, + name: ?string, + componentStack: ?string, + stack: Array, + id: number, + isFatal: boolean, + // flowlint-next-line unclear-type:off + extraData?: Object, + ... +}; +export interface Spec extends TurboModule { + // Deprecated: Use `reportException` + +reportFatalException: ( + message: string, + stack: Array, + exceptionId: number, + ) => void; + // Deprecated: Use `reportException` + +reportSoftException: ( + message: string, + stack: Array, + exceptionId: number, + ) => void; + +reportException?: (data: ExceptionData) => void; + +updateExceptionMessage: ( + message: string, + stack: Array, + exceptionId: number, + ) => void; + // TODO(T53311281): This is a noop on iOS now. Implement it. + +dismissRedbox?: () => void; +} + +const NativeModule = + TurboModuleRegistry.getEnforcing('ExceptionsManager'); + +const ExceptionsManager = { + reportFatalException( + message: string, + stack: Array, + exceptionId: number, + ) { + NativeModule.reportFatalException(message, stack, exceptionId); + }, + reportSoftException( + message: string, + stack: Array, + exceptionId: number, + ) { + NativeModule.reportSoftException(message, stack, exceptionId); + }, + updateExceptionMessage( + message: string, + stack: Array, + exceptionId: number, + ) { + NativeModule.updateExceptionMessage(message, stack, exceptionId); + }, + dismissRedbox(): void { + if (Platform.OS !== 'ios' && NativeModule.dismissRedbox) { + // TODO(T53311281): This is a noop on iOS now. Implement it. + NativeModule.dismissRedbox(); + } + }, + reportException(data: ExceptionData): void { + if (NativeModule.reportException) { + NativeModule.reportException(data); + return; + } + if (data.isFatal) { + ExceptionsManager.reportFatalException(data.message, data.stack, data.id); + } else { + ExceptionsManager.reportSoftException(data.message, data.stack, data.id); + } + }, +}; + +export default ExceptionsManager; diff --git a/packages/react-native/src/private/specs/modules/NativeFileReaderModule.js b/packages/react-native/src/private/specs/modules/NativeFileReaderModule.js new file mode 100644 index 00000000000..8b3b7617378 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeFileReaderModule.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +readAsDataURL: (data: Object) => Promise; + +readAsText: (data: Object, encoding: string) => Promise; +} + +export default (TurboModuleRegistry.getEnforcing( + 'FileReaderModule', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeFrameRateLogger.js b/packages/react-native/src/private/specs/modules/NativeFrameRateLogger.js new file mode 100644 index 00000000000..fad4ae18adc --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeFrameRateLogger.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +setGlobalOptions: (options: {|+debug?: ?boolean|}) => void; + +setContext: (context: string) => void; + +beginScroll: () => void; + +endScroll: () => void; +} + +export default (TurboModuleRegistry.get('FrameRateLogger'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeHeadlessJsTaskSupport.js b/packages/react-native/src/private/specs/modules/NativeHeadlessJsTaskSupport.js new file mode 100644 index 00000000000..3bdf3acf610 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeHeadlessJsTaskSupport.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +notifyTaskFinished: (taskId: number) => void; + +notifyTaskRetry: (taskId: number) => Promise; +} + +export default (TurboModuleRegistry.get('HeadlessJsTaskSupport'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeI18nManager.js b/packages/react-native/src/private/specs/modules/NativeI18nManager.js new file mode 100644 index 00000000000..5bc91c365fa --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeI18nManager.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type I18nManagerConstants = {| + doLeftAndRightSwapInRTL: boolean, + isRTL: boolean, + localeIdentifier?: ?string, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => I18nManagerConstants; + allowRTL: (allowRTL: boolean) => void; + forceRTL: (forceRTL: boolean) => void; + swapLeftAndRightInRTL: (flipStyles: boolean) => void; +} + +export default (TurboModuleRegistry.get('I18nManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeImageEditor.js b/packages/react-native/src/private/specs/modules/NativeImageEditor.js new file mode 100644 index 00000000000..4654b9118bb --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeImageEditor.js @@ -0,0 +1,52 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +type Options = {| + +offset: {| + +x: number, + +y: number, + |}, + +size: {| + +width: number, + +height: number, + |}, + +displaySize?: ?{| + +width: number, + +height: number, + |}, + /** + * Enum with potential values: + * - cover + * - contain + * - stretch + * - center + * - repeat + */ + +resizeMode?: ?string, + +allowExternalStorage?: boolean, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +cropImage: ( + uri: string, + cropData: Options, + successCallback: (uri: string) => void, + errorCallback: (error: string) => void, + ) => void; +} + +export default (TurboModuleRegistry.getEnforcing( + 'ImageEditingManager', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeImageLoaderAndroid.js b/packages/react-native/src/private/specs/modules/NativeImageLoaderAndroid.js new file mode 100644 index 00000000000..f8171272218 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeImageLoaderAndroid.js @@ -0,0 +1,30 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type ImageSize = { + width: number, + height: number, + ... +}; + +export interface Spec extends TurboModule { + +abortRequest: (requestId: number) => void; + +getConstants: () => {||}; + +getSize: (uri: string) => Promise; + +getSizeWithHeaders: (uri: string, headers: Object) => Promise; + +prefetchImage: (uri: string, requestId: number) => Promise; + +queryCache: (uris: Array) => Promise; +} + +export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeImageLoaderIOS.js b/packages/react-native/src/private/specs/modules/NativeImageLoaderIOS.js new file mode 100644 index 00000000000..b3d73201313 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeImageLoaderIOS.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {RootTag} from '../../../../Libraries/TurboModule/RCTExport'; +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + // Return [width, height] of image uri + +getSize: (uri: string) => Promise<$ReadOnlyArray>; + +getSizeWithHeaders: ( + uri: string, + headers: Object, + ) => Promise<{ + width: number, + height: number, + ... + }>; + +prefetchImage: (uri: string) => Promise; + +prefetchImageWithMetadata?: ( + uri: string, + queryRootName: string, + rootTag: RootTag, + ) => Promise; + +queryCache: (uris: Array) => Promise; +} + +export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeImageStoreAndroid.js b/packages/react-native/src/private/specs/modules/NativeImageStoreAndroid.js new file mode 100644 index 00000000000..4962c037dc3 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeImageStoreAndroid.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +getBase64ForTag: ( + uri: string, + successCallback: (base64ImageData: string) => void, + errorCallback: (error: string) => void, + ) => void; +} + +export default (TurboModuleRegistry.getEnforcing( + 'ImageStoreManager', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeImageStoreIOS.js b/packages/react-native/src/private/specs/modules/NativeImageStoreIOS.js new file mode 100644 index 00000000000..9e4e2a358e2 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeImageStoreIOS.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +getBase64ForTag: ( + uri: string, + successCallback: (base64ImageData: string) => void, + errorCallback: (error: {|message: string|}) => void, + ) => void; + +hasImageForTag: (uri: string, callback: (hasImage: boolean) => void) => void; + +removeImageForTag: (uri: string) => void; + +addImageFromBase64: ( + base64ImageData: string, + successCallback: (uri: string) => void, + errorCallback: (error: {|message: string|}) => void, + ) => void; +} + +export default (TurboModuleRegistry.getEnforcing( + 'ImageStoreManager', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeIntentAndroid.js b/packages/react-native/src/private/specs/modules/NativeIntentAndroid.js new file mode 100644 index 00000000000..46f2a9e7fe7 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeIntentAndroid.js @@ -0,0 +1,30 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getInitialURL: () => Promise; + +canOpenURL: (url: string) => Promise; + +openURL: (url: string) => Promise; + +openSettings: () => Promise; + +sendIntent: ( + action: string, + extras: ?Array<{ + key: string, + value: string | number | boolean, // TODO(T67672788): Union types are not type safe + ... + }>, + ) => Promise; +} + +export default (TurboModuleRegistry.get('IntentAndroid'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeIntersectionObserver.js b/packages/react-native/src/private/specs/modules/NativeIntersectionObserver.js new file mode 100644 index 00000000000..96c31376daf --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeIntersectionObserver.js @@ -0,0 +1,41 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type NativeIntersectionObserverEntry = { + intersectionObserverId: number, + targetInstanceHandle: mixed, + targetRect: $ReadOnlyArray, // It's actually a tuple with x, y, width and height + rootRect: $ReadOnlyArray, // It's actually a tuple with x, y, width and height + intersectionRect: ?$ReadOnlyArray, // It's actually a tuple with x, y, width and height + isIntersectingAboveThresholds: boolean, + time: number, +}; + +export type NativeIntersectionObserverObserveOptions = { + intersectionObserverId: number, + targetShadowNode: mixed, + thresholds: $ReadOnlyArray, +}; + +export interface Spec extends TurboModule { + +observe: (options: NativeIntersectionObserverObserveOptions) => void; + +unobserve: (intersectionObserverId: number, targetShadowNode: mixed) => void; + +connect: (notifyIntersectionObserversCallback: () => void) => void; + +disconnect: () => void; + +takeRecords: () => $ReadOnlyArray; +} + +export default (TurboModuleRegistry.get( + 'NativeIntersectionObserverCxx', +): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeJSCHeapCapture.js b/packages/react-native/src/private/specs/modules/NativeJSCHeapCapture.js new file mode 100644 index 00000000000..a9ae5ddcaa2 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeJSCHeapCapture.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +captureComplete: (path: string, error: ?string) => void; +} + +export default (TurboModuleRegistry.get('JSCHeapCapture'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeJSCSamplingProfiler.js b/packages/react-native/src/private/specs/modules/NativeJSCSamplingProfiler.js new file mode 100644 index 00000000000..473f0cc8e77 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeJSCSamplingProfiler.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +operationComplete: (token: number, result: ?string, error: ?string) => void; +} + +export default (TurboModuleRegistry.get('JSCSamplingProfiler'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeKeyboardObserver.js b/packages/react-native/src/private/specs/modules/NativeKeyboardObserver.js new file mode 100644 index 00000000000..9a9e456dae9 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeKeyboardObserver.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.get('KeyboardObserver'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeLinkingManager.js b/packages/react-native/src/private/specs/modules/NativeLinkingManager.js new file mode 100644 index 00000000000..2a8b73810aa --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeLinkingManager.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + // Common interface + +getInitialURL: () => Promise; + +canOpenURL: (url: string) => Promise; + +openURL: (url: string) => Promise; + +openSettings: () => Promise; + + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.get('LinkingManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeLogBox.js b/packages/react-native/src/private/specs/modules/NativeLogBox.js new file mode 100644 index 00000000000..bf4267426bf --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeLogBox.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +show: () => void; + +hide: () => void; +} + +export default (TurboModuleRegistry.get('LogBox'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeModalManager.js b/packages/react-native/src/private/specs/modules/NativeModalManager.js new file mode 100644 index 00000000000..10350123175 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeModalManager.js @@ -0,0 +1,21 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + // RCTEventEmitter + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.get('ModalManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeMutationObserver.js b/packages/react-native/src/private/specs/modules/NativeMutationObserver.js new file mode 100644 index 00000000000..714db50a3ba --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeMutationObserver.js @@ -0,0 +1,58 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type MutationObserverId = number; + +// These types are not supported by the codegen. +type ShadowNode = mixed; +type InstanceHandle = mixed; +type ReactNativeElement = mixed; +type ReadOnlyNode = mixed; + +export type NativeMutationRecord = { + mutationObserverId: MutationObserverId, + target: ReactNativeElement, + addedNodes: $ReadOnlyArray, + removedNodes: $ReadOnlyArray, + ... +}; + +export type NativeMutationObserverObserveOptions = { + mutationObserverId: number, + targetShadowNode: ShadowNode, + subtree: boolean, +}; + +export interface Spec extends TurboModule { + +observe: (options: NativeMutationObserverObserveOptions) => void; + +unobserve: ( + mutationObserverId: number, + targetShadowNode: ShadowNode, + ) => void; + +connect: ( + notifyMutationObservers: () => void, + // We need this to retain the public instance before React removes the + // reference to it (which happen in mutations that remove nodes, or when + // nodes are removed between the change and the callback is executed in JS). + getPublicInstanceFromInstanceHandle: ( + instanceHandle: InstanceHandle, + ) => ReadOnlyNode, + ) => void; + +disconnect: () => void; + +takeRecords: () => $ReadOnlyArray; +} + +export default (TurboModuleRegistry.get( + 'NativeMutationObserverCxx', +): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeNetworkingAndroid.js b/packages/react-native/src/private/specs/modules/NativeNetworkingAndroid.js new file mode 100644 index 00000000000..164db3723ec --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeNetworkingAndroid.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +type Header = [string, string]; + +export interface Spec extends TurboModule { + +sendRequest: ( + method: string, + url: string, + requestId: number, + headers: Array
, + data: Object, + responseType: string, + useIncrementalUpdates: boolean, + timeout: number, + withCredentials: boolean, + ) => void; + +abortRequest: (requestId: number) => void; + +clearCookies: (callback: (result: boolean) => void) => void; + + // RCTEventEmitter + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.getEnforcing('Networking'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeNetworkingIOS.js b/packages/react-native/src/private/specs/modules/NativeNetworkingIOS.js new file mode 100644 index 00000000000..1cb2e3e002d --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeNetworkingIOS.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +sendRequest: ( + query: {| + method: string, + url: string, + data: Object, + headers: Object, + responseType: string, + incrementalUpdates: boolean, + timeout: number, + withCredentials: boolean, + |}, + callback: (requestId: number) => void, + ) => void; + +abortRequest: (requestId: number) => void; + +clearCookies: (callback: (result: boolean) => void) => void; + + // RCTEventEmitter + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.getEnforcing('Networking'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePerformance.js b/packages/react-native/src/private/specs/modules/NativePerformance.js new file mode 100644 index 00000000000..ac8d410af92 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePerformance.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type NativeMemoryInfo = {[key: string]: ?number}; + +export type ReactNativeStartupTiming = {[key: string]: ?number}; + +export interface Spec extends TurboModule { + +mark: (name: string, startTime: number) => void; + +measure: ( + name: string, + startTime: number, + endTime: number, + duration?: number, + startMark?: string, + endMark?: string, + ) => void; + +getSimpleMemoryInfo: () => NativeMemoryInfo; + +getReactNativeStartupTiming: () => ReactNativeStartupTiming; +} + +export default (TurboModuleRegistry.get('NativePerformanceCxx'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePerformanceObserver.js b/packages/react-native/src/private/specs/modules/NativePerformanceObserver.js new file mode 100644 index 00000000000..3881872fcca --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePerformanceObserver.js @@ -0,0 +1,61 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type RawPerformanceEntryType = number; + +export type RawPerformanceEntry = {| + name: string, + entryType: RawPerformanceEntryType, + startTime: number, + duration: number, + // For "event" entries only: + processingStart?: number, + processingEnd?: number, + interactionId?: number, +|}; + +export type GetPendingEntriesResult = {| + entries: $ReadOnlyArray, + droppedEntriesCount: number, +|}; + +export interface Spec extends TurboModule { + +startReporting: (entryType: RawPerformanceEntryType) => void; + +stopReporting: (entryType: RawPerformanceEntryType) => void; + +setIsBuffered: ( + entryTypes: $ReadOnlyArray, + isBuffered: boolean, + ) => void; + +popPendingEntries: () => GetPendingEntriesResult; + +setOnPerformanceEntryCallback: (callback?: () => void) => void; + +logRawEntry: (entry: RawPerformanceEntry) => void; + +getEventCounts: () => $ReadOnlyArray<[string, number]>; + +setDurationThreshold: ( + entryType: RawPerformanceEntryType, + durationThreshold: number, + ) => void; + +clearEntries: ( + entryType: RawPerformanceEntryType, + entryName?: string, + ) => void; + +getEntries: ( + entryType?: RawPerformanceEntryType, + entryName?: string, + ) => $ReadOnlyArray; + +getSupportedPerformanceEntryTypes: () => $ReadOnlyArray; +} + +export default (TurboModuleRegistry.get( + 'NativePerformanceObserverCxx', +): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePermissionsAndroid.js b/packages/react-native/src/private/specs/modules/NativePermissionsAndroid.js new file mode 100644 index 00000000000..07f0fee8fbd --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePermissionsAndroid.js @@ -0,0 +1,77 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +// TODO: Use proper enum types. +export type PermissionStatus = string; +export type PermissionType = string; +/* +export type PermissionStatus = 'granted' | 'denied' | 'never_ask_again'; +export type PermissionType = + | 'android.permission.READ_CALENDAR' + | 'android.permission.WRITE_CALENDAR' + | 'android.permission.CAMERA' + | 'android.permission.READ_CONTACTS' + | 'android.permission.WRITE_CONTACTS' + | 'android.permission.GET_ACCOUNTS' + | 'android.permission.ACCESS_BACKGROUND_LOCATION' + | 'android.permission.ACCESS_FINE_LOCATION' + | 'android.permission.ACCESS_COARSE_LOCATION' + | 'android.permission.RECORD_AUDIO' + | 'android.permission.READ_PHONE_STATE' + | 'android.permission.CALL_PHONE' + | 'android.permission.READ_CALL_LOG' + | 'android.permission.WRITE_CALL_LOG' + | 'com.android.voicemail.permission.ADD_VOICEMAIL' + | 'com.android.voicemail.permission.READ_VOICEMAIL' + | 'com.android.voicemail.permission.WRITE_VOICEMAIL' + | 'android.permission.USE_SIP' + | 'android.permission.PROCESS_OUTGOING_CALLS' + | 'android.permission.BODY_SENSORS' + | 'android.permission.BODY_SENSORS_BACKGROUND' + | 'android.permission.SEND_SMS' + | 'android.permission.RECEIVE_SMS' + | 'android.permission.READ_SMS' + | 'android.permission.RECEIVE_WAP_PUSH' + | 'android.permission.RECEIVE_MMS' + | 'android.permission.READ_EXTERNAL_STORAGE' + | 'android.permission.READ_MEDIA_IMAGES', + | 'android.permission.READ_MEDIA_VIDEO', + | 'android.permission.READ_MEDIA_AUDIO', + | 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED' + | 'android.permission.WRITE_EXTERNAL_STORAGE' + | 'android.permission.BLUETOOTH_CONNECT' + | 'android.permission.BLUETOOTH_SCAN' + | 'android.permission.BLUETOOTH_ADVERTISE' + | 'android.permission.ACCESS_MEDIA_LOCATION' + | 'android.permission.ACCEPT_HANDOVER' + | 'android.permission.ACTIVITY_RECOGNITION' + | 'android.permission.ANSWER_PHONE_CALLS' + | 'android.permission.READ_PHONE_NUMBERS' + | 'android.permission.UWB_RANGING' + | 'android.permission.POST_NOTIFICATIONS' + | 'android.permission.NEARBY_WIFI_DEVICES'; +*/ + +export interface Spec extends TurboModule { + +checkPermission: (permission: PermissionType) => Promise; + +requestPermission: (permission: PermissionType) => Promise; + +shouldShowRequestPermissionRationale: ( + permission: string, + ) => Promise; + +requestMultiplePermissions: ( + permissions: Array, + ) => Promise<{[permission: PermissionType]: PermissionStatus, ...}>; +} + +export default (TurboModuleRegistry.get('PermissionsAndroid'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePlatformConstantsAndroid.js b/packages/react-native/src/private/specs/modules/NativePlatformConstantsAndroid.js new file mode 100644 index 00000000000..eb9e86100f4 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePlatformConstantsAndroid.js @@ -0,0 +1,44 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type ReactNativeVersionAndroid = {| + major: number, + minor: number, + patch: number, + prerelease: ?number, +|}; + +export type PlatformConstantsAndroid = {| + isTesting: boolean, + isDisableAnimations?: boolean, + reactNativeVersion: ReactNativeVersionAndroid, + Version: number, + Release: string, + Serial: string, + Fingerprint: string, + Model: string, + ServerHost?: string, + uiMode: string, + Brand: string, + Manufacturer: string, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => PlatformConstantsAndroid; + +getAndroidID: () => string; +} + +export default (TurboModuleRegistry.getEnforcing( + 'PlatformConstants', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePlatformConstantsIOS.js b/packages/react-native/src/private/specs/modules/NativePlatformConstantsIOS.js new file mode 100644 index 00000000000..b65cfc96b33 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePlatformConstantsIOS.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type PlatformConstantsIOS = {| + isTesting: boolean, + isDisableAnimations?: boolean, + reactNativeVersion: {| + major: number, + minor: number, + patch: number, + prerelease: ?number, + |}, + forceTouchAvailable: boolean, + osVersion: string, + systemName: string, + interfaceIdiom: string, + isMacCatalyst?: boolean, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => PlatformConstantsIOS; +} + +export default (TurboModuleRegistry.getEnforcing( + 'PlatformConstants', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativePushNotificationManagerIOS.js b/packages/react-native/src/private/specs/modules/NativePushNotificationManagerIOS.js new file mode 100644 index 00000000000..7ab8602add5 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativePushNotificationManagerIOS.js @@ -0,0 +1,107 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +type Permissions = {| + alert: boolean, + badge: boolean, + sound: boolean, +|}; + +type Notification = {| + +alertTitle?: ?string, + +alertBody?: ?string, + +userInfo?: ?Object, + /** + * Identifier for the notification category. See the [Apple documentation](https://developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types) + * for more details. + */ + +category?: ?string, + /** + * Actual type: string | number + * + * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`. + * If both are specified, `fireDate` takes precedence. + * If you use `presentLocalNotification`, both will be ignored + * and the notification will be shown immediately. + */ + +fireDate?: ?number, + /** + * Seconds from now to display the notification. + * + * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`. + * If both are specified, `fireDate` takes precedence. + * If you use `presentLocalNotification`, both will be ignored + * and the notification will be shown immediately. + */ + +fireIntervalSeconds?: ?number, + /** Badge count to display on the app icon. */ + +applicationIconBadgeNumber?: ?number, + /** Whether to silence the notification sound. */ + +isSilent?: ?boolean, + /** + * Custom notification sound to play. Write-only: soundName will be null when + * accessing already created notifications using getScheduledLocalNotifications + * or getDeliveredNotifications. + */ + +soundName?: ?string, + /** DEPRECATED. This was used for iOS's legacy UILocalNotification. */ + +alertAction?: ?string, + /** DEPRECATED. Use `fireDate` or `fireIntervalSeconds` instead. */ + +repeatInterval?: ?string, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +onFinishRemoteNotification: ( + notificationId: string, + /** + * Type: + * 'UIBackgroundFetchResultNewData' | + * 'UIBackgroundFetchResultNoData' | + * 'UIBackgroundFetchResultFailed' + */ + fetchResult: string, + ) => void; + +setApplicationIconBadgeNumber: (num: number) => void; + +getApplicationIconBadgeNumber: (callback: (num: number) => void) => void; + +requestPermissions: (permission: {| + +alert: boolean, + +badge: boolean, + +sound: boolean, + |}) => Promise; + +abandonPermissions: () => void; + +checkPermissions: (callback: (permissions: Permissions) => void) => void; + +presentLocalNotification: (notification: Notification) => void; + +scheduleLocalNotification: (notification: Notification) => void; + +cancelAllLocalNotifications: () => void; + +cancelLocalNotifications: (userInfo: Object) => void; + +getInitialNotification: () => Promise; + +getScheduledLocalNotifications: ( + callback: (notification: Notification) => void, + ) => void; + +removeAllDeliveredNotifications: () => void; + +removeDeliveredNotifications: (identifiers: Array) => void; + +getDeliveredNotifications: ( + callback: (notification: Array) => void, + ) => void; + +getAuthorizationStatus: ( + callback: (authorizationStatus: number) => void, + ) => void; + +addListener: (eventType: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.get( + 'PushNotificationManager', +): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeRedBox.js b/packages/react-native/src/private/specs/modules/NativeRedBox.js new file mode 100644 index 00000000000..03db14a00c8 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeRedBox.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +setExtraData: (extraData: Object, forIdentifier: string) => void; + +dismiss: () => void; +} + +export default (TurboModuleRegistry.get('RedBox'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeSampleTurboModule.js b/packages/react-native/src/private/specs/modules/NativeSampleTurboModule.js new file mode 100644 index 00000000000..4c1fab3c494 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeSampleTurboModule.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type { + RootTag, + TurboModule, +} from '../../../../Libraries/TurboModule/RCTExport'; +import type {UnsafeObject} from '../../../../Libraries/Types/CodegenTypes'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export enum EnumInt { + A = 23, + B = 42, +} + +export interface Spec extends TurboModule { + // Exported methods. + +getConstants: () => {| + const1: boolean, + const2: number, + const3: string, + |}; + +voidFunc: () => void; + +getBool: (arg: boolean) => boolean; + +getEnum?: (arg: EnumInt) => EnumInt; + +getNumber: (arg: number) => number; + +getString: (arg: string) => string; + +getArray: (arg: Array) => Array; + +getObject: (arg: Object) => Object; + +getUnsafeObject: (arg: UnsafeObject) => UnsafeObject; + +getRootTag: (arg: RootTag) => RootTag; + +getValue: (x: number, y: string, z: Object) => Object; + +getValueWithCallback: (callback: (value: string) => void) => void; + +getValueWithPromise: (error: boolean) => Promise; + +voidFuncThrows?: () => void; + +getObjectThrows?: (arg: Object) => Object; + +promiseThrows?: () => Promise; + +voidFuncAssert?: () => void; + +getObjectAssert?: (arg: Object) => Object; + +promiseAssert?: () => Promise; +} + +export default (TurboModuleRegistry.getEnforcing( + 'SampleTurboModule', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeSegmentFetcher.js b/packages/react-native/src/private/specs/modules/NativeSegmentFetcher.js new file mode 100644 index 00000000000..42d12fd358c --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeSegmentFetcher.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +fetchSegment: ( + segmentId: number, + options: Object, // flowlint-line unclear-type: off + callback: (error: ?Object) => void, // flowlint-line unclear-type: off + ) => void; + +getSegment?: ( + segmentId: number, + options: Object, // flowlint-line unclear-type: off + callback: (error: ?Object, path: ?string) => void, // flowlint-line unclear-type: off + ) => void; +} + +export default (TurboModuleRegistry.getEnforcing('SegmentFetcher'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeSettingsManager.js b/packages/react-native/src/private/specs/modules/NativeSettingsManager.js new file mode 100644 index 00000000000..9112f7fdeed --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeSettingsManager.js @@ -0,0 +1,25 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {| + settings: Object, + |}; + +setValues: (values: Object) => void; + +deleteValues: (values: Array) => void; +} + +export default (TurboModuleRegistry.getEnforcing( + 'SettingsManager', +): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeShareModule.js b/packages/react-native/src/private/specs/modules/NativeShareModule.js new file mode 100644 index 00000000000..c07fd4ed766 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeShareModule.js @@ -0,0 +1,23 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +share: ( + content: {|title?: string, message?: string|}, + dialogTitle?: string, + ) => Promise<{|action: string|}>; +} + +export default (TurboModuleRegistry.get('ShareModule'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeSoundManager.js b/packages/react-native/src/private/specs/modules/NativeSoundManager.js new file mode 100644 index 00000000000..9bff5d1bcce --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeSoundManager.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +/** + * Native Module used for playing sounds in native platform. + */ +export interface Spec extends TurboModule { + +playTouchSound: () => void; +} + +export default (TurboModuleRegistry.get('SoundManager'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeSourceCode.js b/packages/react-native/src/private/specs/modules/NativeSourceCode.js new file mode 100644 index 00000000000..d6b8564b962 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeSourceCode.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export type SourceCodeConstants = {| + scriptURL: string, +|}; + +export interface Spec extends TurboModule { + +getConstants: () => SourceCodeConstants; +} + +const NativeModule = TurboModuleRegistry.getEnforcing('SourceCode'); +let constants = null; + +const NativeSourceCode = { + getConstants(): SourceCodeConstants { + if (constants == null) { + constants = NativeModule.getConstants(); + } + + return constants; + }, +}; + +export default NativeSourceCode; diff --git a/packages/react-native/src/private/specs/modules/NativeStatusBarManagerAndroid.js b/packages/react-native/src/private/specs/modules/NativeStatusBarManagerAndroid.js new file mode 100644 index 00000000000..f65f9347492 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeStatusBarManagerAndroid.js @@ -0,0 +1,68 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {| + +HEIGHT: number, + +DEFAULT_BACKGROUND_COLOR: number, + |}; + +setColor: (color: number, animated: boolean) => void; + +setTranslucent: (translucent: boolean) => void; + + /** + * - statusBarStyles can be: + * - 'default' + * - 'dark-content' + */ + +setStyle: (statusBarStyle?: ?string) => void; + +setHidden: (hidden: boolean) => void; +} + +const NativeModule = TurboModuleRegistry.getEnforcing('StatusBarManager'); +let constants = null; + +const NativeStatusBarManager = { + getConstants(): {| + +HEIGHT: number, + +DEFAULT_BACKGROUND_COLOR?: number, + |} { + if (constants == null) { + constants = NativeModule.getConstants(); + } + return constants; + }, + + setColor(color: number, animated: boolean): void { + NativeModule.setColor(color, animated); + }, + + setTranslucent(translucent: boolean): void { + NativeModule.setTranslucent(translucent); + }, + + /** + * - statusBarStyles can be: + * - 'default' + * - 'dark-content' + */ + setStyle(statusBarStyle?: ?string): void { + NativeModule.setStyle(statusBarStyle); + }, + + setHidden(hidden: boolean): void { + NativeModule.setHidden(hidden); + }, +}; + +export default NativeStatusBarManager; diff --git a/packages/react-native/src/private/specs/modules/NativeStatusBarManagerIOS.js b/packages/react-native/src/private/specs/modules/NativeStatusBarManagerIOS.js new file mode 100644 index 00000000000..6749e5d076d --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeStatusBarManagerIOS.js @@ -0,0 +1,89 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {| + +HEIGHT: number, + +DEFAULT_BACKGROUND_COLOR?: number, + |}; + + // TODO(T47754272) Can we remove this method? + +getHeight: (callback: (result: {|height: number|}) => void) => void; + +setNetworkActivityIndicatorVisible: (visible: boolean) => void; + +addListener: (eventType: string) => void; + +removeListeners: (count: number) => void; + + /** + * - statusBarStyles can be: + * - 'default' + * - 'dark-content' + * - 'light-content' + */ + +setStyle: (statusBarStyle?: ?string, animated: boolean) => void; + /** + * - withAnimation can be: 'none' | 'fade' | 'slide' + */ + +setHidden: (hidden: boolean, withAnimation: string) => void; +} + +const NativeModule = TurboModuleRegistry.getEnforcing('StatusBarManager'); +let constants = null; + +const NativeStatusBarManager = { + getConstants(): {| + +HEIGHT: number, + +DEFAULT_BACKGROUND_COLOR?: number, + |} { + if (constants == null) { + constants = NativeModule.getConstants(); + } + return constants; + }, + + // TODO(T47754272) Can we remove this method? + getHeight(callback: (result: {|height: number|}) => void): void { + NativeModule.getHeight(callback); + }, + + setNetworkActivityIndicatorVisible(visible: boolean): void { + NativeModule.setNetworkActivityIndicatorVisible(visible); + }, + + addListener(eventType: string): void { + NativeModule.addListener(eventType); + }, + + removeListeners(count: number): void { + NativeModule.removeListeners(count); + }, + + /** + * - statusBarStyles can be: + * - 'default' + * - 'dark-content' + * - 'light-content' + */ + setStyle(statusBarStyle?: ?string, animated: boolean): void { + NativeModule.setStyle(statusBarStyle, animated); + }, + + /** + * - withAnimation can be: 'none' | 'fade' | 'slide' + */ + setHidden(hidden: boolean, withAnimation: string): void { + NativeModule.setHidden(hidden, withAnimation); + }, +}; + +export default NativeStatusBarManager; diff --git a/packages/react-native/src/private/specs/modules/NativeTiming.js b/packages/react-native/src/private/specs/modules/NativeTiming.js new file mode 100644 index 00000000000..9d6c5806d02 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeTiming.js @@ -0,0 +1,26 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +createTimer: ( + callbackID: number, + duration: number, + jsSchedulingTime: number, + repeats: boolean, + ) => void; + +deleteTimer: (timerID: number) => void; + +setSendIdleEvents: (sendIdleEvents: boolean) => void; +} + +export default (TurboModuleRegistry.get('Timing'): ?Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeToastAndroid.js b/packages/react-native/src/private/specs/modules/NativeToastAndroid.js new file mode 100644 index 00000000000..769985b8ccd --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeToastAndroid.js @@ -0,0 +1,38 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {| + SHORT: number, + LONG: number, + TOP: number, + BOTTOM: number, + CENTER: number, + |}; + +show: (message: string, duration: number) => void; + +showWithGravity: ( + message: string, + duration: number, + gravity: number, + ) => void; + +showWithGravityAndOffset: ( + message: string, + duration: number, + gravity: number, + xOffset: number, + yOffset: number, + ) => void; +} + +export default (TurboModuleRegistry.getEnforcing('ToastAndroid'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeUIManager.js b/packages/react-native/src/private/specs/modules/NativeUIManager.js new file mode 100644 index 00000000000..f0f5a7cf5fc --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeUIManager.js @@ -0,0 +1,118 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {RootTag} from '../../../../Libraries/TurboModule/RCTExport'; +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => Object; + +createView: ( + reactTag: ?number, + viewName: string, + rootTag: RootTag, + props: Object, + ) => void; + +updateView: (reactTag: number, viewName: string, props: Object) => void; + +findSubviewIn: ( + reactTag: ?number, + point: Array, + callback: ( + nativeViewTag: number, + left: number, + top: number, + width: number, + height: number, + ) => void, + ) => void; + +dispatchViewManagerCommand: ( + reactTag: ?number, + commandID: number, + commandArgs: ?Array, + ) => void; + +measure: ( + reactTag: number, + callback: ( + left: number, + top: number, + width: number, + height: number, + pageX: number, + pageY: number, + ) => void, + ) => void; + +measureInWindow: ( + reactTag: number, + callback: (x: number, y: number, width: number, height: number) => void, + ) => void; + +viewIsDescendantOf: ( + reactTag: ?number, + ancestorReactTag: ?number, + callback: (result: Array) => void, + ) => void; + +measureLayout: ( + reactTag: number, + ancestorReactTag: number, + errorCallback: (error: Object) => void, + callback: ( + left: number, + top: number, + width: number, + height: number, + ) => void, + ) => void; + +measureLayoutRelativeToParent: ( + reactTag: number, + errorCallback: (error: Object) => void, + callback: ( + left: number, + top: number, + width: number, + height: number, + ) => void, + ) => void; + +setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void; + +clearJSResponder: () => void; + +configureNextLayoutAnimation: ( + config: Object, + callback: () => void, // check what is returned here + errorCallback: (error: Object) => void, + ) => void; + +setChildren: (containerTag: ?number, reactTags: Array) => void; + +manageChildren: ( + containerTag: ?number, + moveFromIndices: Array, + moveToIndices: Array, + addChildReactTags: Array, + addAtIndices: Array, + removeAtIndices: Array, + ) => void; + + // Android only + +getConstantsForViewManager?: (viewManagerName: string) => Object; + +getDefaultEventTypes?: () => Array; + +setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void; + +sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void; + +showPopupMenu?: ( + reactTag: ?number, + items: Array, + error: (error: Object) => void, + success: (event: string, selected?: number) => void, + ) => void; + +dismissPopupMenu?: () => void; + + // ios only + +lazilyLoadView?: (name: string) => Object; // revisit return + +focus?: (reactTag: ?number) => void; + +blur?: (reactTag: ?number) => void; +} + +export default (TurboModuleRegistry.getEnforcing('UIManager'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeVibration.js b/packages/react-native/src/private/specs/modules/NativeVibration.js new file mode 100644 index 00000000000..0a4bff9a31f --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeVibration.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getConstants: () => {||}; + +vibrate: (pattern: number) => void; + + // Android only + +vibrateByPattern: (pattern: Array, repeat: number) => void; + +cancel: () => void; +} + +export default (TurboModuleRegistry.getEnforcing('Vibration'): Spec); diff --git a/packages/react-native/src/private/specs/modules/NativeWebSocketModule.js b/packages/react-native/src/private/specs/modules/NativeWebSocketModule.js new file mode 100644 index 00000000000..268578c3d79 --- /dev/null +++ b/packages/react-native/src/private/specs/modules/NativeWebSocketModule.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + */ + +import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; + +import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +connect: ( + url: string, + protocols: ?Array, + options: {|headers?: Object|}, + socketID: number, + ) => void; + +send: (message: string, forSocketID: number) => void; + +sendBinary: (base64String: string, forSocketID: number) => void; + +ping: (socketID: number) => void; + +close: (code: number, reason: string, socketID: number) => void; + + // RCTEventEmitter + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; +} + +export default (TurboModuleRegistry.getEnforcing( + 'WebSocketModule', +): Spec);