@react-native/codegen 0.72.1 → 0.72.2

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 (119) 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 +1 -19
  52. package/lib/parsers/error-utils.js.flow +1 -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.flow +1 -1
  67. package/lib/parsers/flow/components/options.js.flow +1 -1
  68. package/lib/parsers/flow/components/props.js.flow +1 -1
  69. package/lib/parsers/flow/modules/__test_fixtures__/failures.js +54 -0
  70. package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +56 -0
  71. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +64 -1
  72. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +66 -1
  73. package/lib/parsers/flow/modules/index.js +99 -25
  74. package/lib/parsers/flow/modules/index.js.flow +106 -22
  75. package/lib/parsers/flow/parser.d.ts +10 -0
  76. package/lib/parsers/flow/parser.js +122 -32
  77. package/lib/parsers/flow/parser.js.flow +144 -24
  78. package/lib/parsers/flow/utils.js +33 -19
  79. package/lib/parsers/flow/utils.js.flow +37 -22
  80. package/lib/parsers/parser.d.ts +17 -0
  81. package/lib/parsers/parser.js.flow +102 -17
  82. package/lib/parsers/parserMock.js +87 -30
  83. package/lib/parsers/parserMock.js.flow +118 -24
  84. package/lib/parsers/parsers-commons.js +121 -119
  85. package/lib/parsers/parsers-commons.js.flow +130 -131
  86. package/lib/parsers/parsers-primitives.js +75 -12
  87. package/lib/parsers/parsers-primitives.js.flow +92 -13
  88. package/lib/parsers/schema/index.d.ts +10 -0
  89. package/lib/parsers/typescript/Visitor.js +42 -0
  90. package/lib/parsers/typescript/Visitor.js.flow +47 -0
  91. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +22 -0
  92. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +22 -0
  93. package/lib/parsers/typescript/components/commands.js +3 -0
  94. package/lib/parsers/typescript/components/commands.js.flow +2 -1
  95. package/lib/parsers/typescript/components/componentsUtils.js +5 -0
  96. package/lib/parsers/typescript/components/componentsUtils.js.flow +6 -1
  97. package/lib/parsers/typescript/components/events.js.flow +1 -1
  98. package/lib/parsers/typescript/components/extends.js.flow +1 -1
  99. package/lib/parsers/typescript/components/index.js.flow +1 -1
  100. package/lib/parsers/typescript/components/options.js.flow +1 -1
  101. package/lib/parsers/typescript/components/props.js.flow +1 -1
  102. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +52 -0
  103. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +54 -0
  104. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +142 -0
  105. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +146 -0
  106. package/lib/parsers/typescript/modules/index.js +266 -87
  107. package/lib/parsers/typescript/modules/index.js.flow +230 -48
  108. package/lib/parsers/typescript/parser.d.ts +10 -0
  109. package/lib/parsers/typescript/parser.js +131 -25
  110. package/lib/parsers/typescript/parser.js.flow +137 -26
  111. package/lib/parsers/typescript/utils.js +40 -20
  112. package/lib/parsers/typescript/utils.js.flow +44 -24
  113. package/lib/parsers/utils.js +0 -125
  114. package/lib/parsers/utils.js.flow +3 -70
  115. package/package.json +4 -1
  116. package/lib/parsers/flow/index.js +0 -80
  117. package/lib/parsers/flow/index.js.flow +0 -85
  118. package/lib/parsers/typescript/index.js +0 -85
  119. package/lib/parsers/typescript/index.js.flow +0 -94
