diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h index 5d33c3219e5..2dfcd10b7cd 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h @@ -37,7 +37,7 @@ namespace facebook { namespace react { /** - * ObjC++ class for module 'AccessibilityInfo' + * ObjC++ class for module 'NativeAccessibilityInfo' */ class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public ObjCTurboModule { public: @@ -93,7 +93,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'AccessibilityManager' + * ObjC++ class for module 'NativeAccessibilityManager' */ class JSI_EXPORT NativeAccessibilityManagerSpecJSI : public ObjCTurboModule { public: @@ -156,7 +156,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ActionSheetManager' + * ObjC++ class for module 'NativeActionSheetManager' */ class JSI_EXPORT NativeActionSheetManagerSpecJSI : public ObjCTurboModule { public: @@ -195,7 +195,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'AlertManager' + * ObjC++ class for module 'NativeAlertManager' */ class JSI_EXPORT NativeAlertManagerSpecJSI : public ObjCTurboModule { public: @@ -263,7 +263,7 @@ saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; namespace facebook { namespace react { /** - * ObjC++ class for module 'AnimatedModule' + * ObjC++ class for module 'NativeAnimatedModule' */ class JSI_EXPORT NativeAnimatedModuleSpecJSI : public ObjCTurboModule { public: @@ -331,7 +331,7 @@ saveValueCallback:(RCTResponseSenderBlock)saveValueCallback; namespace facebook { namespace react { /** - * ObjC++ class for module 'AnimatedTurboModule' + * ObjC++ class for module 'NativeAnimatedTurboModule' */ class JSI_EXPORT NativeAnimatedTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -349,7 +349,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'AnimationsDebugModule' + * ObjC++ class for module 'NativeAnimationsDebugModule' */ class JSI_EXPORT NativeAnimationsDebugModuleSpecJSI : public ObjCTurboModule { public: @@ -397,7 +397,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'AppState' + * ObjC++ class for module 'NativeAppState' */ class JSI_EXPORT NativeAppStateSpecJSI : public ObjCTurboModule { public: @@ -416,7 +416,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'Appearance' + * ObjC++ class for module 'NativeAppearance' */ class JSI_EXPORT NativeAppearanceSpecJSI : public ObjCTurboModule { public: @@ -442,7 +442,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'AsyncLocalStorage' + * ObjC++ class for module 'NativeAsyncLocalStorage' */ class JSI_EXPORT NativeAsyncLocalStorageSpecJSI : public ObjCTurboModule { public: @@ -468,7 +468,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'AsyncSQLiteDBStorage' + * ObjC++ class for module 'NativeAsyncSQLiteDBStorage' */ class JSI_EXPORT NativeAsyncSQLiteDBStorageSpecJSI : public ObjCTurboModule { public: @@ -521,7 +521,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'BlobModule' + * ObjC++ class for module 'NativeBlobModule' */ class JSI_EXPORT NativeBlobModuleSpecJSI : public ObjCTurboModule { public: @@ -541,7 +541,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'BugReporting' + * ObjC++ class for module 'NativeBugReporting' */ class JSI_EXPORT NativeBugReportingSpecJSI : public ObjCTurboModule { public: @@ -560,7 +560,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'Clipboard' + * ObjC++ class for module 'NativeClipboard' */ class JSI_EXPORT NativeClipboardSpecJSI : public ObjCTurboModule { public: @@ -579,7 +579,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'DatePickerAndroid' + * ObjC++ class for module 'NativeDatePickerAndroid' */ class JSI_EXPORT NativeDatePickerAndroidSpecJSI : public ObjCTurboModule { public: @@ -599,7 +599,7 @@ withBackgroundColor:(NSNumber *)withBackgroundColor; namespace facebook { namespace react { /** - * ObjC++ class for module 'DevLoadingView' + * ObjC++ class for module 'NativeDevLoadingView' */ class JSI_EXPORT NativeDevLoadingViewSpecJSI : public ObjCTurboModule { public: @@ -620,7 +620,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'DevMenu' + * ObjC++ class for module 'NativeDevMenu' */ class JSI_EXPORT NativeDevMenuSpecJSI : public ObjCTurboModule { public: @@ -647,7 +647,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'DevSettings' + * ObjC++ class for module 'NativeDevSettings' */ class JSI_EXPORT NativeDevSettingsSpecJSI : public ObjCTurboModule { public: @@ -666,7 +666,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'DevSplitBundleLoader' + * ObjC++ class for module 'NativeDevSplitBundleLoader' */ class JSI_EXPORT NativeDevSplitBundleLoaderSpecJSI : public ObjCTurboModule { public: @@ -683,7 +683,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'DeviceEventManager' + * ObjC++ class for module 'NativeDeviceEventManager' */ class JSI_EXPORT NativeDeviceEventManagerSpecJSI : public ObjCTurboModule { public: @@ -819,7 +819,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'DeviceInfo' + * ObjC++ class for module 'NativeDeviceInfo' */ class JSI_EXPORT NativeDeviceInfoSpecJSI : public ObjCTurboModule { public: @@ -891,7 +891,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'DialogManagerAndroid' + * ObjC++ class for module 'NativeDialogManagerAndroid' */ class JSI_EXPORT NativeDialogManagerAndroidSpecJSI : public ObjCTurboModule { public: @@ -958,7 +958,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ExceptionsManager' + * ObjC++ class for module 'NativeExceptionsManager' */ class JSI_EXPORT NativeExceptionsManagerSpecJSI : public ObjCTurboModule { public: @@ -981,7 +981,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'FileReaderModule' + * ObjC++ class for module 'NativeFileReaderModule' */ class JSI_EXPORT NativeFileReaderModuleSpecJSI : public ObjCTurboModule { public: @@ -1016,7 +1016,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'FrameRateLogger' + * ObjC++ class for module 'NativeFrameRateLogger' */ class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public ObjCTurboModule { public: @@ -1036,7 +1036,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'HeadlessJsTaskSupport' + * ObjC++ class for module 'NativeHeadlessJsTaskSupport' */ class JSI_EXPORT NativeHeadlessJsTaskSupportSpecJSI : public ObjCTurboModule { public: @@ -1084,7 +1084,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'I18nManager' + * ObjC++ class for module 'NativeI18nManager' */ class JSI_EXPORT NativeI18nManagerSpecJSI : public ObjCTurboModule { public: @@ -1170,7 +1170,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImageEditor' + * ObjC++ class for module 'NativeImageEditor' */ class JSI_EXPORT NativeImageEditorSpecJSI : public ObjCTurboModule { public: @@ -1201,7 +1201,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImageLoaderAndroid' + * ObjC++ class for module 'NativeImageLoaderAndroid' */ class JSI_EXPORT NativeImageLoaderAndroidSpecJSI : public ObjCTurboModule { public: @@ -1230,7 +1230,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImageLoaderIOS' + * ObjC++ class for module 'NativeImageLoaderIOS' */ class JSI_EXPORT NativeImageLoaderIOSSpecJSI : public ObjCTurboModule { public: @@ -1287,7 +1287,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImagePickerIOS' + * ObjC++ class for module 'NativeImagePickerIOS' */ class JSI_EXPORT NativeImagePickerIOSSpecJSI : public ObjCTurboModule { public: @@ -1306,7 +1306,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImageStoreAndroid' + * ObjC++ class for module 'NativeImageStoreAndroid' */ class JSI_EXPORT NativeImageStoreAndroidSpecJSI : public ObjCTurboModule { public: @@ -1331,7 +1331,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImageStoreIOS' + * ObjC++ class for module 'NativeImageStoreIOS' */ class JSI_EXPORT NativeImageStoreIOSSpecJSI : public ObjCTurboModule { public: @@ -1361,7 +1361,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'IntentAndroid' + * ObjC++ class for module 'NativeIntentAndroid' */ class JSI_EXPORT NativeIntentAndroidSpecJSI : public ObjCTurboModule { public: @@ -1379,7 +1379,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'JSCHeapCapture' + * ObjC++ class for module 'NativeJSCHeapCapture' */ class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public ObjCTurboModule { public: @@ -1398,7 +1398,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'JSCSamplingProfiler' + * ObjC++ class for module 'NativeJSCSamplingProfiler' */ class JSI_EXPORT NativeJSCSamplingProfilerSpecJSI : public ObjCTurboModule { public: @@ -1446,7 +1446,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'JSDevSupport' + * ObjC++ class for module 'NativeJSDevSupport' */ class JSI_EXPORT NativeJSDevSupportSpecJSI : public ObjCTurboModule { public: @@ -1464,7 +1464,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'KeyboardObserver' + * ObjC++ class for module 'NativeKeyboardObserver' */ class JSI_EXPORT NativeKeyboardObserverSpecJSI : public ObjCTurboModule { public: @@ -1492,7 +1492,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'LinkingManager' + * ObjC++ class for module 'NativeLinkingManager' */ class JSI_EXPORT NativeLinkingManagerSpecJSI : public ObjCTurboModule { public: @@ -1510,7 +1510,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'LogBox' + * ObjC++ class for module 'NativeLogBox' */ class JSI_EXPORT NativeLogBoxSpecJSI : public ObjCTurboModule { public: @@ -1528,7 +1528,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'ModalManager' + * ObjC++ class for module 'NativeModalManager' */ class JSI_EXPORT NativeModalManagerSpecJSI : public ObjCTurboModule { public: @@ -1557,7 +1557,7 @@ useIncrementalUpdates:(BOOL)useIncrementalUpdates namespace facebook { namespace react { /** - * ObjC++ class for module 'NetworkingAndroid' + * ObjC++ class for module 'NativeNetworkingAndroid' */ class JSI_EXPORT NativeNetworkingAndroidSpecJSI : public ObjCTurboModule { public: @@ -1600,7 +1600,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'NetworkingIOS' + * ObjC++ class for module 'NativeNetworkingIOS' */ class JSI_EXPORT NativeNetworkingIOSSpecJSI : public ObjCTurboModule { public: @@ -1628,7 +1628,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'PermissionsAndroid' + * ObjC++ class for module 'NativePermissionsAndroid' */ class JSI_EXPORT NativePermissionsAndroidSpecJSI : public ObjCTurboModule { public: @@ -1713,7 +1713,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'PlatformConstantsAndroid' + * ObjC++ class for module 'NativePlatformConstantsAndroid' */ class JSI_EXPORT NativePlatformConstantsAndroidSpecJSI : public ObjCTurboModule { public: @@ -1792,7 +1792,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'PlatformConstantsIOS' + * ObjC++ class for module 'NativePlatformConstantsIOS' */ class JSI_EXPORT NativePlatformConstantsIOSSpecJSI : public ObjCTurboModule { public: @@ -1868,7 +1868,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'PushNotificationManagerIOS' + * ObjC++ class for module 'NativePushNotificationManagerIOS' */ class JSI_EXPORT NativePushNotificationManagerIOSSpecJSI : public ObjCTurboModule { public: @@ -1887,7 +1887,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'RedBox' + * ObjC++ class for module 'NativeRedBox' */ class JSI_EXPORT NativeRedBoxSpecJSI : public ObjCTurboModule { public: @@ -1909,7 +1909,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'SegmentFetcher' + * ObjC++ class for module 'NativeSegmentFetcher' */ class JSI_EXPORT NativeSegmentFetcherSpecJSI : public ObjCTurboModule { public: @@ -1955,7 +1955,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SettingsManager' + * ObjC++ class for module 'NativeSettingsManager' */ class JSI_EXPORT NativeSettingsManagerSpecJSI : public ObjCTurboModule { public: @@ -1990,7 +1990,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ShareModule' + * ObjC++ class for module 'NativeShareModule' */ class JSI_EXPORT NativeShareModuleSpecJSI : public ObjCTurboModule { public: @@ -2007,7 +2007,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'SoundManager' + * ObjC++ class for module 'NativeSoundManager' */ class JSI_EXPORT NativeSoundManagerSpecJSI : public ObjCTurboModule { public: @@ -2051,7 +2051,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SourceCode' + * ObjC++ class for module 'NativeSourceCode' */ class JSI_EXPORT NativeSourceCodeSpecJSI : public ObjCTurboModule { public: @@ -2101,7 +2101,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'StatusBarManagerAndroid' + * ObjC++ class for module 'NativeStatusBarManagerAndroid' */ class JSI_EXPORT NativeStatusBarManagerAndroidSpecJSI : public ObjCTurboModule { public: @@ -2154,7 +2154,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'StatusBarManagerIOS' + * ObjC++ class for module 'NativeStatusBarManagerIOS' */ class JSI_EXPORT NativeStatusBarManagerIOSSpecJSI : public ObjCTurboModule { public: @@ -2176,7 +2176,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'Timing' + * ObjC++ class for module 'NativeTiming' */ class JSI_EXPORT NativeTimingSpecJSI : public ObjCTurboModule { public: @@ -2234,7 +2234,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ToastAndroid' + * ObjC++ class for module 'NativeToastAndroid' */ class JSI_EXPORT NativeToastAndroidSpecJSI : public ObjCTurboModule { public: @@ -2254,7 +2254,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'Vibration' + * ObjC++ class for module 'NativeVibration' */ class JSI_EXPORT NativeVibrationSpecJSI : public ObjCTurboModule { public: @@ -2298,7 +2298,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'WebSocketModule' + * ObjC++ class for module 'NativeWebSocketModule' */ class JSI_EXPORT NativeWebSocketModuleSpecJSI : public ObjCTurboModule { public: diff --git a/packages/react-native-codegen/e2e/__tests__/modules/__snapshots__/GenerateModuleObjCpp-test.js.snap b/packages/react-native-codegen/e2e/__tests__/modules/__snapshots__/GenerateModuleObjCpp-test.js.snap index 00621f37af6..91e62c8d05b 100644 --- a/packages/react-native-codegen/e2e/__tests__/modules/__snapshots__/GenerateModuleObjCpp-test.js.snap +++ b/packages/react-native-codegen/e2e/__tests__/modules/__snapshots__/GenerateModuleObjCpp-test.js.snap @@ -40,7 +40,7 @@ exports[`GenerateModuleObjCpp can generate a header file NativeModule specs 1`] namespace facebook { namespace react { /** - * ObjC++ class for module 'ArrayTurboModule' + * ObjC++ class for module 'NativeArrayTurboModule' */ class JSI_EXPORT NativeArrayTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -58,7 +58,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'BooleanTurboModule' + * ObjC++ class for module 'NativeBooleanTurboModule' */ class JSI_EXPORT NativeBooleanTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -76,7 +76,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'CallbackTurboModule' + * ObjC++ class for module 'NativeCallbackTurboModule' */ class JSI_EXPORT NativeCallbackTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -99,7 +99,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'NullableTurboModule' + * ObjC++ class for module 'NativeNullableTurboModule' */ class JSI_EXPORT NativeNullableTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -117,7 +117,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'NumberTurboModule' + * ObjC++ class for module 'NativeNumberTurboModule' */ class JSI_EXPORT NativeNumberTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -288,7 +288,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ObjectTurboModule' + * ObjC++ class for module 'NativeObjectTurboModule' */ class JSI_EXPORT NativeObjectTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -422,7 +422,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'OptionalObjectTurboModule' + * ObjC++ class for module 'NativeOptionalObjectTurboModule' */ class JSI_EXPORT NativeOptionalObjectTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -444,7 +444,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'PromiseTurboModule' + * ObjC++ class for module 'NativePromiseTurboModule' */ class JSI_EXPORT NativePromiseTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -536,7 +536,7 @@ getValuegetValuegetValuegetValuegetValuey:(NSString *)getValuegetValuegetValuege namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModule' + * ObjC++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -626,7 +626,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModuleArrays' + * ObjC++ class for module 'NativeSampleTurboModuleArrays' */ class JSI_EXPORT NativeSampleTurboModuleArraysSpecJSI : public ObjCTurboModule { public: @@ -718,7 +718,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModuleNullable' + * ObjC++ class for module 'NativeSampleTurboModuleNullable' */ class JSI_EXPORT NativeSampleTurboModuleNullableSpecJSI : public ObjCTurboModule { public: @@ -810,7 +810,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModuleNullableAndOptional' + * ObjC++ class for module 'NativeSampleTurboModuleNullableAndOptional' */ class JSI_EXPORT NativeSampleTurboModuleNullableAndOptionalSpecJSI : public ObjCTurboModule { public: @@ -902,7 +902,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModuleOptional' + * ObjC++ class for module 'NativeSampleTurboModuleOptional' */ class JSI_EXPORT NativeSampleTurboModuleOptionalSpecJSI : public ObjCTurboModule { public: @@ -920,7 +920,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'StringTurboModule' + * ObjC++ class for module 'NativeStringTurboModule' */ class JSI_EXPORT NativeStringTurboModuleSpecJSI : public ObjCTurboModule { public: diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js index 79bde01c4e2..e6306738b9e 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js @@ -14,6 +14,8 @@ import type { SchemaType, NativeModulePropertySchema, NativeModuleMethodParamSchema, + NativeModuleFunctionTypeAnnotation, + NativeModuleParamTypeAnnotation, } from '../../CodegenSchema'; import type {AliasResolver} from './Utils'; @@ -23,10 +25,10 @@ const {unwrapNullable} = require('../../parsers/flow/modules/utils'); type FilesOutput = Map; const propertyHeaderTemplate = - 'static jsi::Value __hostFunction_Native::_MODULE_NAME_::CxxSpecJSI_::_PROPERTY_NAME_::(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {'; + 'static jsi::Value __hostFunction_::_CODEGEN_MODULE_NAME_::CxxSpecJSI_::_PROPERTY_NAME_::(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {'; const propertyCastTemplate = - 'static_cast(&turboModule)->::_PROPERTY_NAME_::(rt::_ARGS_::);'; + 'static_cast<::_CODEGEN_MODULE_NAME_::CxxSpecJSI *>(&turboModule)->::_PROPERTY_NAME_::(rt::_ARGS_::);'; const nonvoidPropertyTemplate = `${propertyHeaderTemplate} return ${propertyCastTemplate} @@ -38,12 +40,12 @@ const voidPropertyTemplate = `${propertyHeaderTemplate} }`; const proprertyDefTemplate = - ' methodMap_["::_PROPERTY_NAME_::"] = MethodMetadata {::_ARGS_COUNT_::, __hostFunction_Native::_MODULE_NAME_::CxxSpecJSI_::_PROPERTY_NAME_::};'; + ' methodMap_["::_PROPERTY_NAME_::"] = MethodMetadata {::_ARGS_COUNT_::, __hostFunction_::_CODEGEN_MODULE_NAME_::CxxSpecJSI_::_PROPERTY_NAME_::};'; const moduleTemplate = `::_MODULE_PROPERTIES_:: -Native::_MODULE_NAME_::CxxSpecJSI::Native::_MODULE_NAME_::CxxSpecJSI(std::shared_ptr jsInvoker) - : TurboModule("::_MODULE_NAME_::", jsInvoker) { +::_CODEGEN_MODULE_NAME_::CxxSpecJSI::::_CODEGEN_MODULE_NAME_::CxxSpecJSI(std::shared_ptr jsInvoker) + : TurboModule("::_NATIVE_MODULE_NAME_::", jsInvoker) { ::_PROPERTIES_MAP_:: }`.trim(); @@ -77,7 +79,9 @@ function traverseArg( return `args[${index}]${suffix}`; } const {typeAnnotation: nullableTypeAnnotation} = arg; - const [typeAnnotation] = unwrapNullable(nullableTypeAnnotation); + const [typeAnnotation] = unwrapNullable( + nullableTypeAnnotation, + ); let realTypeAnnotation = typeAnnotation; if (realTypeAnnotation.type === 'TypeAliasTypeAnnotation') { @@ -127,7 +131,11 @@ function traverseProperty( property: NativeModulePropertySchema, resolveAlias: AliasResolver, ): string { - const [propertyTypeAnnotation] = unwrapNullable(property.typeAnnotation); + const [ + propertyTypeAnnotation, + ] = unwrapNullable( + property.typeAnnotation, + ); const propertyTemplate = propertyTypeAnnotation.returnTypeAnnotation.type === 'VoidTypeAnnotation' ? voidPropertyTemplate @@ -149,31 +157,40 @@ module.exports = { const nativeModules = getModules(schema); const modules = Object.keys(nativeModules) - .map(name => { - const {aliases, properties} = nativeModules[name]; + .map(codegenModuleName => { + const nativeModule = nativeModules[codegenModuleName]; + const { + aliases, + spec: {properties}, + moduleNames, + } = nativeModule; const resolveAlias = createAliasResolver(aliases); const traversedProperties = properties .map(property => traverseProperty(property, resolveAlias)) .join('\n'); - return moduleTemplate - .replace(/::_MODULE_PROPERTIES_::/g, traversedProperties) - .replace( - '::_PROPERTIES_MAP_::', - properties - .map( - ({ - name: propertyName, - typeAnnotation: nullableTypeAnnotation, - }) => { - const [{params}] = unwrapNullable(nullableTypeAnnotation); - return proprertyDefTemplate - .replace(/::_PROPERTY_NAME_::/g, propertyName) - .replace(/::_ARGS_COUNT_::/g, params.length.toString()); - }, - ) - .join('\n'), - ) - .replace(/::_MODULE_NAME_::/g, name); + return ( + moduleTemplate + .replace(/::_MODULE_PROPERTIES_::/g, traversedProperties) + // TODO: What happens when there are more than one NativeModule requires? + .replace('::_NATIVE_MODULE_NAME_::', moduleNames[0]) + .replace( + '::_PROPERTIES_MAP_::', + properties + .map( + ({ + name: propertyName, + typeAnnotation: nullableTypeAnnotation, + }) => { + const [{params}] = unwrapNullable(nullableTypeAnnotation); + return proprertyDefTemplate + .replace(/::_PROPERTY_NAME_::/g, propertyName) + .replace(/::_ARGS_COUNT_::/g, params.length.toString()); + }, + ) + .join('\n'), + ) + .replace(/::_CODEGEN_MODULE_NAME_::/g, codegenModuleName) + ); }) .join('\n'); diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js index 7a4f472ff9f..9e4b5061d18 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js @@ -14,6 +14,7 @@ import type { Nullable, SchemaType, NativeModuleTypeAnnotation, + NativeModuleFunctionTypeAnnotation, } from '../../CodegenSchema'; import type {AliasResolver} from './Utils'; @@ -22,9 +23,9 @@ const {unwrapNullable} = require('../../parsers/flow/modules/utils'); type FilesOutput = Map; -const moduleTemplate = `class JSI_EXPORT Native::_MODULE_NAME_::CxxSpecJSI : public TurboModule { +const moduleTemplate = `class JSI_EXPORT ::_CODEGEN_MODULE_NAME_::CxxSpecJSI : public TurboModule { protected: - Native::_MODULE_NAME_::CxxSpecJSI(std::shared_ptr jsInvoker); + ::_CODEGEN_MODULE_NAME_::CxxSpecJSI(std::shared_ptr jsInvoker); public: ::_MODULE_PROPERTIES_:: @@ -57,7 +58,9 @@ function translatePrimitiveJSTypeToCpp( createErrorMessage: (typeName: string) => string, resolveAlias: AliasResolver, ) { - const [typeAnnotation] = unwrapNullable(nullableTypeAnnotation); + const [typeAnnotation] = unwrapNullable( + nullableTypeAnnotation, + ); let realTypeAnnotation = typeAnnotation; if (realTypeAnnotation.type === 'TypeAliasTypeAnnotation') { realTypeAnnotation = resolveAlias(realTypeAnnotation.name); @@ -114,13 +117,20 @@ module.exports = { const nativeModules = getModules(schema); const modules = Object.keys(nativeModules) - .map(name => { - const {aliases, properties} = nativeModules[name]; + .map(codegenModuleName => { + const { + aliases, + spec: {properties}, + } = nativeModules[codegenModuleName]; const resolveAlias = createAliasResolver(aliases); const traversedProperties = properties .map(prop => { - const [propTypeAnnotation] = unwrapNullable(prop.typeAnnotation); + const [ + propTypeAnnotation, + ] = unwrapNullable( + prop.typeAnnotation, + ); const traversedArgs = propTypeAnnotation.params .map(param => { const translatedParam = translatePrimitiveJSTypeToCpp( @@ -156,7 +166,7 @@ module.exports = { .join('\n'); return moduleTemplate .replace(/::_MODULE_PROPERTIES_::/g, traversedProperties) - .replace(/::_MODULE_NAME_::/g, name) + .replace(/::_CODEGEN_MODULE_NAME_::/g, codegenModuleName) .replace('::_PROPERTIES_MAP_::', ''); }) .join('\n'); diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js index 8c10a90182b..c41701ded47 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js @@ -16,6 +16,8 @@ import type { NativeModulePropertySchema, NativeModuleMethodParamSchema, NativeModuleReturnTypeAnnotation, + NativeModuleFunctionTypeAnnotation, + NativeModuleParamTypeAnnotation, } from '../../CodegenSchema'; import type {AliasResolver} from './Utils'; @@ -56,7 +58,10 @@ function translateFunctionParamToJavaType( imports: Set, ): string { const {optional, typeAnnotation: nullableTypeAnnotation} = param; - const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation); + const [ + typeAnnotation, + nullable, + ] = unwrapNullable(nullableTypeAnnotation); const isRequired = !optional && !nullable; function wrapIntoNullableIfNeeded(generatedType: string) { @@ -122,7 +127,10 @@ function translateFunctionReturnTypeToJavaType( resolveAlias: AliasResolver, imports: Set, ): string { - const [returnTypeAnnotation, nullable] = unwrapNullable( + const [ + returnTypeAnnotation, + nullable, + ] = unwrapNullable( nullableReturnTypeAnnotation, ); @@ -184,7 +192,9 @@ function buildGetConstantsMethod( method: NativeModulePropertySchema, imports: Set, ): string { - const [methodTypeAnnotation] = unwrapNullable(method.typeAnnotation); + const [ + methodTypeAnnotation, + ] = unwrapNullable(method.typeAnnotation); if ( methodTypeAnnotation.returnTypeAnnotation.type === 'ObjectTypeAnnotation' ) { @@ -269,10 +279,13 @@ module.exports = { const packageName = 'com.facebook.fbreact.specs.beta'; const nativeModules = getModules(schema); - Object.keys(nativeModules).forEach(name => { - const {aliases, properties} = nativeModules[name]; + Object.keys(nativeModules).forEach(codegenModuleName => { + const { + aliases, + spec: {properties}, + } = nativeModules[codegenModuleName]; const resolveAlias = createAliasResolver(aliases); - const className = `Native${name}Spec`; + const className = `${codegenModuleName}Spec`; const imports: Set = new Set([ // Always required. @@ -288,7 +301,11 @@ module.exports = { return buildGetConstantsMethod(method, imports); } - const [methodTypeAnnotation] = unwrapNullable(method.typeAnnotation); + const [ + methodTypeAnnotation, + ] = unwrapNullable( + method.typeAnnotation, + ); // Handle return type const translatedReturnType = translateFunctionReturnTypeToJavaType( diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniCpp.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniCpp.js index ecaf21c571c..8e62fbbb448 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniCpp.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniCpp.js @@ -16,6 +16,8 @@ import type { NativeModulePropertySchema, NativeModuleMethodParamSchema, NativeModuleReturnTypeAnnotation, + NativeModuleParamTypeAnnotation, + NativeModuleFunctionTypeAnnotation, } from '../../CodegenSchema'; import type {AliasResolver} from './Utils'; @@ -25,7 +27,7 @@ const {unwrapNullable} = require('../../parsers/flow/modules/utils'); type FilesOutput = Map; const propertyHeaderTemplate = - 'static facebook::jsi::Value __hostFunction_Native::_MODULE_NAME_::SpecJSI_::_PROPERTY_NAME_::(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {'; + 'static facebook::jsi::Value __hostFunction_::_CODEGEN_MODULE_NAME_::SpecJSI_::_PROPERTY_NAME_::(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {'; const propertyCastTemplate = 'static_cast(turboModule).invokeJavaMethod(rt, ::_KIND_::, "::_PROPERTY_NAME_::", "::_SIGNATURE_::", args, count);'; @@ -36,18 +38,18 @@ ${propertyHeaderTemplate} }`; const propertyDefTemplate = - ' methodMap_["::_PROPERTY_NAME_::"] = MethodMetadata {::_ARGS_COUNT_::, __hostFunction_Native::_MODULE_NAME_::SpecJSI_::_PROPERTY_NAME_::};'; + ' methodMap_["::_PROPERTY_NAME_::"] = MethodMetadata {::_ARGS_COUNT_::, __hostFunction_::_CODEGEN_MODULE_NAME_::SpecJSI_::_PROPERTY_NAME_::};'; const moduleTemplate = ` ::_TURBOMODULE_METHOD_INVOKERS_:: -Native::_MODULE_NAME_::SpecJSI::Native::_MODULE_NAME_::SpecJSI(const JavaTurboModule::InitParams ¶ms) +::_CODEGEN_MODULE_NAME_::SpecJSI::::_CODEGEN_MODULE_NAME_::SpecJSI(const JavaTurboModule::InitParams ¶ms) : JavaTurboModule(params) { ::_PROPERTIES_MAP_:: }`.trim(); -const oneModuleLookupTemplate = ` if (moduleName == "::_MODULE_NAME_::") { - return std::make_shared(params); +const oneModuleLookupTemplate = ` if (moduleName == "::_NATIVE_MODULE_NAME_::") { + return std::make_shared<::_CODEGEN_MODULE_NAME_::SpecJSI>(params); }`; const template = ` @@ -80,7 +82,9 @@ function translateReturnTypeToKind( nullableTypeAnnotation: Nullable, resolveAlias: AliasResolver, ): string { - const [typeAnnotation] = unwrapNullable(nullableTypeAnnotation); + const [typeAnnotation] = unwrapNullable( + nullableTypeAnnotation, + ); let realTypeAnnotation = typeAnnotation; if (realTypeAnnotation.type === 'TypeAliasTypeAnnotation') { realTypeAnnotation = resolveAlias(realTypeAnnotation.name); @@ -132,7 +136,10 @@ function translateParamTypeToJniType( resolveAlias: AliasResolver, ): string { const {optional, typeAnnotation: nullableTypeAnnotation} = param; - const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation); + const [ + typeAnnotation, + nullable, + ] = unwrapNullable(nullableTypeAnnotation); const isRequired = !optional && !nullable; let realTypeAnnotation = typeAnnotation; @@ -236,7 +243,9 @@ function translateMethodTypeToJniSignature( resolveAlias: AliasResolver, ): string { const {name, typeAnnotation} = property; - let [{returnTypeAnnotation, params}] = unwrapNullable(typeAnnotation); + let [ + {returnTypeAnnotation, params}, + ] = unwrapNullable(typeAnnotation); params = [...params]; let processedReturnTypeAnnotation = returnTypeAnnotation; @@ -272,7 +281,11 @@ function translateMethodForImplementation( property: NativeModulePropertySchema, resolveAlias: AliasResolver, ): string { - const [propertyTypeAnnotation] = unwrapNullable(property.typeAnnotation); + const [ + propertyTypeAnnotation, + ] = unwrapNullable( + property.typeAnnotation, + ); const {returnTypeAnnotation} = propertyTypeAnnotation; const numberOfParams = @@ -321,8 +334,11 @@ module.exports = { const nativeModules = getModules(schema); const modules = Object.keys(nativeModules) - .map(name => { - const {aliases, properties} = nativeModules[name]; + .map(codegenModuleName => { + const { + aliases, + spec: {properties}, + } = nativeModules[codegenModuleName]; const resolveAlias = createAliasResolver(aliases); const translatedMethods = properties @@ -336,7 +352,9 @@ module.exports = { '::_PROPERTIES_MAP_::', properties .map(({name: propertyName, typeAnnotation}) => { - const [{returnTypeAnnotation, params}] = unwrapNullable( + const [ + {returnTypeAnnotation, params}, + ] = unwrapNullable( typeAnnotation, ); @@ -351,13 +369,20 @@ module.exports = { }) .join('\n'), ) - .replace(/::_MODULE_NAME_::/g, name); + .replace(/::_CODEGEN_MODULE_NAME_::/g, codegenModuleName); }) .join('\n'); const moduleLookup = Object.keys(nativeModules) - .map(name => { - return oneModuleLookupTemplate.replace(/::_MODULE_NAME_::/g, name); + .map(codegenModuleName => { + const {moduleNames} = nativeModules[codegenModuleName]; + return moduleNames + .map(nativeModuleName => + oneModuleLookupTemplate + .replace(/::_NATIVE_MODULE_NAME_::/g, nativeModuleName) + .replace(/::_CODEGEN_MODULE_NAME_::/g, codegenModuleName), + ) + .join('\n'); }) .join('\n'); diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js index 18dde67c9b1..dd6f3b21fd2 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js @@ -16,12 +16,12 @@ type FilesOutput = Map; const {getModules} = require('./Utils'); -const moduleTemplate = `/** - * JNI C++ class for module '::_MODULE_NAME_::' +const moduleSpecTemplate = `/** + * JNI C++ class for module '::_CODEGEN_MODULE_NAME_::' */ -class JSI_EXPORT Native::_MODULE_NAME_::SpecJSI : public JavaTurboModule { +class JSI_EXPORT ::_CODEGEN_MODULE_NAME_::SpecJSI : public JavaTurboModule { public: - Native::_MODULE_NAME_::SpecJSI(const JavaTurboModule::InitParams ¶ms); + ::_CODEGEN_MODULE_NAME_::SpecJSI(const JavaTurboModule::InitParams ¶ms); }; `; @@ -89,7 +89,12 @@ module.exports = { ): FilesOutput { const nativeModules = getModules(schema); const modules = Object.keys(nativeModules) - .map(name => moduleTemplate.replace(/::_MODULE_NAME_::/g, name)) + .map(codegenModuleName => + moduleSpecTemplate.replace( + /::_CODEGEN_MODULE_NAME_::/g, + codegenModuleName, + ), + ) .join('\n'); const fileName = `${moduleSpecName}.h`; diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/Utils.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/Utils.js index 0b989b12e03..d0af538ec19 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/Utils.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/Utils.js @@ -23,10 +23,10 @@ function getSafePropertyName(property: StructProperty): string { } function getNamespacedStructName( - moduleName: string, + codegenModuleName: string, structName: string, ): string { - return `JS::Native${moduleName}::${structName}`; + return `JS::${codegenModuleName}::${structName}`; } module.exports = { diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js index 179ab9ad339..da8ab2bbf51 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js @@ -23,15 +23,15 @@ import type {StructSerilizationOutput} from './serializeStruct'; const {unwrapNullable} = require('../../../../parsers/flow/modules/utils'); const StructTemplate = ({ - moduleName, + codegenModuleName, structName, builderInputProps, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structName: string, builderInputProps: string, |}>) => `namespace JS { - namespace Native${moduleName} { + namespace ${codegenModuleName} { struct ${structName} { struct Builder { @@ -59,24 +59,24 @@ const StructTemplate = ({ }`; const MethodTemplate = ({ - moduleName, + codegenModuleName, structName, properties, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structName: string, properties: string, -|}>) => `inline JS::Native${moduleName}::${structName}::Builder::Builder(const Input i) : _factory(^{ +|}>) => `inline JS::${codegenModuleName}::${structName}::Builder::Builder(const Input i) : _factory(^{ NSMutableDictionary *d = [NSMutableDictionary new]; ${properties} return d; }) {} -inline JS::Native${moduleName}::${structName}::Builder::Builder(${structName} i) : _factory(^{ +inline JS::${codegenModuleName}::${structName}::Builder::Builder(${structName} i) : _factory(^{ return i.unsafeRawValue(); }) {}`; function toObjCType( - moduleName: string, + codegenModuleName: string, nullableTypeAnnotation: Nullable, isOptional: boolean = false, ): string { @@ -115,12 +115,15 @@ function toObjCType( } return wrapFollyOptional( - `std::vector<${toObjCType(moduleName, typeAnnotation.elementType)}>`, + `std::vector<${toObjCType( + codegenModuleName, + typeAnnotation.elementType, + )}>`, ); case 'TypeAliasTypeAnnotation': const structName = capitalize(typeAnnotation.name); const namespacedStructName = getNamespacedStructName( - moduleName, + codegenModuleName, structName, ); return wrapFollyOptional(`${namespacedStructName}::Builder`); @@ -133,7 +136,7 @@ function toObjCType( } function toObjCValue( - moduleName: string, + codegenModuleName: string, nullableTypeAnnotation: Nullable, value: string, depth: number, @@ -180,9 +183,9 @@ function toObjCValue( } const localVarName = `el${'_'.repeat(depth + 1)}`; - const elementObjCType = toObjCType(moduleName, elementType); + const elementObjCType = toObjCType(codegenModuleName, elementType); const elementObjCValue = toObjCValue( - moduleName, + codegenModuleName, elementType, localVarName, depth + 1, @@ -210,17 +213,21 @@ function toObjCValue( } function serializeConstantsStruct( - moduleName: string, + codegenModuleName: string, struct: ConstantsStruct, ): StructSerilizationOutput { const declaration = StructTemplate({ - moduleName, + codegenModuleName, structName: struct.name, builderInputProps: struct.properties .map(property => { const {typeAnnotation, optional} = property; const propName = getSafePropertyName(property); - const objCType = toObjCType(moduleName, typeAnnotation, optional); + const objCType = toObjCType( + codegenModuleName, + typeAnnotation, + optional, + ); if (!optional) { return `RCTRequired<${objCType}> ${propName};`; @@ -233,14 +240,14 @@ function serializeConstantsStruct( }); const methods = MethodTemplate({ - moduleName, + codegenModuleName, structName: struct.name, properties: struct.properties .map(property => { const {typeAnnotation, optional} = property; const propName = getSafePropertyName(property); const objCValue = toObjCValue( - moduleName, + codegenModuleName, typeAnnotation, propName, 0, diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js index f932bd5c465..de85dccddce 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js @@ -23,15 +23,15 @@ import type {StructSerilizationOutput} from './serializeStruct'; const {unwrapNullable} = require('../../../../parsers/flow/modules/utils'); const StructTemplate = ({ - moduleName, + codegenModuleName, structName, structProperties, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structName: string, structProperties: string, |}>) => `namespace JS { - namespace Native${moduleName} { + namespace ${codegenModuleName} { struct ${structName} { ${structProperties} @@ -42,30 +42,30 @@ const StructTemplate = ({ } } -@interface RCTCxxConvert (Native${moduleName}_${structName}) -+ (RCTManagedPointer *)JS_Native${moduleName}_${structName}:(id)json; +@interface RCTCxxConvert (${codegenModuleName}_${structName}) ++ (RCTManagedPointer *)JS_${codegenModuleName}_${structName}:(id)json; @end`; const MethodTemplate = ({ returnType, returnValue, - moduleName, + codegenModuleName, structName, propertyName, }: $ReadOnly<{| returnType: string, returnValue: string, - moduleName: string, + codegenModuleName: string, structName: string, propertyName: string, -|}>) => `inline ${returnType}JS::Native${moduleName}::${structName}::${propertyName}() const +|}>) => `inline ${returnType}JS::${codegenModuleName}::${structName}::${propertyName}() const { id const p = _v[@"${propertyName}"]; return ${returnValue}; }`; function toObjCType( - moduleName: string, + codegenModuleName: string, nullableTypeAnnotation: Nullable, isOptional: boolean = false, ): string { @@ -104,14 +104,14 @@ function toObjCType( } return wrapFollyOptional( `facebook::react::LazyVector<${toObjCType( - moduleName, + codegenModuleName, typeAnnotation.elementType, )}>`, ); case 'TypeAliasTypeAnnotation': const structName = capitalize(typeAnnotation.name); const namespacedStructName = getNamespacedStructName( - moduleName, + codegenModuleName, structName, ); return wrapFollyOptional(namespacedStructName); @@ -124,7 +124,7 @@ function toObjCType( } function toObjCValue( - moduleName: string, + codegenModuleName: string, nullableTypeAnnotation: Nullable, value: string, depth: number, @@ -171,9 +171,9 @@ function toObjCValue( } const localVarName = `itemValue_${depth}`; - const elementObjCType = toObjCType(moduleName, elementType); + const elementObjCType = toObjCType(codegenModuleName, elementType); const elementObjCValue = toObjCValue( - moduleName, + codegenModuleName, elementType, localVarName, depth + 1, @@ -186,7 +186,7 @@ function toObjCValue( case 'TypeAliasTypeAnnotation': const structName = capitalize(typeAnnotation.name); const namespacedStructName = getNamespacedStructName( - moduleName, + codegenModuleName, structName, ); @@ -202,17 +202,21 @@ function toObjCValue( } function serializeRegularStruct( - moduleName: string, + codegenModuleName: string, struct: RegularStruct, ): StructSerilizationOutput { const declaration = StructTemplate({ - moduleName: moduleName, + codegenModuleName: codegenModuleName, structName: struct.name, structProperties: struct.properties .map(property => { const {typeAnnotation, optional} = property; const propName = getSafePropertyName(property); - const returnType = toObjCType(moduleName, typeAnnotation, optional); + const returnType = toObjCType( + codegenModuleName, + typeAnnotation, + optional, + ); const padding = ' '.repeat(returnType.endsWith('*') ? 0 : 1); return `${returnType}${padding}${propName}() const;`; @@ -224,9 +228,13 @@ function serializeRegularStruct( .map(property => { const {typeAnnotation, optional} = property; const propName = getSafePropertyName(property); - const returnType = toObjCType(moduleName, typeAnnotation, optional); + const returnType = toObjCType( + codegenModuleName, + typeAnnotation, + optional, + ); const returnValue = toObjCValue( - moduleName, + codegenModuleName, typeAnnotation, 'p', 0, @@ -235,7 +243,7 @@ function serializeRegularStruct( const padding = ' '.repeat(returnType.endsWith('*') ? 0 : 1); return MethodTemplate({ - moduleName, + codegenModuleName, structName: struct.name, returnType: returnType + padding, returnValue: returnValue, diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/index.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/index.js index 76905bbf3df..52a8ec84fd1 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/index.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/index.js @@ -23,15 +23,15 @@ const {serializeModuleSource} = require('./source/serializeModule'); type FilesOutput = Map; const ModuleDeclarationTemplate = ({ - moduleName, + codegenModuleName, structDeclarations, protocolMethods, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structDeclarations: string, protocolMethods: string, |}>) => `${structDeclarations} -@protocol Native${moduleName}Spec +@protocol ${codegenModuleName}Spec ${protocolMethods} @@ -39,11 +39,11 @@ ${protocolMethods} namespace facebook { namespace react { /** - * ObjC++ class for module '${moduleName}' + * ObjC++ class for module '${codegenModuleName}' */ - class JSI_EXPORT Native${moduleName}SpecJSI : public ObjCTurboModule { + class JSI_EXPORT ${codegenModuleName}SpecJSI : public ObjCTurboModule { public: - Native${moduleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms); + ${codegenModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react } // namespace facebook`; @@ -121,9 +121,12 @@ module.exports = { const structInlineMethods: Array = []; const moduleImplementations: Array = []; - const moduleNames: Array = Object.keys(nativeModules).sort(); - for (const moduleName of moduleNames) { - const {aliases, properties} = nativeModules[moduleName]; + const codegenModuleNames: Array = Object.keys(nativeModules).sort(); + for (const codegenModuleName of codegenModuleNames) { + const { + aliases, + spec: {properties}, + } = nativeModules[codegenModuleName]; const resolveAlias = createAliasResolver(aliases); const structCollector = new StructCollector(); @@ -131,7 +134,7 @@ module.exports = { const serializeProperty = property => { methodSerializations.push( ...serializeMethod( - moduleName, + codegenModuleName, property, structCollector, resolveAlias, @@ -155,14 +158,17 @@ module.exports = { const methodStrs = []; for (const struct of generatedStructs) { - const {methods, declaration} = serializeStruct(moduleName, struct); + const {methods, declaration} = serializeStruct( + codegenModuleName, + struct, + ); structStrs.push(declaration); methodStrs.push(methods); } moduleDeclarations.push( ModuleDeclarationTemplate({ - moduleName: moduleName, + codegenModuleName: codegenModuleName, structDeclarations: structStrs.join('\n'), protocolMethods: methodSerializations .map(({protocolMethod}) => protocolMethod) @@ -174,7 +180,7 @@ module.exports = { moduleImplementations.push( serializeModuleSource( - moduleName, + codegenModuleName, generatedStructs, methodSerializations.filter( ({selector}) => selector !== '@selector(constantsToExport)', diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js index 2825696ca44..d70066fdd06 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js @@ -60,7 +60,7 @@ export type MethodSerializationOutput = $ReadOnly<{| |}>; function serializeMethod( - moduleName: string, + codegenModuleName: string, property: NativeModulePropertySchema, structCollector: StructCollector, resolveAlias: AliasResolver, @@ -71,7 +71,7 @@ function serializeMethod( if (methodName === 'getConstants') { return serializeConstantsProtocolMethods( - moduleName, + codegenModuleName, property, structCollector, resolveAlias, @@ -84,7 +84,7 @@ function serializeMethod( params.forEach((param, index) => { const structName = getParamStructName(methodName, param); const {objCType, isStruct} = getParamObjCType( - moduleName, + codegenModuleName, methodName, param, structName, @@ -177,7 +177,7 @@ function getParamStructName( } function getParamObjCType( - moduleName: string, + codegenModuleName: string, methodName: string, param: NativeModuleMethodParamSchema, structName: string, @@ -242,7 +242,8 @@ function getParamObjCType( * TODO(T73943261): Support nullable object literals and aliases? */ return isStruct( - getNamespacedStructName(moduleName, structTypeAnnotation.name) + ' &', + getNamespacedStructName(codegenModuleName, structTypeAnnotation.name) + + ' &', ); } case 'ReservedFunctionValueTypeAnnotation': @@ -382,7 +383,7 @@ function getReturnJSType( } function serializeConstantsProtocolMethods( - moduleName: string, + codegenModuleName: string, property: NativeModulePropertySchema, structCollector: StructCollector, resolveAlias: AliasResolver, @@ -390,14 +391,14 @@ function serializeConstantsProtocolMethods( const [propertyTypeAnnotation] = unwrapNullable(property.typeAnnotation); if (propertyTypeAnnotation.params.length !== 0) { throw new Error( - `${moduleName}.getConstants() may only accept 0 arguments.`, + `${codegenModuleName}.getConstants() may only accept 0 arguments.`, ); } const {returnTypeAnnotation} = propertyTypeAnnotation; if (returnTypeAnnotation.type !== 'ObjectTypeAnnotation') { throw new Error( - `${moduleName}.getConstants() may only return an object literal: {|...|}.`, + `${codegenModuleName}.getConstants() may only return an object literal: {|...|}.`, ); } @@ -417,7 +418,7 @@ function serializeConstantsProtocolMethods( "Unable to generate C++ struct from module's getConstants() method return type.", ); - const returnObjCType = `facebook::react::ModuleConstants`; + const returnObjCType = `facebook::react::ModuleConstants`; return ['constantsToExport', 'getConstants'].map( methodName => { diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/source/serializeModule.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/source/serializeModule.js index de22c2a2b1e..40a08c76720 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/source/serializeModule.js @@ -17,16 +17,16 @@ import type { } from '../serializeMethod'; const ModuleTemplate = ({ - moduleName, + codegenModuleName, structs, methodSerializationOutputs, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structs: $ReadOnlyArray, methodSerializationOutputs: $ReadOnlyArray, |}>) => `${structs .map(struct => - RCTCxxConvertCategoryTemplate({moduleName, structName: struct.name}), + RCTCxxConvertCategoryTemplate({codegenModuleName, structName: struct.name}), ) .join('\n')} namespace facebook { @@ -34,7 +34,7 @@ namespace facebook { ${methodSerializationOutputs .map(serializedMethodParts => InlineHostFunctionTemplate({ - moduleName, + codegenModuleName, methodName: serializedMethodParts.methodName, returnJSType: serializedMethodParts.returnJSType, selector: serializedMethodParts.selector, @@ -42,12 +42,12 @@ namespace facebook { ) .join('\n')} - Native${moduleName}SpecJSI::Native${moduleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms) + ${codegenModuleName}SpecJSI::${codegenModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms) : ObjCTurboModule(params) { ${methodSerializationOutputs .map(({methodName, structParamRecords, argCount}) => MethodMapEntryTemplate({ - moduleName, + codegenModuleName, methodName, structParamRecords, argCount, @@ -59,58 +59,58 @@ namespace facebook { } // namespace facebook`; const RCTCxxConvertCategoryTemplate = ({ - moduleName, + codegenModuleName, structName, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, structName: string, -|}>) => `@implementation RCTCxxConvert (Native${moduleName}_${structName}) -+ (RCTManagedPointer *)JS_Native${moduleName}_${structName}:(id)json +|}>) => `@implementation RCTCxxConvert (${codegenModuleName}_${structName}) ++ (RCTManagedPointer *)JS_${codegenModuleName}_${structName}:(id)json { - return facebook::react::managedPointer(json); + return facebook::react::managedPointer(json); } @end`; const InlineHostFunctionTemplate = ({ - moduleName, + codegenModuleName, methodName, returnJSType, selector, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, methodName: string, returnJSType: string, selector: string, |}>) => ` - static facebook::jsi::Value __hostFunction_Native${moduleName}SpecJSI_${methodName}(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + static facebook::jsi::Value __hostFunction_${codegenModuleName}SpecJSI_${methodName}(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeObjCMethod(rt, ${returnJSType}, "${methodName}", ${selector}, args, count); }`; const MethodMapEntryTemplate = ({ - moduleName, + codegenModuleName, methodName, structParamRecords, argCount, }: $ReadOnly<{| - moduleName: string, + codegenModuleName: string, methodName: string, structParamRecords: $ReadOnlyArray, argCount: number, |}>) => ` - methodMap_["${methodName}"] = MethodMetadata {${argCount}, __hostFunction_Native${moduleName}SpecJSI_${methodName}}; + methodMap_["${methodName}"] = MethodMetadata {${argCount}, __hostFunction_${codegenModuleName}SpecJSI_${methodName}}; ${structParamRecords .map(({paramIndex, structName}) => { - return `setMethodArgConversionSelector(@"${methodName}", ${paramIndex}, @"JS_Native${moduleName}_${structName}:");`; + return `setMethodArgConversionSelector(@"${methodName}", ${paramIndex}, @"JS_${codegenModuleName}_${structName}:");`; }) .join('\n' + ' '.repeat(8))}`; function serializeModuleSource( - moduleName: string, + codegenModuleName: string, structs: $ReadOnlyArray, methodSerializationOutputs: $ReadOnlyArray, ): string { return ModuleTemplate({ - moduleName, + codegenModuleName, structs: structs.filter(({context}) => context !== 'CONSTANTS'), methodSerializationOutputs, }); diff --git a/packages/react-native-codegen/src/generators/modules/Utils.js b/packages/react-native-codegen/src/generators/modules/Utils.js index 4449e414cf1..872198ba2a4 100644 --- a/packages/react-native-codegen/src/generators/modules/Utils.js +++ b/packages/react-native-codegen/src/generators/modules/Utils.js @@ -34,15 +34,17 @@ function createAliasResolver(aliasMap: NativeModuleAliasMap): AliasResolver { function getModules( schema: SchemaType, ): $ReadOnly<{|[moduleName: string]: NativeModuleSchema|}> { - return Object.keys(schema.modules) - .map( - moduleName => schema.modules[moduleName].nativeModules, - ) - .filter(Boolean) - .reduce<{+[string]: NativeModuleSchema}>( - (acc, modules) => ({...acc, ...modules}), - {}, - ); + return Object.keys(schema.modules).reduce<{|[string]: NativeModuleSchema|}>( + (modules, moduleName: string) => { + const module = schema.modules[moduleName]; + if (module == null || module.type === 'Component') { + return modules; + } + modules[moduleName] = module; + return modules; + }, + {}, + ); } module.exports = { diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap index a9d6e0d5307..4b0e7d22201 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap @@ -93,18 +93,18 @@ Map { namespace facebook { namespace react { -static jsi::Value __hostFunction_NativeAliasTurboModuleCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->getConstants(rt); +static jsi::Value __hostFunction_AliasTurboModuleCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->getConstants(rt); } -static jsi::Value __hostFunction_NativeAliasTurboModuleCxxSpecJSI_cropImage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->cropImage(rt, args[0].getObject(rt)); +static jsi::Value __hostFunction_AliasTurboModuleCxxSpecJSI_cropImage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + static_cast(&turboModule)->cropImage(rt, args[0].getObject(rt)); return jsi::Value::undefined(); } -NativeAliasTurboModuleCxxSpecJSI::NativeAliasTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker) +AliasTurboModuleCxxSpecJSI::AliasTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker) : TurboModule(\\"AliasTurboModule\\", jsInvoker) { - methodMap_[\\"getConstants\\"] = MethodMetadata {0, __hostFunction_NativeAliasTurboModuleCxxSpecJSI_getConstants}; - methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_NativeAliasTurboModuleCxxSpecJSI_cropImage}; + methodMap_[\\"getConstants\\"] = MethodMetadata {0, __hostFunction_AliasTurboModuleCxxSpecJSI_getConstants}; + methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_AliasTurboModuleCxxSpecJSI_cropImage}; } @@ -295,60 +295,18 @@ NativeSampleTurboModuleCxxSpecJSI::NativeSampleTurboModuleCxxSpecJSI(std::shared : TurboModule(\\"SampleTurboModule\\", jsInvoker) { methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_voidFunc}; } -static jsi::Value __hostFunction_NativeSample2TurboModuleCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->getConstants(rt); +static jsi::Value __hostFunction_NativeSampleTurboModule2CxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->getConstants(rt); } -static jsi::Value __hostFunction_NativeSample2TurboModuleCxxSpecJSI_voidFunc(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->voidFunc(rt); +static jsi::Value __hostFunction_NativeSampleTurboModule2CxxSpecJSI_voidFunc(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + static_cast(&turboModule)->voidFunc(rt); return jsi::Value::undefined(); } -NativeSample2TurboModuleCxxSpecJSI::NativeSample2TurboModuleCxxSpecJSI(std::shared_ptr jsInvoker) - : TurboModule(\\"Sample2TurboModule\\", jsInvoker) { - methodMap_[\\"getConstants\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleCxxSpecJSI_getConstants}; - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleCxxSpecJSI_voidFunc}; -} - - -} // namespace react -} // namespace facebook -", -} -`; - -exports[`GenerateModuleCpp can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "NativeModules.cpp" => "/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleH.js - */ - -#include - -namespace facebook { -namespace react { - -static jsi::Value __hostFunction_NativeSampleTurboModuleCxxSpecJSI_voidFunc(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->voidFunc(rt); - return jsi::Value::undefined(); -} - -NativeSampleTurboModuleCxxSpecJSI::NativeSampleTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker) - : TurboModule(\\"SampleTurboModule\\", jsInvoker) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_voidFunc}; -} -static jsi::Value __hostFunction_NativeSample2TurboModuleCxxSpecJSI_voidFunc(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - static_cast(&turboModule)->voidFunc(rt); - return jsi::Value::undefined(); -} - -NativeSample2TurboModuleCxxSpecJSI::NativeSample2TurboModuleCxxSpecJSI(std::shared_ptr jsInvoker) - : TurboModule(\\"Sample2TurboModule\\", jsInvoker) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleCxxSpecJSI_voidFunc}; +NativeSampleTurboModule2CxxSpecJSI::NativeSampleTurboModule2CxxSpecJSI(std::shared_ptr jsInvoker) + : TurboModule(\\"SampleTurboModule2\\", jsInvoker) { + methodMap_[\\"getConstants\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModule2CxxSpecJSI_getConstants}; + methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModule2CxxSpecJSI_voidFunc}; } diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap index c4dec4401fd..318f5c85f43 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap @@ -84,9 +84,9 @@ Map { namespace facebook { namespace react { -class JSI_EXPORT NativeAliasTurboModuleCxxSpecJSI : public TurboModule { +class JSI_EXPORT AliasTurboModuleCxxSpecJSI : public TurboModule { protected: - NativeAliasTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker); + AliasTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker); public: virtual jsi::Object getConstants(jsi::Runtime &rt) = 0; @@ -222,9 +222,9 @@ public: virtual void voidFunc(jsi::Runtime &rt) = 0; }; -class JSI_EXPORT NativeSample2TurboModuleCxxSpecJSI : public TurboModule { +class JSI_EXPORT NativeSampleTurboModule2CxxSpecJSI : public TurboModule { protected: - NativeSample2TurboModuleCxxSpecJSI(std::shared_ptr jsInvoker); + NativeSampleTurboModule2CxxSpecJSI(std::shared_ptr jsInvoker); public: virtual jsi::Object getConstants(jsi::Runtime &rt) = 0; @@ -237,43 +237,3 @@ virtual void voidFunc(jsi::Runtime &rt) = 0; ", } `; - -exports[`GenerateModuleH can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "NativeModules.h" => "/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleH.js - */ - -#pragma once - -#include - -namespace facebook { -namespace react { -class JSI_EXPORT NativeSampleTurboModuleCxxSpecJSI : public TurboModule { -protected: - NativeSampleTurboModuleCxxSpecJSI(std::shared_ptr jsInvoker); - -public: -virtual void voidFunc(jsi::Runtime &rt) = 0; - -}; -class JSI_EXPORT NativeSample2TurboModuleCxxSpecJSI : public TurboModule { -protected: - NativeSample2TurboModuleCxxSpecJSI(std::shared_ptr jsInvoker); - -public: -virtual void voidFunc(jsi::Runtime &rt) = 0; - -}; - -} // namespace react -} // namespace facebook -", -} -`; diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap index aee4f5f853f..bc98ff9c128 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap @@ -146,7 +146,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModule' + * ObjC++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -296,7 +296,7 @@ Map { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModule' + * ObjC++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -339,7 +339,7 @@ Map { #import namespace JS { - namespace NativeAliasTurboModule { + namespace AliasTurboModule { struct OptionsOffset { double x() const; double y() const; @@ -351,11 +351,11 @@ namespace JS { } } -@interface RCTCxxConvert (NativeAliasTurboModule_OptionsOffset) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsOffset:(id)json; +@interface RCTCxxConvert (AliasTurboModule_OptionsOffset) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsOffset:(id)json; @end namespace JS { - namespace NativeAliasTurboModule { + namespace AliasTurboModule { struct OptionsSize { double width() const; double height() const; @@ -367,11 +367,11 @@ namespace JS { } } -@interface RCTCxxConvert (NativeAliasTurboModule_OptionsSize) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsSize:(id)json; +@interface RCTCxxConvert (AliasTurboModule_OptionsSize) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsSize:(id)json; @end namespace JS { - namespace NativeAliasTurboModule { + namespace AliasTurboModule { struct OptionsDisplaySize { double width() const; double height() const; @@ -383,15 +383,15 @@ namespace JS { } } -@interface RCTCxxConvert (NativeAliasTurboModule_OptionsDisplaySize) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsDisplaySize:(id)json; +@interface RCTCxxConvert (AliasTurboModule_OptionsDisplaySize) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsDisplaySize:(id)json; @end namespace JS { - namespace NativeAliasTurboModule { + namespace AliasTurboModule { struct Options { - JS::NativeAliasTurboModule::OptionsOffset offset() const; - JS::NativeAliasTurboModule::OptionsSize size() const; - folly::Optional displaySize() const; + JS::AliasTurboModule::OptionsOffset offset() const; + JS::AliasTurboModule::OptionsSize size() const; + folly::Optional displaySize() const; NSString *resizeMode() const; folly::Optional allowExternalStorage() const; @@ -402,12 +402,12 @@ namespace JS { } } -@interface RCTCxxConvert (NativeAliasTurboModule_Options) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_Options:(id)json; +@interface RCTCxxConvert (AliasTurboModule_Options) ++ (RCTManagedPointer *)JS_AliasTurboModule_Options:(id)json; @end -@protocol NativeAliasTurboModuleSpec +@protocol AliasTurboModuleSpec -- (void)cropImage:(JS::NativeAliasTurboModule::Options &)cropData; +- (void)cropImage:(JS::AliasTurboModule::Options &)cropData; @end namespace facebook { @@ -415,63 +415,63 @@ namespace facebook { /** * ObjC++ class for module 'AliasTurboModule' */ - class JSI_EXPORT NativeAliasTurboModuleSpecJSI : public ObjCTurboModule { + class JSI_EXPORT AliasTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeAliasTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + AliasTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react } // namespace facebook -inline double JS::NativeAliasTurboModule::OptionsOffset::x() const +inline double JS::AliasTurboModule::OptionsOffset::x() const { id const p = _v[@\\"x\\"]; return RCTBridgingToDouble(p); } -inline double JS::NativeAliasTurboModule::OptionsOffset::y() const +inline double JS::AliasTurboModule::OptionsOffset::y() const { id const p = _v[@\\"y\\"]; return RCTBridgingToDouble(p); } -inline double JS::NativeAliasTurboModule::OptionsSize::width() const +inline double JS::AliasTurboModule::OptionsSize::width() const { id const p = _v[@\\"width\\"]; return RCTBridgingToDouble(p); } -inline double JS::NativeAliasTurboModule::OptionsSize::height() const +inline double JS::AliasTurboModule::OptionsSize::height() const { id const p = _v[@\\"height\\"]; return RCTBridgingToDouble(p); } -inline double JS::NativeAliasTurboModule::OptionsDisplaySize::width() const +inline double JS::AliasTurboModule::OptionsDisplaySize::width() const { id const p = _v[@\\"width\\"]; return RCTBridgingToDouble(p); } -inline double JS::NativeAliasTurboModule::OptionsDisplaySize::height() const +inline double JS::AliasTurboModule::OptionsDisplaySize::height() const { id const p = _v[@\\"height\\"]; return RCTBridgingToDouble(p); } -inline JS::NativeAliasTurboModule::OptionsOffset JS::NativeAliasTurboModule::Options::offset() const +inline JS::AliasTurboModule::OptionsOffset JS::AliasTurboModule::Options::offset() const { id const p = _v[@\\"offset\\"]; - return JS::NativeAliasTurboModule::OptionsOffset(p); + return JS::AliasTurboModule::OptionsOffset(p); } -inline JS::NativeAliasTurboModule::OptionsSize JS::NativeAliasTurboModule::Options::size() const +inline JS::AliasTurboModule::OptionsSize JS::AliasTurboModule::Options::size() const { id const p = _v[@\\"size\\"]; - return JS::NativeAliasTurboModule::OptionsSize(p); + return JS::AliasTurboModule::OptionsSize(p); } -inline folly::Optional JS::NativeAliasTurboModule::Options::displaySize() const +inline folly::Optional JS::AliasTurboModule::Options::displaySize() const { id const p = _v[@\\"displaySize\\"]; - return (p == nil ? folly::none : folly::make_optional(JS::NativeAliasTurboModule::OptionsDisplaySize(p))); + return (p == nil ? folly::none : folly::make_optional(JS::AliasTurboModule::OptionsDisplaySize(p))); } -inline NSString *JS::NativeAliasTurboModule::Options::resizeMode() const +inline NSString *JS::AliasTurboModule::Options::resizeMode() const { id const p = _v[@\\"resizeMode\\"]; return RCTBridgingToOptionalString(p); } -inline folly::Optional JS::NativeAliasTurboModule::Options::allowExternalStorage() const +inline folly::Optional JS::AliasTurboModule::Options::allowExternalStorage() const { id const p = _v[@\\"allowExternalStorage\\"]; return RCTBridgingToOptionalBool(p); @@ -547,7 +547,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'CameraRollManager' + * ObjC++ class for module 'NativeCameraRollManager' */ class JSI_EXPORT NativeCameraRollManagerSpecJSI : public ObjCTurboModule { public: @@ -614,7 +614,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ExceptionsManager' + * ObjC++ class for module 'NativeExceptionsManager' */ class JSI_EXPORT NativeExceptionsManagerSpecJSI : public ObjCTurboModule { public: @@ -648,7 +648,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'ImagePickerIOS' + * ObjC++ class for module 'NativeImagePickerIOS' */ class JSI_EXPORT NativeImagePickerIOSSpecJSI : public ObjCTurboModule { public: @@ -851,7 +851,7 @@ namespace JS { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModule' + * ObjC++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -906,23 +906,6 @@ Map { #import -@protocol NativeSample2TurboModuleSpec - -- (void)voidFunc; - -@end -namespace facebook { - namespace react { - /** - * ObjC++ class for module 'Sample2TurboModule' - */ - class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public ObjCTurboModule { - public: - NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); - }; - } // namespace react -} // namespace facebook - @protocol NativeSampleTurboModuleSpec - (void)voidFunc; @@ -931,7 +914,7 @@ namespace facebook { namespace facebook { namespace react { /** - * ObjC++ class for module 'SampleTurboModule' + * ObjC++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: @@ -940,42 +923,7 @@ namespace facebook { } // namespace react } // namespace facebook - -", -} -`; - -exports[`GenerateModuleHObjCpp can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "SampleSpec.h" => "/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleObjCpp - * - * We create an umbrella header (and corresponding implementation) here since - * Cxx compilation in BUCK has a limitation: source-code producing genrule()s - * must have a single output. More files => more genrule()s => slower builds. - */ - -#ifndef __cplusplus -#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm. -#endif -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - - -@protocol NativeSample2TurboModuleSpec +@protocol NativeSampleTurboModule2Spec - (void)voidFunc; @@ -983,28 +931,11 @@ Map { namespace facebook { namespace react { /** - * ObjC++ class for module 'Sample2TurboModule' + * ObjC++ class for module 'NativeSampleTurboModule2' */ - class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public ObjCTurboModule { + class JSI_EXPORT NativeSampleTurboModule2SpecJSI : public ObjCTurboModule { public: - NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); - }; - } // namespace react -} // namespace facebook - -@protocol NativeSampleTurboModuleSpec - -- (void)voidFunc; - -@end -namespace facebook { - namespace react { - /** - * ObjC++ class for module 'SampleTurboModule' - */ - class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { - public: - NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); + NativeSampleTurboModule2SpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJavaSpec-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJavaSpec-test.js.snap index c9a415a2064..63734de9f31 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJavaSpec-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJavaSpec-test.js.snap @@ -82,7 +82,7 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo exports[`GenerateModuleJavaSpec can generate fixture NATIVE_MODULES_WITH_TYPE_ALIASES 1`] = ` Map { - "NativeAliasTurboModuleSpec.java" => " + "AliasTurboModuleSpec.java" => " /** * Copyright (c) Facebook, Inc. and its affiliates. * @@ -103,8 +103,8 @@ import com.facebook.react.bridge.ReactModuleWithSpec; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.turbomodule.core.interfaces.TurboModule; -public abstract class NativeAliasTurboModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { - public NativeAliasTurboModuleSpec(ReactApplicationContext reactContext) { +public abstract class AliasTurboModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { + public AliasTurboModuleSpec(ReactApplicationContext reactContext) { super(reactContext); } @@ -363,7 +363,7 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo public abstract void voidFunc(); } ", - "NativeSample2TurboModuleSpec.java" => " + "NativeSampleTurboModule2Spec.java" => " /** * Copyright (c) Facebook, Inc. and its affiliates. * @@ -383,71 +383,8 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReactModuleWithSpec; import com.facebook.react.turbomodule.core.interfaces.TurboModule; -public abstract class NativeSample2TurboModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { - public NativeSample2TurboModuleSpec(ReactApplicationContext reactContext) { - super(reactContext); - } - - @ReactMethod - public abstract void voidFunc(); -} -", -} -`; - -exports[`GenerateModuleJavaSpec can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "NativeSampleTurboModuleSpec.java" => " -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - * - * @generated by codegen project: GenerateModuleJavaSpec.js - * - * @nolint - */ - -package com.facebook.fbreact.specs.beta; - -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReactModuleWithSpec; -import com.facebook.react.turbomodule.core.interfaces.TurboModule; - -public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { - public NativeSampleTurboModuleSpec(ReactApplicationContext reactContext) { - super(reactContext); - } - - @ReactMethod - public abstract void voidFunc(); -} -", - "NativeSample2TurboModuleSpec.java" => " -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - * - * @generated by codegen project: GenerateModuleJavaSpec.js - * - * @nolint - */ - -package com.facebook.fbreact.specs.beta; - -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReactModuleWithSpec; -import com.facebook.react.turbomodule.core.interfaces.TurboModule; - -public abstract class NativeSample2TurboModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { - public NativeSample2TurboModuleSpec(ReactApplicationContext reactContext) { +public abstract class NativeSampleTurboModule2Spec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { + public NativeSampleTurboModule2Spec(ReactApplicationContext reactContext) { super(reactContext); } diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniCpp-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniCpp-test.js.snap index 47f3a3168ef..cff000d41f0 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniCpp-test.js.snap @@ -111,19 +111,19 @@ namespace react { -static facebook::jsi::Value __hostFunction_NativeAliasTurboModuleSpecJSI_cropImage(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { +static facebook::jsi::Value __hostFunction_AliasTurboModuleSpecJSI_cropImage(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeJavaMethod(rt, VoidKind, \\"cropImage\\", \\"(Lcom/facebook/react/bridge/ReadableMap;)V\\", args, count); } -NativeAliasTurboModuleSpecJSI::NativeAliasTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) +AliasTurboModuleSpecJSI::AliasTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) : JavaTurboModule(params) { - methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_NativeAliasTurboModuleSpecJSI_cropImage}; + methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_AliasTurboModuleSpecJSI_cropImage}; } std::shared_ptr NATIVE_MODULES_WITH_TYPE_ALIASES_ModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams ¶ms) { if (moduleName == \\"AliasTurboModule\\") { - return std::make_shared(params); + return std::make_shared(params); } return nullptr; } @@ -348,74 +348,22 @@ NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const JavaTurboMo } -static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { +static facebook::jsi::Value __hostFunction_NativeSampleTurboModule2SpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeJavaMethod(rt, VoidKind, \\"voidFunc\\", \\"()V\\", args, count); } -NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) +NativeSampleTurboModule2SpecJSI::NativeSampleTurboModule2SpecJSI(const JavaTurboModule::InitParams ¶ms) : JavaTurboModule(params) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; + methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModule2SpecJSI_voidFunc}; } std::shared_ptr TWO_MODULES_DIFFERENT_FILES_ModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams ¶ms) { if (moduleName == \\"SampleTurboModule\\") { return std::make_shared(params); } - if (moduleName == \\"Sample2TurboModule\\") { - return std::make_shared(params); - } - return nullptr; -} - -} // namespace react -} // namespace facebook -", -} -`; - -exports[`GenerateModuleJniCpp can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "SampleSpec-generated.cpp" => " -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleJniCpp.js - */ - -#include \\"SampleSpec.h\\" - -namespace facebook { -namespace react { - - -static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { - return static_cast(turboModule).invokeJavaMethod(rt, VoidKind, \\"voidFunc\\", \\"()V\\", args, count); -} - -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) - : JavaTurboModule(params) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; -} - -static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { - return static_cast(turboModule).invokeJavaMethod(rt, VoidKind, \\"voidFunc\\", \\"()V\\", args, count); -} - -NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) - : JavaTurboModule(params) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; -} - -std::shared_ptr TWO_MODULES_SAME_FILE_ModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams ¶ms) { - if (moduleName == \\"SampleTurboModule\\") { - return std::make_shared(params); - } - if (moduleName == \\"Sample2TurboModule\\") { - return std::make_shared(params); + if (moduleName == \\"SampleTurboModule2\\") { + return std::make_shared(params); } return nullptr; } diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap index 64cbc779b30..21a61920292 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap @@ -22,7 +22,7 @@ namespace facebook { namespace react { /** - * JNI C++ class for module 'SampleTurboModule' + * JNI C++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public JavaTurboModule { public: @@ -88,7 +88,7 @@ namespace facebook { namespace react { /** - * JNI C++ class for module 'SampleTurboModule' + * JNI C++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public JavaTurboModule { public: @@ -156,9 +156,9 @@ namespace react { /** * JNI C++ class for module 'AliasTurboModule' */ -class JSI_EXPORT NativeAliasTurboModuleSpecJSI : public JavaTurboModule { +class JSI_EXPORT AliasTurboModuleSpecJSI : public JavaTurboModule { public: - NativeAliasTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); + AliasTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; @@ -220,7 +220,7 @@ namespace facebook { namespace react { /** - * JNI C++ class for module 'CameraRollManager' + * JNI C++ class for module 'NativeCameraRollManager' */ class JSI_EXPORT NativeCameraRollManagerSpecJSI : public JavaTurboModule { public: @@ -228,7 +228,7 @@ public: }; /** - * JNI C++ class for module 'ImagePickerIOS' + * JNI C++ class for module 'NativeImagePickerIOS' */ class JSI_EXPORT NativeImagePickerIOSSpecJSI : public JavaTurboModule { public: @@ -236,7 +236,7 @@ public: }; /** - * JNI C++ class for module 'ExceptionsManager' + * JNI C++ class for module 'NativeExceptionsManager' */ class JSI_EXPORT NativeExceptionsManagerSpecJSI : public JavaTurboModule { public: @@ -302,7 +302,7 @@ namespace facebook { namespace react { /** - * JNI C++ class for module 'SampleTurboModule' + * JNI C++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public JavaTurboModule { public: @@ -368,7 +368,7 @@ namespace facebook { namespace react { /** - * JNI C++ class for module 'SampleTurboModule' + * JNI C++ class for module 'NativeSampleTurboModule' */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public JavaTurboModule { public: @@ -376,11 +376,11 @@ public: }; /** - * JNI C++ class for module 'Sample2TurboModule' + * JNI C++ class for module 'NativeSampleTurboModule2' */ -class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public JavaTurboModule { +class JSI_EXPORT NativeSampleTurboModule2SpecJSI : public JavaTurboModule { public: - NativeSample2TurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); + NativeSampleTurboModule2SpecJSI(const JavaTurboModule::InitParams ¶ms); }; @@ -419,77 +419,3 @@ include $(BUILD_SHARED_LIBRARY) ", } `; - -exports[`GenerateModuleJniH can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "SampleSpec.h" => " -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleJniH.js - */ - -#pragma once - -#include -#include -#include - -namespace facebook { -namespace react { - -/** - * JNI C++ class for module 'SampleTurboModule' - */ -class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public JavaTurboModule { -public: - NativeSampleTurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); -}; - -/** - * JNI C++ class for module 'Sample2TurboModule' - */ -class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public JavaTurboModule { -public: - NativeSample2TurboModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); -}; - - -std::shared_ptr TWO_MODULES_SAME_FILE_ModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams ¶ms); - -} // namespace react -} // namespace facebook -", - "Android.mk" => "# Copyright (c) Facebook, Inc. and its affiliates. -# -# This source code is licensed under the MIT license found in the -# LICENSE file in the root directory of this source tree. - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := react_codegen_two_modules_same_file - -LOCAL_C_INCLUDES := $(LOCAL_PATH) - -LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) - -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) - -LOCAL_SHARED_LIBRARIES := libreact_nativemodule_core - -LOCAL_STATIC_LIBRARIES := libjsi - -LOCAL_CFLAGS := \\\\ - -DLOG_TAG=\\\\\\"ReactNative\\\\\\" - -LOCAL_CFLAGS += -fexceptions -frtti -std=c++14 -Wall - -include $(BUILD_SHARED_LIBRARY) -", -} -`; diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap index edd13e0eb44..b72fed68efc 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap @@ -142,42 +142,42 @@ Map { #import \\"SampleSpec.h\\" -@implementation RCTCxxConvert (NativeAliasTurboModule_OptionsOffset) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsOffset:(id)json +@implementation RCTCxxConvert (AliasTurboModule_OptionsOffset) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsOffset:(id)json { - return facebook::react::managedPointer(json); + return facebook::react::managedPointer(json); } @end -@implementation RCTCxxConvert (NativeAliasTurboModule_OptionsSize) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsSize:(id)json +@implementation RCTCxxConvert (AliasTurboModule_OptionsSize) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsSize:(id)json { - return facebook::react::managedPointer(json); + return facebook::react::managedPointer(json); } @end -@implementation RCTCxxConvert (NativeAliasTurboModule_OptionsDisplaySize) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_OptionsDisplaySize:(id)json +@implementation RCTCxxConvert (AliasTurboModule_OptionsDisplaySize) ++ (RCTManagedPointer *)JS_AliasTurboModule_OptionsDisplaySize:(id)json { - return facebook::react::managedPointer(json); + return facebook::react::managedPointer(json); } @end -@implementation RCTCxxConvert (NativeAliasTurboModule_Options) -+ (RCTManagedPointer *)JS_NativeAliasTurboModule_Options:(id)json +@implementation RCTCxxConvert (AliasTurboModule_Options) ++ (RCTManagedPointer *)JS_AliasTurboModule_Options:(id)json { - return facebook::react::managedPointer(json); + return facebook::react::managedPointer(json); } @end namespace facebook { namespace react { - static facebook::jsi::Value __hostFunction_NativeAliasTurboModuleSpecJSI_cropImage(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + static facebook::jsi::Value __hostFunction_AliasTurboModuleSpecJSI_cropImage(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, \\"cropImage\\", @selector(cropImage:), args, count); } - NativeAliasTurboModuleSpecJSI::NativeAliasTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + AliasTurboModuleSpecJSI::AliasTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) : ObjCTurboModule(params) { - methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_NativeAliasTurboModuleSpecJSI_cropImage}; - setMethodArgConversionSelector(@\\"cropImage\\", 0, @\\"JS_NativeAliasTurboModule_Options:\\"); + methodMap_[\\"cropImage\\"] = MethodMetadata {1, __hostFunction_AliasTurboModuleSpecJSI_cropImage}; + setMethodArgConversionSelector(@\\"cropImage\\", 0, @\\"JS_AliasTurboModule_Options:\\"); } } // namespace react } // namespace facebook @@ -442,22 +442,6 @@ Map { #import \\"SampleSpec.h\\" -namespace facebook { - namespace react { - - static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { - return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); - } - - NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) - : ObjCTurboModule(params) { - - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; - - } - } // namespace react -} // namespace facebook - namespace facebook { namespace react { @@ -473,55 +457,18 @@ namespace facebook { } } // namespace react } // namespace facebook -", -} -`; - -exports[`GenerateModuleMm can generate fixture TWO_MODULES_SAME_FILE 1`] = ` -Map { - "SampleSpec-generated.mm" => "/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by codegen project: GenerateModuleObjCpp - * - * We create an umbrella header (and corresponding implementation) here since - * Cxx compilation in BUCK has a limitation: source-code producing genrule()s - * must have a single output. More files => more genrule()s => slower builds. - */ - -#import \\"SampleSpec.h\\" - namespace facebook { namespace react { - static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + static facebook::jsi::Value __hostFunction_NativeSampleTurboModule2SpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); } - NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + NativeSampleTurboModule2SpecJSI::NativeSampleTurboModule2SpecJSI(const ObjCTurboModule::InitParams ¶ms) : ObjCTurboModule(params) { - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; - - } - } // namespace react -} // namespace facebook - -namespace facebook { - namespace react { - - static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { - return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); - } - - NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) - : ObjCTurboModule(params) { - - methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; + methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModule2SpecJSI_voidFunc}; } } // namespace react