From a4978823841177ff70959e28ed8343b78fb14c20 Mon Sep 17 00:00:00 2001 From: Siddarth Kumar Date: Tue, 6 Jun 2023 02:31:51 -0700 Subject: [PATCH] Add function `emitMixedProp` to parser-primitives (#37608) Summary: [Codegen 132] This PR introduces `emitMixedProp` to parser-primitives and abstracts the logic out of typescript and parser events as requested on https://github.com/facebook/react-native/issues/34872 ## Changelog: [Internal] [Changed] - Add emitMixedProp to parser-primitives and update usages. Pull Request resolved: https://github.com/facebook/react-native/pull/37608 Test Plan: Run yarn jest react-native-codegen and ensure CI is green ## Screenshot of tests passing locally: Screenshot 2023-05-28 at 12 46 49 PM Reviewed By: dmytrorykun Differential Revision: D46275638 Pulled By: cipolleschi fbshipit-source-id: 803d82055c7925e49aca1f408b5c7a50c687349a --- .../src/parsers/flow/components/events.js | 9 ++------- .../src/parsers/parsers-primitives.js | 14 ++++++++++++++ .../src/parsers/typescript/components/events.js | 9 ++------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/react-native-codegen/src/parsers/flow/components/events.js b/packages/react-native-codegen/src/parsers/flow/components/events.js index d4fabd716383db..71c865dce29d12 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/events.js +++ b/packages/react-native-codegen/src/parsers/flow/components/events.js @@ -27,6 +27,7 @@ const { emitBoolProp, emitDoubleProp, emitFloatProp, + emitMixedProp, emitStringProp, emitInt32Prop, } = require('../../parsers-primitives'); @@ -80,13 +81,7 @@ function getPropertyType( }, }; case 'UnsafeMixed': - return { - name, - optional, - typeAnnotation: { - type: 'MixedTypeAnnotation', - }, - }; + return emitMixedProp(name, optional); case 'ArrayTypeAnnotation': case '$ReadOnlyArray': return { diff --git a/packages/react-native-codegen/src/parsers/parsers-primitives.js b/packages/react-native-codegen/src/parsers/parsers-primitives.js index 35835ae6705643..db5668cc5706a4 100644 --- a/packages/react-native-codegen/src/parsers/parsers-primitives.js +++ b/packages/react-native-codegen/src/parsers/parsers-primitives.js @@ -644,6 +644,19 @@ function emitBoolProp( }; } +function emitMixedProp( + name: string, + optional: boolean, +): NamedShape { + return { + name, + optional, + typeAnnotation: { + type: 'MixedTypeAnnotation', + }, + }; +} + module.exports = { emitArrayType, emitBoolean, @@ -655,6 +668,7 @@ module.exports = { emitFunction, emitInt32, emitInt32Prop, + emitMixedProp, emitNumber, emitGenericObject, emitDictionary, diff --git a/packages/react-native-codegen/src/parsers/typescript/components/events.js b/packages/react-native-codegen/src/parsers/typescript/components/events.js index fae87b08dab878..5d12804238e1b1 100644 --- a/packages/react-native-codegen/src/parsers/typescript/components/events.js +++ b/packages/react-native-codegen/src/parsers/typescript/components/events.js @@ -29,6 +29,7 @@ const { emitBoolProp, emitDoubleProp, emitFloatProp, + emitMixedProp, emitStringProp, emitInt32Prop, } = require('../../parsers-primitives'); @@ -82,13 +83,7 @@ function getPropertyType( }, }; case 'UnsafeMixed': - return { - name, - optional, - typeAnnotation: { - type: 'MixedTypeAnnotation', - }, - }; + return emitMixedProp(name, optional); case 'TSArrayType': return { name,