@react-native/codegen 0.72.2 → 0.72.4

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 (77) hide show
  1. package/lib/CodegenSchema.d.ts +10 -10
  2. package/lib/CodegenSchema.js.flow +6 -1
  3. package/lib/SchemaValidator.d.ts +1 -1
  4. package/lib/generators/RNCodegen.d.ts +98 -0
  5. package/lib/generators/RNCodegen.js +33 -4
  6. package/lib/generators/RNCodegen.js.flow +35 -4
  7. package/lib/generators/components/ComponentsGeneratorUtils.js +2 -0
  8. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +2 -0
  9. package/lib/generators/components/CppHelpers.js +2 -0
  10. package/lib/generators/components/CppHelpers.js.flow +2 -0
  11. package/lib/generators/components/GeneratePropsH.js +2 -0
  12. package/lib/generators/components/GeneratePropsH.js.flow +2 -0
  13. package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
  14. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
  15. package/lib/generators/components/GeneratePropsJavaInterface.js +2 -0
  16. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +2 -0
  17. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +3 -1
  18. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +5 -0
  19. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +6 -0
  20. package/lib/generators/components/GenerateViewConfigJs.js +1 -0
  21. package/lib/generators/components/GenerateViewConfigJs.js.flow +1 -0
  22. package/lib/generators/components/JavaHelpers.js +7 -0
  23. package/lib/generators/components/JavaHelpers.js.flow +8 -0
  24. package/lib/generators/components/__test_fixtures__/fixtures.js +29 -0
  25. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +30 -0
  26. package/lib/parsers/error-utils.js +50 -15
  27. package/lib/parsers/error-utils.js.flow +57 -15
  28. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +5 -1
  29. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +5 -1
  30. package/lib/parsers/flow/components/componentsUtils.js +4 -0
  31. package/lib/parsers/flow/components/componentsUtils.js.flow +4 -0
  32. package/lib/parsers/flow/components/index.js +27 -126
  33. package/lib/parsers/flow/components/index.js.flow +22 -52
  34. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +4 -4
  35. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +4 -4
  36. package/lib/parsers/flow/modules/index.js +41 -317
  37. package/lib/parsers/flow/modules/index.js.flow +19 -247
  38. package/lib/parsers/flow/parser.js +119 -12
  39. package/lib/parsers/flow/parser.js.flow +124 -3
  40. package/lib/parsers/flow/utils.js +0 -38
  41. package/lib/parsers/flow/utils.js.flow +0 -38
  42. package/lib/parsers/parser.d.ts +2 -2
  43. package/lib/parsers/parser.js.flow +84 -0
  44. package/lib/parsers/parserMock.js +58 -0
  45. package/lib/parsers/parserMock.js.flow +72 -0
  46. package/lib/parsers/parsers-commons.js +362 -5
  47. package/lib/parsers/parsers-commons.js.flow +351 -8
  48. package/lib/parsers/parsers-primitives.js +119 -3
  49. package/lib/parsers/parsers-primitives.js.flow +128 -3
  50. package/lib/parsers/schema/index.d.ts +1 -1
  51. package/lib/parsers/{typescript/components/schema.js.flow → schema.js.flow} +1 -1
  52. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +5 -1
  53. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +5 -1
  54. package/lib/parsers/typescript/components/componentsUtils.js +8 -0
  55. package/lib/parsers/typescript/components/componentsUtils.js.flow +8 -0
  56. package/lib/parsers/typescript/components/index.js +28 -127
  57. package/lib/parsers/typescript/components/index.js.flow +24 -54
  58. package/lib/parsers/typescript/modules/index.js +103 -434
  59. package/lib/parsers/typescript/modules/index.js.flow +85 -299
  60. package/lib/parsers/typescript/parser.js +113 -12
  61. package/lib/parsers/typescript/parser.js.flow +115 -3
  62. package/lib/parsers/typescript/utils.js +0 -31
  63. package/lib/parsers/typescript/utils.js.flow +0 -31
  64. package/lib/parsers/utils.js +4 -0
  65. package/lib/parsers/utils.js.flow +3 -0
  66. package/package.json +1 -1
  67. package/lib/parsers/flow/Visitor.js +0 -37
  68. package/lib/parsers/flow/Visitor.js.flow +0 -41
  69. package/lib/parsers/flow/components/options.js +0 -72
  70. package/lib/parsers/flow/components/options.js.flow +0 -87
  71. package/lib/parsers/flow/components/schema.js +0 -106
  72. package/lib/parsers/flow/components/schema.js.flow +0 -62
  73. package/lib/parsers/typescript/Visitor.js +0 -42
  74. package/lib/parsers/typescript/Visitor.js.flow +0 -47
  75. package/lib/parsers/typescript/components/options.js +0 -72
  76. package/lib/parsers/typescript/components/options.js.flow +0 -87
  77. /package/lib/parsers/{typescript/components/schema.js → schema.js} +0 -0
