From 851037d144ff080eb0cf648e4fcc1894a83a0c1f Mon Sep 17 00:00:00 2001 From: Eli White Date: Mon, 26 Aug 2024 17:34:40 -0700 Subject: [PATCH] Dedupe trivial types between modules and components (#46220) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/46220 We'll want to eventually combine the module and component capabilities more, but these are at least the trivially shared ones. More work is required to merge the more complex object types. This change also makes it more clear where capabilities are different between native modules and components Changelog: [Internal] Reviewed By: makovkastar Differential Revision: D61740140 fbshipit-source-id: 9e7bf740cf6cd2431be8cad822ec69903dbbc71f --- .../react-native-codegen/src/CodegenSchema.js | 40 +++++-------------- .../GenerateModuleObjCpp/StructCollector.js | 20 +++++----- .../src/parsers/parsers-primitives.js | 6 +-- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/packages/react-native-codegen/src/CodegenSchema.js b/packages/react-native-codegen/src/CodegenSchema.js index 25dc03eff64..8d18b0472de 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -286,30 +286,10 @@ export type NativeModuleArrayTypeAnnotation< elementType?: T, }>; -export type NativeModuleStringTypeAnnotation = $ReadOnly<{ - type: 'StringTypeAnnotation', -}>; - export type NativeModuleNumberTypeAnnotation = $ReadOnly<{ type: 'NumberTypeAnnotation', }>; -export type NativeModuleInt32TypeAnnotation = $ReadOnly<{ - type: 'Int32TypeAnnotation', -}>; - -export type NativeModuleDoubleTypeAnnotation = $ReadOnly<{ - type: 'DoubleTypeAnnotation', -}>; - -export type NativeModuleFloatTypeAnnotation = $ReadOnly<{ - type: 'FloatTypeAnnotation', -}>; - -export type NativeModuleBooleanTypeAnnotation = $ReadOnly<{ - type: 'BooleanTypeAnnotation', -}>; - export type NativeModuleEnumMembers = $ReadOnlyArray< $ReadOnly<{ name: string, @@ -367,12 +347,12 @@ export type NativeModuleMixedTypeAnnotation = $ReadOnly<{ }>; type NativeModuleEventEmitterBaseTypeAnnotation = - | NativeModuleBooleanTypeAnnotation - | NativeModuleDoubleTypeAnnotation - | NativeModuleFloatTypeAnnotation - | NativeModuleInt32TypeAnnotation + | BooleanTypeAnnotation + | DoubleTypeAnnotation + | FloatTypeAnnotation + | Int32TypeAnnotation | NativeModuleNumberTypeAnnotation - | NativeModuleStringTypeAnnotation + | StringTypeAnnotation | NativeModuleTypeAliasTypeAnnotation | NativeModuleGenericObjectTypeAnnotation | VoidTypeAnnotation; @@ -385,12 +365,12 @@ export type NativeModuleEventEmitterTypeAnnotation = }; export type NativeModuleBaseTypeAnnotation = - | NativeModuleStringTypeAnnotation + | StringTypeAnnotation | NativeModuleNumberTypeAnnotation - | NativeModuleInt32TypeAnnotation - | NativeModuleDoubleTypeAnnotation - | NativeModuleFloatTypeAnnotation - | NativeModuleBooleanTypeAnnotation + | Int32TypeAnnotation + | DoubleTypeAnnotation + | FloatTypeAnnotation + | BooleanTypeAnnotation | NativeModuleEnumDeclaration | NativeModuleGenericObjectTypeAnnotation | ReservedTypeAnnotation diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/StructCollector.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/StructCollector.js index d85d093948a..8df8ec47dd6 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/StructCollector.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/StructCollector.js @@ -13,15 +13,15 @@ import type { NativeModuleArrayTypeAnnotation, NativeModuleBaseTypeAnnotation, - NativeModuleBooleanTypeAnnotation, - NativeModuleDoubleTypeAnnotation, + BooleanTypeAnnotation, + DoubleTypeAnnotation, NativeModuleEnumDeclaration, - NativeModuleFloatTypeAnnotation, + FloatTypeAnnotation, NativeModuleGenericObjectTypeAnnotation, - NativeModuleInt32TypeAnnotation, + Int32TypeAnnotation, NativeModuleNumberTypeAnnotation, NativeModuleObjectTypeAnnotation, - NativeModuleStringTypeAnnotation, + StringTypeAnnotation, NativeModuleTypeAliasTypeAnnotation, Nullable, ReservedTypeAnnotation, @@ -57,12 +57,12 @@ export type StructProperty = $ReadOnly<{ }>; export type StructTypeAnnotation = - | NativeModuleStringTypeAnnotation + | StringTypeAnnotation | NativeModuleNumberTypeAnnotation - | NativeModuleInt32TypeAnnotation - | NativeModuleDoubleTypeAnnotation - | NativeModuleFloatTypeAnnotation - | NativeModuleBooleanTypeAnnotation + | Int32TypeAnnotation + | DoubleTypeAnnotation + | FloatTypeAnnotation + | BooleanTypeAnnotation | NativeModuleEnumDeclaration | NativeModuleGenericObjectTypeAnnotation | ReservedTypeAnnotation diff --git a/packages/react-native-codegen/src/parsers/parsers-primitives.js b/packages/react-native-codegen/src/parsers/parsers-primitives.js index ca967120cb0..8c05216f841 100644 --- a/packages/react-native-codegen/src/parsers/parsers-primitives.js +++ b/packages/react-native-codegen/src/parsers/parsers-primitives.js @@ -20,7 +20,7 @@ import type { NativeModuleBaseTypeAnnotation, NativeModuleEnumDeclaration, NativeModuleEnumMap, - NativeModuleFloatTypeAnnotation, + FloatTypeAnnotation, NativeModuleFunctionTypeAnnotation, NativeModuleGenericObjectTypeAnnotation, NativeModuleMixedTypeAnnotation, @@ -368,9 +368,7 @@ function emitObject( }); } -function emitFloat( - nullable: boolean, -): Nullable { +function emitFloat(nullable: boolean): Nullable { return wrapNullable(nullable, { type: 'FloatTypeAnnotation', });