Skip to content

Commit 942bd61

Browse files
tarunrajputfacebook-github-bot
authored andcommitted
extract buildPropertiesForEvent to parsers-commons (#37714)
Summary: ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> Part of #34872 > Extract buildPropertiesForEvent into parsers-commons.js file. Use the code from either [Flow](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/flow/components/events.js#L258-L272) or [TypeScript](https://github.com/facebook/react-native/blob/d8ced6f8953cd896471983714e722caf50783960/packages/react-native-codegen/src/parsers/typescript/components/events.js#L277-L288) which now should be equal. Delete the original ones and use the newly created method instead of those. [Internal][Changed]: Extract buildPropertiesForEvent and update callsites Pull Request resolved: #37714 Test Plan: `yarn test` Reviewed By: cipolleschi Differential Revision: D46514046 Pulled By: rshest fbshipit-source-id: 120e9a09180735f8eeb0419b16eac566d5dcc6ba
1 parent 3250725 commit 942bd61

File tree

3 files changed

+40
-40
lines changed

3 files changed

+40
-40
lines changed

packages/react-native-codegen/src/parsers/flow/components/events.js

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ const {
2222
throwIfBubblingTypeIsNull,
2323
throwIfArgumentPropsAreNull,
2424
} = require('../../error-utils');
25-
const {getEventArgument} = require('../../parsers-commons');
25+
const {
26+
getEventArgument,
27+
buildPropertiesForEvent,
28+
} = require('../../parsers-commons');
2629
const {
2730
emitBoolProp,
2831
emitDoubleProp,
@@ -67,7 +70,7 @@ function getPropertyType(
6770
typeAnnotation: {
6871
type: 'ObjectTypeAnnotation',
6972
properties: typeAnnotation.properties.map(member =>
70-
buildPropertiesForEvent(member, parser),
73+
buildPropertiesForEvent(member, parser, getPropertyType),
7174
),
7275
},
7376
};
@@ -126,7 +129,7 @@ function extractArrayElementType(
126129
return {
127130
type: 'ObjectTypeAnnotation',
128131
properties: typeAnnotation.properties.map(member =>
129-
buildPropertiesForEvent(member, parser),
132+
buildPropertiesForEvent(member, parser, getPropertyType),
130133
),
131134
};
132135
case 'ArrayTypeAnnotation':
@@ -229,19 +232,6 @@ function findEventArgumentsAndType(
229232
}
230233
}
231234

232-
function buildPropertiesForEvent(
233-
/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
234-
* LTI update could not be added via codemod */
235-
property,
236-
parser: Parser,
237-
): NamedShape<EventTypeAnnotation> {
238-
const name = property.key.name;
239-
const optional = parser.isOptionalProperty(property);
240-
const typeAnnotation = parser.getTypeAnnotationFromProperty(property);
241-
242-
return getPropertyType(name, optional, typeAnnotation, parser);
243-
}
244-
245235
function buildEventSchema(
246236
types: TypeMap,
247237
property: EventTypeAST,
@@ -283,8 +273,8 @@ function buildEventSchema(
283273
type: 'EventTypeAnnotation',
284274
argument: getEventArgument(
285275
nonNullableArgumentProps,
286-
buildPropertiesForEvent,
287276
parser,
277+
getPropertyType,
288278
),
289279
},
290280
};
@@ -298,8 +288,8 @@ function buildEventSchema(
298288
type: 'EventTypeAnnotation',
299289
argument: getEventArgument(
300290
nonNullableArgumentProps,
301-
buildPropertiesForEvent,
302291
parser,
292+
getPropertyType,
303293
),
304294
},
305295
};

packages/react-native-codegen/src/parsers/parsers-commons.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -894,16 +894,18 @@ function buildPropSchema(
894894
* LTI update could not be added via codemod */
895895
function getEventArgument(
896896
argumentProps: PropAST,
897-
buildPropertiesForEvent: (
898-
property: PropAST,
897+
parser: Parser,
898+
getPropertyType: (
899+
name: $FlowFixMe,
900+
optional: boolean,
901+
typeAnnotation: $FlowFixMe,
899902
parser: Parser,
900903
) => NamedShape<EventTypeAnnotation>,
901-
parser: Parser,
902904
): ObjectTypeAnnotation<EventTypeAnnotation> {
903905
return {
904906
type: 'ObjectTypeAnnotation',
905907
properties: argumentProps.map(member =>
906-
buildPropertiesForEvent(member, parser),
908+
buildPropertiesForEvent(member, parser, getPropertyType),
907909
),
908910
};
909911
}
@@ -1053,6 +1055,23 @@ function handleGenericTypeAnnotation(
10531055
};
10541056
}
10551057

1058+
function buildPropertiesForEvent(
1059+
property: $FlowFixMe,
1060+
parser: Parser,
1061+
getPropertyType: (
1062+
name: $FlowFixMe,
1063+
optional: boolean,
1064+
typeAnnotation: $FlowFixMe,
1065+
parser: Parser,
1066+
) => NamedShape<EventTypeAnnotation>,
1067+
): NamedShape<EventTypeAnnotation> {
1068+
const name = property.key.name;
1069+
const optional = parser.isOptionalProperty(property);
1070+
const typeAnnotation = parser.getTypeAnnotationFromProperty(property);
1071+
1072+
return getPropertyType(name, optional, typeAnnotation, parser);
1073+
}
1074+
10561075
module.exports = {
10571076
wrapModuleSchema,
10581077
unwrapNullable,
@@ -1079,4 +1098,5 @@ module.exports = {
10791098
getCommandProperties,
10801099
handleGenericTypeAnnotation,
10811100
getTypeResolutionStatus,
1101+
buildPropertiesForEvent,
10821102
};

packages/react-native-codegen/src/parsers/typescript/components/events.js

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ const {
2424
throwIfBubblingTypeIsNull,
2525
throwIfArgumentPropsAreNull,
2626
} = require('../../error-utils');
27-
const {getEventArgument} = require('../../parsers-commons');
27+
const {
28+
getEventArgument,
29+
buildPropertiesForEvent,
30+
} = require('../../parsers-commons');
2831
const {
2932
emitBoolProp,
3033
emitDoubleProp,
@@ -69,7 +72,7 @@ function getPropertyType(
6972
typeAnnotation: {
7073
type: 'ObjectTypeAnnotation',
7174
properties: typeAnnotation.members.map(member =>
72-
buildPropertiesForEvent(member, parser),
75+
buildPropertiesForEvent(member, parser, getPropertyType),
7376
),
7477
},
7578
};
@@ -136,7 +139,7 @@ function extractArrayElementType(
136139
return {
137140
type: 'ObjectTypeAnnotation',
138141
properties: typeAnnotation.members.map(member =>
139-
buildPropertiesForEvent(member, parser),
142+
buildPropertiesForEvent(member, parser, getPropertyType),
140143
),
141144
};
142145
case 'TSArrayType':
@@ -247,19 +250,6 @@ function findEventArgumentsAndType(
247250
}
248251
}
249252

250-
function buildPropertiesForEvent(
251-
/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
252-
* LTI update could not be added via codemod */
253-
property,
254-
parser: Parser,
255-
): NamedShape<EventTypeAnnotation> {
256-
const name = property.key.name;
257-
const optional = parser.isOptionalProperty(property);
258-
const typeAnnotation = parser.getTypeAnnotationFromProperty(property);
259-
260-
return getPropertyType(name, optional, typeAnnotation, parser);
261-
}
262-
263253
// $FlowFixMe[unclear-type] TODO(T108222691): Use flow-types for @babel/parser
264254
type EventTypeAST = Object;
265255

@@ -296,8 +286,8 @@ function buildEventSchema(
296286
type: 'EventTypeAnnotation',
297287
argument: getEventArgument(
298288
nonNullableArgumentProps,
299-
buildPropertiesForEvent,
300289
parser,
290+
getPropertyType,
301291
),
302292
},
303293
};
@@ -311,8 +301,8 @@ function buildEventSchema(
311301
type: 'EventTypeAnnotation',
312302
argument: getEventArgument(
313303
nonNullableArgumentProps,
314-
buildPropertiesForEvent,
315304
parser,
305+
getPropertyType,
316306
),
317307
},
318308
};

0 commit comments

Comments
 (0)