@@ -10,68 +10,6 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- function ownKeys(object, enumerableOnly) {
14
- var keys = Object.keys(object);
15
- if (Object.getOwnPropertySymbols) {
16
- var symbols = Object.getOwnPropertySymbols(object);
17
- enumerableOnly &&
18
- (symbols = symbols.filter(function (sym) {
19
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
20
- })),
21
- keys.push.apply(keys, symbols);
22
- }
23
- return keys;
24
- }
25
- function _objectSpread(target) {
26
- for (var i = 1; i < arguments.length; i++) {
27
- var source = null != arguments[i] ? arguments[i] : {};
28
- i % 2
29
- ? ownKeys(Object(source), !0).forEach(function (key) {
30
- _defineProperty(target, key, source[key]);
31
- })
32
- : Object.getOwnPropertyDescriptors
33
- ? Object.defineProperties(
34
- target,
35
- Object.getOwnPropertyDescriptors(source),
36
- )
37
- : ownKeys(Object(source)).forEach(function (key) {
38
- Object.defineProperty(
39
- target,
40
- key,
41
- Object.getOwnPropertyDescriptor(source, key),
42
- );
43
- });
44
- }
45
- return target;
46
- }
47
- function _defineProperty(obj, key, value) {
48
- key = _toPropertyKey(key);
49
- if (key in obj) {
50
- Object.defineProperty(obj, key, {
51
- value: value,
52
- enumerable: true,
53
- configurable: true,
54
- writable: true,
55
- });
56
- } else {
57
- obj[key] = value;
58
- }
59
- return obj;
60
- }
61
- function _toPropertyKey(arg) {
62
- var key = _toPrimitive(arg, 'string');
63
- return typeof key === 'symbol' ? key : String(key);
64
- }
65
- function _toPrimitive(input, hint) {
66
- if (typeof input !== 'object' || input === null) return input;
67
- var prim = input[Symbol.toPrimitive];
68
- if (prim !== undefined) {
69
- var res = prim.call(input, hint || 'default');
70
- if (typeof res !== 'object') return res;
71
- throw new TypeError('@@toPrimitive must return a primitive value.');
72
- }
73
- return (hint === 'string' ? String : Number)(input);
74
- }
75
13
  function _slicedToArray(arr, i) {
76
14
  return (
77
15
  _arrayWithHoles(arr) ||
@@ -140,60 +78,33 @@ function _iterableToArrayLimit(arr, i) {
140
78
  function _arrayWithHoles(arr) {
141
79
  if (Array.isArray(arr)) return arr;
142
80
  }
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
- unwrapNullable = _require3.unwrapNullable,
152
- wrapNullable = _require3.wrapNullable,
81
+ const _require = require('../utils'),
82
+ resolveTypeAnnotation = _require.resolveTypeAnnotation;
83
+ const _require2 = require('../../parsers-commons'),
84
+ unwrapNullable = _require2.unwrapNullable,
85
+ wrapNullable = _require2.wrapNullable,
153
86
  assertGenericTypeAnnotationHasExactlyOneTypeParameter =
154
- _require3.assertGenericTypeAnnotationHasExactlyOneTypeParameter,
155
- parseObjectProperty = _require3.parseObjectProperty,
156
- buildPropertySchema = _require3.buildPropertySchema;
157
- const _require4 = require('../../parsers-primitives'),
158
- emitArrayType = _require4.emitArrayType,
159
- emitBoolean = _require4.emitBoolean,
160
- emitDouble = _require4.emitDouble,
161
- emitFloat = _require4.emitFloat,
162
- emitFunction = _require4.emitFunction,
163
- emitNumber = _require4.emitNumber,
164
- emitInt32 = _require4.emitInt32,
165
- emitGenericObject = _require4.emitGenericObject,
166
- emitObject = _require4.emitObject,
167
- emitPromise = _require4.emitPromise,
168
- emitRootTag = _require4.emitRootTag,
169
- emitVoid = _require4.emitVoid,
170
- emitString = _require4.emitString,
171
- emitStringish = _require4.emitStringish,
172
- emitMixed = _require4.emitMixed,
173
- emitUnion = _require4.emitUnion,
174
- typeAliasResolution = _require4.typeAliasResolution,
175
- typeEnumResolution = _require4.typeEnumResolution;
176
- const _require5 = require('../../errors'),
87
+ _require2.assertGenericTypeAnnotationHasExactlyOneTypeParameter,
88
+ parseObjectProperty = _require2.parseObjectProperty;
89
+ const _require3 = require('../../parsers-primitives'),
90
+ emitArrayType = _require3.emitArrayType,
91
+ emitBoolean = _require3.emitBoolean,
92
+ emitFunction = _require3.emitFunction,
93
+ emitNumber = _require3.emitNumber,
94
+ emitGenericObject = _require3.emitGenericObject,
95
+ emitPromise = _require3.emitPromise,
96
+ emitRootTag = _require3.emitRootTag,
97
+ emitVoid = _require3.emitVoid,
98
+ emitString = _require3.emitString,
99
+ emitMixed = _require3.emitMixed,
100
+ emitUnion = _require3.emitUnion,
101
+ emitCommonTypes = _require3.emitCommonTypes,
102
+ typeAliasResolution = _require3.typeAliasResolution,
103
+ typeEnumResolution = _require3.typeEnumResolution;
104
+ const _require4 = require('../../errors'),
177
105
  UnsupportedTypeAnnotationParserError =
178
- _require5.UnsupportedTypeAnnotationParserError,
179
- IncorrectModuleRegistryCallArgumentTypeParserError =
180
- _require5.IncorrectModuleRegistryCallArgumentTypeParserError,
181
- UnsupportedGenericParserError = _require5.UnsupportedGenericParserError;
182
- const _require6 = require('../../error-utils'),
183
- throwIfModuleInterfaceNotFound = _require6.throwIfModuleInterfaceNotFound,
184
- throwIfModuleInterfaceIsMisnamed = _require6.throwIfModuleInterfaceIsMisnamed,
185
- throwIfUnusedModuleInterfaceParserError =
186
- _require6.throwIfUnusedModuleInterfaceParserError,
187
- throwIfWrongNumberOfCallExpressionArgs =
188
- _require6.throwIfWrongNumberOfCallExpressionArgs,
189
- throwIfMoreThanOneModuleRegistryCalls =
190
- _require6.throwIfMoreThanOneModuleRegistryCalls,
191
- throwIfIncorrectModuleRegistryCallTypeParameterParserError =
192
- _require6.throwIfIncorrectModuleRegistryCallTypeParameterParserError,
193
- throwIfUntypedModule = _require6.throwIfUntypedModule,
194
- throwIfMoreThanOneModuleInterfaceParserError =
195
- _require6.throwIfMoreThanOneModuleInterfaceParserError;
196
- const language = 'Flow';
106
+ _require4.UnsupportedTypeAnnotationParserError,
107
+ UnsupportedGenericParserError = _require4.UnsupportedGenericParserError;
197
108
  function translateTypeAnnotation(
198
109
  hasteModuleName,
199
110
  /**
@@ -271,59 +182,26 @@ function translateTypeAnnotation(
271
182
  isParamNullable = _unwrapNullable2[1];
272
183
  return wrapNullable(nullable || isParamNullable, paramType);
273
184
  }
274
- case 'Stringish': {
275
- return emitStringish(nullable);
276
- }
277
- case 'Int32': {
278
- return emitInt32(nullable);
279
- }
280
- case 'Double': {
281
- return emitDouble(nullable);
282
- }
283
- case 'Float': {
284
- return emitFloat(nullable);
285
- }
286
- case 'UnsafeObject':
287
- case 'Object': {
288
- return emitGenericObject(nullable);
289
- }
290
- case '$Partial': {
291
- if (typeAnnotation.typeParameters.params.length !== 1) {
292
- throw new Error(
293
- 'Partials only support annotating exactly one parameter.',
294
- );
295
- }
296
- const annotatedElement =
297
- types[typeAnnotation.typeParameters.params[0].id.name];
298
- if (!annotatedElement) {
299
- throw new Error(
300
- 'Partials only support annotating a type parameter.',
301
- );
302
- }
303
- const properties = annotatedElement.right.properties.map(prop => {
304
- return {
305
- name: prop.key.name,
306
- optional: true,
307
- typeAnnotation: translateTypeAnnotation(
308
- hasteModuleName,
309
- prop.value,
310
- types,
311
- aliasMap,
312
- enumMap,
313
- tryParse,
314
- cxxOnly,
315
- parser,
316
- ),
317
- };
318
- });
319
- return emitObject(nullable, properties);
320
- }
321
185
  default: {
322
- throw new UnsupportedGenericParserError(
186
+ const commonType = emitCommonTypes(
323
187
  hasteModuleName,
188
+ types,
324
189
  typeAnnotation,
190
+ aliasMap,
191
+ enumMap,
192
+ tryParse,
193
+ cxxOnly,
194
+ nullable,
325
195
  parser,
326
196
  );
197
+ if (!commonType) {
198
+ throw new UnsupportedGenericParserError(
199
+ hasteModuleName,
200
+ typeAnnotation,
201
+ parser,
202
+ );
203
+ }
204
+ return commonType;
327
205
  }
328
206
  }
329
207
  }
@@ -430,7 +308,6 @@ function translateTypeAnnotation(
430
308
  typeResolutionStatus,
431
309
  nullable,
432
310
  hasteModuleName,
433
- language,
434
311
  enumMap,
435
312
  parser,
436
313
  );
@@ -439,164 +316,11 @@ function translateTypeAnnotation(
439
316
  throw new UnsupportedTypeAnnotationParserError(
440
317
  hasteModuleName,
441
318
  typeAnnotation,
442
- language,
319
+ parser.language(),
443
320
  );
444
321
  }
445
322
  }
446
323
  }
447
- function isModuleInterface(node) {
448
- return (
449
- node.type === 'InterfaceDeclaration' &&
450
- node.extends.length === 1 &&
451
- node.extends[0].type === 'InterfaceExtends' &&
452
- node.extends[0].id.name === 'TurboModule'
453
- );
454
- }
455
- function buildModuleSchema(
456
- hasteModuleName,
457
- /**
458
- * TODO(T71778680): Flow-type this node.
459
- */
460
- ast,
461
- tryParse,
462
- parser,
463
- ) {
464
- const types = getTypes(ast);
465
- const moduleSpecs = Object.values(types).filter(isModuleInterface);
466
- throwIfModuleInterfaceNotFound(
467
- moduleSpecs.length,
468
- hasteModuleName,
469
- ast,
470
- language,
471
- );
472
- throwIfMoreThanOneModuleInterfaceParserError(
473
- hasteModuleName,
474
- moduleSpecs,
475
- language,
476
- );
477
- const _moduleSpecs = _slicedToArray(moduleSpecs, 1),
478
- moduleSpec = _moduleSpecs[0];
479
- throwIfModuleInterfaceIsMisnamed(hasteModuleName, moduleSpec.id, language);
480
-
481
- // Parse Module Name
482
- const moduleName = (() => {
483
- const callExpressions = [];
484
- visit(ast, {
485
- CallExpression(node) {
486
- if (isModuleRegistryCall(node)) {
487
- callExpressions.push(node);
488
- }
489
- },
490
- });
491
- throwIfUnusedModuleInterfaceParserError(
492
- hasteModuleName,
493
- moduleSpec,
494
- callExpressions,
495
- );
496
- throwIfMoreThanOneModuleRegistryCalls(
497
- hasteModuleName,
498
- callExpressions,
499
- callExpressions.length,
500
- );
501
- const callExpression = callExpressions[0];
502
- const typeArguments = callExpression.typeArguments;
503
- const methodName = callExpression.callee.property.name;
504
- throwIfWrongNumberOfCallExpressionArgs(
505
- hasteModuleName,
506
- callExpression,
507
- methodName,
508
- callExpression.arguments.length,
509
- );
510
- if (callExpression.arguments[0].type !== 'Literal') {
511
- const type = callExpression.arguments[0].type;
512
- throw new IncorrectModuleRegistryCallArgumentTypeParserError(
513
- hasteModuleName,
514
- callExpression.arguments[0],
515
- methodName,
516
- type,
517
- );
518
- }
519
- const $moduleName = callExpression.arguments[0].value;
520
- throwIfUntypedModule(
521
- typeArguments,
522
- hasteModuleName,
523
- callExpression,
524
- methodName,
525
- $moduleName,
526
- );
527
- throwIfIncorrectModuleRegistryCallTypeParameterParserError(
528
- hasteModuleName,
529
- typeArguments,
530
- methodName,
531
- $moduleName,
532
- parser,
533
- );
534
- return $moduleName;
535
- })();
536
-
537
- // Some module names use platform suffix to indicate platform-exclusive modules.
538
- // Eventually this should be made explicit in the Flow type itself.
539
- // Also check the hasteModuleName for platform suffix.
540
- // Note: this shape is consistent with ComponentSchema.
541
- const _verifyPlatforms = verifyPlatforms(hasteModuleName, moduleName),
542
- cxxOnly = _verifyPlatforms.cxxOnly,
543
- excludedPlatforms = _verifyPlatforms.excludedPlatforms;
544
-
545
- // $FlowFixMe[missing-type-arg]
546
- return moduleSpec.body.properties
547
- .filter(property => property.type === 'ObjectTypeProperty')
548
- .map(property => {
549
- const aliasMap = {};
550
- const enumMap = {};
551
- return tryParse(() => ({
552
- aliasMap: aliasMap,
553
- enumMap: enumMap,
554
- propertyShape: buildPropertySchema(
555
- hasteModuleName,
556
- property,
557
- types,
558
- aliasMap,
559
- enumMap,
560
- tryParse,
561
- cxxOnly,
562
- resolveTypeAnnotation,
563
- translateTypeAnnotation,
564
- parser,
565
- ),
566
- }));
567
- })
568
- .filter(Boolean)
569
- .reduce(
570
- (moduleSchema, {aliasMap, enumMap, propertyShape}) => ({
571
- type: 'NativeModule',
572
- aliasMap: _objectSpread(
573
- _objectSpread({}, moduleSchema.aliasMap),
574
- aliasMap,
575
- ),
576
- enumMap: _objectSpread(
577
- _objectSpread({}, moduleSchema.enumMap),
578
- enumMap,
579
- ),
580
- spec: {
581
- properties: [...moduleSchema.spec.properties, propertyShape],
582
- },
583
- moduleName: moduleSchema.moduleName,
584
- excludedPlatforms: moduleSchema.excludedPlatforms,
585
- }),
586
- {
587
- type: 'NativeModule',
588
- aliasMap: {},
589
- enumMap: {},
590
- spec: {
591
- properties: [],
592
- },
593
- moduleName,
594
- excludedPlatforms:
595
- excludedPlatforms.length !== 0 ? [...excludedPlatforms] : undefined,
596
- },
597
- );
598
- }
599
324
  module.exports = {
600
- buildModuleSchema,
601
325
  flowTranslateTypeAnnotation: translateTypeAnnotation,
602
326
  };