From 3fb22e7340bfe0e7540670b20aba63c8791fbc17 Mon Sep 17 00:00:00 2001 From: Siddarth Kumar Date: Sun, 30 Jul 2023 09:58:51 +0530 Subject: [PATCH] add `getPaperTopLevelNameDeprecated` to parsers --- .../src/parsers/flow/components/events.js | 4 +--- packages/react-native-codegen/src/parsers/flow/parser.js | 6 ++++++ packages/react-native-codegen/src/parsers/parser.js | 7 +++++++ packages/react-native-codegen/src/parsers/parserMock.js | 6 ++++++ .../src/parsers/typescript/components/events.js | 4 +--- .../react-native-codegen/src/parsers/typescript/parser.js | 6 ++++++ 6 files changed, 27 insertions(+), 6 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 f0fd64e4eb187f..d7dbbe4d98d15d 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/events.js +++ b/packages/react-native-codegen/src/parsers/flow/components/events.js @@ -189,9 +189,7 @@ function findEventArgumentsAndType( } else if (name === 'BubblingEventHandler' || name === 'DirectEventHandler') { const eventType = name === 'BubblingEventHandler' ? 'bubble' : 'direct'; const paperTopLevelNameDeprecated = - typeAnnotation.typeParameters.params.length > 1 - ? typeAnnotation.typeParameters.params[1].value - : null; + parser.getPaperTopLevelNameDeprecated(typeAnnotation); if ( typeAnnotation.typeParameters.params[0].type === parser.nullLiteralTypeAnnotation diff --git a/packages/react-native-codegen/src/parsers/flow/parser.js b/packages/react-native-codegen/src/parsers/flow/parser.js index 676a206588dad5..f6d565b75382d3 100644 --- a/packages/react-native-codegen/src/parsers/flow/parser.js +++ b/packages/react-native-codegen/src/parsers/flow/parser.js @@ -543,6 +543,12 @@ class FlowParser implements Parser { getObjectProperties(typeAnnotation: $FlowFixMe): $FlowFixMe { return typeAnnotation.properties; } + + getPaperTopLevelNameDeprecated(typeAnnotation: $FlowFixMe): $FlowFixMe { + return typeAnnotation.typeParameters.params.length > 1 + ? typeAnnotation.typeParameters.params[1].value + : null; + } } module.exports = { diff --git a/packages/react-native-codegen/src/parsers/parser.js b/packages/react-native-codegen/src/parsers/parser.js index 98901b41755c3b..8128b92db73ce5 100644 --- a/packages/react-native-codegen/src/parsers/parser.js +++ b/packages/react-native-codegen/src/parsers/parser.js @@ -414,4 +414,11 @@ export interface Parser { * @returns: the properties of an object represented by a type annotation. */ getObjectProperties(typeAnnotation: $FlowFixMe): $FlowFixMe; + + /** + * Given a type annotation, it returns top level name in the AST if it exists else returns null. + * @parameter typeAnnotation: the annotation for a type in the AST. + * @returns: the top level name properties in the AST if it exists else null. + */ + getPaperTopLevelNameDeprecated(typeAnnotation: $FlowFixMe): $FlowFixMe; } diff --git a/packages/react-native-codegen/src/parsers/parserMock.js b/packages/react-native-codegen/src/parsers/parserMock.js index 6e5f78de77da53..d5334a956779ec 100644 --- a/packages/react-native-codegen/src/parsers/parserMock.js +++ b/packages/react-native-codegen/src/parsers/parserMock.js @@ -482,4 +482,10 @@ export class MockedParser implements Parser { getObjectProperties(typeAnnotation: $FlowFixMe): $FlowFixMe { return typeAnnotation.properties; } + + getPaperTopLevelNameDeprecated(typeAnnotation: $FlowFixMe): $FlowFixMe { + return typeAnnotation.typeParameters.params.length > 1 + ? typeAnnotation.typeParameters.params[1].value + : null; + } } 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 230b9b512a6b7f..2f05079c4e5f25 100644 --- a/packages/react-native-codegen/src/parsers/typescript/components/events.js +++ b/packages/react-native-codegen/src/parsers/typescript/components/events.js @@ -198,9 +198,7 @@ function findEventArgumentsAndType( } else if (name === 'BubblingEventHandler' || name === 'DirectEventHandler') { const eventType = name === 'BubblingEventHandler' ? 'bubble' : 'direct'; const paperTopLevelNameDeprecated = - typeAnnotation.typeParameters.params.length > 1 - ? typeAnnotation.typeParameters.params[1].literal.value - : null; + parser.getPaperTopLevelNameDeprecated(typeAnnotation); switch (typeAnnotation.typeParameters.params[0].type) { case parser.nullLiteralTypeAnnotation: diff --git a/packages/react-native-codegen/src/parsers/typescript/parser.js b/packages/react-native-codegen/src/parsers/typescript/parser.js index 4a18396b5c9625..1e3cd59f1dc5cb 100644 --- a/packages/react-native-codegen/src/parsers/typescript/parser.js +++ b/packages/react-native-codegen/src/parsers/typescript/parser.js @@ -557,6 +557,12 @@ class TypeScriptParser implements Parser { getObjectProperties(typeAnnotation: $FlowFixMe): $FlowFixMe { return typeAnnotation.members; } + + getPaperTopLevelNameDeprecated(typeAnnotation: $FlowFixMe): $FlowFixMe { + return typeAnnotation.typeParameters.params.length > 1 + ? typeAnnotation.typeParameters.params[1].literal.value + : null; + } } module.exports = {