@react-native/codegen 0.72.1 → 0.72.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/lib/CodegenSchema.d.ts +348 -0
  2. package/lib/CodegenSchema.js.flow +31 -3
  3. package/lib/SchemaValidator.d.ts +11 -0
  4. package/lib/cli/combine/combine-js-to-schema.js +8 -8
  5. package/lib/cli/combine/combine-js-to-schema.js.flow +8 -7
  6. package/lib/cli/parser/parser.js +8 -15
  7. package/lib/cli/parser/parser.js.flow +8 -14
  8. package/lib/generators/Utils.js +16 -0
  9. package/lib/generators/Utils.js.flow +20 -0
  10. package/lib/generators/__test_fixtures__/fixtures.js +2 -1
  11. package/lib/generators/__test_fixtures__/fixtures.js.flow +2 -1
  12. package/lib/generators/components/ComponentsGeneratorUtils.js +10 -1
  13. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +12 -2
  14. package/lib/generators/components/CppHelpers.js +8 -15
  15. package/lib/generators/components/CppHelpers.js.flow +8 -19
  16. package/lib/generators/components/GenerateEventEmitterCpp.js +7 -3
  17. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +7 -3
  18. package/lib/generators/components/GenerateEventEmitterH.js +2 -2
  19. package/lib/generators/components/GenerateEventEmitterH.js.flow +1 -2
  20. package/lib/generators/components/GeneratePropsH.js +3 -4
  21. package/lib/generators/components/GeneratePropsH.js.flow +2 -4
  22. package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
  23. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
  24. package/lib/generators/components/GeneratePropsJavaInterface.js +3 -0
  25. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +3 -0
  26. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +8 -0
  27. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +12 -0
  28. package/lib/generators/components/GenerateTests.js +3 -2
  29. package/lib/generators/components/GenerateTests.js.flow +3 -1
  30. package/lib/generators/components/GenerateViewConfigJs.js +5 -2
  31. package/lib/generators/components/GenerateViewConfigJs.js.flow +5 -2
  32. package/lib/generators/components/JavaHelpers.js +9 -0
  33. package/lib/generators/components/JavaHelpers.js.flow +12 -1
  34. package/lib/generators/components/__test_fixtures__/fixtures.js +41 -0
  35. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +42 -0
  36. package/lib/generators/modules/GenerateModuleCpp.js +9 -4
  37. package/lib/generators/modules/GenerateModuleCpp.js.flow +11 -3
  38. package/lib/generators/modules/GenerateModuleH.js +185 -33
  39. package/lib/generators/modules/GenerateModuleH.js.flow +203 -25
  40. package/lib/generators/modules/GenerateModuleJavaSpec.js +2 -2
  41. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +5 -5
  42. package/lib/generators/modules/GenerateModuleJniCpp.js +2 -2
  43. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +5 -5
  44. package/lib/generators/modules/GenerateModuleObjCpp/index.js +2 -2
  45. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +2 -2
  46. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +2 -2
  47. package/lib/generators/modules/Utils.js +4 -0
  48. package/lib/generators/modules/Utils.js.flow +6 -0
  49. package/lib/generators/modules/__test_fixtures__/fixtures.js +152 -10
  50. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +152 -10
  51. package/lib/parsers/error-utils.js +42 -19
  52. package/lib/parsers/error-utils.js.flow +46 -19
  53. package/lib/parsers/errors.d.ts +10 -0
  54. package/lib/parsers/errors.js +9 -29
  55. package/lib/parsers/errors.js.flow +2 -20
  56. package/lib/parsers/flow/Visitor.js +37 -0
  57. package/lib/parsers/flow/Visitor.js.flow +41 -0
  58. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +20 -2
  59. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +20 -2
  60. package/lib/parsers/flow/components/commands.js +3 -0
  61. package/lib/parsers/flow/components/commands.js.flow +2 -1
  62. package/lib/parsers/flow/components/componentsUtils.js +10 -0
  63. package/lib/parsers/flow/components/componentsUtils.js.flow +11 -1
  64. package/lib/parsers/flow/components/events.js.flow +1 -1
  65. package/lib/parsers/flow/components/extends.js.flow +1 -1
  66. package/lib/parsers/flow/components/index.js +16 -20
  67. package/lib/parsers/flow/components/index.js.flow +8 -7
  68. package/lib/parsers/flow/components/options.js.flow +1 -1
  69. package/lib/parsers/flow/components/props.js.flow +1 -1
  70. package/lib/parsers/flow/modules/__test_fixtures__/failures.js +54 -0
  71. package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +56 -0
  72. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +64 -1
  73. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +66 -1
  74. package/lib/parsers/flow/modules/index.js +112 -48
  75. package/lib/parsers/flow/modules/index.js.flow +115 -44
  76. package/lib/parsers/flow/parser.d.ts +10 -0
  77. package/lib/parsers/flow/parser.js +173 -32
  78. package/lib/parsers/flow/parser.js.flow +201 -24
  79. package/lib/parsers/flow/utils.js +33 -57
  80. package/lib/parsers/flow/utils.js.flow +37 -60
  81. package/lib/parsers/parser.d.ts +17 -0
  82. package/lib/parsers/parser.js.flow +124 -17
  83. package/lib/parsers/parserMock.js +101 -30
  84. package/lib/parsers/parserMock.js.flow +139 -24
  85. package/lib/parsers/parsers-commons.js +121 -119
  86. package/lib/parsers/parsers-commons.js.flow +136 -131
  87. package/lib/parsers/parsers-primitives.js +75 -12
  88. package/lib/parsers/parsers-primitives.js.flow +92 -13
  89. package/lib/parsers/schema/index.d.ts +10 -0
  90. package/lib/parsers/{typescript/components/schema.js.flow → schema.js.flow} +1 -1
  91. package/lib/parsers/typescript/Visitor.js +42 -0
  92. package/lib/parsers/typescript/Visitor.js.flow +47 -0
  93. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +22 -0
  94. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +22 -0
  95. package/lib/parsers/typescript/components/commands.js +3 -0
  96. package/lib/parsers/typescript/components/commands.js.flow +2 -1
  97. package/lib/parsers/typescript/components/componentsUtils.js +5 -0
  98. package/lib/parsers/typescript/components/componentsUtils.js.flow +6 -1
  99. package/lib/parsers/typescript/components/events.js.flow +1 -1
  100. package/lib/parsers/typescript/components/extends.js.flow +1 -1
  101. package/lib/parsers/typescript/components/index.js +15 -19
  102. package/lib/parsers/typescript/components/index.js.flow +8 -7
  103. package/lib/parsers/typescript/components/options.js.flow +1 -1
  104. package/lib/parsers/typescript/components/props.js.flow +1 -1
  105. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +52 -0
  106. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +54 -0
  107. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +142 -0
  108. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +146 -0
  109. package/lib/parsers/typescript/modules/index.js +276 -110
  110. package/lib/parsers/typescript/modules/index.js.flow +237 -68
  111. package/lib/parsers/typescript/parser.d.ts +10 -0
  112. package/lib/parsers/typescript/parser.js +175 -25
  113. package/lib/parsers/typescript/parser.js.flow +184 -26
  114. package/lib/parsers/typescript/utils.js +40 -51
  115. package/lib/parsers/typescript/utils.js.flow +44 -55
  116. package/lib/parsers/utils.js +0 -125
  117. package/lib/parsers/utils.js.flow +3 -70
  118. package/package.json +4 -1
  119. package/lib/parsers/flow/components/schema.js +0 -106
  120. package/lib/parsers/flow/components/schema.js.flow +0 -62
  121. package/lib/parsers/flow/index.js +0 -80
  122. package/lib/parsers/flow/index.js.flow +0 -85
  123. package/lib/parsers/typescript/index.js +0 -85
  124. package/lib/parsers/typescript/index.js.flow +0 -94
  125. /package/lib/parsers/{typescript/components/schema.js → schema.js} +0 -0