@@ -140,59 +140,117 @@ function _iterableToArrayLimit(arr, i) {
140
140
  function _arrayWithHoles(arr) {
141
141
  if (Array.isArray(arr)) return arr;
142
142
  }
143
- const _require = require('../../utils'),
144
- visit = _require.visit,
145
- isModuleRegistryCall = _require.isModuleRegistryCall,
146
- verifyPlatforms = _require.verifyPlatforms;
147
- const _require2 = require('../utils'),
148
- resolveTypeAnnotation = _require2.resolveTypeAnnotation,
149
- getTypes = _require2.getTypes;
150
- const _require3 = require('../../parsers-commons'),
151
- parseObjectProperty = _require3.parseObjectProperty,
152
- translateDefault = _require3.translateDefault,
153
- buildPropertySchema = _require3.buildPropertySchema;
154
- const _require4 = require('../../parsers-primitives'),
155
- emitArrayType = _require4.emitArrayType,
156
- emitBoolean = _require4.emitBoolean,
157
- emitDouble = _require4.emitDouble,
158
- emitFloat = _require4.emitFloat,
159
- emitFunction = _require4.emitFunction,
160
- emitNumber = _require4.emitNumber,
161
- emitInt32 = _require4.emitInt32,
162
- emitObject = _require4.emitObject,
163
- emitPromise = _require4.emitPromise,
164
- emitRootTag = _require4.emitRootTag,
165
- emitVoid = _require4.emitVoid,
166
- emitString = _require4.emitString,
167
- emitStringish = _require4.emitStringish,
168
- emitMixed = _require4.emitMixed,
169
- emitUnion = _require4.emitUnion,
170
- typeAliasResolution = _require4.typeAliasResolution,
171
- translateArrayTypeAnnotation = _require4.translateArrayTypeAnnotation;
172
- const _require5 = require('../../errors'),
173
- UnsupportedGenericParserError = _require5.UnsupportedGenericParserError,
143
+ const _require = require('../parseTopLevelType'),
144
+ flattenIntersectionType = _require.flattenIntersectionType;
145
+ const _require2 = require('../components/componentsUtils'),
146
+ flattenProperties = _require2.flattenProperties;
147
+ const _require3 = require('../../utils'),
148
+ visit = _require3.visit,
149
+ isModuleRegistryCall = _require3.isModuleRegistryCall,
150
+ verifyPlatforms = _require3.verifyPlatforms;
151
+ const _require4 = require('../utils'),
152
+ resolveTypeAnnotation = _require4.resolveTypeAnnotation,
153
+ getTypes = _require4.getTypes;
154
+ const _require5 = require('../../parsers-commons'),
155
+ parseObjectProperty = _require5.parseObjectProperty,
156
+ buildPropertySchema = _require5.buildPropertySchema;
157
+ const _require6 = require('../../parsers-primitives'),
158
+ typeEnumResolution = _require6.typeEnumResolution;
159
+ const _require7 = require('../../parsers-primitives'),
160
+ emitArrayType = _require7.emitArrayType,
161
+ emitBoolean = _require7.emitBoolean,
162
+ emitDouble = _require7.emitDouble,
163
+ emitFloat = _require7.emitFloat,
164
+ emitFunction = _require7.emitFunction,
165
+ emitNumber = _require7.emitNumber,
166
+ emitInt32 = _require7.emitInt32,
167
+ emitGenericObject = _require7.emitGenericObject,
168
+ emitObject = _require7.emitObject,
169
+ emitPromise = _require7.emitPromise,
170
+ emitRootTag = _require7.emitRootTag,
171
+ emitVoid = _require7.emitVoid,
172
+ emitString = _require7.emitString,
173
+ emitStringish = _require7.emitStringish,
174
+ emitMixed = _require7.emitMixed,
175
+ emitUnion = _require7.emitUnion,
176
+ typeAliasResolution = _require7.typeAliasResolution,
177
+ translateArrayTypeAnnotation = _require7.translateArrayTypeAnnotation;
178
+ const _require8 = require('../../errors'),
179
+ UnsupportedGenericParserError = _require8.UnsupportedGenericParserError,
174
180
  UnsupportedTypeAnnotationParserError =
175
- _require5.UnsupportedTypeAnnotationParserError,
181
+ _require8.UnsupportedTypeAnnotationParserError,
176
182
  IncorrectModuleRegistryCallArgumentTypeParserError =
177
- _require5.IncorrectModuleRegistryCallArgumentTypeParserError;
178
- const _require6 = require('../../error-utils'),
179
- throwIfUntypedModule = _require6.throwIfUntypedModule,
183
+ _require8.IncorrectModuleRegistryCallArgumentTypeParserError;
184
+ const _require9 = require('../../error-utils'),
185
+ throwIfUntypedModule = _require9.throwIfUntypedModule,
180
186
  throwIfUnusedModuleInterfaceParserError =
181
- _require6.throwIfUnusedModuleInterfaceParserError,
182
- throwIfModuleInterfaceNotFound = _require6.throwIfModuleInterfaceNotFound,
183
- throwIfModuleInterfaceIsMisnamed = _require6.throwIfModuleInterfaceIsMisnamed,
187
+ _require9.throwIfUnusedModuleInterfaceParserError,
188
+ throwIfModuleInterfaceNotFound = _require9.throwIfModuleInterfaceNotFound,
189
+ throwIfModuleInterfaceIsMisnamed = _require9.throwIfModuleInterfaceIsMisnamed,
184
190
  throwIfWrongNumberOfCallExpressionArgs =
185
- _require6.throwIfWrongNumberOfCallExpressionArgs,
191
+ _require9.throwIfWrongNumberOfCallExpressionArgs,
186
192
  throwIfMoreThanOneModuleRegistryCalls =
187
- _require6.throwIfMoreThanOneModuleRegistryCalls,
193
+ _require9.throwIfMoreThanOneModuleRegistryCalls,
188
194
  throwIfMoreThanOneModuleInterfaceParserError =
189
- _require6.throwIfMoreThanOneModuleInterfaceParserError,
195
+ _require9.throwIfMoreThanOneModuleInterfaceParserError,
190
196
  throwIfIncorrectModuleRegistryCallTypeParameterParserError =
191
- _require6.throwIfIncorrectModuleRegistryCallTypeParameterParserError;
192
- const _require7 = require('../parser'),
193
- TypeScriptParser = _require7.TypeScriptParser;
197
+ _require9.throwIfIncorrectModuleRegistryCallTypeParameterParserError;
194
198
  const language = 'TypeScript';
195
- const parser = new TypeScriptParser();
199
+ function translateObjectTypeAnnotation(
200
+ hasteModuleName,
201
+ /**
202
+ * TODO(T108222691): Use flow-types for @babel/parser
203
+ */
204
+ nullable,
205
+ objectMembers,
206
+ typeResolutionStatus,
207
+ baseTypes,
208
+ types,
209
+ aliasMap,
210
+ enumMap,
211
+ tryParse,
212
+ cxxOnly,
213
+ parser,
214
+ ) {
215
+ // $FlowFixMe[missing-type-arg]
216
+ const properties = objectMembers
217
+ .map(property => {
218
+ return tryParse(() => {
219
+ return parseObjectProperty(
220
+ property,
221
+ hasteModuleName,
222
+ types,
223
+ aliasMap,
224
+ enumMap,
225
+ tryParse,
226
+ cxxOnly,
227
+ nullable,
228
+ translateTypeAnnotation,
229
+ parser,
230
+ );
231
+ });
232
+ })
233
+ .filter(Boolean);
234
+ let objectTypeAnnotation;
235
+ if (baseTypes.length === 0) {
236
+ objectTypeAnnotation = {
237
+ type: 'ObjectTypeAnnotation',
238
+ properties,
239
+ };
240
+ } else {
241
+ objectTypeAnnotation = {
242
+ type: 'ObjectTypeAnnotation',
243
+ properties,
244
+ baseTypes,
245
+ };
246
+ }
247
+ return typeAliasResolution(
248
+ typeResolutionStatus,
249
+ objectTypeAnnotation,
250
+ aliasMap,
251
+ nullable,
252
+ );
253
+ }
196
254
  function translateTypeAnnotation(
197
255
  hasteModuleName,
198
256
  /**
@@ -201,8 +259,10 @@ function translateTypeAnnotation(
201
259
  typeScriptTypeAnnotation,
202
260
  types,
203
261
  aliasMap,
262
+ enumMap,
204
263
  tryParse,
205
264
  cxxOnly,
265
+ parser,
206
266
  ) {
207
267
  const _resolveTypeAnnotatio = resolveTypeAnnotation(
208
268
  typeScriptTypeAnnotation,
@@ -210,19 +270,20 @@ function translateTypeAnnotation(
210
270
  ),
211
271
  nullable = _resolveTypeAnnotatio.nullable,
212
272
  typeAnnotation = _resolveTypeAnnotatio.typeAnnotation,
213
- typeAliasResolutionStatus = _resolveTypeAnnotatio.typeAliasResolutionStatus;
273
+ typeResolutionStatus = _resolveTypeAnnotatio.typeResolutionStatus;
214
274
  switch (typeAnnotation.type) {
215
275
  case 'TSArrayType': {
216
276
  return translateArrayTypeAnnotation(
217
277
  hasteModuleName,
218
278
  types,
219
279
  aliasMap,
280
+ enumMap,
220
281
  cxxOnly,
221
282
  'Array',
222
283
  typeAnnotation.elementType,
223
284
  nullable,
224
- language,
225
285
  translateTypeAnnotation,
286
+ parser,
226
287
  );
227
288
  }
228
289
  case 'TSTypeOperator': {
@@ -234,12 +295,13 @@ function translateTypeAnnotation(
234
295
  hasteModuleName,
235
296
  types,
236
297
  aliasMap,
298
+ enumMap,
237
299
  cxxOnly,
238
300
  'ReadonlyArray',
239
301
  typeAnnotation.typeAnnotation.elementType,
240
302
  nullable,
241
- language,
242
303
  translateTypeAnnotation,
304
+ parser,
243
305
  );
244
306
  } else {
245
307
  throw new UnsupportedGenericParserError(
@@ -262,6 +324,7 @@ function translateTypeAnnotation(
262
324
  nullable,
263
325
  types,
264
326
  aliasMap,
327
+ enumMap,
265
328
  tryParse,
266
329
  cxxOnly,
267
330
  translateTypeAnnotation,
@@ -275,6 +338,7 @@ function translateTypeAnnotation(
275
338
  parser,
276
339
  types,
277
340
  aliasMap,
341
+ enumMap,
278
342
  cxxOnly,
279
343
  nullable,
280
344
  translateTypeAnnotation,
@@ -294,46 +358,156 @@ function translateTypeAnnotation(
294
358
  }
295
359
  case 'UnsafeObject':
296
360
  case 'Object': {
297
- return emitObject(nullable);
361
+ return emitGenericObject(nullable);
362
+ }
363
+ case 'Partial': {
364
+ if (typeAnnotation.typeParameters.params.length !== 1) {
365
+ throw new Error(
366
+ 'Partials only support annotating exactly one parameter.',
367
+ );
368
+ }
369
+ const annotatedElement =
370
+ types[typeAnnotation.typeParameters.params[0].typeName.name];
371
+ if (!annotatedElement) {
372
+ throw new Error(
373
+ 'Partials only support annotating a type parameter.',
374
+ );
375
+ }
376
+ const properties = annotatedElement.typeAnnotation.members.map(
377
+ member => {
378
+ return {
379
+ name: member.key.name,
380
+ optional: true,
381
+ typeAnnotation: translateTypeAnnotation(
382
+ hasteModuleName,
383
+ member.typeAnnotation.typeAnnotation,
384
+ types,
385
+ aliasMap,
386
+ enumMap,
387
+ tryParse,
388
+ cxxOnly,
389
+ parser,
390
+ ),
391
+ };
392
+ },
393
+ );
394
+ return emitObject(nullable, properties);
298
395
  }
299
396
  default: {
300
- return translateDefault(
397
+ throw new UnsupportedGenericParserError(
301
398
  hasteModuleName,
302
399
  typeAnnotation,
303
- types,
304
- nullable,
305
400
  parser,
306
401
  );
307
402
  }
308
403
  }
309
404
  }
405
+ case 'TSInterfaceDeclaration': {
406
+ var _typeAnnotation$exten;
407
+ const baseTypes = (
408
+ (_typeAnnotation$exten = typeAnnotation.extends) !== null &&
409
+ _typeAnnotation$exten !== void 0
410
+ ? _typeAnnotation$exten
411
+ : []
412
+ ).map(extend => extend.expression.name);
413
+ for (const baseType of baseTypes) {
414
+ // ensure base types exist and appear in aliasMap
415
+ translateTypeAnnotation(
416
+ hasteModuleName,
417
+ {
418
+ type: 'TSTypeReference',
419
+ typeName: {
420
+ type: 'Identifier',
421
+ name: baseType,
422
+ },
423
+ },
424
+ types,
425
+ aliasMap,
426
+ enumMap,
427
+ tryParse,
428
+ cxxOnly,
429
+ parser,
430
+ );
431
+ }
432
+ return translateObjectTypeAnnotation(
433
+ hasteModuleName,
434
+ nullable,
435
+ flattenProperties([typeAnnotation], types),
436
+ typeResolutionStatus,
437
+ baseTypes,
438
+ types,
439
+ aliasMap,
440
+ enumMap,
441
+ tryParse,
442
+ cxxOnly,
443
+ parser,
444
+ );
445
+ }
446
+ case 'TSIntersectionType': {
447
+ return translateObjectTypeAnnotation(
448
+ hasteModuleName,
449
+ nullable,
450
+ flattenProperties(
451
+ flattenIntersectionType(typeAnnotation, types),
452
+ types,
453
+ ),
454
+ typeResolutionStatus,
455
+ [],
456
+ types,
457
+ aliasMap,
458
+ enumMap,
459
+ tryParse,
460
+ cxxOnly,
461
+ parser,
462
+ );
463
+ }
310
464
  case 'TSTypeLiteral': {
311
- const objectTypeAnnotation = {
312
- type: 'ObjectTypeAnnotation',
313
- // $FlowFixMe[missing-type-arg]
314
- properties: typeAnnotation.members
315
- .map(property => {
316
- return tryParse(() => {
317
- return parseObjectProperty(
318
- property,
319
- hasteModuleName,
320
- types,
321
- aliasMap,
322
- tryParse,
323
- cxxOnly,
324
- nullable,
325
- translateTypeAnnotation,
326
- parser,
327
- );
328
- });
329
- })
330
- .filter(Boolean),
331
- };
332
- return typeAliasResolution(
333
- typeAliasResolutionStatus,
334
- objectTypeAnnotation,
465
+ // if there is TSIndexSignature, then it is a dictionary
466
+ if (typeAnnotation.members) {
467
+ const indexSignatures = typeAnnotation.members.filter(
468
+ member => member.type === 'TSIndexSignature',
469
+ );
470
+ if (indexSignatures.length > 0) {
471
+ // check the property type to prevent developers from using unsupported types
472
+ // the return value from `translateTypeAnnotation` is unused
473
+ const propertyType = indexSignatures[0].typeAnnotation;
474
+ translateTypeAnnotation(
475
+ hasteModuleName,
476
+ propertyType,
477
+ types,
478
+ aliasMap,
479
+ enumMap,
480
+ tryParse,
481
+ cxxOnly,
482
+ parser,
483
+ );
484
+ // no need to do further checking
485
+ return emitGenericObject(nullable);
486
+ }
487
+ }
488
+ return translateObjectTypeAnnotation(
489
+ hasteModuleName,
490
+ nullable,
491
+ typeAnnotation.members,
492
+ typeResolutionStatus,
493
+ [],
494
+ types,
335
495
  aliasMap,
496
+ enumMap,
497
+ tryParse,
498
+ cxxOnly,
499
+ parser,
500
+ );
501
+ }
502
+ case 'TSEnumDeclaration': {
503
+ return typeEnumResolution(
504
+ typeAnnotation,
505
+ typeResolutionStatus,
336
506
  nullable,
507
+ hasteModuleName,
508
+ language,
509
+ enumMap,
510
+ parser,
337
511
  );
338
512
  }
339
513
  case 'TSBooleanKeyword': {
@@ -355,10 +529,11 @@ function translateTypeAnnotation(
355
529
  typeAnnotation,
356
530
  types,
357
531
  aliasMap,
532
+ enumMap,
358
533
  tryParse,
359
534
  cxxOnly,
360
535
  translateTypeAnnotation,
361
- language,
536
+ parser,
362
537
  );
363
538
  }
364
539
  case 'TSUnionType': {
@@ -398,6 +573,7 @@ function buildModuleSchema(
398
573
  */
399
574
  ast,
400
575
  tryParse,
576
+ parser,
401
577
  ) {
402
578
  const types = getTypes(ast);
403
579
  const moduleSpecs = Object.values(types).filter(isModuleInterface);
@@ -430,13 +606,11 @@ function buildModuleSchema(
430
606
  hasteModuleName,
431
607
  moduleSpec,
432
608
  callExpressions,
433
- language,
434
609
  );
435
610
  throwIfMoreThanOneModuleRegistryCalls(
436
611
  hasteModuleName,
437
612
  callExpressions,
438
613
  callExpressions.length,
439
- language,
440
614
  );
441
615
  const callExpression = callExpressions[0];
442
616
  const typeParameters = callExpression.typeParameters;
@@ -446,7 +620,6 @@ function buildModuleSchema(
446
620
  callExpression,
447
621
  methodName,
448
622
  callExpression.arguments.length,
449
- language,
450
623
  );
451
624
  if (callExpression.arguments[0].type !== 'StringLiteral') {
452
625
  const type = callExpression.arguments[0].type;
@@ -455,7 +628,6 @@ function buildModuleSchema(
455
628
  callExpression.arguments[0],
456
629
  methodName,
457
630
  type,
458
- language,
459
631
  );
460
632
  }
461
633
  const $moduleName = callExpression.arguments[0].value;
@@ -465,7 +637,6 @@ function buildModuleSchema(
465
637
  callExpression,
466
638
  methodName,
467
639
  $moduleName,
468
- language,
469
640
  );
470
641
  throwIfIncorrectModuleRegistryCallTypeParameterParserError(
471
642
  hasteModuleName,
@@ -494,30 +665,37 @@ function buildModuleSchema(
494
665
  )
495
666
  .map(property => {
496
667
  const aliasMap = {};
668
+ const enumMap = {};
497
669
  return tryParse(() => ({
498
670
  aliasMap: aliasMap,
671
+ enumMap: enumMap,
499
672
  propertyShape: buildPropertySchema(
500
673
  hasteModuleName,
501
674
  property,
502
675
  types,
503
676
  aliasMap,
677
+ enumMap,
504
678
  tryParse,
505
679
  cxxOnly,
506
- language,
507
680
  resolveTypeAnnotation,
508
681
  translateTypeAnnotation,
682
+ parser,
509
683
  ),
510
684
  }));
511
685
  })
512
686
  .filter(Boolean)
513
687
  .reduce(
514
- (moduleSchema, {aliasMap, propertyShape}) => {
688
+ (moduleSchema, {aliasMap, enumMap, propertyShape}) => {
515
689
  return {
516
690
  type: 'NativeModule',
517
- aliases: _objectSpread(
518
- _objectSpread({}, moduleSchema.aliases),
691
+ aliasMap: _objectSpread(
692
+ _objectSpread({}, moduleSchema.aliasMap),
519
693
  aliasMap,
520
694
  ),
695
+ enumMap: _objectSpread(
696
+ _objectSpread({}, moduleSchema.enumMap),
697
+ enumMap,
698
+ ),
521
699
  spec: {
522
700
  properties: [...moduleSchema.spec.properties, propertyShape],
523
701
  },
@@ -527,7 +705,8 @@ function buildModuleSchema(
527
705
  },
528
706
  {
529
707
  type: 'NativeModule',
530
- aliases: {},
708
+ aliasMap: {},
709
+ enumMap: {},
531
710
  spec: {
532
711
  properties: [],
533
712
  },