@@ -13,6 +13,7 @@
13
13
  import type {
14
14
  NamedShape,
15
15
  NativeModuleAliasMap,
16
+ NativeModuleEnumMap,
16
17
  NativeModuleBaseTypeAnnotation,
17
18
  NativeModulePropertyShape,
18
19
  NativeModuleTypeAnnotation,
@@ -20,16 +21,23 @@ import type {
20
21
  Nullable,
21
22
  } from '../../../CodegenSchema';
22
23
 
23
- import type {ParserErrorCapturer, TypeDeclarationMap} from '../../utils';
24
+ import type {Parser} from '../../parser';
25
+ import type {
26
+ ParserErrorCapturer,
27
+ TypeResolutionStatus,
28
+ TypeDeclarationMap,
29
+ } from '../../utils';
30
+ const {flattenIntersectionType} = require('../parseTopLevelType');
31
+ const {flattenProperties} = require('../components/componentsUtils');
24
32
 
25
33
  const {visit, isModuleRegistryCall, verifyPlatforms} = require('../../utils');
26
- const {resolveTypeAnnotation, getTypes} = require('../utils');
34
+ const {resolveTypeAnnotation} = require('../utils');
27
35
 
28
36
  const {
29
37
  parseObjectProperty,
30
- translateDefault,
31
38
  buildPropertySchema,
32
39
  } = require('../../parsers-commons');
40
+ const {typeEnumResolution} = require('../../parsers-primitives');
33
41
 
34
42
  const {
35
43
  emitArrayType,
@@ -39,6 +47,7 @@ const {
39
47
  emitFunction,
40
48
  emitNumber,
41
49
  emitInt32,
50
+ emitGenericObject,
42
51
  emitObject,
43
52
  emitPromise,
44
53
  emitRootTag,
@@ -54,7 +63,6 @@ const {
54
63
  const {
55
64
  UnsupportedGenericParserError,
56
65
  UnsupportedTypeAnnotationParserError,
57
- IncorrectModuleRegistryCallArgumentTypeParserError,
58
66
  } = require('../../errors');
59
67
 
60
68
  const {
@@ -66,12 +74,70 @@ const {
66
74
  throwIfMoreThanOneModuleRegistryCalls,
67
75
  throwIfMoreThanOneModuleInterfaceParserError,
68
76
  throwIfIncorrectModuleRegistryCallTypeParameterParserError,
77
+ throwIfIncorrectModuleRegistryCallArgument,
78
+ throwIfPartialNotAnnotatingTypeParameter,
79
+ throwIfPartialWithMoreParameter,
69
80
  } = require('../../error-utils');
70
81
 
71
- const {TypeScriptParser} = require('../parser');
72
-
73
82
  const language = 'TypeScript';
74
- const parser = new TypeScriptParser();
83
+
84
+ function translateObjectTypeAnnotation(
85
+ hasteModuleName: string,
86
+ /**
87
+ * TODO(T108222691): Use flow-types for @babel/parser
88
+ */
89
+ nullable: boolean,
90
+ objectMembers: $ReadOnlyArray<$FlowFixMe>,
91
+ typeResolutionStatus: TypeResolutionStatus,
92
+ baseTypes: $ReadOnlyArray<string>,
93
+ types: TypeDeclarationMap,
94
+ aliasMap: {...NativeModuleAliasMap},
95
+ enumMap: {...NativeModuleEnumMap},
96
+ tryParse: ParserErrorCapturer,
97
+ cxxOnly: boolean,
98
+ parser: Parser,
99
+ ): Nullable<NativeModuleTypeAnnotation> {
100
+ // $FlowFixMe[missing-type-arg]
101
+ const properties = objectMembers
102
+ .map<?NamedShape<Nullable<NativeModuleBaseTypeAnnotation>>>(property => {
103
+ return tryParse(() => {
104
+ return parseObjectProperty(
105
+ property,
106
+ hasteModuleName,
107
+ types,
108
+ aliasMap,
109
+ enumMap,
110
+ tryParse,
111
+ cxxOnly,
112
+ nullable,
113
+ translateTypeAnnotation,
114
+ parser,
115
+ );
116
+ });
117
+ })
118
+ .filter(Boolean);
119
+
120
+ let objectTypeAnnotation;
121
+ if (baseTypes.length === 0) {
122
+ objectTypeAnnotation = {
123
+ type: 'ObjectTypeAnnotation',
124
+ properties,
125
+ };
126
+ } else {
127
+ objectTypeAnnotation = {
128
+ type: 'ObjectTypeAnnotation',
129
+ properties,
130
+ baseTypes,
131
+ };
132
+ }
133
+
134
+ return typeAliasResolution(
135
+ typeResolutionStatus,
136
+ objectTypeAnnotation,
137
+ aliasMap,
138
+ nullable,
139
+ );
140
+ }
75
141
 
76
142
  function translateTypeAnnotation(
77
143
  hasteModuleName: string,
@@ -81,10 +147,12 @@ function translateTypeAnnotation(
81
147
  typeScriptTypeAnnotation: $FlowFixMe,
82
148
  types: TypeDeclarationMap,
83
149
  aliasMap: {...NativeModuleAliasMap},
150
+ enumMap: {...NativeModuleEnumMap},
84
151
  tryParse: ParserErrorCapturer,
85
152
  cxxOnly: boolean,
153
+ parser: Parser,
86
154
  ): Nullable<NativeModuleTypeAnnotation> {
87
- const {nullable, typeAnnotation, typeAliasResolutionStatus} =
155
+ const {nullable, typeAnnotation, typeResolutionStatus} =
88
156
  resolveTypeAnnotation(typeScriptTypeAnnotation, types);
89
157
 
90
158
  switch (typeAnnotation.type) {
@@ -93,12 +161,13 @@ function translateTypeAnnotation(
93
161
  hasteModuleName,
94
162
  types,
95
163
  aliasMap,
164
+ enumMap,
96
165
  cxxOnly,
97
166
  'Array',
98
167
  typeAnnotation.elementType,
99
168
  nullable,
100
- language,
101
169
  translateTypeAnnotation,
170
+ parser,
102
171
  );
103
172
  }
104
173
  case 'TSTypeOperator': {
@@ -110,12 +179,13 @@ function translateTypeAnnotation(
110
179
  hasteModuleName,
111
180
  types,
112
181
  aliasMap,
182
+ enumMap,
113
183
  cxxOnly,
114
184
  'ReadonlyArray',
115
185
  typeAnnotation.typeAnnotation.elementType,
116
186
  nullable,
117
- language,
118
187
  translateTypeAnnotation,
188
+ parser,
119
189
  );
120
190
  } else {
121
191
  throw new UnsupportedGenericParserError(
@@ -138,6 +208,7 @@ function translateTypeAnnotation(
138
208
  nullable,
139
209
  types,
140
210
  aliasMap,
211
+ enumMap,
141
212
  tryParse,
142
213
  cxxOnly,
143
214
  translateTypeAnnotation,
@@ -151,6 +222,7 @@ function translateTypeAnnotation(
151
222
  parser,
152
223
  types,
153
224
  aliasMap,
225
+ enumMap,
154
226
  cxxOnly,
155
227
  nullable,
156
228
  translateTypeAnnotation,
@@ -170,49 +242,153 @@ function translateTypeAnnotation(
170
242
  }
171
243
  case 'UnsafeObject':
172
244
  case 'Object': {
173
- return emitObject(nullable);
245
+ return emitGenericObject(nullable);
174
246
  }
175
- default: {
176
- return translateDefault(
177
- hasteModuleName,
247
+ case 'Partial': {
248
+ throwIfPartialWithMoreParameter(typeAnnotation);
249
+
250
+ const annotatedElement = parser.extractAnnotatedElement(
251
+ typeAnnotation,
252
+ types,
253
+ );
254
+
255
+ throwIfPartialNotAnnotatingTypeParameter(
178
256
  typeAnnotation,
179
257
  types,
180
- nullable,
181
258
  parser,
182
259
  );
183
- }
184
- }
185
- }
186
- case 'TSTypeLiteral': {
187
- const objectTypeAnnotation = {
188
- type: 'ObjectTypeAnnotation',
189
- // $FlowFixMe[missing-type-arg]
190
- properties: (typeAnnotation.members: Array<$FlowFixMe>)
191
- .map<?NamedShape<Nullable<NativeModuleBaseTypeAnnotation>>>(
192
- property => {
193
- return tryParse(() => {
194
- return parseObjectProperty(
195
- property,
260
+
261
+ const properties = annotatedElement.typeAnnotation.members.map(
262
+ member => {
263
+ return {
264
+ name: member.key.name,
265
+ optional: true,
266
+ typeAnnotation: translateTypeAnnotation(
196
267
  hasteModuleName,
268
+ member.typeAnnotation.typeAnnotation,
197
269
  types,
198
270
  aliasMap,
271
+ enumMap,
199
272
  tryParse,
200
273
  cxxOnly,
201
- nullable,
202
- translateTypeAnnotation,
203
274
  parser,
204
- );
205
- });
275
+ ),
276
+ };
206
277
  },
207
- )
208
- .filter(Boolean),
209
- };
278
+ );
279
+
280
+ return emitObject(nullable, properties);
281
+ }
282
+ default: {
283
+ throw new UnsupportedGenericParserError(
284
+ hasteModuleName,
285
+ typeAnnotation,
286
+ parser,
287
+ );
288
+ }
289
+ }
290
+ }
291
+ case 'TSInterfaceDeclaration': {
292
+ const baseTypes = (typeAnnotation.extends ?? []).map(
293
+ extend => extend.expression.name,
294
+ );
295
+ for (const baseType of baseTypes) {
296
+ // ensure base types exist and appear in aliasMap
297
+ translateTypeAnnotation(
298
+ hasteModuleName,
299
+ {
300
+ type: 'TSTypeReference',
301
+ typeName: {type: 'Identifier', name: baseType},
302
+ },
303
+ types,
304
+ aliasMap,
305
+ enumMap,
306
+ tryParse,
307
+ cxxOnly,
308
+ parser,
309
+ );
310
+ }
311
+
312
+ return translateObjectTypeAnnotation(
313
+ hasteModuleName,
314
+ nullable,
315
+ flattenProperties([typeAnnotation], types),
316
+ typeResolutionStatus,
317
+ baseTypes,
318
+ types,
319
+ aliasMap,
320
+ enumMap,
321
+ tryParse,
322
+ cxxOnly,
323
+ parser,
324
+ );
325
+ }
326
+ case 'TSIntersectionType': {
327
+ return translateObjectTypeAnnotation(
328
+ hasteModuleName,
329
+ nullable,
330
+ flattenProperties(
331
+ flattenIntersectionType(typeAnnotation, types),
332
+ types,
333
+ ),
334
+ typeResolutionStatus,
335
+ [],
336
+ types,
337
+ aliasMap,
338
+ enumMap,
339
+ tryParse,
340
+ cxxOnly,
341
+ parser,
342
+ );
343
+ }
344
+ case 'TSTypeLiteral': {
345
+ // if there is TSIndexSignature, then it is a dictionary
346
+ if (typeAnnotation.members) {
347
+ const indexSignatures = typeAnnotation.members.filter(
348
+ member => member.type === 'TSIndexSignature',
349
+ );
350
+ if (indexSignatures.length > 0) {
351
+ // check the property type to prevent developers from using unsupported types
352
+ // the return value from `translateTypeAnnotation` is unused
353
+ const propertyType = indexSignatures[0].typeAnnotation;
354
+ translateTypeAnnotation(
355
+ hasteModuleName,
356
+ propertyType,
357
+ types,
358
+ aliasMap,
359
+ enumMap,
360
+ tryParse,
361
+ cxxOnly,
362
+ parser,
363
+ );
364
+ // no need to do further checking
365
+ return emitGenericObject(nullable);
366
+ }
367
+ }
210
368
 
211
- return typeAliasResolution(
212
- typeAliasResolutionStatus,
213
- objectTypeAnnotation,
369
+ return translateObjectTypeAnnotation(
370
+ hasteModuleName,
371
+ nullable,
372
+ typeAnnotation.members,
373
+ typeResolutionStatus,
374
+ [],
375
+ types,
214
376
  aliasMap,
377
+ enumMap,
378
+ tryParse,
379
+ cxxOnly,
380
+ parser,
381
+ );
382
+ }
383
+ case 'TSEnumDeclaration': {
384
+ return typeEnumResolution(
385
+ typeAnnotation,
386
+ typeResolutionStatus,
215
387
  nullable,
388
+ hasteModuleName,
389
+ language,
390
+ enumMap,
391
+ parser,
216
392
  );
217
393
  }
218
394
  case 'TSBooleanKeyword': {
@@ -234,10 +410,11 @@ function translateTypeAnnotation(
234
410
  typeAnnotation,
235
411
  types,
236
412
  aliasMap,
413
+ enumMap,
237
414
  tryParse,
238
415
  cxxOnly,
239
416
  translateTypeAnnotation,
240
- language,
417
+ parser,
241
418
  );
242
419
  }
243
420
  case 'TSUnionType': {
@@ -259,15 +436,6 @@ function translateTypeAnnotation(
259
436
  }
260
437
  }
261
438
 
262
- function isModuleInterface(node: $FlowFixMe) {
263
- return (
264
- node.type === 'TSInterfaceDeclaration' &&
265
- node.extends?.length === 1 &&
266
- node.extends[0].type === 'TSExpressionWithTypeArguments' &&
267
- node.extends[0].expression.name === 'TurboModule'
268
- );
269
- }
270
-
271
439
  function buildModuleSchema(
272
440
  hasteModuleName: string,
273
441
  /**
@@ -275,10 +443,11 @@ function buildModuleSchema(
275
443
  */
276
444
  ast: $FlowFixMe,
277
445
  tryParse: ParserErrorCapturer,
446
+ parser: Parser,
278
447
  ): NativeModuleSchema {
279
- const types = getTypes(ast);
448
+ const types = parser.getTypes(ast);
280
449
  const moduleSpecs = (Object.values(types): $ReadOnlyArray<$FlowFixMe>).filter(
281
- isModuleInterface,
450
+ t => parser.isModuleInterface(t),
282
451
  );
283
452
 
284
453
  throwIfModuleInterfaceNotFound(
@@ -313,14 +482,12 @@ function buildModuleSchema(
313
482
  hasteModuleName,
314
483
  moduleSpec,
315
484
  callExpressions,
316
- language,
317
485
  );
318
486
 
319
487
  throwIfMoreThanOneModuleRegistryCalls(
320
488
  hasteModuleName,
321
489
  callExpressions,
322
490
  callExpressions.length,
323
- language,
324
491
  );
325
492
 
326
493
  const [callExpression] = callExpressions;
@@ -332,19 +499,13 @@ function buildModuleSchema(
332
499
  callExpression,
333
500
  methodName,
334
501
  callExpression.arguments.length,
335
- language,
336
502
  );
337
503
 
338
- if (callExpression.arguments[0].type !== 'StringLiteral') {
339
- const {type} = callExpression.arguments[0];
340
- throw new IncorrectModuleRegistryCallArgumentTypeParserError(
341
- hasteModuleName,
342
- callExpression.arguments[0],
343
- methodName,
344
- type,
345
- language,
346
- );
347
- }
504
+ throwIfIncorrectModuleRegistryCallArgument(
505
+ hasteModuleName,
506
+ callExpression.arguments[0],
507
+ methodName,
508
+ );
348
509
 
349
510
  const $moduleName = callExpression.arguments[0].value;
350
511
 
@@ -354,7 +515,6 @@ function buildModuleSchema(
354
515
  callExpression,
355
516
  methodName,
356
517
  $moduleName,
357
- language,
358
518
  );
359
519
 
360
520
  throwIfIncorrectModuleRegistryCallTypeParameterParserError(
@@ -386,31 +546,39 @@ function buildModuleSchema(
386
546
  )
387
547
  .map<?{
388
548
  aliasMap: NativeModuleAliasMap,
549
+ enumMap: NativeModuleEnumMap,
389
550
  propertyShape: NativeModulePropertyShape,
390
551
  }>(property => {
391
552
  const aliasMap: {...NativeModuleAliasMap} = {};
553
+ const enumMap: {...NativeModuleEnumMap} = {};
392
554
 
393
555
  return tryParse(() => ({
394
556
  aliasMap: aliasMap,
557
+ enumMap: enumMap,
395
558
  propertyShape: buildPropertySchema(
396
559
  hasteModuleName,
397
560
  property,
398
561
  types,
399
562
  aliasMap,
563
+ enumMap,
400
564
  tryParse,
401
565
  cxxOnly,
402
- language,
403
566
  resolveTypeAnnotation,
404
567
  translateTypeAnnotation,
568
+ parser,
405
569
  ),
406
570
  }));
407
571
  })
408
572
  .filter(Boolean)
409
573
  .reduce(
410
- (moduleSchema: NativeModuleSchema, {aliasMap, propertyShape}) => {
574
+ (
575
+ moduleSchema: NativeModuleSchema,
576
+ {aliasMap, enumMap, propertyShape},
577
+ ) => {
411
578
  return {
412
579
  type: 'NativeModule',
413
- aliases: {...moduleSchema.aliases, ...aliasMap},
580
+ aliasMap: {...moduleSchema.aliasMap, ...aliasMap},
581
+ enumMap: {...moduleSchema.enumMap, ...enumMap},
414
582
  spec: {
415
583
  properties: [...moduleSchema.spec.properties, propertyShape],
416
584
  },
@@ -420,7 +588,8 @@ function buildModuleSchema(
420
588
  },
421
589
  {
422
590
  type: 'NativeModule',
423
- aliases: {},
591
+ aliasMap: {},
592
+ enumMap: {},
424
593
  spec: {properties: []},
425
594
  moduleName: moduleName,
426
595
  excludedPlatforms:
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import type {Parser} from '../parser';
9
+
10
+ export declare class TypeScriptParser implements Parser{}